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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数字日历电路的设计.docx

1、数字日历电路的设计 桂林电子科技大学信息科技学院EDA技术与应用实训报告学 号 姓 名 指导教师: 2012 年 6 月 22 日 题目:数字日历电路的设计1.系统设计1.1设计要求1.1.1设计任务用EDA的方法设计一个数字日历1.1.2性能指标 用EDA实训仪的I/O设备和PLD芯片实现数字日历的设计。 数字日历能够显示年、月、日、时、分、秒。 数字日历有复位的功能,有校年、月、日和校时、分、秒的功能,通过一个开关来转换时校年、月、日还是校时、分、秒。 此数字日历具有闹钟的功能,在6:01将开启闹钟,用一个LED灯表示,可以在任意时刻关闭闹钟。1.2设计思路及框图1.2.1设计思路日历主要

2、由年月日模块和时分秒模块组成,由分频器提供脉冲,再加上一个控制模块实现控制选择校准时分秒还是校准年月日。也可以实现时分秒和年月日的八秒自由转换。再加上一个闹钟,在6:01的时候闹钟开启,并由一个开关控制,在任意时间都可以关掉闹钟。 1.2.2总体设计框图2各模块程序设计2.1时分秒计时器模块:module cnt60(clrn,clk,q,j,cont); /秒和分计时input clrn,clk,j;output reg 7:0 q;output reg cont;always (posedge clkj or negedge clrn)beginif(clrn) q=0;else begi

3、nif(q=h59) q=0;else q=q+1;if(q3:0=ha) begin q3:0=0;q7:4=q7:4+1;endif(q=h59) cont=1;else cont=0;endendendmodule module cnt24(clrn,clk,q,j,cont); /小时计时input clrn,clk,j;output reg 7:0 q;output reg cont;always (posedge clkj or negedge clrn)beginif(clrn) q=0;else beginif(q=h23) q=0;else q=q+1;if(q3:0=ha)

4、 begin q3:0=0;q7:4=q7:4+1;endif(q=h23) cont=1;else cont=0;endendendmodule 2.2年月日模块module nyr2009(clrn,clk,jn,jy,jr,qn,qy,qr); /年月日模块 input clrn,clk,jn,jy,jr; output 15:0 qn; output 7:0 qy,qr; reg 15:0 qn; reg 7:0 qy,qr; reg clkn,clky; reg 7:0 date; reg clkn1,clkn2,clkn3;initial begin clkn1=1;clkn2=1

5、;clkn3=1;endinitial begin qn=h2000;qy=1;qr=1;end always (posedge (clkjr) or negedge clrn) / 日计时模块 begin if (clrn) qr=1; else begin if (qr=date) qr=1; else qr=qr+1; if (qr3:0=ha) begin qr3:0=0; qr7:4=qr7:4+1;end if (qr=date) clky = 1; else clky = 0;end endalways (posedge clkyjy or negedge clrn) /月计时模

6、块 begin if (clrn) qy=1; else begin if (qy=h12) qy=1; else qy=qy+1; if (qy3:0=ha) begin qy3:0=0;qy7:4=qy7:4+1;end if (qy=h12) clkn = 1; else clkn = 0;end endalways begin case (qy) h01: date=h31; h02: begin if (qn%4=0)&(qn%100 != 0)|(qn%400=0) date=h29; else date=h28; end h03: date=h31; h04: date=h30;

7、 h05: date=h31; h06: date=h30; h07: date=h31; h08: date=h31; h09: date=h30; h10: date=h31; h11: date=h30; h12: date=h31; default :date=h30; endcase endalways (posedge (clknjn) or negedge clrn ) /年计时模块 begin if (clrn) qn3:0=0; else begin if(qn3:0=9) qn3:0=0; else qn3:0=qn3:0+1; if (qn3:0=9) clkn1=0;

8、else clkn1=1;end endalways (posedge clkn1 or negedge clrn ) begin if (clrn) qn7:4=0; else begin if(qn7:4=9) qn7:4=0; else qn7:4=qn7:4+1; if (qn7:4=9) clkn2=0; else clkn2=1;end endalways (posedge clkn2 or negedge clrn ) begin if (clrn) qn11:8=0; else begin if(qn11:8=9) qn11:8=0; else qn11:8=qn11:8+1;

9、 if (qn11:8=9) clkn3=0; else clkn3=1;end endalways (posedge clkn3 or negedge clrn ) begin if (clrn) qn15:12=2; else if(qn15:12=9) qn15:12=0; else qn15:12=qn15:12+1; endendmodule 2.3校时模块module mux_4(k,jm,jf,js,jr,jy,jn,j1,j2,j3);input k,j1,j2,j3;output reg jm,jf,js,jr,jy,jn;always begin if (k=0) jm,j

10、f,js=j1,j2,j3; else jr,jy,jn=j1,j2,j3; endendmodule 2.4分频器模块同时给时分秒和闹钟送入脉冲module FENP(clk,newclk);input clk;output reg newclk;reg24:0 cnter;always (posedge clk) begin if(cnter20000000) cnter=cnter+1; else cnter=0; if (cnter10000000) newclk=1;else newclk=0; end endmodule2.5控制器模块显示年月日和显示时分秒直接的转换控制modul

11、e contr(clk,k1,k2,k); input clk,k1,k2; output reg k; reg 3:0 qc; reg rc;always (posedge clk) begin qc=qc+1; if (qc8) rc=0; else rc=1; case (k1,k2) 0:k=rc; /八秒显示年月日八秒显示时分秒的自由转换 1:k=0; /显示并且校准时分秒 2:k=1; /显示并且校准年月日 3:k=rc; endcase endendmodule 2.6闹钟模块module naozhong(qs,qf,led,zt);input zt;input7:0 qs,q

12、f;output led;reg led;always beginif (qs=h06&qf=h01) /6:01闹钟开始闪烁 led=1; else led=0; if(zt=1) led=0; / 在任意时刻都可以关掉闹钟 endendmodule 2.7数码管显示模块module mux_16(k,qm,qf,qs,qr,qy,qn,q); input k; input7:0 qm,qf,qs,qr,qy; input15:0 qn; output reg 31:0 q;always begin if (k=0) begin q31:24=0; q23:0=qs,qf,qm;end el

13、se q=qn,qy,qr; endendmodule 3调试过程 在调试过程中出现很多问题,在时分秒里加入分频器可以实现计时,但是闹钟就不能实现1秒钟闪烁一次的功能,当给闹钟加上一个分频器的时候,时分秒模块也不能自动计时。首先认识到必须只能有一个分频器,而且还能同时给两个提供脉冲。所以就删除了时分秒里的分频器,在总的图中加入一个分频器,同时给两个提供脉冲,这样两个功能都可以同时实现。 4功能测试4.1 测试仪器与设备 电脑,EDA实训仪。4.2 性能指标测试 S0、S1控制手动切换和自动切换,当S0、S1都往上拨或都往下拨都是自动切换,SO上拨S1下拨是显示并可以校准时分秒的,反之是显示和校

14、准年月日的。K8、K7、K6分别是校准年月日或时分秒的。K0是复位功能5 实训心得体会 通过这次EDA实训,把课堂上学习的知识又巩固了一遍,也更加熟悉了对quartusII软件的使用。这次我们小组选作数字日历这个题目,创新点在于闹钟模块,可以实现闹钟的功能。通过小组的分工合作,把大家的思路整合在一起,在一起分析程序的使用,互相学习,更加理解了程序的用法。EDA的功能很强大,去除了传统算法的复杂,是程序简单化,几个语句就可以实现想要的功能。在我们所做的日历中,分别用到计数,分频,选择器这些最基本的功能,然后加以改善和创新,实现了日历的功能。6.参考文献:江国强.EDA技术与应用(第三版).北京:

15、电子工业出版社,2011附录附录1:仿真波形图1.分频器仿真波形图2.时分秒仿真波形图3.年月日仿真波形图4.闹钟仿真波形图附录2:程序清单:程序1module cnt60(clrn,clk,q,j,cont); /秒和分计时input clrn,clk,j;output reg 7:0 q;output reg cont;always (posedge clkj or negedge clrn)beginif(clrn) q=0;else beginif(q=h59) q=0;else q=q+1;if(q3:0=ha) begin q3:0=0;q7:4=q7:4+1;endif(q=h5

16、9) cont=1;else cont=0;endendendmodule 程序2module cnt24(clrn,clk,q,j,cont); /小时计时input clrn,clk,j;output reg 7:0 q;output reg cont;always (posedge clkj or negedge clrn)beginif(clrn) q=0;else beginif(q=h23) q=0;else q=q+1;if(q3:0=ha) begin q3:0=0;q7:4=q7:4+1;endif(q=h23) cont=1;else cont=0;endendendmod

17、ule 程序3module nyr2009(clrn,clk,jn,jy,jr,qn,qy,qr); /年月日模块 input clrn,clk,jn,jy,jr; output 15:0 qn; output 7:0 qy,qr; reg 15:0 qn; reg 7:0 qy,qr; reg clkn,clky; reg 7:0 date; reg clkn1,clkn2,clkn3;initial begin clkn1=1;clkn2=1;clkn3=1;endinitial begin qn=h2000;qy=1;qr=1;end always (posedge (clkjr) or

18、 negedge clrn) / 日计时模块 begin if (clrn) qr=1; else begin if (qr=date) qr=1; else qr=qr+1; if (qr3:0=ha) begin qr3:0=0; qr7:4=qr7:4+1;end if (qr=date) clky = 1; else clky = 0;end endalways (posedge clkyjy or negedge clrn) /月计时模块 begin if (clrn) qy=1; else begin if (qy=h12) qy=1; else qy=qy+1; if (qy3:

19、0=ha) begin qy3:0=0;qy7:4=qy7:4+1;end if (qy=h12) clkn = 1; else clkn = 0;end endalways begin case (qy) h01: date=h31; h02: begin if (qn%4=0)&(qn%100 != 0)|(qn%400=0) date=h29; else date=h28; end h03: date=h31; h04: date=h30; h05: date=h31; h06: date=h30; h07: date=h31; h08: date=h31; h09: date=h30;

20、 h10: date=h31; h11: date=h30; h12: date=h31; default :date=h30; endcase endalways (posedge (clknjn) or negedge clrn ) /年计时模块 begin if (clrn) qn3:0=0; else begin if(qn3:0=9) qn3:0=0; else qn3:0=qn3:0+1; if (qn3:0=9) clkn1=0; else clkn1=1;end endalways (posedge clkn1 or negedge clrn ) begin if (clrn)

21、 qn7:4=0; else begin if(qn7:4=9) qn7:4=0; else qn7:4=qn7:4+1; if (qn7:4=9) clkn2=0; else clkn2=1;end endalways (posedge clkn2 or negedge clrn ) begin if (clrn) qn11:8=0; else begin if(qn11:8=9) qn11:8=0; else qn11:8=qn11:8+1; if (qn11:8=9) clkn3=0; else clkn3=1;end endalways (posedge clkn3 or negedg

22、e clrn ) begin if (clrn) qn15:12=2; else if(qn15:12=9) qn15:12=0; else qn15:12=qn15:12+1; endendmodule 程序4module mux_4(k,jm,jf,js,jr,jy,jn,j1,j2,j3); /校时模块input k,j1,j2,j3;output reg jm,jf,js,jr,jy,jn;always begin if (k=0) jm,jf,js=j1,j2,j3; else jr,jy,jn=j1,j2,j3; endendmodule 程序5module FENP(clk,ne

23、wclk); /分频器模块input clk;output reg newclk;reg24:0 cnter;always (posedge clk) begin if(cnter20000000) cnter=cnter+1; else cnter=0; if (cnter10000000) newclk=1;else newclk=0; end endmodule程序6module contr(clk,k1,k2,k); /控制器模块 input clk,k1,k2; output reg k; reg 3:0 qc; reg rc;always (posedge clk) begin q

24、c=qc+1; if (qc8) rc=0; else rc=1; case (k1,k2) 0:k=rc; /八秒显示年月日八秒显示时分秒的自由转换 1:k=0; /显示并且校准时分秒 2:k=1; /显示并且校准年月日 3:k=rc; endcase endendmodule 程序7module naozhong(qs,qf,led,zt); /闹钟模块input zt;input7:0 qs,qf;output led;reg led;always beginif (qs=h06&qf=h01) /6:01闹钟开始闪烁 led=1; else led=0; if(zt=1) led=0; / 在任意时刻都可以关掉闹钟 endendmodule 程序8module mux_16(k,qm,qf,qs,qr,qy,qn,q); /数码管显示模块 input k; input7:0 qm,qf,qs,qr,qy; input15:0 qn; output reg 31:0 q;always begin if (k=0) begin q31:24=0; q23:0=qs,qf,qm;end else q=qn,qy,qr; endendmodule

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2