基于FPGA的带闹钟功能的数字钟设计VHDL代码Quartus仿真

名称:基于FPGA的带闹钟功能的数字钟设计VHDL代码Quartus仿真(文末获取)

软件:Quartus

语言:VHDL

代码功能:

数字钟

1、可以调节小时、分钟

2、可以调整闹钟时间

3、到设置的时间闹铃响

4、整点报时

控制方法:

2个拨码开关SW0和SW1控制模式:

SW0=0,SW1=0为正常计时模式;

SW0=0,SW1=1为修改时间模式;

SW0=1,SW1=0为显示闹钟时间模式;

SW0=1,SW1=1为修改闹钟时间模式;

2个按键,BT0修改小时,BT1修改分钟:

将拨码开关设置为SW0=0,SW1=1,此时可以修改当前时间;

将拨码开关设置为SW0=1,SW1=1,此时可以修改闹钟时间;

1. 工程文件

2. 程序文件

3. 程序编译

4. 程序RTL图

5. Vwf文件

6. 仿真图

部分代码展示:

LIBRARY ieee;
   USE ieee.std_logic_1164.all;
ENTITY Digital_clock IS
   PORT (
      clk_50M    : IN STD_LOGIC;
      
      alarm_SW   : IN STD_LOGIC;--SW0-闹钟时间设置键,0--显示正常计时;1--显示设置闹钟时间
      MODE_SW    : IN STD_LOGIC;--SW1-MODE 模式设置按键--0:计时,1:设置时间
      
      AH_key_in  : IN STD_LOGIC;--AH 修改小时--按下低电平
      AM_key_in  : IN STD_LOGIC;--AM 修改分钟--按下低电平
      
      led_1Hz    : OUT STD_LOGIC;--1S--led
      bell_out   : OUT STD_LOGIC;--闹钟led
      led_mode   : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);--led显示当前模式
      HEX0       : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--数码管-低亮--秒钟个位
      HEX1       : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); --数码管-低亮--秒钟十位      
      HEX2       : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--数码管-低亮--分钟个位
      HEX3       : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); --数码管-低亮--分钟十位
      HEX4       : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--数码管-低亮--小时个位
      HEX5       : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)--数码管-低亮--小时十位
   );
END Digital_clock;
ARCHITECTURE trans OF Digital_clock IS
   COMPONENT Bell IS
      PORT (
         clk_50M    : IN STD_LOGIC;
         alarm_hour_time : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
         alarm_minute_time : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
         alarm_second_time : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
         hour_time  : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
         minute_time : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
         second_time : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
         bell_out   : OUT STD_LOGIC
      );
   END COMPONENT;
   
   COMPONENT alarm_clock IS
      PORT (
         clk_50M    : IN STD_LOGIC;
         state_mode : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
         AH_key     : IN STD_LOGIC;
         AM_key     : IN STD_LOGIC;
         alarm_hour_time : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
         alarm_minute_time : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
         alarm_second_time : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)
      );
   END COMPONENT;
   
   COMPONENT display IS
      PORT (
         clk        : IN STD_LOGIC;
         state_mode : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
         alarm_hour_time : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
         alarm_minute_time : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
         alarm_second_time : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
         hour_time  : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
         minute_time : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
         second_time : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
         HEX0       : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
         HEX1       : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
         HEX2       : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
         HEX3       : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
         HEX4       : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
         HEX5       : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)
      );
   END COMPONENT;
   
   COMPONENT set_mode IS
      PORT (
         clk_50M    : IN STD_LOGIC;
         alarm_SW   : IN STD_LOGIC;
         MODE_SW    : IN STD_LOGIC;
         led_mode   : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
         state_mode : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)
      );
   END COMPONENT;
   
   COMPONENT fenping IS
      PORT (
         clk_50M    : IN STD_LOGIC;
         led_1Hz    : OUT STD_LOGIC;
         clk_1Hz    : OUT STD_LOGIC
      );
   END COMPONENT;
   
   COMPONENT jishi IS
      PORT (
         clk_50M    : IN STD_LOGIC;
         clk_1Hz    : IN STD_LOGIC;
         state_mode : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
         AH_key     : IN STD_LOGIC;
         AM_key     : IN STD_LOGIC;
         hour_time  : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
         minute_time : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
         second_time : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)
      );
   END COMPONENT;
源代码

 扫描文章末尾的公众号二维码

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
功能数字时钟是一种集计时、计数、闹铃、温湿度显示等多种功能于一体的电子时钟。它广泛应用于生活、工作、教育等领域,成为现代社会不可缺少的一部分。要设计一个多功能数字时钟,需要用到VHDL语言。 首先,VHDL是一种硬件描述语言,它可以描述数字电路的行为和结构,也可以模拟数字电路的实现。我们可以利用VHDL语言实现数字时钟中的各种功能,如时钟、闹铃、温湿度显示等。 其次,设计功能数字时钟需要有几个关键模块。例如,时钟模块,它包括时钟的频率、时钟信号的分频、小时、分钟、秒的计数和显示等功能。还有,闹铃模块,它可以设置闹铃的时间和铃声,当时钟时间到达设定的闹铃时间时,闹铃即响。最后,温湿度显示模块,可以通过VHDL语言控制温湿度传感器的采集和数据显示等。 此外,采用VHDL进行数字时钟的设计,有利于提高设计效率、简化开发流程和减少实现成本。因为VHDL语言可以模拟电路的实现过程,能够快速地检查和排除电路中的错误。同时,VHDL语言的可读性和可扩展性也为数字时钟的设计和维护来诸多便利。 综上所述,设计一个多功能数字时钟,需要用到VHDL语言,并开发出几个核心模块,而这些模块通过软件的方式进行实现,不仅能够提高效率,还能够保证数字时钟的可靠性和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值