基于VerilogHDL的万年历Word格式文档下载.docx

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

基于VerilogHDL的万年历Word格式文档下载.docx

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

基于VerilogHDL的万年历Word格式文档下载.docx

关键词:

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

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

您唐老师!

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

当前位置:首页 > 高中教育 > 其它课程

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

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