eda多功能电子钟.docx
《eda多功能电子钟.docx》由会员分享,可在线阅读,更多相关《eda多功能电子钟.docx(28页珍藏版)》请在冰豆网上搜索。
eda多功能电子钟
南京理工大学
EDA(Ⅱ)实验报告
姓名:
钱振宇
学号:
0904210144
学院(系):
电子工程与光电技术学院
专业:
电子信息工程
题目:
多功能数字钟设计
指导老师:
蒋立平
2011年11月
目录
引言………………………………………………………………………2
一、摘要与关键词……………………………………………………2
二、设计要求说明……………………………………………………4
三、实验目的…………………………………………………………5
四、方案论证…………………………………………………………5
五、各子模块设计原理………………………………………………6
1、脉冲信号发生电路…………………………………………………6
3、计时电路……………………………………………………………12
4、译码显示电路………………………………………………………16
5、校分(时)电路………………………………………………………19
6、防抖动开关…………………………………………………………21
7、保持电路和清零电路………………………………………………21
8、整点报时电路………………………………………………………22
9、星期计时电路………………………………………………………24
9、整体电路功能综述………………………………………………25
六、调试仿真和编程下载……………………………………………26
七、实验总结……………………………………………………………26
1、实验中遇到的问题及解决方法…………………………………26
2、实验体会…………………………………………………………28
八、致谢…………………………………………………………………31
附录一总电路图…………………………………………………31
附录二管脚分配……………………………………………………32
附录三参考文献……………………………………………………32
引言:
随着数字技术在仪表和通信系统中的广泛应用,数字钟已经应用到生活的方方面面,而数字钟的功能也随着人们要求的提高在不断的增加,正是在数字技术的快速发展下,功能也越来越强大。
数字钟能够比传统的时钟更加精确的进行计时,并且能够实现多种显示,调节方面,能够内嵌许多诸如报时、万年历、彩铃等计时以外的功能。
本设计在介绍数字钟工作原理的基础上,运用EDA技术,来设计实现一个多功能数字钟。
1、摘要与关键词
摘要:
数字钟学习的目的是掌握各类计数器及它们相连的设计方法;掌握多个数码管显示的原理与方法;掌握FPGA技术的层次化设计方法;掌握用VHDL语言的设计思想以及整个数字系统的设计。
此数字钟具有“时”,“分”,“秒”计数显示功能,以24小时为计数循环;能实现清零,调节小时,分钟以及整点报时的功能。
本次实验我们着重使用FPGA的方法,在QuartusII平台上设计实现一个具有校时、校分、清零、保持和整点报时功能的数字钟。
可自行增加附加功能
我们知道多功能数字钟是日常生活中必不可少的生活用具。
早在十几年前就已普及到个人,现在可以说是一种极为成熟的技术。
作为多功能数字钟,我们认识到,其应具有24小时计时,调整时间,时间清零,时间保持,整点报时,闹铃,星期等功能。
现在随着科学技术的迅猛发展,我们已不在需要用传统的方法去设计及实现数字钟。
使用可编程逻辑器件,在相应软件平台上进行设计,即可实现多功能。
也即我们所说的FPGA。
关键词:
多功能数字时钟星期显示整点报时闹钟动态显示MultifunctionDigitalclock
Abstract:
Digitalclockpurposeoflearningistomasterthevariouscountersandtheirassociateddesignmethods;controlmultipledigitaldisplayoftheprinciplesandmethods;FPGAtechnologytomasterthehierarchicaldesignmethod;masterofdesignusingVHDLlanguageandtheentiredigitalsystemdesign.Thisdigitalclockhasa"time","sub","seconds"countdisplay,a24-hourcountcycle;toachieveclear,adjustthehours,minutes,andhourlychimefunction.InthisexperimentwefocusonmethodsofusingtheFPGA,QuartusIIplatformdesignedandimplementedinaschool,theschoolminutes,clear,maintainandhourlychimefunctiondigitalclock.Freetoaddadditionalfunctionality
Weknowthatmulti-functiondigitalclockisessentialforlivingdailylifeutensils.Overadecadeagohadspreadtotheindividual,itcanbesaidisaverymaturetechnology.Asamulti-functionaldigitalclock,werecognizethatitshallhave24-hourclock,adjustthetime,timecleared,timekeeping,thewholepointoftime,alarm,weeks,andotherfunctions.
Now,withtherapiddevelopmentofscienceandtechnology,wenolongerneedtousetraditionalmethodstodesignandimplementdigitalclock.Useofprogrammablelogicdevices,inthecorrespondingsoftwareplatformtodesign,toachievemulti-functional.ThatiswhatwecalltheFPGA.
Keywords:
MultifunctionDigitalclockweekdisplayingtimealarmalarmclockdynamicdisplay
二、设计要求说明
(一)设计基本要求
1、能进行正常的时、分、秒计时功能;
2、分别由六个数码管显示时分秒的计时;
3、系统的保持、清零、校时、校分功能;
4、使时钟具有整点报时功能(当时钟计到59’53”时开始报时,在59’53”,59’55”,59’57”时报时频率为500Hz,59’59”时报时频率为1KHz)。
(二)设计提高部分要求
根据自己的设计,自由发挥,例如:
1、闹表设定功能;
2、自己添加其他功能;
(三)对设计电路进行功能仿真
将仿真通过的逻辑电路下载到EDA实验系统,对其功能进行验证。
三、实验目的
1、增强学生的理论知识与工程实践结合的能力,拓宽知识面,系统地进行电子线路的工程实践训练,锻炼动手能力,培养工程师的基本技能,并提高分析问题和解决问题的能力。
2、熟悉集成电路的引脚安排,基本掌握各芯片的逻辑功能及使用方
法。
学会检查电路的故障与排除故障的一般方法。
4、方案论证
数字钟系统可以分为以下几大模块:
时钟信号发生模块,基本计时模块,动态显示模块,控制电路模块,报时电路模块。
图1为基本时钟电路的系统框图。
图1基本时钟电路的系统框图
由于实验板上提供的是48MHZ系统时钟信号,所以首先需要将系统时钟进行分频得到1HZ时钟信号进行计时。
设计原理是“计数器即是分频器”。
计时电路采用了74LS160二进制BCD码计数器构成了模24和模60的计数器,进行时分秒的计时。
为了避免产生逻辑冒险,本实验的计数器尽量采用了同步计数器。
译码显示电路采用的是动态显示的方案,动态显示使用数据选择器(MUX)的分时复用功能,将任意多位数码管的显示驱动,由一个七段显示译码器来完成。
由于本实验采用的BCD数码管是共阳电路,所以还需要一个同步时钟控制译码器产生片选信号,从而使六路BCD码信号能够通过一个译码器分别显示在不同的数码管上。
5、各子模块设计原理
1、脉冲信号发生器
实验中使用到了1KHz、500Hz、1Hz的时钟信号,而实验板提供的脉冲信号为48MHz,所以对实验板原始信号进行48分频得到1MHz的信号,对所得的1MHz分别进行1000分频得到1KHz的信号,再分别对1KHz的信号分别进行1000和2分频得到1Hz和500Hz的时钟信号。
此处的分频器输出均采用计数器有效位的最高位输出,因为若采用计数器的满位进位作为输出,则整个分频器的占空比很小,而采用最高位输出使得占空比较均匀。
具体电路如下:
(1)2分频器
可由D触发器直接构成,如图2
图22分频器
封装好生成的模块如图3,以便进行最后的总电路图连接(节省空间)
图32分频器模块
通过编译可以仿真出二分频器的仿真波形如图4:
图4二分频器仿真波形
(2)3分频器
3分频器可由74160与少量门构成,电路如图5
图53分频器
封装后,如图6所示
图63分频器模块
(3)48分频器
48分频器可由2分频器与3分频器组合构成。
也可由两片74160组合而成。
电路采用反馈置位法,它是通过控制已有计数器的预置控制端
来获得任意进制计数器的一种方法,其原理是利用给计数器重复置入某个数值(可以是最大值,也可以是最小值)的方法来跳跃
个状态,从而获得
进制计数器。
这里通过预制最小值的方法来实现。
因为74161的模N=10,所以两片74160相连最大可实现模100的计数器,取其前48种状态,预置最小值为
47用二进制表示为01000111。
如图所示,计数器从00000000开始计数,到达第47个脉冲后,电路进入置数状态,图中与非门NAND4输出低电平给
(图示LDN),使计数器处于预置工作状态,待第48个计数脉冲到来后,将输入数据全部置0。
同时我们把置数归零的条件接一个与门作为输出端观察输出波形,便得到如图4的波形。
下一个计数脉冲到来后,计数器又从00000000开始计数,从而实现从0--47的计数功能。
其他任意模计数器设计方法与此类似。
此时,48分频器电路如图7所示
图748分分频器
仿真波形如图8所示
图848分频器仿真波形
(4)1000分频器
1000分频采用三片74160二进制计数器组成模1000计数器的第十位输出,电路如图9。
原理与模48的相同。
图91000分频器
封装好的1000分频器模块如图10
图101000分频器模块
通过编译可以仿真出1000分频器的仿真波形图如图11
图111000分频的仿真波形
(5)整体脉冲信号发生器
将上述模块整合,可组成整体的脉冲发生电路,如图12
图12信号发生电路
2、计时电路
实验要求设计一个可以完成00:
00:
00到23:
59:
59计时功能的数字钟,可通过两个模60计数器和一个模24计数器三者级联构成。
该电路分为秒个位、秒十位、分个位、分十位、时个位和时十位。
因为计数器最终的输出都要接至译码显示电路,这就要求秒分时的个十位都要显示十进制数,因此选用同步十进制计数器74160实现。
(1)模60计数器
同上面设计48分频器的方法,模60计数器由两片74160级联组成。
因为个位要求是十进制,所以直接将低位的进位端接至高位的使能端ENT。
用8421BCD码表示59,结果为01011001,所以将
、
、
、
作为反馈输入端,经过一个与非门,送到两片74160的置数端LDN,即完成了0到59的模60计数。
同时,将与非门的输出LDN作为进位信号,接到高位,从而实现了低位满60向高位进位的计数方式,电路图如图13:
图13模60计数器
封装好的模60计数器模块,如图14
图14模60模块
通过编译我们可以得到仿真的模60输出波形如图15
图15模60仿真波形
需要注意的,选择两个门电路实现“置数清零”和“分满进位”,可以有效避免“秒跳”现象的发生。
(2)模24计数器
原理同模60计时器,模24计数器电路图如图16
图16模24计数器
同样,封装好的模24计数器如图17所示
图17模24模块
通过编译,我们可以得到仿真的模24的波形图如图18:
图18模24仿真波形
(3)完整计时电路
计时电路由一个模24计数器和两个模60计数器构成,分别代表时、分、秒各位。
基本思想是:
将秒位的置位端LDN作为分位的使能端,将分位的置位端LDN作为时位的使能端,高低位之间采用同步的时钟,时钟频率为1Hz的脉冲信号。
具体电路图如图19
图19计时电路
3、译码显示电路
利用4片74151(8选1数据选择器)构成24选4的数据选择器,采用统一的选址信号控制,其四路输出信号Y0、Y1、Y2、Y3即为时分秒各位的8421BCD码。
同时,将这四路信号送给显示译码器7447,就可以实现LED数码管的显示。
而频率较高的选址信号A0、A1、A2则通过译码器74138实现多位数码的动态显示。
译码显示电路原理框图如下图20
图20
(1)24选4数据选择器
24选4数据选择器由四片8选1数据选择器74151构成,每一片74151均代表一位8421BCD码,即四片可以表示需显示的时分秒各位数字。
四片74151的统一地址选择端A0、A1、A2是一个由74160构成的模6计数器的低三位输出,其原理简单,在此不加赘述。
但需要注意的是,模6计数器的时钟信号频率较高,为1KHz,这样才能保证在每次只选择一路信号送到显示译码器译码的情况下,从人的角度观察,时分秒多位数码依然是同时显示的。
74151的输入来自模24、模60计数器的对应输出端,当数据选择器选择了某一路信号后,即将其送到7447译出段码,由于位码选择信号与数据选择信号同步,所以74138也选择相应的位码,从而完成了显示译码的全过程,电路图如下图21
图2124选4数据选择器
(2)模6计数器
模6计数器设计方法同上面的计数器,均使用反馈置数法。
只是在CLK输入端需要输入1KHz的频率信号,这里在前面接了一个1000分频器和48分频器。
电路图如下图22
图22模6计数器
(3)完整译码显示电路
电路图如下图23所示:
图23显示译码电路
如图23中所示,模6计数器输出作为位码和段码选择的共同驱动信号,才能保证24选4数据选择器选出的段码在合适的位置显示。
且实验板上的七段LED数码管是共阳输入,所以位码应该是低电平输入,因此选择了低电平输出的74138作为位码的数据选择器。
综上,将4个74151的输出的相应的BCD码输入到动态显示电路中即可实现时钟信号的输出,达到测量显示的目的。
4、校分(时)电路
当校分(时)开关打到“正常”状态(低电平)时,计数器正常计数;当开关打到“校分(时)”状态(高电平)时,秒(分)个位和十位正常计数,而将1Hz的秒脉冲信号送给分(时)位,实现快速校分(时)。
校分校时电路图如下图24:
图24校分(时)电路
封装好的较分校时模块如图25,
图25校分(时)电路
校分(时)电路在实际数字钟实现功能中的应用如图26
图26整体校分时电路
如图所示,图中i3和i4分别接到分计数器的使能端和时计数器的使能端,而1q和2q分别为秒计数器的进位和分计数器的进位。
5、防抖动开关
由于EDA实验系统提供的开关是机械开关,机械开关在接通和断开过程中,通常会产生一串电脉冲,会使逻辑电路发生误动作,因此需设计一个防抖动电路。
根据校分开关的不同状态决定送入使能端的信号来源,以完成正常计数或校分功能,因此采用一个D触发器作为防抖开关,其电路实现如下图27:
图27防抖动开关
6、保持电路和清零电路
(1)保持电路
保持电路负责实现数字钟计时保持功能:
K=0时电路正常工作,K=1时电路计数保持不变。
利用74160本身自带的使能端即可实现。
ENP=1时电路正常工作,ENP=0时电路保持不变。
所以将使能开关加入非门后接入每个计数器的ENP端即可,如下图28所示:
图28保持电路
(2)清零电路
清零电路有两层含义,一是开机清零,即开机时从零开始计数;二是将清零开关打至清零状态,电路中所有计数器均清零。
因为十进制计数器74160本身带有清零开关,因此可用一个开关直接控制各个计数器的清零端即可。
实验要求K=0时正常工作,K=1时时分秒各位清零。
因此需将开关接非门之后再接到计数器清零端,电路图如下图29所示:
图29清零电路
7、整点报时电路
整点报时功能要求电路在在59’53”,59’55”,59’57”时报时频率为500Hz,59’59”时报时频率为1KHz。
(1)500Hz信号发生器
在显示模块中,已经产生了1KHz的信号,将实验板上提供的48MHz信号经过48分频后,在经过1000分频即可得到频率为1KHz的信号。
要得到频率为512Hz的信号,只要将1KHz经过2分频即可。
产生2分频电路有两种方法:
一是通过一个D触发器,将1KHz信号作为CP脉冲输入,输出可得500Hz信号;二是利用模2计数器作为分频器使用。
模2计数器仍然采用置数法设计,当输出为0001时,LDN值为0,开始置数,所以计数器只能输出0000、0001两个数。
图23中,从512输出即可得2分频信号。
(2)报时电路
闹钟BCD码表示如下表1
时刻
分十位
分个位
秒十位
秒个位
音调
59:
53
0101
1001
0101
0011
512Hz
59:
55
0101
1001
0101
0101
512Hz
59:
57
0101
1001
0101
0111
512Hz
59:
59
0101
1001
0101
1001
1KHz
表1
报时电路的电路图如下图30所示
图30整点报时电路
8、星期计时功能
同前原理,可做一个模七计数器,如图31
图31模7计数器
整体星期电路可以表示成图32
图32星期电路
9、整体电路功能综述
K1是系统的使能开关(K1=0正常工作,K1=1时钟
保持不变);
K2是系统的清零开关(K2=0正常工作,K2=1时钟
的分、秒全清零);
K3是系统的校分开关(K3=0正常工作,K3=1时可
以快速校分)
K4是系统的校时开关(K4=0正常工作,K4=1时可
以快速校时);
整点报时功能要求电路在在59’53”,59’55”,59’57”时报时频率为500Hz,59’59”时报时频率为1KHz。
星期的计数,通过设计模7计数器来实现“1”到“7”的循环记数
六、调试仿真和编程下载
调试与仿真结果在上文已给出,波形仿真正确无误后,就可以下载到芯片上,进行硬件实施。
首先打开实验箱电源开关。
在下载之前,必须先对每个管脚进行分配。
选择“Assignments﹣Pins”,打开“PinPlanner”对话框。
放大ALTERA芯片模型,可将“NodeName”中各个管脚号拖至芯片对应管脚,使其重合出现深色标志。
每个管脚都配置完成后,点击Save保存配置并关闭窗口。
选择“Assignments-Device”,打开“DeviceandpinOptions”对话框,选择“UnusedPins”标签,将没有用到的管脚设置为高阻态。
再次确认实验所用芯片是否为EP1C12Q240C8,此时即可点击主编辑页面的下载按钮,当出现下载界面后,选中“HardwareSetep”,在下拉菜单中选择ByteBlaster[LPT1],再次回到下载界面,点击“Start”按钮,开始从实验箱下载。
本实验用的是QuartusII软件和SmartSOPC实验箱,选用Altera公司的Cyclone系列FPGA芯片,并配置相应的管脚。
下载线与PC机相连,各模块下载后,可以通过实验板上的数码管看到数字钟的运行情况,通过改变相应开关的状态,可以让数字钟实现本实验所设计的功能。
经检验,满足设计要求。
七、实验总结
1、实验中遇到的问题及解决方法
在这次的数字钟设计过程中碰到的问题还是很多的,但是最终在老师、同学及自己的思考下最终都顺利解决了。
最终在完成基本功能的基础上,我增加了整点报时、星期、两个附加功能。
计数电路:
在二十四小时计时电路的设计过程中遇到了很大的麻烦,在上面我浪费了大半天。
(1)在正常计时电路中,利用置数端还是清零端。
我首先考虑到的是用异步清零。
在功能仿真时,不会出现错误,但是实际情况下,由于电路有一段微小的延时,导致输出波形中有毛刺存在。
同时考虑到清零电路时,使得清零端电路变得复杂。
于是我改为用置数端在一个周期结束时同步置数,同时空出清零端作为清零开关,使得电路简单清晰。
(2)六个计数器的连接
问题主要在把秒、分、时三个电路分成三个模块做还是只做在一个模块里。
一开始,我是依次进行封装然后级联的,发现在后续增加保持、清零等一些功能时,总是要将之前所做的模块修改,导致实施起来很麻烦。
而且在计数时,只能从0到22小时循环,而没有23小时,但是依据模24计数器的波形仿真,计数器并不存在问题。
于是我重新对波形进行了观察,发现在22到0之间的确有一个非常短暂的23过渡段,同时分位的59也有相同的问题。
问题应该出在置数及进位端。
为了便于后面电路的实施,同时修正计数的错误,我把六个计数器放在同一个图中进行连接。
并重新考虑分钟和小时的置数端,将所有低位的进位信号都考虑在高位的指数信号中,最终完成了整个24小时的计数。
(3)保持开关的位置
加入了保持开关后,我发现拨动开关的瞬间,数码管上的显示时间有时会突变抖动。
这应该是信号不稳定的关系造成的,因为在设计的电路中,我把保持开关和48MHz信号相与作为分频器的输入。
经过思考,我将开关直接接入秒个位计数器的使能端,使其直接控制计时电路,从而消除了瞬间抖动的现象。
(4)星期
在起初的设计中,我用一片74160完成1~7的模7计数,即计数器从计时开始,计到7时,下一个使能信号来临置1。
这样,开机时,计数器从0开始计数,星期的数码管显示为0,当计数器完成一个计数周期后,第二个计数周期才从1开始计数。
并且清零开关作用后,也从0开始计时。
这与一般的逻辑思维相矛盾。
因此我在计数器的输出端增加