数字秒表的设计.docx
《数字秒表的设计.docx》由会员分享,可在线阅读,更多相关《数字秒表的设计.docx(13页珍藏版)》请在冰点文库上搜索。
数字秒表的设计
EDA技术实验报告册
班 级:
姓 名:
学 号:
指导教师:
开课时间:
2013至2014学年第1学期
实验名称
数字秒表的设计
实验时间
2013年11月28日
姓名
实验成绩
一、实验目的
1.掌握VHDL语言的基本结构。
2.掌握VHDL层次化的设计方法。
3.掌握VHDL基本逻辑电路的综合设计应用。
二、实验设备
计算机软件:
QuartusII
EDA实验箱。
主芯片:
EPM7128SLC84-15或EP1K100QC208-3。
下载电缆,导线等。
三、实验内容
设计并调试好一个计时范围为0.01秒~1小时的数字秒表。
要求编写上述数字秒表逻辑图中的各个模块的VHDL语言程序,并完成数字秒表的顶层设计,然后利用开发工具软件对其进行编译和仿真,最后要通过实验开发系统对其进行硬件验证。
(一)分频器模块CLKGEN的设计
1.编写CLKGEN分频器模块的VHDL程序,并对其进行编译和仿真,初步验证设计的正确性。
(二)十进制计数器的设计
编写十进制计数器CNT10模块的VHDL程序,并对其进行编译和仿真,初步验证设计的正确性。
(三)6进制计数器的设计
编写六进制计数器CNT6模块的VHDL程序,并对其进行编译和仿真,初步验证设计的正确性。
(四)数码管动态扫描显示电路设计
(五)数字秒表的顶层设计
利用前面所设计的模块,完成数字秒表的顶层设计,并对其进行编译和仿真,初步验证设计的正确性。
(六)逻辑综合结果
使用QuartusⅡ进行逻辑综合,给出电路的RTL视图及逻辑综合后的资源使用情况。
(七)管脚锁定及硬件验证情况
数字秒表的时钟CLK输入端锁定到EP1K100QC208-3芯片的78,对应实验箱上的CLK0;seg7[7..0]:
段码输出分别锁定到EP1K100QC208-3芯片的132,131,128,127,126,125,122,121引脚上,对应实验箱上8个数码管的段码输入端;LEDW[2..0]分别锁定到EP1K100QC208-3芯片的53,47,46引脚上。
CLK0设置为1KHZ,观察数码管显示情况,验证是否满足预期功能。
四、实验设计
1、系统设计
设计一个计时范围为0.01秒~1小时的秒表。
2、VHDL程序
如下:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
PACKAGEPAKGIS
SUBTYPEDIGIT_TISINTEGERRANGE0TO9;
TYPEDISP_TISARRAY(5DOWNTO0)OFDIGIT_T;
ENDPACKAGEPAKG;
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
useieee.std_logic_unsigned.all;
ENTITYCLKGENIS
PORT(CLK:
INSTD_LOGIC;
NEWCLK:
OUTStd_LOGIC);
ENDCLKGEN;
ARCHITECTUREARTOFCLKGENIS
SIGNALCNTER:
integerrange0to10;
BEGIN
PROCESS(CLK)
BEGIN
IF(CLK'EVENTANDCLK='1')THEN
IF(CNTER=10)THEN
CNTER<=0;
ELSE
CNTER<=CNTER+1;
ENDIF;
ENDIF;
ENDPROCESS;
PROCESS(CNTER)
BEGIN
IF(CNTER<5)THEN
NEWCLK<='1';
ELSE
NEWCLK<='0';
ENDIF;
ENDPROCESS;
ENDART;
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
USEWORK.PAKG.ALL;
ENTITYCNT10IS
PORT(CLK:
INSTD_LOGIC;
CLR:
INSTD_LOGIC;
ENA:
INSTD_LOGIC;
CQ:
OUTDIGIT_T;
CARRY_OUT:
OUTSTD_LOGIC);
ENDCNT10;
ARCHITECTUREARTOFCNT10IS
SIGNALCQI:
DIGIT_T;
BEGIN
PROCESS(CLK,CLR,ENA)
BEGIN
IFCLR='1'THENCQI<=0;
ELSIFCLK'EVENTANDCLK='1'THEN
IFENA='1'THEN
IFCQI=9THEN
CQI<=0;CARRY_OUT<='1';
ELSECQI<=CQI+1;CARRY_OUT<='0';
ENDIF;
ENDIF;
ENDIF;
ENDPROCESS;
CQ<=CQI;
ENDART;
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
USEWORK.PAKG.ALL;
ENTITYCNT6IS
PORT(CLK:
INSTD_LOGIC;
CLR:
INSTD_LOGIC;
ENA:
INSTD_LOGIC;
CQ:
OUTDIGIT_T;
CARRY_OUT:
OUTSTD_LOGIC);
ENDCNT6;
ARCHITECTUREARTOFCNT6IS
SIGNALCQI:
DIGIT_T;
BEGIN
PROCESS(CLK,CLR,ENA)
BEGIN
IFCLR='1'THENCQI<=0;
ELSIFCLK'EVENTANDCLK='1'THEN
IFENA='1'THEN
IFCQI=5THENCQI<=0;CARRY_OUT<='1';
ELSECQI<=CQI+1;CARRY_OUT<='0';
ENDIF;
ENDIF;
ENDIF;
ENDPROCESS;
CQ<=CQI;
ENDART;
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
USEWORK.PAKG.ALL;
ENTITYdisp_scanIS
PORT(CLK:
INSTD_LOGIC;
num:
INDISP_T;
LEDW:
OUTSTD_LOGIC_VECTOR(2DOWNTO0);
SEG7:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
ENDENTITYdisp_scan;
ARCHITECTUREARTOFdisp_scanIS
signaltemp:
DIGIT_T;
signalcnt:
STD_LOGIC_VECTOR(2DOWNTO0);
begin
PROCESS(CLK)IS
BEGIN
IFCLK'EVENTANDCLK='1'THEN
IFCNT="111"THEN
CNT<="000";
ELSE
CNT<=CNT+'1';
ENDIF;
ENDIF;
ENDPROCESS;
LEDW<=CNT;
PROCESS(CNT,num,temp)IS
BEGIN
CASECNTIS
WHEN"000"=>TEMP<=num(5);
WHEN"001"=>TEMP<=num(4);
WHEN"010"=>TEMP<=num(3);
WHEN"011"=>TEMP<=num
(2);
WHEN"100"=>TEMP<=num
(1);
WHEN"101"=>TEMP<=num(0);
--WHEN"110"=>TEMP<=num(6);
--WHEN"111"=>TEMP<=num(7);
WHENOTHERS=>TEMP<=0;
ENDCASE;
CASETEMPIS
WHEN0=>SEG7<="00111111";
WHEN1=>SEG7<="00000110";
WHEN2=>SEG7<="01011011";
WHEN3=>SEG7<="01001111";
WHEN4=>SEG7<="01100110";
WHEN5=>SEG7<="01101101";
WHEN6=>SEG7<="01111101";
WHEN7=>SEG7<="00000111";
WHEN8=>SEG7<="01111111";
WHEN9=>SEG7<="01101111";
WHENOTHERS=>SEG7<="00111111";
ENDCASE;
ENDPROCESS;
ENDARCHITECTUREART;
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEWORK.PAKG.ALL;
ENTITYTIMESIS
PORT(CLR:
INSTD_LOGIC;
CLK:
INSTD_LOGIC;
ENA:
INSTD_LOGIC;
LEDW:
OUTSTD_LOGIC_VECTOR(2DOWNTO0);
SEG7:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
ENDTIMES;
ARCHITECTUREARTOFTIMESIS
COMPONENTCLKGENPORT(CLK:
INSTD_LOGIC;
NEWCLK:
OUTSTD_LOGIC);
ENDCOMPONENT;
COMPONENTCNT10PORT(CLK:
INSTD_LOGIC;
CLR:
INSTD_LOGIC;
ENA:
INSTD_LOGIC;
CQ:
OUTDIGIT_T;
CARRY_OUT:
OUTSTD_LOGIC);
ENDCOMPONENT;
COMPONENTCNT6
PORT(CLK:
INSTD_LOGIC;
CLR:
INSTD_LOGIC;
ENA:
INSTD_LOGIC;
CQ:
OUTDIGIT_T;
CARRY_OUT:
OUTSTD_LOGIC);
ENDCOMPONENT;
COMPONENTdisp_scanIS
PORT(CLK:
INSTD_LOGIC;
num:
INDISP_T;
LEDW:
OUTSTD_LOGIC_VECTOR(2DOWNTO0);
SEG7:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
ENDCOMPONENTdisp_scan;
SIGNALNEWCLK1:
STD_LOGIC;
SIGNALCARRY1:
STD_LOGIC;
SIGNALCARRY2:
STD_LOGIC;
SIGNALCARRY3:
STD_LOGIC;
SIGNALCARRY4:
STD_LOGIC;
SIGNALCARRY5:
STD_LOGIC;
SIGNALDOUT:
DISP_T;
BEGIN
U0:
CLKGENPORTMAP(CLK=>CLK,NEWCLK=>NEWCLK1);
U1:
CNT10PORTMAP(CLK=>NEWCLK1,CLR=>CLR,ENA=>ENA,CQ=>DOUT(0),CARRY_OUT=>CARRY1);
U2:
CNT10PORTMAP(CLK=>CARRY1,CLR=>CLR,ENA=>ENA,CQ=>DOUT
(1),CARRY_OUT=>CARRY2);
U3:
CNT10PORTMAP(CLK=>CARRY2,CLR=>CLR,ENA=>ENA,CQ=>DOUT
(2),CARRY_OUT=>CARRY3);
U4:
CNT6PORTMAP(CLK=>CARRY3,CLR=>CLR,ENA=>ENA,CQ=>DOUT(3),CARRY_OUT=>CARRY4);
U5:
CNT10PORTMAP(CLK=>CARRY4,CLR=>CLR,ENA=>ENA,CQ=>DOUT(4),CARRY_OUT=>CARRY5);
U6:
CNT6PORTMAP(CLK=>CARRY5,CLR=>CLR,ENA=>ENA,CQ=>DOUT(5));
U7:
disp_scanPORTMAP(CLK,DOUT,LEDW,SEG7);
ENDART;
3、仿真波形
图4.3
4、芯片引脚锁定文件
图4.4
五、实验结果及总结
1、系统仿真情况
如图4.3
2、逻辑综合结果
如4.4
3、硬件验证情况
4、实验过程出现的问题及解决方法
实验未发现问题。