library IEEE;
use IEEE.std_logic_1164.ALL;
use IEEE.std_logic_unsigned.ALL;
use IEEE.std_logic_arith.ALL;
----EN是各个功能块的使能信号,EN(0)=‘1’时是显示时间,EN(1)=‘1’时是设置时间,EN(2)='1'时是闹钟1,EN(3)='1'时是闹钟2,EN(4)='1'时是闹钟3
---key0是用来调整用的
---key_1是设置时间后按下确认键时的电平
---key1是用来调整时间或闹钟的,和key0配合使用。
---key2是用来切换调整的是时还是分,在显示时间的时候,还可以作为切换显示时,分或者秒
---choise输出信号值,可以为秒,分,时,
---output输出数码管的位选信号,和choise配合使用来实现动态显示
---bell输到蜂鸣器中,当bell=‘0’时蜂鸣器响,这里是用作闹钟响或者整点报时的
---dot是数码管上的e口,即显示的是那一点,主要是用来显示时,分时显示如下12.01
---setm0---seth1这四个是用作输入设置的时间
---set_en设置时间block(块)的使能信号
---e懒人模式块的使能信号
entity clock is
port(clk_1s,clk_5us,clk_100ms:in std_logic;
EN:in std_logic_vector(4 downto 0);
key0:in std_logic;
key_1:in std_logic;
key1:in std_logic;
key2:in std_logic;
choise:out std_logic_vector(3 downto 0);
output:out std_logic_vector(3 downto 0);
bell:out std_logic;
dot:out std_logic;
setm0:in std_logic_vector(3 downto 0);
setm1:in std_logic_vector(3 downto 0);
seth0:in std_logic_vector(3 downto 0);
seth1:in std_logic_vector(3 downto 0);
set_en:out std_logic;
e:out std_logic);
end clock;
architecture behav of clock is
---s0秒值的个位,s1秒值的十位,m0分值的个位,m1分值的十位,h0时的个位,h1时的十位,其他的类推
signal s0:std_logic_vector(3 downto 0):="0000";
signal s1:std_logic_vector(3 downto 0):="0000";
signal m0:std_logic_vector(3 downto 0):="0000";
signal m1:std_logic_vector(3 downto 0):="0000";
signal h0:std_logic_vector(3 downto 0):="0000";
signal h1:std_logic_vector(3 downto 0):="0000";
signal setm00:std_logic_vector(3 downto 0):="0011";
signal setm01:std_logic_vector(3 downto 0):="0000";
signal seth00:std_logic_vector(3 downto 0):="0000";
signal seth01:std_logic_vector(3 downto 0):="0000";
signal setm10:std_logic_vector(3 downto 0):="0011";
signal setm11:std_logic_vector(3 downto 0):="0000";
signal seth10:std_logic_vector(3 downto 0):="0000";
signal seth11:std_logic_vector(3 downto 0):="0000";
signal setm20:std_logic_vector(3 downto 0):="0011";
signal setm21:std_logic_vector(3 downto 0):="0000";
signal seth20:std_logic_vector(3 downto 0):="0000";
signal seth21:std_logic_vector(3 downto 0):="0000";
signal put:integer:=1;
signal if_alarm:std_logic:='1';
begin
JISHI:process(key1,clk_1s) -----------set_clock and set_alarm
begin
if (EN(1)='1' AND key_1='0') then ----按下确认键(key_1=0)时把设置好的时间输入,
m0<=setm0;
m1<=setm1;
h0<=seth0;
h1<=seth1;
3.主体模块(包含计时和设置闹钟)
最新推荐文章于 2024-08-05 22:40:21 发布
这是一个基于VHDL的数字时钟系统设计,包括时间显示、设置时间及多个闹钟功能。通过EN信号控制不同的操作模式,如显示时间、设置时间和闹钟。key输入信号用于调整和确认时间,输出包括数码管位选信号、蜂鸣器控制和状态指示。
摘要由CSDN通过智能技术生成