数字钟Word文档格式.docx
- 文档编号:19289207
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:21
- 大小:86.20KB
数字钟Word文档格式.docx
《数字钟Word文档格式.docx》由会员分享,可在线阅读,更多相关《数字钟Word文档格式.docx(21页珍藏版)》请在冰豆网上搜索。
VHDL;
Abstract
EDAistheacronymforElectronicsDesignAutomation.EDAtechnologyisacomputer-basedtool.OntheEDAsoftwareplatform,thedesignercompletesthedesignfilewiththehardwaredescriptionlanguageVHDL.Then,thecomputerautomaticallycompiles,partitioning,synthesis,optimization,layout,routing,andsimulationuntiladaptationtospecifictargetchips,logicalmapping,andprogrammingdownload.
ThedesignisdonebytheQuartusⅡsoftware,VHDLlanguageprogrammingandFPGAchiptoachievethecommondigitalclock.Thedigitalclockcanbeselectedaccordingtoacontrolledkeytodisplayhours,minutes,secondsoryear,month,day.Thedesignofthe7-bitLEDwithatotalofdigitalLEDdisplayminutesandseconds,year,month,day,andtheycanbeadjustedbytheswitches.
1绪论
1.1EDA技术简介
EDA技术是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。
利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。
1.2FPGA开发简介
FPGA(Field-ProgrammableGateArray),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。
它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
FPGA(现场可编程门阵列)和CPLD(复杂可编程逻辑器件)都是可编程逻辑器件,他们是在PAL,GAL等逻辑器件的基础上发展起来的。
同以往的PAL,GAL相比较,FPGA/CPLD的规模比较大,它可以替代几十甚至几千块通用IC芯片。
这样的FPGA/CPLD实际上就是一个子系统部件。
比较典型的就是Altera公司和Xilinx公司的CPLD器件系列和FPGA器件系列,他们开发较早,占用了较大的PLD市场。
1.3VHDL语言简介
VHDL语言是一种用于电路设计的高级语言。
它在80年代的后期出现。
最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言。
VHDL翻译成中文就是超高速集成电路硬件描述语言,主要是应用在数字电路的设计中。
它的应用多数是用在FPGA/CPLD/EPLD的设计中。
VHDL主要用于描述数字系统的结构,行为,功能和接口。
除了含有许多具有硬件特征的语句外,VHDL的语言形式、描述风格以及语法是十分类似于一般的计算机高级语言。
VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。
在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。
这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。
2课程设计内容
2.1设计目的
1)掌握Quartus软件的使用方法,提高运用硬件描述语言VHDL的能力,初步了解时序电路的设计。
2)利用对生活中熟悉的电子表,用语言设计相似功能的数字钟。
2.2设计要求
1)熟悉和掌握使用QuartusⅡ14.0软件进行系统设计与仿真的方法;
2)设计一个6位显示的具有翻屏功能的数字钟:
6位数码管扫描显示,设计一个控制键能选择显示时、分、秒;
或年、月、日;
3)利用QuartusⅡ软件对所设计的电路进行仿真分析。
2.3设计思路
该数字钟可以实现3个功能:
计时功能、整点报时功能和重置时间功能,因此有3个子模块:
计时、报时、重置时间。
其中计时模块有6部分构成:
秒计时器、分计时器和时计时器。
其中包括分秒60进制计数器、时24进制计数器、日30进制计数器、月12进制计数器和年10进制计数器,然后根据要求通过一个控制键实现选择显示时、分、秒或年、月、日,最后再设置3个开关调整数字钟的时、分及秒清零。
再设置3个开关调整数字钟的年、月、日。
并且通过一个七段译码器和8进制计数器控制七段数码管实现显示。
3数字钟设计
设计原理与方法
数字电子钟由分频器、计数器、译码显示、报时4部分电路组成。
FPGA开发板内部存在的振荡器产生稳定的高频脉冲信号,作为数字钟的时间基准,然后经过分频器输出标准秒脉冲。
秒计数器满60后向分计数器进位,分计数器满60后向小时计数器进位,小时计数器按照“24翻1”规律计数。
计满后各计数器清零,重新计数并向天进一。
计数器的输出分别经译码器送数码管显示,计时出现误差时,可以用校时电路“校时”“校分”“清零”。
同时天的显示满30后向月进一位并归一。
月的显示满12后向年进一并归一。
年只显示公历的后两位。
年、月、日均有对应的开关来调整。
基准秒脉冲可以通过分频电路得到。
通过报时设计模块可以实现整点报时。
译码显示由七段译码器完成,显示由数码管构成,采用的是静态显示方式。
所谓静态显示,就是每一个数码管的段码都要独占具有锁存功能的输出口,CPU把要显示的字码送到输出口上,就可以使数码管显示对应的字符,直到下一次送出另外一个字码之前,显示的内容一直不会消失。
数码管动态显示是动态扫描电路将计数器输出的8421BCD码转换为数码管需要的逻辑状态,并且输出数码管的片选信号和为选信号。
所谓动态扫描显示方式是在显示某一位LED显示块的数据的时候,让其它位不显示,然后再显示下一位的数据。
只要保证每一位显示的时间间隔不要太大,利用人眼的视觉暂留的现象,就可以造成各位数据同时显示的假象。
静态显示与动态显示相比,虽然管脚设置较多,但逻辑相对简单,可简化代码长度。
3.2单元模块设计
3.2.1分频器模块
根据设计要求,需要将开发板的50MHZ信号分出1HZ,0.5KHZ和1KHZ共3种时钟信号,1HZ脉冲信号用来提供计数模块的时钟信号——在1HZ的脉冲下,每隔一秒,秒自加一次,0.5KHZ,1KHZ脉冲信号用来产生报时信号。
完成程序后可以创建原理图元件。
3.2.3计数器模块设计
计数器模块主要由秒60进制计数模块、分60进制计数模块、时24进制计数模块、日30进制计数模块、月12进制计数模块、年计数模块6部分组成。
各部分结构相同,逻辑相同。
秒60进制计数模块的时钟信号为1HZ的脉冲信号,每计数到59便会产生一次进位作为分60进制计数模块的时钟信号,该模块加入一个清零端,当开关se为1时,秒计数模块中的个位和十位同时为零,当se为1时正常计数。
分60进制计数模块的时钟信号为秒计数模块的进位信号,其通过一个增加开关min对其调整。
时24进制计数模块的时钟信号为分计数模块的进位信号,其通过一个增加键hour对其调整。
日30进制计数模块的时钟信号为时计数模块的进位信号,其通过一个开关day对其调整。
同理月12进制计数器模块的时钟信号通过开关month调整,公历年的后两位显示用开关year调整。
另设置一位拨码开关key_select选择显示时、分、秒或年、月、日计数器的VHDL程序如附录所示,完成程序后可以创建元件。
3.2.3整点报时模块
当计时到达59’50”时开始报时,在59’50”、59’52”、59’54”、59’56”、59’58”鸣叫,鸣叫声频为500Hz;
当计时到达59’60”时为最后一声整点报时,整点报时鸣叫声频为1000Hz。
报时的频率来自分频模块,并使用无源蜂鸣器报时。
3.3数字钟设计原件图
为了让代码简单,将各模块对应的代码写在同一个结构体的不同进程中,则可以达到一个代码完成任务的目的。
且略去了通过名字关联法或位置关联法将各个模块连接的代码,使整体逻辑更为清晰简洁。
即将整个设计模块封装在一个结构体中。
完成程序后创建的原件如图1所示。
图1整体元件图
其中输入端口clk_in表示FPGA开发板内部时钟,rst表示所有时间初始化,se表示秒调整,min表示分调整,hour表示时调整,day表示天调整,month表示月调整,year表示年调整。
其中输出端口D表示无源蜂鸣器,数码管123456分别对应6位LED数码管,clk1HZ用LED闪烁灯表示时钟周期。
clk_500Hz表示当对应频率的蜂鸣器报时时,灯闪烁。
同理clk_1000Hz表示当对应频率的蜂鸣器报时。
4编译报告
将各模块正确连线后,编译无警告,生成编译报告如图2所示。
图2编译报告
5电路仿真与硬件调试
5.1电路仿真
经过尝试,发现数字钟的设计用波形仿真看到与实际相符的数据很困难,因为50M的时钟要分成1HZ的时钟,500HZ和1000HZ的时钟,分在秒跳动60才跳一次,时在分跳动60才跳一次,受到simulatortool工作界面的限制,并不能完整的观察到时分秒,年月日的信息。
只能显示复位键rst对波形的影响,如图3所示。
图3仿真波形图
5.2硬件调试
经过调试,仿真结果正确后,将sof文下载到开发板上。
连接硬件系统后,通上电源,按下编程器窗口中的“START”按钮,设计的内容就开始下载到FPGA芯片中。
通过实验箱上的拨码开关和按键开关可以逐一对数字钟的功能进行验证。
通过数码管显示可知本设计可以实现基本的时、分、秒及年、月、日的计数,通过按键和拨码开关的配合可以实现时、分、秒和年、月、日的校准以及显示翻屏。
本设计完全符合设计要求。
6总结与心得体会
经过一周EDA课程设计,使我受益匪浅。
这不仅增强了我对EDA设计的兴趣,更巩固了基本的电路设计流程、方法以及技巧。
具备了这些基本知识,为今后的自主学习奠定了良好的基础。
在编写时可以相互借鉴,这样可以节省一定的时间。
在本设计中参考了课内实验6所用的数字钟模块和写法。
在设计中还是需要注意一些常见的问题,比如实体名、项目名等,还有在编写VHDL文件时,一些文件名也是需要注意的;
在编写程序的过程中,信号与变量的使用是一个特需要注意的,进程中一个信号不应有多个复制源,信号的复值是在进程结束之时,而变量的复值是立即的,在书写时容易出错的地方是,信号的赋值与变量的赋值符号,信号作为全局的联络线,信号往往不允许在多个进程中被赋值,因为进程之间是并行的;
整个系统是由多个底层元件组成,底层元件之间的相互连接是通过信号实现。
本课程设计关于数字钟的逻辑实现方法不限于一种,同种方法还有不同的写法,方法多种多样,还可以在此基础上增加更为实用的模块,如自动翻页,闹钟设置等等,可以丰富该设计的实用价值。
同时可以看出,将代码写在一个结构体的不同进程中,优点是代码简便,结构清晰。
分模块书写的优点是维护方便,增加删减功能方便,具有应用价值。
参考文献
[1]潘松,黄继业.EDA技术与VHDL.北京:
清华大学出版社.2016
[2]潘松,黄继业.实用数字电子技术基础.北京:
电子工业出版社.2011
[3]卢毅,赖杰.VHDL与数字电路设计.科学出版社,2009.
[4]杨丽英.《电路EDA技术与应用》.清华大学出版社,2011.
[5]谢自美.《电子线路设计》(第二版).华中科技大学出版社,2000.
[6]赵世强.《电子电路EDA技术》.西安电子科技大学出版社,2006.
附录
libraryieee;
useieee.std_logic_1164.all;
useIEEE.STD_LOGIC_ARITH.ALL;
useIEEE.STD_LOGIC_UNSIGNED.ALL;
entityclock1is
port(
clk_in:
instd_logic;
---------inputclk50MHz
rst:
instd_logic;
se,min,hour:
year,month,day:
key_select:
D:
outstd_logic;
shumaguan1:
outstd_logic_vector(6downto0);
shumaguan2:
shumaguan3:
shumaguan4:
shumaguan5:
shumaguan6:
clk_500Hz:
BUFFERstd_logic;
clk_1000Hz:
clk_1Hz:
BUFFERstd_logic);
endclock1;
architecturebehavofclock1is
signalcnt1:
naturalrange0to25000000;
signalcnt2:
naturalrange0to50000;
signalcnt3:
naturalrange0to25000;
signalnumber1:
std_logic_vector(5downto0);
signalnumber2:
signalnumber3:
signalnumber4:
signalnumber5:
signalnumber6:
signalq1:
signalq2:
signalq3:
signalco1:
std_logic;
signalco2:
signalco3:
signalco4:
signalco5:
begin
P1:
process(clk_in)
begin
ifclk_in'
eventandclk_in='
1'
then
ifcnt1=24999999then
cnt1<
=0;
clk_1Hz<
=notclk_1Hz;
else
=cnt1+1;
endif;
ifcnt2=49999then
cnt2<
clk_500Hz<
=notclk_500Hz;
=cnt2+1;
ifcnt3=24999then
cnt3<
clk_1000Hz<
=notclk_1000Hz;
=cnt3+1;
endprocessP1;
P2:
PROCESS(clk_1Hz,rst,se,co1,min,day,hour,month,year,co2,co3,co4,co5)--秒钟部分
BEGIN
IF(rst='
0'
)THENnumber1<
="
000000"
;
number2<
number3<
number4<
000001"
number5<
number6<
010001"
--若reset为0,则异步清零
ELSIF(clk_1Hz'
eventandclk_1Hz='
)then--否则,若clk上升沿到
IF(se='
)then--秒置位
IF(number1="
111011"
)then--若计时到"
111100"
即59
number1<
co1<
='
--则置进位为1及number1复0
ELSE--未到59
=number1+1;
co1<
--没有发生进位
endIF;
If(number1="
111010"
)
thenco1<
elseco1<
endif;
else
number1<
ENDIF;
IF(min='
)then--分置位
IF(co1='
)then--若秒钟进位信号来到
IF(number2="
)then--若计时到"
co2<
number2<
=number2+1;
co2<
ENDIF;
else--分钟校准部分
IF(number2="
co2<
--则置进位为0及number2复0
ELSE--未到60
IF(hour='
)then
IF(co2='
)then
if(number1="
andnumber2="
IF(number3="
010111"
即23
number3<
co3<
--则number3复0
ELSE--未到23
=number3+1;
ELSE--时钟校准部分
IF(number3="
co3<
--则number3复0
ENDIF;
IF(day='
IF(co3='
andnumber3="
IF(number4="
011110"
)then--若计天到"
即30
co4<
--则number4复0
ELSE--未到30
=number4+1;
IF(number4="
IF(month='
IF(co4='
andnumber4="
IF(number5="
001100"
number5<
co5<
=number5+1;
co5<
IF(number5="
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字