用Verilog语言编写的多功能数字钟_第1页
用Verilog语言编写的多功能数字钟_第2页
用Verilog语言编写的多功能数字钟_第3页
用Verilog语言编写的多功能数字钟_第4页
用Verilog语言编写的多功能数字钟_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数字电子技术课程设计报告专业班级:姓 名:学 号:设计日期:一 设计题目多功能数字钟电路设计二 设计任务及要求多功能数字钟应该具有的功能有:显示时分秒、整点报时、小时和分钟可调等基本功能。整个钟表的工作应该是在1Hz信号的作用下进行,这样每来一个时钟信号,秒增加1秒,当秒从59秒跳转到00秒时,分钟增加1分,同时当分钟从59分跳转到00分时,小时增加1小时,小时的范围为023时。在实验中为了显示的方便,由于分钟和秒钟显示的范围都是从059,所以可以用一个3位的二进制码显示十位,用一个四位的二进制码(BCD码)显示个位,对于小时因为他的范围是从023,所以可以用一个2位的二进制码显示十位,用一个

2、4位的二进制码(BCD码)显示个位。实验中由于七段码管是扫描的方式 显示,所以虽然时钟需要的是1Hz时钟信号,但是扫描需要一个比较高频率的信号,因此为了得到准确的1Hz信号,必须对输入的系统时钟50Mhz进行分频。对于整点报时功能,本实验设计的是当进行正点的倒计时5秒时,让LED来闪烁进行整点报时的提示。调整时间的按键用按键模块的S1和S2,S1调节小时,每按下一次,小时增加一个小时;S2调整分钟,每按下一次,分钟增加一分钟。另外用S8按键作为系统时钟复位,复位后全部显示000000。管脚分配如下表:端口名使用模块信号对应FPGA管脚说明S1按键开关S1R16调整小时S2按键开关S2P14调整

3、分钟RST按键开关S8M15复位LEDLED模块D1L14整点倒计时LEDAG0数码管模块A段N4时间显示LEDAG1数码管模块B段G4LEDAG2数码管模块C段H4LEDAG3数码管模块D段L5LEDAG4数码管模块E段L4LEDAG5数码管模块F段K4LEDAG6数码管模块G段K5SEL0数码管选择位1M48个数码管的选择位SEL1数码管选择位2F3SEL2数码管选择位3F4CP脉冲源J350Mhz脉冲三基于Verilog HDL语言的电路设计、仿真与综合(一)顶层模块本程序采用结构化设计方法,将其分为彼此独立又有一定联系的三个模块,如图1所示:图1:顶层结构框图(二)子模块 1.分频器分

4、频器的作用是对50Mhz的系统时钟信号进行分频,得到频率为1000hz的信号,作为显示器的输入信号。源程序如下:module fenpin(input CP,output CPout);reg CPout;reg 31:0 Cout;reg CP_En;always (posedge CP ) /将50MHz分频为1kHzbeginCout = (Cout = 32d50000) ? 32d0 : (Cout + 32d1);CP_En = (Cout = 32d50000) ? 1d1 : 1d0;CPout = CP_En; endendmodule功能仿真波形如图2所示(以五分频为例):

5、2.控制器和计数器 控制器的作用是,调整小时和分钟的值,并能实现清零功能。计数器的作用是实现分钟和秒钟满60进1,小时则由23跳到00。当到达59分55秒的时候,LED灯会闪烁来进行报时。因为控制器和计数器的驱动信号频率均为1Hz,故从分频器输出的信号进入控制器后,要进行二次分频,由1Khz变为1Hz。源程序如下:module kongzhiqi( CPout,S1,S2,RET,Hour,Minute,Second,LED);input CPout,S1,S2,RET;output 5:0 Hour;output 5:0 Minute;output 5:0 Second;output LED

6、;reg 5:0 Hour;reg 5:0 Minute;reg 5:0 Second;reg R1;reg R2,R8,LED;reg 10:0 Cout;reg Clk_En;always(posedge CPout)beginif(S1=0)beginR1=1;endif(S2=0)beginR2=1;endif(RET=0)beginR8=1;endCout=(Cout=32d1000)?32d0:(Cout + 32d1);Clk_En=(Cout=32d1000)?1d1:1d0;if(Clk_En)beginif(R1=1)beginif(Hour24)Hour=Hour+1;i

7、f(Hour=24)beginHour=0;endR1=0;endif(R2=1)beginif(Minute60)Minute=Minute+1;if(Minute=60)beginMinute=0;if(Hour24)Hour=Hour+1;if(Hour=24)beginHour=0;endendR2=0;endif(Second60)Second=Second+1;if(Second=60)beginSecond=0;if(Minute60)Minute=Minute+1;if(Minute=60)beginMinute=0;if(Hour55)/整点倒计时beginif(LED=1)

8、LED=0;elseLED=1;endelseLED=0;if(R8=1)/清零beginHour=0;Minute=0;Second=0;R8=0;endendendendmodule功能仿真波形如图3所示:3显示器显示器的作用是将时分秒的值在数码管上依次显示出来。从分频器输出的1Khz的信号作为数码管的扫描信号。SEL 表示三个数码管选择位,它的取值表示八个数码管,从左至右依次是111000。LEDGA表示七段数码管,它的取值决定特定位数上显示的数字。源程序如下:module xianshi( CPout,Hour,Minute,Second,SEL,LEDAG);input CPout;

9、input Hour,Minute, Second;output SEL,LEDAG;reg 2:0 SEL;reg 6:0 Led;reg 3:0 shi1,ge1,shi2,ge2,shi3,ge3;always (posedge CPout )beginshiwei1=Hour/10;gewei1=Hour%10;shiwei2=Minute/10;gewei2=Minute%10;shiwei3=Second/10;gewei3=Second%10;if(SEL=3b110) /判断位选SEL的值,并将此位上的值输出到数码管case(shiwei1) 4b0000: Led = 7b0

10、111_111;4b0001: Led = 7b0000_110;4b0010: Led = 7b1011_011;4b0011: Led = 7b1001_111;4b0100: Led = 7b1100_110;4b0101: Led = 7b1101_101;4b0110: Led = 7b1111_101;4b0111: Led = 7b0000_111;4b1000: Led = 7b1111_111;4b1001: Led = 7b1101_111; default: Led = 7b0000_000;endcaseif(SEL=3b101)case(gewei1) 4b0000:

11、 Led = 7b0111_111;4b0001: Led = 7b0000_110;4b0010: Led = 7b1011_011;4b0011: Led = 7b1001_111;4b0100: Led = 7b1100_110;4b0101: Led = 7b1101_101;4b0110: Led = 7b1111_101;4b0111: Led = 7b0000_111;4b1000: Led = 7b1111_111;4b1001: Led = 7b1101_111; default: Led = 7b0000_000;endcaseif(SEL=3b100)Led=7b1000

12、_000;if(SEL=3b011)case(shiwei2) 4b0000: Led = 7b0111_111;4b0001: Led = 7b0000_110;4b0010: Led = 7b1011_011;4b0011: Led = 7b1001_111;4b0100: Led = 7b1100_110;4b0101: Led = 7b1101_101;4b0110: Led = 7b1111_101;4b0111: Led = 7b0000_111;4b1000: Led = 7b1111_111;4b1001: Led = 7b1101_111; default: Led = 7b

13、0000_000;endcaseif(SEL=3b010)case(gewei2) 4b0000: Led = 7b0111_111;4b0001: Led = 7b0000_110;4b0010: Led = 7b1011_011;4b0011: Led = 7b1001_111;4b0100: Led = 7b1100_110;4b0101: Led = 7b1101_101;4b0110: Led = 7b1111_101;4b0111: Led = 7b0000_111;4b1000: Led = 7b1111_111;4b1001: Led = 7b1101_111; default

14、: Led = 7b0000_000;endcaseif(SEL=3b001)Led=7b1000_000;if(SEL=3b000)case(shiwei3) 4b0000: Led = 7b0111_111;4b0001: Led = 7b0000_110;4b0010: Led = 7b1011_011;4b0011: Led = 7b1001_111;4b0100: Led = 7b1100_110;4b0101: Led = 7b1101_101;4b0110: Led = 7b1111_101;4b0111: Led = 7b0000_111;4b1000: Led = 7b111

15、1_111;4b1001: Led = 7b1101_111; default: Led = 7b0000_000;endcase if(SEL=3b111)case(gewei3) 4b0000: Led = 7b0111_111;4b0001: Led = 7b0000_110;4b0010: Led = 7b1011_011;4b0011: Led = 7b1001_111;4b0100: Led = 7b1100_110;4b0101: Led = 7b1101_101;4b0110: Led = 7b1111_101;4b0111: Led = 7b0000_111;4b1000:

16、Led = 7b1111_111;4b1001: Led = 7b1101_111; default: Led = 7b0000_000;endcase SEL = SEL + 3d1; endassign LEDAG=Led;endmodule四 总结体会这次课程设计虽然只有短短的四天,但我的收获却很大。通过这次实习,我掌握了EDA设计的基本流程(即设计输入编译调试仿真下载),领会了自顶而下结构化设计的优点,并具备了初步的EDA程序设计能力。 我感觉,这个程序最难的地方在于顶层模块的设计,因为顶层模块需要将各个子模块按照电路原理有机地结合起来,这需要扎实的理论功底,而这正是我所欠缺的。相比而言,子模块的设计就容易多了,因为Verilog语言

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论