数字日历电路地设计Word下载.docx
- 文档编号:21778816
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:17
- 大小:151.73KB
数字日历电路地设计Word下载.docx
《数字日历电路地设计Word下载.docx》由会员分享,可在线阅读,更多相关《数字日历电路地设计Word下载.docx(17页珍藏版)》请在冰豆网上搜索。
2.1时分秒计时器模块:
modulecnt60(clrn,clk,q,j,cont);
//秒和分计时
inputclrn,clk,j;
outputreg[7:
0]q;
outputregcont;
always@(posedgeclk^jornegedgeclrn)
begin
if(~clrn)q=0;
elsebegin
if(q=='
h59)q=0;
elseq=q+1;
if(q[3:
0]=='
ha)beginq[3:
0]=0;
q[7:
4]=q[7:
4]+1;
end
h59)cont=1;
elsecont=0;
endmodule
modulecnt24(clrn,clk,q,j,cont);
//小时计时
h23)q=0;
h23)cont=1;
2.2年月日模块
modulenyr2009(clrn,clk,jn,jy,jr,qn,qy,qr);
//年月日模块
inputclrn,clk,jn,jy,jr;
output[15:
0]qn;
output[7:
0]qy,qr;
reg[15:
0]qn;
reg[7:
0]qy,qr;
regclkn,clky;
0]date;
regclkn1,clkn2,clkn3;
initialbeginclkn1=1;
clkn2=1;
clkn3=1;
initialbeginqn='
h2000;
qy=1;
qr=1;
end
always@(posedge(clk^jr)ornegedgeclrn)//日计时模块
begin
if(~clrn)qr=1;
elsebegin
if(qr==date)qr=1;
elseqr=qr+1;
if(qr[3:
ha)begin
qr[3:
qr[7:
4]=qr[7:
if(qr==date)clky=1;
elseclky=0;
end
always@(posedgeclky^jyornegedgeclrn)//月计时模块
if(~clrn)qy=1;
if(qy=='
h12)qy=1;
elseqy=qy+1;
if(qy[3:
qy[3:
qy[7:
4]=qy[7:
h12)clkn=1;
elseclkn=0;
always
case(qy)
'
h01:
date='
h31;
h02:
if((qn%4==0)&
(qn%100!
=0)|(qn%400==0))date='
h29;
elsedate='
h28;
end
h03:
h04:
h30;
h05:
h06:
h07:
h08:
h09:
h10:
h11:
h12:
default:
date='
endcase
always@(posedge(clkn^jn)ornegedgeclrn)//年计时模块
if(~clrn)qn[3:
elsebeginif(qn[3:
0]==9)qn[3:
elseqn[3:
0]=qn[3:
0]+1;
if(qn[3:
0]==9)clkn1=0;
elseclkn1=1;
always@(posedgeclkn1ornegedgeclrn)
if(~clrn)qn[7:
4]=0;
elsebeginif(qn[7:
4]==9)qn[7:
elseqn[7:
4]=qn[7:
if(qn[7:
4]==9)clkn2=0;
elseclkn2=1;
always@(posedgeclkn2ornegedgeclrn)
if(~clrn)qn[11:
8]=0;
elsebeginif(qn[11:
8]==9)qn[11:
elseqn[11:
8]=qn[11:
8]+1;
if(qn[11:
8]==9)clkn3=0;
elseclkn3=1;
always@(posedgeclkn3ornegedgeclrn)
if(~clrn)qn[15:
12]=2;
elseif(qn[15:
12]==9)qn[15:
12]=0;
elseqn[15:
12]=qn[15:
12]+1;
2.3校时模块
modulemux_4(k,jm,jf,js,jr,jy,jn,j1,j2,j3);
inputk,j1,j2,j3;
outputregjm,jf,js,jr,jy,jn;
always
if(k==0){jm,jf,js}={j1,j2,j3};
else{jr,jy,jn}={j1,j2,j3};
2.4分频器模块
同时给时分秒和闹钟送入脉冲
moduleFENP(clk,newclk);
inputclk;
outputregnewclk;
reg[24:
0]cnter;
always@(posedgeclk)
if(cnter<
20000000)cnter=cnter+1;
elsecnter=0;
if(cnter<
10000000)newclk=1;
else
newclk=0;
endmodule
2.5控制器模块
显示年月日和显示时分秒直接的转换控制
modulecontr(clk,k1,k2,k);
inputclk,k1,k2;
outputregk;
reg[3:
0]qc;
regrc;
always@(posedgeclk)
beginqc=qc+1;
if(qc<
8)rc=0;
elserc=1;
case({k1,k2})
0:
k=rc;
//八秒显示年月日八秒显示时分秒的自由转换
1:
k=0;
//显示并且校准时分秒
2:
k=1;
//显示并且校准年月日
3:
2.6闹钟模块
modulenaozhong(qs,qf,led,zt);
inputzt;
input[7:
0]qs,qf;
outputled;
regled;
if(qs=='
h06&
&
qf=='
h01)//6:
01闹钟开始闪烁
led=1;
else
led=0;
if(zt==1)led=0;
//在任意时刻都可以关掉闹钟
2.7数码管显示模块
modulemux_16(k,qm,qf,qs,qr,qy,qn,q);
inputk;
input[7:
0]qm,qf,qs,qr,qy;
input[15:
0]qn;
outputreg[31:
begin
if(k==0)begin
q[31:
24]=0;
q[23:
0]={qs,qf,qm};
elseq={qn,qy,qr};
3.调试过程
在调试过程中出现很多问题,在时分秒里加入分频器可以实现计时,但是闹钟就不能实现1秒钟闪烁一次的功能,当给闹钟加上一个分频器的时候,时分秒模块也不能自动计时。
首先认识到必须只能有一个分频器,而且还能同时给两个提供脉冲。
所以就删除了时分秒里的分频器,在总的图中加入一个分频器,同时给两个提供脉冲,这样两个功能都可以同时实现。
4.功能测试
4.1测试仪器与设备
电脑,EDA实训仪。
4.2性能指标测试
S0、S1控制手动切换和自动切换,当S0、S1都往上拨或都往下拨都是自动切换,SO上拨S1下拨是显示并可以校准时分秒的,反之是显示和校准年月日的。
K8、K7、K6分别是校准年月日或时分秒的。
K0是复位功能
5实训心得体会
通过这次EDA实训,把课堂上学习的知识又巩固了一遍,也更加熟悉了对quartusII软件的使用。
这次我们小组选作数字日历这个题目,创新点在于闹钟模块,可以实现闹钟的功能。
通过小组的分工合作,把大家的思路整合在一起,在一起分析程序的使用,互相学习,更加理解了程序的用法。
EDA的功能很强大,去除了传统算法的复杂,是程序简单化,几个语句就可以实现想要的功能。
在我们所做的日历中,分别用到计数,分频,选择器这些最基本的功能,然后加以改善和创新,实现了日历的功能。
6.参考文献:
江国强.EDA技术与应用(第三版).北京:
电子工业出版社,2011
附录
附录1:
仿真波形图
1.分频器仿真波形图
2.时分秒仿真波形图
3.年月日仿真波形图
4.闹钟仿真波形图
附录2:
程序清单:
程序1
程序2
程序3
程序4
//校时模块
程序5
//分频器模块
程序6
//控制器模块
程序7
//闹钟模块
程序8
//数码管显示模块
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 日历 电路 设计