设计方案
(1) 系统输入:系统状态及校时、定时转换的控制信号为k、set;时钟信号clk,采用1024Hz;系统复位信号为reset。输入信号由按键产生。
(2) 系统输出:LED显示输出;蜂鸣器声音信号输出。
(3) 多功能数字钟控制器的状态图如图所示
图中:S0:显示计时器时间 T0:显示闹铃时间
S1:调计时的时 T1:调闹铃的时
S2:调计时的分 T2:调闹铃的分
S3:调计时的秒 T3:调闹铃的秒
(4) 计时:正常工作状态下,按下“set键”,进入“小时”校准状态,之后按下“k键”则进入“分”校准状态,继续按下“k键”则进入“秒复零”状态,第三次按下“k 键”又恢复到正常计时显示状态。
(5) ”小时“校准状态:在“小时”校准状态下,显示”小时的数码管闪烁,通过按下”p键“使其递增计数。
(6) ”分“校准状态:在“分”校准状态下,显示“分”的数码管闪烁,通过按下”p键“使其递增计数。
(7) “秒”复零状态:在:“秒复零”状态下,显示“秒”的数码管闪烁并复零。
(8) 整点报时:蜂鸣器在“59”分钟的第51、53、55、57秒发出频率为512Hz的低音,在“59”秒发出频率为1024Hz的高音,结束时为整点。
(9) 显示:要求采用扫描显示方式驱动8个LED数码管分别显示时、分、秒并且他们之间用“—”隔开。
(10) 闹钟:闹钟定时时间到,蜂鸣器发出周期为1s的滴、滴声,持续时间为10秒;闹钟定时显示。
(11) 闹钟定时设置:在闹钟显示状态下,按下“set键”,进入“小时”校时状态,之后按下“k键”,进入“分”校时状态,继续按下“k键”,进入“秒”校时状态,第 三次按下“k键”又恢复到闹钟显示状态。
(12) 闹钟的时、分、秒设置过程和计时设置相同。
整体效果图:
1.控制器
library ieee;
use ieee.std_logic_1164.all;
entity ctr is
port(p:in std_logic;
cp:in std_logic;
k:in std_logic;
set:in std_logic;
reset:in std_logic;
resec:out std_logic;
rehour:out std_logic;
setmin:out std_logic;
setminen:out std_logic;
sethour:out std_logic;
sethouren:out std_logic;
hourflash:out std_logic;
minflash:out std_logic;
secflash:out std_logic;
ahourflash:out std_logic;
aminflash:out std_logic;
asecflash:out std_logic;
changemode:out std_logic;
setclksec:out std_logic;
setclkmin:out std_logic;
setclkhour:out std_logic);
end ctr;
architecture rtl of ctr is
type state is(s0,s1,s2,s3,t0,t1,t2,t3);
signal clock_s:state;
begin
process(cp,k,set,reset,p)