EDA 4-7线译码器 8-3线编码器 电子时钟
武汉理工大学华夏学院EDA复习题答案

1、IEEE标准的硬件描述语言是Verilog HDL和VHDL共同点是:能够形式化地抽象表示电路的行为和结构;支持逻辑设计中层次与范围的描述:可借用高级语言的精巧结构来简化电路行为的描述:具有电路仿真与验证机制以保证设计的正确性;支持电路描述由高层到低层的综合转换;硬件描述与实现工艺无关;便于文档管理;易于理解和设计重用。
不同点:Verilog HDL是一种非常容易掌握的硬件描述语言,而VHDL掌握起来就比较困难。
2、把功能经过验证的、可综合的、实现后电路结构总门数在5000门以上的Verilog HDL模型称之为“软核”。
把在某一种现场可编程门阵列(FPGA)器件上实现的、经验证是正确的、总门数在5000门以上电路结构编码文件称为“固核”。
把在某一种专用集成电路工艺的(ASIC)器件上实现的、经验证是正确的、总门数在5000门以上电路结构版图掩膜称为“硬核”。
3、什么叫综合?通过综合产生的是什么?通过综合工具把行为级描述的模块通过逻辑网表自动转化为门级形式的模块叫综合。
综合由EDA工具来完成。
产生的是由与门,或门和非门组成的加法器,比较器等组合逻辑。
产生的模块很容易与某种工艺的基本元件逐一对应起来,再通过布局布线工具自动地转变为某种工具工艺的电路布线结构。
4、仿真可以在几层面上进行?每个层面的仿真有什么意义?分别为:前仿真,逻辑网表仿真,门级仿真和布线后仿真。
前仿真,逻辑网表仿真,门级仿真:可以调试和验证逻辑系统的设计和结构准确与否,并发现问题及时修改。
布线后仿真:分析设计的电路模块的运行是否正常。
5、模块由描述接口和描述逻辑功能两部分组成。
6、端口分为三种:输入口、输出口、输入/输出口。
7、reg型和wire型变量的差别是什么?reg型变量是寄存器型变量,wire型变量是连线型变量。
两者根本性的差别在于reg型变过量有个寄存器来存放变量,这个值只有变量发生改变时才会改变否则保证原来的值不变,wire型变量的值不是确定的值。
EDA设计 数字钟

摘要利用MAX+PLUSⅡ软件,设计一个能进行时、分、秒计时的24制多功能数字钟,使其具有定时与闹钟功能,且能在设定的时间发出闹铃音,能非常方便地对时、分、秒进行手动调节以校准时间,每逢整点,产生报时音效,并在实验板上成功下载,验证后满足要求。
关键词:EDA ; MAX+PLUS2 ;数字钟;0 引言随着科学技术的发展,现代电子设计技术已进入一个全新的阶段,传统的电子设计方法、工具和器件在更大的程度上被EDA所取代。
在EDA技术中,最为瞩目的是以现代电子技术为特征的逻辑设计仿真测试技术,该技术的出现,使电子系统设计发生了质的变化,设计速度快、体积小、重量轻、功耗小的集成电路已成为趋势。
本文利用EDA 技术,选用ALTERA公司的CPLD器件EPF10K10LC84-4和软件MAX+PLUS2,设计了一个多功能数字钟,提高了系统的整体性能和可靠性,并通过编译、仿真、下载,经验证后已满足要求。
1 多功能数字钟设计任务1.1 数字钟设计要求(1)、设计一个能显示1/10秒、秒、分、时的12小时数字钟。
(2)、熟练掌握各种计数器的使用。
(3)、能用计数器构成十进制、六十进制、十二进制等所需进制的计数器。
(4)、能用低位的进位输出构成高位的计数脉冲。
1.2 设计思路此设计可分为主控电路、计数器模块和扫描显示三大模块。
1.2.1 主控电路模块主控电路状态用表格显示,如下表所列:模式选择秒、时、分、计数器脉冲输出状态备注Reset Reset1 A B Turn LD-h LD-m LD-alert0 X X X X X 0 0 0 系统复位1 X 0 0 X CLK 0 0 0 系统计时1 X 0 1 0 Change=分计数器加1 0 1 0手动1 X 0 1 1 Change=时计数器加1 1 0 0校时1 1 1 0 0 Change=分计数器加1 0 1 1 设置闹钟1 1 1 0 1 Change=时计数器加11 0 11 0 X X X X 0 0 0 关闭闹钟1.2.2 计数器模块计数器模块中,分钟和秒用带进位位的60进制功能模块,小时用不带进位位的24进制功能模块(如果考虑到日期的问题,在24进制模块加进位输出即可实现)。
Verilog HDL 之 8-3编码器

Verilog HDL 之8-3编码器原理:在数字系统中,常常需要将某一信息(输入)变换为某一特定的代码(输出)。
把二进制码按一定的规律排列,例如8421码、格雷码等,使每组代码具有一特定的含义(代表某个数字或是控制信号)称为编码。
具有编码功能的逻辑电路称为编码器。
编码器有若干个输入,在某一时刻只有一个输入被转换为二进制码。
例如8线-3线编码器和10线-4线编码器分别有8输入、3位输出和10位输入、4位输出。
下面是8-3编码器的真值表。
实验环境:硬件:AR2000核心板、SOPC-MBoard板、PC 机、ByteBlaster II 下载电缆软件:ModelSim 、Altera Quartus II 7.2 集成开发环境。
实验步骤:1.打开Quartus II 7.2软件,选择File | New Project Wizard新建一个工程,在对话框中第一行选择工程路径,并为该工程新建一个文件夹。
本例中第二行输入工程名bm8_3;第三行是工程顶层设计文件名,该顶层设计文件名一定要与设计文件中模块名module一致,可以与工程名不同,但一般都和工程名一致。
如图1.1所示。
图1.1 在Quartus II中新建工程2.单击“Next”,此对话框是向工程中添加设计文件的。
现在还没有写设计文件,所以没有文件可以添加;直接单击“Next”,进入器件选择对话框。
在Family下拉菜单中选择Cyclone II 系列。
然后在Filters下的Package下拉菜单中选择封装形式FBGA,Pin count下拉菜单中选择管脚数672,Speed grade下拉菜单中选择速度级别8;然后在Available devices中选择EP2C35F672C8器件。
如图1.2所示。
图1.2 选择FPGA器件3.单击Finish,建立好工程。
向工程中添加设计文件,选择File | New ,在New对话框中选择Device Design Files下的Verilog HDL File,单击OK,完成新建设计文件。
eda程序设计

process(clk)
begin
if clk'event and clk='1' then
q1<=q1+1;
end if;
q<=q1;
end process;
end behave;
11、4为二进制数比较器
library ieee;
use ieee.std_logic_1164.all;
elsif a(2)='1' then y<="010";
elsif a(1)='1' then y<="001";
elsif a(0)='1' then y<="000";
end if;
end process;
end behave;
3、多路分配器
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
architecture behave of bijiaoqi is
begin
output<=(a>=b);
end behave;
12、整数加法运算
library ieee;
use ieee.std_logic_1164.all;
entity zhengshujiafa is
ENTITY dmux1to8 IS
PORT(data:IN STD_LOGIC;
enable: IN STD_LOGIC;
s: IN STD_LOGIC_VECTOR(2 DOWNTO 0);
EDA考试

2输入或非门的VHDL程序文件名:gate_nor.vhdLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY gate_nor ISPORT (A,B:IN STD_LOGIC;Y:OUT STD_LOGIC);END gate_nor;ARCHITECTURE a OF gate_nor ISBEGINY<=A NOR B; --或非门输出,或者可写成Y<=NOT(A OR B);END a;1、3/8译码器VHDL设计1)、设计实现及VHDL程序对于3/8译码器可以用并行语句中的选择信号赋值语句(WITH_SELECT语句)、条件信号赋值语句(WHEN_ELSE语句)来描述,也可以用顺序语句中的IF语句或者CASE语句来描述。
下面给出的例程是采用选择信号赋值语句来描述3/8译码器。
文件名:decoder.vhdLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY decoder ISPORT(A:in STD_LOGIC_VECTOR(2 DOWNTO 0);Y:OUT STD_LOGIC_VECTOR (7 DOWNTO 0));END decoder;ARCHITECTURE rtl OF decoder ISBEGINWITH A SELECTY<="11111110" WHEN "000","11111101" WHEN "001","11111011" WHEN "010","11110111" WHEN "011","11101111" WHEN "100","11011111" WHEN "101","10111111" WHEN "110","01111111" WHEN "111","11111111" WHEN OTHERS;END rtl;2、4位BCD-七段显示码译码器VHDL设计4位BCD-七段显示译码器可将BCD-七段显示码转换成数字显示码,用于驱动LED数码管,可分为共阴与共阳两种,下面以设计共阴4位BCD-七段显示译码器为例来说明其设计方法。
eda实验

实验三利用gal16v8实现4线-7段译码器的功能一、实验目的1.了解GAL16V8的结构及其应用;2.掌握GAL器件的设计原则和一般格式;3.掌握通用逻辑GAL的编程、下载、验证功能的全部过程。
二、实验内容用GAL16V8芯片实现4线-7段译码器的功能。
GAL16V8的管脚如图1所示:其中管脚10和20分别接到电源的负极和正极;图1GAL16V8的管脚本实验要驱动的数码管是共阳极数码管,则4线-7段译码器的真值表如图2所示:图24线-7段译码器的真值表根据真值表编写逻辑表达式:/Y7=/A3*/A2*/A1*/A0+/A3*/A2*/A1*A0+/A3*A2*A1*A0/Y6=/A3*/A2*/A1*A0+/A3*/A2*A1*/A0+/A3*/A2*A1*A0+/A3*A2*A1*A0/Y5=A3*A2*/A1*/A0+/A3*/A2*/A1*A0+/A3*A2*A1*A0+/A3*/A2*A1*A0+/A3*A2*/A1*A0 +A3*/A2*/A1*A0/Y4=/A3*A2*/A1*/A0+/A3*/A2*/A1*A0+/A3*A2*A1*A0/Y3=/A3*/A2*A1*/A0/Y2=/A3*A2*/A1*A0+/A3*A2*A1*/A0/Y1=/A3*A2*/A1*/A0+/A3*/A2*/A1*A0其中Y1-Y7是输出,分别对应真值表中a,b,c,e,f,g,A0-A3是输入,分别对应真值表中的A,B,C,D;三、实验步骤1)编写PLD格式的程序源文件利用记事本编辑源文件如图3所示,格式保存为“PLD”。
图3PLD格式的源文件2)用FM软件对源文件进行编译生成JED格式的目标文件打开FM软件,屏幕上出现键入输入文件名的提示如图4所示。
键入已准备好的PLD后缀的源文件的文件名,并按回车键,屏幕上出现5项选项,并提示键入相应的选择项(数字键1~5)如图5所示。
图4输入文件名提示图5选项界面其中:第1项,建立列表文件操作,将产生后缀为LST的列表文件。
《EDA技术实用教程》习题解答

习题 5-6 根据图 5-23,写出顶层文件 MX3256.VHD 的 VHDL 设计文件。
第 1 章 概述
9
图 5-21 习题 5-4 图
解: VHDL 设计文件内容如下:
library ieee; use ieee.std_logic_1164.all;
entity exen is
port ( cl
: in std_logic;
clk0 : in std_logic;
out1 );
: out std_logic
out1 <= not tmp; end hdlarch; ⊕习题 5-5 给出 1 位全减器的 VHDL 描述。要求: (1) 首先设计 1 位半减器,然后用例化语句将它们连接起来,图 5-22 中 h_suber 是半减器,diffr 是输出差, s_out 是借位输出,sub_in 是借位输入。
解:
图 5-19 4 选 1 多路选择器
图 5-20 双 2 选 1 多路选择器
architecture hdlarch of MUXK is
signal tmp : std_logic;
begin
process(s0,a2,a3) begin
if s0 = '0' then
tmp <= a2;
else
解:用同步计数器来实现。(事实上要求设计的是一个袼雷码计数器)
考虑不同状态时,对应的 DFF 输入端的值:
eda

实验项目一一、实验目的1、通过3-8译码器的设计,让学生掌握组合逻辑电路的设计方法。
2、掌握组合逻辑电路的静态测试方法。
3、初步了解可编程器件设计的全过程。
二、实验内容使用MAXPLUSII软件,设计一个3-8译码器,得出正确的仿真验证结果。
三、实验原理、方法和手段3-8译码器三输入,八输出。
当输入信号按二进制方式的表示值为N时,输出端标号为N的输出端输出高电平表示有信号产生,而其它则为低电平表示无信号产生。
因为三个输入端能产生的组合状态有八种,所以输出端在每种组合中仅有一位为高电平情况下,能表示所有的输入组合。
3-8译码器采用原理图输入的方式将三个输入端与其的非以八种与的方式进行连接进而得出输出。
四、设计输入五、仿真输出六、实验总结(被加数)Ai(被加数)Bi(半加和)Hi(本位进位)Ci实验二 半加器设计实验类型:综合 一、实验目的设计并实现一个一位半加器。
二、实验内容使用MAXPLUSII 软件,设计一个一位半加器,得出正确的仿真验证结果。
三、实验原理、方法和手段半加器电路是指对两个输入数据位相加,输出一个结果位和进位,没有进位输入的加法器电路,是实现两个一位二进制数的加法运算电路。
计算机中数的操作都是以二进制进位的,最基本的运算就是加法运算。
按照进位是否加入,加法器分为半加器和全加器电路两种。
计算机中的异或指令的功能就是求两个操作数的和。
一位半加器有两个输入、输出。
一位半加器示意图Bi Ai Bi Ai Hi ∙+∙= Bi Ai Ci ∙=采用原理图输入的方式将两个输入端同或输出是,与输出co四、设计输入五、仿真输出六、实验总结实验项目 五一、实验目的设计并实现一个带进位的通用加法器设计。
二、实验内容使用MAXPLUSII 软件设计一个带进位的通用加法器,得出正确的仿真验证结果。
三、实验原理、方法和手段加法器,是产生数的和的装置。
常用作计算机算术逻辑部件,执行逻辑操作、移位与指令调用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY decoder47 ISPORT(DCBA:IN STD_LOGIC_VECTOR(3 DOWNTO 0);gfedcba:OUT STD_LOGIC_VECTOR(6 DOWNTO 0) );END ENTITY decoder47;ARCHITECTURE one OF decoder47 ISBEGINPROCESS(DCBA)BEGINCASE DCBA ISWHEN "0000"=> gfedcba<="0111111";WHEN "0001"=> gfedcba<="0000111";WHEN "0010"=> gfedcba<="1011011";WHEN "0011"=> gfedcba<="1001111";WHEN "0100"=> gfedcba<="1100110";WHEN "0101"=> gfedcba<="1101101";WHEN "0110"=> gfedcba<="1111100";WHEN "0111"=> gfedcba<="0000111";WHEN "1000"=> gfedcba<="1111111";WHEN "1001"=> gfedcba<="1100111";WHEN OTHERS=> NULL;END CASE;END PROCESS;END ARCHITECTURE one;仿真波形:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY encoder83 ISPORT(Y:IN STD_LOGIC_VECTOR(7 DOWNTO 0);A:OUT STD_LOGIC_VECTOR(2 DOWNTO 0) );END ENTITY encoder83;ARCHITECTURE one OF encoder83 ISBEGINPROCESS(Y)BEGINCASE Y ISWHEN "00000001"=> A<="000";WHEN "00000010"=> A<="001";WHEN "00000100"=> A<="010";WHEN "00001000"=> A<="011";WHEN "00010000"=> A<="100";WHEN "00100000"=> A<="101";WHEN "01000000"=> A<="110";WHEN "10000000"=> A<="111";WHEN OTHERS=> NULL;END CASE;END PROCESS;END ARCHITECTURE one;仿真波形:电子钟:层次化设计的最后顶层文件:仿真波形:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY count10000 ISPORT(clk1,clks,clr:IN STD_LOGIC;seg:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);sel:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END ENTITY count10000;ARCHITECTURE one OF count10000 ISSIGNAL in47:integer range 0 to 9;SIGNAL q0_tmp,q1_tmp,q2_tmp,q3_tmp:integer range 0 to 9;BEGINPROCESS(clk1,clr)BEGINIF clr='0' THENq0_tmp<=0;q1_tmp<=0;q2_tmp<=0;q3_tmp<=0;ELSIF(clk1'EVENT AND clk1='1') THENq0_tmp<=q0_tmp+1;IF q0_tmp=9 THENq0_tmp<=0;q1_tmp<=q1_tmp+1;IF q1_tmp=9 THENq1_tmp<=0;q2_tmp<=q2_tmp+1;IF q2_tmp=9 THENq2_tmp<=0;q3_tmp<=q3_tmp+1;IF q3_tmp=9 THENq3_tmp<=0;END IF;END IF;END IF;END IF;END IF;END PROCESS;PROCESS(clks)V ARIABLE q:integer range 0 to 3;BEGINIF clks'event and clks='1' thenq:=q+1;END IF;CASE q ISWHEN 0 => in47<=q0_tmp;sel<="0001";WHEN 1 => in47<=q1_tmp;sel<="0010";WHEN 2 => in47<=q2_tmp;sel<="0100";WHEN OTHERS => in47<=q3_tmp;sel<="1000";END CASE;END PROCESS;PROCESS(in47)BEGINCASE in47 ISWHEN 0=> seg<="1000000";WHEN 1=> seg<="1111001";WHEN 2=> seg<="0100100";WHEN 3=> seg<="0110000";WHEN 4=> seg<="0011001";WHEN 5=> seg<="0010010";WHEN 6=> seg<="0000010";WHEN 7=> seg<="1111000";WHEN 8=> seg<="0000000";WHEN 9=> seg<="0010000";WHEN OTHERS=> NULL;END CASE;END PROCESS;END ARCHITECTURE one;模为10000的计数器:仿真波形:MEALY型状态机:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY mealy ISPORT(cp:IN STD_LOGIC;din: IN STD_LOGIC;op:OUT STD_LOGIC);END ENTITY mealy;ARCHITECTURE one OF mealy ISTYPE state IS(S0,S1,S2,S3);SIGNAL presentstate:state;SIGNAL nextstate:state;BEGINswitchtonextstate:PROCESS(cp)BEGINIF cp'EVENT AND cp='1' THENpresentstate<=nextstate;END IF;END PROCESS switchtonextstate;changestatemode:PROCESS(din,presentstate)BEGINCASE presentstate ISWHEN s0 => IF (din='0') THEN nextstate<=s0; op<='0';ELSE nextstate<=s1; op<='1';END IF;WHEN s1 => IF (din='1') THEN nextstate<=s1; op<='0';ELSE nextstate<=s2; op<='1';END IF;WHEN s2 => IF (din='1') THEN nextstate<=s2; op<='0';ELSE nextstate<=s3; op<='1';END IF ;WHEN s3 => IF(din='1') THEN nextstate<=s0; op<='1';ELSE nextstate<=s1; op<='0';END IF;WHEN OTHERS => nextstate<=s0; op<='0';END CASE;END PROCESS changestatemode;END one;状态图:仿真结果:MORE型状态机:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY more ISPORT(cp:IN STD_LOGIC;din: IN STD_LOGIC;op:OUT STD_LOGIC);END ENTITY more;ARCHITECTURE one OF more ISTYPE state IS(S0,S1,S2,S3);SIGNAL presentstate:state;SIGNAL nextstate:state;BEGINswitchtonextstate:PROCESS(cp)BEGINIF cp'EVENT AND cp='1' THENpresentstate<=nextstate;END IF;END PROCESS switchtonextstate; changestatemode:PROCESS(din,presentstate)BEGINCASE presentstate ISWHEN s0 => IF (din='0') THEN nextstate<=s0;ELSE nextstate<=s1;END IF;op<='0';WHEN s1 => IF (din='1') THEN nextstate<=s1;ELSE nextstate<=s2;END IF;op<='1';WHEN s2 => IF (din='1') THEN nextstate<=s2;ELSE nextstate<=s3;END IF ;op<='0';WHEN s3 => IF(din='1') THEN nextstate<=s0;ELSE nextstate<=s1;END IF;op<='1';WHEN OTHERS => nextstate<=s0; op<='0';END CASE;END PROCESS changestatemode;仿真结果:。