VHDL数字系统设计多功能手表的设计时钟秒表闹钟文档格式.docx
《VHDL数字系统设计多功能手表的设计时钟秒表闹钟文档格式.docx》由会员分享,可在线阅读,更多相关《VHDL数字系统设计多功能手表的设计时钟秒表闹钟文档格式.docx(24页珍藏版)》请在冰豆网上搜索。
![VHDL数字系统设计多功能手表的设计时钟秒表闹钟文档格式.docx](https://file1.bdocx.com/fileroot1/2022-11/20/b8d28bae-b29a-4f77-9cac-8285e752989c/b8d28bae-b29a-4f77-9cac-8285e752989c1.gif)
输出信号
hours时间模式的小时
minutes时间模式的分钟
seconds时间模式的秒
ahours闹钟模式的小时
aminutes闹钟模式的分
ring闹钟响铃信号
am_pm时间模式的a.m或者p.m指示(为0时表示a.m,为1时表示p.m)
aam_pm闹钟模式的a.m或者p.m指示(为0时表示a.m,为1时表示p.m)
disp_time1显示时间模式的时、分、秒标志,为1时显示,为零时不显示
disp_alarm显示闹钟模式的时、分标志,为1时显示,为零时不显示
中间信号:
inc_hrs时间模式的小时加1
inc_min时间模式的分钟加1
inc_sec时间模式的秒加1
inc_ahrs闹钟模式的小时加1
inc_amin闹钟模式的分钟加1
alarm_off时间模式下如果闹钟响,关闹钟信号
set_alarm闹钟模式下,开启关闭闹钟信号
alarm_set闹钟模式下设置闹钟信号
S_hours时间模式的小时hours寄存信号
S_minutes时间模式的分钟minutes寄存信号
S_seconds时间模式的秒seconds寄存信号
S_ahours闹钟模式的小时ahours寄存信号
S_aminutes闹钟模式的分钟aminutes寄存信号
S_ring闹钟模式的闹钟响铃ring寄存信号
S_am_pm时间模式的am_pm寄存信号
S_aam_pm闹钟模式的aam_pm寄存信号
3、主程序代码:
libraryIEEE;
useIEEE.STD_LOGIC_1164.ALL;
useieee.numeric_bit.bit;
useIEEE.STD_LOGIC_ARITH.ALL;
useIEEE.STD_LOGIC_UNSIGNED.ALL;
entitymainis
port(B1,B2,B3,clk,rst:
instd_logic;
hours,minutes,seconds,ahours,aminutes:
outstd_logic_vector(7downto0);
ring,am_pm,aam_pm,disp_time1,disp_alarm:
outstd_logic);
endmain;
architectureBehavioralofmainis
componentclockis----时钟模块
port(clk,rst,inc_hrs,inc_min,inc_sec,inc_ahrs,inc_amin,
set_alarm,alarm_off:
hours,ahours,minutes,aminutes,seconds:
inoutstd_logic_vector(7downto0);
am_pm,aam_pm,ring,alarm_set:
inoutstd_logic);
endcomponent;
componentcontrolis-----按键控制模块
alarm_off,set_alarm:
inoutstd_logic;
disp_time1,disp_alarm,inc_hrs,inc_min,inc_sec,
inc_ahrs,inc_amin:
signalinc_hrs,inc_min,inc_sec,inc_ahrs,inc_amin,
alarm_off,set_alarm,alarm_set:
std_logic;
signalS_hours,S_minutes,S_seconds,S_ahours,S_aminutes:
std_logic_vector(7downto0);
signalS_ring,S_am_pm,S_aam_pm:
begin
-----按键控制,时钟运行模块,以及最后输出模块使用并发语句设计
controllor:
controlportmap(B1,B2,B3,clk,rst,alarm_off,set_alarm,
disp_time1,disp_alarm,inc_hrs,inc_min,inc_sec,inc_ahrs,inc_amin);
clock1:
clockportmap(clk,rst,inc_hrs,inc_min,inc_sec,inc_ahrs,inc_amin,
set_alarm,alarm_off,S_hours,S_ahours,S_minutes,S_aminutes,
S_seconds,S_am_pm,S_aam_pm,S_ring,alarm_set);
hours<
=S_hours;
minutes<
=S_minutes;
seconds<
=S_seconds;
ahours<
=S_ahours;
aminutes<
=S_aminutes;
am_pm<
=S_am_pm;
aam_pm<
=S_aam_pm;
ring<
=S_ring;
endBehavioral;
(1)综合电路图:
5、按键控制模块说明:
(1)状态转移图:
(2)ASM图
(3)信号说明:
与前面重复的这里不再赘述
present_state当前状态
next_state下一个状态
七个状态说明:
time1时间显示模式
set_sec调整时间的秒模式
set_min,调整时间的分钟模式
set_hrs,调整时间的小时模式
alarm,闹钟模式
set_alarm_hrs,调整闹钟的小时模式
set_alarm_min调整闹钟的分钟模式
(4)程序代码
libraryIEEE;
--useieee.numeric_bit.bit;
entitycontrolis
disp_time1,disp_alarm,inc_hrs,inc_min,inc_sec,inc_ahrs,inc_amin:
endcontrol;
architectureBehavioralofcontrolis
typestateis(time1,set_sec,set_min,set_hrs,alarm,set_alarm_hrs,set_alarm_min);
signalpresent_state,next_state:
state;
process(clk,rst)
begin
ifrst='
1'
then------异步复位
present_state<
=time1;
elsif(clk'
eventandclk='
)then------采用时钟边沿触发
present_state<
=next_state;
endif;
endprocess;
process(B1,B2,B3,present_state,rst)-----由按键控制的状态转换进程
ifrst='
then---------------异步复位
alarm_off<
='
0'
;
set_alarm<
else
casepresent_stateis
whentime1=>
---------------时间显示----------
inc_hrs<
inc_min<
inc_sec<
inc_ahrs<
inc_amin<
disp_time1<
disp_alarm<
----状态输出
ifB1='
thennext_state<
=alarm;
elsifB2='
=set_hrs;
elsifB3='
thenalarm_off<
=notalarm_off;
next_state<
elsenext_state<
endif;
whenset_hrs=>
--------------------------设置时间
inc_min<
inc_hrs<
inc_ahrs<
ifB2='
=set_min;
theninc_hrs<
whenset_min=>
-------------------设置分钟
ifB2='
=set_sec;
theninc_min<
whenset_sec=>
-------------------------设置秒