数字日历电路的设计..

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

桂林电子科技大学信息科技学院《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设计思路

日历主要由年月日模块和时分秒模块组成,由分频器提供脉冲,再加上一个控制模块实现控制选择校准时分秒还是校准年月日。也可以实现时分秒和年月日的八秒自由转换。再加上一个闹钟,在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 clk^j or negedge clrn)

begin

if(~clrn) q=0;

else begin

if(q=='h59) q=0;

else q=q+1;

if(q[3:0]=='ha) begin q[3:0]=0;q[7:4]=q[7:4]+1;end if(q=='h59) cont=1;

else cont=0;end

end

endmodule

module cnt24(clrn,clk,q,j,cont); //小时计时input clrn,clk,j;

output reg [7:0] q;

output reg cont;

always @(posedge clk^j or negedge clrn)

begin

if(~clrn) q=0;

else begin

if(q=='h23) q=0;

else q=q+1;

if(q[3:0]=='ha) begin q[3:0]=0;q[7:4]=q[7:4]+1;end

if(q=='h23) cont=1;

else cont=0;end

end

endmodule

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;clkn3=1;end

initial begin qn='h2000;qy=1;qr=1;end

always @(posedge (clk^jr) or negedge clrn) // 日计时模块begin

if (~clrn) qr=1;

else begin

if (qr==date) qr=1;

else qr=qr+1;

if (qr[3:0]=='ha) begin

qr[3:0]=0; qr[7:4]=qr[7:4]+1;end

if (qr==date) c lky = 1;

else clky = 0;end

end

always @(posedge clky^jy or negedge clrn) //月计时模块begin

if (~clrn) qy=1;

else begin

if (qy=='h12) qy=1;

else qy=qy+1;

if (qy[3:0]=='ha) begin

qy[3:0]=0;qy[7:4]=qy[7:4]+1;end

if (qy=='h12) clkn = 1;

else clkn = 0;end

end

always

begin

case (qy)

'h01: date='h31;

'h02: b egin

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;

'h10: date='h31;

'h11: date='h30;

'h12: date='h31;

相关文档
最新文档