(4)、 CNT24_A_HOUR 模块:
这个模块式将 CNT60_A_MIN 的输出信号做 24 进制计数。该模块能将当前计数值
实时按 BCD 码的格式输出。将该输出接到两位 LED 数码后能时时显示时的状态。通
过 alarm_clk 可以选择设置对象为时间还是定时值。在设置时间模式上,key 上的一个
输入脉冲可以将 clk 的输入信号加一。在设置定时模式上,key 上的脉冲只修改定时值,
不影响时间脉冲 clk 的状态。
同时该模块具有一个输出口 out_alarm 来触发整点报时的闹铃声音。
(5)、 PWM_OUT 模块:
该模块为 PWM 产生模块,通过 EN 可开启和关闭 PWM 输出。模块根据 CLK 信
号二分频产生的高低音,并组合,能输出三种声音状态——“嘟”、“嘀”、闹铃。而该三
种声音要被秒、分、时的输出触发才能输出 PWM。
(二) 系统各个模块的 VHDL 程序:
(1)、 CNT60_A_SEC 模块:
程序源代码如下:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity cnt60_a_sec is
port(
clk,clr,enb: in std_logic;--clk:时钟输入信号,clr:清零端,enb:使能端
key: in std_logic;--输入按键脉冲,调整闹铃定时或时间
alarm_clk: in std_logic;--1:alarm 0:clk --设置模式选择:闹铃调节模式、时间调节模式
qout_sl: out std_logic_vector(3 downto 0); --显示输出秒的低位
qout_sh: out std_logic_vector(3 downto 0);--显示输出秒的高位
co: out std_logic; --进位输出,触发分计数模块
out_do: out std_logic;--在整点报时中输出“嘟”触发信号
out_di: out std_logic --在整点报时中输出“嘀”触发信号
);
end;
architecture a of cnt60_a_sec is
signal qout2_l:std_logic_vector(3 downto 0);
signal qout2_h:std_logic_vector(3 downto 0);
signal alarm_l:std_logic_vector(3 downto 0);
signal alarm_h:std_logic_vector(3 downto 0);
signal clk1,clk2,tclk,aclk,ac_slt: std_logic;
begin
process(alarm_clk) --当该端口输入一个脉冲时,修改设置模式:时间调整或闹铃模式切换
评论5