您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 设计及方案 > EDA实验五数字秒表的设计实验报告_王炜20150414
电气与信息工程学院电子设计自动化实验报告实验五数字秒表的设计指导老师:谭会生老师学生姓名:王炜班级:电子信息1202学号:12401720207实验时间:2015-04-28实验五数字秒表的设计1.实验目的(1)熟悉QUARTUS2软件的基本使用方法。(2)熟悉EDA实验开发系统的基本使用方法。(3)学习VHDL基本逻辑电路的综合设计应用。2.实验内容设计并调试好一个计时范围为0.01s~1h的数字秒表,并用EDA实验开发系统(事先应选定拟用的实验芯片的型号)进行硬件验证。3.实验要求(1)画出系统的原理框图,说明系统中各主要组成部分的功能。(2)编写各个VHDL源程序。(3)根据系统的功能,选好测试用例,画出测试输入信号波形或编好测试程序。(4)根据选用的EDA实验开发装置编好用于硬件验证的管脚锁定表格或文件。(5)记录系统仿真、逻辑综合及硬件验证结果。(6)记录实验过程中出现的问题及解决办法。4.实验设计1)系统原理框图系统设计思路:首先获得一个比较精确的计时基准信号,这里是周期为1/100s的计时脉冲。其次,除了对每一个计数器需设置清零信号输入外,还需为六个计数器设置时钟使能信号,即计时允许信号,以便作为秒表的计时起、停控制开关。因此数字秒表可由一个分频器、四个十进制计数器(1/100s、1/10、1s、1min)以及两个六进制计数器(10s、10min)组成,如图5-1所示。6个计数器中的每一个计数器的4位输出,通过外设的BCD译码器输出显示。图5-1中,6个4位二进制计数器输出的最小显示值分别为:DOUT[3..0]-1/100s、DOUT[3..0]-1/100s、DOUT[7..4]-1/10s、DOUT[11..8]-1/1s、DOUT[15..12]-10s、DOUT[19..16]-1min、DOUT[23..20]-10min等。图5-12)VHDL程序电路均采用VHDL文本输入,有关VHDL程序如下:3MHz—100Hz分频器的VHDL源程序:--CLKGEN.VHDLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYCLKGENISPORT(CLK:INSTD_LOGIC;NEWCLK:OUTSTD_LOGIC);ENDENTITYCLKGEN;ARCHITECTUREARTOFCLKGENISSIGNALCNT:INTEGERRANGE0TO10#29#;BEGINPROCESS(CLK)ISBEGINIFCLK'EVENTANDCLK='1'THENIFCNT=10#29#THENCNT=0;ELSECNT=CNT+1;ENDIF;ENDIF;ENDPROCESS;PROCESS(CNT)ISBEGINIFCNT=10#29#THENNEWCLK='1';ELSENEWCLK='0';ENDIF;ENDPROCESS;ENDARCHITECTUREART;六进制计数器的VHDL源程序:--CNT6.VHDLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCNT6ISPORT(CLK:INSTD_LOGIC;CLR:INSTD_LOGIC;ENA:INSTD_LOGIC;CQ:OUTSTD_LOGIC_VECTOR(3DOWNTO0);CO:OUTSTD_LOGIC);ENDENTITYCNT6;ARCHITECTUREARTOFCNT6ISSIGNALCQI:STD_LOGIC_VECTOR(3DOWNTO0);BEGINPROCESS(CLK,CLR,ENA)ISBEGINIFCLR='1'THENCQI=0000;ELSIFCLK'EVENTANDCLK='1'THENIFENA='1'THENIFCQI=0101THENCQI=0000;ELSECQI=CQI+'1';ENDIF;ENDIF;ENDIF;ENDPROCESS;PROCESS(CLK,CQI)ISBEGINIFCLK'EVENTANDCLK='1'THENIFCQI0101THENCO='0';ELSECO='1';ENDIF;ENDIF;ENDPROCESS;CQ=CQI;ENDARCHITECTUREART;十进制计数器的VHDL源程序:--CNT10.VHDLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCNT10ISPORT(CLK:INSTD_LOGIC;CLR:INSTD_LOGIC;ENA:INSTD_LOGIC;CQ:OUTSTD_LOGIC_VECTOR(3DOWNTO0);CO:OUTSTD_LOGIC);ENDENTITYCNT10;ARCHITECTUREARTOFCNT10ISSIGNALCQI:STD_LOGIC_VECTOR(3DOWNTO0);BEGINPROCESS(CLK,CLR,ENA)ISBEGINIFCLR='1'THENCQI=0000;ELSIFCLK'EVENTANDCLK='1'THENIFENA='1'THENIFCQI=1001THENCQI=0000;ELSECQI=CQI+'1';ENDIF;ENDIF;ENDIF;ENDPROCESS;PROCESS(CLK,CQI)ISBEGINIFCLK'EVENTANDCLK='1'THENIFCQI1001THENCO='0';ELSECO='1';ENDIF;ENDIF;ENDPROCESS;CQ=CQI;ENDARCHITECTUREART;数字秒表的VHDL源程序:--TIMES.VHDLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYTIMESISPORT(CLR:INSTD_LOGIC;CLK:INSTD_LOGIC;ENA:INSTD_LOGIC;DOUT:OUTSTD_LOGIC_VECTOR(23DOWNTO0));ENDENTITYTIMES;ARCHITECTUREARTOFTIMESISCOMPONENTCLKGENISPORT(CLK:INSTD_LOGIC;NEWCLK:OUTSTD_LOGIC);ENDCOMPONENTCLKGEN;COMPONENTCNT10ISPORT(CLK,CLR,ENA:INSTD_LOGIC;CQ:OUTSTD_LOGIC_VECTOR(3DOWNTO0);CO:OUTSTD_LOGIC);ENDCOMPONENTCNT10;COMPONENTCNT6ISPORT(CLK,CLR,ENA:INSTD_LOGIC;CQ:OUTSTD_LOGIC_VECTOR(3DOWNTO0);CO:OUTSTD_LOGIC);ENDCOMPONENTCNT6;SIGNALS0:STD_LOGIC;SIGNALS1,S2,S3,S4,S5:STD_LOGIC;BEGINU0:CLKGENPORTMAP(CLK=CLK,NEWCLK=S0);U1:CNT10PORTMAP(S0,CLR,ENA,DOUT(3DOWNTO0),S1);U2:CNT10PORTMAP(S1,CLR,ENA,DOUT(7DOWNTO4),S2);U3:CNT10PORTMAP(S2,CLR,ENA,DOUT(11DOWNTO8),S3);U4:CNT6PORTMAP(S3,CLR,ENA,DOUT(15DOWNTO12),S4);U5:CNT10PORTMAP(S4,CLR,ENA,DOUT(19DOWNTO16),S5);U6:CNT6PORTMAP(S5,CLR,ENA,DOUT(23DOWNTO20));ENDARCHITECTUREART;3)仿真波形设置在程序的调试和仿真中,由于程序中有关参数的原因,要观察有关输出的变化,需要运行较长的时间,或在一个给定时间内,可能看不到有关输出的变化。这时我们可以采取调整参数的方法进行仿真,待仿真证明程序正确后再复原到原程序。调整参数的具体方法是:先将需要修改的内容用“--”注释掉并添加新的内容,而调试好后复原的方法就是将修改后的内容注释掉,而将原内容去掉注释。比如本设计中的分频电路程序,分频常熟为30000,其输出需要计数30000次才发生一次变化,因此在我们设定的时间间隔内,根本看不到输出的变化,也无法判断该程序的正确与错误。这时我们若将分频常数修改为30,就很容易观察有仿真结果。如图5-2和5-3分别为软件对CLKGEN和TIMES进行时序仿真的结果。图5-2CLKGEN的时序仿真结果(分频常数修改为30)图5-3TIMES的时序仿真结果5.实验结果及总结1)系统仿真情况时序仿真结果如图5-4所示。从系统仿真结果可以看出,当使能计数信号处于高电平有效时,开始计数,且在清零信号有效时,计数也清零,从零开始计数,仿真结果符合预计要求。2)逻辑综合结果使用QuartusII8.0进行逻辑综合后,TIMES综合后的RTL视图如图5-4所示。图5-4TIMES综合后的RTL视图3)实验附加动态扫描添加两个组件CTRLS和DISPLAY用于实现动态扫描。组件CTRLS和DISPLAY的VHDL源程序如下:--CTRLS.VHDLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCTRLSISPORT(CLK:INSTD_LOGIC;SEL:OUTSTD_LOGIC_VECTOR(2DOWNTO0));ENDENTITYCTRLS;ARCHITECTUREARTOFCTRLSISSIGNALCNT:STD_LOGIC_VECTOR(2DOWNTO0);BEGINPROCESS(CLK)ISBEGINIFCLK'EVENTANDCLK='1'THENIFCNT=111THENCNT=000;ELSECNT=CNT+'1';ENDIF;ENDIF;ENDPROCESS;SEL=CNT;ENDARCHITECTUREART;--DISPLAY.VHDLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYDISPLAYISPORT(SEL:INSTD_LOGIC_VECTOR(2DOWNTO0);DATAIN:INSTD_LOGIC_VECTOR(23DOWNTO0);COM:OUTSTD_LOGIC_VECTOR(7DOWNTO0);SEG:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDENTITYDISPLAY;ARCHITECTUREARTOFDISPLAYISSIGNALDATA:STD_LOGIC_VECTOR(3DOWNTO0);BEGINP1:PROCESS(SEL)ISBEGINCASESELISWHEN000=COM=11111110;WHEN001=COM=11111101;WHEN010=COM=11111011;WHEN011=COM=11110111;WHEN100=COM=11101111;WHEN101=COM=11011111;WHEN110=COM=10111111;WHEN111=COM=01111111;WHENOTHERS=COM=11111111;ENDCASE;ENDPROCESSP1;P2:PROCESS(SEL)BEGINCASESELISWHEN000=DATA=DATAIN(3DOWNTO0);WHEN001=DATA=DATAIN(7DOWNTO4);WHEN010=DATA=DATAIN(11DOWNTO8)
本文标题:EDA实验五数字秒表的设计实验报告_王炜20150414
链接地址:https://www.777doc.com/doc-2871605 .html