vhdl电子日历设计完整文档格式.docx
- 文档编号:15152531
- 上传时间:2022-10-28
- 格式:DOCX
- 页数:34
- 大小:2.09MB
vhdl电子日历设计完整文档格式.docx
《vhdl电子日历设计完整文档格式.docx》由会员分享,可在线阅读,更多相关《vhdl电子日历设计完整文档格式.docx(34页珍藏版)》请在冰豆网上搜索。
经编译和仿真所设计的程序,在可编程逻辑器件上下载验证,将硬件编写程序下载到试验箱上,选择模式5进行功能验证。
本系统能够完成年、月、日和时、分、秒的分别显示,由按键输入进行万年历的校时功能。
TWO:
万年历的设计思路与多功能时钟的设计思路相似。
多功能时钟的各功能模块及相互之间的连接如下图1所示
图1
THREE:
年、月、日和时、分、秒的显示格式如图2所示。
年、月、日同时显示,时、分、秒同时显示,通过显示模式切换来分别显示。
年/(时)月/分日/秒
图2万年历显示格式
FOUR:
按照模块化的设计思想,要实现万年历的基础功能,必定要包含年、月、日和时、分、秒的功能模块,其中秒和分可以用六十进制计数器来实现,时用二十四进制计数器实现,月用十二进制计数器来实现,年的低两位和高两位都是一百进制计数器,比较特殊的是天的计数器,因为它有四种情况,大月三十一天,小月三十天,平年二月二十八天,闰年二月有二十九天,所以年和月的模块对天的计数都有影响,需要从年和月的输出端引出控制信号来控制天的计数。
同时每个计数器都有显示输出端和进位输出端,同时低级别(如秒)的进位输出要给较高级别(如分)的时钟输入端,以此类推,采用串行工作方式进行连接。
从而完成了基础的计时和显示的功能。
再按照由基础功能到增强功能的设计思路,要实现校时功能,要在之前电路的基础之上增加一个校时控制模块,增加两个按键来实现控制,按键1来选择校对哪一个模块,按键2选择校对到何值——检测到按键2的一个上升沿,对应的计数器加1。
除此之外还需要有显示模式的切换的功能,需要增加一个模式切换的控制模块,通过增加一个按键3来实现控制,是显示年月日还是时分秒。
实验原理图
万年历时分秒部分的原理图如下图所示,年月日部分与之同理,通过控制可以进行切换。
译码驱动
时十位
计数
时个位
分十位
分个位
秒十位
秒个位
校时控制电路
校分控制电路
分频器电路
晶体振荡器电路
1HZ
图3万年历实验原理图
FIVE:
K1键是选择万年历工作的模式,K2键提供上升沿(时钟功能)来使各计数模块加一,从而实现校时的功能。
LED灯起指示作用。
共有五种选择模式(A,B,C,D,E,F):
A:
正常计时--K1不按
B:
调整分--K1按下一次
C:
调整时--K1按下两次
D:
调整日--K1按下三次
E:
调整月--K1按下四次
F:
调整年--K1按下五次
CLK是外部1Hz输入时钟,作为秒的时钟输入,驱动整个万年历工作运行。
K3键是显示模式的选择,显示时分秒时,LED指示灯亮,显示年月日时,LED指示灯灭。
SIX:
VHDL语言描写和原理图部分
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进制计数器仿真图
原理图:
2.小时模块
时模块为24进制计数器。
ENTITYCNT24IS
Q1,Q2:
ENDCNT24;
ARCHITECTUREONEOFCNT24IS
IFQ22=2ANDQ11=3THEN
图724进制计数器仿真图
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时天模块仿真图
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- vhdl 电子 日历 设计 完整