3.主体模块(包含计时和设置闹钟)

这是一个基于VHDL的数字时钟系统设计,包括时间显示、设置时间及多个闹钟功能。通过EN信号控制不同的操作模式,如显示时间、设置时间和闹钟。key输入信号用于调整和确认时间,输出包括数码管位选信号、蜂鸣器控制和状态指示。
摘要由CSDN通过智能技术生成

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;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值