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

出租車計(jì)價(jià)器VHDL計(jì)費(fèi)器quartus

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

名稱:出租車計(jì)價(jià)器VHDL計(jì)費(fèi)器(代碼在文末付費(fèi)下載)

軟件:Quartus

語(yǔ)言:VHDL

要求:

啟動(dòng)鍵start表示汽車啟動(dòng),起步價(jià)7元,同時(shí)路程開始計(jì)數(shù),停止鍵stop表示熄火,車費(fèi)和路程均為0,當(dāng)暫停鍵pause為1時(shí),車費(fèi)和路程停止計(jì)數(shù),當(dāng)檔位分別取0,1,2,3,時(shí)路程計(jì)數(shù)逐漸加快,路程超過3Km后,按設(shè)定逐步遞增。對(duì)設(shè)計(jì)進(jìn)行仿真,實(shí)現(xiàn)出租車計(jì)價(jià)器功能。

要求.jpg

演示視頻:

部分代碼展示

LIBRARY?ieee;
???USE?ieee.std_logic_1164.all;
???USE?ieee.std_logic_unsigned.all;

ENTITY?taxi?IS
???PORT?(
??????clk?????????????:?IN?STD_LOGIC;
??????start???????????:?IN?STD_LOGIC;--啟動(dòng)
??????money???????????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0);--金額
??????distance????????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0);--里程
??????stop????????????:?IN?STD_LOGIC;--停止
??????pause???????????:?IN?STD_LOGIC;--暫停
??????gears???????????:?IN?STD_LOGIC_VECTOR(1?DOWNTO?0)--檔位
???);
END?taxi;

ARCHITECTURE?behave?OF?taxi?IS

???TYPE?State_type?IS?(s_stop,?s_start,?s_charge,?s_pause_start?,s_pause_charge);??--?定義狀態(tài)
???SIGNAL?state?:?State_Type;????--?創(chuàng)建信號(hào)
???
	--定義中間信號(hào)
???SIGNAL?money_buf????:?STD_LOGIC_VECTOR(7?DOWNTO?0)?:=?"00000000";
???SIGNAL?distance_buf?:?STD_LOGIC_VECTOR(7?DOWNTO?0)?:=?"00000000";
???SIGNAL?count????????:?STD_LOGIC_VECTOR(2?DOWNTO?0)?:=?"000";
???SIGNAL?charge_cnt???:?STD_LOGIC_VECTOR(2?DOWNTO?0)?:=?"000";
???SIGNAL?charge_en????:?STD_LOGIC?:=?'0';
BEGIN
--檔位,根據(jù)不同檔位對(duì)count進(jìn)行不同賦值,用于后面控制計(jì)費(fèi)速率
???PROCESS?(gears)
???BEGIN
??????CASE?gears?IS
?????????WHEN?"00"?=>
????????????count?<=?"111";--7
?????????WHEN?"01"?=>
????????????count?<=?"101";--5
?????????WHEN?"10"?=>
????????????count?<=?"011";--3
?????????WHEN?"11"?=>
????????????count?<=?"001";--1
?????????WHEN?OTHERS?=>
??????END?CASE;
???END?PROCESS;
???
	--charge_en為計(jì)費(fèi)脈沖,根據(jù)count控制計(jì)費(fèi)脈沖,檔位越高,脈沖頻率越大
???PROCESS?(clk)
???BEGIN
??????IF?(clk'EVENT?AND?clk?=?'1')?THEN
?????????IF?(charge_cnt?>=?count)?THEN
????????????charge_cnt?<=?"000";
????????????charge_en?<=?'1';--計(jì)數(shù)到count后charge_en拉高
?????????ELSE
????????????charge_cnt?<=?charge_cnt?+?"001";
????????????charge_en?<=?'0';
?????????END?IF;
??????END?IF;
???END?PROCESS;
???
???--出租車狀態(tài)機(jī)控制

設(shè)計(jì)文檔(文檔點(diǎn)擊可下載):

1. 工程文件

2. 程序文件

CPLD器件,可以根據(jù)具體需求自由選擇

3. 程序編譯

4. RTL圖

5. 狀態(tài)圖

6. 仿真文件

7. 仿真圖

下圖所示,gears表示檔位,檔位越高,路程及計(jì)費(fèi)越快。

本代碼已在開發(fā)板驗(yàn)證,開發(fā)板資料:

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

相關(guān)推薦