基于VerilogHDL的万年历.docx
- 文档编号:26164713
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:10
- 大小:19.09KB
基于VerilogHDL的万年历.docx
《基于VerilogHDL的万年历.docx》由会员分享,可在线阅读,更多相关《基于VerilogHDL的万年历.docx(10页珍藏版)》请在冰豆网上搜索。
基于VerilogHDL的万年历
基于VerilogHDL的万年历
设计与总结报告
题目名称:
基于VerilogHDL的万年历研究设计报告人:
____
院系/年级/专业:
指导教师:
_
制作日期:
____
基于VerilogHDL的万年历
摘要
基于VerilogHDL的万年历设计,主要完成的任务是使用Verilog
语言,在Quartus2上完成电路设计,程序开发模拟,基于功能是能够显示/修改年月日时分秒。
电路设计模块:
分频、控制、时间显示调整、时分秒、年月日、显示控制、译码器。
各个模块完成不同的任务,合在一起就构成了万年历电路设计。
软件模拟直接在Quartus2上进行。
随着科学技术的发展,时间观念越来越重,但是老式的钟表以及日历等时间显示工具已不合时宜。
对此,数字钟表的设计有了用武之地。
基于Verilog的万年历设计,采用软件开发模拟,开发成本低,而且在功能设计上有了很大的灵活度。
同时,该设计的精度远远超过钟表,并且不需要维修。
综上所述,本设计具有设计方便、功能多样、电路简洁、成本低廉等优点。
符合社会发展趋势,前景广阔。
关键词:
万年历,VerilogHDL,Quartus2
BasedonthedesignofthecalendarVerilogHDLcircuitAbstract
ThecalendarbasedonFPGAdesign,themaintaskistouseeVriloglanguage,intheQuartus2completecircuitdesignmoduleisdividedintoseveralmodules:
pointfrequency,controlandtimedisplayadjustment,arc,date,display,whencontrol,decoder.Eachmodulecompletedifferenttasks,togethertheyformacalendarsystemcircuitdesign.SoftwaresimulationondirectlyinQuartus2.
Withthedevelopmentoftechnologyandscience,theconceptoftimeismoreandmoreheavey,butold-fashionedclockandcalendaretctimedisplaytoolsarenotverygood.
Keywords:
Calendar,VerilogHDL,Quartus2
摘要⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..1Abstract⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.2第一章万年历发展介绍及VerilogHDL简介3
1.1万年历的发展⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..31.2VerilogHDL简介⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯4第二章设计原理⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..52.1组成模块⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..6
2.2系统设计图⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..7
第三章各功能模块介绍⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯8第四章模拟仿真⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯11
4.1年月日仿真⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯12
4.2时分秒仿真⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯13
总结结论⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯14
参考文献⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯15
第一章万年历的发展介绍及VerilogHDL简介
1.1万年历的发展钟表、日历等的数字化大大方便了我们的日常生活,同时大大扩展了其功能,而这些功能的实现,均以钟表的数字化为基础的。
因此,研究数字化钟表以及扩大其应用,有现实意义。
此次设计与制作数字万年历就是为了了解数字钟的原理,从而学会制作。
通过它也可以进一步学习掌握各种逻辑电路与时序电路的原理与使用方法。
1.2VerilogHDL简介
VerilogHDL是一种硬件描述语言(HDL:
HardwareDiscriptionLanguage),是一种以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。
VerilogHDL和VHDL是目前世界上最流行的两种硬件描述语言,都是在20世纪80年代中期开发出来的。
前者由GatewayDesignAutomation公司(该公司于1989年被Cadence公司收购)开发。
两种HDL均为IEEE标准。
2.1组成模块
根据一般EDA实验设备的输入/输出接口的容限,本设计采用8只七段数码管分时完成时、分、秒或年、月、日的显示。
设计电路的计时器模块用于完成一天中的24小时计时;年月日模块接受计时器模块送来的“天”脉冲进行计数,得到日、月、年的显示结果;控制模块产生控制信号k,控制数码显示器显示年、月、日,还有显示时、分、秒,或是自动轮流显示;校时选择模块在k信号的控制下,选择将j1、j2和j3这3个校时按钮产生的信号是送到计时器模块的校秒、校分和校时的输入端,还是送到年月日模块的校天、校月和校年输入端;显示选择模块在k信号的控制下,选择是将计时器模块的时、分、秒状态信号,还是将年月日模块的年、月、日信号送到数码显示器显示。
2.2系统设计图
系统流程图
功能设计图
第三章各功能模块介绍
1.年月日模块设计
基于VerilongHDL的年月日模块设计的源程序nyr2009.v如下:
modulenyr2009(clrn,clk,qn,qy,qr);
inputclrn,clk;
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;
//初始化年脉冲
//initialbeginclkn1=1;clkn2=1;clkn3=1;end
//初始化年.月.日时间//initialbeginqn=`h2000;qy=1;qr=1;end
//日计数模块
always@(posedgeclkornegedgeclrn)begin
if(~clrn)qr=1;
else
begin
if(qr==date)qr=1;
elseqr=qr+1;
if(qr[3:
0]==`ha)
begin
qr[3:
0]=0;qr[7:
4]=qr[7:
4]+1;
end
if(qr==date)clky=1;
elseclky=0;
end
end
//月计算模块
always@(posedgeclkyornegedgeclrn)
begin
if(~clrn)qy=1;
elsebegin
if(qy=='h12)qy=1;
elseqy=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;
elseclkn=1;end
end
//产生每月的天数
always
begin
case(qy)
'h01:
date='h31;
'h01:
begin
if((qn/4==0)&(qn/100!
==0)|(qn/400==0))date='h29;//整百的年份被400整除的,是闰年,其他如果不是整百的年份,直接被4整除的是闰年。
elsedate='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;
'h011:
date='h30
'h12:
date='h31;
default:
date='h30
endcase
end
//年计数模块
always@(posedgeclknornegedgeclrn)
begin
if(~clrn)qn[3:
0]=0;
elsebeginif(qn[3:
0]==9)qn[3:
0]=0;
elseqn[3:
0]=qn[3:
0]+1;
if(qn[3:
0]==9)clkn1=0;
elseclkn1=1;end
end
always@(posedgeclkn1ornegedgeclrn)
begin
if(~clrn)qn[7:
4]=0;
elsebeginif(qn[7:
4]==9)qn[7:
4]=0;elseqn[7:
4]=qn[7:
4]+1;
if(qn[7:
4]==9)clkn2=0;
elseclkn2=1;end
end
always@(posedgeclkn2ornegedgeclrn)
begin
if(~clrn)qn[11:
8]=0;
elsebeginif(qn[11:
8]==9)qn[11:
8]=0;
elseqn[11:
8]=qn[11:
8]+1;
if(qn[7:
4]==9)clkn3=0;
elseclkn3=1;end
end
always@(posedgeclkn3ornegedgeclrn)
begin
if(~clrn)qn[15:
12]=2;
elseif(qn[15:
12]==9)qn[15:
12]=0;
elseqn[15:
12]=qn[15:
12]+1;
end
endmodule
其中clrn是异步清除端,低电平有效;clk是时钟输入端,上升沿有效;qn[15..0]、qy[7..0]和qr[7..0]分别是年、月和日的状态输出端。
2.控制模块的设计
基于VerilongHDL的控制模块(contr)设计的源程序contr.v如下:
modulecontr(clk,k1,k2,k);
inputclk,k1,k2;
outputk;
regk;
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:
k=rc;
endcase
end
endmodule
在控制模块中,使用了一个16分频电路,输出rc是周期为16秒得方波,即8秒高电平、8秒低电平,用于万年历的自动倒换的显示模式。
其中,clk是1秒时钟的输入端;k1和k2是控制输入端,当k1k2=00或11时自动显示模式,控制数码显示器用8秒钟时间显示
年、月、日,另外8秒钟时间显示时、分、秒;当
k1k2=01时,仅
控制显示时、分、秒;当k1k2=10时,仅显示年、
月、日;
k是控制
输入端。
3.校时选择模块的设计
基于VerilongHDL的校时选择模块设计的源程序
mux_4.v
如下:
modulemux_4(k,jm,jf,js,jr,jy,jn,j1,j2,j3);
inputk,j1,j2,j3;
outputjm,jf,js,jr,jy,jn;
regjm,jf,js,jr,jy,jn;
always@(korj1orj2orj3)
begin
if(k==0){jm,jf,js}={j1,j2,j3};
else{jr,jy,jn}={j1,j2,j3};
end
endmodule
k是控制输入端,当k=0时,控制将校时按钮j1,j2和j3的信号分别送到计时器模块的jm,jf,js;当k=1时,将校时按钮j1,j2和j3的信号分别送到年月日模块的,jr,jy,jn。
4.显示选择模块的设计
基于VerilongHDL的显示选择模块设计源程序mux_16.v如下:
modulemux_16(k,qm,qf,qs,qr,qy,qn,q);
inputk;
input[7:
0]qm,qf,qs,qr,qy;
input[15:
0]qn;
output[31:
0]q;
reg[31:
0]q;
always
begin
if(k==0)begin
q[31:
24]=0;
q[23:
0]={qs,qf,qm};end
elseq={qn,qy,qr};
end
endmodule
其中,k是控制输入端,当k=0时,控制将计时器模块送来的qm[7:
0]、qf[7:
0]和qs[7:
0]状态信号送到数码显示器显示;当k=1时,将年月日模块送来的qr[7:
0]、qy[7:
0]和qn[15:
0]状态信号送到数码显
第四章模拟仿真
4.1年月日仿真
4.2时分秒仿真
总结结论
通过此次设计研究,最终完成了万年历的设计与制作。
在设计过程中,我从各个模块的思路设计到实际程序编写,从点到面。
在出现与处理问题的过程中,不断提升自己处理细节问题的能力,最终达到了预期的效果。
而更重要的是通过系统设计这项项目,使我对于设计整体流程有了更加明晰的感受,对于今后的深入学习与应用奠定了基础。
在今后的学习中,我将继续加强EDA理论知识和Verilog语言的熟练掌握,争取更大的突破。
最后,感谢老师这学期的辛勤授课,您的敬业精神值得很多老师和学生学习,通过一学期的课程学习也是我进步很多。
谢谢您唐老师!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 VerilogHDL 万年历