基于verilog数字钟设计报告.doc
《基于verilog数字钟设计报告.doc》由会员分享,可在线阅读,更多相关《基于verilog数字钟设计报告.doc(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上一、 课程设计目标 1. 熟悉并掌握verilog 硬件描述语言2. 熟悉quartus 软件开发环境3. 学会设计大中规模的数字电路,并领会其中的设计思想 二、课程设计实现的功能(1) 设计一个数码管实时显示时、分、秒的数字时钟(24小时显示模式);(2) 可以调节小时,分钟。(3) 能够进行24小时和12小时的显示切换。(4) 可以设置任意时刻闹钟,并且有开关闹钟功能。(5) 有整点报时功能,几点钟LED灯闪亮几下。(6) 有复位按键,复位后时间从零开始计时,但闹钟设置时间不变。三、 设计原理:1、总原理框图:译码显示模块切换12进制显示复位分钟校正小时校正分频模
2、块计数模块是输出整点报时信号到达整点输出闹钟信号是否到闹钟时间设置闹钟分钟设置闹钟小时模式选择模块是2、 各个子模块设计: (1)、分频模块 :分频模块的作用主要是要获得各种频率的时钟信号。输入信号为50MHZ的信号,要想获得1HZ的信号作为秒脉冲计时,则要对50MHZ信号分频。通过计数的方式,当计数从0开始到24 时,1HZ信号取反一次,计数又从0开始,如此循环,就可以得到1HZ脉冲信号。对于其他信号也是如此,只是计数值不一样,得到的分频信号不同。部分代码如下: always(posedge _50MHZ or negedge nCR)begin if(nCR) begin Q1=32d)
3、begin Q1=32d0; _1HZ=_1HZ; end else begin Q1=Q1+1d1; end(2) 、计数模块 : 秒计数:在1HZ脉冲下进行秒计时,当计时达到59秒后,在下一个脉冲来临变0,并发出一个脉冲信号,可供下面分钟计数作为输入脉冲信号计时。分钟计数:在输入脉冲下,分钟开始计时,当计时达到59后,在下一个脉冲来临变0,并发出一个脉冲,供小时计数的输入脉冲新号。小时计数:脉冲信号来临时,计数加1,达到23后在下一个脉冲的作用下清零,从新计时。如果有复位信号,则时分秒全部清零。部分代码如下: module second(cp,reset,mode_flag,BT2,SH,
4、SL,co);input cp,reset,BT2;input3:0mode_flag;output co=1b0;/输出脉冲信号reg co;output 3:0SL,SH; /输出秒计时的十位、各位reg3:0SH,SL; reg7:0cnt;always(posedge cp or negedge reset )beginif(!reset) begin /有复位,清零 cnt=8d0; SH=4d0; SL=4d0;endelse if(mode_flag=4b0010)&(!BT2) begin/ 如果分钟调节,秒清零 cnt=8d0; SH=4d0; SL=4d0;end if(c
5、nt=8d59) /计时达到59,下一个脉冲下从新计时 begin cnt=8d0; SH=4d0; SL=4d0; co=1b1; end else begin co=1b0; cnt=cnt+8d1; SL=cnt%10; /秒十位 SH=cnt/10; /秒各位 end end end endmodule 分计时和小时计时代码和上述类似,不再举出。second u4(_1HZ,reset,mode_flag,Keydone2,SH24,SL24,co1);minute u5(co11,reset,MH24,ML24,co2);hour u6(co22,reset,HH24,HL24);
6、(3) 、模式选择模块 :同过一个模式档按键MODE,按一下产生对应一种模式mode_flag,并且可以循环。在不同的模式下可以进行不同的操作。其中mode_flag=40000为正常显示计时,mode_flag=40001为小时调钟模式,mode_flag=400010为分钟调钟模,mode_flag=40011为闹钟小时设置模式,mode_flag=40100为闹钟分钟设置模式。模式产生:module mode (MODE,mode_flag); input MODE ; output 3:0mode_flag; reg 3:0mode_flag; always (negedge MODE
7、 )begin /如果检测到有按键按下mode_flag = mode_flag+ 4b1; /模式值加1if(mode_flag = 4b0101) /到最后一个模式后返回第一的模式mode_flag = 2b0; ndEndmodule模式选择:module mode_choose(mode_flag,BT2,_250ms,co1,co2,set_co2,co11,co22,co111,co222); input 3:0mode_flag; /输入模式方式,响应对应操作 input BT2,_250ms,co1,co2,set_co2; /调节按钮,时钟信号,正常计时分钟脉冲信号, 正常计
8、时小时脉冲信号,闹钟设置分钟进位信号。 output co11,co22,co111,co222; / 分钟脉冲信号,小时脉冲信号,闹钟设置分钟脉冲信号,闹钟设置小时脉冲信号; supply1 Vdd; reg co11,co22,co111,co222; always(mode_flag)begin case (mode_flag) 4b0001: begin if(BT2) co22=_250ms; /小时调钟模式,有按键,则脉冲为250ms else begin co22=co2; /没有按键,正常计时 co11=co1; end end 4b0010: begin if(BT2) be
9、gin co11=_250ms; /小时调钟模式,有按键,则脉冲为250ms co22=co2;end else begin co11=co1; /没有按键,正常计时 co22=co2; end end 4b0011: begin co22=co2; co11=co1; if(BT2) co222=_250ms; / 闹钟小时设置信号 else co222=set_co2;end 4b0100: begin co22=co2; co11=co1; if(BT2) co111=_250ms; /闹钟分钟设置信号 else co111=Vdd; end default :begin co11=co
10、1; co22=co2; end endcase end endmodule (4) 、任意闹钟模块 : 一、设置闹钟:当对应于闹钟设置模式mode_flag=40011和4b0100时,有设置信号输入时,则开始设置。对应代码:module set_naozhong(co111,co222,set_HH,set_HL,set_MH,set_ML,co2); input co111,co222; / 闹钟分钟,小时设置信号 output 3:0set_HH,set_HL,set_MH,set_ML; /输出相应的闹钟设置时间 supply1 Vdd; output co2; minute (co
11、111,Vdd,set_MH,set_ML,co2);hour (co222,Vdd,set_HH,set_HL); endmodule 二、闹钟响应:当正常计时达到闹钟设置得时间后,通过比较二者之间的时间,相等,则产生一个闹钟允许响应信号,在闹钟开关打开和闹钟允许响应信号同时满足的情况下,则产生闹钟响应信号,并送到相应的闹钟设备LED灯。如果闹钟档处于关闭状态,则不会产生闹钟响应信号。响应代码如下:module naozhong (Alarm_ctr,_1HZ,set_HH,set_HL,set_MH,set_ML,HH24,HL24,MH24,ML24,nao_signal); input
12、 Alarm_ctr,_1HZ; input 3:0 set_HH,set_HL,set_MH,set_ML; input 3:0 HH24,HL24,MH24,ML24; output nao_signal; reg signal; reg nao_signal; reg 16:0 Q; /计数,调节闹钟响应时间长度 always(posedge _1HZ)begin if(signal)&(Alarm_ctr)begin if(set_HH=HH24)&(set_HL=HL24)&(set_MH=MH24)&(set_ML=ML24)signal=1b1 /达到闹钟设置时间,产生闹钟允许响
13、应信号 else signal=1b0;end /未达到,不产生 else if(signal)&(Alarm_ctr)begin /闹钟开关打开和闹钟允许响应信号同时满足 nao_signal=8d720)begin /响应时间完毕,关闭闹钟允许响应信号 Q=16b0; signal=1b0;end end else begin signal=1b0; nao_signal=1b0;end end endmodule (5) 、整点报时模块 :检测分钟和秒钟计数是否都达到了59,然后再下一个秒脉冲的作用下发出整点报时信号,送到LED。并开始计数,计数达到报时信号响应次数后,终止报时信号。部分
14、代码如下: always(posedge _500ms)begin if(SH*10+SL)=8d59)&(MH*10+ML)=8d59)begin Q1=7b0; bao=1b1;end /允许报时 else if(Q110*HH+HL)&(bao) begin bao_signal=bao_signal; / 产生报时信号 Q1=Q1+bao_signal; /响一次计数加一 end else if(Q1=(10*HH+HL) /报时次数达到整点时数,终止信号 bao=1b0; else begin bao_signal=1b0; end End(6) 、1224小时切换模块:将24小时切
15、换成12小时,并存入相应的寄存器。如果拨上切换显示档,则切换显示。 相应代码如下: module hour12_24(HH24,HL24,HH12,HL12); input 3:0 HH24,HL24; output 3:0 HH12,HL12; reg 3:0 HH12,HL12; always(HH24 or HL24)begin if(HH24*10+HL24)=12) begin HH12=HH24; HL12=13)&(HH24*10+HL24)=19) begin HH12=4d0; HL12=19)&(HH24*10+HL24)=21) begin HH12=4d0; HL12=
16、HL24+4d8; end else begin HH12=HH24-4d1; HL12=HL24-4d2; end end endmodule (7) 、译码显示模块:一、数码管显示:通过传入响应的4位十进制数,运用case语句转换输出相应的8位二进制显示码,送入数码管显示。 代码如下: module SEG7_LUT(oSEG1,iDIG); input3:0iDIG; /输入要显示的数 output7:0oSEG1; reg7:0oSEG; wire 7:0oSEG1; always (iDIG) begincase(iDIG) 4h0: oSEG = 8b;4h1: oSEG = 8b
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 verilog 数字 设计 报告
限制150内