题目:多功能数字钟一、设计任务及要求基于EDA/SOPC系统开发平台和八位七段管码显示模块,运用QuartusⅡ可编程逻辑器件开发软件,设计一个多功能数字钟。二、设计原理多功能数字钟应该具有的功能:显示时-分-秒。整个电子钟的工作应该是在1Hz信号的作用下进行,这样每来一个时钟信号,秒增加1秒,当秒从59秒跳转到00秒时,分钟增加1分,同时当分钟从59分跳转到00分时,小时增加1小时,小时的范围是从0~23时。复位后全部显示00-00-00。在设计中为了显示的方便,分钟和秒钟(显示的范围都是从00~59),小时(00~23)的十位和个位都应该采用十进制计数器。50MHZ信号扫描脉冲1000HZ7段数码管4位信号7位信号32位信号数据选择器显示译码器模8计数器数码管选择控制3位信号3位信号分频器CP(1HZ)电子钟计时电路译码、动态扫描数码管显示器CLK50MHZ计时脉冲1HZ八位七段管码显示模块说明:设计中七段数码管采用动态扫描的方式显示,扫描需要一个比较高频率的信号,本次设计选用1000HZ。为了得到1000Hz信号,必须对输入的时钟信号50MHZ进行分频。显示模块共用10个管脚,其中7个用于连接8个数码管的七段LED,还有3个管脚用于选择点亮哪个数码管,每隔很短的一段时间8个数码管交替点亮,依次循环,动态显示,由于人眼的视觉残留,可以观察到连续的测量计数器的计数值。三、设计原理及方案1.电子钟计时电路模块:moduleshijian(clk1,rst,hour,min,sec);inputclk1,rst;outputreg[7:0]hour,min,sec;always@(negedgeclk1)beginif(!rst)beginhour=0;sec=0;min=0;endelsebeginif(sec60)sec=sec+1;if(sec60)sec=0;if(sec==60)beginsec=0;if(min60)min=min+1;if(min60)min=0;if(min==59)beginmin=0;if(hour24)hour=hour+1;elsehour=0;endendendendendmodule2.分频器模块:modulefenpin1k(cp,clk1000);inputcp;outputclk1000;reg[32:0]cnt;regclk1000;always@(posedgecp)beginif(cnt==49999)beginclk1000=1;cnt=0;endelsebeginclk1000=0;cnt=cnt+1;endendendmodule3.模8计数器模块:modulemo8xuanze(clk,out,sel2,sel1,sel0);inputclk;outputreg[2:0]out;outputregsel2,sel1,sel0;always@(posedgeclk)beginif(out3'b111)out=out+1;elseout=3'b000;sel2=out/4;sel1=out/2%2;sel0=out%2;endendmodule4.显示译码选择模块:moduleledyima(ctrl,hour,min,sec,A,B,C,D,E,F,G);input[2:0]ctrl;input[7:0]hour,min,sec;outputregA,B,C,D,E,F,G;reg[6:0]out;reg[3:0]data;alwaysbegincase(ctrl)3'b000:data=hour/10;3'b001:data=hour%10;3'b011:data=min/10;3'b100:data=min%10;3'b110:data=sec/10;3'b111:data=sec%10;default:data=10;endcasecase(data)0:out=7'b1111110;1:out=7'b0110000;2:out=7'b1101101;3:out=7'b1111001;4:out=7'b0110011;5:out=7'b1011011;6:out=7'b0011111;7:out=7'b1110000;8:out=7'b1111111;9:out=7'b1110011;default:out=7'b0000001;endcaseA=out/64%2;B=out/32%2;C=out/16%2;D=out/8%2;E=out/4%2;F=out/2%2;G=out%2;endendmodule5.总体电路图:四、仿真、测试结果(一)仿真:1)电子钟计时电路模块的仿真结果:2)模8计数器的仿真结果:3)分频器仿真结果:(二)测试:每来一个时钟信号,秒增加1秒,当秒从59秒跳转到00秒时,分钟增加1分,同时当分钟从59分跳转到00分时,小时增加1小时,小时的范围是从0~23时,显示均为十进制动态显示。五、总结与讨论在这次多功能数字钟设计与仿真调试中,我收获了很多,刚开始我因为对程序语言不熟悉进行的很不顺利,通过学习,我更加清楚了设计电路的verilog语言,能够设计简单的电路模块。在老师的细心讲解下,我懂得了数字钟的原理与设计思想,这次课程设计是我对所学知识进一步巩固,提高了自己对QuartusⅡ软件的熟悉程度,将所学的知识成功运用到实际生活中,让我体会到理论联系实际的快乐。在整个过程中,首先,要根据设计要求思考原理及实现方式,根据自己的方案,查阅相关知识。其次,将整体的设计分成一个个子模块,对子模块进行设计。最后将子模块组合成为总体电路并进行仿真调试,过程中要认真仔细。在对设计中出现的问题充分思考和有效解决的过程中,我增加了对电路设计的兴趣。在调试时,老师对我程序中出现的错误及时指出,使我认识到自己的不足,及时改正,在此感谢老师的指导。