名稱:Quartus出租車計價器VHDL代碼
軟件:Quartus
語言:VHDL
代碼功能:
出租車計價器
設(shè)計一個按里程收費的出租計價器,出租車的起價5元:當(dāng)里程小于km時,按起個計算,當(dāng)程大于3km時,按每km(公里)1.3元計算;當(dāng)?shù)忍貢r間累計超過2分鐘按每分鐘1.5元計算;并能顯示行駛公里數(shù)等累計時間、總費用,設(shè)計的主要技術(shù)指標(biāo)如下:
計價范圍:0-999.9元;計價分辮率:0.1元;
FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com
演示視頻:
設(shè)計文檔:
1. 工程文件
2. 程序文件
3. 程序編譯
4. RTL圖
5. Testbench
6. 仿真圖
整體仿真圖
速度及判斷模塊
控制模塊
里程計算模塊
時間計算模塊
顯示模塊
部分代碼展示:
LIBRARY?ieee; ???USE?ieee.std_logic_1164.all; ENTITY?taxi_fee?IS ???PORT?( ??????clk????????:?IN?STD_LOGIC;--50MHz基準(zhǔn)頻率CLOCK0 ??????reset??????:?IN?STD_LOGIC;--復(fù)位信號,低有效? ?????? ??????stop???????:?IN?STD_LOGIC;--本次行程結(jié)束,停止計費,高有效 ??????start??????:?IN?STD_LOGIC;--啟動信號,行程開始,高有效? ?????? ??????Wheel_pulse?????:?IN?STD_LOGIC;--車輪脈沖 ?????? --4位數(shù)碼管顯示費用 ??????Kmmoney_L_HEX????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0);--合計費用?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); ??????--時間顯示 ??????time_H_HEX????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0);--總時間 ??????time_L_HEX????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0) ???); END?taxi_fee; ARCHITECTURE?trans?OF?taxi_fee?IS --速度計算及判斷模塊 COMPONENT?speed_pulse?IS ???PORT?( ??????clk?????????????:?IN?STD_LOGIC;--標(biāo)準(zhǔn)時鐘,10hz? ??????reset???????????:?IN?STD_LOGIC;--復(fù)位信號,低有效? ???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ù)碼管顯示費用 ??????Kmmoney_L_HEX????:?OUT?STD_LOGIC_VECTOR(6?DOWNTO?0);--合計費用?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); ??????--時間顯示 ??????time_H_HEX????:?OUT?STD_LOGIC_VECTOR(6?DOWNTO?0);--總時間 ??????time_L_HEX????:?OUT?STD_LOGIC_VECTOR(6?DOWNTO?0) ??????); ???END?COMPONENT; --模塊例化 --計費模塊 COMPONENT?taxi_state?IS ???PORT?( ??????clk??????????????:?IN?STD_LOGIC;--標(biāo)準(zhǔn)時鐘,10hz? ??????reset????????????:?IN?STD_LOGIC;--復(fù)位信號,低有效? ??????stop?????????????:?IN?STD_LOGIC;--本次行程結(jié)束,停止計費,高有效 ??????start????????????:?IN?STD_LOGIC;--啟動信號,行程開始,高有效? ??????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)--合計費用 ???); END?COMPONENT; --計費模塊 COMPONENT?mileage_ctrl?IS ???PORT?( ??????clk??????????????:?IN?STD_LOGIC;--標(biāo)準(zhǔn)時鐘,10hz? ??????reset????????????:?IN?STD_LOGIC;--復(fù)位信號,低有效? ??????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; --計時模塊 COMPONENT?time_ctrl?IS ???PORT?( ??????clk??????????????:?IN?STD_LOGIC;--標(biāo)準(zhǔn)時鐘,10hz? ??????reset????????????:?IN?STD_LOGIC;--復(fù)位信號,低有效? ??????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)--計時 ???); END?COMPONENT; ??? --信號定義 ???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ù)碼管顯示費用 ??????Kmmoney_L_HEX(7)<='1';--合計費用?HML=xxx?(BCD碼顯示) ??????Kmmoney_M_HEX(7)<='0';--顯示小數(shù)點 ??????Kmmoney_H_HEX(7)<='1'; Kmmoney_K_HEX(7)<='1'; ??????--里程顯示 ??????Kmcount_H_HEX(7)<='1'; ??????Kmcount_L_HEX(7)<='1'; ??????--時間顯示 ??????time_H_HEX(7)<='1'; ??????time_L_HEX(7)<='1'; --速度計算及判斷模塊 ???U_speed_pulse?:?speed_pulse ??????PORT?MAP?( ?????????clk?????????????=>?clk,--標(biāo)準(zhǔn)時鐘,256hz? ?????????reset???????????=>?reset,--復(fù)位信號,低有效? ?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)時鐘,256hz? ?????????reset????????????=>?reset,--復(fù)位信號,低有效? ????????? ?????????stop?????????????=>?stop,--本次行程結(jié)束,停止計費,高有效 ?????????start????????????=>?start,--啟動信號,行程開始,高有效? ????????? ?????????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--合計費用 ??????);? ?? --計里程模塊 U_mileage_ctrl:?mileage_ctrl ???PORT?MAP( ??????clk???????????????=>?clk,--標(biāo)準(zhǔn)時鐘 ??????reset????????????=>?reset,--復(fù)位信號,低有效? ??????kilometre_01???=>?kilometre_01,----1公里產(chǎn)生一次脈沖 ??state??=>state, ??????mileage_out???=>??mileage ???); --計時模塊 U_time_ctrl?:?time_ctrl ???PORT?MAP( ??????clk????=>?clk,--標(biāo)準(zhǔn)時鐘 ??????reset??=>?reset,--復(fù)位信號,低有效? ???????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)時鐘 ?????????reset????????=>?reset,--復(fù)位信號,低有效? ?????????speed????????????=>?Speed,----0:暫停等待;1:行駛 ?????????totel_money??=>?totel_money,--費用 ?????????mileage??????=>?mileage,--里程 ?????????wait_time????=>?wait_time,--累計等待時間 ???--4位數(shù)碼管顯示費用 ?????????Kmmoney_L_HEX????=>?Kmmoney_L_HEX(6?DOWNTO?0),--合計費用?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), ?????????--時間顯示 ?????????time_H_HEX????=>?time_H_HEX(6?DOWNTO?0),--總時間 ?????????time_L_HEX????=>?time_L_HEX(6?DOWNTO?0) ??????); ??? END?trans;
點擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=425