数字日历电路设计EDA实训

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

成绩

批阅教师

日期

桂林电子科技大学

实训报告

2016-2017学年第1学期

学院海洋信息工程学院

课程EDA综合实训

姓名钟朝林

学号 1416030218

指导老师覃琴

日期2016/12/29

实训题目:数字日历电路的设计

1 概述

1.1 设计要求

1.1.1 设计任务

设计并制作一台数字日历。

1.1.2 性能指标要求

①用EDA实训仪的I/O设备和PLD芯片实现数字日历的设计。

②数字日历能够显示年、月、日、时、分和秒。

③用EDA实训仪上的8只八段数码管分两屏分别显示年、月、日和时、分、秒,即在一定时间段内显示年、月、日(如20080101),然后在另一时间段内显示时、分、秒(如00123625),两个时间段能自动倒换。

④数字日历具有复位和校准年、月、日、时、分、秒的按钮,但校年和校时同用一个按钮,即在显示年、月、日时用此按钮校年,在显示时、分、秒时则用此按钮校时,依此类推。

1.2 总体设计基本原理及框图

1.2.1 基本原理

日历主要由年月日模块、时分秒模块、控制模块、显示模块、校时模块组成。采

用3个公用按钮j1、j2、和j3完成时分秒或年月日的校时,用8只七段数码管分

时完成时分秒或年月日的显示。设计电路的计时器模块(jsq24)用于完成一天

的24小时计时;年月日模块接收计时器模块送来的“天”脉冲进行计数,得到

日月年的显示结果,控制模块产生控制信号k,控制数码显示器显示年月日,还

是时分秒,或者自动轮流显示;校时选择模块在k信号的控制下,选择将j1、j2

和j3这3个校时按钮产生的信号是送到计时器模块的校秒、校分和校时输入端,

还是送到年月日模块的校天、校月、校年输入端;显示选择模块在k信号的控制

下,选择是将计时器模块的时、分、秒状态信号,还是将年月日模块的年、月、

日状态信号送到数码管显示器显示。

1.2.2 总体框图

2 系统软件设计分析

2.1年月日模块

module r(clrn,clk,jn,jy,jr,qn,qy,qr); //年月日模块input clrn,clk,jn,jy,jr;

output reg[15:0] qn;

reg [15:0] qn1;

output 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='h2011;qn1=2011;qy=1;qr=1;end

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

if(~clrn)qr=1;

else begin

if(qr==date)begin qr=1; clky=1;end

else begin qr=qr+1;clky=0;end

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

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

end

end

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

if(~clrn) qy=1;

else begin

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

else begin qy=qy+1;clkn=0;end

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

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

end

end

always

begin

case(qy)

'h01:date='h31;

'h02:begin

if((qn1%4==0)&(qn1%100 != 0)|(qn1%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;

default: date='h30;

endcase

end

always @( posedge (clkn^jn) or negedge clrn) //年计时模块 begin

if(~clrn)begin qn[3:0]=1;qn1=2011;end

else begin if(qn[3:0]==9)qn[3:0]=0;

else begin qn[3:0]=qn[3:0]+1;qn1=qn1+1;end

if(qn[3:0]==9)clkn1=0;

else clkn1=1;end

end

always @(posedge clkn1 or negedge clrn)

begin

if(~clrn)qn[7:4]=1;

else begin if(qn[7:4]==9) qn[7:4]=0;

else qn[7:4]=qn[7:4]+1;

if(qn[7:4]==9) clkn2=0;

相关文档
最新文档