二十四小时计时器南理工EDAquartus应用剖析.docx
《二十四小时计时器南理工EDAquartus应用剖析.docx》由会员分享,可在线阅读,更多相关《二十四小时计时器南理工EDAquartus应用剖析.docx(27页珍藏版)》请在冰豆网上搜索。
二十四小时计时器南理工EDAquartus应用剖析
实验一二十四小时数字计时器
一、实验内容及题目简介
利用QuartusII软件设计一个数字钟,并下载到SmartSOPC实验系统中,可以完成00:
00:
00到23:
59:
59的计时功能,并在控制电路的作用下具有保持、清零、快速校时、快速校分、整点报时等功能。
二、实验设计要求
(1)设计基本要求
1、能进行正常的时、分、秒计时功能;
2、分别由六个数码管显示时分秒的计时;
3、K1是系统的使能开关(K1=0正常工作,K1=1时钟保持不变);
4、K2是系统的清零开关(K2=0正常工作,K2=1时钟的分、秒全清零);
5、K3是系统的校分开关(K3=0正常工作,K3=1时可以快速校分);
6、K4是系统的校时开关(K4=0正常工作,K4=1时可以快速校时);
(2)设计提高部分要求
1、使时钟具有整点报时功能(当时钟计到59’53”时开始报时,在59’53”,59’55”,59’57”时报时频率为512Hz,59’59”时报时频率为1KHz,);
2、闹表设定功能;
3、自己添加其他功能;
三、方案论证
数字钟整体框图如下图所示
本实验的目的是利用QuartusII软件设计一个多功能的数字计时器,使该计时器具有计时,显示,清零,较分,校时及整点报时功能。
依据上述数字钟电路结构方框图可知,秒计时器和分计时器均为60进制,小时计时器是24进制计数器。
当秒计时器对1HZ时钟脉冲信号计数到60时,产生一个进位脉冲,使分计时器的数值加1,同样,分计时器计数到60时,使小时计时器的数值加一。
秒计数模块和分计数模块的核心是模60的计数器,时计数模块的核心为模24的计数器,并且采用同步计数的方法,即三个模块的时钟信号均来自同一个频率信号。
当数字钟走时出现误差时,通过校时电路对时,分的时间进行校正,其中校时电路和清零电路只需在原有电路的基础上采用一定的逻辑门电路实现。
为了防止机械开关造成的抖动,本次实验我采用D触发器来消抖。
系统复位模块只需要在计时模块的清零输入端输入有效信号,即可完成系统复位功能。
译码显示模块要采用动态译码显示电路。
用数据选择器在控制信号的作用下,选择输出秒位、分位或时位,上面所说的控制信号是由一个模6计数器产生的信号。
利用一个译码器进行数码管的位码控制,输入的控制信号同样为模6计数器产生的信号。
为了保证数字钟走时准确,时钟信号源输出的信号频率需经过分频器分频,得到1HZ和1KHZ时钟信号。
1HZ时钟信号用于计时,1KHZ时钟信号用于动态扫描译码电路。
通过分计时器和秒计时器的引脚在固定时刻采用逻辑门进行逻辑运算后驱动蜂鸣器,可实现整点报时功能,引入不同的频率信号可改变报时声音的频率。
四、各子模块设计原理与实现
4.1.1脉冲发生器模块总体设计
脉冲发生器是数字电子钟的核心部分,它的精度和稳定度直接决定数字电子钟的质量。
本实验中,实验操作板只能提供48MHZ的频率,为保证数字电子钟的正常运行,我们需要多种频率的保障:
电子钟正常运行时1HZ的秒脉冲,动态扫描译码器时1KHZ的扫描脉冲,报时电路中500HZ的低频信号脉冲。
这些脉冲的获得可通过分频电路对48MHZ的脉冲信号连续分频,选取我们所需要的频率信号输入相关电路即可。
具体实现方法如以下流程图所示:
4.1.2分频子模块原理图
(1)先设计一个1M分频器,利用此分频器,理论上将得到48Hz的频率信号,同时在1000分频电路输出端得到48KHz的频率信号。
该分频器的设计,利用74160计数器,74160是具有清零、置数、计数和禁止计数(保持)4中功能的集成BCD码计数器。
用3个74160级联可以形成一个1000计数器,即实现了1000分频,1M分频参照1K分频设计。
封装后
(2)设计第二个分频器,该分频器为一个模24的计数器。
模24计数器由两个74160实现。
仍然以74160为基础进行设计。
当输入48KHz和48Hz信号,将得到2KHz和2Hz的频率信号。
波形图如下所示
封装后
(3)最后是一个二分频电路的实现,当然该分频器的实现着实简单,通过数字电路的学习便知只需利用一个T触发器便可组合成一个二分频器。
其波形图如下图所示:
封装后
4.1.3模块整合总体电路
将各分频子模块整合为最后的脉冲发生电路,如图所示:
封装后
4.2.1计时电路总体设计
计时电路是本实验基础电路中的关键电路,也是本实验的核心之所在。
由时计时器、分计时器、秒计时器构成。
计时电路中的计数器,可以用74160来实现。
分别设计计时,计分和计秒的电路,计时为0~23,计分及计秒为0~59。
即,采用模24进行计时,采用模60进行计分和计秒,在达到23时59分59秒时时钟自动清零。
4.2.2计时电路各子模块设计
1秒计数模块
因为秒位的模数为60,所以使用两片74160来设计模60计数器,采用置数法来使计数器归零。
其电路图如下所示。
仿真波形如下图所示:
2分计数模块
分计数模块的设计与秒计数模块的设计思路一致,只是在决定回零的与非门输入端数目比秒计数模块的多一个,将其设置为ET端。
现将其电路图放置如下:
3时计数模块
时计数模块为一个模24的计数器,与设计分计数模块的考虑一样,其与非门的输入端并不是只有3个输入端,还需外加两个输入端,这两个输入端分别为ET1和ET2,它们接收来自秒计数模块和分计数模块的进位信号。
仿真波形如下图所示:
这样,就完成了三个计数模块的设计,进行封装,其封装图如下所示:
4.2.3模块整合总体电路
对三个小模块进行整合,实现整体的设计。
其中,各进位信号的应该加至使能端,且采用同步计数的方法,即所有计数器的时钟信号均由一个频率信号驱动。
电路图放置如下:
仿真波形如下图所示:
4.3报时电路
数字钟59分53秒、59分55秒、59分57秒的报时鸣叫频率是500Hz,在59分59秒的报时鸣叫频率是1KHz。
要使蜂鸣器在
时发出低声(频率约为500Hz);在
时发出高声(频率约为1KHz)。
蜂鸣器的一端接地,另一端的输入满足:
H=
。
因此将分十位的QC和QA端、分个位QD和QA端接到四输入端与门(“与门1”),秒十位的QC和QA端、秒个位的QA接到另一个四输入端与门(“与门2”),2秒、4秒和8秒分别对应秒个位的QB、QC和QD,其中
为500Hz的频率信号,
为1KHz的频率信号。
整点报时模块的电路图如下所示:
封装后如下图所示:
4.4译码显示电路
译码显示电路总体设计
其中DIG0——DIG5为LED的位码,a—g为LED的段码。
译码器74138用来选择哪一位LED显示,而24选四MUX用来决定所选LED上显示的内容。
4.4.1各子功能的实现
(1)设计四个74151八选一数据选择器联合构成了一个32选4数据选择器,目的是能够轮流选择输出计时器的秒分时以及秒表信号共六位数据。
如下图
封装后:
(2)设计模六计数器,其功能使得信号的频率大于30Hz,这样才能保证数码管在显示时不出现闪烁现象。
仿真波形如下图所示
封装后:
(3)设计7447是将选择输出的4位BCD码转化成对应的数据以便可以由单晶体显示器显示输出;74138是一个译码器,用来控制选择哪一个显示器显示。
4.4.2模块整合总体电路
本模块原理为:
将1KHZ的频率进行摸8后所得输出信号快速扫描选择LED显示的位码,同时通过所得的三位信号的8种组合选择秒表个位,秒表十位,秒各位,秒十位,分个位,分十位以及时个位,时十位输出。
使其在所选定的LED上显示出来。
由于1KHZ的扫描频率很快,以及人眼的迟滞效应,LED显示基本看不到闪烁。
将各子模块拼接,同时在显示电路中加入报时电路排列,如下图所示:
其仿真波形如下图所示
封装后如下图所示:
4.5校分校时电路
在电子钟计时不准确的时候,需要对其进行校正。
在实际应用系统中,校分电路是必不可少的一部分。
为达到这一目的,需有一定的校分校时信号,通过开关电路的控制,系统在正常计时信号和校分信号之间进行选择,从而达到校分或正常计时的效果。
校时电路原理与校分电路大致相同,故对校分电路做简要介绍。
分计数器的计数脉冲有两个不同的来源:
一个是秒的进位信号,还有一个是快速校分信号(可以是1Hz或2Hz脉冲),根据校分开关的不同状态决定送入分计数器的脉冲来源,以完成正常工作或快速校分功能。
这两个来源将满足“或”的关系,所以可通过一个或门来选通这两个信号。
另再设计一个消颤电路以消除开关机械拨动带来的影响。
校分、校时电路如下图所示:
消颤电路如下图所示:
将校分校时电路与计时电路相连,如下图所示:
4.6系统清零和保持功能
清零电路的目的是在任一时刻,能够随意的对时钟显示电路进行清零控制。
所谓保持电路,就是在开关作用时,计数器计数保持;开关不作用时,计数继续进行。
在计时模块的设计中,已经将使能端与清零端的接口封装在了整个模块中了,作为整个的计时模块的使能与清零来使用。
如下图所示。
至此,数字钟的所有模块均已设计完毕,将其一一整合,得下图整体电路:
五、附加功能的实现与设想
由于本人能力有限,在一周的时间里只完成了一些较为基本的内容,对于一些提高部分,虽有在实验期间有所尝试,只实现了秒表和星期
(一)秒表:
秒表是针对实验板所做的一个附加功能。
本实验中,时分秒三个计时器共使用了六个LED,其余的两个可用作秒表计时。
秒表计时单元采用100HZ作为时钟输入,采用两个74160级联进行模100计数即可实现。
当秒表单元达到99时,向秒计时器使能端提供一输入信号,使此使能端有效,在下一脉冲到来时,秒表单元清零同时向分计时器进位。
这一单元的实现主要难点在于如何将秒表计时与正常的时钟计时统一起来,在不需要秒表时正常计时,而需要时,则进行秒表功能。
为不影响系统已有功能的前提下,加入了一个秒表开关K5,当时钟电路清零时,将秒表开关拨至0端,正常计时,一旦将秒表开关K5拨至1,则系统进入秒表计时阶段。
这一附加功能可以通过一个选择器以及若干逻辑门电路实现。
秒表原理图如下图所示:
(二)星期:
星期计时关键是实现一个模七的计时循环,这里利用同步十进制计数器74160来实现。
星期的跳变需要秒分计到59并且时计到23,即时的进位输出。
原理图如下:
(三)闹钟
闹钟功能由于能力和时间限制我没有完成,但是也有相关的一些设想,现罗列如下:
闹钟模块的设计主要需要解决三个问题,分别是闹钟校分校时的控制,显示模块的复用和闹铃在规定的时间响起。
a)闹钟校分校时的控制
以2HZ频率来校分和校时,原理图如下:
用开关K7控制界面,K3和K4控制校分和校时,原理图如下:
b)显示模块复用
用K7控制选择器的输出,当K7=0时,输出的是计时器的值,K7=0时切换至闹钟校分校时界面,原理图如下:
32选16内部电路:
显示模块的复用是通过设计一个32选16的选择器实现的。
由于K7是闹钟模式控制开关,当K7为0时选择正常计数输出给显示模块,当K7为1时,选择闹钟校时的输出给显示模块显示。
这样做的好处是不需要新增显示模块,节约工作量。
c)闹钟定时响起
计时输出与闹钟校分校时结果比较:
比较模块内部电路:
闹钟定时响起的条件是计数时间与设定时间一致,这就需要一个比较器来实现,比较器的输出接蜂鸣器,当输入数据相等时比较结果为高电平,从而驱动蜂鸣器。
六、系统调试,仿真,编程下载
6.1系统调试
QuartusII可通过层层递进的方式对所编程序进行调试。
在编程完成且确定无误后,可通过编译查看程序是否出现编译错误,若编译有错误,可根据下方提供的说明有目的的进行更正,有效地减少了通篇检查程序的时间;若编译无误,则可对所编程序进一步进行仿真,查看仿真结果是否与预期值相同,若出现偏差,则返回原程序调试查看。
若仿真结果也正确,则可以将程序下载入硬件电路进行进一步查看调试。
对于无法进行仿真的程序则可在编译正确之后通过硬件显示来进行相关调试。
6.2系统仿真
在程序写好并且编译无误后即可进行仿真。
要进行仿真,首先要输入波形文件,波形文件的输入有三种方法,本实验采用向量波形文件进行仿真,仿真过程如下:
先将待仿真文件设为顶层,选择“File->New”,打开“otherfiles”标签项,选中“VectorWaveformFile”,点击“OK”,在跳出图形的右边“Name”下的空白框里,双击鼠标左键,在跳出的对话框里。
点击“NodeFinder”按钮,在“Filter”中选择“Pins:
all”后,点击“List”按钮,则“NodesFound”对话框中列出了本工程的所有输入输出结点。
双击“clkin”和“light”,则右边的“selectednodes”框中了所选的两个结点,连续两次点击所出现的“OK”,即完成了结点的添加。
选中时钟信号使其变深色后,选择左边工具栏的
按钮在弹出的对话框中做相应设置。
点击“OK”完成。
保存波形输入文件。
选择“Tools->simulatorTool”设置波形文件的路径,并作其他相关设置,按
按钮进行仿真,待仿真完成后,按
按钮查看波形。
本实验的所有仿真结果均已在上文中相应位置处贴出,这里不再赘述。
6.3编程下载
在仿真无误的情况下,将设计好的电路下载至实验箱中,通过硬件来检验软件设计的正确性。
其操作步骤为:
选择“Assignments”→“Pins”,在“Location”位置将对应的管脚号输入,完成输入后,通过“Programmer”→“Start”完成下载和检验。
在经过几次修改之后,最终电路设计基本正确,且实验箱的显示及对其的操作均能符合实验设计的基本要求。
得到引脚安放图如下所示:
七、实验中所遇到的问题及解决方案
在进行此次EDA试验之前,我们已经做过多功能数字钟的硬件实验,对相关的器件及原理都不陌生。
在正式做实验前以及实验中,老师也对QuartusII软件的相关用法,以及SmartSOPC实验系统的相关知识做了介绍。
这些都帮助我们较好的入了门,但即使这样在实验过程中,依然出现了很多我们始料不及的问题:
(1)最先困扰我们的是程序编译问题。
由于没有真正理解QuartusII软件中设置整个工程架构的的意义及重要性。
在开始试验阶段,每次都对不同文件进行编译,导致每次都完成的是独立的工程,在整合的时候总会出现编译错误。
因为不明原因,耗费了我们很多时间。
通过询问一些同学,才知道自己并未将待调试的电路文件设置为顶层实体。
(2)在进行计时电路设计时,刚开始设计的是独立的三个计时器,各循环功能均能满足,但合到一起则会出错,往往总是会提前进位及清零。
在研究电路后发现,它的分计时器部分应该在59分59秒的时候向时计时器进位而不是仅仅在59分时;同理,时计时器也应该是在23时59分59秒时同时清零,而不是在23时清零。
可见在设计电路的时候往往不是简单的组合,在进行模块整合的时候一定要考虑到整体。
(3)闹钟模块之所以不成功是因为没有找到显示模块复用的方法。
主要是能力的不足,平时数电的基础没有打牢,导致做基本电路消耗了大量时间。
再后来发现可以使用32选16的电路时已经没有时间修改电路了。
八、实验收获与感受
短短一周的EDA设计虽然很短暂,但却依然让我们收获了很多。
在老师的帮助下,我们逐渐掌握了QuartusII软件的应用,了解了整个设计的流程与方式,为以后的科研设计工作打好了一个很好的基础。
让我们在实践中检验了自己的所学。
另外,此次试验最重要的便是锻炼了自己在设计系统时建立的模块化思想。
如今电路的复杂程度已不是个人能够全盘掌握的程度,必须要分开设计让后整合,虽然这次实验只是做了一个小工程,但是期间的模块化思想将对我们日后的工作产生长足的帮助。
从最初的预习,实验,再到后来的实验报告,每一个过程都在考验着我们的综合素质。
在整个实验的过程中,老师耐心讲解,大家互相帮助,积极交流学习心得与体会,在这一过程中,解决了很多自己一人无法完成的问题,同时在帮助别人解决问题的同时自身得到了提高。
最后,特别感谢我的指导老师,在整个设计过程中对我们耐心的指导与帮助。
九、参考文献
1.《数字逻辑电路与系统设计》蒋立平主编姜萍谭雪琴花汉兵编电子工业出版社2009
2.《EDA技术与实验》付文红花汉兵编著机械工业出版社2007