资源描述:
《数字日历电路的设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、桂林电子科技大学信息科技学院《EDA技术与应用》实训报告学号姓名指导教师:2012年6月22日题目:数字日历电路的设计1.系统设计1.1设计要求1.1.1设计任务用EDA的方法设计一个数字日历1.1.2性能指标①用EDA实训仪的I/O设备和PLD芯片实现数字日历的设计。②数字日历能够显示年、月、日、时、分、秒。③数字日历有复位的功能,有校年、月、日和校时、分、秒的功能,通过一个开关来转换时校年、月、日还是校时、分、秒。④此数字日历具有闹钟的功能,在6:01将开启闹钟,用一个LED灯表示,可以在任意时刻关
2、闭闹钟。1.2设计思路及框图1.2.1设计思路日历主要由年月日模块和时分秒模块组成,由分频器提供脉冲,再加上一个控制模块实现控制选择校准时分秒还是校准年月日。也可以实现时分秒和年月日的八秒自由转换。再加上一个闹钟,在6:01的时候闹钟开启,并由一个开关控制,在任意时间都可以关掉闹钟。1.2.2总体设计框图2各模块程序设计2.1时分秒计时器模块:modulecnt60(clrn,clk,q,j,cont);//秒和分计时inputclrn,clk,j;outputreg[7:0]q;outputregco
3、nt;always@(posedgeclk^jornegedgeclrn)beginif(~clrn)q=0;elsebeginif(q=='h59)q=0;elseq=q+1;if(q[3:0]=='ha)beginq[3:0]=0;q[7:4]=q[7:4]+1;endif(q=='h59)cont=1;elsecont=0;endendendmodulemodulecnt24(clrn,clk,q,j,cont);//小时计时inputclrn,clk,j;outputreg[7:0]q;outp
4、utregcont;always@(posedgeclk^jornegedgeclrn)beginif(~clrn)q=0;elsebeginif(q=='h23)q=0;elseq=q+1;if(q[3:0]=='ha)beginq[3:0]=0;q[7:4]=q[7:4]+1;endif(q=='h23)cont=1;elsecont=0;endendendmodule2.2年月日模块modulenyr2009(clrn,clk,jn,jy,jr,qn,qy,qr);//年月日模块inputclrn
5、,clk,jn,jy,jr;output[15:0]qn;output[7:0]qy,qr;reg[15:0]qn;reg[7:0]qy,qr;regclkn,clky;reg[7:0]date;regclkn1,clkn2,clkn3;initialbeginclkn1=1;clkn2=1;clkn3=1;endinitialbeginqn='h2000;qy=1;qr=1;endalways@(posedge(clk^jr)ornegedgeclrn)//日计时模块beginif(~clrn)qr=
6、1;elsebeginif(qr==date)qr=1;elseqr=qr+1;if(qr[3:0]=='ha)beginqr[3:0]=0;qr[7:4]=qr[7:4]+1;endif(qr==date)clky=1;elseclky=0;endendalways@(posedgeclky^jyornegedgeclrn)//月计时模块beginif(~clrn)qy=1;elsebeginif(qy=='h12)qy=1;elseqy=qy+1;if(qy[3:0]=='ha)beginqy[3:
7、0]=0;qy[7:4]=qy[7:4]+1;endif(qy=='h12)clkn=1;elseclkn=0;endendalwaysbegincase(qy)'h01:date='h31;'h02:beginif((qn%4==0)&(qn%100!=0)
8、(qn%400==0))date='h29;elsedate='h28;end'h03:date='h31;'h04:date='h30;'h05:date='h31;'h06:date='h30;'h07:date='h31;'h08:date
9、='h31;'h09:date='h30;'h10:date='h31;'h11:date='h30;'h12:date='h31;default:date='h30;endcaseendalways@(posedge(clkn^jn)ornegedgeclrn)//年计时模块beginif(~clrn)qn[3:0]=0;elsebeginif(qn[3:0]==9)qn[3:0]=0;elseqn[3:0]=qn[3:0]+1;if(q