ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:67.73KB ,
资源ID:17301296      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17301296.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于verilog数字钟设计报告Word格式文档下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于verilog数字钟设计报告Word格式文档下载.docx

1、分钟计数:在输入脉冲下,分钟开始计时,当计时达到59后,在下一个脉冲来临变0,并发出一个脉冲,供小时计数的输入脉冲新号。小时计数:脉冲信号来临时,计数加1,达到23后在下一个脉冲的作用下清零,从新计时。如果有复位信号,则时分秒全部清零。 module second(cp,reset,mode_flag,BT2,SH,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

2、 or negedge reset )beginif(!reset) begin /有复位,清零 cnt=8 SH=4 SLendelse if(mode_flag=4b0010)&(!BT2) begin/ 如果分钟调节,秒清零 if(cnt=8d59) /计时达到59,下一个脉冲下从新计时 co=1b1; else begin co=1 cnt=cnt+8=cnt%10; /秒十位=cnt/10; /秒各位endmodule 分计时和小时计时代码和上述类似,不再举出。second u4(_1HZ,reset,mode_flag,Keydone2,SH24,SL24,co1);minute

3、u5(co11,reset,MH24,ML24,co2);hour u6(co22,reset,HH24,HL24);(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 ; o

4、utput 3: reg 3: always (negedge MODE )begin /如果检测到有按键按下mode_flag = mode_flag+ 4 /模式值加1if(mode_flag = 4b0101) /到最后一个模式后返回第一的模式mode_flag = 2 ndEndmodule模式选择:module mode_choose(mode_flag,BT2,_250ms,co1,co2,set_co2,co11,co22,co111,co222); input 3: /输入模式方式,响应对应操作 input BT2,_250ms,co1,co2,set_co2; /调节按钮,时

5、钟信号,正常计时分钟脉冲信号, 正常计时小时脉冲信号,闹钟设置分钟进位信号。 output co11,co22,co111,co222; / 分钟脉冲信号,小时脉冲信号,闹钟设置分钟脉冲信号,闹钟设置小时脉冲信号; supply1 Vdd; reg co11,co22,co111,co222; always(mode_flag)begin case (mode_flag) 4b0001: if(BT2) co22=_250ms; /小时调钟模式,有按键,则脉冲为250ms else begin co22=co2; /没有按键,正常计时 co11=co1;b0010: if(BT2) begin

6、 co11 co22 else begin co11b0011: begin co22 if(BT2) co222 / 闹钟小时设置信号 else co222=set_co2;b0100: if(BT2) co111 /闹钟分钟设置信号 else co111=Vdd; default : endcase endmodule (4)、任意闹钟模块 : 一、设置闹钟:当对应于闹钟设置模式mode_flag=40011和4b0100时,有设置信号输入时,则开始设置。对应代码:module set_naozhong(co111,co222,set_HH,set_HL,set_MH,set_ML,co2

7、); input co111,co222; / 闹钟分钟,小时设置信号0set_HH,set_HL,set_MH,set_ML; /输出相应的闹钟设置时间 output co2; minute (co111,Vdd,set_MH,set_ML,co2);hour (co222,Vdd,set_HH,set_HL); 二、闹钟响应:当正常计时达到闹钟设置得时间后,通过比较二者之间的时间,相等,则产生一个闹钟允许响应信号,在闹钟开关打开和闹钟允许响应信号同时满足的情况下,则产生闹钟响应信号,并送到相应的闹钟设备LED灯。如果闹钟档处于关闭状态,则不会产生闹钟响应信号。响应代码如下:module n

8、aozhong (Alarm_ctr,_1HZ,set_HH,set_HL,set_MH,set_ML,HH24,HL24,MH24,ML24,nao_signal); input Alarm_ctr,_1HZ;0 set_HH,set_HL,set_MH,set_ML;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=HH2

9、4)&(set_HL=HL24)&(set_MH=MH24)&(set_ML=ML24)signalb1 /达到闹钟设置时间,产生闹钟允许响应信号 else signalend /未达到,不产生 else if(signal)&(Alarm_ctr)begin /闹钟开关打开和闹钟允许响应信号同时满足 nao_signald720)begin /响应时间完毕,关闭闹钟允许响应信号 Q=16 signal(5)、整点报时模块 :检测分钟和秒钟计数是否都达到了59,然后再下一个秒脉冲的作用下发出整点报时信号,送到LED。并开始计数,计数达到报时信号响应次数后,终止报时信号。 always(pose

10、dge _500ms)begin if(SH*10+SL)=8d59)&(MH*10+ML)=8d59)begin=7 baoend /允许报时 else if(Q110*HH+HL)&(bao) begin bao_signal=bao_signal; / 产生报时信号=Q1+bao_signal; /响一次计数加一 else if(Q1=(10*HH+HL) /报时次数达到整点时数,终止信号 else End(6)、1224小时切换模块:将24小时切换成12小时,并存入相应的寄存器。如果拨上切换显示档,则切换显示。 相应代码如下:module hour12_24(HH24,HL24,HH1

11、2,HL12);0 HH24,HL24;0 HH12,HL12; always(HH24 or HL24)begin if(HH24*10+HL24)=12) HH12=HH24; HL12=13)&(HH24*10+HL24)=19)=HL24-4d2;=19)&=21)=HL24+4d8;=HH24-4(7)、译码显示模块:一、数码管显示:通过传入响应的4位十进制数,运用case语句转换输出相应的8位二进制显示码,送入数码管显示。 代码如下: module SEG7_LUT(oSEG1,iDIG); input3:0iDIG; /输入要显示的数 output7:0oSEG1; reg7:0

12、oSEG; wire 7: always (iDIG)case(iDIG) 4h0: oSEG = 8b00111111;h1:b00000110;h2:b01011011;h3:b01001111;h4:b01100110;h5:b01101101;h6:b01111101;h7:b00000111;h8:b01111111;h9:b01101111;endcase assign oSEG1=oSEG; /由于是共阴极数码管,低电平显示,所以取反 二、LED显示 :module display_LED(s_out,s_int);0s_int;output3:0s_out;wire 3:0s_

13、out1;always (s_int)case(s_int)s_out=4b0000;b0001;b0010;b0011;b0100;b0101;b0110;b0111;b1000;b1001;assign s_out1=s_out;设计过程常见问题:(1)要注意编写程序的过程中begin和end配对问题,类似于C语言中的括号匹配问题,在编写计数模块时编译不通过,最后检查出是缺少一个end结束符号,经修改后编译通过。(2)Verilog HDL语言编写时的语法问题。在最初的计时模块的程序设计中,将小时、分钟的调节信号放在了另外的一个always语句块中,编译无法通过,经查阅资料,在Verilo

14、g HDL语言的编写中应该注意不同的always语句块不可以对同一个变量进行操作,即一个变量不可以经过两个always语句块操作。将对小时和分钟调节信号的操作与计时放在同一个语句块中,编译通过。(3)数码管刚开始时显示于实际计数不一样,主要是由译码错误造成的原因。数码管一开始不变化,说明计数没有进行,是由于分钟的输入脉冲信号错误引起。心得体会这次的课程设计结束了,在这次的设计中我学会了很多东西。首先是对Verilog HDL语言的设计思想有了深入理解,将这种自顶向下的设计理念运用于实践中,设计多功能数字钟,突出了Verilog HDL作为硬件描述语言的良好可读性和可移植性,对上学期所学的而理论

15、知识有了深刻的理解。其次是对Verilog HDL语言的语法熟悉,在这次的课程设计中,我学习到很多Verilog HDL语言的语法知识,比如在两个不同的语句块中不能对同一个变量进行操作,比如在用Verilog HDL语言中编写程序时要注意begin和end语句的匹配问题,在使用Verilog HDL语言时不可以使用中文注释等等。对于这种语言的学习也有了很大的帮助。最后是设计作品时的设计逻辑和设计思想,在选择不同的系统方案时要综合考虑,选择最优方案。各个模块的实现也要考虑综合情况而制定出最符合实际情况的实现方案,方案间要进行对比、实践,最终确定。在这次的课程设计中我不仅学习到有关程序编写以及设计

16、方面的逻辑思维,对系统功能的实现也有了较为深入的了解,对各模块的调试等也学习到不少东西,总之,从这次设计中学到很多东西,也巩固了我的理论学习。附代码:总模块:module clock(clk,reset,MODE,Alarm_ctr,BT2,H12_24,DSH,DSL,DMH,DML,DHH,DHL,dian,bao_signal,nao_signal); input clk;/50MHz input reset,MODE,Alarm_ctr,BT2,H12_24;/复位键,模式选择按钮,闹钟开关档,调节按 钮 ,1224小时切换档 output 7:0DMH,DML,DHH,DHL; /4

17、个数码管显示输入信号 output dian,bao_signal,nao_signal; /时分间隔点,报时信号,闹钟信号0DSH,DSL; /秒钟输出信号 wire 3:0 SH,SL,MH,ML,HH,HL;0 LED_mode;0 HH12,HL12,HH24,HL24,MH24,ML24,SH24,SL24; wire _1HZ,_10ms,_250ms,_500ms; wire Keydone1; wire Keydone2; wire co1,co11,co111,co2,co22,co222,set_co2; assign dian=1devide_f u1(_1HZ,_10m

18、s,_250ms,_500ms,reset,clk); /分频,得到4种不同频率的时钟信号key_press u2(_10ms,MODE,Keydone1); /模式档按钮去抖动key_press u20(_10ms,BT2,Keydone2); /调节按钮去除抖动mode u3(Keydone1,mode_flag); /通过模式按钮产生不同模式 /秒计时 /分计时 /小时计时 SEG7_LUT u7(DML,ML); /4个数码管显示SEG7_LUT u8(DMH,MH);SEG7_LUT u9(DHL,HL);SEG7_LUT u10(DHH,HH);display_LED u11(DS

19、L,SL); /LED灯显示秒或模式灯display_LED u12(DSH,SH);mode_choose u13(mode_flag,Keydone2,_250ms,co1,co2,set_co2,co11,co22,co111,co222); /选择模式进行不同操作 hour12_24 u14(HH24,HL24,HH12,HL12); /12-24小时切换boshi u15(HH,HL,MH,ML,SH,SL,_1HZ,bao_signal); /整点报时set_naozhong u16(co111,co222,set_HH,set_HL,set_MH,set_ML,set_co2);

20、 /设置闹钟时间Naozhong u17(Alarm_ctr,_500ms,set_HH,set_HL,set_MH,set_ML,HH24,HL24,MH24,ML24,nao_signal); /任意闹钟响应LUT_mode u18(mode_flag,H12_24,HH12,HL12,HH24,HL24,MH24,ML24,set_HH,set_HL,set_MH,set_ML,MH,ML,HH,HL);/通过模式选择数码管显示 LED_mode u19(mode_flag,SH24,SL24,SH,SL); 模式选择LED灯显示分频模块:module devide_f(_1HZ,_10

21、ms,_250ms,_500ms,nCR,_50MHZ); input _50MHZ,nCR; output _1HZ,_10ms,_250ms,_500ms; reg _1HZ,_10ms,_250ms,_500ms; reg31:0Q1,Q2,Q3,Q4; Q2 Q3 Q4d249999) _10ms=_10ms; else if(Q4d6299999) _250ms=_250ms; else if(Q3 _500ms=_500ms;=Q2+1=Q3+1=Q4+1 endmodule计时模块:module second(cp,reset,mode_flag,BT2,SH,SL,co);reset) begin SL=4SH=4cntBT2) el

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1