• 方案介紹
  • 附件下載
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

Quartus出租車計價器VHDL代碼

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

2-23122G04911529.doc

共1個文件

名稱: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

  • 2-23122G04911529.doc
    下載

相關(guān)推薦