名稱:汽車速度表設(shè)計AX301開發(fā)板驗證VHDL代碼(代碼在文末下載)
軟件:QuartusII
語言:VHDL
代碼功能:
汽車速度表設(shè)計 設(shè)計一個汽車速度表。車輪每轉(zhuǎn)一圈會產(chǎn)生一個脈沖,每個脈沖代表1米的距離,根據(jù)單位時間的脈沖數(shù)可推算出汽車的速度。
要求:
(1)模擬產(chǎn)生車輪運轉(zhuǎn)產(chǎn)生的脈沖信號并對其計數(shù),用按鍵選擇脈沖信號的不同。
(2)每隔10秒讀取一次脈沖計數(shù)器,并據(jù)此計算車速。
(3)用數(shù)碼管顯示車速,單位Km/h。
(4)給出超速警告。
FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com
本代碼已在AX301開發(fā)板驗證,開發(fā)板如下,其他開發(fā)板可以修改管腳適配:
演示視頻:
設(shè)計文檔:
1. 工程文件
2. 程序文件
3. 程序編譯
4. RTL圖
管腳
5. Testbench
6. 仿真圖
按鍵模塊
控制模塊
速度模塊
報警模塊
顯示模塊
部分代碼展示:
LIBRARY?ieee; ???USE?ieee.std_logic_1164.all; --汽車速度表 ENTITY?Speedometer?IS ???PORT?( ??????clk_50M?????:?IN?STD_LOGIC;--輸入時鐘50MHz ??????key_1??:?IN?STD_LOGIC;--按鍵輸入控制脈沖 key_2??:?IN?STD_LOGIC;--按鍵輸入控制脈沖 key_3??:?IN?STD_LOGIC;--按鍵輸入控制脈沖 ??????beep????????:?OUT?STD_LOGIC;--超速報警指示燈 ??????bit_select??:?OUT?STD_LOGIC_VECTOR(5?DOWNTO?0);--數(shù)碼管位選 ??????seg_select??:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0)--數(shù)碼管段選 ???); END?Speedometer; ARCHITECTURE?behave?OF?Speedometer?IS ???COMPONENT?speed?IS ??????PORT?( ?????????clk?????????:?IN?STD_LOGIC; ?????????pulse???????:?IN?STD_LOGIC; ?????????clk_en??????:?IN?STD_LOGIC; ?????????latch???????:?IN?STD_LOGIC; ?????????rst?????????:?IN?STD_LOGIC; ?????????speed_num???:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0) ??????); ???END?COMPONENT; ??? ???COMPONENT?div_freq?IS ??????PORT?( ?????????clk_50M?????:?IN?STD_LOGIC; ?????????clk_1000????:?OUT?STD_LOGIC ??????); ???END?COMPONENT; ??? ???COMPONENT?div?IS ??????PORT?( ?????????clk?????????:?IN?STD_LOGIC; ?????????clk_en??????:?OUT?STD_LOGIC; ?????????latch???????:?OUT?STD_LOGIC; ?????????rst?????????:?OUT?STD_LOGIC ??????); ???END?COMPONENT; ??? ???COMPONENT?alarm?IS ??????PORT?( ?????????clk?????????:?IN?STD_LOGIC; ?????????beep????????:?OUT?STD_LOGIC; ?????????speed_num???:?IN?STD_LOGIC_VECTOR(7?DOWNTO?0) ??????); ???END?COMPONENT; ??? ???COMPONENT?key_ctrl?IS ??????PORT?( ?????????clk?????????:?IN?STD_LOGIC; ??????key_1??:?IN?STD_LOGIC; key_2??:?IN?STD_LOGIC; key_3??:?IN?STD_LOGIC; ?????????pulse???????:?OUT?STD_LOGIC ??????); ???END?COMPONENT; COMPONENT?display?IS ???PORT?( ??????clk?????????:?IN?STD_LOGIC; ??????speed_num???:?IN?STD_LOGIC_VECTOR(7?DOWNTO?0); ??????bit_select??:?OUT?STD_LOGIC_VECTOR(5?DOWNTO?0); ??????seg_select??:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0) ???); END?COMPONENT; ??? ??? ???SIGNAL?clk_en???????????:?STD_LOGIC; ???SIGNAL?latch????????????:?STD_LOGIC; ???SIGNAL?rst??????????????:?STD_LOGIC; ???SIGNAL?speed_num????????:?STD_LOGIC_VECTOR(7?DOWNTO?0); ???SIGNAL?pulse????????????:?STD_LOGIC; ??? ???SIGNAL?clk??????????????:?STD_LOGIC; BEGIN --分頻模塊 ???i_div_freq?:?div_freq ??????PORT?MAP?( ?????????clk_50M???=>?clk_50M, ?????????clk_1000??=>?clk ??????); ??? ???--clk<=clk_50M; ???--按鍵控制脈沖輸出 ???i_key_ctrl?:?key_ctrl ??????PORT?MAP?( ?????????clk????=>?clk, ?????????key_1??=>?key_1, key_2??=>?key_2, key_3??=>?key_3, ?????????pulse??=>?pulse ??????); ??? ??? ???--控制模塊,輸出控制信號 ???i_div?:?div ??????PORT?MAP?( ?????????clk?????=>?clk, ?????????clk_en??=>?clk_en, ?????????latch???=>?latch, ?????????rst?????=>?rst ??????); ??? ??? ???--速度計算模塊 ???i_speed?:?speed ??????PORT?MAP?( ?????????clk????????=>?clk, ?????????pulse??????=>?pulse, ?????????clk_en?????=>?clk_en, ?????????latch??????=>?latch, ?????????rst????????=>?rst, ?????????speed_num??=>?speed_num ??????); ??? ??? ???--數(shù)碼管顯示模塊 ???i_display?:?display ??????PORT?MAP?( ?????????clk?????????=>?clk, ?????????speed_num???=>?speed_num, ?????????bit_select??=>?bit_select, ?????????seg_select??=>?seg_select ??????); ??? ??? ???--超速報警 ???i_alarm?:?alarm ??????PORT?MAP?( ?????????clk????????=>?clk, ?????????beep???????=>?beep, ?????????speed_num??=>?speed_num ??????); ??? END?behave;
點擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=274