名稱:出租車計(jì)費(fèi)器控制電路設(shè)計(jì)VHDL代碼Quartus? AX301開發(fā)板
軟件:Quartus
語言:VHDL
代碼功能:
CPLD為復(fù)雜可編程邏輯器件,通過EDA技術(shù)對其進(jìn)行編程,可將一個(gè)較復(fù)雜的數(shù)字系統(tǒng)集成于一個(gè)芯片中,制成專用集成電路芯片,并可隨時(shí)在系統(tǒng)修改其邏輯功能。并最終完成電路的編程調(diào)試。具體要求如下:
1.?實(shí)現(xiàn)計(jì)費(fèi)功能,計(jì)費(fèi)標(biāo)準(zhǔn)為:按行駛里程計(jì)費(fèi),起步價(jià)為7元,并在車行3Km后按2元/Km計(jì)費(fèi),當(dāng)計(jì)費(fèi)器達(dá)到或超過20元時(shí),每公里加收50%的車費(fèi),車停止不計(jì)費(fèi)。
2.?現(xiàn)場模擬功能:能模擬汽車起動、停止、暫停以及加速等狀態(tài)。
3.?用BCD碼將車費(fèi)和路程顯示出來。
FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com
本代碼已在AX301開發(fā)板驗(yàn)證,AX301開發(fā)板如下,其他開發(fā)板可以修改管腳適配:
演示視頻:
設(shè)計(jì)文檔:
1. 工程文件
2. 程序文件
3. 編譯
4. RTL圖
5. Testbench
6. 仿真圖
部分代碼展示:
LIBRARY?ieee; ???USE?ieee.std_logic_1164.all; ???USE?ieee.std_logic_unsigned.all; --數(shù)碼管顯示模塊 ENTITY?segment_ctrl?IS ???PORT?( ??????clk????????????:?IN?STD_LOGIC;--時(shí)鐘 ?????? ??????Kmmoney_L????:?IN?STD_LOGIC_VECTOR(3?DOWNTO?0);----金額十分位,合計(jì)費(fèi)用?HML=xxx?(BCD碼顯示) ??????Kmmoney_M????:?IN?STD_LOGIC_VECTOR(3?DOWNTO?0);--金額個(gè)位 ??????Kmmoney_H????:?IN?STD_LOGIC_VECTOR(3?DOWNTO?0);--金額十位 ??????--總路程,里程范圍為HL=0~99(BCD碼顯示) ??????Kmcount_H????:?IN?STD_LOGIC_VECTOR(3?DOWNTO?0);--里程十位 ??????Kmcount_L????:?IN?STD_LOGIC_VECTOR(3?DOWNTO?0);--里程個(gè)位 ?????? ??????bit_select?????:?OUT?STD_LOGIC_VECTOR(5?DOWNTO?0);--數(shù)碼管位選 ??????seg_select?????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0)--數(shù)碼管段選 ???); END?segment_ctrl; ARCHITECTURE?trans?OF?segment_ctrl?IS ??? ???SIGNAL?display_num?:?STD_LOGIC_VECTOR(3?DOWNTO?0)?:=?"0000"; ??? ???SIGNAL?select_bit??:?STD_LOGIC_VECTOR(15?DOWNTO?0)?:=?"0000000000000000"; ???SIGNAL?geshu???????:?STD_LOGIC_VECTOR(2?DOWNTO?0)?:=?"000"; BEGIN ??? --位選-- ???PROCESS?(clk) ???BEGIN ??????IF?(clk'EVENT?AND?clk?=?'1')?THEN ????????? ?????????IF?(select_bit?=?"1111111111111111")?THEN--掃描頻率 ????????????select_bit?<=?"0000000000000000"; ?????????ELSE ????????????select_bit?<=?select_bit?+?"0000000000000001";--掃描頻率計(jì)時(shí)數(shù)字 ?????????END?IF; ??????END?IF; ???END?PROCESS;