Hefei University
项
设计报告
目
数字钟的设计
数字钟的设计
一、项目要求
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所示:
1
数字钟的设计
图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。
2
数字钟的设计
秒进位子模块封装图如下所示:
具体程序如下图所示:
3
数字钟的设计
仿真图如下:
①:当rst信号为高电平时,秒计数器被清零;
②:当秒计数到59时,产生一个进位,即carry=‘1’,之后重新开始计数。
4
数字钟的设计
3.1.2时钟分计数子模块
正常计数时,当分计数器计数到59时,再来一个时钟脉冲,则分计数器清零,而进位则作为时计数器的计数脉冲,使时计数器加一。现在把秒计数器的进位脉冲和一个频率为4Hz的脉冲信号同时接到一个2选1数据选择器的两个数据输入端,而位选信号则接一个脉冲按键开关,当按键开关不按下去时(即为0),则数据选择器将秒计数器的进位脉冲送到分计数器,此时,数字钟正常工作;当按键开关按下去时(即为1),则数据选择器将另外一个4Hz的信号作为分计数器的计数脉冲,使其计数频率加快,当达到正确的时间,按动按键开关,从而达到校分的目的。
① 2选1数据选择器
其封装图如下所示:
具体程序如下所示:
仿真图如下:
5
数字钟的设计
当s=‘1’时,y输出为b,即给分计数器的脉冲频率为4Hz,此时可对分进行校时功能;当s=‘0’时,y输出为a,即给分计数器的脉冲为秒计数器的进位脉冲,此时实现的功能是让数字钟正常工作。
②分计数器
其封装图如下图所示:
具体程序如下所示:
6
数字钟的设计
仿真图如下所示:
①:当rst信号为高电平时,分计数器被清零;
②:当分计数器计数到59时,产生一个进位,即carry=‘1’,之后重新开始计数。
3.1.3时钟时计数子模块
时计数子模块是由一个24进制计数器组成,正常计数时,当时计数器计数到23时,再来一个脉冲,则时计数器清零,重新开始新一轮的计数。现在把分计数器的进位脉冲和一个频率为4Hz的脉冲信号同时接到一个2选1数据选择器的两个数据输入端,而位选信号则接一个脉冲按键开关,当按键开关为低电平时,则数据选择器将分计数器的进位脉冲送到时计数器,此时,数字钟正常工作;当按键开关为高电平时,则数据选择器将另外一个4Hz的信号作为时计数器的计数脉冲,使其计数频率加快,当达到正确的时间,按动按键开关,从而达到校时的目的。
时计数器的封装图如下图所示:
具体程序如下所示:
7
数字钟的设计
仿真图如下所示:
①:当rst信号为高电平时,时计数器被清零,回到初始状态12;
②:当时计数器计数到23时,时清零,重新开始新一轮的计数。
8
数字钟的设计
3.2定时及整点报时模块
①功能描述
该模块分为两个功能,即定时和整点报时
定时:代码中设计06:30:00时,发光二极管会亮起,同时蜂鸣器也会发出声音,提醒所定的时间到了,即音乐模块里设计的“梁祝”,维持时间一分钟 整点报时:代码中设计每到一个整点的时候,发光二极管会亮起,且蜂鸣器会发出声音,提醒整点到了
②实验代码
③封装图
9
数字钟的设计
④仿真波形
波形分析:如上图所示
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分频
10
数字钟的设计
(2)10MHz分为4Hz时,即2,500,000分频
将上述代码中的counter_len设置为整数型,并赋值为2499999。其余与上述代码相同,即可实现4Hz。 (3)10MHz分为1MHz时,即10分频
将上述代码中的counter_len设置为整数型,并赋值为9。其余与上述代码相同,即可实现1MHz。 ③封装图
分为1Hz 分为4Hz 分为1MHz ④仿真波形
11
数字钟的设计
在此只列出将10MHz分为1MHz的仿真波形,余下两个类似,不再赘余
波形分析:当第一个clk信号到第五个clk信号期间,qout一直输出低电平,当第六个clk信号来到时,qout开始输出高电平,明显可以看出这是一个10分频。则可以类推,10MHz分为1Hz为10,000,000分频,10MHz分为4Hz为2,500,000分频
3.5音乐模块MISIC
3.5.1音乐模块原理:
硬件乐曲演奏电路顶层模块图如图3.5.1所示,电路由5个子模块构成。本模块为“梁祝”乐曲演奏电路的实现。组成乐曲的每个音符的发音频率值及其持续的时间是乐曲能连续演奏所需的两个基本要素。
图3.5.1 乐曲演奏电路顶层设计
3.5.2 SPK模块
①SPK模块原理:音符的频率可以由图3.5.2中的SPK获得。这是一个数控分频器。由其CLK端输入一具有较高频率(1MHz)的时钟,通过SPK分频后,由boom
12
数字钟的设计
口输出。由于直接从分频器中出来的输出信号是脉宽极窄的信号,为了有利于驱动扬声器,需另加一个D触发器分频以均衡其占空比,但这时的频率将是原来的1/2。SPK对CLK输入信号的分频比由输入的11位预置数TN[10..0]决定。SPK的输出频率将决定每一音符的音调;这样,分频计数器的预置值TN[10..0] 与输出频率就有了对应关系,而输出的频率又与音乐音符的发声有对应关系,例如在TT模块中若取TN[10..0]=11'H40C,将由boom发出音符为“3”音的信号频率。详细的对应关系可以参考图3.5.3的电子琴音阶基频对照图。
SPKCLKTN[10..0]SPKSinst1 图3.5.2 TT模块图
图3.5.3 电子琴音阶基频对照图(单位Hz)
②VHDL代码
13
数字钟的设计
3.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所示:
TTIndex[3..0]CODE[3..0]HIGHTone[10..0]inst2 图3.5.4 TT模块图
②VHDL代码
14
数字钟的设计
4.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所示:
CNT138CLKQ[7..0]inst 图3.5.5 CNT138模块图
②VHDL代码
5.音符ROM模块
此模块是用来存放梁祝的音符数据,数据如下所示,模块图见图3.5.6。
15
数字钟的设计
romaddress[7..0]4 bits256 wordsq[3..0]clockinst5Block type: M4K 图3.5.6 音符ROM图
音符数据:
WIDTH = 4 ; //“梁祝”乐曲演奏数据 DEPTH = 256 ; //实际深度139
ADDRESS_RADIX = DEC ; //地址数据类是十进制
DATA_RADIX = DEC ; //输出数据的类型也是十进制
CONTENT BEGIN //注意实用文件中要展开以下数据,每一组占一行 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; : 6; 55: 8; 56: 5; 57: 5; 58: 5; 59: 5; 60: 5 ; 61: 5 ; 62: 5 ; 63: 5; :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 ; 82: 3 ; 83: 3; 84: 5; 85: 6; 86: 7; 87: 9; 88: 6; : 6; 90: 6 ; 91: 6 ; 92: 6 ; 93: 6; 94: 5; 95: 6; 96: 8; 97: 8; 98: 8; 99: 9;
100:12;101:12 ;102:12 ;103:10;104: 9; 105: 9;106:10;107: 9;108: 8;109: 8; 110: 6;111: 5 ;112: 3 ;113: 3;114: 3; 115: 3;116: 8;117: 8;118: 8;119: 8; 120: 6;121: 8 ;122: 6 ;123: 5;124: 3; 125: 5;126: 6;127: 8;128: 5;129: 5; 130: 5;131: 5 ;132: 5 ;133: 5;134: 5; 135: 5;136: 0;137: 0;138: 0; END ;
四、硬件实现
本次实验电路选择模式7,电路图如下所示:
16
数字钟的设计
4.1引脚锁定
将设计编程下载进选定的目标器件中,作进一步的硬件测试,操作如下: ①实验系统对应信号与芯片引脚对照表
端口信号名 clk2 clk3 clk rst jian5 jian8 q1 q2 q3 q4 q5 q6 speak led1 led2
17
结构图上信号名 CLOCK2 CLOCK0 CLOCK9 PIO3 PIO4 PIO7 PIO19-PIO16 PIO23-PIO20 PIO27-PIO24 PIO31-PIO28 PIO35-PIO32 PIO39-PIO36 SPEAKER PIO43-PIO40 PIO47和PIO44 实验箱显示 4Hz 256Hz 10MHz 键4 键5 键8 译码器1 译码器2 译码器4 译码器5 译码器7 译码器8 扬声器 D4、D3、D2、D1 D8和D5 数字钟的设计
②:引脚锁定图如下所示
4.2硬件测试
硬件实现图片 情况 结果分析 无论是按系统复位键还是按键4键,都初始状态:设可以将数字钟回归初始状态,即为12:为12:00:00 00:00,同时蜂鸣一下,表示整点报时 校分 校时 若想改变时的显示,按动键8,使时以4Hz为计数脉冲,使其计数频率加快,当达到正确时间时,松动按键开关 若想改变分的显示,按动键5,使分以4Hz为计数脉冲,使其计数频率加快,当达到正确时间时,松动按键开关 18
数字钟的设计
秒进位前:此时时间为05:04:59,当下一个时钟脉冲来的时候会产生一个进位信号给分 秒进位 秒进位后:当分获得进位信号后,分在原有的基础上加1,而此时,秒会清零,此时时间显示为05:05:00 分进位前:此时时间为05:59:59,又一个时钟上升沿过来时,秒会产生一个进位信号给分,分会产生一个进位信号给时 分进位后:时在原有的基础上加1,分位和秒位清零,则此时时间显示为06:05:00 代码中设定闹铃时间为06:30:00,当时间为06:30:00时,上面的前四个发光闹铃定时:设二极管会一直亮起,后面四个会随着我置为06:30:00 们闹钟的梁祝音乐有序的闪烁,响铃持 续时间为1分钟 分进位 五、项目总结
,才会一步步向自己的目标靠近,才会取得自己所要追求的成功。本次数字钟的设计,我们小组花了很多的精力,经过对源程序的编辑、编译、仿真、编程下载,在EDA实验开发系统进行验证时达到了我们预期的效果。但这过程并不是一帆风顺,中间遇到了很多的困难。一开始我们是分模块进行设计,每个人负责几个模块。比如在负责音乐模块中,我们小组一开始想利用锁相环获得1MHz和4Hz,却发现编译通不过,我们很是困惑,不知哪里出现问题。最后通过查找资料发现4Hz已不再cyclone芯片的分频范围内,找到原因后,我们小组转换思路,利用以前做的分频模块解决了问题。做完各个模块后,顶层电路图的绘制也出现了很多的问题,令我们小组最头痛的是怎样将音乐模块与计数显示电路连接起来,我们小组想了很长时间,最后利用二选一模块很巧妙地解决了这个问题。因我们的顶层电路复杂,进行连线的不可避免有漏接的现象,我们不得不一个一个模块检查,经过我们的努力,终于实现了所有的要求。在实验中,我们小组一起交流解决了问题,使我们明白了和他人共同合作的重要性。我们想成功就是在不断摸索着前进中实现的,遇到问题我们不能灰心、烦躁,甚至放弃,而要静下心来仔细思考,分部检查,找出最终的原因进行改正,这样才会有进步
19
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- awee.cn 版权所有 湘ICP备2023022495号-5
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务