资源描述
江苏科技大学电子信息学院 电子设计自动化实验指导书目 录实验一:VHDL组合逻辑电路设计3实验二:VHDL时序逻辑电路设计10实验三:VHDL下状态机电路设计12实验四:简易数字频率计设计14实验五:交通灯信号控制器设计17实验六:电子密码锁19实验一:VHDL组合逻辑电路设计一、实验目的1、熟悉QuartusII软件的使用,熟练进行程序输入、综合、仿真。2、熟悉实验箱硬件资源的使用,熟练进行引脚锁定和硬件测试,掌握EDA技术设计流程,掌握数字逻辑电路设计的方法;3、学习简单数字逻辑电路的设计、仿真和硬件测试。二、实验内容1、设计四选一多路选择器,利用QuartusII软件完成程序输入、综合和仿真验证,给出仿真波形并进行结果分析。2、利用GW48 EDA实验系统完成硬件测试,验证本项目设计的功能,记录引脚设置和测试结果。三、实验原理、方法和手段多路选择器可以从多组数据源中选取一组送入目的地,应用相当广泛,从组合逻辑的执行到数据路径的选择,经常可以看到它的踪影。多路选择器的结构是个输入数据对应N个数据输出选择控制线和一个输出线。在VHDL中描述一个多路选择器的方法有多种,例如:在一个进程中使用if-then-else语句;在一个进程中使用case语句;使用选择信号带入语句或条件信号代入语句(when-else语句)。推荐使用when-else语句,如:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY MUX41 IS PORT (DATA0, DATA1, DATA2, DATA3: IN STD-LOGIC_VECTOR (3 DOWNTO 0); A, B: IN STD_LOGIC; Y: OUT STD-LOGIC_VECTOR (3 DOWNTO 0)END ENTITY MUX41 ARCHITECTURE ART OF MUX41 ISSIGNAL SEL: STD_LOGIC_VECTOR (1 DOWNTO 0);BEGIN SEL=B&A;Y0) ; -计数 器异步复位 ELSIF CLKEVENT AND CLK=1 THEN -检测时钟上升沿IF EN = 1 THEN -检测是否允许计数(同步使能) IF CQI 0); -大于9, 计数值清零 END IF; END IF; END IF; IF CQI = 9 THEN COUT = 1; -计数大于9,输出进位信号 ELSE COUT = 0; END IF; CQ = CQI; -将计数值向端口输出 END PROCESS;END behav; 两位十进制计数器可由2个十进制计数器级联构成,个位计数器的进位输出信号作为十位计数器的时钟驱动信号即可。数字时钟实际上是对一个标准1Hz秒脉冲信号进行计数的计数器,秒计数器满60后向分计数器进位,分计数器满60后向时计数器进位,时计数器按24进制计数器规律计数,各计数器的数值经译码器送LED显示。提示:分别设计带清零和时钟控制的2个模60计数器和1个模24计数器,按照串行进位的关系连接即可实现一个简易的数字时钟;五、实验条件1、提供一台具有WINDOWS 2000/XP操作系统的计算机;2、提供QuartusII软件开发环境。六、实验步骤 操作步骤参见实验一,这里不在详述。七、思考题 60/24进制的2位数十进制计数器除了用2个一位数十进制计数器串接实现之外,怎样用其他方法实现?八、实验报告撰写要求1、撰写实验预习报告,包含实验目的、实验内容,并根据实验内容撰写相关的实验原理和实验程序;完成思考题。以备实验前检查。2、记录仿真波形,完成仿真结果的详细分析。3、整理硬件测试记录,验证本项目的功能。4、撰写实验心得,简述在实验过程中出现的问题,是何原因以及如何解决的。实验三:VHDL下状态机电路设计一、实验目的1、进一步熟悉序列检测器的原理;2、学习用状态机实现序列检测器的设计,掌握一般状态机的设计与应用;3、进一步熟悉QuartusII的使用,掌握多层次电路的设计、仿真和硬件测试。二、实验内容 1、设计一个序列检测器,检测“11100101”序列,给出设计方案(包括状态图)和源程序,完成软件仿真和硬件测试。2、 利用实验系统中ADC0809芯片,用状态机方式实现数据采集。LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SCHK IS PORT(DIN,CLK,CLR : IN STD_LOGIC; -串行输入数据位/工作时钟/复位信号 AB : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); -检测结果输出END SCHK;ARCHITECTURE behav OF SCHK IS SIGNAL Q : INTEGER RANGE 0 TO 8 ; SIGNAL D : STD_LOGIC_VECTOR(7 DOWNTO 0); -8位待检测预置数(密码=E5H)BEGIN D = 11100101 ; -8位待检测预置数 PROCESS( CLK, CLR ) BEGIN IF CLR = 1 THEN Q IF DIN = D(7) THEN Q = 1 ; ELSE Q IF DIN = D(6) THEN Q = 2 ; ELSE Q IF DIN = D(5) THEN Q = 3 ; ELSE Q IF DIN = D(4) THEN Q = 4 ; ELSE Q IF DIN = D(3) THEN Q = 5 ; ELSE Q IF DIN = D(2) THEN Q = 6 ; ELSE Q IF DIN = D(1) THEN Q = 7 ; ELSE Q IF DIN = D(0) THEN Q = 8 ; ELSE Q Q = 0 ; END CASE ; END IF ; END PROCESS ; PROCESS( Q ) -检测结果判断输出 BEGIN IF Q = 8 THEN AB = 1010 ; -序列数检测正确,输出 “A” ELSE AB MR=0;MY=0; MG=1;BR=1;BY=0;BG=0;IF(SB AND SM)=1THENIF S=45 THEN STATE=B;CLR:=0;EN:=0;ELSE STATE=A;CLR:=1;EN:=1;END IF;ELSIF(SB AND (NOT SM)=1THEN STATE=B;CLR:=0;EN:=0;ELSE STATEMR=0;MY=1;MG=0;BR=1;BY=0;BG=0;IF S=5 THEN STATE=C;CLR:=0;EN:=0;ELSE STATEMR=1;MY=0;MG=0; BR=0;BY=0;BG=1;IF(SM AND SB)=1THENIF S=25 THEN STATE=D;CLR:=0;EN:=0;ELSE STATE=C;CLR:=1;EN:=1;END IF;ELSIF SB=0THEN STATE=D;CLR:=0;EN:=0;ELSE STATEMR=1;MY=0; MG=0;BR=0;BY=1;BG=0;IF S=5 THEN STATE=A;CLR:=0;EN:=0;ELSE STATE=D;CLR:=1;EN:=1;END IF;END CASE;END IF;END PROCESS CNT;END ARCHITECTURE ART;5s计时器程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT05S ISPORT(CLK, EN05M, EN05B: IN STD_LOGIC; DOUT5: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END ENTITY CNT05S;ARCHITECTURE ART OF CNT05S ISSIGNAL CNT3B: STD_LOGIC_VECTOR(2 DOWNTO 0);BEGINPROCESS(CLK,EN05M,EN05B) ISBEGINIF(CLKEVENT AND CLK=1)THENIF EN05M=1 OR EN05B=1 THENCNT3B=CNT3B+1;ELSECNT3BDOUT5DOUT5DOUT5DOUT5DOUT5DOUT5=00000000;END CASE;END PROCESS;END ARCHITECTURE ART;45s计时器程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT45S ISPORT(SB,CLK,EN45:IN STD_LOGIC; DOUT45M,DOUT45B: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END ENTITY CNT45S;ARCHITECTURE ART OF CNT45S ISSIGNAL CNT6B: STD_LOGIC_VECTOR(5 DOWNTO 0);BEGINPROCESS(SB, CLK, EN45)ISBEGINIF SB=0 THEN CNT6B=CNT6B-CNT6B-1;ELSIF(CLKEVENT AND CLK=1)THENIF EN45=1THEN CNT6B=CNT6B+1;ELSIF EN45=0THEN CNT6BDOUT45M=01000101;DOUT45BDOUT45M=01000100;DOUT45BDOUT45M=01000011;DOUT45BDOUT45M=01000010;DOUT45BDOUT45M=01000001;DOUT45BDOUT45M=01000000;DOUT45BDOUT45M=00111001;DOUT45BDOUT45M=00111000;DOUT45BDOUT45M=00110111;DOUT45BDOUT45M=00110110;DOUT45BDOUT45M=00110101;DOUT45BDOUT45M=00110100;DOUT45BDOUT45M=00110011;DOUT45BDOUT45M=00110010;DOUT45BDOUT45M=00110001;DOUT45BDOUT45M=00110000;DOUT45BDOUT45M=00101001;DOUT45BDOUT45M=00101000;DOUT45BDOUT45M=00100111;DOUT45BDOUT45M=00100110;DOUT45BDOUT45M=00100101;DOUT45BDOUT45M=00100100;DOUT45BDOUT45M=00100011;DOUT45BDOUT45M=00100010;DOUT45BDOUT45M=00100001;DOUT45BDOUT45M=00100000;DOUT45BDOUT45M=00011001;DOUT45BDOUT45M=00011000;DOUT45BDOUT45M=00010111;DOUT45BDOUT45M=00010110;DOUT45BDOUT45M=00010101;DOUT45BDOUT45M=00010100;DOUT45BDOUT45M=00010011;DOUT45BDOUT45M=00010010;DOUT45BDOUT45M=00010001;DOUT45BDOUT45M=00010000;DOUT45BDOUT45M=00001001;DOUT45BDOUT45M=00001000;DOUT45BDOUT45M=00000111;DOUT45BDOUT45M=00000110;DOUT45BDOUT45M=00000101;DOUT45BDOUT45M=00000100;DOUT45BDOUT45M=00000011;DOUT45BDOUT45M=00000010;DOUT45BDOUT45M=00000001;DOUT45BDOUT45M=00000000;DOUT45B=00000000;END CASE;END PROCESS;END ARCHITECTURE ART;60s计时器程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT25S ISPORT(SB,SM,CLK,EN25: IN STD_LOGIC; DOUT25M,DOUT25B: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END ENTITY CNT25S;ARCHITECTURE ART OF CNT25S ISSIGNAL CNT5B: STD_LOGIC_VECTOR(4 DOWNTO 0);BEGINPROCESS(SB,SM,CLK,EN25) ISBEGINIF SB=0 OR SM=0 THENCNT5B=CNT5B-CNT5B-1;ELSIF(CLKEVENT AND CLK=1)THENIF EN25=1THENCNT5B=CNT5B+1;ELSIF EN25=0THENCNT5BDOUT25B=00100101;DOUT25MDOUT25B=00100100;DOUT25MDOUT25B=00100011;DOUT25MDOUT25B=00100010;DOUT25MDOUT25B=00100001;DOUT25MDOUT25B=00100000;DOUT25MDOUT25B=00011001;DOUT25MDOUT25B=00011000;DOUT25MDOUT25B=00010111;DOUT25MDOUT25B=00010110;DOUT25MDOUT25B=00010101;DOUT25MDOUT25B=00010100;DOUT25MDOUT25B=00010011;DOUT25MDOUT25B=00010010;DOUT25MDOUT25B=00010001;DOUT25MDOUT25B=00010000;DOUT25MDOUT25B=00001001;DOUT25MDOUT25B=00001000;DOUT25MDOUT25B=00000111;DOUT25MDOUT25B=00000110;DOUT25MDOUT25B=00000101;DOUT25MDOUT25B=00000100;DOUT25MDOUT25B=00000011;DOUT25MDOUT25B=00000010;DOUT25MDOUT25B=00000001;DOUT25MDOUT25B=00000000;DOUT25M=00000000;END CASE;END PROCESS;END ARCHITECTURE ART;显示控制LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_1164.ALL;ENTITY XSKZ ISPORT(EN45,EN25,EN05M,EN05B: IN STD_LOGIC; AIN45M,AIN45B:IN STD_LOGIC_VECTOR(7 DOWNTO 0); AIN25M,AIN25B,AIN05: IN STD_LOGIC_VECTOR(7 DOWNTO 0); DOUTM,DOUTB: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END ENTITY XSKZ;ARCHITECTURE ART OF XSKZ ISBEGINPROCESS(EN45,EN25,EN05M,EN05B,AIN45M,AIN45B,AIN25M,AIN25B,AIN05)ISBEGINIF EN45=1THENDOUTM=AIN45M(7 DOWNTO 0);DOUTB=AIN45B(7 DOWNTO 0);ELSIF EN05M=1THENDOUTM=AIN05(7 DOWNTO 0);DOUTB=AIN05(7 DOWNTO 0);ELSIF EN25=1THENDOUTM=AIN25M(7 DOWNTO 0);DOUTB=AIN25B(7 DOWNTO 0);ELSIF EN05B=1THENDOUTM=AIN05(7 DOWNTO 0);DOUTB=AIN05(7 DOWNTO 0);END IF;END PROCESS;END ARCHITECTURE ART;实验一,这里不在详述。七、思考题 采用状态码直接输出型状态机,应该怎样实现?写出实现方案。八、实验报告1、撰写实验预习报告,包含实验目的、实验内容,并根据实验内容撰写相关的实验原理和实验程序;完成思考题。以备实验前检查。2、记录仿真波形,完成仿真结果的详细分析。3、整理硬件测试记录,验证本项目的功能。实验四:简易数字频率计设计一、实验目的1、熟悉简易频率计的工作原理;2、学习频率计的分析、设计方法,学习较复杂系统的EDA设计方法;3、进一步掌握多层次电路的设计、仿真和硬件测试。二、实验内容1、设计一个2位频率计,对待测信号的频率(099Hz)进行测量、显示,给出设计方案,并进行仿真和硬件测试,验证设计方案的功能。LIBRARY ieee;USE ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;ENTITY mult2 IS PORT(clk : in std_logic; ma : In std_logic_vector(11 downto 0); mc : out std_logic_vector(23 downto 0);END mult2;ARCHITECTURE rtl OF mult2 IS signal ta : std_logic_vector(11 downto 0); constant tb : std_logic_vector(11 downto 0) := 100110111001;BEGINprocess(clk) begin if(clkevent and clk = 1) then ta=ma; mc=ta * tb; end if;end process;END rtl; 三、实验原理、方法和手段频率计是能够测量和显示信号频率的电路。常用的直接测频法有两种,一种是测周期法,一种是测频率法。测周期法是在待测信号一个周期内,记录基准系统时钟频率的周期数。测频率法是在一定时间间隔内测量待测信号的周期数。一般对于低频信号采用测周期法,对于高频信号采用测频率法。本实验采用测频率法来设计2位频率计,在指定的1s时间间隔内(下图中CNT_EN1持续时间为1s),用2位十进制计数器对待测信号进行计数,测得的周期数为N,则待测信号的频率就为N/1s即N Hz,再通过显示电路显示出数值N。所以方案中需要设计带时钟使能的2位十进制计数器、七段显示译码器。此外还需要一个时序控制电路,产生复位计数锁存周期循环的工作时序(如下图)。 频率计的设计原理图可参看下图,主要有时序控制电路、计数主电路、锁存电路和译码显示电路。五、实验条件1、提供一台具有WINDOWS 2000/XP操作系统的计算机;2、提供QuartusII软件开发环境。六、实验步骤 在QuartusII软件开发环境中使用原理图输入法,除了最初的编辑输入与VHDL文本法不同外,其他步骤都一样。1、建立工程文件夹,如F:adder2、编辑原理图输入1)选择File | New,在对话框中选择Device Design Files页中的 Block Diagram/Schematic File,OK即可。2)在编辑窗口任意位置右击鼠标,在出现的快捷菜单中选择Insert| Symbol。3)单击按钮“.”,找到基本元件库d:altera72quartuslibraries primitiveslogic项,选中需要的元件,此元件将显示在窗口中,单击OK按钮就可将元件调入原理图编辑器中。分别调入所有元件,连线,完成原理图设计。4) 保存,File| Save As,选择前面的文件夹F:adder,保存为*.bdf。3、设置成可调用元件为了顶层设计,可以将当前设计变成一个元件符号,选择菜单File| Create/Update| Create Symbol Files for Current File项即可。4、设计顶层文件重新打开原理图编辑器,在路径F:adder中可以找到刚才所定义的元件,调入,再分别调入其他元件,连线,构造顶层设计。5、建立工程、编译、仿真创建一个新的工程项目,添加顶层文件,再进行编译前设置、全局编译、最后再创建波形仿真文件,波形参数设置,给定输入波形,启动仿真。这一系列步骤与VHDL文本输入法相同,参见实验一。6、硬件测试,一系列步骤与VHDL文本输入法相同,参见实验一七、思考题 所设计的2位频率计的测试误差为多少?简述其引起原因。八、实验报告1、撰写实验预习报告,包含实验目的、实验内容,并根据实验内容撰写相关的实验原理和实验程序;完成思考题。以备实验前检查。2、记录仿真波形,完成仿真结果的详细分析。3、整理硬件测试记录,验证本项目的功能。实验五:交通灯信号控制器设计一、实验目的1、进一步熟悉QuartusII的使用,掌握多层次电路的设计、仿真和硬件测试。二、实验内容设计交通灯信号控制器,要求如下:主、支干道各设有一个绿、黄和红指示灯。主干道处于常允许通行状态,而支干道有车来才允许通行。当主干道允许通行亮绿灯时,支干道亮红灯。而支干道允许通行亮绿灯时,主干道亮红灯。当主、支道均有车时,两者交替允许通行,主干道每次放行45s,支干道每次放行25s,在每次有亮绿灯变成亮红灯的转换过程中,要亮5s的黄灯作为过渡,并进行减计时显示。 三、实验原理、方法和手段 利用VHDL语言设计了十字路口交通灯的交通灯控制模块、定时模块、显示控制模块,实现表1的控制方案。表1 交通灯控制器状态转换表状态主干道支干道时间1绿灯亮红灯亮45s2黄灯亮红灯亮5s3红灯亮黄灯亮25s4红灯亮绿灯亮5s五、实验条件1、提供一台具有WINDOWS 2000/XP操作系统的计算机;2、提供QuartusII软件开发环境。六、实验步骤 学生按要求进行方案设计,写出实验程序,在QuartusII软件上进行仿真验证,软件操作步骤参见实验一,这里不在详述。七、实验报告1、撰写实验预习报告,包含实验目的、实验内容,并根据实验内容撰写相关的实验原理和实验程序;完成思考题。以备实验前检查。2、记录仿真波形,完成仿真结果的详细分析。3、整理硬件测试记录,验证本项目的功能。25
展开阅读全文