名稱:Quartus出租車自動(dòng)計(jì)價(jià)器設(shè)計(jì)VHDL代碼仿真
軟件:Quartus
語(yǔ)言:VHDL
代碼功能:
出租車自動(dòng)計(jì)價(jià)器設(shè)計(jì)
設(shè)計(jì)一個(gè)杭州市臨安區(qū)出租車計(jì)價(jià)器。
該計(jì)價(jià)器的計(jì)費(fèi)系統(tǒng):行程4公里內(nèi),且等待累計(jì)時(shí)間1分鐘內(nèi),起步費(fèi)為10元;4公里外以每公里2.5元計(jì)費(fèi),等待累計(jì)時(shí)間2分鐘外以每分鐘以2.5元計(jì)費(fèi),并能顯示行駛公里數(shù)、等待累計(jì)時(shí)間、總費(fèi)用。
主要技術(shù)指標(biāo)
①計(jì)價(jià)范圍:0~999.9元計(jì)價(jià)分辨率:0.1元
②計(jì)程范圍:0~99公里計(jì)程分辨率:1公里
③計(jì)時(shí)范圍:0~59分? ? 計(jì)時(shí)分辨率:分
FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com
設(shè)計(jì)文檔:
1. 工程文件
2. 程序文件
3. 程序編譯
4. RTL圖
5. 仿真圖
整體仿真圖
速度及判斷模塊
計(jì)費(fèi)控制模塊
里程計(jì)算模塊
時(shí)間計(jì)算模塊
顯示模塊
部分代碼展示:
LIBRARY?ieee; ???USE?ieee.std_logic_1164.all; --出租車計(jì)價(jià) ENTITY?taxi_fee?IS ???PORT?( ??????clk????????:?IN?STD_LOGIC;--50MHz基準(zhǔn)頻率CLOCK0 ??????reset??????:?IN?STD_LOGIC;--復(fù)位信號(hào),低有效? ?????? ??????stop???????:?IN?STD_LOGIC;--本次行程結(jié)束,停止計(jì)費(fèi),高有效 ??????start??????:?IN?STD_LOGIC;--啟動(dòng)信號(hào),行程開(kāi)始,高有效? ?????? ??????Wheel_pulse?????:?IN?STD_LOGIC;--車輪脈沖 ?????? --4位數(shù)碼管顯示費(fèi)用 ??????Kmmoney_L_HEX????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0);--合計(jì)費(fèi)用?HML=xxx?(BCD碼顯示) ??????Kmmoney_M_HEX????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0); ??????Kmmoney_H_HEX????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0); Kmmoney_K_HEX????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0); ??????--里程顯示 ??????Kmcount_H_HEX????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0);--總路程 ??????Kmcount_L_HEX????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0); ??????--時(shí)間顯示 ??????time_H_HEX????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0);--總時(shí)間 ??????time_L_HEX????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0) ???); END?taxi_fee; ARCHITECTURE?trans?OF?taxi_fee?IS --速度計(jì)算及判斷模塊 COMPONENT?speed_pulse?IS ???PORT?( ??????clk?????????????:?IN?STD_LOGIC;--標(biāo)準(zhǔn)時(shí)鐘,10hz? ??????reset???????????:?IN?STD_LOGIC;--復(fù)位信號(hào),低有效? ???Wheel_pulse?????:?IN?STD_LOGIC;--車輪脈沖 ??????Speed???????????:?OUT?STD_LOGIC;--0:暫停等待;1:行駛 ??????kilometre_01???:?OUT?STD_LOGIC;--1公里產(chǎn)生一次 ??????minute_en??:?OUT?STD_LOGIC--暫停等待,1min產(chǎn)生一次脈沖 ???); END?COMPONENT; --模塊例化 ???COMPONENT?display?IS ??????PORT?( ?????????clk????????:?IN?STD_LOGIC; ?????????reset??????:?IN?STD_LOGIC; Speed????????????:?IN?STD_LOGIC;--0:暫停等待;1:行駛 ?????????wait_time????:?IN?STD_LOGIC_VECTOR(7?DOWNTO?0); ?????????totel_money?:?IN?STD_LOGIC_VECTOR(15?DOWNTO?0); ?????????mileage????:?IN?STD_LOGIC_VECTOR(7?DOWNTO?0); --4位數(shù)碼管顯示費(fèi)用 ??????Kmmoney_L_HEX????:?OUT?STD_LOGIC_VECTOR(6?DOWNTO?0);--合計(jì)費(fèi)用?HML=xxx?(BCD碼顯示) ??????Kmmoney_M_HEX????:?OUT?STD_LOGIC_VECTOR(6?DOWNTO?0); ??????Kmmoney_H_HEX????:?OUT?STD_LOGIC_VECTOR(6?DOWNTO?0); Kmmoney_K_HEX????:?OUT?STD_LOGIC_VECTOR(6?DOWNTO?0); ??????--里程顯示6 ??????Kmcount_H_HEX????:?OUT?STD_LOGIC_VECTOR(6?DOWNTO?0);--總路程 ??????Kmcount_L_HEX????:?OUT?STD_LOGIC_VECTOR(6?DOWNTO?0); ??????--時(shí)間顯示 ??????time_H_HEX????:?OUT?STD_LOGIC_VECTOR(6?DOWNTO?0);--總時(shí)間 ??????time_L_HEX????:?OUT?STD_LOGIC_VECTOR(6?DOWNTO?0) ??????); ???END?COMPONENT; --模塊例化 --計(jì)費(fèi)模塊 COMPONENT?taxi_state?IS ???PORT?( ??????clk??????????????:?IN?STD_LOGIC;--標(biāo)準(zhǔn)時(shí)鐘,10hz? ??????reset????????????:?IN?STD_LOGIC;--復(fù)位信號(hào),低有效? ??????stop?????????????:?IN?STD_LOGIC;--本次行程結(jié)束,停止計(jì)費(fèi),高有效 ??????start????????????:?IN?STD_LOGIC;--啟動(dòng)信號(hào),行程開(kāi)始,高有效? ??????Speed????????????:?IN?STD_LOGIC;--0:暫停等待;1:行駛 ??????kilometre_01????:?IN?STD_LOGIC;--1公里產(chǎn)生一次脈沖 ??????minute_en???:?IN?STD_LOGIC;--暫停等待,1min產(chǎn)生一次脈沖 ??state_out???:?OUT?STD_LOGIC_VECTOR(2?DOWNTO?0); ??????wait_time????:?IN?STD_LOGIC_VECTOR(7?DOWNTO?0); ??????mileage??????:?IN?STD_LOGIC_VECTOR(7?DOWNTO?0);--里程 ??????totel_money_out??:?OUT?STD_LOGIC_VECTOR(15?DOWNTO?0)--合計(jì)費(fèi)用 ???); END?COMPONENT; --計(jì)費(fèi)模塊 COMPONENT?mileage_ctrl?IS ???PORT?( ??????clk??????????????:?IN?STD_LOGIC;--標(biāo)準(zhǔn)時(shí)鐘,10hz? ??????reset????????????:?IN?STD_LOGIC;--復(fù)位信號(hào),低有效? ??????kilometre_01????:?IN?STD_LOGIC;--1公里產(chǎn)生一次脈沖 ??state???:?IN?STD_LOGIC_VECTOR(2?DOWNTO?0); ??????mileage_out??????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0) ???); END?COMPONENT; --計(jì)時(shí)模塊 COMPONENT?time_ctrl?IS ???PORT?( ??????clk??????????????:?IN?STD_LOGIC;--標(biāo)準(zhǔn)時(shí)鐘,10hz? ??????reset????????????:?IN?STD_LOGIC;--復(fù)位信號(hào),低有效? ??????minute_en???:?IN?STD_LOGIC;--暫停等待,1min產(chǎn)生一次脈沖 ??state???:?IN?STD_LOGIC_VECTOR(2?DOWNTO?0); ??????wait_time_out????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0)--計(jì)時(shí) ???); END?COMPONENT; ??? --信號(hào)定義 ???SIGNAL?Speed?:?STD_LOGIC;--0:暫停等待;1:行駛 ???SIGNAL?kilometre_01???:?STD_LOGIC; ???SIGNAL?minute_en??:?STD_LOGIC; ???SIGNAL?totel_money?????:?STD_LOGIC_VECTOR(15?DOWNTO?0); ???SIGNAL?mileage?????????:?STD_LOGIC_VECTOR(7?DOWNTO?0); ???SIGNAL?wait_time?????????:?STD_LOGIC_VECTOR(7?DOWNTO?0); ???SIGNAL?state???:??STD_LOGIC_VECTOR(2?DOWNTO?0); BEGIN? --3位數(shù)碼管顯示費(fèi)用 ??????Kmmoney_L_HEX(7)<='1';--合計(jì)費(fèi)用?HML=xxx?(BCD碼顯示) ??????Kmmoney_M_HEX(7)<='0';--顯示小數(shù)點(diǎn) ??????Kmmoney_H_HEX(7)<='1'; Kmmoney_K_HEX(7)<='1'; ??????--里程顯示 ??????Kmcount_H_HEX(7)<='1'; ??????Kmcount_L_HEX(7)<='1'; ??????--時(shí)間顯示 ??????time_H_HEX(7)<='1'; ??????time_L_HEX(7)<='1'; --速度計(jì)算及判斷模塊 ???U_speed_pulse?:?speed_pulse ??????PORT?MAP?( ?????????clk?????????????=>?clk,--標(biāo)準(zhǔn)時(shí)鐘,256hz? ?????????reset???????????=>?reset,--復(fù)位信號(hào),低有效? ?Wheel_pulse?????=>Wheel_pulse, ?????????Speed???????????=>?Speed,----0:暫停等待;1:行駛 ?????????kilometre_01???=>?kilometre_01,--1公里產(chǎn)生一次脈沖 ?????????minute_en??=>?minute_en--暫停等待,1min產(chǎn)生一次脈沖 ??????); ???--控制模塊 ???U_taxi_state?:?taxi_state ??????PORT?MAP?( ?????????clk??????????????=>?clk,--標(biāo)準(zhǔn)時(shí)鐘,256hz? ?????????reset????????????=>?reset,--復(fù)位信號(hào),低有效? ????????? ?????????stop?????????????=>?stop,--本次行程結(jié)束,停止計(jì)費(fèi),高有效 ?????????start????????????=>?start,--啟動(dòng)信號(hào),行程開(kāi)始,高有效? ????????? ?????????speed????????????=>?Speed,----0:暫停等待;1:行駛 ????????? ?????????kilometre_01????=>?kilometre_01,----1公里產(chǎn)生一次脈沖 ?????????minute_en???=>?minute_en,--暫停等待,1mins產(chǎn)生一次脈沖 ?state_out=>state, ?????????wait_time????=>?wait_time, ?????????mileage??????=>?mileage, ?????????totel_money_out??=>?totel_money--合計(jì)費(fèi)用 ??????);? ?? --計(jì)里程模塊 U_mileage_ctrl:?mileage_ctrl ???PORT?MAP( ??????clk???????????????=>?clk,--標(biāo)準(zhǔn)時(shí)鐘 ??????reset????????????=>?reset,--復(fù)位信號(hào),低有效? ??????kilometre_01???=>?kilometre_01,----1公里產(chǎn)生一次脈沖 ??state??=>state, ??????mileage_out???=>??mileage ???); --計(jì)時(shí)模塊 U_time_ctrl?:?time_ctrl ???PORT?MAP( ??????clk????=>?clk,--標(biāo)準(zhǔn)時(shí)鐘 ??????reset??=>?reset,--復(fù)位信號(hào),低有效? ???????minute_en???=>?minute_en,--暫停等待,1min產(chǎn)生一次脈沖 ??state??=>state, ??????wait_time_out???=>wait_time ???); ???--顯示模塊 ???U_display?:?display ??????PORT?MAP?( ?????????clk??????????=>?clk,--標(biāo)準(zhǔn)時(shí)鐘 ?????????reset????????=>?reset,--復(fù)位信號(hào),低有效? ?????????speed????????????=>?Speed,----0:暫停等待;1:行駛 ?????????totel_money??=>?totel_money,--費(fèi)用 ?????????mileage??????=>?mileage,--里程 ?????????wait_time????=>?wait_time,--累計(jì)等待時(shí)間 ???--4位數(shù)碼管顯示費(fèi)用 ?????????Kmmoney_L_HEX????=>?Kmmoney_L_HEX(6?DOWNTO?0),--合計(jì)費(fèi)用?HML=xxx?(BCD碼顯示) ?????????Kmmoney_M_HEX????=>?Kmmoney_M_HEX(6?DOWNTO?0), ?????????Kmmoney_H_HEX????=>?Kmmoney_H_HEX(6?DOWNTO?0), ???Kmmoney_K_HEX????=>?Kmmoney_K_HEX(6?DOWNTO?0), ?????????--里程顯示 ?????????Kmcount_H_HEX???=>?Kmcount_H_HEX(6?DOWNTO?0),--總路程 ?????????Kmcount_L_HEX???=>?Kmcount_L_HEX(6?DOWNTO?0), ?????????--時(shí)間顯示 ?????????time_H_HEX????=>?time_H_HEX(6?DOWNTO?0),--總時(shí)間 ?????????time_L_HEX????=>?time_L_HEX(6?DOWNTO?0) ??????); ??? END?trans;
點(diǎn)擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=398