EDA数字秒表设计.docx
《EDA数字秒表设计.docx》由会员分享,可在线阅读,更多相关《EDA数字秒表设计.docx(15页珍藏版)》请在冰豆网上搜索。
EDA数字秒表设计
《EDA技术实用教程》
课程实习报告
题目:
数字秒表设计
专业:
电子信息工程
班级:
信息09-1
指导教师:
蔡靖
完成时间:
2011年11月11日
姓名:
黄凌伟(9)、李超逸(10)、李辉(11)、李培军(12)
内容摘要
应用VHDL语言设计数字系统,很多设计工作可以在计算机上完成,从而缩短了数字系统的开发时间。
我们尝试利用VHDL为开发工具设计数字秒表。
秒表的逻辑结构较简单,它主要由十进制计数器、六进制计数器、12500的分频器、数据选择器、和显示译码器等组成。
在整个秒表中最关键的是如何获得一个精确的100HZ计时脉冲,除此之外,整个秒表还需有一个启动信号和一个清零信号,以便秒表能随意停止及启动。
秒表有共有6个输出显示,分别为百分之一秒、十分之一秒、秒、十秒、分、十分,所以共有6个计数器与之相对应,6个计数器的输出全都为BCD码输出,这样便与同显示译码器连接。
开关设置秒表报警器,每10秒钟,蜂鸣器鸣响1声,发光二极管闪烁。
当计时达60分钟后,蜂鸣器鸣响10声。
关键词:
VHDL、数据选择器、计数器、显示器
一、系统组成框图……………………………………………………5
二、各模块原理及其程序……………………………………………5
1、六进制计数器……………………………………………………6
2、十进制计数器…………………………………………………6
3、蜂鸣器………………………………………………………7
4、译码器…………………………………………………………8
5、控制器…………………………………………………………9
三、系统仿真………………………………………………………10
1、六进制计数器…………………………………………………10
2、十进制计数器…………………………………………………10
3、蜂鸣器………………………………………………………10
4、译码器………………………………………………………10
5、控制器………………………………………………………10
四、心得体会……………………………………………………11
课程设计任务书
课题名称
数字秒表设计
完成时间
11.10
指导教师
蔡靖
学生姓名
黄凌伟、李超逸、李辉、李培军
班级
信息09-1
总体设计要求和技术要点
总体设计要求:
通过本课程的学习使学生掌握可编程器件、EDA开发系统软件、硬件描述语言和电子线路设计与技能训练等各方面知识;提高工程实践能力;学会应用EDA技术解决一些简单的电子设计问题。
技术要点:
(1)数字秒表的计时范围是0秒—59分59.99秒,显示的最长时间为59分59秒。
(2)数字秒表的计时精度是10ms。
(3)复位开关可以在任何情况下使用,即便在计时过程中,只要按一下复位开关,计时器就清零,并做好下次计时的准备。
(4)具有启/停开关,即按一下启/停开关,启动计时器开始计时,再按一下启/停开关则停止计时。
(5)有置位功能,置位数可调。
创新之处
◆给秒表设计定点报时,报时开关可以自己控制。
◆在秒表计时时在开发板上加了流水灯,看起来更加漂亮。
◆除了分钟之外我们还加了小时。
课程设计成果
1.与设计内容对应的软件程序
2.课程设计报告书
3.成果使用说明书
4.设计工作量要求
设计过程
一.系统组成框图
二.各模块及的原理及其程序
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYMIAOBIAOIS
PORT(CLK,RST,EN,LOAD,LOADN,SW:
INSTD_LOGIC;
DATA1:
INSTD_LOGIC;DATE1:
INSTD_LOGIC;
DATA2:
INSTD_LOGIC;DATE2:
INSTD_LOGIC;
DATA3:
INSTD_LOGIC;DATE3:
INSTD_LOGIC;
DATA4:
INSTD_LOGIC;DATE4:
INSTD_LOGIC;
DATA5:
INSTD_LOGIC;DATE5:
INSTD_LOGIC;
DATE6:
INSTD_LOGIC;NAO:
INSTD_LOGIC;
DOUT1:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
DOUT2:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
DOUT3:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
DOUT4:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
DOUT5:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
DOUT6:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
DOUT7:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
DOUT8:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
zout:
OUTSTD_LOGIC_VECTOR(19DOWNTO0);
COUT:
OUTSTD_LOGIC
);
ENDMIAOBIAO;
ARCHITECTUREbehavOFMIAOBIAOIS
SIGNALHZ:
INTEGERRANGE0TO262143;
SIGNALHZ1:
INTEGERRANGE0TO14000000;
SIGNALX1:
INTEGERRANGE0TO9;
SIGNALX2:
INTEGERRANGE0TO9;
SIGNALSEC1:
INTEGERRANGE0TO5;
SIGNALSEC2:
INTEGERRANGE0TO9;
SIGNALMIN1:
INTEGERRANGE0TO5;
SIGNALMIN2:
INTEGERRANGE0TO9;
SIGNALHOU1:
INTEGERRANGE0TO2;
SIGNALHOU2:
INTEGERRANGE0TO9;
BEGIN
PROCESS(CLK,RST,EN,LOAD,LOADN,DATA1,DATA2,DATA3,DATA4,DATA5,
DATE1,DATE2,DATE3,DATE4,DATE5,DATE6,NAO)
VARIABLEX:
INTEGERRANGE0TO99;
VARIABLESEC:
INTEGERRANGE0TO59;
VARIABLEMIN:
INTEGERRANGE0TO59;
VARIABLEHOU:
INTEGERRANGE0TO23;
VARIABLEMINN:
INTEGERRANGE0TO59;
VARIABLEHOUN:
INTEGERRANGE0TO23;
VARIABLEp:
STD_LOGIC_VECTOR(19DOWNTO0);
VARIABLEJIO:
STD_LOGIC;
BEGIN
IFRST='0'THEN
MIN:
=0;
SEC:
=0;
X:
=0;
HOU:
=0;
X1<=X/10;
X2<=XREM10;
SEC1<=SEC/10;
SEC2<=SECREM10;
MIN1<=MIN/10;
MIN2<=MINREM10;
HOU1<=HOU/10;
HOU2<=HOUREM10;
zout<="00000000000000000000";
p:
="00000000000000000000";
ELSIFNAO='0'THEN
X:
=0;
SEC:
=0;
X1<=X/10;
X2<=XREM10;
SEC1<=SEC/10;
SEC2<=SECREM10;
MIN1<=MINN/10;
MIN2<=MINNREM10;
HOU1<=HOUN/10;
HOU2<=HOUNREM10;
ELSIFLOADN='0'THEN
zout<="00000000000000000000";
X:
=0;
SEC:
=0;
MINN:
=0;
HOUN:
=0;
IF(DATA1='1')THENHOUN:
=HOUN+1;ENDIF;
IF(DATA2='1')THENHOUN:
=HOUN+2;ENDIF;
IF(DATA3='1')THENHOUN:
=HOUN+4;ENDIF;
IF(DATA4='1')THENHOUN:
=HOUN+8;ENDIF;
IF(DATA5='1')THENHOUN:
=HOUN+16;ENDIF;
IFHOUN>23THENHOUN:
=0;ENDIF;
IF(DATE1='1')THENMINN:
=MINN+1;ENDIF;
IF(DATE2='1')THENMINN:
=MINN+2;ENDIF;
IF(DATE3='1')THENMINN:
=MINN+4;ENDIF;
IF(DATE4='1')THENMINN:
=MINN+8;ENDIF;
IF(DATE5='1')THENMINN:
=MINN+16;ENDIF;
IF(DATE6='1')THENMINN:
=MINN+32;ENDIF;
IFMINN>59THENMINN:
=0;ENDIF;
X1<=X/10;
X2<=XREM10;
SEC1<=SEC/10;
SEC2<=SECREM10;
MIN1<=MINN/10;
MIN2<=MINNREM10;
HOU1<=HOUN/10;
HOU2<=HOUNREM10;
ELSIFLOAD='0'THEN
MIN:
=0;
HOU:
=0;
IF(DATA1='1')THENHOU:
=HOU+1;ENDIF;
IF(DATA2='1')THENHOU:
=HOU+2;ENDIF;
IF(DATA3='1')THENHOU:
=HOU+4;ENDIF;
IF(DATA4='1')THENHOU:
=HOU+8;ENDIF;
IF(DATA5='1')THENHOU:
=HOU+16;ENDIF;
IFHOU>23THENHOU:
=0;ENDIF;
IF(DATE1='1')THENMIN:
=MIN+1;ENDIF;
IF(DATE2='1')THENMIN:
=MIN+2;ENDIF;
IF(DATE3='1')THENMIN:
=MIN+4;ENDIF;
IF(DATE4='1')THENMIN:
=MIN+8;ENDIF;
IF(DATE5='1')THENMIN:
=MIN+16;ENDIF;
IF(DATE6='1')THENMIN:
=MIN+32;ENDIF;
IFMIN>59THENMIN:
=0;ENDIF;
X1<=X/10;
X2<=XREM10;
SEC1<=SEC/10;
SEC2<=SECREM10;
MIN1<=MIN/10;
MIN2<=MINREM10;
HOU1<=HOU/10;
HOU2<=HOUREM10;
ELSIFCLK'EVENTANDCLK='1'THEN
HZ<=HZ+1;IFHZ=262143THENHZ<=0;
IFEN='1'THEN
ifP<595999thenP:
=P+1;
elseP:
=(others=>'0');
endif;
zout<=P;
IFX<99THENX:
=X+1;
ELSIFX=99THENX:
=0;
IFSEC<59THENSEC:
=SEC+1;
ELSIFSEC=59THENSEC:
=0;
IFMIN<59THENMIN:
=MIN+1;
ELSIFMIN=59THENHOU:
=HOU+1;
ELSIFHOU>23THENMIN:
=0;
SEC:
=0;
X:
=0;
ENDIF;
ENDIF;
ENDIF;
ENDIF;
X1<=X/10;
X2<=XREM10;
SEC1<=SEC/10;
SEC2<=SECREM10;
MIN1<=MIN/10;
MIN2<=MINREM10;
HOU1<=HOU/10;
HOU2<=HOUREM10;
ENDIF;
ENDIF;
IFCLK'EVENTANDCLK='1'THEN
HZ1<=HZ1+1;IFHZ1=14000000THENJIO:
=NOTJIO;
ENDIF;ENDIF;
IFJIO='1'THEN
IFSW='1'ANDHOU=HOUNANDMIN=MINNTHENCOUT<='1';
ELSECOUT<='0';ENDIF;
ELSECOUT<='0';
ENDIF;
ENDPROCESS;
WITHHOU1SELECT
DOUT1<="11000000"WHEN0,
"11111001"WHEN1,
"10100100"WHEN2,
"11111111"WHENOTHERS;
WITHHOU2SELECT
DOUT2<="11000000"WHEN0,
"11111001"WHEN1,
"10100100"WHEN2,
"10110000"WHEN3,
"10011001"WHEN4,
"10010010"WHEN5,
"10000010"WHEN6,
"11111000"WHEN7,
"10000000"WHEN8,
"10010000"WHEN9,
"11111111"WHENOTHERS;
WITHMIN1SELECT
DOUT8<="11000000"WHEN0,
"11111001"WHEN1,
"10100100"WHEN2,
"10110000"WHEN3,
"10011001"WHEN4,
"10010010"WHEN5,
"11111111"WHENOTHERS;
WITHMIN2SELECT
DOUT7<="11000000"WHEN0,
"11111001"WHEN1,
"10100100"WHEN2,
"10110000"WHEN3,
"10011001"WHEN4,
"10010010"WHEN5,
"10000010"WHEN6,
"11111000"WHEN7,
"10000000"WHEN8,
"10010000"WHEN9,
"11111111"WHENOTHERS;
WITHSEC1SELECT
DOUT6<="11000000"WHEN0,
"11111001"WHEN1,
"10100100"WHEN2,
"10110000"WHEN3,
"10011001"WHEN4,
"10010010"WHEN5,
"11111111"WHENOTHERS;
WITHSEC2SELECT
DOUT5<="11000000"WHEN0,
"11111001"WHEN1,
"10100100"WHEN2,
"10110000"WHEN3,
"10011001"WHEN4,
"10010010"WHEN5,
"10000010"WHEN6,
"11111000"WHEN7,
"10000000"WHEN8,
"10010000"WHEN9,
"11111111"WHENOTHERS;
WITHX1SELECT
DOUT4<="11000000"WHEN0,
"11111001"WHEN1,
"10100100"WHEN2,
"10110000"WHEN3,
"10011001"WHEN4,
"10010010"WHEN5,
"10000010"WHEN6,
"11111000"WHEN7,
"10000000"WHEN8,
"10010000"WHEN9,
"11111111"WHENOTHERS;
WITHX2SELECT
DOUT3<="11000000"WHEN0,
"11111001"WHEN1,
"10100100"WHEN2,
"10110000"WHEN3,
"10011001"WHEN4,
"10010010"WHEN5,
"10000010"WHEN6,
"11111000"WHEN7,
"10000000"WHEN8,
"10010000"WHEN9,
"11111111"WHENOTHERS;
ENDbehav;
三.系统仿真
(1)六进制
(2)十进制
四.心得体会
开始做设计时总是会犯一些错误,只有经过不停的改错不停的编译才能得到正确的程序。
在编程时,我充分使用了结构化的思想,这样程序检查起来也比较方便,调试时也给了我很大方便,只要一个模块一个模块的进行调就可以了,充分体现了结构化编程的优势。
在设计中要求我要有耐心和毅力,还要细心,稍有不慎,一个小小的错误就会导致结果的不正确,而对错误的检查要求我要有足够的耐心,通过这次设计和设计中遇到的问题,也积累了一定的经验,对以后从事集成电路设计工作会有一定的帮助。
在应用VHDL的过程中让我真正领会到了其并行运行与其他软件顺序执行的差别及其在电路设计上的优越性。
用VHDL硬件描述语言的形式来进行数字系统的设计方便灵活,利用EDA软件进行编译优化仿真极大地减少了电路设计时间和可能发生的错误,降低了开发成本,这种设计方法在数字系统设计中发挥越来越重要的作用。