• 方案介紹
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

FPGA的數(shù)字鐘校時鬧鐘報時VHDL代碼

8小時前
349
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

名稱:基于FPGA的數(shù)字鐘具有校時鬧鐘報時功能(代碼在文末付費下載)

軟件:Quartus

語言:VHDL

要求:

1、計時功能:這是數(shù)字鐘設(shè)計的基本功能,每秒鐘更新一次,并且能在顯示屏上顯示當前的時間。
2、鬧鐘功能:如果當前的時間與鬧鐘設(shè)置的時間相同,則揚聲器發(fā)出鬧音。
3、校時設(shè)置:用戶可以通過功能鍵重新進行時間設(shè)置.精確校時時還可以對秒進行清零。
4、整點報功能:如果當前時間為整點,則揚聲器發(fā)出特定頻率的整點報音。
5、鬧鈴設(shè)置:用戶可以通過功能鍵完成任意時間的鬧鈴設(shè)置。
6、顯示功能:正常計時狀態(tài)6位數(shù)碼管分別顯示時、分、秒;校時狀態(tài)顯示時、分、鬧鐘設(shè)置狀態(tài)顯示當前鬧鐘的時分設(shè)置值。

本課題要達到的目標是:在Quartus?II軟件上用VHDL語言編寫相關(guān)的應用程序,利用FPGA完成數(shù)字時鐘,使其功能基本得到實現(xiàn)。

部分代碼展示

LIBRARY?ieee;
???USE?ieee.std_logic_1164.all;
ENTITY?Digital_clock?IS
???PORT?(
??????clk_50M?????:?IN?STD_LOGIC;
??????key_0???????:?IN?STD_LOGIC;--模式設(shè)置按鍵--4'd0:計時,4'd1:鬧鐘,4'd3:溫度
??????key_1???????:?IN?STD_LOGIC;--設(shè)置修改
??????key_2???????:?IN?STD_LOGIC;--修改確認
??????key_3???????:?IN?STD_LOGIC;--修改時分秒,鬧鐘關(guān)閉
???one_wire????:?INOUT?STD_LOGIC;??--?傳感器One-Wire總線
??????
??????bell_out????:?OUT?STD_LOGIC;
??????led_mode????:?OUT?STD_LOGIC_VECTOR(3?DOWNTO?0);--led顯示當前模式
??????bit_select??:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0);--數(shù)碼管位選
??????seg_select??:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0)--數(shù)碼管段選
???);
END?Digital_clock;
ARCHITECTURE?behave?OF?Digital_clock?IS
--模塊聲明
???--響鈴模塊
???COMPONENT?Bell?IS
??????PORT?(
?????????clk_50M?????:?IN?STD_LOGIC;
?????????clear_alarm?:?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);
?????????set_time_key?:?IN?STD_LOGIC;
?????????confirm_key?:?IN?STD_LOGIC;
?????????change_time_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);
temperature?:?IN?STD_LOGIC_VECTOR(7?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);
?????????bit_select??:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0);
?????????seg_select??:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0)
??????);
???END?COMPONENT;
???--設(shè)置模式
???COMPONENT?set_mode?IS
??????PORT?(
?????????clk_50M?????:?IN?STD_LOGIC;
?????????set_mode_key?:?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;
?????????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;
?????????clk_1Hz?????:?IN?STD_LOGIC;
?????????state_mode??:?IN?STD_LOGIC_VECTOR(3?DOWNTO?0);
?????????set_time_key?:?IN?STD_LOGIC;
?????????confirm_key?:?IN?STD_LOGIC;
?????????change_time_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;
COMPONENT?ds18B20?is??
port(
clk?:?in?std_logic;???--為50MHz?
dq??:?inout?std_logic;??
LED?:?out?std_logic;?
LED2?:?out?std_logic;?
LED3?:?out?std_logic;?
rst:?in?std_logic;?
temp_h:out?std_logic_vector(7?downto?0);
temp_l:out?std_logic_vector(7?downto?0)
);??
end?COMPONENT;?
???SIGNAL?state_mode????????????:?STD_LOGIC_VECTOR(3?DOWNTO?0);--當前模式,4'd0:計時,4'd1:鬧鐘,4'd2:跑表
???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);--鬧鐘分
???SIGNAL?alarm_second_time?????:?STD_LOGIC_VECTOR(7?DOWNTO?0);--鬧鐘秒
???
???SIGNAL?key_0_negedge?????????:?STD_LOGIC;--按鍵下降沿
???SIGNAL?key_1_negedge?????????:?STD_LOGIC;--按鍵下降沿
???SIGNAL?key_2_negedge?????????:?STD_LOGIC;--按鍵下降沿
???SIGNAL?key_3_negedge?????????:?STD_LOGIC;--按鍵下降沿
???
???SIGNAL?clk_1Hz???????????????:?STD_LOGIC;--1Hz

仿真圖(文檔點擊可下載):

1. 分頻模塊

2. 設(shè)置鬧鐘模塊

3. 響鈴模塊包括鬧鐘和整點報時

4. display顯示模塊

5. 計時模塊

6. 模式設(shè)置模塊

7. 按鍵模塊

8. 整體仿真

本代碼已在開發(fā)板驗證,開發(fā)板資料如下:

點擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=181

相關(guān)推薦