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

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

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

名称:数字时钟+闹钟功能 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

相关推荐