Verilog数字钟设计实验报告(共19页).doc
《Verilog数字钟设计实验报告(共19页).doc》由会员分享,可在线阅读,更多相关《Verilog数字钟设计实验报告(共19页).doc(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上基于FPGA实现多功能数字钟电子系王丛屹摘要本文利用Verilog HDL语言自顶向下的设计方法设计多功能数字钟,并通过ISE完成综合、仿真。此程序通过下载到FPGA 芯片后,可应用于实际的数字钟显示中,实现了基本的计时显示和设置,调整时间,闹钟设置的功能。关键词 FPGA;Verilog HDL;数字钟一、多功能数字钟的设计设计一个多功能数字时钟,具有时分、秒计数显示、闹钟功能。能够利用按键实现对闹钟时间的设定并在当前显示时间到时后能够进行闹钟提示。能够利用按键实现“较时”、“较分”功能,随时对数码管的显示进行校正和校对。数字中系统主要由系统时钟,三个功能按键(mo
2、de,turn,change),FPGA,数码管和蜂鸣器部分组成。 数码管Clk分频模块计时模块闹钟模块显示模块控制模块蜂鸣器 图: 多功能数字钟总体设计模块以下就各个模块说明其功能1. 分频模块由于FPGA内部提供的时钟信号频率大约为50MHz,在这需要将它转化成1Hz的标准时钟信号供数字钟的计时显示;在此我采用了级联分频法。RTL图如下:代码如下:/fenpinmodule fenpin(clk,clk_1Hz,clk_100Hz,clk_1k);output clk_1Hz,clk_100Hz,clk_1k;input clk;reg clk_1Hz=0,clk_3=0,clk_1=0,
3、clk_2=0,clk_1k=0;reg 6:0 cnt1=0,cnt2=0,cnt3=0,cnt4=0,cnt5=0;wire clk_100Hz;always (posedge clk) beginif ( cnt1 156/2-1) /156分频,生成1MHz信号 begin cnt1 = cnt1 + 1; end else begin cnt1 = 0; clk_1 = clk_1; endendalways (posedge clk_1)if ( cnt2 156/2-1) /100分频,生成10000Hz信号 begin cnt2 = cnt2 + 1; end else beg
4、in cnt2 = 0; clk_2 = clk_2; end always (posedge clk_2)if ( cnt5 10/2-1) /10分频,生成1kHz标准信号 begin cnt5= cnt5 + 1; end else begin cnt5= 0; clk_1k= clk_1k; end always (posedge clk_2)if ( cnt3 100/2-1) /100分频,生成100Hz信号 begin cnt3 = cnt3 + 1; end else begin cnt3 = 0; clk_3 = clk_3; end assign clk_100Hz=clk
5、_3; always (posedge clk_3)if ( cnt4 100/2-1) /100分频,生成1Hz标准信号 begin cnt4= cnt4 + 1; end else begin cnt4= 0; clk_1Hz= clk_1Hz; endendmodule最终输出的是1Hz,100Hz,1kHz的标准时钟信号clk_1Hz ,clk_100Hz,clk_1k。2、 计时模块原理:m是模式按键,当m=0时,进入计时模式,在计时模式下可以进行时间调整。num3,num4产生加速调整时间,当其值为1时,可以快速调整时间,该调整时间的频率由clk提供。counta,count1是手
6、动调节时间。Turn接按键,可以改变当前调节的是小时还是分钟,长按turn键还可以使秒钟信号清零。sec1,min1,hour1输出的是计时的秒,分,时。RTL图如下:代码如下:/jishimodule jishi(clk,clk_1Hz,turn,/ turn: 接按键,在手动校时功能时,选择是调整小时,还是分钟;若长时间按住该键,还可使秒信号清零,用于精确调时mode,count1,counta,sec1,min1,hour1,num3,num4);input clk,clk_1Hz,turn,num3,num4;input mode;input count1,counta;output
7、7:0 sec1,min1;output 7:0 hour1;wire clk_1Hz,ct1,cta,turn,num3,num4;reg 7:0 sec1=0,min1=0;reg 7:0 hour1=0;reg 1:0 m;wire count1,counta;reg minclk,hclk;always (posedge mode) /mode 信号控制系统在三种功能间转换begin if(m=4) m=0; else m=m+1;end/秒钟计时模块/always (posedge clk_1Hz)if(sec1=8h59)|turn&(!m)/若长时间按住该键,还可使秒信号清零,用
8、于精确调时。beginsec1=0; /按住“turn”按键一段时间,秒信号可清零,该功能用于手动精确调时if(!(turn&(!m) minclk=1;/产生进位endelse beginif(sec13:0=4b1001) begin sec13:0=4b0000; sec17:4=sec17:4+1; endelse sec13:0=sec13:0+1;minclk=0;end/分钟计时模?/assign m_clk=minclk|count1;/m_clk产生进位或校正改变assign ct1=(num3&clk)|(!num3&m_clk); /ct1 用于计时、校时中的分钟计数al
9、ways (posedge ct1)beginif(min1=8h59) begin min1=0; hclk=1; endelse beginif(min13:0=9)begin min13:0=0; min17:4=min17:4+1; endelse min13:0=min13:0+1;hclk=0;endend/小时计时模块/assign h_clk=hclk|counta;/h_clk产生进位或校正改变assign cta=(num4&clk)|(!num4&h_clk); /cta 用于计时、校时中的小时计数always (posedge cta)if(hour1=8h23) ho
10、ur1=0;elseif(hour13:0=9) begin hour17:4=hour17:4+1; hour13:0=0; endelse hour13:0=hour13:0+1;endmodule3、 闹钟模块原理:num1,num2产生加速调整时间,当其值为1时,可以快速调整时间,该调整时间的频率由clk提供。countb,count2是手动调节闹钟时间。amin,ahour是输出的闹钟的分钟和小时,LD_alert指示当前是否开启闹钟。RTL图如下:代码如下:/ Alarmmodule Alarm(clk,amin,ahour,num1,num2,count2,countb,LD_a
11、lert); input clk,num1,num2,count2,countb; output 7:0 amin; output 7:0 ahour; output LD_alert; wire LD_alert; reg 7:0 amin=0; reg 7:0 ahour=0;assign ct2=(num1&clk)|(!num1&count2); /ct2 用于定时状态下调整分钟信号assign LD_alert=(ahour|amin)?1:0;/指示是否进行了闹铃定时always (posedge ct2)if(amin=8h59) amin=0;elseif(amin3:0=9)
12、begin amin3:0=0; amin7:4=amin7:4+1; endelse amin3:0=amin3:0+1;assign ctb=(num2&clk)|(!num2&countb); /ctb 用于定时状态调节小时信号always (posedge ctb)if(ahour=8h23) ahour=0;elseif(ahour3:0=9)begin ahour3:0=0; ahour7:4=ahour7:4+1; endelse ahour3:0=ahour3:0+1;endmodule4、 控制模块(1)原理:m是模式按键,当m=0时,指当前输出的是计时功能;当m=1时,指当
13、前调整的是闹钟时间;当m=2时,指当前调整的是计时时间;当m=3时,此时turn按键可用于跑表的暂停与开始。change 接按键,手动调整时,每按一次,计数器加1;如果长按,则连续快速加 1,用于快速调时和定时;turn接按键,在手动校时功能时,选择是调整小时,还是分钟;若长时间按住该键,还可使秒信号清零,用于精确调时。count1,count2,counta,countb分别是用来调节计时时间和闹钟时间。LD_min,LD_hour,指示当前调节的是分钟还是小时。RTL图代码如下:/ ctrolmodule ctrol(change,turn,count1,count2,counta,cou
14、ntb,pause,LD_min,LD_hour,mode);input change,mode,turn; output count1,count2,counta,countb,pause,LD_min,LD_hour;reg 1:0 m;reg fm=0,count1=0,count2=0,counta=0,countb=0,pause=0,LD_min=0,LD_hour=0;wire mode,turn,change;always (posedge mode) /mode 信号控制系统在三种功能间转换begin if(m=4) m=0; else m=m+1;endalways (po
15、sedge turn)/接按键,在手动校时功能时,选择是调整小时,还是分钟;beginfm=fm;endalways (m or fm or change) begin case(m) 3: begin /3:跑表功能; if(fm) pause=1;else pause=0;end 2:begin /2:调节时间功能; if(fm) begincount1=change; LD_min,LD_hour=2; end/指示当前调整的是分钟else begin counta=change; LD_min,LD_hour=1; end/指示当前调整的是小时count2,countb=0;end 1
16、:begin /1:调节闹钟功能 if(fm) begincount2=change; LD_min,LD_hour=2; end/指示当前调整的是分elsebegin countb=change; LD_min,LD_hour=1; end/指示当前调整的是小时count1,counta=0; end 0: begin count1,count2,counta,countb,LD_min,LD_hour=0;end /0:计时功能 endcase endendmodule5、 控制模块(2)原理:此模块是加速调节时间模块,count1,count2,counta,countb是手动调节时间,
17、当长时间按这些键时,num1,num2,num3,num4的值会发生变化,当他们值有为1时,对应的调节会快速加1。代码如下:/ fastermodule faster(clk,num1,num2,num3,num4,count1,count2,counta,countb); input clk; input count1,count2,counta,countb; output num1,num2,num3,num4; wire count1,count2,counta,countb; reg2:0 loop1=0,loop2=0,loop3=0,loop4=0; reg num1,num2,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Verilog 数字 设计 实验 报告 19
限制150内