2022年用Verilog语言编写的多功能数字钟 .pdf

上传人:H****o 文档编号:33392023 上传时间:2022-08-10 格式:PDF 页数:12 大小:321KB
返回 下载 相关 举报
2022年用Verilog语言编写的多功能数字钟 .pdf_第1页
第1页 / 共12页
2022年用Verilog语言编写的多功能数字钟 .pdf_第2页
第2页 / 共12页
点击查看更多>>
资源描述

《2022年用Verilog语言编写的多功能数字钟 .pdf》由会员分享,可在线阅读,更多相关《2022年用Verilog语言编写的多功能数字钟 .pdf(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、1 20092010 学年第二学期数字电子技术课程设计报告专业班级:电气 -08-1 姓名:曹操学号:08051127 设计日期: 2010 年 8 月 23 日27 日名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 12 页 - - - - - - - - - 2 一 设计题目多功能数字钟电路设计二 设计任务及要求多功能数字钟应该具有的功能有:显示时分秒、整点报时、小时和分钟可调等基本功能。 整个钟表的工作应该是在1Hz信号的作用下进行,这样每来一个时钟信号,秒增加1

2、秒,当秒从 59 秒跳转到 00 秒时,分钟增加 1 分,同时当分钟从59 分跳转到 00 分时,小时增加1 小时,小时的范围为 023时。在实验中为了显示的方便,由于分钟和秒钟显示的范围都是从059,所以可以用一个3 位的二进制码显示十位,用一个四位的二进制码(BCD码)显示个位,对于小时因为他的范围是从023,所以可以用一个2 位的二进制码显示十位,用一个4 位的二进制码( BCD码)显示个位。实验中由于七段码管是扫描的方式显示,所以虽然时钟需要的是1Hz时钟信号,但是扫描需要一个比较高频率的信号,因此为了得到准确的1Hz信号,必须对输入的系统时钟50Mhz 进行分频。对于整点报时功能,本

3、实验设计的是当进行正点的倒计时5 秒时,让LED来闪烁进行整点报时的提示。调整时间的按键用按键模块的S1和 S2 ,S1 调节小时,每按下一次,小时增加一个小时; S2调整分钟,每按下一次,分钟增加一分钟。另外用名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 12 页 - - - - - - - - - 3 S8按键作为系统时钟复位,复位后全部显示000000。管脚分配如下表:端口名使用模块信号对应 FPGA管脚说明S1 按键开关 S1 R16 调整小时S2 按键开关 S

4、2 P14 调整分钟RST 按键开关 S8 M15 复位LED LED模块 D1 L14 整点倒计时LEDAG0 数码管模块 A段N4 时间显示LEDAG1 数码管模块 B段G4 LEDAG2 数码管模块 C段H4 LEDAG3 数码管模块 D段L5 LEDAG4 数码管模块 E段L4 LEDAG5 数码管模块 F段K4 LEDAG6 数码管模块 G段K5 SEL0 数码管选择位 1 M4 8 个数码管的选择位SEL1 数码管选择位 2 F3 SEL2 数码管选择位 3 F4 CP 脉冲源J3 50Mhz 脉冲三基于 Verilog HDL语言的电路设计、仿真与综合名师资料总结 - - -精品

5、资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 12 页 - - - - - - - - - 4 (一)顶层模块本程序采用结构化设计方法,将其分为彼此独立又有一定联系的三个模块,如图 1 所示:图 1:顶层结构框图(二)子模块1.分频器分频器的作用是对50Mhz 的系统时钟信号进行分频, 得到频率为 1000hz的信号,作为显示器的输入信号。源程序如下:module fenpin(input CP, output CPout ); reg CPout; reg 31:0 Cout; reg CP_E

6、n; always (posedge CP ) / 将 50MHz分频为 1kHz begin Cout = (Cout = 32d50000) ? 32d0 : (Cout + 32d1); CP_En = (Cout = 32d50000) ? 1d1 : 1d0; CPout = CP_En; LocationPIN_R16OptionValueVCCS1INPUTLocationPIN_P14OptionValueVCCS2INPUTLocationPIN_J3OptionValueVCCCPINPUTLocationPIN_M4LocationPIN_F3LocationPIN_F4

7、OptionValueSEL2.0OUTPUTLocationPIN_L14OptionValueLEDOUTPUTLocationPIN_N4LocationPIN_G4LocationPIN_H4LocationPIN_L5LocationPIN_L4LocationPIN_K4LocationPIN_K5OptionValueLEDAG6.0OUTPUTCPCPoutf enpininst1CPoutS1S2RETHour5.0Minute5.0Second5.0LEDkongzhiqiinst2VCCRETINPUTCPoutHour5.0Minute5.0Second5.0SEL2.

8、0LEDAG6.0 xianshiinstCPCPoutf enpininst1VCCCPINPUTCPoutOUTPUT名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 12 页 - - - - - - - - - 5 end endmodule 功能仿真波形如图2 所示(以五分频为例 ):2.控制器和计数器控制器的作用是,调整小时和分钟的值,并能实现清零功能。计数器的作用是实现分钟和秒钟满60进 1,小时则由 23 跳到 00。当到达 59 分 55 秒的时候,LED灯

9、会闪烁来进行报时。因为控制器和计数器的驱动信号频率均为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; reg 5:0 Hour; reg 5:0 Minute; reg 5:0 Second; reg R1; reg R2,R8,LED; reg 10:

10、0 Cout; reg Clk_En; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 12 页 - - - - - - - - - 6 always(posedge CPout) begin if(S1=0) begin R1=1; end if(S2=0) begin R2=1; end if(RET=0) begin R8=1; end Cout=(Cout=32d1000)?32d0:(Cout + 32d1); Clk_En=(Cout=32d1000)?1d1

11、:1d0; if(Clk_En) begin if(R1=1) begin if(Hour24) Hour=Hour+1; if(Hour=24) begin Hour=0; end R1=0; end if(R2=1) begin if(Minute60) Minute=Minute+1; if(Minute=60) begin Minute=0; if(Hour24) Hour=Hour+1; if(Hour=24) begin Hour=0; end end R2=0; end 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - -

12、- 名师精心整理 - - - - - - - 第 6 页,共 12 页 - - - - - - - - - 7 if(Second60) Second=Second+1; if(Second=60) begin Second=0; if(Minute60) Minute=Minute+1; if(Minute=60) begin Minute=0; if(Hour55)/整点倒计时begin if(LED=1) LED=0; else LED=1; end else LED=0; if(R8=1)/清零begin Hour=0; Minute=0; Second=0; R8=0; end en

13、d end endmodule 功能仿真波形如图3 所示:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 12 页 - - - - - - - - - 8 3显示器显示器的作用是将时分秒的值在数码管上依次显示出来。从分频器输出的 1Khz 的信号作为数码管的扫描信号。SEL 表示三个数码管选择位,它的取值表示八个数码管,从左至右依次是111000。LEDGA表示七段数码管,它的取值决定特定位数上显示的数字。源程序如下:module xianshi( CPout,Hour,

14、Minute,Second,SEL,LEDAG ); input CPout; 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 ) begin shiwei1=Hour/10; gewei1=Hour%10; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 12

15、页 - - - - - - - - - 9 shiwei2=Minute/10; gewei2=Minute%10; shiwei3=Second/10; gewei3=Second%10; if(SEL=3b110) / 判断位选 SEL的值,并将此位上的值输出到数码管case(shiwei1) 4b0000: Led = 7b0111_111; 4b0001: Led = 7b0000_110; 4b0010: Led = 7b1011_011; 4b0011: Led = 7b1001_111; 4b0100: Led = 7b1100_110; 4b0101: Led = 7b1101

16、_101; 4b0110: Led = 7b1111_101; 4b0111: Led = 7b0000_111; 4b1000: Led = 7b1111_111; 4b1001: Led = 7b1101_111; default: Led = 7b0000_000; endcase if(SEL=3b101) case(gewei1) 4b0000: Led = 7b0111_111; 4b0001: Led = 7b0000_110; 4b0010: Led = 7b1011_011; 4b0011: Led = 7b1001_111; 4b0100: Led = 7b1100_110

17、; 4b0101: Led = 7b1101_101; 4b0110: Led = 7b1111_101; 4b0111: Led = 7b0000_111; 4b1000: Led = 7b1111_111; 4b1001: Led = 7b1101_111; default: Led = 7b0000_000; endcase if(SEL=3b100) Led=7b1000_000; if(SEL=3b011) case(shiwei2) 4b0000: Led = 7b0111_111; 4b0001: Led = 7b0000_110; 4b0010: Led = 7b1011_01

18、1; 4b0011: Led = 7b1001_111; 4b0100: Led = 7b1100_110; 4b0101: Led = 7b1101_101; 4b0110: Led = 7b1111_101; 4b0111: Led = 7b0000_111; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 12 页 - - - - - - - - - 10 4b1000: Led = 7b1111_111; 4b1001: Led = 7b1101_111; def

19、ault: Led = 7b0000_000; endcase if(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:

20、 Led = 7b1101_111; default: Led = 7b0000_000; endcase if(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

21、: Led = 7b0000_111; 4b1000: Led = 7b1111_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: Le

22、d = 7b1111_101; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 12 页 - - - - - - - - - 11 4b0111: Led = 7b0000_111; 4b1000: Led = 7b1111_111; 4b1001: Led = 7b1101_111; default: Led = 7b0000_000; endcase SEL = SEL + 3d1; end assign LEDAG=Led; endmodule 四 总结体会这次课

23、程设计虽然只有短短的四天, 但我的收获却很大。 通过这次实习,我掌握了 EDA设计的基本流程(即设计输入编译调试仿真下载),领会了自顶而下结构化设计的优点,并具备了初步的EDA程序设计能力。我感觉,这个程序最难的地方在于顶层模块的设计,因为顶层模块需要将各个子模块按照电路原理有机地结合起来,这需要扎实的理论功底,而这正是我所欠缺的。相比而言,子模块的设计就容易多了,因为Verilog语言和 C语言有很多相似之处,只要明白了实验原理,就不难完成,水平的高下只体现在程序的简洁与否。Verilog 源程序的编写很容易出现错误,这就需要耐心的调试。 因为很多情况下, 一长串的错误往往是由一个不经名师资

24、料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 12 页 - - - - - - - - - 12 意的小错误引起的。 当程序屡调屡错的时候, 最好和其他同学沟通交流一下,他们不经意的一句话,就可能给我启发,使问题迎刃而解。这次实习,给我感触最深的还是行为态度问题。人的能力有大有小,但只要端正态度, 不抛弃,不放弃,任何人都能取得令自己满意的成绩。在此,我由衷的感谢在这次课程设计中给了我巨大帮助的老师和同学们!名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 12 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术总结

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁