基于Verilog HDL的万年历文档格式.docx
- 文档编号:21091109
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:10
- 大小:118.65KB
基于Verilog HDL的万年历文档格式.docx
《基于Verilog HDL的万年历文档格式.docx》由会员分享,可在线阅读,更多相关《基于Verilog HDL的万年历文档格式.docx(10页珍藏版)》请在冰豆网上搜索。
万年历,VerilogHDL,Quartus2
BasedonthedesignofthecalendarVerilogHDLcircuit
Abstract
ThecalendarbasedonFPGAdesign,themaintaskistouseVeriloglanguage,intheQuartus2completecircuitdesignmoduleisdividedintoseveralmodules:
pointfrequency,controlandtimedisplayadjustment,arc,date,display,whencontrol,decoder.Eachmodulecompletedifferenttasks,togethertheyformacalendarsystemcircuitdesign.SoftwaresimulationondirectlyinQuartus2.
Withthedevelopmentoftechnologyandscience,theconceptoftimeismoreandmoreheavey,butold-fashionedclockandcalendaretctimedisplaytoolsarenotverygood.
Keywords:
Calendar,VerilogHDL,Quartus2
摘要……………………………………………………………………..1
Abstract………………………………………………………………….2
第一章万年历发展介绍及VerilogHDL简介....................................3
1.1万年历的发展………………………………………………………………..3
1.2VerilogHDL简介……………………………………………………4
第二章设计原理……………………………………………………..5
2.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:
reg[7:
regclkn,clky;
0]date;
regclkn1,clkn2,clkn3;
//初始化年脉冲
//initialbeginclkn1=1;
clkn2=1;
clkn3=1;
end
//初始化年.月.日时间
//initialbeginqn=`h2000;
qy=1;
qr=1;
//日计数模块
always@(posedgeclkornegedgeclrn)
begin
if(~clrn)qr=1;
else
if(qr==date)qr=1;
elseqr=qr+1;
if(qr[3:
0]==`ha)
qr[3:
0]=0;
qr[7:
4]=qr[7:
4]+1;
if(qr==date)clky=1;
elseclky=0;
//月计算模块
always@(posedgeclkyornegedgeclrn)
begin
if(~clrn)qy=1;
elsebegin
if(qy==’h12)qy=1;
elseqy=qy+1;
if(qy[3:
0]==’ha)begin
qy[3:
qy[7:
4]=qy[7:
if(qy==’h12)clkn=1;
elseclkn=1;
end
//产生每月的天数
always
case(qy)
’h01:
date=’h31;
if((qn/4==0)&
(qn/100!
==0)|(qn/400==0))date=’h29;
//整百的年份被400整除的,是闰年,其他如果不是整百的年份,直接被4整除的是闰年。
elsedate=’h28;
’h03:
’h04:
date=’h30;
’h05:
’h06:
’h07:
’h08:
’h09:
’h10:
’h011:
’h12:
default:
endcase
//年计数模块
always@(posedgeclknornegedgeclrn)
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;
4]==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;
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:
在控制模块中,使用了一个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};
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:
output[31:
0]q;
reg[31:
always
if(k==0)begin
q[31:
24]=0;
q[23:
0]={qs,qf,qm};
elseq={qn,qy,qr};
其中,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文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于Verilog HDL的万年历 基于 Verilog HDL 万年历