EDA课程实验四.docx

上传人:b****6 文档编号:5735678 上传时间:2022-12-31 格式:DOCX 页数:21 大小:669.75KB
下载 相关 举报
EDA课程实验四.docx_第1页
第1页 / 共21页
EDA课程实验四.docx_第2页
第2页 / 共21页
EDA课程实验四.docx_第3页
第3页 / 共21页
EDA课程实验四.docx_第4页
第4页 / 共21页
EDA课程实验四.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

EDA课程实验四.docx

《EDA课程实验四.docx》由会员分享,可在线阅读,更多相关《EDA课程实验四.docx(21页珍藏版)》请在冰豆网上搜索。

EDA课程实验四.docx

EDA课程实验四

 

 

 

班  级:

11电子

(1)

姓  名:

朱杰

学  号:

20110310161

指导教师:

秦玉龙

开课时间:

2013至2014学年第1学期

实验名称

数字秒表的设计

实验时间

2013,11,29

姓名

朱杰

实验成绩

一、实验目的

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程序,并对其进行编译和仿真,初步验证设计的正确性。

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小时的秒表,首先需要获得一个比较精确的计时基准信号,这里是周期为1/100s的计时脉冲。

其次,计数器需设置清零信号和计数使能信号,以便控制秒表的清零和计时起停。

图1 秒表电路逻辑图

如图1所示,数字秒表可由1个分频器、1/100秒计数器(即十进制计数器U1)、1/10秒计数器(即十进制计数器U2)、秒计数器(即十进制计数器U3和六进制计数器U4组成的60进制计数器)、分计数器(即十进制计数器U5和六进制计数器U6组成的60进制计数器)组成。

每个计数器的4位输出经段译码后送数码管显示,数码显示采用动态扫描方式。

其中DOUT[3..0]为1/100秒计数值、DOUT[7..4]为1/10秒计数值、DOUT[11..8]和DOUT[15..12]为秒计数值的个位和十位、DOUT[19..16]和DOUT[23..20]为分计数值的该位和十位。

2、VHDL程序

分频器设计

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;

十进制计数器的设计

VHDL源程序:

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(0);

WHEN"001"=>TEMP<=num

(1);

WHEN"010"=>TEMP<=num

(2);

WHEN"011"=>TEMP<=num(3);

WHEN"100"=>TEMP<=num(4);

WHEN"101"=>TEMP<=num(5);

--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、芯片引脚锁定文件

五、实验结果及总结

1、系统仿真情况

分频器设计

十进制计数器的设计

进制计数器的设计

数码管动态扫描显示电路设计

 

数字秒表的顶层设计

2、逻辑综合结果

分频器设计

十进制计数器的设计

 

进制计数器的设计

 

数码管动态扫描显示电路设计

 

数字秒表的顶层设计

3、硬件验证情况

清零:

计数;

4、实验过程出现的问题及解决方法

这次实验做的比较顺利,基本上是没有错误的。

但是细细想来,我发现从实验课开始到现在,我都没有仔细看过代码。

就像这次,刚开始的时候就出现显示倒了。

后来修改了dis_scan里面的显示顺序就能够正常显示。

本来还以为是times里面出问题,怎么修改也不出结果。

现在我明白,数码管显示问题,首先从仪器看是否有问题,然后看dis_scan,再然后就是其他关联的代码。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1