1、EDA课程实验四班级:11电子(1)姓名:朱杰 学号:20110310161指导教师:秦玉龙开课时间: 2013 至 2014 学年第 1 学期实验名称数字秒表的设计实验时间2013,11,29姓 名朱杰实验成绩一、实验目的1.掌握VHDL语言的基本结构。 2.掌握VHDL层次化的设计方法。 3.掌握VHDL基本逻辑电路的综合设计应用。二、实验设备计算机软件:Quartus IIEDA实验箱。主芯片:EPM7128SLC84-15或EP1K100QC208-3。下载电缆,导线等。三、实验内容设计并调试好一个计时范围为0.01秒1小时的数字秒表。要求编写上述数字秒表逻辑图中的各个模块的VHDL语
2、言程序,并完成数字秒表的顶层设计,然后利用开发工具软件对其进行编译和仿真,最后要通过实验开发系统对其进行硬件验证。(一)分频器模块CLKGEN的设计 1. 编写CLKGEN分频器模块的VHDL程序,并对其进行编译和仿真,初步验证设计的正确性。(二)十进制计数器的设计 编写十进制计数器CNT10模块的VHDL程序,并对其进行编译和仿真,初步验证设计的正确性。(三)6进制计数器的设计编写六进制计数器CNT6模块的VHDL程序,并对其进行编译和仿真,初步验证设计的正确性。VHDL源程序:(四)数码管动态扫描显示电路设计(五)数字秒表的顶层设计 利用前面所设计的模块,完成数字秒表的顶层设计,并对其进行
3、编译和仿真,初步验证设计的正确性。(六)逻辑综合结果使用Quartus 进行逻辑综合,给出电路的 RTL视图及逻辑综合后的资源使用情况。(七)管脚锁定及硬件验证情况数字秒表的时钟CLK输入端锁定到EP1K100QC208-3芯片的78,对应实验箱上的CLK0;seg77.0:段码输出分别锁定到EP1K100QC208-3芯片的132,131,128,127,126,125,122,121引脚上,对应实验箱上8个数码管的段码输入端;LEDW2.0 分别锁定到EP1K100QC208-3芯片的53,47,46引脚上。CLK0设置为1KHZ,观察数码管显示情况,验证是否满足预期功能。四、实验设计1、
4、系统设计要求设计一个计时范围为0.01秒1小时的秒表,首先需要获得一个比较精确的计时基准信号,这里是周期为1/100 s的计时脉冲。其次,计数器需设置清零信号和计数使能信号,以便控制秒表的清零和计时起停。图1秒表电路逻辑图 如图1所示,数字秒表可由1个分频器、1/100秒计数器(即十进制计数器U1)、1/10秒计数器(即十进制计数器U2)、秒计数器(即十进制计数器U3和六进制计数器U4组成的60进制计数器)、分计数器(即十进制计数器U5和六进制计数器U6组成的60进制计数器)组成。每个计数器的4位输出经段译码后送数码管显示,数码显示采用动态扫描方式。其中DOUT3.0为1/100秒计数值、DO
5、UT7.4为1/10秒计数值、DOUT11.8和DOUT15.12为秒计数值的个位和十位、DOUT19.16和DOUT23.20为分计数值的该位和十位。2、VHDL程序分频器设计LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;use ieee.std_logic_unsigned.all;ENTITY CLKGEN IS PORT (CLK: IN STD_LOGIC; NEWCLK: OUT Std_LOGIC);END CLKGEN;ARCHITECTURE ART OF CLKGEN ISSIGNAL CNTER:integer range 0 to 1
6、0;BEGINPROCESS(CLK)BEGIN IF (CLKEVENT AND CLK=1) THEN IF (CNTER=10) THEN CNTER=0; ELSE CNTER=CNTER+1; END IF; END IF;END PROCESS;PROCESS(CNTER)BEGIN IF (CNTER5) THEN NEWCLK=1; ELSE NEWCLK=0; END IF;END PROCESS;END ART;十进制计数器的设计 VHDL源程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSI
7、GNED.ALL;USE WORK.PAKG.ALL;ENTITY CNT10 IS PORT (CLK: IN STD_LOGIC; CLR: IN STD_LOGIC; ENA: IN STD_LOGIC; CQ: OUT DIGIT_T; CARRY_OUT: OUT STD_LOGIC);END CNT10;ARCHITECTURE ART OF CNT10 ISSIGNAL CQI: DIGIT_T;BEGINPROCESS(CLK, CLR, ENA)BEGIN IF CLR=1 THEN CQI=0; ELSIF CLKEVENT AND CLK=1 THEN IF ENA=1
8、THEN IF CQI=9 THEN CQI=0; CARRY_OUT=1; ELSE CQI=CQI+1; CARRY_OUT=0; END IF; END IF; END IF;END PROCESS;CQ=CQI;END ART;进制计数器的设计LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE WORK.PAKG.ALL;ENTITY CNT6 IS PORT (CLK: IN STD_LOGIC; CLR: IN STD_LOGIC; ENA: IN STD_LOGIC; CQ: O
9、UT DIGIT_T; CARRY_OUT: OUT STD_LOGIC);END CNT6;ARCHITECTURE ART OF CNT6 ISSIGNAL CQI: DIGIT_T;BEGINPROCESS(CLK, CLR, ENA)BEGIN IF CLR=1 THEN CQI=0; ELSIF CLKEVENT AND CLK=1 THEN IF ENA=1 THEN IF CQI=5 THEN CQI=0 ;CARRY_OUT=1; ELSE CQI=CQI+1; CARRY_OUT=0; END IF; END IF; END IF;END PROCESS;CQ=CQI;END
10、 ART;数码管动态扫描显示电路设计 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; USE WORK.PAKG.ALL; ENTITY disp_scan IS PORT(CLK: IN STD_LOGIC; num: IN DISP_T; LEDW: OUT STD_LOGIC_VECTOR(2 DOWNTO 0); SEG7: OUT STD_LOGIC_VECTOR(7 DOWNTO 0); END ENTITY disp_
11、scan; ARCHITECTURE ART OF disp_scan IS signal temp:DIGIT_T; signal cnt:STD_LOGIC_VECTOR(2 DOWNTO 0); begin PROCESS(CLK) IS BEGIN IF CLKEVENT AND CLK=1 THEN IF CNT=111 THEN CNT=000; ELSE CNT=CNT+1; END IF; END IF; END PROCESS; LEDW TEMP TEMP TEMP TEMP TEMP TEMP TEMP TEMP TEMP SEG7 SEG7 SEG7 SEG7 SEG7
12、 SEG7 SEG7 SEG7 SEG7 SEG7 SEG7CLK,NEWCLK=NEWCLK1);U1: CNT10 PORT MAP(CLK=NEWCLK1, CLR=CLR, ENA=ENA,CQ=DOUT(0),CARRY_OUT=CARRY1);U2: CNT10 PORT MAP(CLK=CARRY1, CLR=CLR, ENA=ENA,CQ=DOUT(1),CARRY_OUT=CARRY2);U3: CNT10 PORT MAP(CLK=CARRY2, CLR=CLR, ENA=ENA,CQ=DOUT(2),CARRY_OUT=CARRY3);U4: CNT6 PORT MAP(
13、CLK=CARRY3, CLR=CLR, ENA=ENA,CQ=DOUT(3),CARRY_OUT=CARRY4);U5: CNT10 PORT MAP(CLK=CARRY4, CLR=CLR, ENA=ENA,CQ=DOUT(4),CARRY_OUT=CARRY5);U6: CNT6 PORT MAP(CLK=CARRY5, CLR=CLR, ENA=ENA,CQ=DOUT(5);U7: disp_scan PORT MAP(CLK,DOUT,LEDW,SEG7);END ART;3、仿真波形分频器设计十进制计数器的设计进制计数器的设计数码管动态扫描显示电路设计数字秒表的顶层设计4、芯片引脚
14、锁定文件五、实验结果及总结1、系统仿真情况分频器设计十进制计数器的设计进制计数器的设计数码管动态扫描显示电路设计数字秒表的顶层设计2、逻辑综合结果分频器设计十进制计数器的设计进制计数器的设计数码管动态扫描显示电路设计数字秒表的顶层设计3、硬件验证情况清零:计数;4、实验过程出现的问题及解决方法这次实验做的比较顺利,基本上是没有错误的。但是细细想来,我发现从实验课开始到现在,我都没有仔细看过代码。就像这次,刚开始的时候就出现显示倒了。后来修改了dis_scan里面的显示顺序就能够正常显示。本来还以为是times里面出问题,怎么修改也不出结果。现在我明白,数码管显示问题,首先从仪器看是否有问题,然后看dis_scan,再然后就是其他关联的代码。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1