<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 汽車電子 > 設(shè)計應(yīng)用 > 基于CPLD/FPGA的出租車計費器系統(tǒng)的設(shè)計實現(xiàn)

          基于CPLD/FPGA的出租車計費器系統(tǒng)的設(shè)計實現(xiàn)

          ——
          作者:林愿 時間:2007-08-27 來源:中電網(wǎng) 收藏
          1 引言

            隨著EDA技術(shù)的發(fā)展及大規(guī)??删幊踢壿嬈骷?a class="contentlabel" href="http://www.ex-cimer.com/news/listbylabel/label/CPLD">CPLD的出現(xiàn),電子系統(tǒng)的設(shè)計技術(shù)和工具發(fā)生了巨大的變化,通過EDA技術(shù)對/FP-GA編程開發(fā)產(chǎn)品,不僅成本低、周期短、可靠性高,而且可隨時在系統(tǒng)中修改其邏輯功能。本文介紹了一種以Altera公司可編程邏輯器件EP1K30TC144-3為控制核心,附加一定外圍電路組成的出租車系統(tǒng)。

            2 系統(tǒng)總體結(jié)構(gòu)

            基于的出租車的組成如圖1所示。各部分主要功能包括:信號輸入模塊對車輪傳感器傳送的脈沖信號進行計數(shù)(每轉(zhuǎn)一圈送一個脈沖),并以高低脈沖模擬出租汽車啟動、停止、暫停、加速按鈕,具有輸入信號作用;數(shù)據(jù)轉(zhuǎn)換模塊將計費模塊輸出的車費和路程轉(zhuǎn)換成4位的十進制數(shù)據(jù);譯碼/動態(tài)掃描模塊將路程與費用的數(shù)值譯碼后用動態(tài)掃描的方式驅(qū)動數(shù)碼管;數(shù)碼管顯示模塊將公里數(shù)和計費金額均用4位LED數(shù)碼管顯示(2位整數(shù),2位小數(shù))。

          基于CPLD的出租車計費器的組成

            3 單元模塊設(shè)計

            3.1 信號輸入模塊

            該模塊主要實現(xiàn)計費功能和現(xiàn)場模擬功能。計費標(biāo)準(zhǔn)為:對車輪傳感器傳送的脈沖信號進行計數(shù)(每轉(zhuǎn)一圈傳送一個脈沖),按行駛里程 計費,起步價為7.00元,并在車行3 km后按2.40元/km計費,當(dāng)達到或超過20元時,每公里加收50%的車費,車停止不計費。并以高低脈沖模擬出租汽車啟動、停止、暫停、加速按鈕,具有輸入信號的作用。

            該模塊的時序仿真圖如圖2所示。圖中的stop下降沿到來時系統(tǒng)不計費,車費為“0”,路程為“0”,起步價為7.00元,在車行3 km(圖中300為3 km。因為后面有2位小數(shù))后按2.40元/km計費,當(dāng)計費器達到或超過20元時,每公里加收50%(即按3.60元/km)的車費。

            3.2 數(shù)據(jù)轉(zhuǎn)換模塊

            數(shù)據(jù)轉(zhuǎn)換模塊是一個模為10、步長可變的加法計數(shù)器,可將計費模塊輸出的車費和路程轉(zhuǎn)換成4位的十進制數(shù)。該模塊通過開關(guān)量預(yù)置步長,當(dāng)超過一定預(yù)置參數(shù)時改變步長。計費模塊也采用非壓縮BCD碼,但因步長不為1,所以在做非壓縮BCD加法時必須調(diào)整,否則可能導(dǎo)致在超過或未超過預(yù)置參數(shù)時出現(xiàn)超程錯誤。這里采用模仿微機的AF標(biāo)志位,在其設(shè)立一個半進位標(biāo)志,當(dāng)累加和大于9或半進位標(biāo)志為“1”時,對其累加和調(diào)整。轉(zhuǎn)換模塊的時序仿真圖如圖3所示,可見能將路程和車費轉(zhuǎn)換為4位的十進制數(shù),便于8位數(shù)碼管顯示。

          時序仿真圖

            3.3 顯示模塊

            顯示模塊是由七段LED數(shù)碼管譯碼和動態(tài)掃描顯示兩部分組成。采用的是共陰極七段數(shù)碼管,根據(jù)十六進制數(shù)和七段顯示段碼表的對應(yīng)關(guān)系,其中要求路程和車費都要用2位小數(shù)點來表示,所以須設(shè)置一個控制小數(shù)點的變量,即程序中的dp。這段程序所示的是在數(shù)碼管的第二、第六個后面顯示小數(shù)點,實現(xiàn)了路程和車費都用2位小數(shù)點表示的功能。要注意的是如果選擇的掃描頻率不合適,可能會出現(xiàn)小數(shù)點閃動的情況。但只要掃描頻率不小于24 Hz,人眼就感覺不到顯示器的閃爍。本系統(tǒng)采用36 Hz的掃描頻率,掃描脈沖由相應(yīng)的外圍電路提供。七段數(shù)碼管顯示模塊的時序如圖4所示。

          時序

            數(shù)碼管控制及譯碼顯示模塊將十進制的輸入信號用七段數(shù)碼管顯示,由七段發(fā)光二極管組成數(shù)碼顯示器,利用字段的不同組合??煞謩e顯示0~9十個數(shù)字。本設(shè)計中,要求輸出的段信號為低電平有效。

            4 系統(tǒng)仿真、綜合、下載

            仿真是EDA技術(shù)的重要組成部分,也是對設(shè)計的電路進行功能和性能測試的有效手段。EDA工具提供了強大且與電路實時行為相吻合的精確硬件系統(tǒng)測試工具。在建立了波形文件、輸入信號節(jié)點、波形參數(shù)、加輸入信號激勵電平并存盤之后,選擇主菜單“MAX+plusII”中的仿真器項“Simulator”,彈出對話框之后單擊“Start”進行仿真運算,完成之后就可以看到時序波形。圖5為總電路的時序圖。

            最終的電路設(shè)計完成后,若總體電路編譯無錯,且時序仿真成功,可進行硬件測試。將總電路下載到可編程邏輯器件中,按fit文件中自動分配引腳搭建硬件電路。系統(tǒng)頂層原理圖如圖6所示。

          系統(tǒng)頂層原理圖

            打開電源,數(shù)碼管有正確的數(shù)字顯示,操作運行實驗結(jié)果完全符合要求。查看報告文件可得到器件引腳的利用情況及器件內(nèi)部資源的使用情況,通過更換適當(dāng)?shù)钠骷蛊滟Y源配置達到最優(yōu)。選擇器件的一般原則是系統(tǒng)所使用的資源不要超過器件資源的80%,若超過90%,系統(tǒng)功耗將增大,工作不穩(wěn)定。本設(shè)計中輸入、輸出引腳各用22個,器件資源利用率僅為62%,具有較大的擴展空間。

              5 結(jié)束語

            出租車計費器計數(shù)脈沖來自車輪轉(zhuǎn)速傳感器(干簧管),脈沖經(jīng)器件內(nèi)部整形后送至計數(shù)器;動態(tài)掃描脈沖由外圍電路給出,將單位脈沖看做行駛的單位公里數(shù),并在此基礎(chǔ)上進行計費與顯示。系統(tǒng)采用整流、濾波、降壓后的出租車電源供電。

            實驗表明:該計費器實現(xiàn)了按預(yù)置參數(shù)自動計費(最大計費金額為99.99元)、自動計程(最大計程公里數(shù)為99.99 km)等功能;能夠?qū)崿F(xiàn)起步價、每公里收費、車型及加費里程的參數(shù)預(yù)置(如:起步價7.00元;3 km后,2.40元/km;計費超過20.00元,每公里加收50%的車費等),且預(yù)置參數(shù)可調(diào)范圍廣。由于采用CPLD大規(guī)模可編程邏輯器件,整機功耗小、抗干擾能力強、系統(tǒng)穩(wěn)定、工作可靠、升級方便。另外,由于器件資源尚有較大的擴展空間,根據(jù)實際需要,系統(tǒng)可方便地增加所需功能,如通過器件內(nèi)部編程增加時鐘功能,既可為司機和乘客提供方便,又能為夜間行車自動調(diào)整收費標(biāo)準(zhǔn)提供參考;還可以通過的輸出引線控制語音器件,對顧客發(fā)出問候語,提醒其所要收繳的費用等;也可以通過的輸出引線控制打印機打印發(fā)票等?! ?nbsp;

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();