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

Quartus出租車計(jì)費(fèi)系統(tǒng)VHDL代碼

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

2-23122G033214Y.doc

共1個(gè)文件

名稱:Quartus出租車計(jì)費(fèi)系統(tǒng)VHDL代碼

軟件:Quartus

語言:VHDL

代碼功能:

出租車計(jì)費(fèi)系統(tǒng)設(shè)計(jì)。

設(shè)計(jì)要求:

設(shè)計(jì)一個(gè)模擬出租車計(jì)費(fèi)的電路系統(tǒng),具有以下:

(1)能實(shí)現(xiàn)計(jì)費(fèi)功能,計(jì)費(fèi)標(biāo)準(zhǔn)為:按行駛路程收費(fèi),起步價(jià)為11元,并在車行3公里(3km)后按2元/公里收費(fèi)。當(dāng)總費(fèi)用達(dá)到或超過40元時(shí)每公里收費(fèi)4元。當(dāng)遇到紅綠燈或客戶有事需要停車等待時(shí),則按時(shí)間收費(fèi),計(jì)費(fèi)單價(jià)為每20s收費(fèi)。

(2)實(shí)現(xiàn)預(yù)置功能:能預(yù)置起步費(fèi)、每公里收車行加費(fèi)里程、計(jì)時(shí)收費(fèi)。

(3)實(shí)現(xiàn)模擬功能:能模擬汽車行駛、停止和暫停等狀態(tài)。

(4)將路程和車費(fèi)顯示出來,以十進(jìn)制BCD碼方式輸出信號(hào)

FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com

演示視頻:

設(shè)計(jì)文檔:

1. 工程文件

2. 程序文件

原理圖

代碼

3. 程序編譯

4. RTL圖

5. 仿真圖

整體仿真圖

速度控制模塊

狀態(tài)機(jī)控制模塊

顯示模塊

部分代碼展示:

LIBRARY?ieee;
???USE?ieee.std_logic_1164.all;
???USE?ieee.std_logic_unsigned.all;
--狀態(tài)機(jī)控制模塊
ENTITY?taxi_state?IS
???PORT?(
??????clk_in???????????????:?IN?STD_LOGIC;--時(shí)鐘100Hz
??????reset_n??????????????:?IN?STD_LOGIC;--復(fù)位信號(hào)
??????start_n??????????????:?IN?STD_LOGIC;--啟動(dòng)信號(hào),行程開始
??????stop_n???????????????:?IN?STD_LOGIC;--中途暫停
??????pulse_kilometre??????:?IN?STD_LOGIC;--1公里產(chǎn)生一次脈沖
??????mileage_out??????????:?OUT?STD_LOGIC_VECTOR(15?DOWNTO?0);--里程
??????totel_money_out??????:?OUT?STD_LOGIC_VECTOR(15?DOWNTO?0)--合計(jì)費(fèi)用
???);
END?taxi_state;
ARCHITECTURE?behave?OF?taxi_state?IS
--定義狀態(tài)
???TYPE?State_type?IS?(s_idle,?s_starting_price,?s_mileage_price,?s_highmileage_price?,s_stop_1,s_stop_2,s_stop_3);??--?定義狀態(tài)
???SIGNAL?state:?State_Type;????--?創(chuàng)建信號(hào)
???SIGNAL?totel_money???:?STD_LOGIC_VECTOR(15?DOWNTO?0)?:=?"0000000000000000";--總價(jià)錢
???SIGNAL?mileage???????:?STD_LOGIC_VECTOR(15?DOWNTO?0)?:=?"0000000000000000";--里程
???
???SIGNAL?ten_seconds???:?STD_LOGIC?:=?'0';
???SIGNAL?count_seconds?:?integer?:=?0;
BEGIN
???mileage_out?<=?mileage;--輸出
???PROCESS?(clk_in,?reset_n)
???BEGIN
??????IF?(reset_n?=?'0')?THEN--復(fù)位
?????????mileage?<=?"0000000000000000";
??????ELSIF?(clk_in'EVENT?AND?clk_in?=?'1')?THEN
?????????IF?(state?=?s_starting_price?OR?state?=?s_mileage_price?OR?state?=?s_highmileage_price)?THEN
????????????IF?(pulse_kilometre?=?'1')?THEN--1公里里程加1
???????????????mileage?<=?mileage?+?"0000000000000001";
????????????ELSE
???????????????mileage?<=?mileage;
????????????END?IF;
?????????END?IF;
??????END?IF;
???END?PROCESS;
???
???--每20秒收取1元
???PROCESS?(clk_in,?reset_n)
???BEGIN
??????IF?(reset_n?=?'0')?THEN
?????????count_seconds?<=?0;
?????????ten_seconds?<=?'0';
??????ELSIF?(clk_in'EVENT?AND?clk_in?=?'1')?THEN
?????????IF?(state?=?s_stop_1?OR?state?=?s_stop_2?OR?state?=?s_stop_3)?THEN--停車等待
????????????IF?(count_seconds?>=?200)?THEN--20秒
???????????????count_seconds?<=?0;
???????????????ten_seconds?<=?'1';--20秒信號(hào)
????????????ELSE
???????????????count_seconds?<=?count_seconds?+?1;--計(jì)數(shù)
???????????????ten_seconds?<=?'0';
????????????END?IF;
?????????END?IF;
??????END?IF;
???END?PROCESS;
???
???
???PROCESS?(clk_in,?reset_n)
???BEGIN
??????IF?(reset_n?=?'0')?THEN
?????????state?<=?s_idle;--復(fù)位
?????????totel_money?<=?"0000000000000000";--清零
?????????totel_money_out?<=?"0000000000000000";--清零
??????ELSIF?(clk_in'EVENT?AND?clk_in?=?'1')?THEN
?????????totel_money_out?<=?totel_money;--輸出合計(jì)費(fèi)用
?????????CASE?state?IS
????????????WHEN?s_idle?=>--空閑狀態(tài)
???????????????IF?(start_n?=?'0')?THEN--按下起動(dòng)鍵start,汽車起動(dòng)
??????????????????state?<=?s_starting_price;
??totel_money?<=?"0000000000001011";--顯示起步價(jià)11元,3公里
???????????????ELSE
??????????????????state?<=?s_idle;--空閑狀態(tài)
??????????????????totel_money?<=?"0000000000000000";
???????????????END?IF;
????????????WHEN?s_starting_price?=>--起步價(jià)狀態(tài)
???????????????IF?(stop_n?=?'0')?THEN--中途停車
??????????????????state?<=?s_stop_1;
???????????????ELSIF?(mileage?>=?"0000000000000011")?THEN--大于3.0公里
??????????????????state?<=?s_mileage_price;
???????????????ELSE
??????????????????state?<=?s_starting_price;
???????????????END?IF;
????????????WHEN?s_mileage_price?=>--車行駛?3.0公里后按每公里2元計(jì)費(fèi)
???????????????IF?(pulse_kilometre?=?'1')?THEN
??????????????????totel_money?<=?totel_money?+?"0000000000000010";--每公里2元計(jì)費(fèi)
???????????????END?IF;
???????????????IF?(totel_money?>=?"0000000000101000")?THEN--當(dāng)總費(fèi)用達(dá)到40元時(shí),每公里按4元收費(fèi)
??????????????????state?<=?s_highmileage_price;
???????????????ELSIF?(stop_n?=?'0')?THEN--中途停車
??????????????????state?<=?s_stop_2;
???????????????ELSE
??????????????????state?<=?s_mileage_price;
???????????????END?IF;
????????????WHEN?s_highmileage_price?=>--當(dāng)總費(fèi)用達(dá)到40元時(shí),每公里按4元收費(fèi)
???????????????IF?(pulse_kilometre?=?'1')?THEN
??????????????????totel_money?<=?totel_money?+?"0000000000000100";--每公里4元計(jì)費(fèi)
???????????????END?IF;
???????????????IF?(stop_n?=?'0')?THEN--中途停車
??????????????????state?<=?s_stop_3;
???????????????ELSE
??????????????????state?<=?s_highmileage_price;
???????????????END?IF;
????????????WHEN?s_stop_1?=>--停車等待
???????????????IF?(ten_seconds?=?'1')?THEN--每20秒
??????????????????totel_money?<=?totel_money?+?"0000000000000001";--每20秒收取1元
???????????????END?IF;
???????????????IF?(start_n?=?'0')?THEN--啟動(dòng)
??????????????????state?<=?s_starting_price;
???????????????ELSE
??????????????????state?<=?s_stop_1;
???????????????END?IF;
????????????WHEN?s_stop_2?=>--停車等待
???????????????IF?(ten_seconds?=?'1')?THEN--每20秒
??????????????????totel_money?<=?totel_money?+?"0000000000000001";--每20秒收取1元
???????????????END?IF;
???????????????IF?(start_n?=?'0')?THEN--啟動(dòng)
??????????????????state?<=?s_mileage_price;
???????????????ELSE
??????????????????state?<=?s_stop_2;
???????????????END?IF;
????????????WHEN?s_stop_3?=>--停車等待
???????????????IF?(ten_seconds?=?'1')?THEN--每20秒
??????????????????totel_money?<=?totel_money?+?"0000000000000001";--每20秒收取1元
???????????????END?IF;
???????????????IF?(start_n?=?'0')?THEN--啟動(dòng)
??????????????????state?<=?s_highmileage_price;
???????????????ELSE
??????????????????state?<=?s_stop_3;
???????????????END?IF;
????????????WHEN?OTHERS?=>
???????????????state?<=?s_idle;
?????????END?CASE;
??????END?IF;
???END?PROCESS;
???
???
END?behave;

點(diǎn)擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=424

  • 2-23122G033214Y.doc
    下載

相關(guān)推薦