资源描述
电气与信息工程学院电子设计自动化实验报告实验五 数字秒表的设计指导老师:谭会生老师学生姓名:王炜班级:电子信息1202学号:12401720207实验时间:2015-04-28实验五 数字秒表的设计1.实验目的(1) 熟悉QUARTUS2 软件的基本使用方法。(2) 熟悉EDA实验开发系统的基本使用方法。(3) 学习VHDL基本逻辑电路的综合设计应用。2.实验内容设计并调试好一个计时范围为0.01s1h的数字秒表,并用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位二进制计数器输出的最小显示值分别为:DOUT3.0-1/100s、DOUT3.0-1/100s、DOUT7.4-1/10s、DOUT11.8-1/1s、DOUT15.12-10s、DOUT19.16-1min、DOUT23.20-10min等。图5-1 2) VHDL程序电路均采用VHDL文本输入,有关VHDL程序如下:3MHz100Hz分频器的VHDL源程序:-CLKGEN.VHD LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY CLKGEN ISPORT(CLK:IN STD_LOGIC; NEWCLK:OUT STD_LOGIC);END ENTITY CLKGEN;ARCHITECTURE ART OF CLKGEN ISSIGNAL CNT:INTEGER RANGE 0 TO 10#29#;BEGINPROCESS(CLK)ISBEGINIF CLKEVENT AND CLK=1THENIF CNT=10#29# THEN CNT=0;ELSE CNT=CNT+1;END IF;END IF;END PROCESS;PROCESS(CNT)ISBEGINIF CNT=10#29# THEN NEWCLK=1;ELSE NEWCLK=0;END IF;END PROCESS;END ARCHITECTURE ART;六进制计数器的VHDL源程序:-CNT6.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT6 ISPORT(CLK:IN STD_LOGIC; CLR:IN STD_LOGIC; ENA:IN STD_LOGIC; CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); CO:OUT STD_LOGIC);END ENTITY CNT6;ARCHITECTURE ART OF CNT6 ISSIGNAL CQI:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(CLK,CLR,ENA)ISBEGINIF CLR=1THEN CQI=0000; ELSIF CLKEVENT AND CLK=1THENIF ENA=1 THENIF CQI=0101 THENCQI=0000;ELSECQI=CQI+1;END IF;END IF;END IF;END PROCESS;PROCESS(CLK,CQI)ISBEGINIF CLKEVENT AND CLK=1THENIF CQI0101 THENCO=0;ELSECO=1;END IF;END IF;END PROCESS;CQ=CQI;END ARCHITECTURE ART;十进制计数器的VHDL源程序:-CNT10.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT10 ISPORT(CLK:IN STD_LOGIC; CLR:IN STD_LOGIC; ENA:IN STD_LOGIC; CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); CO:OUT STD_LOGIC);END ENTITY CNT10;ARCHITECTURE ART OF CNT10 ISSIGNAL CQI:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(CLK,CLR,ENA)ISBEGINIF CLR=1THEN CQI=0000; ELSIF CLKEVENT AND CLK=1THENIF ENA=1 THENIF CQI=1001 THENCQI=0000;ELSECQI=CQI+1;END IF;END IF;END IF;END PROCESS;PROCESS(CLK,CQI)ISBEGINIF CLKEVENT AND CLK=1THENIF CQI1001 THENCO=0;ELSECO=1;END IF;END IF;END PROCESS;CQCLK,NEWCLK=S0);U1:CNT10 PORT MAP(S0,CLR,ENA,DOUT(3 DOWNTO 0),S1);U2:CNT10 PORT MAP(S1,CLR,ENA,DOUT(7 DOWNTO 4),S2);U3:CNT10 PORT MAP(S2,CLR,ENA,DOUT(11 DOWNTO 8),S3);U4:CNT6 PORT MAP(S3,CLR,ENA,DOUT(15 DOWNTO 12),S4);U5:CNT10 PORT MAP(S4,CLR,ENA,DOUT(19 DOWNTO 16),S5);U6:CNT6 PORT MAP(S5,CLR,ENA,DOUT(23 DOWNTO 20);END ARCHITECTURE ART;3)仿真波形设置在程序的调试和仿真中,由于程序中有关参数的原因,要观察有关输出的变化,需要运行较长的时间,或在一个给定时间内,可能看不到有关输出的变化。这时我们可以采取调整参数的方法进行仿真,待仿真证明程序正确后再复原到原程序。调整参数的具体方法是:先将需要修改的内容用“-”注释掉并添加新的内容,而调试好后复原的方法就是将修改后的内容注释掉,而将原内容去掉注释。比如本设计中的分频电路程序,分频常熟为30 000,其输出需要计数30 000次才发生一次变化,因此在我们设定的时间间隔内,根本看不到输出的变化,也无法判断该程序的正确与错误。这时我们若将分频常数修改为30,就很容易观察有仿真结果。如图5-2和5-3分别为软件对CLKGEN和TIMES进行时序仿真的结果。图5-2 CLKGEN的时序仿真结果(分频常数修改为30)图5-3 TIMES的时序仿真结果5. 实验结果及总结1) 系统仿真情况时序仿真结果如图5-4所示。从系统仿真结果可以看出,当使能计数信号处于高电平有效时,开始计数,且在清零信号有效时,计数也清零,从零开始计数,仿真结果符合预计要求。2) 逻辑综合结果使用Quartus II 8.0进行逻辑综合后,TIMES综合后的RTL视图如图5-4所示。图5-4 TIMES综合后的RTL视图3) 实验附加动态扫描添加两个组件CTRLS和DISPLAY用于实现动态扫描。组件CTRLS和DISPLAY的VHDL源程序如下:-CTRLS.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CTRLS ISPORT(CLK:IN STD_LOGIC; SEL: OUT STD_LOGIC_VECTOR(2 DOWNTO 0);END ENTITY CTRLS ;ARCHITECTURE ART OF CTRLS ISSIGNAL CNT:STD_LOGIC_VECTOR(2 DOWNTO 0);BEGINPROCESS(CLK) IS BEGIN IF CLKEVENT AND CLK=1 THENIF CNT=111THENCNT=000;ELSECNT=CNT+1;END IF; END IF;END PROCESS; SELCOMCOMCOMCOMCOMCOMCOMCOMCOMDATADATADATADATADATADATADATASEGSEGSEGSEGSEGSEGSEGSEGSEGSEGSEGCLK,NEWCLK=S0);U1:CNT10 PORT MAP(S0,CLR,ENA,SDATAIN(3 DOWNTO 0),S1);U2:CNT10 PORT MAP(S1,CLR,ENA,SDATAIN(7 DOWNTO 4),S2);U3:CNT10 PORT MAP(S2,CLR,ENA,SDATAIN(11 DOWNTO 8),S3);U4:CNT6 PORT MAP(S3,CLR,ENA,SDATAIN(15 DOWNTO 12),S4);U5:CNT10 PORT MAP(S4,CLR,ENA,SDATAIN(19 DOWNTO 16),S5);U6:CNT6 PORT MAP(S5,CLR,ENA,SDATAIN(23 DOWNTO 20);U7:CTRLS PORT MAP(CLK2,SSEL);U8:DISPLAY PORT MAP(SSEL,SDATAIN,COM,SEG);END ARCHITECTURE ART;加上动态扫描后的数字秒表的RTL图如图5-5所示:图5-5管脚锁定配置如图5-6所示:图5-6硬件运行效果图如图5-7所示:图5-74) 实验过程中出现的问题及解决办法遇到问题:首先在仿真的情况下可以运行,但下载到硬件上的时候不可以正常运行。解决方法:首先再仔细理清程序的思路,看有没地方需要改的,找到了,是前面的计数分频的数值改小了,把它改回原来的数值,即将仿真时的29改为仿真是要用到的499999即可,重新编译下载运行,这下可以运行出结果了。11 / 11文档可自由编辑打印
展开阅读全文