您好,欢迎访问三七文档
数字钟的设计HefeiUniversity项目设计报告数字钟的设计1数字钟的设计一、项目要求1、数字钟显示秒、分、时。2、数字钟可清零、可进行校时,校分。3、数字钟能进行整点报时及闹铃。二、设计方案①模块介绍:本数字钟的设计是由计数模块、调键模块、分频模块、整点报时及音乐模块MISIC组成。其中计数模块分别是由miao60、fen60、shi24模块组成,构成一个计数显示电路。调键模块是由计数模块和二选一模块组成,分别控制shi24、fen60模块。分频模块将10MHz的脉冲产生1Hz、4Hz和1MHz的脉冲,1Hz用于计数模块,为计数时钟的脉冲。4Hz和1MHz用音乐模块,为数控分频器的时钟输入和4Hz音乐节拍。整点报时模块是当时钟计数到整点时,蜂鸣器发出声响。音乐模块对预置的时间可播放长达一分钟梁祝音乐。②设计思路:(1)自顶向下设计分割图2.1所示:Shuzizhong(数字钟)Tiaojian(调时、调分)Miao60(秒60)Fen60(分60)Shi24(时24)Alert(整点报时)MUSIC(音乐模块)图2.1数字钟自顶向下设计分割图(2)数字钟顶层模块图如图2.2所示:数字钟的设计2图2.2数字钟顶层图三、项目内容3.1时钟计数与校时校分模块本项目所设计的数字钟能进行正常的时、分、秒计时功能和校时校分功能。计时标准为23:59:59,即一分钟60秒,一小时60分钟,一天24小时。当秒位达到59,由进位端向分位发出一个脉冲;当分位达到59,由进位端向时位发出一个脉冲。rst为清零开关,当其为“1”,时钟清零为12:00:00。本项目将时钟计数与校时校分这两个功能集成在一个模块中,并通过两个2选1数据选择器实现此功能。当选择开关s为高电平时,将选中4Hz输入信号作为分计数器的计数脉冲或时计数器的脉冲,使它们频率加快,从而实现校时校分的功能;当选择开关s为低电平时,则数据选择器将秒计数的进位脉冲送到分计数器,也能将分计数器的进位脉冲送到时计数器,使数字钟正常工作。3.1.1时钟秒计数子模块给秒计数器一个1Hz的时钟脉冲,正常计数时,当秒计数器(60进制)计数到59时,再来一个脉冲,则秒计数器清零,重新开始新一轮的计数,而进位则作为分计数器的计数脉冲,使分计数器计数加1。数字钟的设计3秒进位子模块封装图如下所示:具体程序如下图所示:数字钟的设计4仿真图如下:①:当rst信号为高电平时,秒计数器被清零;②:当秒计数到59时,产生一个进位,即carry=‘1’,之后重新开始计数。数字钟的设计53.1.2时钟分计数子模块正常计数时,当分计数器计数到59时,再来一个时钟脉冲,则分计数器清零,而进位则作为时计数器的计数脉冲,使时计数器加一。现在把秒计数器的进位脉冲和一个频率为4Hz的脉冲信号同时接到一个2选1数据选择器的两个数据输入端,而位选信号则接一个脉冲按键开关,当按键开关不按下去时(即为0),则数据选择器将秒计数器的进位脉冲送到分计数器,此时,数字钟正常工作;当按键开关按下去时(即为1),则数据选择器将另外一个4Hz的信号作为分计数器的计数脉冲,使其计数频率加快,当达到正确的时间,按动按键开关,从而达到校分的目的。①2选1数据选择器其封装图如下所示:具体程序如下所示:仿真图如下:数字钟的设计6当s=‘1’时,y输出为b,即给分计数器的脉冲频率为4Hz,此时可对分进行校时功能;当s=‘0’时,y输出为a,即给分计数器的脉冲为秒计数器的进位脉冲,此时实现的功能是让数字钟正常工作。②分计数器其封装图如下图所示:具体程序如下所示:数字钟的设计7仿真图如下所示:①:当rst信号为高电平时,分计数器被清零;②:当分计数器计数到59时,产生一个进位,即carry=‘1’,之后重新开始计数。3.1.3时钟时计数子模块时计数子模块是由一个24进制计数器组成,正常计数时,当时计数器计数到23时,再来一个脉冲,则时计数器清零,重新开始新一轮的计数。现在把分计数器的进位脉冲和一个频率为4Hz的脉冲信号同时接到一个2选1数据选择器的两个数据输入端,而位选信号则接一个脉冲按键开关,当按键开关为低电平时,则数据选择器将分计数器的进位脉冲送到时计数器,此时,数字钟正常工作;当按键开关为高电平时,则数据选择器将另外一个4Hz的信号作为时计数器的计数脉冲,使其计数频率加快,当达到正确的时间,按动按键开关,从而达到校时的目的。时计数器的封装图如下图所示:具体程序如下所示:数字钟的设计8仿真图如下所示:①:当rst信号为高电平时,时计数器被清零,回到初始状态12;②:当时计数器计数到23时,时清零,重新开始新一轮的计数。数字钟的设计93.2定时及整点报时模块①功能描述该模块分为两个功能,即定时和整点报时定时:代码中设计06:30:00时,发光二极管会亮起,同时蜂鸣器也会发出声音,提醒所定的时间到了,即音乐模块里设计的“梁祝”,维持时间一分钟整点报时:代码中设计每到一个整点的时候,发光二极管会亮起,且蜂鸣器会发出声音,提醒整点到了②实验代码③封装图数字钟的设计10④仿真波形波形分析:如上图所示1)定时:当时间从06:30:00变到06:30:59,在这一分钟的时间内,发光二极管一直在处于高电平状态(lamp=“1111”),即灯亮起,且随着音乐的节拍有规律有节奏的闪烁;而此时的蜂鸣器会发出设计好的“梁祝”(speak1=“1111”),维持一分钟的时间,到06:31:00时,发光二极管处于低电平状态(lamp=“0000”),即灯不亮2)整点报时:当时间处于整点时,例上图处于07:00:00时刻,此时,发光二极管会亮起(lamp=“1111”),且此时的蜂鸣器会发出声音(speak2=“1111”)3.3分频器模块①功能描述把10MHz分为1Hz,4Hz,1MHz三个频率,1Hz的作为秒计数的时钟信号频率4Hz的作为音乐模块中的138计数器的时钟信号频率,1MHz作为音乐模块中的数控分频器的SPK。②实验代码(1)10MHz分为1Hz时,即10,000,000分频数字钟的设计11(2)10MHz分为4Hz时,即2,500,000分频将上述代码中的counter_len设置为整数型,并赋值为2499999。其余与上述代码相同,即可实现4Hz。(3)10MHz分为1MHz时,即10分频将上述代码中的counter_len设置为整数型,并赋值为9。其余与上述代码相同,即可实现1MHz。③封装图分为1Hz分为4Hz分为1MHz④仿真波形数字钟的设计12在此只列出将10MHz分为1MHz的仿真波形,余下两个类似,不再赘余波形分析:当第一个clk信号到第五个clk信号期间,qout一直输出低电平,当第六个clk信号来到时,qout开始输出高电平,明显可以看出这是一个10分频。则可以类推,10MHz分为1Hz为10,000,000分频,10MHz分为4Hz为2,500,000分频3.5音乐模块MISIC3.5.1音乐模块原理:硬件乐曲演奏电路顶层模块图如图3.5.1所示,电路由5个子模块构成。本模块为“梁祝”乐曲演奏电路的实现。组成乐曲的每个音符的发音频率值及其持续的时间是乐曲能连续演奏所需的两个基本要素。图3.5.1乐曲演奏电路顶层设计3.5.2SPK模块①SPK模块原理:音符的频率可以由图3.5.2中的SPK获得。这是一个数控分频器。由其CLK端输入一具有较高频率(1MHz)的时钟,通过SPK分频后,由boom数字钟的设计13口输出。由于直接从分频器中出来的输出信号是脉宽极窄的信号,为了有利于驱动扬声器,需另加一个D触发器分频以均衡其占空比,但这时的频率将是原来的1/2。SPK对CLK输入信号的分频比由输入的11位预置数TN[10..0]决定。SPK的输出频率将决定每一音符的音调;这样,分频计数器的预置值TN[10..0]与输出频率就有了对应关系,而输出的频率又与音乐音符的发声有对应关系,例如在TT模块中若取TN[10..0]=11'H40C,将由boom发出音符为“3”音的信号频率。详细的对应关系可以参考图3.5.3的电子琴音阶基频对照图。CLKTN[10..0]SPKSSPKinst1图3.5.2TT模块图图3.5.3电子琴音阶基频对照图(单位Hz)②VHDL代码数字钟的设计143.TT模块①TT模块原理:音符的持续时间需根据乐曲的速度及每个音符的节拍数来确定,图3.3中模块TT的功能首先是为模块SPK(11位分频器)提供决定所发音符的分频预置数,而此数在SPK输入口停留的时间即为此音符的节拍周期。模块TT是乐曲简谱码对应的分频预置数查表电路,程序数据是根据图3.2得到的,程序中设置了“梁祝”乐曲全部音符所对应的分频预置数,共14个,每一音符的停留时间则由音乐节拍和音调发生查表模块ROM中简谱码和工作时钟clock的频率决定,在此为4Hz。这4Hz频率来自分频模块fenpin4hz.而模块TT的14个值的输出由对应于rom模块输出的q[3..0]及4位输入值index[3..0]确定,而index[3..0]最多有16种可选值。输向模块TT中index[3..0]的值在SPK中对应的输出频率值与持续的时间由模块rom决定。模块图如图3.5.4所示:Index[3..0]CODE[3..0]HIGHTone[10..0]TTinst2图3.5.4TT模块图②VHDL代码数字钟的设计154.CNT138模块①CNT138模块原理:模块CNT138是一个8位二进制计数器,内部设置计数最大值为139,作为音符数据ROM的地址发生器。这个计数器的计数频率即为4Hz。即每一计数值的停留时间为0.25秒,恰为当全音符设为1秒时,四四拍的4分音符持续时间。例如,“梁祝”乐曲的第一个音符为“3”,此音在逻辑中停留了4个时钟节拍,即1秒时间,相应地,所对应的“3”音符分频预置值为11'H40C,在SPK的输入端停留了1秒。随着计数器CNT138按4Hz的时钟速率作加法计数时,即随地址值递增时,音符数据ROM模块中的音符数据将从ROM中通过q[3..0]端口输向TT模块,“梁祝”乐曲就开始连续自然地演奏起来了。CNT138的节拍是139,正好等于ROM中的简谱码数,所以可以确保循环演奏。对于其他乐曲,此计数最大值要根据情况更改。模块图如图3.5.5所示:CLKQ[7..0]CNT138inst图3.5.5CNT138模块图②VHDL代码5.音符ROM模块此模块是用来存放梁祝的音符数据,数据如下所示,模块图见图3.5.6。数字钟的设计164bits256wordsBlocktype:M4Kaddress[7..0]clockq[3..0]rominst5图3.5.6音符ROM图音符数据:WIDTH=4;//“梁祝”乐曲演奏数据DEPTH=256;//实际深度139ADDRESS_RADIX=DEC;//地址数据类是十进制DATA_RADIX=DEC;//输出数据的类型也是十进制CONTENTBEGIN//注意实用文件中要展开以下数据,每一组占一行00:3;01:3;02:3;03:3;04:5;05:5;06:5;07:6;08:8;09:8;10:8;11:9;12:6;13:8;14:5;15:5;16:12;17:12;18:12;19:15;20:13;21:12;22:10;23:12;24:9;25:9;26:9;27:9;28:9;29:9;30:9;31:0;32:9;33:9;34:9;35:10;36:7;37:7;38:6;39:6;40:5;41:5;42:5;43:6;44:8;45:8;46:9;47:9;48:3;49:3;50:8;51:8;52:6;53:5;54:6;55:8;56:5;57:5;58:5;59:5;60:5;61:5;62:5;63:5;64:10;65:10;66:10;67:12;68:7;69:7;70:9;71:9;72:6;73:8;74:5;75:5;76:5;77:5;78:5;79:5;80:3;81:5
本文标题:数字钟的设计
链接地址:https://www.777doc.com/doc-6388690 .html