My title page contents

可切换时区和进制的数字闹钟设计VHDL代码Quartus DE10开发板

名称:可切换时区和进制的数字闹钟设计VHDL代码Quartus  DE10开发板

软件:Quartus

语言:VHDL

代码功能:

● 描述:

○ 该项目旨在创建一个数字闹钟,可以显示当前时间、设置闹钟,并在不同模式之间切换,例如设置时间或闹钟。您将使用按钮来调整小时、分钟和秒,闹钟响起时会发出通知(如声音或灯光)。还有按钮可以重置闹钟或整个时钟。

● 启动机制:

○ 时钟在通电并加载程序时开始运行。

○ 最初,所有值都设置为 0,因为常规时钟将被初始化。

● 通过 FSM (有限状态机)选择模式:

○ 按下指定键或使用开关更改/循环数字闹钟的模式。

○ 指定键或开关是独热编码

○ 使用 LED7Seg 或 LCD 进行模式指示。

○ 至少有三种模式通过 FSM 管理:

■ 设置时间、设置闹钟和显示时间。

■ 实施由您决定。但是,请记住,状态

必须有效

● 详细时间配置设置:

○ 按指定的键或开关循环设置

//秒和子午线

○ 按指定的键或开关增加

//秒和子午线的值。

○ 当达到最大可能值时,应返回初始值。

● 重置功能:

○ 指定一个键或开关进行软重置。例如,这是为了重置/停止警报。

○ 指定一个键或开关进行硬重置。这是为了重置整个

系统。

○ 您可以将重置值设置为键和/或开关的组合。

● 显示组织:

○ 时间显示:您可以使用 LED数码管

○ 必须指示小时、分钟、秒和子午线。

● 警报通知:

○ 设计一个通知系统(音频和/或视觉信号),在达到设定的警报时间时激活。

拨动开关可以调整不同的时区,每个相邻的时区时差为一个小时

时区也需要有灯表示,默认是在本初子午线伦敦时区,每往右一个时区就用一个led灯亮起表示对应的二进制数,比如往右第5个时区(共24个时区)对应的5LED灯就是00101


FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com

本代码已在DE10开发板验证,DE10开发板如下,其他开发板可以修改管脚适配:DE10开发板.jpg

演示视频:

设计文档:

设计文档.doc

1.工程文件


2.程序文件

3.程序编译


4.RTL图


5.管脚分配


部分代码展示:

LIBRARY ieee;
   USE ieee.std_logic_1164.all;
ENTITY Digital_clock IS
   PORT (
      clk_50M    : IN STD_LOGIC;
      rst_n      : IN STD_LOGIC;--复位--SW0
shift_sw   : IN STD_LOGIC;--12/24进制切换--SW1
time_zone_sw : IN STD_LOGIC_VECTOR(4 DOWNTO 0);--时区设置SW 2 3 4 5 6
clr_bell_n   : IN STD_LOGIC;--清除闹钟--key0
      mode_set   : IN STD_LOGIC;--模式设置按键--key1
      AH_key_in  : IN STD_LOGIC;--AH 修改小时--按下低电平--key2
      AM_key_in  : IN STD_LOGIC;--AM 修改分钟--按下低电平--key3
am_pm_led  : OUT STD_LOGIC;--AM PM --PM时点亮--LED0
      bell_out   : OUT STD_LOGIC;--闹钟led--LED1
      led_mode   : OUT STD_LOGIC_VECTOR(1 DOWNTO 0);--led显示当前模式--LED 2 3
time_zone_led : OUT STD_LOGIC_VECTOR(4 DOWNTO 0);--时区显示--LED 4 5 6 7 8 
      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;
rst_n      : IN STD_LOGIC;--复位
clr_bell_n   : 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;
rst_n      : 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;
shift_sw           : IN STD_LOGIC;--进制切换,1表示24,0表示12
am_pm_led          : OUT STD_LOGIC;--AM PM --PM时点亮
         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;
rst_n      : IN STD_LOGIC;--复位--SW0
         --alarm_SW   : IN STD_LOGIC;
         --MODE_SW    : IN STD_LOGIC;
mode_set   : IN STD_LOGIC;
         led_mode   : OUT STD_LOGIC_VECTOR(1 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;

代码文件(付费下载):



1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 可切换时区和进制的数字闹钟设计VHDL代码Quartus DE10开发板

发表评论

模板文件不存在: ./template/plugins/comment/pc/index.htm

注册为本站会员,充值100得150,详情咨询客服

目前为止共有 *** 位优秀的会员加入! 立刻加入会员