名稱(chēng):汽車(chē)速度表VHDL代碼數(shù)碼管顯示車(chē)速超速警告(代碼在文末下載)
軟件:QuartusII
語(yǔ)言:VHDL
代碼功能:
設(shè)計(jì)一個(gè)汽車(chē)速度表。車(chē)輪每轉(zhuǎn)一圈會(huì)產(chǎn)生一個(gè)脈沖,每個(gè)脈沖代表1米的距離,根據(jù)單位時(shí)間的脈沖數(shù)可推算出汽車(chē)的速度。
要求:
(1)模擬產(chǎn)生車(chē)輪運(yùn)轉(zhuǎn)產(chǎn)生的脈沖信號(hào)并對(duì)其計(jì)數(shù),用按鍵選擇脈沖信號(hào)的不同頻率。
(2)每隔10秒讀取一次脈沖計(jì)數(shù)器,并據(jù)此計(jì)算車(chē)速;
(3)用數(shù)碼管顯示車(chē)速,單位Kmh;
(4)給出超速警告。
FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com
本代碼已在21EDA EPM240-CPLD學(xué)習(xí)板驗(yàn)證,開(kāi)發(fā)板如下,其他開(kāi)發(fā)板可以修改管腳適配:
21EDA EPM240-CPLD學(xué)習(xí)板使用說(shuō)明書(shū)(1).pdf
演示視頻:
設(shè)計(jì)文檔:
1. 工程文件
2. 程序文件
3. 程序編譯
4. RTL圖
管腳
5. Testbench
6. 仿真圖
按鍵模塊
控制模塊
速度模塊
報(bào)警模塊
顯示模塊
部分代碼展示:
LIBRARY?ieee; ???USE?ieee.std_logic_1164.all; ???USE?ieee.std_logic_unsigned.all; --速度計(jì)數(shù)模塊 ENTITY?speed?IS ???PORT?( ??????clk????????:?IN?STD_LOGIC;--輸入時(shí)鐘1000Hz ??????pulse??????:?IN?STD_LOGIC;--傳感器脈沖信號(hào),每個(gè)脈沖1米 ??????clk_en?????:?IN?STD_LOGIC;--輸出10s使能信號(hào) ??????latch??????:?IN?STD_LOGIC;--輸出鎖存信號(hào) ??????rst????????:?IN?STD_LOGIC;--輸出清零 ??????speed_num??:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0)--輸出速度值 ???); END?speed; ARCHITECTURE?behave?OF?speed?IS ??? ???SIGNAL?cnt?????:?STD_LOGIC_VECTOR(16?DOWNTO?0)?:=?"00000000000000000"; ??? ???SIGNAL?cnt_lat?:?STD_LOGIC_VECTOR(16?DOWNTO?0)?:=?"00000000000000000"; SIGNAL?speed_num_buf?:?STD_LOGIC_VECTOR(23?DOWNTO?0); BEGIN ???PROCESS?(clk,?rst) ???BEGIN ??????IF?(rst?=?'1')?THEN ?????????cnt?<=?"00000000000000000"; ??????ELSIF?(clk'EVENT?AND?clk?=?'1')?THEN--傳感器脈沖計(jì)數(shù) IF?(pulse?=?'1')?THEN cnt?<=?cnt?+?"00000000000000001";--傳感器脈沖計(jì)數(shù) END?IF; ??????END?IF; ???END?PROCESS; ??? ???PROCESS?(clk) ???BEGIN ??????IF?(clk'EVENT?AND?clk?=?'1')?THEN ?????????IF?(latch?=?'1')?THEN ????????????cnt_lat?<=?cnt;--輸出鎖存信號(hào) ?????????END?IF; ??????END?IF; ???END?PROCESS; ??? --速度換算:1?米/秒(米每秒)=3.6?千米/時(shí)(千米每時(shí)) --10s對(duì)應(yīng)距離為cnt_lat米,速度為cnt_lat/10(米每秒) --輸出速度值cnt_lat*92/256; ???speed_num_buf?<=?cnt_lat?*?"1011100";--*92/256 ???speed_num<=speed_num_buf(15?DOWNTO?8); ???--speed_num<=speed_num_buf(11?DOWNTO?4); END?behave;
點(diǎn)擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=273