数字闹钟的设计.docx

上传人:b****8 文档编号:9657547 上传时间:2023-02-05 格式:DOCX 页数:36 大小:662.81KB
下载 相关 举报
数字闹钟的设计.docx_第1页
第1页 / 共36页
数字闹钟的设计.docx_第2页
第2页 / 共36页
数字闹钟的设计.docx_第3页
第3页 / 共36页
数字闹钟的设计.docx_第4页
第4页 / 共36页
数字闹钟的设计.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

数字闹钟的设计.docx

《数字闹钟的设计.docx》由会员分享,可在线阅读,更多相关《数字闹钟的设计.docx(36页珍藏版)》请在冰豆网上搜索。

数字闹钟的设计.docx

数字闹钟的设计

基于VHDL的数字闹钟设计

摘要

随着EDA技术的发展和应用领域的扩大与深入,EDA技术在电子信息、通信、自动控制及计算机应用领域的重要性日益突出。

EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。

本设计介绍了基于VHDL硬件描述语言设计的多功能数字闹钟的思路和技巧,并在QuartusII开发环境中编译和仿真所设计的程序,并逐一调试验证程序的运行状况。

仿真和验证的结果表明,该设计方法切实可行,该数字闹钟可以实现调时定时闹钟功能具有一定的实际应用性。

关键词:

VHDL;FPGA;闹钟;QuartusII

 

DigitalalarmclockdesignbaseonVHDL

Abstract

TheEDA(ElectronicDesignAutomation)technologyisexperiencingahugedevelopmentanditwidelyspreadsinitsapplicationfield,thusemphasizesitsimportanceinelectronicmessage,communication,autocontrolandcomputerapplicationgradually.EDAtechnologyusecomputerastool,designerisenabledtodesignfilesontheEDAplatformwiththehelpofHDL(HardwareDescriptionLanguage).Thecomputerautomaticallyfinishestaskslikelogiccompiling,simplication,division,colligation,optimization,distribution,wiringandsimulationafterwards,andfinallymanagesthematch,compiling,mappinganddownloadtoatargetchip.ThisprojectbasesontheperspectiveandtechniqueofmultifunctionaldigitalalarmclockofVHDL(Very-High-SpeedIntegratedCircuitHardwareDescriptionLanguage).AndthencompilesandsimulatestheprogramitdesignedintheQuartusIIenvironment.Inaddition,itadjustsandteststheprogramcondition.Theresultsofsimulationandtestimplythepracticabilityofthisprojectandtheapplicabilityofthetimingfunctionofdigitalalarmclock.

Keywords:

VHDL,FPGA,Alarmclock,QuartusII

 

1绪论

1.1选题背景

2设计目的

3设计要求

4设计原理:

4.1功能描述

4.2基本原理

5设计内容:

5.1分频模块

5.2计数器模块

5.2.1秒计数器模块

5.2.2分计数器模块

5.2.3时计数器模块

5.3选择模块

5.4闹钟模块

5.5闹钟功能模块

5.6显示

6数字闹钟原理方框图

7调试步骤

8结论

参考文献

附录A

致谢

 

1绪论

1.1选题背景

21新世纪,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。

时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。

忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。

但是,一旦重要事情,一时的耽误可能酿成大祸。

例如,许多火灾都是由于人们一时忘记了关闭煤气或是忘记充电时间。

而数字闹钟能随时提醒这些容易忘记时间的人。

钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。

诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、定时启闭电路、定时开关烘箱、通断动力设备,甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。

因此,研究数字钟及扩大其应用,有着非常现实的意义。

随着EDA技术的发展和应用领域的扩大与深入,EDA技术在电子信息、通信、自动控制及计算机应用领域的重要性日益突出。

EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。

本文介绍了基于VHDL硬件描述语言设计的多功能数字闹钟的思路和技巧。

在QuartusII开发环境中编译和仿真了所设计的程序,并逐一调试验证程序的运行状况。

仿真和验证的结果表明,该设计方法切实可行,该数字闹钟可以实现调时定时闹钟功能具有一定的实际应用性。

 

2设计目的

1.熟练利用VHDL硬件描述语言进行数字系统设计;

2.掌握数字系统的设计方法——自顶向下的设计思想;

3.掌握QuartusII开发软件的使用方法;

4.掌握FPGA/CPLD芯片的工作原理;

5.根据数字闹钟的功能要求设计一个数字闹钟;

6.掌握闹钟系统的原理。

3设计要求

设计一个简单的数字闹钟,它的具体功能为:

(1)计时功能:

这是本计时器设计的基本功能,可进行时、分、秒计时,并显示。

(2)清零功能:

按下此键后计数器清零,数码管显示“0”;松开此键数码管开始显“00

-00-00”,并且以此开始重新计时;

(3)调时调分功能:

当需要校时,可通过实验箱上的按键控制;

(4)闹钟开/关功能:

为避免闹钟天天响,设计了闹钟开启/关闭功能;

(5)闹钟功能:

开启闹钟功能后,通过闹钟键设置好铃响时间,时间到铃声响起,如果此时按下停止键,闹钟马上停止;如果按下忽略键,闹钟停止,并会在3分钟后重新响起,循环5次;什么都不按,闹钟响一分钟后停止,隔天再响,直到按下开启键关闭闹钟。

4设计原理

4.1功能描述

数字钟是一计时的工具,有着广泛的用途。

本实验的数字钟要求有三个功能按钮:

一个是清零按钮reset,当按下此按钮时,数字钟显示有位都清零.二是调分钟的按钮setmin,当按下此按钮时分钟会以1HZ的频率速度进行调时,而且在调分钟时秒钟会暂停不动;三是调小时的按钮sethour,当按下此按钮时时钟会以1HZ的频率速度进行调时,在调小时时分钟会暂停不动,但秒钟是正常记时的。

另外还有一个闹钟模块,在闹钟模块中,先按下闹钟开启键,按下调时或调分键时,数码显示管显示所调闹钟的时间,并进行调时或调分。

当两个键都未按下时,数码管显示数字钟的时间。

当设定的闹钟时间和数字钟的时间一致时,铃声响起。

在铃声响起时,按下PASS键,铃声停止响起,三分钟后闹钟再次响起,如此循环5次;按下STOP键时,铃声停止工作;什么都不按,铃声响起一分钟后停止,隔天再响,直到按下闹钟开/关键。

其余时间喇叭不叫。

4.2基本原理

在本实验中用到的主要元件有计数器,分频器,报时器,选择器和译码器等。

控制逻辑主要是用来实现计数和清零。

基本方框图如图4.1:

选择输出模块

clk

Sec[6..0]

Min[6..0]

Hour[5..0]

分频模块

Secon模块

reset

Minute模块

reset

Hour模块

reset

闹钟模块

sp2

clk

译码输出模块

闹钟功能模块sp2

图4.1数字闹钟原理框图

 

数字闹钟外观草图如图4.2所示:

闹钟按键

数字钟按键

清零

调时

ec

d

a

fb

g

ec

d

afb

g

ec

d

a

fb

g

ec

d

a

fb

g

ec

d

a

fb

g

ec

d

调分

停止

忽略

调时

调分

开启

图4.2数字闹钟外观草图

5设计内容

5.1分频模块

此模块定义一个全局时钟,用频率为6MHz的信号源经分频从clk进入模块,经分频后由clk6输出,得到一个1Hz的时钟脉冲,用于驱动数字钟工作。

分频模块和波形仿真如下图5.1(a)和5.1(b)所示:

图5.1(a)分频模块

 

图5.1(b)分频模块波形仿真图

分频模块在计数器计数到2999999的时候再来一个高电平,计数器加1,输出口clk6翻转,由低电平翻转成高电平,但仿真只能看到1us的情况,所以仿真未能看到其翻转,但是由图5.1(b)可知,在500ms前为低电平,在500ms时翻转为高电平,可判定该模块可行。

5.2计数器模块

此模块包括秒计数器、分计数器、时计数器以及功能按键的设计。

程序说明:

1.由分频模块产生1Hz的时钟信号,输入计数60的秒计数器模块电路,等计数至60的瞬间,进位至计数60的分计数器模块电路加1,同时秒计数器模块电路也清除为0再重新计秒。

2.分计数器模块电路和时计数器模块电路功能基本相似。

时计数器模块电路计数为24,在计数至23的时,再来一个高电平,计数器模块全部清0,再重新计数。

3.三组计数电路中的计分和计时数据传给闹钟模块,通过闹钟模块再和计秒数据一起传给位选模块,位选模块产生一组输出信号,而控制这个输出的信号为SEL[2..0]。

4.由于取得的信号不论是时、分、秒,都将以十进制表示,所以先将这个十进制表示的时、分、秒转换成两个数位的BCD码。

5.2.1秒计数器模块

秒计数模块和秒计数模块的波形仿真如下图5.2.1(a)和5.2.1(b)所示:

图5.2.1(a)秒计数模块

图5.2.1(b)秒计数模块波形仿真图

模块功能介绍:

clk是时钟型号输入端;reset是清零键,低电平有效;setmin是分钟调时按键,高电平有效;enmin是进位输出端;daout[6..0]是显示输出端,连接位选模块,再经显示模块译码后输出显示在七段码上。

从图5.2.1(b)可以看出,当按下reset键时,计数器清零,重新计数;按下setmin键时,daout[6..0]是显示输出端输出的信号不变,同时enmin进位输出端输出与时钟信号周期相同的脉冲信号,进入分钟计数模块,驱动分钟模块工作;当计数器计数到59时,再来一个脉冲模块清零,并且重新计数。

由此可以判定,该模块能实现全部预想功能,程序编写正确。

5.2.2分计数器模块

分计数模块和分计数模块的波形仿真如下图5.2.2(a)和5.2.2(b)所示:

图5.2.2(a)分计数模块

图5.2.2(b)分计数模块波形仿真图

模块功能介绍:

clk是时钟信号输入端;clk1是秒进位信号输入端,秒钟算到60时发出一个进位脉冲,驱动分钟计数模块加1;reset是清零键,与秒钟计数模块的清零键是同一个键。

sethour是时钟调时按键,高电平有效;enhour是进位输出端,功能与秒钟计数模块的相同;daout[6..0]是显示输出端,连接闹钟模块,再连接位选模块,经显示模块译码后输出显示在七段码上。

从图5.2.2(b)可以看出,clk1输入秒钟模块的进位信号,daout[6..0]输出端输出分钟计数信号。

当按下reset时daout[6..0]输出端清零,再次重新计数。

按下sethour时,enhour输出频率与时钟信号相同的脉冲,用于使时计数模块计数增加,达到调时的目的。

当分计数器计到60时,enhour输出一个高电平,分计数器重新计时,同时时计数器加1。

由此可以判定,该模块能实现全部预想功能,程序编写正确。

5.2.3时计数器

时计数模块和时计数模块的波形仿真如下图5.2.3(a)和5.2.3(b)所示:

图5.2.3(a)时计数模块

图5.2.3(b)时计数模块波形仿真图

模块功能介绍:

clk是进位信号,有分钟模块输出;resets是清零键;daout[5..0]是显示输出端,连接闹钟模块,再连接位选模块,经显示模块译码后输出显示在七段码上。

由图5.2.3(b)时计数模块波形仿真图可以看出,当按下resets清零键时,daout[5..0]是显示输出端清零并且重新计数。

此可以判定,该模块能实现全部预想功能,程序编写正确。

5.3选择器模块

选择器模块和选择器模块的波形仿真如下图5.3(a)和5.3(b)所示:

图5.3(a)选择器模块

图5.3(b)选择器模块波形仿真图

模块功能介绍:

clk电源信号输入端,输入的是分频前得频率为6MHz的信号,选择模块工作频率为6MHz;reset是清零键;低电平有效;sec[6..0]、min[6..0]、hour[5..0]是分别从秒钟计数模块、分钟计数模块、时钟计数模块引入的待显示的信号:

SEL[5..0]=011111时输出sec[3..0];

SEL[5..0]101111时输出0和sec[6..4];

SEL[5..0]=110111时输出min[3..0];

SEL[5..0]=111011时输出0和min[6..4];

SEL[5..0]=111101时输出hour[3..0];

SEL[5..0]=111110时输出00和hour[5..4];

SEL[5..0]为其他数字,则显示符号“-”。

从图5.3(b)可以看出,当SEL[5..0]=011111时,daout[3..0]输出为0011,与sec[3..0]输出的相同。

此可以判定,该模块能实现全部预想功能,程序编写正确。

5.4闹钟模块

闹钟模块和闹钟模块的波形仿真如下图5.4(a)和5.4(b)所示:

图5.4(a)闹钟模块

5.4(b)闹钟模块的波形仿真图

模块功能介绍:

clk输入1Hz的时钟信号,setmin1和sethour1是调分和调时键,低电平有效;dain和dainl是分钟信号和时钟信号输入;sp2是闹钟信号输出;doaut和doautl是分钟信号和时钟信号输出。

从仿真波形图可以看出,按下setmin1和sethour1设置好闹铃时间后,到特定时间,sp2输出高电平。

此可以判定,该模块能实现全部预想功能,程序编写正确。

5.5闹钟功能模块

闹钟功能模块和闹钟功能模块的波形仿真如下图5.5(a)和5.5(b)、5.5(c)所示:

图5.5(a)闹钟功能模块

图5.5(b)闹钟功能模块的波形仿真图(按下pass)

图5.5(c)闹钟功能模块的波形仿真图(按下stop)

模块功能介绍:

clk是时钟信号,工作频率6MHz;sp2是从闹钟模块输出的用于驱动闹钟功能模块的信号。

开启闹钟(enable=1),当sp2输入为高电平,sp输出也为高电平。

当按下stop时,铃响停止;当按下pass时,铃响停止,并且再3分钟后会再次响起,如此循环5次后铃声不会再响起。

如果什么都不按,闹钟响一分钟后停止,隔天再响,直到按下enable。

从仿真波形图看出,按下stop或pass后,sp由高电平变为低电平。

此可以判定,该模块能实现全部预想功能,程序编写正确。

5.6显示模块

显示模块和显示模块的波形仿真如下图5.6(a)和5.6(b)所示:

图5.6(a)显示模块

图5.6(b)显示模块的波形仿真图

模块功能介绍:

从选择模块出来的信号num[3..0]经显示模块翻译成BCD码后才能显示在七段码上。

从仿真波形图看以看到,当num[3..0]=0111时,led[6..0]=0000111,七段码显示数字7。

此可以判定,该模块能实现全部预想功能,程序编写正确。

 

6数字闹钟原理方框图

数字闹钟的原理框图和闹钟调时程序流程图如图6.1、6.2所示:

图6.1数字闹钟原理图

 

进程2

clk’event

clk=’1’

daout<=dain

进程1

setmin=’0’

count=”1011001”

输出个位为9

个位数+1

十位数+1

daout<=count

结束

count<=”000000”

脉冲

Sethour=’0’

daoutl=dainl

输出23

输出为0

输出个位9

个位数+1

十位数+1

daoutl<=countl

结束

图6.2闹钟调时程序流程图

本设计是以setmin、sethour为控制整个数字钟的校分、校时,以enable控制闹钟开关,以setmin1、sethour1控制闹钟设置分、时。

则当sethour=1时是对时钟进行校时,时个位和时十位会以二十四进制循环自动增加;

当setmin=1时是对时钟进行校分,分个位和分十位会以六十进制循环增加,并且不对时进位;

当sethour1=1时是对闹钟进行校时,闹钟时个位和时十位会以二十四进制循环自动增加;

当setmin1=1时是对闹钟进行校分,闹钟分个位和分十位会以六十进制循环增加,并且不对时进位;

而当sethour=0和setmin=0是正常的计时时间,秒从零开始计时,每秒加一,当到达五十九在来一个脉冲后,秒十位和秒个位清零,从零开始直到六十一直循环,并且向分个位清零;分位的原理同秒的一样,计数到五十九后自动清零向时进位,而时与秒,分的不同之处是,当时计数到二十四时清零并且不向任何位进位。

另外当计数的时,分和闹钟所事先设置时,分相等,并且enable=1时,蜂鸣器会响起。

此时,如果按下stop蜂鸣器会立即停止蜂鸣。

如果按下pass蜂鸣器也会立即停止,但在三分钟后会再响,循环5次。

如果两个键都不按蜂鸣器会维持蜂鸣一分钟,一分钟后蜂鸣自动停止。

7调试步骤

1.打开QuartusII新建一个工程,工程名用英文字母写,单独存放在一个文件夹,选择好芯片后新建一个vhd文件并保存,保存后开始用VHDL语言编写程序。

每编写一个程序前要新建一个工程。

2.编写完成后进行编译,在编译无误后进行元件例化。

3.对每一个模块进行时序仿真,确认每一个模块功能是否符合要求。

4.在时序仿真完成后新建一个bdf文件并置顶,保存后左键双击工作区间,在对话框中选中已例化的模块,按确定后置于工作区间。

5.连接好线后对bdf文件进行编译,编译通过后,进行管脚分配,然后开始连线,将程序下载到实验箱中。

6.刚开始,数字种会先报时一分钟,并从00—00—00开始计数,按下reset键,全部清零,并从头开始计数。

按下调分键,秒不动,小时不动,分开始加一加一的计数,按下调时键,分不动,秒动,小时开始加一加一的计数。

7.根据程序设计,开始的初始状态为:

clk接一个脉冲信号。

sethour,setmin,sethour1,setmin1,stop,pass键置0,reset键置0。

8结论

通过本次制作,系统的复习整个EDA的知识,并且了解了FPGA/CPLD可编程芯片的结构和引脚,能够熟练的运用quartusII这个软件,尤其可贵的是,学会了使用这个软件来给程序配置引脚,并且实际的通过实验箱的几个按键就可以控制整个操作的过程,终于感到自己所学到的知识可以付诸到实践了。

在本文中采用VHDL硬件描述语言设计多功能数字闹钟,借助其功能强大的语言结构,简明的代码描述复杂控制逻辑设计,与工艺无关特性,在提高工作效率的同时达到求解目的,并可以通过VHDL语言的综合工具进行相应硬件电路的生成,具有传统逻辑设计方法所无法比拟的优越性。

设计的电子闹钟基本上实现了所有的功能,但在有些功能的实现中,还有待提高。

比如说对于调时功能,只能等待调时,这样对于调时的机动性不好,如果控制不好,过了应调时间的话,就必须在等一次循环后才能调时,有点浪费时间。

 

参考文献

[1]文畅.基于FPGA/CPLD和VHDL语言的交通灯控制系统设计[J].电脑知识与技术(学术交流),2007,(06)

[2]韩克,柳秀山.电子技能与EDA技术[M].暨南大学出版社.2004.

[3]刘昌华编著.数字逻辑EDA设计与实践[M].国防工业出版社,2006.

[4]杨晖.可编程逻辑器件与数字系统设计[M].北京航天航空大学出版社,1999.

[5]刘真,毕才术.数字逻辑与计算机设计[M]北京:

高等教育出版社,2002.

[6]HydeDC.BucknellHandbookonVerilogHDL.ComputerScienceDepartment,BucknellUniversityLewisburg,1995.

[7]王小军.VHDL简明教程[M].北京:

清华大学出版社,1997.

[8]黄晓明,黄璜.基于Max+PlusⅡ平台对VHDL硬件描述语言综合的探讨[J].湖北第二师范学院学报,2008,(02)

[9]邱磊,肖兵.基于VHDL语言的交通灯控制器设计[J].福建电脑报,2004.

[10]陈宗梅.交通灯控制系统电路设计[J].重庆职业技术学院学报,2005,(02)

[11]刘明丹.基于数字电路对交通灯控制的研究与设计[D].四川.四川技术学院,2005.

[12]孙芹芝,张瑾,苏晓鹭.基于EDA的交通灯控制系统[J].电子学报,2007.

[13]何峰.基于VerilogHDL设计的交通灯控制系统[J].现代电子技术,2005,(08)

[14]张淑骅.基于FPGA的交通灯的VHDL设计[J].科技信息,2007.

[15]黄任编著.VHDL入门•解惑•经典实例[M].北京航空大学出版社.2005

[16]罗海涛.基于VHDL的交通信号灯设计与实现[J].电脑知识与技术,2008,(15)

[17]韩超.基于VHDL设计的交通灯系统[J].电子与电脑,2008,(01)

[18]杨捷,蒋炜华,马临超.基于VHDL语言的交通灯控制器设计[J].河南机电高等专科学校学报,2008,(03)

[19]曾珍虎.基于VHDL带音响的交通灯控制系统[J].黑龙江科技信息,2007,(22)

[20]李国栋,任志平.基于FPGA技术的交通灯控制系统设计[J].现代电子技术,2008,(17)

 

附录A

分频模块具体程序:

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityfenpis

port(clk:

instd_logic;

clk6:

outstd_logic);

endfenp;

architectureoneoffenpis

s

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

当前位置:首页 > 工程科技 > 建筑土木

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

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