基於CPLD,FPGA的計程車計費器

2023-01-01 18:57:03 字數 4287 閱讀 9342

摘要: 介紹了計程車計費器系統的組成及工作原理,簡述了在eda平台上用單片cpld器件構成該數字系統的設計思想和實現過程。論述了車型調整模組、計程模組、計費模組、解碼動態掃瞄模組等的設計方法與技巧。

關鍵詞: cpld/ppga 硬體描述語言計程車計費器 max+plus軟體數字系統

隨著eda技術的高速發展,電子系統的設計技術和工具發生了深刻的變化,大規模可程式設計邏輯器件cpld/fpga的出現,給設計人員帶來了諸多方便。利用它進行產品開發,不僅成本低、周期短、可靠性高,而且具有完全的智財權。本文介紹了乙個以altera公司可程式設計邏輯晶元epm7128slc84-15為控制核心、附加一定外圍電路組成的計程車計費器系統。

1 系統組成

基於cpld/fpga的計程車計費器的組成如圖1所示。各部分主要功能如下:(1)a計數器對車輪感測器送來的脈衝訊號進行計數(每轉一圈送乙個脈衝)。

不同車型的車輪直徑可能不一樣,通過「設定1」對車型做出選擇,以實現對不同車輪直徑的車進行調整。(2)b計數器對百公尺脈衝進行累加,並輸出實際公里數的bcd碼給解碼動態掃瞄模組。每計滿500送出乙個脈衝給c計數器。

「設定2」實現起步公里數預製。(3)c計數器實現步長可變(即單價可調)的累加計數,每500公尺計費一次。「設定3」用來完成超價加費、起步價預製等。

(4)解碼/動態掃瞄將路程與費用的數值解碼後用動態掃瞄的方式驅動數碼管。(5)數碼管顯示將公里數和計費金額均用四位led數碼管顯示(三位整數,1位小數)。

2 功能模組設計

計程車計費器由車型調整模組、計程模組、計費模組、解碼動態及掃瞄等模組組成,整個系統採用模組化設計,首先用vhdl編寫功能模組,然後用頂層原理圖將各功能模組連線起來。

2.1 車型調整模組

計程車車型並非單一,各個車型的輪胎直徑亦有所不同。據調查統計,現行計程車輪胎直徑大致有四種,直徑分別為520mm、540mm、560mm和580mm。若要使不同車型的計程車每行駛一百公尺均送出乙個脈衝,可通過設定「可預製分頻器」的係數來完成。

根據上述車輪直徑計算出的分頻係數分別為61、59、57和55。預製資料受兩個車型設定開關控制,dip開關狀態與車輪直徑對應關係如表1所示(表中「1」為高電平,「0」為低電平)。

表1 車型設定

在引數預製中,使用with_select語句(查表法)做分頻選擇:

with cartype select

typecounter<=「111101」when「00」, --520mm

「111011」when「01」, --540mm

「111001」when「10」, ——560mm

「111000」when「11」, --580mm

「000000」when others;

分頻器採用的是加法分頻電路,其占空比可通過datal(x)進行調整,並且分頻器帶有「開始」/「清零」端(高電平清零)。時序**波形如圖2所示。從圖中可以看出,對於設定開關為「10」的車型,當第57個脈衝到來時,該模組oclk端從高變低,輸出一低電平訊號。

車型調整模組(以下簡稱fp)封裝見圖4。

2.2 計程模組

計程模組是乙個模為10、步長為1的加法計數器。該模組可以預製引數,使其實際計數值大於預製數值後,每500公尺送出乙個脈衝,並將計數值送解碼動態掃瞄模組進行顯示。預製引數採用非壓縮bcd碼,所以在計數器設計時必須將二進位制1010至1111六個狀態跳過去。

在vhdl程式中,用if語句來實現。

if km(3 downto 0)=「1001」then km:=km+「0111」:

else km:=kin+1;

end if;

計程模組也帶有「開始」/「清零」端。引數預製同樣使用with_select語句。「起步里程」和「開關設定」對應關係如表2所示。計程模組(以下簡稱mile)封裝見圖4。

表2 起步里程設定

2.3 計費模組

計費模組是乙個模為10、步長可變的加法計數器。該模組通過開關量預製步長,當超過一定預製引數時改變步長。計費模組也採用非壓縮bcd碼,但因步長不為1,所以在做非壓縮bcd加法時必須調整,否則可能導致在超過或未超過預置引數時出現超程錯誤。

這裡採用模仿微機的af標誌位,在其設立乙個半進製標誌,當累加和大於9或半進製標誌為「1」時,對累加和進行調整。

if datal(3 downto 0)>9 or datal(4)=『1'then

datal(3 downto 0):=datal(3 downto 0)+「0110」;

datal(8 downto 5):=datal(8 downto 5)+1;

end if;

其中,data(4)為半進製標誌。「起步**」和「超價加費」設定引數分別如表3和表4所示。計費模組(以下簡稱money)封裝見圖4。

表3 起步**設定

表4 超價加費設定

2.4 顯示模組

顯示模組由七段led數碼管解碼和動態掃瞄顯示兩部分組成。

2.4.1 七段led數碼管解碼

本次設計採用的是共陰極七段數碼管,根據16進製制數和七段顯示段碼表的對應關係,用vhdl的with_select或when_else語句可方便實現它們的解碼。

2.4.2 動態掃瞄顯示

動態掃瞄是利用人眼的視覺暫留原理,只要掃瞄頻率不小於24hz,人眼就感覺不到顯示器的閃爍。本系統24hz的掃瞄脈衝由相應的外圍電路提供。動態掃瞄電路設計的關鍵在於位選訊號要與顯示的資料在時序上一一對應,因此電路中必須提供同步脈衝訊號。

這裡採用八進位制計數器提供同步脈衝,vhdl程式段如下:

cikl_label:process(scp)

begin

if scp'vent and scp=『1'then count<=count+1;

end if;

end process clkl_label;

顯示資料的選擇由計數器控制,vhdl程式段如下:

temp<=counterl when count=「000」else...

counter4 when count=「011」else

milel when count=「100」else...

mile4 when count=「111」;

位選訊號時序**如圖3所示。從時序**圖和上述程式可以看出,位選訊號和要顯示的資料實現了同步。

動態掃瞄電路中小數點的顯示無法在解碼電路中完成。由於小數點的位置是固定的,因此可由計數器提供的同步訊號產生另一訊號控制dp。vhdl程式實現如下:

if (count:「101」or count=「001」)then data(0)<=『1';

else data(0)<=『0';

end if;

顯示模組(以下簡稱show)封裝見圖4。此模組中應用了兩個過程,在過程內程式順序執行,其中第乙個過程觸發第二個過程。

3 系統綜合

3.1 模組聯調

各個功能子模組設計完成後,利用maxplusⅱ的圖形編輯器(graphic editor)將各功能子模組(.sym)進行連線。由於mile模組中存在毛刺,故不能直接與后級相連,通過對輸出脈衝訊號加閘電路延時,再與原始訊號相「與」的方法即可消除毛刺。系統頂層原理圖如圖4所示。

晶元管腳定義可以直接用編輯.pin檔案或在floor—plan editor下進行。完成管腳定義後選擇器件(epm7128sic84—15),編譯後生成.sof、.pof及報告檔案.rpt。檢視報告檔案可得到器件管腳的利用情況及器件內部資源的使用情況。

通過更換適當的器件使其資源配置達到最優。選擇器件的一般原則是系統所使用的資源不要超過器件資源的80%,若超過90%,系統功耗將增大,工作不穩定。從本次設計器件部分報告中得知:

輸入、輸出管腳各用16只,晶元資源利用率僅為51%,具有較大的擴充套件空間。

3.2 硬體設計說明

本次設計的計程車計費器計數脈衝cp來自車輪轉速感測器(幹簧管),脈衝經器件內部整形後送計數器;動態掃瞄脈衝由外圍電路給出;系統使用整流、濾波、降壓後的計程車電源供電;由於cpld/fpga的驅動能力有限,為了增強數碼管的亮度,提高系統的可靠性,設計中在led驅動和位驅動上分別增加了電流驅動器件uln2803和2scl015。

現場實驗表明:該計費器實現了按預製引數自動計費(最大計費金額為999.9元)、自動計程(最大計程公里數為999.9公里)等功能;能夠實現起步價、每公里收費、車型及加費里程的引數預製(如:起步價5.00元;3公里後,1.20元/公里;計費超過15.00元,每公里加收50%的車費等),且預置引數可調範圍大。

由於採用了cpld/fpga大規模可程式設計邏輯器件,整機功耗小、抗干擾能力強、系統穩定、工作可靠、公升級方便。另外,根據實際需要,系統可方便地增加以下功能:①通過晶元內部程式設計增加時鐘功能(器件內部資源足夠),既可為司機和乘客提供方便,又能為夜間行車自動調整收費標準提供參考;②用cpld/fpga的輸出引線控制語音晶元,可向乘客發出問候語、提醒乘客告訴司機所要到達的地點、報出應收繳的費用等。

計程車租車協議

沁水祥瑞出租汽車 甲方 出租人聯絡 住址 乙方 承租人聯絡 住址 甲 乙雙方經協商達成以下計程車租車協議 1 甲方提供手續齊全 效能合格的計程車晉et 交於乙方使用,租金為元 月。2 乙方簽訂使用晉et 計程車。時間為年月日到年月日。3 乙方在使用車輛前應一次性向甲方交納風險保金元,取得車輛使用權後...

計程車租車協議

租車協議 甲方身份證號碼 乙方身份證號碼 為了迎合甲乙雙方共同的需求,甲方特將湘晚上經營權 當日下午六點至次日凌晨六點 承租給乙方使用,為了明確雙方的責 權 利在平等互利互相信任的原則下,雙方達成如下協議 一 甲方將計程車晚上承租給乙方使用,每晚收租用車費120元 大寫壹佰貳拾元 租用從年月日至年 ...

計程車出租合同

出租人 以下簡稱甲方 承租人 以下簡稱乙方 為明確甲乙雙方的權利和義務,經協商一致,簽定本合同。一 甲方將自己擁有的車牌號為貴eu1738 發動機號 b4be34438 車架號 ls5a2abexbb123872和長安sc7161h計程車一輛夜班租給乙方使用 管理和經營,為保障甲乙雙方的合法權益和合...