多功能数字钟设计(Verilog语言编写)

合集下载

用Verilog语言编写的多功能数字钟

用Verilog语言编写的多功能数字钟

《数字电子技术课程设计》报告专业班级:姓名:学号:设计日期:一.设计题目多功能数字钟电路设计二.设计任务及要求多功能数字钟应该具有的功能有:显示时—分—秒、整点报时、小时和分钟可调等基本功能。

整个钟表的工作应该是在1Hz信号的作用下进行,这样每来一个时钟信号,秒增加1秒,当秒从59秒跳转到00秒时,分钟增加1分,同时当分钟从59分跳转到00分时,小时增加1小时,小时的范围为0~23时。

在实验中为了显示的方便,由于分钟和秒钟显示的范围都是从0~59,所以可以用一个3位的二进制码显示十位,用一个四位的二进制码(BCD 码)显示个位,对于小时因为他的范围是从0~23,所以可以用一个2位的二进制码显示十位,用一个4位的二进制码(BCD码)显示个位。

实验中由于七段码管是扫描的方式显示,所以虽然时钟需要的是1Hz 时钟信号,但是扫描需要一个比较高频率的信号,因此为了得到准确的1Hz 信号,必须对输入的系统时钟50Mhz进行分频。

对于整点报时功能,本实验设计的是当进行正点的倒计时5秒时,让LED来闪烁进行整点报时的提示。

调整时间的按键用按键模块的S1和S2,S1调节小时,每按下一次,小时增加一个小时;S2调整分钟,每按下一次,分钟增加一分钟。

另外用S8按键作为系统时钟复位,复位后全部显示00—00—00。

管脚分配如下表:三.基于Verilog HDL语言的电路设计、仿真与综合(一)顶层模块本程序采用结构化设计方法,将其分为彼此独立又有一定联系的三个模块,如图1所示:LocationPIN_R16Option Value VCC S1INPUT Location PIN_P14Option Value VCC S2INPUT Location PIN_J3Option Value VCCCPINPUT Location PIN_M4Location PIN_F3Location PIN_F4Option Value SEL[2..0]OUTPUT Location PIN_L14Option Value LEDOUTPUTLocation PIN_N4Location PIN_G4Location PIN_H4Location PIN_L5Location PIN_L4Location PIN_K4Location PIN_K5Option Value LEDAG[6..0]OUTPUTCP CPoutf enpininst1CPoutS1S2RETHour[5..0]Minute[5..0]Second[5..0]LEDkongzhiqi inst2VCCRETINPUT CPout Hour[5..0]Minute[5..0]Second[5..0]SEL[2..0]LEDAG[6..0]xianshi inst图1:顶层结构框图(二)子模块 1.分频器分频器的作用是对50Mhz 的系统时钟信号进行分频,得到频率为1000hz 的信号,作为显示器的输入信号。

VerilogHDL语言数字时钟

VerilogHDL语言数字时钟

VerilogHDL语言数字时钟EDA与数字系统设计报告实验名称:带有设臵时间功能和闹钟功能的数字钟一、设计内容和要求实验要求使用Verilog HDL进行多功能时钟的设计具体要求如下:1.能将基本的小时、分钟、及秒钟显示在数码管上2.能利用拨码开关进行时间的校正3.具有整点报时和闹钟的功能二、设计原理1.工作原理多功能数字钟系统共包括三个模块,即分频器模块、计数器模块和显示译码模块。

多功能数字钟的功能可以从整体上分为三类,分别是正常计时、时钟校对和闹钟设臵,所以考虑在系统中设臵一个模式控制信号mode。

模式控制信号对应一个按键,每按一次按键相当于工作模式进行一次变换,多次按下则数字钟将在正常计时、时间校对和闹钟设臵三个工作模式下依次循环。

在设计中,时钟校对和闹钟设臵工作模式都需要对时间进行设臵,通常是对小时和分钟进行设臵,所以需要在系统中设臵一个时间设臵信号set,对应一个按键,每按一次相当于在小时设臵和分钟设臵之间进行转换。

时间设臵时,分钟和小时计时单位之间互相独立,不存在进位关系。

同时设臵一个时间调整信号accum,每按一次与accum对应的按键,相当于对需要调整的分钟或小时的数字进行加1操作。

数字钟的计时输出信号时必不可少的,用hour,min和sec信号分别表示需要显示的小时、分钟和秒钟的计时结果,上述计时结果将通过译码显示模块进行译码后,连接到外部的七段数码显示器。

在带有闹钟设臵功能的数字钟中,闹钟输出信号也是必不可少的,到达到闹钟设臵的时间后,要向外部扬声器发送一个闹铃信号,设臵alert。

另外,我们还提供了闹钟铃声信号voice,当voice为0的时候,闹钟处于静音状态下,即使时间达到闹钟设定的时间也不会发声,当voice为1的时候,可以正常闹铃,voice信号对应一个拨码开关。

本设计中的小时、分钟和秒钟的计时结果采用BCD码表示方法。

采用这种表示方法便于对数结果的高位和低位分别进行译码。

用Verilog语言编写的多功能数字钟

用Verilog语言编写的多功能数字钟
四. 总结体会
这次的闹钟电路设计和多功能数字钟有一些相似的地方,不同在于整体构思和细
节上要求的差异。
构思根据要求采用的是状态机设计方法。从一个状态进入另一个状态最适合这个
设计了。细节上和数字钟也有很大的差异。中间的控制逻辑有时候需要反馈。前
后都是有联系的,并不是独立存在的。
本次设计基本上完成的所以的要求,但是由于时间紧急,一些细节并不是很完美,
分频器的作用是对 50Mhz 的系统时钟信号进行分频,得到频率为 1hz 的信号,
作为时钟的输入信号。
2
2.控制器和计数器 控制器的作用是,调整小时和分钟的值,并能实现清零功能。计数器的
作用是实现分钟和秒钟满 60 进 1,小时则由 23 跳到 00。当到达 59 分 55 秒的时 候,LED 灯会闪烁来进行报时。
end 2:
begin state<=2; s=1;
end 3:
begin s=0; if(k1==0) //时调整
7
begin
if(nz_h_l==3)
begin
nz_h_l=0;
if(nz_h_h==2)nz_h_h=0;
else nz_h_h=nz_h_h+1;
end
else nz_h_l=nz_h_l+1;
end
else if(k3==0) finish=1;
//设置完成
else if(k4==0) spker_en=1; //停止声响
end
8
4: begin s=0; if(k4==0) begin on_off<=!on_off;state=0;end end
endcase end end endmodule 3.显示器 显示器的作用是将时:分的值在数码管上依次显示出来。从分频器输出的 1Khz 的信号作为数码管的扫描信号。SEL 表示 6 个数码管选择位,它的取值表示八个 数码管,从左至右依次是 111~000。seg 表示七段数码管,它的取值决定特定位 数上显示的数字。

基于VerilogHDL语言多功能数字钟设计毕业设计论文

基于VerilogHDL语言多功能数字钟设计毕业设计论文

多功能数字钟NJUST多功能数字钟设计基于VerilogHDL语言学院:电子工程与光电技术学院学号:************姓名:指导教师:2014年11月21日星期五摘要:基于FPGA平台,运用Verilog语言编写设计一多功能数字钟,包括基本的时钟,校时校分,整点报时功能。

扩展闹钟,秒表,万年历,键盘输入功能。

Abstract:FPGA-based platform, using Verilog language to design amulti-functional digital clock, including basic function of clock, school hours, school minutes,the whole point timekeeping. And extended function of alarm clock, stopwatch, calendar, keyboard input.关键词:多功能数字钟,可编程逻辑器件,EDA设计,VerilogKeywords:multi-functional digital clock, FPGA, EDA disign, Verilog目录1 设计要求 (2)2 设计方案选择及思路分析 (2)3 各子模块设计原理和分析 (3)3.1 分频模块 (3)3.2 时分秒模块 (5)3.3 时分调整模块 (6)3.4 报时模块 (7)3.5 扫描显示模块 (8)3.6 秒表模块 (9)3.7 闹钟模块 (10)3.8 万年历模块 (12)3.9 键盘扫描模块 (13)4 调试仿真 (15)5 编程下载 (16)6 结论 (17)7 参考文献 (17)8 实验感想 (17)9 源代码 (18)11 设计要求基于FPGA可编程逻辑器件,用quatusII软件设计一个多功能数字钟,其基本要求如下:1.有基础的计时显示功能,即时、分、秒显示在6个七段管上2.K0,K1,K2,K3分别为系统使能(暂停),时钟清零,校时,校分开关。

多功能数字钟

多功能数字钟

3 需求分析与系统设计说明
3.1 需求分析
现代社会的标志之一就是信息产品的广泛使用, 而且是产品的性能越来越强, 复杂程度 越来越高, 更新步伐越来越快。 支撑信息电子产品高速发展的基础就是微电子制造工艺水平 的提高和电子产品设计开发技术的发展。 前者以微细加工技术为代表, 而后者的代表就是电 子设计自动化(electronic design automatic,EDA)技术。 本设计采用的 verilog 是一种全方位的硬件描述语言,具有极强的描述能力,能支持系 统行为级、寄存器传输级和逻辑门级三个不同层次的设计;支持结构、数据流、行为三种描 述形式的混合描述、覆盖面广、抽象能力强,因此在实际应用中越来越广泛。 ASIC 是专用 的系统集成电路,是一种带有逻辑处理的加速处理器。而 FPGA 是特殊的 ASIC 芯片,与其他 的 ASIC 芯片相比,它具有设计开发周期短、设计制造成本低、开发工具先进、标准产品无 需测试、质量稳定以及可实时在线检测等优点。 钟表的数字化给人们生产生活带来了极大的方便, 而且大大地扩展了钟表原先的报时功 能。诸如定时自动报警、定时启闭电路、定时开关烘箱、通断动力设备,甚至各种定时电气 的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用, 有着非常现实的意义。
顶层时钟模块 (二) (二)顶层时钟模块
设计原理: module top_clock (Hour,Minute,Second,_1Hz,nCR,AdjMinKey,AdjHrKey); input _1Hz,nCR,AdjMinKey,AdjHrKey; output [7:0] Hour,Minute,Second; wire [7:0] Hour,Minute,Second; supply1 Vdd; wire MinCP,HrCP; counter60 UT2(Second,nCR,Vdd,_1Hz); counter60 UT1(Minute,nCR,Vdd,~MinCP); counter24 UT3(Hour[7:4],Hour[3:0],nCR,Vdd,~HrCP); assign MinCP=~AdjMinKey?(Second==8'h59):_1Hz; assign HrCP= ~AdjHrKey?({Minute,Second}== 16'h5959):_1Hz; Endmodule 顶层模块仿真波形如下:

用Verilog语言编写的多功能数字钟

用Verilog语言编写的多功能数字钟

《数字电子技术课程设计》报告专业班级:姓名:学号:设计日期:一.设计题目多功能数字钟电路设计二.设计任务及要求多功能数字钟应该具有的功能有:显示时—分—秒、整点报时、小时和分钟可调等基本功能。

整个钟表的工作应该是在1Hz信号的作用下进行,这样每来一个时钟信号,秒增加1秒,当秒从59秒跳转到00秒时,分钟增加1分,同时当分钟从59分跳转到00分时,小时增加1小时,小时的范围为0~23时。

在实验中为了显示的方便,由于分钟和秒钟显示的范围都是从0~59,所以可以用一个3位的二进制码显示十位,用一个四位的二进制码(BCD 码)显示个位,对于小时因为他的范围是从0~23,所以可以用一个2位的二进制码显示十位,用一个4位的二进制码(BCD码)显示个位。

实验中由于七段码管是扫描的方式显示,所以虽然时钟需要的是1Hz 时钟信号,但是扫描需要一个比较高频率的信号,因此为了得到准确的1Hz 信号,必须对输入的系统时钟50Mhz进行分频。

对于整点报时功能,本实验设计的是当进行正点的倒计时5秒时,让LED来闪烁进行整点报时的提示。

调整时间的按键用按键模块的S1和S2,S1调节小时,每按下一次,小时增加一个小时;S2调整分钟,每按下一次,分钟增加一分钟。

另外用S8按键作为系统时钟复位,复位后全部显示00—00—00。

管脚分配如下表:三.基于Verilog HDL语言的电路设计、仿真与综合(一)顶层模块本程序采用结构化设计方法,将其分为彼此独立又有一定联系的三个模块,如图1所示:LocationPIN_R16Option Value VCC S1INPUT Location PIN_P14Option Value VCC S2INPUT Location PIN_J3Option Value VCCCPINPUT Location PIN_M4Location PIN_F3Location PIN_F4Option Value SEL[2..0]OUTPUT Location PIN_L14Option Value LEDOUTPUTLocation PIN_N4Location PIN_G4Location PIN_H4Location PIN_L5Location PIN_L4Location PIN_K4Location PIN_K5Option Value LEDAG[6..0]OUTPUTCP CPoutf enpininst1CPoutS1S2RETHour[5..0]Minute[5..0]Second[5..0]LEDkongzhiqi inst2VCCRETINPUT CPout Hour[5..0]Minute[5..0]Second[5..0]SEL[2..0]LEDAG[6..0]xianshi inst图1:顶层结构框图(二)子模块 1.分频器分频器的作用是对50Mhz 的系统时钟信号进行分频,得到频率为1000hz 的信号,作为显示器的输入信号。

Verilog HDL文件实例-多功能数字时钟

Verilog HDL文件实例-多功能数字时钟

Verilog HDL文件实例-多功能数字时钟.txt我爸说过的最让我感动的一句话:“孩子,好好学习吧,爸以前玩麻将都玩儿10块的,现在为了供你念书,改玩儿1块的了。

”//【例 11.8】多功能数字钟/* 信号定义:clk:标准时钟信号,本例中,其频率为4Hz;clk_1k:产生闹铃音、报时音的时钟信号,本例中其频率为1024Hz;mode:功能控制信号;为0:计时功能;为1:闹钟功能;为2:手动校时功能;turn:接按键,在手动校时功能时,选择是调整小时,还是分钟;若长时间按住该键,还可使秒信号清零,用于精确调时;change:接按键,手动调整时,每按一次,计数器加1;如果长按,则连续快速加1,用于快速调时和定时;hour,min,sec:此三信号分别输出并显示时、分、秒信号,皆采用BCD码计数,分别驱动6个数码管显示时间;alert:输出到扬声器的信号,用于产生闹铃音和报时音;闹铃音为持续20秒的急促的“嘀嘀嘀”音,若按住“change”键,则可屏蔽该音;整点报时音为“嘀嘀嘀嘀—嘟”四短一长音;LD_alert:接发光二极管,指示是否设置了闹钟功能;LD_hour:接发光二极管,指示当前调整的是小时信号;LD_min:接发光二极管,指示当前调整的是分钟信号。

*/module clock(clk,clk_1k,mode,change,turn,alert,hour,min,sec,LD_alert,LD_hour,LD_min);input clk,clk_1k,mode,change,turn;output alert,LD_alert,LD_hour,LD_min;output[7:0] hour,min,sec;reg[7:0] hour,min,sec,hour1,min1,sec1,ahour,amin;reg[1:0] m,fm,num1,num2,num3,num4;reg[1:0] loop1,loop2,loop3,loop4,sound;- 64 -王金明:《Verilog HDL程序设计教程》reg LD_hour,LD_min;reg clk_1Hz,clk_2Hz,minclk,hclk;reg alert1,alert2,ear;reg count1,count2,counta,countb;wire ct1,ct2,cta,ctb,m_clk,h_clk;always @(posedge clk)beginclk_2Hz<=~clk_2Hz;if(sound==3) begin sound<=0; ear<=1; end//ear信号用于产生或屏蔽声音else begin sound<=sound+1; ear<=0; endendalways @(posedge clk_2Hz) //由4Hz的输入时钟产生1Hz的时基信号clk_1Hz<=~clk_1Hz;always @(posedge mode) //mode信号控制系统在三种功能间转换 begin if(m==2) m<=0; else m<=m+1; endalways @(posedge turn)fm<=~fm;always //该进程产生count1,count2,counta,countb四个信号 begincase(m)2: begin if(fm)begin count1<=change; {LD_min,LD_hour}<=2; endelsebegin counta<=change; {LD_min,LD_hour}<=1; end{count2,countb}<=0;end1: begin if(fm)begin count2<=change; {LD_min,LD_hour}<=2; endelsebegin countb<=change; {LD_min,LD_hour}<=1; end{count1,counta}<=2'b00;enddefault: {count1,count2,counta,countb,LD_min,LD_hour}<=0; endcaseend- 65 -程序文本always @(negedge clk)//如果长时间按下“change”键,则生成“num1”信号用于连续快速加1 if(count2) beginif(loop1==3) num1<=1;elsebegin loop1<=loop1+1; num1<=0; endendelse begin loop1<=0; num1<=0; endalways @(negedge clk) //产生num2信号if(countb) beginif(loop2==3) num2<=1;elsebegin loop2<=loop2+1; num2<=0; endendelse begin loop2<=0; num2<=0; endalways @(negedge clk)if(count1) beginif(loop3==3) num3<=1;elsebegin loop3<=loop3+1; num3<=0; endendelse begin loop3<=0; num3<=0; endalways @(negedge clk)if(counta) beginif(loop4==3) num4<=1;elsebegin loop4<=loop4+1; num4<=0; endendelse begin loop4<=0; num4<=0; endassign ct1=(num3&clk)|(!num3&m_clk); //ct1用于计时、校时中的分钟计数assign ct2=(num1&clk)|(!num1&count2); //ct2用于定时状态下调整分钟信号assign cta=(num4&clk)|(!num4&h_clk); //cta用于计时、校时中的小时计数assign ctb=(num2&clk)|(!num2&countb); //ctb用于定时状态下调整小时信号always @(posedge clk_1Hz) //秒计时和秒调整进程if(!(sec1^8'h59)|turn&(!m))beginsec1<=0; if(!(turn&(!m))) minclk<=1;- 66 -王金明:《Verilog HDL程序设计教程》end//按住“turn”按键一段时间,秒信号可清零,该功能用于手动精确调时else beginif(sec1[3:0]==4'b1001)begin sec1[3:0]<=4'b0000; sec1[7:4]<=sec1[7:4]+1; endelse sec1[3:0]<=sec1[3:0]+1; minclk<=0;endassign m_clk=minclk||count1;always @(posedge ct1) //分计时和分调整进程beginif(min1==8'h59) begin min1<=0; hclk<=1; endelse beginif(min1[3:0]==9)begin min1[3:0]<=0; min1[7:4]<=min1[7:4]+1; endelse min1[3:0]<=min1[3:0]+1; hclk<=0;endendassign h_clk=hclk||counta;always @(posedge cta) //小时计时和小时调整进程if(hour1==8'h23) hour1<=0;else if(hour1[3:0]==9)begin hour1[7:4]<=hour1[7:4]+1; hour1[3:0]<=0; endelse hour1[3:0]<=hour1[3:0]+1;always @(posedge ct2) //闹钟定时功能中的分钟调节进程if(amin==8'h59) amin<=0;else if(amin[3:0]==9)begin amin[3:0]<=0; amin[7:4]<=amin[7:4]+1; endelse amin[3:0]<=amin[3:0]+1;always @(posedge ctb) //闹钟定时功能中的小时调节进程if(ahour==8'h23) ahour<=0;else if(ahour[3:0]==9)begin ahour[3:0]<=0; ahour[7:4]<=ahour[7:4]+1; endelse ahour[3:0]<=ahour[3:0]+1;always //闹铃功能if((min1==amin)&&(hour1==ahour)&&(amin|ahour)&&(!change))- 67 -程序文本//若按住“change”键不放,可屏蔽闹铃音if(sec1<8'h20) alert1<=1; //控制闹铃的时间长短else alert1<=0;else alert1<=0;always //时、分、秒的显示控制case(m)3'b00: begin hour<=hour1; min<=min1; sec<=sec1; end//计时状态下的时、分、秒显示3'b01: begin hour<=ahour; min<=amin; sec<=8'hzz; end//定时状态下的时、分、秒显示3'b10: begin hour<=hour1; min<=min1; sec<=8'hzz; end//校时状态下的时、分、秒显示endcaseassign LD_alert=(ahour|amin)?1:0; //指示是否进行了闹铃定时assign alert=((alert1)?clk_1k&clk:0)|alert2; //产生闹铃音或整点报时音always //产生整点报时信号alert2beginif((min1==8'h59)&&(sec1>8'h54)||(!(min1|sec1)))if(sec1>8'h54) alert2<=ear&clk_1k; //产生短音else alert2<=!ear&clk_1k; //产生长音else alert2<=0;endendmodule。

多功能时钟设计verilog

多功能时钟设计verilog

可编程逻辑器件及其应用设计报告姓名:wangkeqin院系:电信学部学号:**********日期:2012-04-09多功能数字钟设计一、设计内容及要求➢用Verilog HDL设计一个多功能数字钟➢基本功能描述:1.时钟功能:包括时、分、秒的显示;2.定时与闹钟功能:能在设定的时间发出闹铃音;3.校时功能:能非常方便地对小时、分钟和秒进行手动调整以校准时间;4.整点报时功能:每逢整点,产生“嘀嘀嘀嘀--嘟”,四短一长的报时音。

二、仿真环境说明用Verilog在Altera公司的Quartus2软件环境下编写RTL代码,并进行综合,行为仿真。

时序仿真采用Mentor公司旗下的ModelsimSE-6.1f软件。

Modelsim 软件是业界最著名的波形仿真软件,仿真效果比Quartus2下编写波形文件仿真效果要好很多,而且仿真相当简单,只不过要编写测试向量(testbench),有点麻烦。

三、系统框图与说明Figure1系统框图1.数字钟电路系统由主体电路和扩展电路两大部分所组成。

2. 秒计数器计到59后,下一秒到来时,秒计时器满60,接着清零后向分计数器进位;同样分计数器计满60后向小时计数器进位;小时计数器按照“24进制”规律计数,每当小时计到23小时时,当分计数和秒计数分别59,59时,即到23小时59分,59秒时候,时分秒全部清零,从新开始计数。

3. 计数器的输出经译码器送显示器,显示器用6个数码管表示,每两个数码管分别表示小时,分钟,秒钟。

每个数码管用BCD码表示。

四、设计步骤(一)列写多功能数字钟设计结构图(二)在QuartusП软件下编写Verilog代码(三)在QuartusП环境下进行综合Figure2综合结果从Fig.2可以看出,该设计采用Altera公司CycloneП系列下的EP2C35F672C8芯片。

从图中可以看出,采用了162个逻辑单元,其中组合逻辑147个,总共的寄存器数为102个。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

多功能数字钟设计院系:电光学院班级:***学号: ***姓名: ***指导老师:***时间:2010.4.20.摘要:利用QuartusII软件设计一个数字钟,利用模块化的程序设计思想,核心模块均采用Verilog语言编写(译码显示模块采用原理图设计),软件仿真调试编译成功后,再下载到SmartSOPC实验系统中。

经过硬件测试,查找软件设计缺陷,并进一步完善软件,最终设计得到较为满意的多功能数字钟。

关键词:QuartusII; 多功能数字钟; 模块化; Verilog; 可编程;Abstract:Using the QuartusII software design a digital bell with the blocking method.The design takes theory drawing instead of Verilog language.After emluating and debuging successfully,translate and edit the code.Then,download the result to the programmable SmartSOPC system and test it in hardware.Realizing the soul of designing hardware by software.Keywords:QuartusII; digital bell; blocking method; VHDL; programmable; hardware目录设计内容简介 (3)设计要求说明 (3)方案论证(整体电路设计原理) (3)各子模块设计理 (5)分频模块: (5)计数模块: (7)--校准模块程序实现: (8)--秒计数模块程序实现: (9)--分计数模块程序实现: (10)--时计数模块程序实现: (10)整点报时模块: (12)闹钟设定模块: (13)--闹钟调节模块程序实现: (14)--输出信号选择模块程序实现: (14)彩铃模块: (15)译码显示模块: (18)万年历模块: (19)--日计数模块程序设计: (20)--月计数模块程序设计: (23)--年计数模块程序设计: (23)--万年历波形仿真结果: (25)结论: (26)实验感想: (26)附图: (27)设计内容简介设计一个数字计时器,可以完成00:00:00到23:59:59的计时功能,并在控制电路的作用下具有保持、清零、快速校时、快速校分、快速较秒等功能。

在设计的电路具有上述基本功能的前提下,我又进行了功能扩展:整点报时、闹钟设置、彩铃和万年历功能。

(由于时间限制,万年历功能未经硬件测试,仅通过软件层面简单调试仿真)设计要求说明设计基本要求:1、能进行正常的时、分、秒计时功能;2、分别由六个数码管显示时分秒的计时;3、K1是系统的使能开关(K1=0正常工作,K1=1时钟保持不变);4、K2是系统的清零开关(K2=0正常工作,K2=1时钟的分、秒全清零);5、K3是系统的校分开关(K3=0正常工作,K3=1时可以快速校分);6、K4是系统的校时开关(K4=0正常工作,K4=1时可以快速校时);设计提高部分要求1、使时钟具有整点报时功能(当时钟计到59’53”时开始报时,在59’53”, 59’55”,59’57”时报时频率为512Hz,59’59”时报时频率为1KHz);2、闹表设定功能;方案论证(整体电路的工作原理)本实验在实现实验基本功能的基础上,加入了整点报时、闹钟设置、彩铃和万年历显示调节功能。

整个电路由计数模块、分频模块、校时、校分较秒模块,清零模块、保持模块,整点报时模块,闹钟设定模块、彩铃模块,以及万年历模块构成。

(如下图所示)基本功能:数字计时器基本功能是计时,因此首先需要获得具有精确振荡时间的脉振信号,以此作为计时电路的时序基础,实验中可以使用的振荡频率源为48MHZ,通过分频获得所需脉冲频率(1Hz,,2Hz,4Hz,1KHz,500Hz,6MHz)。

经过Verilog编程可以轻松获得较为精确的分频信号。

在计数模块中,秒位和分位分别通过编程用模60计数器实现,时位通过编程用模24计数器实现。

校时、校分及校秒模块则通过语言选择实现。

清零及保持功能在计数模块中用判断语句可轻松实现。

计数模块总共输出6路信号:秒位的个、十位,分位的个、十位及时位的个、十位。

整点报时:利用计数模块的输出作为报时模块的输入,当检测到59’53”, 59’55”,59实验模块原理图57”时令报时模块的输出为500Hz,59’59”时令报时模块的输出为1Kz.,驱动蜂鸣器产生不同的响声。

闹钟设定模块:这里设计一个闹钟模块,输入为计数模块的输出及一系列调节信号,输出接到译码模块上。

在闹钟模块内部,核心模块是一个选择模块,选择输出的信号是闹钟显示还是正常的计数显示。

为了使闹钟模块与计数模块是相互独立的,因此单独设计模24(闹钟小时)和模60(闹钟分钟)作为选择模块的输入。

设计程序语言的思想是,当检测到与设定闹钟相同的时、分位时就输出一个信号1,并保存当前计数位(加1)当检测到当前信号与保存位相同时输出信号恢复为0。

(这个信号将作为闹铃结束的判断信号)彩铃模块:本程序选用了一段悠扬的梁祝音乐,该模块的输入分别为6MHz和4Hz,通过编程实现输出为符合音律的不同频率。

程序实现的思想并不复杂,只要有乐谱可以实现各种不同的音乐输出。

蜂鸣器何时鸣叫取决于闹钟模块的输出。

译码显示模块:本模块没有采用V erilog语言实现,通过搭建原理图实现。

显示功能是通过数选器、译码器、码转换器和7段显示管实现的。

因为实验中只用一个译码显示单元,6个7段码(用于显示时分秒),所以通过1个24选4MUX和一个3-8译码器配合,显示译码器采用7447,根据计数器的信号进行数码管的动态显示。

万年历模块:通过编程可以轻松实现,原理与上述计数模块,调节模块很是类似。

由于未经硬件测试(时间限制),将在下面的子模块介绍中给出软件层面的实现和编译调试结果。

各子模块设计原理本数字钟设计主要用Verilog语言实现,严格采用了模块化的程序设计思想,自顶向下逐步求精,模块之间高度独立。

(仅译码显示模块采用原理图搭建)下面将分别介绍各主要子模块及其子模块以及算法语言的实现和部分波形仿真编译调试结果。

分频模块:(clkout输出为1Hz,clkout1K输出为1Kz,clkout500输出为500Hz,clkout2输出为2Hz,clkout6M输出为6MHz,clkout4输出为4Hz.)module clkdiv(clk,clkout,clkout1k,clkout500,clkout2,clkout6M,clkout4);input clk;output clkout,clkout1k,clkout500,clkout2,clkout6M,clkout4;reg clkout,clkout1k,clkout500,clkout2,clkout6M,clkout4;reg [31:0]cnt,cnm,cnn,cmm,caa,cbb;always@(posedge clk) //产生1Hz信号beginif(cnt== 32'd2*******)beginclkout<=1'd1;cnt<=cnt+32'd1;endelse if(cnt==32'd4*******)beginclkout<=1'b0;cnt<=32'd0;endelsecnt<=cnt+32'd1;endalways@(posedge clk) //产生1KHz信号beginif(cnm== 32'd24000)beginclkout1k<=1'd1;cnm<=cnm+32'd1;endelse if(cnm==32'd48000)beginclkout1k<=1'b0;cnm<=32'd0;endelsecnm<=cnm+32'd1;endalways@(posedge clk) //产生500Hz信号beginif(cnn== 32'd48000)beginclkout500<=1'd1;cnn<=cnn+32'd1;endelse if(cnn==32'd96000)beginclkout500<=1'b0;cnn<=32'd0;endelsecnn<=cnn+32'd1;endalways@(posedge clk) //产生2Hz信号beginif(cmm== 32'd1*******)beginclkout2<=1'd1;cmm<=cmm+32'd1;endelse if(cmm==32'd2*******)beginclkout2<=1'b0;cmm<=32'd0;endelsecmm<=cmm+32'd1;endalways@(posedge clk) //产生6MHz信号beginif(caa== 32'd4)beginclkout6M<=1'd1;caa<=caa+32'd1;endelse if(caa==32'd8)beginclkout6M<=1'b0;caa<=32'd0;endelsecaa<=caa+32'd1;endalways@(posedge clk) //产生4Hz信号beginif(cbb== 32'd6000000)beginclkout4<=1'd1;cbb<=cbb+32'd1;endelse if(cbb==32'd1*******)beginclkout4<=1'b0;cbb<=32'd0;endelsecbb<=cbb+32'd1;endEndmodule除了6MHz可以通过波形图直接观察,其他分频在程序设计原理上都可以确定是正确的,通过硬件可以作一定的观察(或者对仿真时间设定作相应调整)。

计数模块:计数模块中包含三个校准模块和三个计数模块(分别对应着秒分时)。

(secondclka为秒脉冲输入信号1Hz,secondclkb为输入校准信号用频率2Hz,K5jiaomiao、K3jiaofen、K4jiaoshi分别为校秒、校分、校时输入信号,clkdff为D触发器输入信号(去开关抖动用),reset1K2为清零信号,start0K1为保持信号。

相关文档
最新文档