还剩9页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
电气与信息工程学院电子设计自动化实验报告实验五数字秒表的设计指导老师谭会生老师学生姓名王炜班级电子信息1202实验时间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;ENTITYCLKGENISPORTCLK:INSTD_LOGIC;NEWCLK:OUTSTD_LOGIC;ENDENTITYCLKGEN;ARCHITECTUREARTOFCLKGENISSIGNALCNT:INTEGERRANGE0TO10#29#;BEGINPRO__SSCLKISBEGINIFCLKEVENTANDCLK=1THENIFCNT=10#29#THENCNT=0;ELSECNT=CNT+1;ENDIF;ENDIF;ENDPRO__SS;PRO__SSCNTISBEGINIFCNT=10#29#THENNEWCLK=1;ELSENEWCLK=0;ENDIF;ENDPRO__SS;ENDARCHITECTUREART;六进制计数器的VHDL源程序--CNT
6.VHDLIBRARYIEEE;ENTITYCNT6ISPORTCLK:INSTD_LOGIC;CLR:INSTD_LOGIC;ENA:INSTD_LOGIC;CQ:OUTSTD_LOGIC_VECTOR3DOWNTO0;CO:OUTSTD_LOGIC;ENDENTITYCNT6;ARCHITECTUREARTOFCNT6ISSIGNALCQI:STD_LOGIC_VECTOR3DOWNTO0;BEGINPRO__SSCLKCLRENAISBEGINIFCLR=1THENCQI=0000;ELSIFCLKEVENTANDCLK=1THENIFENA=1THENIFCQI=0101THENCQI=0000;ELSECQI=CQI+1;ENDIF;ENDIF;ENDIF;ENDPRO__SS;PRO__SSCLKCQIISBEGINIFCLKEVENTANDCLK=1THENIFCQI0101THENCO=0;ELSECO=1;ENDIF;ENDIF;ENDPRO__SS;CQ=CQI;ENDARCHITECTUREART;十进制计数器的VHDL源程序--CNT
10.VHDLIBRARYIEEE;ENTITYCNT10ISPORTCLK:INSTD_LOGIC;CLR:INSTD_LOGIC;ENA:INSTD_LOGIC;CQ:OUTSTD_LOGIC_VECTOR3DOWNTO0;CO:OUTSTD_LOGIC;ENDENTITYCNT10;ARCHITECTUREARTOFCNT10ISSIGNALCQI:STD_LOGIC_VECTOR3DOWNTO0;BEGINPRO__SSCLKCLRENAISBEGINIFCLR=1THENCQI=0000;ELSIFCLKEVENTANDCLK=1THENIFENA=1THENIFCQI=1001THENCQI=0000;ELSECQI=CQI+1;ENDIF;ENDIF;ENDIF;ENDPRO__SS;PRO__SSCLKCQIISBEGINIFCLKEVENTANDCLK=1THENIFCQI1001THENCO=0;ELSECO=1;ENDIF;ENDIF;ENDPRO__SS;CQ=CQI;ENDARCHITECTUREART;数字秒表的VHDL源程序--TIMES.VHDLIBRARYIEEE;ENTITYTIMESISPORTCLR:INSTD_LOGIC;CLK:INSTD_LOGIC;ENA:INSTD_LOGIC;DOUT:OUTSTD_LOGIC_VECTOR23DOWNTO0;ENDENTITYTIMES;ARCHITECTUREARTOFTIMESISCOMPONENTCLKGENISPORTCLK:INSTD_LOGIC;NEWCLK:OUTSTD_LOGIC;ENDCOMPONENTCLKGEN;COMPONENTCNT10ISPORTCLKCLRENA:INSTD_LOGIC;CQ:OUTSTD_LOGIC_VECTOR3DOWNTO0;CO:OUTSTD_LOGIC;ENDCOMPONENTCNT10;COMPONENTCNT6ISPORTCLKCLRENA:INSTD_LOGIC;CQ:OUTSTD_LOGIC_VECTOR3DOWNTO0;CO:OUTSTD_LOGIC;ENDCOMPONENTCNT6;SIGNALS0:STD_LOGIC;SIGNALS1S2S3S4S5:STD_LOGIC;BEGINU0:CLKGENPORT__PCLK=CLKNEWCLK=S0;U1:CNT10PORT__PS0CLRENADOUT3DOWNTO0S1;U2:CNT10PORT__PS1CLRENADOUT7DOWNTO4S2;U3:CNT10PORT__PS2CLRENADOUT11DOWNTO8S3;U4:CNT6PORT__PS3CLRENADOUT15DOWNTO12S4;U5:CNT10PORT__PS4CLRENADOUT19DOWNTO16S5;U6:CNT6PORT__PS5CLRENADOUT23DOWNTO20;ENDARCHITECTUREART;3)仿真波形设置在程序的调试和仿真中,由于程序中有关参数的原因,要观察有关输出的变化,需要运行较长的时间,或在一个给定时间内,可能看不到有关输出的变化这时我们可以采取调整参数的方法进行仿真,待仿真证明程序正确后再复原到原程序调整参数的具体方法是先将需要修改的内容用“--”注释掉并添加新的内容,而调试好后复原的方法就是将修改后的内容注释掉,而将原内容去掉注释比如本设计中的分频电路程序,分频常熟为30000,其输出需要计数30000次才发生一次变化,因此在我们设定的时间间隔内,根本看不到输出的变化,也无法判断该程序的正确与错误这时我们若将分频常数修改为30,就很容易观察有仿真结果如图5-2和5-3分别为软件对CLKGEN和TIMES进行时序仿真的结果图5-2CLKGEN的时序仿真结果(分频常数修改为30)图5-3TIMES的时序仿真结果
5.实验结果及总结1)系统仿真情况时序仿真结果如图5-4所示从系统仿真结果可以看出,当使能计数__处于高电平有效时,开始计数,且在清零__有效时,计数也清零,从零开始计数,仿真结果符合预计要求2)逻辑综合结果使用QuartusII
8.0进行逻辑综合后,TIMES综合后的RTL视图如图5-4所示图5-4TIMES综合后的RTL视图3)实验附加动态扫描添加两个组件CTRLS和DISPLAY用于实现动态扫描组件CTRLS和DISPLAY的VHDL源程序如下--CTRLS.VHDLIBRARYIEEE;ENTITYCTRLSISPORTCLK:INSTD_LOGIC;SEL:OUTSTD_LOGIC_VECTOR2DOWNTO0;ENDENTITYCTRLS;ARCHITECTUREARTOFCTRLSISSIGNALCNT:STD_LOGIC_VECTOR2DOWNTO0;BEGINPRO__SSCLKISBEGINIFCLKEVENTANDCLK=1THENIFCNT=111THENCNT=000;ELSECNT=CNT+1;ENDIF;ENDIF;ENDPRO__SS;SEL=CNT;ENDARCHITECTUREART;--DISPLAY.VHDLIBRARYIEEE;ENTITYDISPLAYISPORTSEL:INSTD_LOGIC_VECTOR2DOWNTO0;DATAIN:INSTD_LOGIC_VECTOR23DOWNTO0;COM:OUTSTD_LOGIC_VECTOR7DOWNTO0;SEG:OUTSTD_LOGIC_VECTOR7DOWNTO0;ENDENTITYDISPLAY;ARCHITECTUREARTOFDISPLAYISSIGNALDATA:STD_LOGIC_VECTOR3DOWNTO0;BEGINP1:PRO__SSSELISBEGINCASESELISWHEN000=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;ENDPRO__SSP1;P2:PRO__SSSELBEGINCASESELISWHEN000=DATA=DATAIN3DOWNTO0;WHEN001=DATA=DATAIN7DOWNTO4;WHEN010=DATA=DATAIN11DOWNTO8;WHEN011=DATA=DATAIN15DOWNTO12;WHEN100=DATA=DATAIN19DOWNTO16;WHEN101=DATA=DATAIN23DOWNTO20;WHENOTHERS=DATA=0000;ENDCASE;CASEDATAISWHEN0000=SEG=00111111;--3FHWHEN0001=SEG=00000110;--06HWHEN0010=SEG=01011011;--5BHWHEN0011=SEG=01001111;--4FHWHEN0100=SEG=01100110;--66HWHEN0101=SEG=01101101;--6DHWHEN0110=SEG=01111101;--7DHWHEN0111=SEG=00000111;--07HWHEN1000=SEG=01111111;--7FHWHEN1001=SEG=01101111;--6FHWHENOTHERS=SEG=00000000;--00HENDCASE;ENDPRO__SSP2;ENDARCHITECTUREART;加上动态扫描后的数字秒表的VHDL源程序如下LIBRARYIEEE;ENTITYTIMESDISISPORTCLK2:INSTD_LOGIC;CLR:INSTD_LOGIC;CLK:INSTD_LOGIC;ENA:INSTD_LOGIC;COM:OUTSTD_LOGIC_VECTOR7DOWNTO0;SEG:OUTSTD_LOGIC_VECTOR7DOWNTO0;ENDENTITYTIMESDIS;ARCHITECTUREARTOFTIMESDISISCOMPONENTCLKGENISPORTCLK:INSTD_LOGIC;NEWCLK:OUTSTD_LOGIC;ENDCOMPONENTCLKGEN;COMPONENTCNT10ISPORTCLKCLRENA:INSTD_LOGIC;CQ:OUTSTD_LOGIC_VECTOR3DOWNTO0;CO:OUTSTD_LOGIC;ENDCOMPONENTCNT10;COMPONENTCNT6ISPORTCLKCLRENA:INSTD_LOGIC;CQ:OUTSTD_LOGIC_VECTOR3DOWNTO0;CO:OUTSTD_LOGIC;ENDCOMPONENTCNT6;--STARTDISCOMPONENTCTRLSISPORTCLK:INSTD_LOGIC;SEL:OUTSTD_LOGIC_VECTOR2DOWNTO0;ENDCOMPONENTCTRLS;COMPONENTDISPLAYISPORTSEL:INSTD_LOGIC_VECTOR2DOWNTO0;DATAIN:INSTD_LOGIC_VECTOR23DOWNTO0;COM:OUTSTD_LOGIC_VECTOR7DOWNTO0;SEG:OUTSTD_LOGIC_VECTOR7DOWNTO0;ENDCOMPONENTDISPLAY;--ENDDISSIGNALS0:STD_LOGIC;SIGNALS1S2S3S4S5:STD_LOGIC;SIGNALSSEL:STD_LOGIC_VECTOR2DOWNTO0;SIGNALSDATAIN:STD_LOGIC_VECTOR23DOWNTO0;BEGINU0:CLKGENPORT__PCLK=CLKNEWCLK=S0;U1:CNT10PORT__PS0CLRENASDATAIN3DOWNTO0S1;U2:CNT10PORT__PS1CLRENASDATAIN7DOWNTO4S2;U3:CNT10PORT__PS2CLRENASDATAIN11DOWNTO8S3;U4:CNT6PORT__PS3CLRENASDATAIN15DOWNTO12S4;U5:CNT10PORT__PS4CLRENASDATAIN19DOWNTO16S5;U6:CNT6PORT__PS5CLRENASDATAIN23DOWNTO20;U7:CTRLSPORT__PCLK2SSEL;U8:DISPLAYPORT__PSSELSDATAINCOMSEG;ENDARCHITECTUREART;加上动态扫描后的数字秒表的RTL图如图5-5所示图5-5管脚锁定配置如图5-6所示图5-6硬件运行效果图如图5-7所示图5-74)实验过程中出现的问题及解决办法遇到问题首先在仿真的情况下可以运行,但下载到硬件上的时候不可以正常运行解决方法首先再仔细理清程序的思路,看有没地方需要改的,找到了,是前面的计数分频的数值改小了,把它改回原来的数值,即将仿真时的29改为仿真是要用到的499999即可,重新编译下载运行,这下可以运行出结果了。