简易数字钟的EDA设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6.2 简易数字钟的EDA设计
6.2.1 设计要求
本案例将在QuartusII开发系统中用可编程逻辑器件,完成简易数字钟的EDA设计,具体要求为:
1数字钟功能:数字钟的时间为24小时一个周期;数字钟须显示时、分、秒;
2校时功能:可以分别对时、分、秒进行单独校时,使期调整到标准时间;
3扩展功能:整点报时系统。设计报整点报时电路,每当数字钟计时59分50秒时开始报时,并发出鸣叫声,到达整点时鸣叫结束,鸣叫频率为100Hz。
6.2.2 功能描述
数字式电子钟实际上是一个对标准1Hz进行计数的计数电路,秒计数器满60后向分计数器进位, 分计数器满60后向时计数器进位, 时计数器按24翻1规律计数, 计数输出经译码器送LED显示器, 由于计数的起始时间不可能与标准时间(如北京时间)一致,故需要在电路上加上一个校时电路,该数字式电子钟除用于计时外,还能整点报时,如图6-4所示为多功能数字式电子钟的构成框图。除校时功能外,电子钟处于其他功能状态时并不影响数字钟的运行,该电子钟利用GW48 实验平台的扬声器进行整点报时,设置2个按键作为功能键和调整键。
图6-4多功能数字式电子钟的系统框图
1输入
1)K1:模式选择键,第一次按K1按钮时为校秒状态, 按第二次为校分状态, 按第三次为校时状态,按第四次为计时状态,系统初始状态为计时状态。
2)K2:手动校时调整键,当按住该键不放时,表示调整时间直至校准的数值,松开该键则停止调整。
3)clk_1kHz:1000Hz的基准时钟输入,该信号10分频后作为整点报时所需的音频信号的输入时钟,1000分频后作为数字钟输入时钟。
2输出
HH[1..0] HL[3..0]为BCD码小时输出显示;MH[2..0] ML[3..0] 为BCD码分输出显示;SH[2..0] SL[3..0]为BCD码秒输出显示;alarm为报时输出。
6.2.3 数字钟的层次化设计方案
根据上述功能,可以把多功能数字式电子钟系统划分为三部分:时钟源(即标准秒钟的产生电路),时分秒计数器模块、数字钟模块、校时模块、数字秒表模块、闹钟和整点报模块。
1时钟源--晶体振荡器电路
1)原理说明
如精度要求不高可选用555构成的多谐振荡器,设其振荡频率为f0=1kHz,电路原理图如图6-5所示,而后通过分频器电路(1000分频)即可产生1Hz的方波信号供秒计数器进行计数,分频器电路可由3片十进制计数器级联而得,根据6.2.2节的描述,本设计案例选用图6-5的多谐振荡器电路的输出作为数字式电子钟的基准时钟输入,基准时钟输入一方面用于定时报时和整点报时所需的音频信号。另一方面该信号惊10分频后作为数字秒表的输入时钟,经1000分频后作为数字钟输入时钟。
2)时钟电路子模块counter1k的设计
时钟电路子模块可由3个十进制计数器74160级联而成,输出有10分频输出clk_10, 1000分频输出clk_1Hz,其原理图如图6-7所示,74LS160为同步可予置4bit十进制加法计数器,它具有同步载入,异步清零的功能。
图6-5 多谐振荡器电路图6-6时钟电路子模块原理图在QuartusII中,利用原理图输入法完成源程序的输入、编译和仿真。时钟电路子模块的仿真输出波形文件如图6-7所示。在仿真结果正确无误后,可将以上设计的时钟电路子模块counter1k设置成可调用的元件counter1k.sym如图6-8所示。,以备高层设计中使用。
图6-7时钟电路仿真输出波形图6-8时钟电路模块元件符号图
2时分秒计数器模块
1)原理说明
时分秒计数器模块由秒个位、十位计数器、分个位、十位计数及时个位、十位计数电路构成。其中:秒个位和秒十位计数器、分个位和分十位计数为六十进制计数器,而根据设计要求时个位和时十位构成的为二十四进制计数器。
因此时分秒计数器模块可划分为时计数、分计数和秒计数3个子模块,根据设计要求时计数子模块为一个二十四进制可预置BCD码计数器模块;分计数和秒计数子模块均为六十进制可预置BCD码计数器模块。
2)秒计数器模块的EDA设计
秒计数器模块的输入来自时钟电路的秒脉冲clk_1Hz。为实现六十进制可预置BCD码的秒计数器的功能,可采用两级BCD码计数器同步级联而成。第一级属于秒个位,用来计数和显示0~9秒,BCD码计数器每秒数值加1,当这一级达到9秒时,BCD码计数器使其
进位输出信号Tc有效,在下一个时钟脉冲有效沿,秒个位计数器复位到0。秒个位计数器进位输出信号Tc使秒十位计数器(模6计数)使能,在秒个位计数器复位同时,秒十位计数器计数值加1,该过程将持续59秒,此时秒十位计数器状态为1012(5),秒个位计数器状态为10012(9),此时将显示读数为59,同时秒十位计数器进位输出信号Tc为高电平,下一脉冲到来时秒个位计数器和秒十位计数器同时复位到0,并同步产生分脉冲进位输出信号Cout。
根据分析,可用2片74160同步级联设计成六十进制可预置BCD码计数器。74160为同步可预置4bit十进制加法计数器,它具有同步载入,异步清零的功能。构成该计数器的所有触发器都由时钟脉冲同步,在时钟脉冲输入波形上升沿同时触发。这些计数器可以使用置数输入端(LDN)进行予置,即当LDN=0时,禁止计数,输入ABCD上的数据在时钟脉冲上升沿予置到计数器上;如果在时钟脉冲上升沿来到以前LDN=1,则计数工作不受影响。2个高电平有效允许输入(ENP和ENT)和行波进位(RCO)输出使计数器容易级联,ENT、ENP都为高电平时,计数器才能计数。
图6-9为使用2个74160同步级联设计的六十进制进制计数器秒计数器模块的原理图,由前面的分析知分和秒计数器都是模M=60的计数器,其规律为00→01→…→58→59→00…,此底层计数器模块的设计中保留了一个计数使能端CEN、异步清零端Clrn和进位输出端Tc,这三个引脚是为了实现各计数器模块之间进行级联,以便实现校时控制而预留的。
根据计数器置数清零法的原理,第一级计数器置数输入端的逻辑表达式为:
Tc1=not(D1•D3•CEN) (6-1)
第二级计数器置数输入端的逻辑表达式为:
Tc2=not(D1•D3•D4•D6•CEN) (6-2)
如图6-9所示。从图6-9中可以知道当秒计数到010110012(59)时将产生一个进位输出Tc,此输出同时反馈至其置数输入端(LDN)实现0置数。
图6-9 六十进制进制计数器原理图
在QuartusII中,利用原理图输入法完成源程序的输入、编译和仿真。六十进制可预置BCD码计数器子模块count60_160.bdf的仿真输出波形文件如图6-10(a)所示。分析知仿真结果,当计数输出D[7..0]=59时,进位输出Tc=1,结果正确无误。可将以上设计的六十进制可预置BCD码计数器子模块设置成可调用的元件count60_160.sym,以备高层设计中使用,其元件符号图如图6-10(b)所示。