基于VerilogHDL的万年历.docx

上传人:b****6 文档编号:13569239 上传时间:2023-06-15 格式:DOCX 页数:10 大小:19.09KB
下载 相关 举报
基于VerilogHDL的万年历.docx_第1页
第1页 / 共10页
基于VerilogHDL的万年历.docx_第2页
第2页 / 共10页
基于VerilogHDL的万年历.docx_第3页
第3页 / 共10页
基于VerilogHDL的万年历.docx_第4页
第4页 / 共10页
基于VerilogHDL的万年历.docx_第5页
第5页 / 共10页
基于VerilogHDL的万年历.docx_第6页
第6页 / 共10页
基于VerilogHDL的万年历.docx_第7页
第7页 / 共10页
基于VerilogHDL的万年历.docx_第8页
第8页 / 共10页
基于VerilogHDL的万年历.docx_第9页
第9页 / 共10页
基于VerilogHDL的万年历.docx_第10页
第10页 / 共10页
亲,该文档总共10页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于VerilogHDL的万年历.docx

《基于VerilogHDL的万年历.docx》由会员分享,可在线阅读,更多相关《基于VerilogHDL的万年历.docx(10页珍藏版)》请在冰点文库上搜索。

基于VerilogHDL的万年历.docx

基于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语言的熟练掌握,争取更大的突破。

最后,感谢老师这学期的辛勤授课,您的敬业精神值得很多老师和学生学习,通过一学期的课程学习也是我进步很多。

谢谢您唐老师!

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2