VHDL数字秒表设计.docx

上传人:b****2 文档编号:3533586 上传时间:2023-05-06 格式:DOCX 页数:11 大小:305.39KB
下载 相关 举报
VHDL数字秒表设计.docx_第1页
第1页 / 共11页
VHDL数字秒表设计.docx_第2页
第2页 / 共11页
VHDL数字秒表设计.docx_第3页
第3页 / 共11页
VHDL数字秒表设计.docx_第4页
第4页 / 共11页
VHDL数字秒表设计.docx_第5页
第5页 / 共11页
VHDL数字秒表设计.docx_第6页
第6页 / 共11页
VHDL数字秒表设计.docx_第7页
第7页 / 共11页
VHDL数字秒表设计.docx_第8页
第8页 / 共11页
VHDL数字秒表设计.docx_第9页
第9页 / 共11页
VHDL数字秒表设计.docx_第10页
第10页 / 共11页
VHDL数字秒表设计.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

VHDL数字秒表设计.docx

《VHDL数字秒表设计.docx》由会员分享,可在线阅读,更多相关《VHDL数字秒表设计.docx(11页珍藏版)》请在冰点文库上搜索。

VHDL数字秒表设计.docx

VHDL数字秒表设计

 

课程设计(综合实验)报告

(2014--2015年度第1学期)

 

名称:

VHDL语言与数字系统设计

题目:

电子秒表

院系:

班级:

学号:

学生:

指导教师:

晓梅

设计周数:

2周

成绩:

日期:

2015年1月23日

一、课程设计(综合实验)的目的与要求

1.目的

1.1学习使用VHDL语言,以及EDA芯片的下载仿真。

1.2掌握较为复杂的逻辑设计和调试。

1.3学习用原理图+VHDL语言设计逻辑电路。

1.4掌握Quartues软件的使用方法。

2.实验要求

2.1设计一块电子秒表,能够精确反映计时时间。

2.2秒表计时的最大围为1小时,精度为0.01秒,秒表可得到计时时间的分、秒、0.1秒等量度。

2.3当复位清零有效时,秒表清零并做好计时准备。

2.4设置秒表的启动/停止开关

二、设计(实验)正文

1设计过程

1.1十进制计数器

十进制计数器就是输入一个时钟脉冲计一个数,技术当前值通过4位输出端口输出。

当计数到九且再来一个脉冲时计数输出清零,且进位端给出高电平。

再来脉冲继续计数,进位端清零。

计数只有在使能端为1时有效,否则保持。

部分源程序及说明:

BEGIN--当clk,clr,ena信号发生变化时,启动计数功能

IFclr='1'THEN--复位清零信号有效

tmp<="0000";--任何时刻都将计数器清零

ELSIFclk'EVENTANDclk='1'THEN--时钟上升沿

IFena='1'THEN--允许计数

IFtmp="1001"THEN--计数器满

tmp<="0000";

ELSE

tmp<=tmp+'1';--计数器加1

eNDIF;

ENDIF;

ENDIF;

ENDPROCESS;

PROCESS(tmp)--当计数器发生变化时,启动输出功能

BEGIN

IFtmp="0000"THEN--计数器状态为0时

co<='1';--进位输出信号有效

ELSE

co<='0';--否则,为0

ENDIF;

ENDPROCESS;

q<=tmp;--输出计数器的值

ENDrtl;

1.2六进制计数器

六进制计数器就是输入一个时钟脉冲计一个数,技术当前值通过4位输出端口输出。

当计数到六且再来一个脉冲时计数输出清零,且进位端给出高电平。

再来脉冲继续计数,进位端清零。

计数只有在使能端为1时有效,否则保持。

部分源程序及说明:

PROCESS(clk,clr,ena)

BEGIN

IFclr='1'THEN

tmp<="0000";

ELSIFclk'EVENTANDclk='1'THEN

IFena='1'THEN

IFtmp="0101"THEN--计数器到6,计数器满

tmp<="0000";

ELSE

tmp<=tmp+'1';

ENDIF;

ENDIF;

ENDIF;

ENDPROCESS;

1.3顶层模块设计

将十进制计数模块与六进制模块通过例化,级联在一起,得到电子秒表

例化程序说明:

BEGIN--原件例化语句,通过计数器的级联实现数字秒表

U1:

cnt10PORTMAP(clk0,clr0,en,dataout(3downto0),co1);

U2:

cnt10PORTMAP(co1,clr0,en,dataout(7downto4),co2);

U3:

cnt10PORTMAP(co2,clr0,en,dataout(11downto8),co3);

U4:

cnt6PORTMAP(co3,clr0,en,dataout(15downto12),co4);

U5:

cnt10PORTMAP(co4,clr0,en,dataout(19downto16),co5);

U6:

cnt6PORTMAP(co5,clr0,en,dataout(23downto20));

ENDrtl;

2.仿真结果

2.1十进制计数器仿真结果

2.2六进制计数器仿真结果

2.3顶层模块仿真结果

2.4启动/停止与清零功能

说明:

在8.0ns到9.5ns时,清零信号为高电平1有效,清零功能触发,秒表清零,在15ns到18ns时,使能信号为低电平0,此时不再继续计数,即暂停功能触发。

三、课程设计(综合实验)总结或结论

1.结论:

这次课程设计是要求用EDA技术中的QuartusⅡ6.0作为开发工具,设计一个简单的电子秒表,秒表的时钟信号源可由时钟脉冲得到。

整个设计分为3个主要模块,十进制计数模块、六进制计数模块和顶层模块。

该数字式秒表具有清零功能,能够在计时过程中随时停止计时,恢复到初始状态。

且该秒表还有启动/停止功能。

实验证明该秒表工作正常,基本上已达到了预期的设计要求。

2.体会及感想、收获:

开始做设计时总是会犯一些错误,参考书上的例题,问老师和同学,慢慢的对编程熟悉了一些。

在不停的改错不停的编译下得到了正确的程序。

在设计中要求我们要有耐心和毅力,还要细心,稍有不慎,一个小小的错误就会导致结果的不正确,比如一个分号,或者一个冒号,再或者赋值时的形式,而对错误的检查要求我要有足够的耐心。

通过这次设计和设计中遇到的问题,也积累了一定的经验,对以后从事集成电路设计工作会有一定的帮助。

现在,又掌握了一个新的技能,虽然还不熟练,但后来会好起来的,我相信。

四、参考文献

[1]欲晓方强黄宛宁《EDA技术与VHDL电路开发应用实践》电子工业2009年4月第一版.

[2]付永庆《VHDL语言及其应用》高等教育2005年5月第一版

[3]潘松黄继业《EDA技术与VHDL》清华大学2013年4月第四版

附录(设计流程图、程序、表格、数据等)

1设计过程

1.1十进制计数器

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYcnt10IS

PORT(

clk:

INSTD_LOGIC;

clr:

INSTD_LOGIC;

ena:

INSTD_LOGIC;

q:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);

co:

OUTSTD_LOGIC

);

ENDcnt10;

ARCHITECTURErtlOFcnt10IS

SIGNALtmp:

STD_LOGIC_VECTOR(3DOWNTO0);

BEGIN

PROCESS(clk,clr,ena)

BEGIN

IFclr='1'THEN

tmp<="0000";

ELSIFclk'EVENTANDclk='1'THEN

IFena='1'THEN

IFtmp="1001"THEN

tmp<="0000";

ELSE

tmp<=tmp+'1';

eNDIF;

ENDIF;

ENDIF;

ENDPROCESS;

PROCESS(tmp)

BEGIN

IFtmp="0000"THEN

co<='1';

ELSE

co<='0';

ENDIF;

ENDPROCESS;

q<=tmp;

ENDrtl;

1.2六进制计数器

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYcnt6IS

PORT(

clk:

INSTD_LOGIC;

clr:

INSTD_LOGIC;

ena:

INSTD_LOGIC;

q:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);

co:

OUTSTD_LOGIC

);

ENDcnt6;

ARCHITECTURErtlOFcnt6IS

SIGNALtmp:

STD_LOGIC_VECTOR(3DOWNTO0);

BEGIN

PROCESS(clk,clr,ena)

BEGIN

IFclr='1'THEN

tmp<="0000";

ELSIFclk'EVENTANDclk='1'THEN

IFena='1'THEN

IFtmp="0101"THEN

tmp<="0000";

ELSE

tmp<=tmp+'1';

ENDIF;

ENDIF;

ENDIF;

ENDPROCESS;

PROCESS(tmp)

BEGIN

IFtmp="0000"THEN

co<='1';

ELSE

co<='0';

ENDIF;

ENDPROCESS;

q<=tmp;

ENDrtl;

1.3顶层模块

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYstopwatchIS

PORT(

clk0:

INSTD_LOGIC;

clr0:

INSTD_LOGIC;

en:

INSTD_LOGIC;

dataout1:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);

dataout2:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);

dataout3:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);

dataout4:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);

co:

OUTSTD_LOGIC

);

ENDstopwatch;

ARCHITECTURErtlOFstopwatchIS

COMPONENTcnt6IS

PORT(

clk:

INSTD_LOGIC;

clr:

INSTD_LOGIC;

ena:

INSTD_LOGIC;

q:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);

co:

OUTSTD_LOGIC

);

ENDcomponentcnt6;

COMPONENTcnt10IS

PORT(

clk:

INSTD_LOGIC;

clr:

INSTD_LOGIC;

ena:

INSTD_LOGIC;

q:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);

co:

OUTSTD_LOGIC

);

ENDCOMPONENTcnt10;

SIGNALco1:

STD_LOGIC;

SIGNALco2:

STD_LOGIC;

SIGNALco3:

STD_LOGIC;

BEGIN

U1:

cnt10PORTMAP(clk0,clr0,en,dataout1(3downto0),co1);

U2:

cnt10PORTMAP(co1,clr0,en,dataout2(3downto0),co2);

U3:

cnt10PORTMAP(co2,clr0,en,dataout3(3downto0),co3);

U4:

cnt6PORTMAP(co3,clr0,en,dataout4(3downto0));

ENDrtl;

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

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2