• 方案介绍
  • 相关推荐
申请入驻 产业图谱

数字时钟+闹钟功能 VHDL Quartus II

09/22 08:49
226
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

名称:数字时钟+闹钟功能 VHDL QuartusII软件:QuartusII语言:VHDL代码功能:

代码实现思路:

要求.jpg

代码结构:

顶层模块(Digital_clock):连接各功能模块,调度信号。

分频模块(fenping):将50MHz时钟分频为1Hz。

按键消抖模块(key_jitter):消除按键抖动,输出稳定按键信号。

计时模块(jishi):实现时分秒计数与时间设置。

闹钟模块(alarm_clock):实现闹钟时间设置与触发。

显示模块(display):驱动数码管显示当前时间或闹钟时间。

响铃模块(Bell):在闹钟时间到达时输出响铃信号。

---

核心板.jpg

开发板.jpg

扩展板.jpg

工程相关图片

---

各功能模块图片

按键模块

分频模块

计时模块

闹钟模块

显示模块

响铃模块

---

部分代码预览

```vhdl LIBRARY ieee; USE ieee.std_logic_1164.all;

ENTITY Digital_clock IS PORT ( clk_50M?????: IN STD_LOGIC; shift_time???: IN STD_LOGIC;--切换开关12/24进制 shift_alarm??: IN STD_LOGIC;--切换计时还是闹钟 key_1???????: IN STD_LOGIC;--修改选择(时分) key_2???????: IN STD_LOGIC;--修改时间 bell_out????: OUT STD_LOGIC; bit_select??: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--数码管位选 seg_select??: OUT STD_LOGIC_VECTOR(7 DOWNTO 0)--数码管段选 ); END Digital_clock;

ARCHITECTURE behave OF Digital_clock IS --模块声明 --响铃模块 COMPONENT Bell IS PORT ( clk_50M?????: IN STD_LOGIC; clear_alarm????????????: IN STD_LOGIC;--关闭闹钟键(key3) 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;--当前模式,0:计时,1:闹钟 key_1_neg???????: IN STD_LOGIC;--修改选择(时分) key_2_neg???????: 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; shift_time??: IN STD_LOGIC;--切换开关12/24进制 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); bit_select??: OUT STD_LOGIC_VECTOR(7 DOWNTO 0); seg_select??: OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ); END COMPONENT; --分频模块 COMPONENT fenping IS PORT ( clk_50M?????: IN STD_LOGIC; clk_1Hz?????: OUT STD_LOGIC ); END COMPONENT; --按键消抖 COMPONENT key_jitter IS PORT ( clkin???????: IN STD_LOGIC; key_in??????: IN STD_LOGIC; key_negedge : OUT STD_LOGIC ); END COMPONENT; --计时模块 COMPONENT jishi IS PORT ( clk_50M???????????: IN STD_LOGIC; rst_n?????????????: IN STD_LOGIC; clk_1Hz???????????: IN STD_LOGIC; state_mode????????: IN STD_LOGIC;--当前模式,0:计时,1:闹钟 key_1_neg???????: IN STD_LOGIC;--修改选择(时分) key_2_neg???????: 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; SIGNAL hour_time?????????????: STD_LOGIC_VECTOR(7 DOWNTO 0);--时 SIGNAL minute_time???????????: STD_LOGIC_VECTOR(7 DOWNTO 0);--分 SIGNAL second_time???????????: STD_LOGIC_VECTOR(7 DOWNTO 0);--秒 SIGNAL alarm_hour_time???????: STD_LOGIC_VECTOR(7 DOWNTO 0);--闹钟时 SIGNAL alarm_minute_time?????: STD_LOGIC_VECTOR(7 DOWNTO 0);--闹钟分 ```

代码获取:

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1541

相关推荐