可切换时区和进制的数字闹钟设计VHDL代码Quartus DE10开发板
名称:可切换时区和进制的数字闹钟设计VHDL代码Quartus DE10开发板
软件:Quartus
语言:VHDL
代码功能:
● 描述:
○ 该项目旨在创建一个数字闹钟,可以显示当前时间、设置闹钟,并在不同模式之间切换,例如设置时间或闹钟。您将使用按钮来调整小时、分钟和秒,闹钟响起时会发出通知(如声音或灯光)。还有按钮可以重置闹钟或整个时钟。
● 启动机制:
○ 时钟在通电并加载程序时开始运行。
○ 最初,所有值都设置为 0,因为常规时钟将被初始化。
● 通过 FSM (有限状态机)选择模式:
○ 按下指定键或使用开关更改/循环数字闹钟的模式。
○ 指定键或开关是独热编码
○ 使用 LED、7Seg 或 LCD 进行模式指示。
○ 至少有三种模式通过 FSM 管理:
■ 设置时间、设置闹钟和显示时间。
■ 实施由您决定。但是,请记住,状态
必须有效
● 详细时间配置设置:
○ 按指定的键或开关循环设置
时/分/秒和子午线
○ 按指定的键或开关增加
时/分/秒和子午线的值。
○ 当达到最大可能值时,应返回初始值。
● 重置功能:
○ 指定一个键或开关进行软重置。例如,这是为了重置/停止警报。
○ 指定一个键或开关进行硬重置。这是为了重置整个
系统。
○ 您可以将重置值设置为键和/或开关的组合。
● 显示组织:
○ 时间显示:您可以使用 LED、7 段数码管
○ 必须指示小时、分钟、秒和子午线。
● 警报通知:
○ 设计一个通知系统(音频和/或视觉信号),在达到设定的警报时间时激活。
拨动开关可以调整不同的时区,每个相邻的时区时差为一个小时
时区也需要有灯表示,默认是在本初子午线伦敦时区,每往右一个时区就用一个led灯亮起表示对应的二进制数,比如往右第5个时区(共24个时区)对应的5个LED灯就是00101
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
本代码已在DE10开发板验证,DE10开发板如下,其他开发板可以修改管脚适配:
演示视频:
设计文档:
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;
代码文件(付费下载):
![]()
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 可切换时区和进制的数字闹钟设计VHDL代码Quartus DE10开发板
发表评论
模板文件不存在: ./template/plugins/comment/pc/index.htm