基于CPLD/FPGA的出租車計費(fèi)器系統(tǒng)的設(shè)計實現(xiàn)
1 引言
本文引用地址:http://www.ex-cimer.com/article/201610/308523.htm隨著EDA技術(shù)的發(fā)展及大規(guī)??删幊踢壿嬈骷?a class="contentlabel" href="http://www.ex-cimer.com/news/listbylabel/label/CPLD">CPLD/FPGA的出現(xiàn),電子系統(tǒng)的設(shè)計技術(shù)和工具發(fā)生了巨大的變化,通過EDA技術(shù)對CPLD/FP-GA編程開發(fā)產(chǎn)品,不僅成本低、周期短、可靠性高,而且可隨時在系統(tǒng)中修改其邏輯功能。本文介紹了一種以Altera公司可編程邏輯器件EP1K30TC144-3為控制核心,附加一定外圍電路組成的出租車計費(fèi)器系統(tǒng)。
2 系統(tǒng)總體結(jié)構(gòu)
基于CPLD的出租車計費(fèi)器的組成如圖1所示。各部分主要功能包括:信號輸入模塊對車輪傳感器傳送的脈沖信號進(jìn)行計數(shù)(每轉(zhuǎn)一圈送一個脈沖),并以高低脈沖模擬出租汽車啟動、停止、暫停、加速按鈕,具有輸入信號作用;數(shù)據(jù)轉(zhuǎn)換模塊將計費(fèi)模塊輸出的車費(fèi)和路程轉(zhuǎn)換成4位的十進(jìn)制數(shù)據(jù);譯碼/動態(tài)掃描模塊將路程與費(fèi)用的數(shù)值譯碼后用動態(tài)掃描的方式驅(qū)動數(shù)碼管;數(shù)碼管顯示模塊將公里數(shù)和計費(fèi)金額均用4位LED數(shù)碼管顯示(2位整數(shù),2位小數(shù))。
3 單元模塊設(shè)計
3.1 信號輸入模塊
該模塊主要實現(xiàn)計費(fèi)功能和現(xiàn)場模擬功能。計費(fèi)標(biāo)準(zhǔn)為:對車輪傳感器傳送的脈沖信號進(jìn)行計數(shù)(每轉(zhuǎn)一圈傳送一個脈沖),按行駛里程計費(fèi),起步價為7.00元,并在車行3 km后按2.40元/km計費(fèi),當(dāng)計費(fèi)器達(dá)到或超過20元時,每公里加收50%的車費(fèi),車停止不計費(fèi)。并以高低脈沖模擬出租汽車啟動、停止、暫停、加速按鈕,具有輸入信號的作用。
該模塊的時序仿真圖如圖2所示。圖中的stop下降沿到來時系統(tǒng)不計費(fèi),車費(fèi)為“0”,路程為“0”,起步價為7.00元,在車行3 km(圖中300為3 km。因為后面有2位小數(shù))后按2.40元/km計費(fèi),當(dāng)計費(fèi)器達(dá)到或超過20元時,每公里加收50%(即按3.60元/km)的車費(fèi)。
3.2 數(shù)據(jù)轉(zhuǎn)換模塊
數(shù)據(jù)轉(zhuǎn)換模塊是一個模為10、步長可變的加法計數(shù)器,可將計費(fèi)模塊輸出的車費(fèi)和路程轉(zhuǎn)換成4位的十進(jìn)制數(shù)。該模塊通過開關(guān)量預(yù)置步長,當(dāng)超過一定預(yù)置參數(shù)時改變步長。計費(fèi)模塊也采用非壓縮BCD碼,但因步長不為1,所以在做非壓縮BCD加法時必須調(diào)整,否則可能導(dǎo)致在超過或未超過預(yù)置參數(shù)時出現(xiàn)超程錯誤。這里采用模仿微機(jī)的AF標(biāo)志位,在其設(shè)立一個半進(jìn)位標(biāo)志,當(dāng)累加和大于9或半進(jìn)位標(biāo)志為“1”時,對其累加和調(diào)整。轉(zhuǎn)換模塊的時序仿真圖如圖3所示,可見能將路程和車費(fèi)轉(zhuǎn)換為4位的十進(jìn)制數(shù),便于8位數(shù)碼管顯示。
3.3 顯示模塊
顯示模塊是由七段LED數(shù)碼管譯碼和動態(tài)掃描顯示兩部分組成。采用的是共陰極七段數(shù)碼管,根據(jù)十六進(jìn)制數(shù)和七段顯示段碼表的對應(yīng)關(guān)系,其中要求路程和車費(fèi)都要用2位小數(shù)點來表示,所以須設(shè)置一個控制小數(shù)點的變量,即程序中的dp。這段程序所示的是在數(shù)碼管的第二、第六個后面顯示小數(shù)點,實現(xiàn)了路程和車費(fèi)都用2位小數(shù)點表示的功能。要注意的是如果選擇的掃描頻率不合適,可能會出現(xiàn)小數(shù)點閃動的情況。但只要掃描頻率不小于24 Hz,人眼就感覺不到顯示器的閃爍。本系統(tǒng)采用36 Hz的掃描頻率,掃描脈沖由相應(yīng)的外圍電路提供。七段數(shù)碼管顯示模塊的時序如圖4所示。
數(shù)碼管控制及譯碼顯示模塊將十進(jìn)制的輸入信號用七段數(shù)碼管顯示,由七段發(fā)光二極管組成數(shù)碼顯示器,利用字段的不同組合??煞謩e顯示0~9十個數(shù)字。本設(shè)計中,要求輸出的段信號為低電平有效。
4 系統(tǒng)仿真、綜合、下載
仿真是EDA技術(shù)的重要組成部分,也是對設(shè)計的電路進(jìn)行功能和性能測試的有效手段。EDA工具提供了強(qiáng)大且與電路實時行為相吻合的精確硬件系統(tǒng)測試工具。在建立了波形文件、輸入信號節(jié)點、波形參數(shù)、加輸入信號激勵電平并存盤之后,選擇主菜單“MAX+plusII”中的仿真器項 “Simulator”,彈出對話框之后單擊“Start”進(jìn)行仿真運(yùn)算,完成之后就可以看到時序波形。圖5為總電路的時序圖。
最終的電路設(shè)計完成后,若總體電路編譯無錯,且時序仿真成功,可進(jìn)行硬件測試。將總電路下載到可編程邏輯器件中,按fit文件中自動分配引腳搭建硬件電路。系統(tǒng)頂層原理圖如圖6所示。
打開電源,數(shù)碼管有正確的數(shù)字顯示,操作運(yùn)行實驗結(jié)果完全符合要求。查看報告文件可得到器件引腳的利用情況及器件內(nèi)部資源的使用情況,通過更換適當(dāng)?shù)钠骷蛊滟Y源配置達(dá)到最優(yōu)。選擇器件的一般原則是系統(tǒng)所使用的資源不要超過器件資源的80%,若超過90%,系統(tǒng)功耗將增大,工作不穩(wěn)定。本設(shè)計中輸入、輸出引腳各用22個,器件資源利用率僅為62%,具有較大的擴(kuò)展空間。
5 結(jié)束語
硬件設(shè)計說明本次設(shè)計的出租車計費(fèi)器計數(shù)脈沖CP來自車輪轉(zhuǎn)速傳感器(干簧管),脈沖經(jīng)器件內(nèi)部整形后送計數(shù)器;動態(tài)掃描脈沖由外圍電路給出;系統(tǒng)使用整流、濾波、降壓后的出租車電源供電;由于CPLD/FPGA的驅(qū)動能力有限,為了增強(qiáng)數(shù)碼管的亮度,提高系統(tǒng)的可靠性,設(shè)計中在LED驅(qū)動和位驅(qū)動上分別增加了電流驅(qū)動器件ULN2803和2SCl015?,F(xiàn)場實驗表明:該計費(fèi)器實現(xiàn)了按預(yù)制參數(shù)自動計費(fèi)(最大計費(fèi)金額為999.9元)、自動計程(最大計程公里數(shù)為999.9公里)等功能;能夠?qū)崿F(xiàn)起步價、每公里收費(fèi)、車型及加費(fèi)里程的參數(shù)預(yù)制(如:起步價5.00元;3公里后,1.20元/公里;計費(fèi)超過15.00元,每公里加收50%的車費(fèi)等),且預(yù)置參數(shù)可調(diào)范圍大。由于采用了CPLD/FPGA大規(guī)??删幊踢壿嬈骷麢C(jī)功耗小、抗干擾能力強(qiáng)、系統(tǒng)穩(wěn)定、工作可靠、升級方便。另外,根據(jù)實際需要,系統(tǒng)可方便地增加以下功能:①通過芯片內(nèi)部編程增加時鐘功能(器件內(nèi)部資源足夠),既可為司機(jī)和乘客提供方便,又能為夜間行車自動調(diào)整收費(fèi)標(biāo)準(zhǔn)提供參考;②用CPLD/FPGA的輸出引線控制語音芯片,可向乘客發(fā)出問候語、提醒乘客告訴司機(jī)所要到達(dá)的地點、報出應(yīng)收繳的費(fèi)用等。
評論