《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 用VHDL設計出租車計費系統
用VHDL設計出租車計費系統
摘要: 出租車計價系統較多的是利用單片機進行控制,但較易被私自改裝,,且故障率相對較高,,且不易升級;而FPGA具有高密度、可編程及有強大的軟件支持等特點,,所以設計的產品具有功能強,、可靠性高、易于修改等特點,。本文正是基于FPGA,,設計了一種出租車的計費系統,它可以直觀地顯示出租車行駛的里程和乘客應付的費用,。
Abstract:
Key words :

0 引言

  出租車計價系統較多的是利用單片機進行控制,,但較易被私自改裝,且故障率相對較高,,且不易升級;而FPGA具有高密度,、可編程及有強大的軟件支持等特點,所以設計的產品具有功能強,、可靠性高,、易于修改等特點。

  本文正是基于FPGA,,設計了一種出租車的計費系統,,它可以直觀地顯示出租車行駛的里程和乘客應付的費用。

  1 系統功能設計

  所設計的計價器的計費標準為:車在行駛3 km以內,,只收起步價9.0元;車行駛超過3 km后,,按每公里2元計費。行駛路程達到或超過9 km后,,車費按每公里3.0元開始計費,。車遇紅燈或中途暫停時,每3分鐘計0.5元,。若停止(rst)則車費清零,,等待下一次計費的開始。要求能夠顯示里程數和乘客應付的費用,,其中里程數精確到0.01 km,,乘客應付的費用精確到0.1元,顯示范圍為:里程為0~99.99公里,,費用為0~999.9元,。

  2 系統設計方案

  基于FPGA出租車計費系統的組成如圖1所示。由外部輸入、FPGA控制部分以及數碼顯示三部分組成,。其中FPGA部分又由分頻模塊,、計價模塊、BCD轉換模塊以及動態(tài)譯碼掃描模塊組成;外部輸入包括啟動按鍵(start),、暫停按鍵(pause)、停止按鍵(stop即rst)以及兩個脈沖信號(分別是每20 m一個脈沖的路程脈沖信號pulse和32 MHz的工作脈沖信號clk32M),。顯示模塊用8個LED數碼管分別顯示行駛里程和車費,,行駛里程顯示2位整數和2位小數,車費顯示3位整數和1位小數,。

  3 各模塊設計

  設計FPGA控制部分,,包括控制計價模塊,BCD轉換模塊,,動態(tài)掃描譯碼模塊以及分頻模塊,。采用混合設計的方法,各子部分用VHDL編程,,頂層部分用原理圖進行設計,。

  3.1 控制計價模塊(jijia)

  控制計價模塊由里程計費模塊、等待計費模塊,、總價模塊組成,。

  里程計費模塊,主要對傳感器公里脈沖信號pulse計數(20m一個脈沖),,計算出租車本次交易行駛的路程以及里程費用,。每數到50個pulse為1 km,總路程由lucheng端輸出,。在3 km內時,,里程車費cf1為9元不變,當超過3 km時,,p=1,,開始里程費用計數,當計費停止,,即start端口置“0”或出租車停止行駛,,即rst端口置“0”時,相關數據復位,,清零,。

  等待計費模塊,在3 km之后(p=1),,每當pause=1時,,則開始計時,當秒脈沖數到180個時(即3分鐘),此時等待車費cf2加5,,表示車費加0.5元,。

  總價模塊是將里程計費和等待計費相加,計算出總費用,,從chefei端輸出,。

  3.2 BCD轉換模塊(zhuanhuan)

  該模塊將計費模塊的車費和路程轉換成4位十進制數,便于數碼管顯示,。輸入口acf,,bcf分別為總路程數的輸入口和總費用的輸入口,兩者都是二進制碼進行十進制編碼計數,,通過該編碼器生成BCD碼,,輸出口分別以BCD碼表示個,十,,百,,千位的數據。Aclk是工作脈沖,,即32MHz,。

  3.3 動態(tài)掃描模塊(dtxianshi)

  該模塊由動態(tài)掃描模塊以及譯碼模塊組成。動態(tài)掃描模塊,,該模塊利用視覺暫留效應,,采用動態(tài)掃描電路,將8進制轉換后的路程數和車費的4位十進制數顯示在數碼管上,,節(jié)約了硬件資源和能源,。該模塊經過8進制掃描模塊將路程和車費輪流顯示出來。端口d是選通地址碼的輸入端口,,A1,,A2,A3,,A4,,B1,B2,,B3,,B4分別是個,十,,百,,千位的數值輸入端口。根據輸入的地址碼,,模塊每次只有一位數字向后傳輸到輸出口q,,同時輸出小數點的顯示控制信號(dp),,使路程顯示為00.00公里,費用顯示為000.0元,。

  譯碼模塊,,該模塊把0-9的BCD碼譯成數碼管顯示碼,輸入端口q輸入掃描模塊選出要顯示的BCD碼,,譯成數碼管的顯示碼由g[6..0]輸出,。本設計中數碼管是共陰數碼管。

  3.4 分頻模塊(fenp)

  本設計中輸入的系統時鐘為32 MHz,,進行分頻,,再對數碼管的地址進行掃描。輸入端口rse為出租車停運信號輸入端口,,當出租車停止時,該模塊停止工作,,清零,。當出租車行駛時對輸入的32 MHz脈沖信號進行分頻,分別從輸出端口cp1得到秒脈沖,,cp32得到32 Hz工作脈沖,。

3.5 整體電路

  將各個模塊按照輸入輸出關系連接,頂層電路原理圖如圖2所示,。g[6…0]為七段顯示碼輸出,,通過動態(tài)掃描依次控制8個數碼管的顯示,dp為小數點位,。

  4 系統仿真驗證

  用MAX+plusⅡ軟件對各個子模塊及頂層原理圖進行了時序仿真,,仿真波形如圖3所示。

  控制計價模塊仿真圖如圖3所示,。由圖3(a)可得,,當reset=1,start=1,,且pause=0時,,表示出租車處于行駛狀態(tài),此時路程開始遞增,,當不超過3 km時,,車費為5A即90,起步價9.0元,。由圖3(b)可得,,當超過3 km后,車費每行駛1 km加20(即2元),。由圖3(c)可得,,當reset= 1,,start=1,且pause=1時,,出租車處于等待狀態(tài),,此時路程不再遞增,而時間遞增,,當時間達到3分鐘時,,車費加5(即0.5元)。

  頂層電路的仿真圖如圖4所示,。從圖中可以看出,,隨著輸入的變化,從g[6…0]輸出了共陰的數碼管顯示編碼,,dp也在對應的數碼管處,,輸出高電平點亮小數點。本設計的軟件仿真結果正確,,達到預期目標,。

此內容為AET網站原創(chuàng),未經授權禁止轉載,。