基于vhdl的万年历设计Word文件下载.docx

上传人:b****1 文档编号:1214021 上传时间:2023-04-30 格式:DOCX 页数:27 大小:2.57MB
下载 相关 举报
基于vhdl的万年历设计Word文件下载.docx_第1页
第1页 / 共27页
基于vhdl的万年历设计Word文件下载.docx_第2页
第2页 / 共27页
基于vhdl的万年历设计Word文件下载.docx_第3页
第3页 / 共27页
基于vhdl的万年历设计Word文件下载.docx_第4页
第4页 / 共27页
基于vhdl的万年历设计Word文件下载.docx_第5页
第5页 / 共27页
基于vhdl的万年历设计Word文件下载.docx_第6页
第6页 / 共27页
基于vhdl的万年历设计Word文件下载.docx_第7页
第7页 / 共27页
基于vhdl的万年历设计Word文件下载.docx_第8页
第8页 / 共27页
基于vhdl的万年历设计Word文件下载.docx_第9页
第9页 / 共27页
基于vhdl的万年历设计Word文件下载.docx_第10页
第10页 / 共27页
基于vhdl的万年历设计Word文件下载.docx_第11页
第11页 / 共27页
基于vhdl的万年历设计Word文件下载.docx_第12页
第12页 / 共27页
基于vhdl的万年历设计Word文件下载.docx_第13页
第13页 / 共27页
基于vhdl的万年历设计Word文件下载.docx_第14页
第14页 / 共27页
基于vhdl的万年历设计Word文件下载.docx_第15页
第15页 / 共27页
基于vhdl的万年历设计Word文件下载.docx_第16页
第16页 / 共27页
基于vhdl的万年历设计Word文件下载.docx_第17页
第17页 / 共27页
基于vhdl的万年历设计Word文件下载.docx_第18页
第18页 / 共27页
基于vhdl的万年历设计Word文件下载.docx_第19页
第19页 / 共27页
基于vhdl的万年历设计Word文件下载.docx_第20页
第20页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于vhdl的万年历设计Word文件下载.docx

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

基于vhdl的万年历设计Word文件下载.docx

模式0:

正常计时显示--K1不按,LED1到LED5都不亮

模式1:

调整分增加--K1按下一次,LED1亮其余四个不亮

模式2:

调整时增加--K1按下两次,LED2亮其余四个不亮

模式3:

调整日增加--K1按下三次,LED3亮其余四个不亮

模式4:

调整月增加--K1按下四次,LED4亮其余四个不亮

模式5:

调整年增加--K1按下五次,LED5亮其余四个不亮

CLK是外部1Hz输入时钟,作为秒的时钟输入,驱动整个万年历工作运行。

K3键是显示模式的选择,显示时分秒时,LEDSHUCHUMOSHI指示灯亮,显示年月日时,LEDSHUCHUMOSHI指示灯灭。

4.工作过程

当1Hz时钟信号从CLK输入端输入时,K1,K2,K3都没有按下时,系统从零(闰年)开始处于正常的计时模式,显示时分秒部分,LEDSHUCHUMOSHI指示灯亮。

低位计满归零并且向高位进1,如果月份是二月,则天计满29就向月进1。

如果按下按键3,LEDSHUCHUMOSHI指示灯不亮,显示年月日部分。

如果此时按一下按键1,那么万年历停止计时,工作于模式1,再通过按键2对分进行校时,通过同样的方法可以对时、日、月、年进行校时。

当校时完毕,需要万年历重新计时工作时,通过按下键1使LED1到LED5都不亮时,系统工作与正常计时模式。

五、实验结果

4.1VHDL程序与仿真

4.1.1秒与分模块

秒与分模块为六十进制的计数器

源程序:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYCNT60IS

PORT(CLK:

INSTD_LOGIC;

Q1,Q2:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);

COUT:

OUTSTD_LOGIC);

ENDCNT60;

ARCHITECTUREONEOFCNT60IS

SIGNALQ11,Q22:

STD_LOGIC_VECTOR(3DOWNTO0);

BEGIN

PROCESS(CLK)

BEGIN

IFCLK'

EVENTANDCLK='

1'

THEN

Q11<

=Q11+1;

IFQ11=9THENQ11<

=(OTHERS=>

'

0'

);

Q22<

=Q22+1;

ENDIF;

IFQ22=5ANDQ11=9THEN

="

0000"

;

Q11<

COUT<

='

ELSECOUT<

ENDPROCESS;

Q1<

=Q11;

Q2<

=Q22;

END;

仿真结果:

图660进制计数器仿真图

如上图所示当Q1、Q2计满60时,Q1、Q2都归零同时有一个进位输出脉冲,完成了六十进制计数器的功能,设计正确。

4.1.2小时模块

时模块为24进制计数器。

ENTITYCNT24IS

Q1,Q2:

ENDCNT24;

ARCHITECTUREONEOFCNT24IS

IFQ22=2ANDQ11=3THEN

图724进制计数器仿真图

如上图所示当Q1、Q2计满24时,Q1、Q2都归零同时有一个进位输出脉冲,完成了六十进制计数器的功能,设计正确。

4.1.3日(天)模块

日模块有四种情况,大月为31进制计数器,小月为30进制计数器,平年二月为28进制计数器,闰年二月为29进制计数器,需要有一个二位判断输入信号来进行进制数的选择。

ENTITYDAYIS

PORT(PANDUAN:

INSTD_LOGIC_VECTOR(1DOWNTO0);

--两位判断输入信号

CLK:

CQ1:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);

CQ2:

COUT:

ARCHITECTUREONEOFDAYIS

SIGNALCQ3,CQ4:

SIGNALPAN:

STD_LOGIC_VECTOR(1DOWNTO0);

PROCESS(CLK,PANDUAN)

BEGIN

IFCLK'

THEN--上升沿

CQ3<

=CQ3+1;

IFCQ3=9THENCQ3<

CQ4<

=CQ4+1;

PAN<

=PANDUAN;

CASEPANIS

WHEN"

00"

=>

IFCQ3="

0001"

ANDCQ4="

0011"

--判断信号为00时为31进

THENCQ3<

CQ4<

--制计数器

ELSECOUT<

ENDIF;

01"

--判断信号为01时为30进

10"

1000"

0010"

--判断信号为10时为28进

11"

1001"

--判断信号为11时为29进

WHENOTHERS=>

NULL;

ENDCASE;

CQ1<

=CQ3;

CQ2<

=CQ4;

ENDPROCESS;

图8判断信号为00时天模块仿真图

图9判断信号为01时天模块仿真图

图10判断信号为10时天模块仿真图

图11判断信号为11时天模块仿真图

如图8、9、10、11所示,仿真结果与设计要求一致,日模块的设计正确

4.1.4月模块

月模块为12进制计数器,同时其需要为天提供判断信号输出,其与天的判断输入信号相一致。

由于二月的判断信号输出要受到平年和闰年的影响,平年时判断信号是10,闰年时判断信号为11,所以它要有接收来之年模块的判断平年闰年的输出信号(run=0时表平年,run=1时表闰年)。

ENTITYMONTHIS

port(clk:

run:

cout:

OUTSTD_LOGIC;

pan:

OUTSTD_LOGIC_VECTOR(1DOWNTO0);

cq1,cq2:

OUTSTD_LOGIC_VECTOR(3DOWNTO0));

END;

ARCHITECTUREbehavOFMONTHIS

signalcq3,cq4:

STD_LOGIC_VECTOR(3DOWNTO0);

signalcq5:

STD_LOGIC_VECTOR(7DOWNTO0);

PROCESS(clk)

IFclk'

EVENTandclk='

THEN

cq3<

=cq3+1;

IFcq3=9THENcq4<

=cq4+1;

cq3<

ENDIF;

IFcq3=2andcq4=1THENcq3<

cq4<

cout<

ELSEcout<

--十二进制计数器

cq5<

=cq4&

cq3;

--逻辑位相连接

CASEcq5IS

00000001"

pan<

--一月

00000010"

ifrun='

thenpan<

elsepan<

endif;

--—二月

00000011"

--三月

00000100"

--四月

00000101"

--五月

00000110"

--六月

00000111"

--七月

00001000"

--八月

00001001"

00001010"

--十月

00001011"

--十一月

00001100"

--十二月

WHENothers=>

cq1<

=cq3;

cq2<

=cq4;

图12平年(run=0)时月模块仿真图

图13闰年(run=1)时月模块仿真图

如图12、13所示月模块为12进制计数器,并且1、3、5、7、8、10、12月(大月)判断信号为00,4、6、9平年(run=0)2月的判断输出信号为、11月(小月)判断信号为01,平年(run=0)2月的判断输出信号为10,闰年(run=1)2月的判断输出信号为11,与天模块的判断输入信号相一致,符合设计要求,模块的设计正确。

4.1.5年模块

年的高两位和低两位都为一百进制计数器,功能基本相同,不同的是低两位模块有闰年判断输出信号,要传送给月份模块,计满四次就产生一个闰年输出信号,因为闰年数值是4的整倍数。

ENTITYYEARIS

Y1,Y2:

RUN,COUT:

ENDYEAR;

ARCHITECTUREONEOFYEARIS

SIGNALQ1,Q2,Q3:

THENQ1<

=Q1+1;

IFQ1=9THENQ1<

Q2<

=Q2+1;

IFQ2=9ANDQ1=9THEN

Q1<

THENQ3<

=Q3+1;

IFQ3=3THENQ3<

RUN<

ELSERUN<

ENDIF;

Y1<

=Q1;

Y2<

=Q2;

图14低两位年模块仿真图

如图14所示,低两位年模块为100进制计数器当T2、T1表示的数为4的整数倍时,判断闰年输出信号就为高电平,与月模块的判断闰年输入信号相一致。

符合设计的要求,设计正确。

4.1.6校时模块

如原理图的说明部分所述,校时模块进行工作模式的选择,输入端设有控制按键K1,K2。

K1进行模式的选择,K2的功能如同手动时钟脉冲,进行调时设置。

ENTITYJIAODUIIS

PORT(K1,K2:

MI,FI,SI,TI,YI:

FO,SO,TL,YO,NO:

L1,L2,L3,L4,L5:

ARCHITECTUREBEHAVOFJIAODUIIS

SIGNALA:

PROCESS(K1,K2)

IFK1'

EVENTANDK1='

A<

=A+1;

IFA=5THEN

A<

CASEAIS

FO<

=MI;

SO<

=FI;

TL<

=SI;

YO<

=TI;

NO<

=YI;

--模式0正常及时

L1<

L2<

L3<

L4<

L5<

=K2;

--选通分模块,调分

--选通时模块,调时

--选通日模块,调日

0100"

--选通月模块,调月

0101"

--选通年模块,调年

图15校时模块仿真图

图16校时模块仿真图

如图15、16,按键K1,K2能够完成万年历工作模式的选择与调时校对的功能,满足系统的设计要求,设计正确。

4.1.7显示模式切换模块

显示模式切换模块完成显示年月日和显示时分秒的相互切换,设置一个按键K3对其进行控制,通过检测按键的上升沿,对显示模式进行轮流切换。

ENTITYCONTROLIS

PORT(SL,SH,FL,FH,HL,HH,DL,DH,ML,MH,YL,YH,Y1L,Y1H:

INSTD_LOGIC_VECTOR(3DOWNTO0);

K1:

led:

Q1,Q2,Q3,Q4,Q5,Q6,Q7,Q8:

ENDCONTROL;

ARCHITECTUREONEOFCONTROLIS

SIGNALW:

PROCESS(K1)

IFK1'

THENW<

=W+1;

IFW=2THENW<

--二进制计数控制信号

CASEWIS

WHEN"

Q8<

=Y1H;

Q7<

=Y1L;

Q6<

=YH;

Q5<

=YL;

Q4<

=MH;

Q3<

=ML;

=DH;

=DL;

led<

--00时显示年月日,指示灯不亮

=HH;

=HL;

=FH;

=FL;

=SH;

=SL;

--01时显示时分秒,指示灯亮

WHENOTHERS=>

ENDCASE;

如图16所示,当按键K1没有按下时Q1到Q6显示的是年月日部分,此时的指示灯LED为零(不亮),当按键K1按下一次,检测到一次上升沿,Q1到Q6显示的是时分秒部分,此时的指示灯LED为1(亮),当K1键再次按下时,上升沿一到,显示年月日,这样通过按键K1可以实现显示模式的切换。

设计符合系统的要求,设计正确。

图17显示模块仿真图

4.2顶层设计与仿真

顶层设计采样原理图输入方法,用以上的各模块的VHDL源程序分别生成元器件,在此基础上用“导线”对元器件进行连接,搭建原理图,完成系统的顶层设计,而不是利用元件例化程序去设计。

对于较为复杂的系统而言,采用原理图输入的设计方法思路更加清晰,设计更加直观。

顶层原理图的设计框架如图4所示,有年、月、日、时、分、秒计时模块,调时校对模块,显示模式切换模块,并且由以上讨论知万年历一共有六种工作模式。

如图18所示,此时万年历工作于模式0,属于正常的计时状态,当低位计满时向高位进1,通过键K3,可以对显示模式进行切换,从显示时分秒转换到显示年月日,正确的实现了系统的计时功能。

图18万年历仿真图

图19万年历仿真图

图20万年历仿真图

如图19、20所示,通过按键K1可以进行工作模式的选择,按键K2进行数值的校对设定,按键K3进行显示模式的切换,与设计的要求相符合。

综上所述,整个系统设计正确,万年历能够正确的实现功能。

六.端口设置、

七.验证、

当K1键没有按下时,万年历正常计时,计满向高位进位,可以通过K3键选择显示模式,显示时分秒时指示灯亮。

通过按下K1键的次数来选择校对那一部分,对应的指示灯亮,再通过按下K2键的次数来进行数值选择,进行校对时低位不会向高位进位。

当把年设置为闰年,月模块设置为2月,天模块设置为29,时模块设置为23,分模块设置为59,通过按键K1选择正常计时模

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

当前位置:首页 > 人文社科 > 法律资料

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

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