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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数字电路时钟设计verilog语言编写.docx

1、数字电路时钟设计verilog语言编写电子线路设计与测试实验报告一、实验名称多功能数字钟设计二、 实验目的1.掌握可编程逻辑器件的应用开发技术 设计输入、编译、仿真和器件编程;2.熟悉一种EDA软件使用;3.掌握Verilog设计方法;4.掌握分模块分层次的设计方法;5.用Verilog完成一个多功能数字钟设计。三、 设计内容及要求1基本功能 具有“秒”、“分”、“时”计时功能,小时按24小时制计时。 具有校时功能,能对“分”和“小时”进行调整。2.扩展功能 仿广播电台正点报时。在59分51秒、53秒、55秒、57秒发出低音512Hz信号,在59分59秒时发出一次高音1024Hz信号,音响持续

2、1秒钟,在1024Hz音响结束时刻为整点。 定时控制,其时间为23时58分。3.选做内容 任意时刻闹钟(闹钟时间可设置)。 自动报整点时数。四系统框图与说明数字钟框图1.数字钟电路系统由主体电路和扩展电路两大部分所组成。2.秒计数器计满60后向分计数器进位,分计数器计满60后向小时计数器进位,小时计数器按照“24进制”规律计数。3.计数器的输出经译码器送显示器。五 设计步骤1.列写多功能数字钟设计-层次结构图2.拟定数字钟的组成框图,在Max+Plus II软件中,使用Verilog语言输入,采用分层次分模块的方法设计电路;3.设计各单元电路并进行仿真;4.对数字钟的整体逻辑电路图,选择器件,

3、分配引脚,进行逻辑综合;5.下载到Cyclone FPGA实验平台上,实际测试数字钟的逻辑功能。六Verilog代码/24进制时钟, 具有计时、校时、仿广播电台正点报时、固定时刻定时,任意时刻闹钟等功能module clock_main(LED_Hour,LED_Minute,LED_Second,Alarm,CP_1KHz,Jsh_Min_key,Jsh_Hour_key,Set_Hour_key,Set_Min_key,Show,Ctrl_Bell); input CP_1KHz;/定义输入时钟 input Jsh_Min_key,Jsh_Hour_key;/定义校时按键 input Se

4、t_Hour_key,Set_Min_key;/定义闹钟定时按键 input Show; /定义显示模式按键 input Ctrl_Bell;/定义闹钟铃声控制 output 7:0LED_Hour,LED_Minute,LED_Second;/定义输出变量 wire 7:0LED_Hour,LED_Minute,LED_Second;/定义输出变量类型 wire 7:0Hour,Minute,Second; wire 7:0Set_Hour_Out,Set_Min_Out; wire Out_1Hz,Out_500Hz;/定义分频模块输出变量类型 reg Alarm_Ring,Alarm_C

5、lock_1KHz;/定义仿广播电台报时和固定时刻定时铃声 output Alarm;/蜂鸣器输入 supply1Vdd; wire Alarm_Clock;/任意时刻闹钟闹铃 wire MinL_EN,MinH_EN,Hour_EN;/定义中间变量类型/分频 fre_dividerFD0(Out_1Hz,Out_500Hz,Vdd,Vdd,CP_1KHz);/正常计时 counter10 U1(.Q(Second3:0),.nCR(Vdd),.EN(Vdd),.CP(Out_1Hz); counter6 U2(.Q(Second7:4),.nCR(Vdd),.EN(Second3:0=4h9

6、),.CP(Out_1Hz); assignMinL_EN=Jsh_Min_key?Vdd:(Second=8h59); assign MinH_EN=(Jsh_Min_key&(Minute3:0=4h9)|(Minute3:0=4h9)&(Second=8h59); counter10 U3(.Q(Minute3:0),.nCR(Vdd),.EN(MinL_EN),.CP(Out_1Hz); counter6 U4(.Q(Minute7:4),.nCR(Vdd),.EN(MinH_EN),.CP(Out_1Hz); assign Hour_EN=Jsh_Hour_key?Vdd:(Minu

7、te=8h59)&(Second=8h59); counter24 U5(Hour7:4,Hour3:0,Vdd,Hour_EN,Out_1Hz);/仿广播电台正点报时 baoshi BS1(Alarm_Ring,Minute,Second,Out_500Hz,CP_1KHz);/在59分51秒、53秒、55秒、57秒发出低音512Hz信号,在59分59秒时发出一次高音1024Hz信号,音响持续1秒钟,在1024Hz音响结束时刻为整点/固定时刻定时 always (Hour or Minute or Second)/所定时刻为23时58分,蜂鸣器发出低音1KHz信号,持续5秒钟 if (Hou

8、r=8h23&Minute=8h58) case (Second) 8h00, 8h01, 8h02, 8h03, 8h04:Alarm_Clock_1KHz=CP_1KHz; default Alarm_Clock_1KHz=1b0; endcase else Alarm_Clock_1KHz=1b0;/任意时刻闹钟 setclock SC1(Alarm_Clock,Set_Hour_Out,Set_Min_Out,Hour,Minute,Second,Set_Hour_key,Set_Min_key,CP_1KHz,Out_500Hz,Out_1Hz,Ctrl_Bell);/响铃 assi

9、gn Alarm=Alarm_Ring|Alarm_Clock_1KHz|Alarm_Clock;/数码管显示选择 Choice_2to1 CU1(LED_Hour,Show,Set_Hour_Out,Hour);/Show为高电平时,显示闹钟所定时刻;为低电平时,显示正常计时 Choice_2to1 CU2(LED_Minute,Show,Set_Min_Out,Minute); Choice_2to1 CU3(LED_Second,Show,8h00,Second);Endmodule/*分频模块,获得500Hz低频1Hz时钟源*modulefre_divider(Out_1Hz,Out_

10、500Hz,nCR,EN,In_1KHz);input nCR,EN,In_1KHz;output Out_1Hz,Out_500Hz;supply1Vdd;wire Out_1Hz,Out_500Hz; wire 11:0Qn;/定义中间变量类型wire EN1,EN2; counter10 DU1(.Q(Qn3:0),.nCR(nCR),.EN(EN),.CP(In_1KHz); counter10 DU2(.Q(Qn7:4),.nCR(nCR),.EN(EN1),.CP(In_1KHz); counter10 DU3(.Q(Qn11:8),.nCR(nCR),.EN(EN2),.CP(I

11、n_1KHz);assign EN1= (Qn3:0=4d9);assign EN2= (Qn7:4=4d9)&(Qn3:0=4d9);assign Out_500Hz=Qn0; assign Out_1Hz=Qn11;endmodule/*模10计数器*module counter10(Q,nCO,nCR,EN,CP);inputCP,nCR,EN;output3:0Q; outputnCO;reg3:0Q;always(posedge CP or negedgenCR)beginif(nCR)Q=4d9) Q= 4d0; else Q=Q+1d1; end else Q=Q;end ass

12、ignnCO=(Q3&Q0);endmodule/*模6计数器*module counter6(Q,nCO,nCR,EN,CP);inputCP,nCR,EN;output3:0Q; outputnCO;reg3:0Q;always(posedge CP or negedgenCR)beginif(nCR)Q=4d0;else if(EN) begin if(Q=4d5) Q= 4d0; else Q=Q+1d1; end else Q=Q;end assignnCO=(Q2&Q0);endmodule/*模60计数,用来构成分、秒计数*module counter60(Qnt,CO,nCR,

13、EN,CP);inputCP,nCR,EN;output 7:0Qnt;output CO;wire 7:0Qnt;counter10 U0(Qnt3:0,nCO_10,nCR,EN,CP);counter6 U1(Qnt7:4,nCO_6,nCR,Qnt3:0=4d9,CP);assign CO=(Qnt7:4=4d5)&(Qnt3:0=4d9);endmodule/*模24计数器*module counter24(CntH,CntL,nCR,EN,CP); inputCP,nCR,EN; output3:0CntH,CntL; reg 3:0CntH,CntL; always (posed

14、ge CP or negedgenCR) begin if(nCR) CntH,CntL=8h00; else if(EN) CntH,CntL2)|(CntL9)|(CntH=2)&(CntL=3) CntH,CntL=8h00; else if(CntH=2)&(CntL3) beginCntH= CntH;CntL= CntL+1b1;end else if(CntL=9) beginCntH= CntH+1b1;CntL = 4b0000;end else beginCntH= CntH;CntL= CntL+1b1;end endendmodule/*仿广播电台正点报时*module

15、baoshi(Alarm_Ring,Minute,Second,_500Hz,_1KHz); input 7:0 Minute,Second;/定义输入变量input _500Hz,_1KHz; output Alarm_Ring;/定义输出变量regAlarm_Ring;/定义输出变量类型always(Minute or Second)if(Minute=8h59)case (Second) 8h51, 8h53, 8h55, 8h57:Alarm_Ring=_500Hz; /在59分51秒、53秒、55秒、57秒发出低音512Hz信号 8h59:Alarm_Ring=_1KHz; /在59

16、分59秒时发出一次高音1024Hz信号default:Alarm_Ring=1b0;endcase else Alarm_Ring=1b0;Endmodule/*任意时刻闹钟*module setclock(Alarm_Clock,Set_Hour_Out,Set_Min_Out,Hour,Minute,Second,Set_Hour_key,Set_Min_key,_1KHz,_500Hz,_1Hz,Ctrl_Bell);inputSet_Hour_key,Set_Min_key;inputCtrl_Bell;input 7:0Hour,Minute,Second;outputAlarm_C

17、lock;output 7:0Set_Hour_Out,Set_Min_Out;wire 7:0Set_Hour_Out,Set_Min_Out;wireAlarm_Clock;input _1KHz,_500Hz,_1Hz;supply1Vdd;wireHourH_EQU,HourL_EQU,MinH_EQU,MinL_EQU;wireTime_EQU; counter60 SU1(.Qnt(Set_Min_Out),.nCR(Vdd),.EN(Set_Min_key),.CP(_1Hz); /实现闹钟分钟的设定 counter24 SU2(Set_Hour_Out7:4,Set_Hour_

18、Out3:0,Vdd,Set_Hour_key,_1Hz); /实现闹钟小时的设定comparator SU4(HourH_EQU,Set_Hour_Out7:4,Hour7:4); comparator SU5(HourL_EQU,Set_Hour_Out3:0,Hour3:0); comparator SU6(MinH_EQU,Set_Min_Out7:4,Minute7:4);comparator SU7(MinL_EQU,Set_Min_Out3:0,Minute3:0); assignTime_EQU=(HourH_EQU&HourL_EQU&MinH_EQU&MinL_EQU);

19、assign Alarm_Clock=Ctrl_Bell?(Time_EQU& (Second0=1b1)&_500Hz)|(Second0=1b0)&_1KHz):1b0;endmodule/*比较器*module comparator(EQU,A,B); /比较器,如果A和B相等时,则输出为1input 3:0 A,B;output EQU;assign EQU=(A=B);endmodule/*二选一选择器*module Choice_2to1(Qnt,SEL,X,Y); input 7:0 X,Y;input SEL;output 7:0 Qnt;assignQnt=SEL?X:Y;e

20、ndmodule七各工作模块仿真波形1.基本功能正常计时和校时2.仿广播电台正点报时3.固定时刻定时4.任意时刻定时及闹钟设定八实验总结:1对于本次能够成功地使用Verilog设计并仿真出多功能数字钟,感到非常满意。2本次多功能数字钟设计实验,从刚开始对Verilog语言非常陌生,到最后接近熟练地掌握Verilog语言的程度,期间花费不少时间和精力,同时也收获了很多,学会了使用Verilog语言编程仿真电路实验,掌握了可编程逻辑器件的应用开发技术,熟悉了一种EDA软件使用,掌握了Verilog设计方法,即分模块分层次的设计方法。3本次多功能数字钟设计实验,对于Verilog语言的学习与应用,可以说是一次很好的锻炼机会,在设计过程中,汲取了诸多经验教训,深刻体会到一个小小的错误可能会给整个程序所带来的严重后果。所以,在以后的学习及程序设计当中,我们一定要倍加小心,在程序出现不正常运行的情况下要耐心调试,尽量做到精益求精。 4由于时间有限,还有一部分选做内容没能够完成,即数字钟的自动报整点时数功能。但本次设计实验已使我对Verilog语言产生了浓厚的兴趣,在以后的学习生活中会主动去了解更多有关这方面的知识及其在实践中的应用。

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

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