EDA (Ⅱ)实验报告多功能数字钟的设计
07 zh
2010-5-25
摘要:
本实验是设计一个多功能数字钟。根据实验要求设计了基本的二十四小时计时和整点报时电路,并且数码管部分采用了动态显示。同时根据提高部分要求,将一小时秒表的功能集成到了数字钟里。实验过程采用自顶向下的设计思想,大量采用了模块操作。
Summary:
The purpose of the EDA experiment is to design a multi-funtiondigital clock. It's according to the experiment request that the Ihave designed a 24 hours clock with the function telling time at alittle bit whole,and figurestube part adopt the dynamic the mean time to satisty the exalation of thecapability ,a stop-watch mold piece is integrated in the thought of getting down from crest instructs the experimentprocess,whose feature is the adoption of the mold pieces.
关键词:
数字钟动态显示模块秒表
Key words:
Digital clock dymanic state manifestation mold pieces stop-watch
目录
摘要 1 正文 3
设计要求说明 3
方案论证 3
各子模块原理图 4
调试及仿真15
编程下载17
总结18
总结部分
18
遇到问题及解决方法18
实验体会18
参考文献
19
正文:
1、【设计要求说明】:
设计一个数字计时器,可以完成00:00:00到23:59:59的计时功能,并在控制电路的作用下具有保持、清零、快速校时、快速校分、整点报时等功能:
1、能进行正常的时、分、秒计时功能;
2、分别由六个数码管显示时分秒的计时;
3、K1是系统的清零开关(K1=1正常工作,K1=0时钟的分、秒全清零);
4、K2是计时/闹钟的校时开关(K2=0正常工作,K2=1时可以快速校分);
5、K3是计时/闹钟的校分开关(K3=0正常工作,K3=1时可以快速校分);
6、K4是系统的使能开关(K4=1正常工作,K4=0时钟保持不变);
7、定时闹表功能;
8、K5是闹钟/计时显示切换开关(K5=0时显示计时,K5=1时显示闹钟定时
时间);
9、K6是闹钟使能开关(K6=1 闹钟正常工作,K6=0屏蔽闹钟功能)
10、使时钟具有整点报时功能(当时钟计到59’53”时开始报时,在59’53”,
59’55”,59’57”时报时频率为500Hz,59’59”时报时频率为1KHz, );
2、【方案论证(整体电路的工作原理)】:
数字钟系统可以分为以下几大模块:脉冲发生电路模块,基本计时模块,动态译码显示模块,校分电路模块,报时电路模块,清零电路模块。根据实际数字钟的功能设计了闹钟模块,比较模块,数据选择显示模块。基本时钟电路的系统框图如图:
由于实验板上提供的是48MHZ 系统时钟信号,所以首先需要将系统时钟进行分频得到1HZ的时钟信号进行计时。设计原理是“计数器即是分频器”。计时电路采用了74160二进制BCD码计数器构成了模24 和模60 的计数器,进行时分秒的计时。译码显示电路采用的是动态显示的方案,动态显示使用数据选择器的分时复用功能,将任意多位数码管的显示驱动,由一个七段显示译码器来完成。由于本实验采用的BCD数码管是共阴电路,所以还需要一个同步时钟控制译码器产生片选信号,从而使六路BCD码信号能够通过一个译码器分别显示在不同的数码管上。报时电路是由简单的逻辑门电路组成的,根据要求通过计数器上的BCD 码数值来确定报时时间和报时频率。控制电路是通过实验板上的逻辑开关来实现输入的。由于本实验要求防抖动,设计时使用了D触发器,作为防抖开关使用。
3、【各子模块设计原理】
①时钟脉冲发生电路模块
模块符号为:
为了便于实现秒表的计时功能和报时功能,时钟信号发生模块共输出1HZ,2HZ,500HZ,1KHZ的时钟信号,输入只有一个,就是系统时钟48MHZ。48MHZ 通过模2、模6 、模8、模1K不同模块的自合可以得到不同的始终频率。
模2
模8
模6
模1000
例如:要得到1HZ 的输出频率,将48MHZ 依次进行:
模8分频 模6分频 模1K 分频 模1K 分频 其中同时可得1KHZ 的时钟输出,同理我们可以得到所需500HZ 和2HZ :
②基本计时模块,保持清零模块,校时校分模块:
模块电路如下所示:
clr_input清零信号输入端,输入0有效
sw2是校时信号输入端
sw3是校分信号输入端
sw_5是计时与闹钟显示切换开关,输入1时显示计时
以下是该模块的具体构成:
计数器部分的基本构成是由模60,模60,模24的计数器级联构成。采用异步计数器方式,由秒计数器开始计数,其进位信号为59秒时送入分计数器CLK,作为分计数器的脉冲输入,分计数器计数到59分时,而此时秒计数器也计
到59秒时作为时计数器的脉冲输入,时计数器开始计数。当时计数器计数到23后且总计数为23:59:59后,进位则从00:00:00重新计数。清零功能通过对每个计数器的清零端复位实现,保持功能通过对时钟脉冲的选通实现。
秒计时电路图(采用反馈置位的方法实现):
分计时电路图(采用反馈置位的方法实现):
时计时电路图(采用反馈置位的方法实现):
校分和校时部分的基本构成为:
保持电路逻辑结构如下:
说明:由于EDA 实验系统提供的开关是机械开关,机械开关在接通和断开过程中, 通常会产生一串电脉冲,会使逻辑电路发生误动作,因此需设计一个防抖
动电路。分计数器的计数脉冲有两个来源,一个是秒的进位信号,还有一
个是校分信号(1Hz ),根据校分开关的不同状态决定送入分计数器的脉 冲来源,以完成正常计数或校分功能,因此采用一个D 触发器作为防抖开 关,其电路实现:
总电路鸟瞰:
③整点报时电路模块:
报时部分的设计思想:
当时钟计到59’53”时开始报时,在59’53”, 59’55”,59’57”时报时频率为1KHz 驱动蜂鸣器,59’59”时报时频率为2KHz驱动蜂鸣器。
通过对报时时间各个状态位进行分析,可对报告时间进行化简,作卡诺图:
具体逻辑构成图如下:
④动态译码显示模块
此模块是由显示译码器7447和数据选择器和BCD码译码器共同构成的。动态显示的基本原理是在“74138译码器”中输出片选信号dig选通数码管,同时在“数据选择器”中输出对应的一路BCD码信号送到7447显示译码器的输入端进行译码,7447的输出端为数码管的共同的控制端,在数码管上显示数据。为了选通计时或者闹钟定时,其内部通过一个选择电路实现,用SW5控制选通。
m[7..0]s[7..0]h[7..0]分别为计时电路的秒分时输入
a_m[7..0]a_h[7..0]分别为闹钟定时电路的分时输入
具体的逻辑电路构成为:
其中选择逻辑电路模块为:
其中上面一块24选4为计时电路,下面一块24选4为闹钟电路的选择,当SW5=0时选通计时电路显示,SW5=1时选通闹钟电路显示。
其中的24选4电路为
输入1KHZ 的时钟脉冲信号作为74160的工作频率作为刷新频率产ad[0]~ad[2],通过74138译码使其循环输出六个控制信号dig[0]~dig[7]对数码管进行片选,同时又作为4片74151 构成的24选4数据选择器的控制信号,通过SW5的选通,输出对应的一路BCD 码信号送到7447显示译码器的输入端进行译码,使译码部分和片选部分能同步工作。
⑤闹钟模块
闹钟模块其实就是只有分位和时位的计数器模块,并且具有校分和校时功能。当设定好闹钟时间后闹钟处于保持状态,直至到达时间后开始闹铃。 闹钟模块的逻辑结构如下图所示:
SW3是闹钟的校分开关SW2是闹钟的校时开关, 他们当SW5=0时即选通显示闹钟电路时有效
通过对计时电路和校分电路的修改,去掉时钟的秒位,逻辑结构如下图所示:
⑥
比较和闹钟报时模块
由于闹钟要在设定的时间上输出一个信号驱动蜂鸣器,那么就需要一个比较电路,把闹钟设定的时间与计数器的时间进行比较,当相同时输出信号来驱动蜂鸣器。同时,图中右下方的或门输入端为整点报时的输入和闹钟报时的输入。
比较电路的具体构成如下图所示:
当然,该比较电路可直接使用7485芯片比较更为简单
闹钟的报时采用了简单的滴滴滴声响实现,电路如下,通过74160循环:⑦总电路图为:
4、【调试及仿真】
对已完成的电路图保存后进行调试,检查有无出错的地方,比如线路定义出错,引脚未定义,未分配等软件能检查出来的错误,对其进行修正,直至调试的仿真图完全正确为止,仿真得到的波形图如下:
6分频仿真时序图为:
8分频仿真时序图为:
模60计数器仿真时序图为:
模24计数器仿真时序图为:
最后作整体检查并将clock设置为顶层文件进行全程编译直至编译完全通过为止,如下图所示:
5、【编程下载】
将编译好的程序下载至FPGA芯片之前,首先要进行管脚的分配,选择“Assingnment—〉Pins”,管脚分配图如下图示:
选择“Assingnment—>Setting”,点击“Device&Pin Option…”选择标签页“Congiguration”中的“Use configuration device”选项选择EPCS4选项,选择“Unused Pins”标签页将未用引脚设为高阻输入,再进行一次全程编译,下载前的准备工作完成。点击工具栏上的按钮,点击“Hardware Setup”按钮,点击“Add Hardware”按钮,点击“OK”,“Hardware Setup”后面的“No Hardware”变成了“ByteBlaster[LPT1]”。在“Program/Configure”列下的复选框中打钩,点击“Start”即可下载程序。下载结果如下图所示:
6、【结论】
经过一周的不断努力,从无到有,从简到繁,终于完成了本次试验。
下载运行成功后实验板上K1—K8各复用开关作用如下:
K1是系统的清零开关(K1=1正常工作,K1=0时钟的分、秒全清零);
K2是计时/闹钟的校时开关(K2=0正常工作,K2=1时可以快速校分);
K3是计时/闹钟的校分开关(K3=0正常工作,K3=1时可以快速校分);
K4是系统的使能开关(K4=1正常工作,K4=0时钟保持不变);
K5是闹钟/计时显示切换开关(K5=0时显示计时,K5=1时显示闹钟定时时间);K6是闹钟使能开关(K6=1 闹钟正常工作,K6=0屏蔽闹钟功能)
总结部分:
1【实验中遇到的问题及解决的方法】
■首先是出现了分频结果不正确,8分频、6分频正确的情况下,1000分频出现了问题,检查发现时因为每个模10中进位端的占空比太小,该为Q2端输出则没有问题了
■在设计电路时,一开始所有元件之间都采用连线连接,导致后面电路图混乱而且容易出现交叉导致可能的错误,后来改用了标号连接之后,电路图清爽直观不少,带来了极大方便。
■在进行校时校分的时候发现,关闭校正开关时,已经校正好的数字总是出现错误,经分析才知道原来是机械开关出现了脉冲的冒险,我们经过查阅资料在每个开关前面用了一个D触发器,从而消除了冒险的影响。
2 【实验体会】
这次试验的是在以前数电知识和第一次EDA实验的基础上的,在实验中,我们需要大量查阅回忆以前的知识,同时,QuartusII软件的学习是本次实验的另一大收获,回顾了所学,获得了新知。
在以前C语言程序学习中就接触了自顶向下和模块化功能设计的设计思路,这次EDA实验虽然所用工具不同,但是更深的理解了这一理念。从实验的一开始,我们就从整体功能分解入手,化繁为简,一步一步的剖析实验的功能和细节,最终完成每一小部分的设计,才能实现整体功能。
虽然本次实验是一个人独立完成的,但是在实验过程中与同学们的交流学习显得格外重要,往往旁人的只言片语会使自己的问题迎刃而解,真可谓当局者迷旁观者清。
实验完成后,我尝试了解了在QuartusII中使用语言进行编程,发现使用VHDL语言可以带来意想不到的简便,虽然可能不太直观,但是理解了之后使用语言会使功能设计更见简单透明,把一些繁琐的工作留给计算机,让我们专注于逻辑功能的编写。至于本闹钟可是实现的其他功能,比如星期显示等都可以通过相似手法的使用简单实现。
这次实验的成功完成离不开大家的帮助,在此要特别感谢蒋立平老师在实验过程中的悉心教导,在很多重要问题和疑点上给了我们莫大的帮助。
参考文献
(1)《数字逻辑电路》.蒋立平著 .南京理工大学出版社
(2)《EDA设计实验指导书》.南京理工大学电子技术中心 . (3)《电子线路实践教程》.王建新,姜萍.北京:科学出版社