基于CPLD的出租車計費器系統(tǒng)的研究與設(shè)計
引言
隨著科學(xué)技術(shù)的發(fā)展,出租車計費器也經(jīng)歷了一個從低級到高級的發(fā)展階段。傳統(tǒng)的計費器一般由單片機實現(xiàn),它有諸如硬件電路復(fù)雜,外圍可擴展的資源有限,可靠性低,功能升級繁瑣,需要硬件重組和軟件更新同步進(jìn)行,成本高等缺點。而用戶對計費器的要求越來越高,對于出租車計費器而言,用戶不僅要求其性能穩(wěn)定,計費準(zhǔn)確,有防作弊功能,同時還要求其具有車票打印、刷卡付費、語音播報提示、電腦串行通信及稅控等功能。由于具體情況不同,不同國家和地區(qū)的出租車收費方式存在差異,即使相同地區(qū),不同車型的出租車收費方式也是有差別的。傳統(tǒng)的單片機已經(jīng)很難滿足這些越來越高的功能和性能上的要求虬為此,我們設(shè)計了一款以可編程邏輯器件(CPLD)為設(shè)計載體,以硬件描述語言(VHDL)為主要表達(dá)方式,以QuartusII9.0開發(fā)軟件為設(shè)計工具的出租車計費器。這種計費器在實際中不僅成本低、周期短,而且具有設(shè)計靈活、修改方便、易于調(diào)試、系統(tǒng)可靠性高等一系列優(yōu)點。1系統(tǒng)功能描述不同區(qū)域的出租車計費標(biāo)準(zhǔn)不盡相同,對于本文以基于CPLD的方式設(shè)計的計費器,如果要適用某個區(qū)域的出租車,只需要修改計費標(biāo)準(zhǔn)就可以了,靈活方便而容易實現(xiàn)。本計費器能夠?qū)崿F(xiàn)的功能主要包括自動顯示路程和自動計費。具體要求如下:
(1)實現(xiàn)計費功能。按行駛里程計費,起步價為7.00元,并在車行駛3km后按1.2元/km計費;當(dāng)計費器達(dá)到或超過20元時,每千米加收50%的車費;車停止和暫停時不計費。
⑵現(xiàn)場模擬汽車的啟動、停止、暫停和換擋等狀態(tài)。
(3)設(shè)計數(shù)碼管動態(tài)掃描電路,將車費和路程顯示出來,各有兩位小數(shù)o
2系統(tǒng)總體設(shè)計
基于CPLD的出租車計費系統(tǒng)可分為三大模塊,即外部輸入模塊、控制模塊和譯碼顯示模塊。各部分主要功能如下:數(shù)模塊、計費模塊等子模塊組成。計費時鐘脈沖信號模塊提外部輸入模塊對車輪傳感器傳送的脈沖信號進(jìn)行計數(shù)(每千米送1000個脈沖),并用高低脈沖模擬出租車的啟動、停止、暫停和擋位輸入等。控制模塊是三大模塊中的核心模塊,它實現(xiàn)了出租車的計費和路程的計數(shù),并且通過不同的擋位控制車速。譯碼顯示模塊則將車費和行駛的里程由十進(jìn)制轉(zhuǎn)換成4位的十進(jìn)制,譯碼后用動態(tài)掃描的方式驅(qū)動數(shù)碼管將車費和行駛的里程數(shù)實時顯示(均為兩位整數(shù)、兩位小數(shù))。
三大模塊相互依賴,相互配合,協(xié)調(diào)工作,最終實現(xiàn)出租車計費器系統(tǒng)的功能。其系統(tǒng)總體設(shè)計框圖如圖1所示。
圖1 出租車計費器系統(tǒng)總體設(shè)計框圖
3單元模塊設(shè)計
此計費器系統(tǒng)采用自頂向下、模塊化設(shè)計的理念。整個系統(tǒng)的核心模塊有兩個,分別為控制模塊(taxi)和譯碼顯示模塊(decoder)。最底層子模塊用VHDL編寫,在QuartusII9.0環(huán)境下對每個底層模塊程序進(jìn)行編寫、編譯和仿真。最后再將各個模塊連接起來,用圖形法逐級形成頂層模塊,最終形成的系統(tǒng)頂層原理圖如圖2所示。
3.1taxi模塊
taxi模塊由計費時鐘脈沖信號模塊、控制模塊、里程計數(shù)模塊、計費模塊等子模塊組成。計費時鐘脈沖信號模塊提供基本的時鐘標(biāo)準(zhǔn)給里程計數(shù)子模塊和計費子模塊使用??刂颇K是系統(tǒng)的核心部分,根據(jù)啟動信號(start)、停止信號(stop)、暫停信號(pause)和擋位控制(speedup)等信號對計費器和里程計數(shù)器的狀態(tài)進(jìn)行控制。啟動信號為一個脈沖觸發(fā)信號,當(dāng)它為一個脈沖時,表示汽車已經(jīng)啟動,并根據(jù)車速的選擇和基本車速發(fā)出響應(yīng)頻率的脈沖(計費脈沖)開始實現(xiàn)路程的計數(shù)和車費,同時顯示路程計數(shù)和車費的起步價;當(dāng)停止信號為高電平時,表示汽車熄火,同時停止發(fā)出脈沖,此時車費和路程計數(shù)清零;當(dāng)暫停信號為高電平時,表示汽車暫停并停止發(fā)出脈沖,此時車費和路程的計數(shù)暫停;擋位控制信號用來改變車速,不同的擋位對應(yīng)著不同的車速,同時路程計數(shù)的速度也不同。里程計數(shù)模塊根據(jù)計費脈沖信號的輸入實現(xiàn)實時里程計數(shù),其計數(shù)量程為99.99km。計費模塊根據(jù)脈沖輸入實現(xiàn)實時計費功能,其計費量程為99.99元。
3.2decoder譯碼和顯示模塊
顯示模塊由七段LED數(shù)碼管譯碼和動態(tài)掃描顯示兩部分組成,采用的是共陰極七段數(shù)碼管。根據(jù)十六進(jìn)制數(shù)和七段顯示段碼表的對應(yīng)關(guān)系,其中要求路程和車費都要用2位小數(shù)點來表示,所以在程序中設(shè)置了一個控制小數(shù)點的變量%。在顯示時需要注意的是,如果選擇的掃描頻率不合適,可能會出現(xiàn)數(shù)字和小數(shù)點閃動的情況。在本設(shè)計中,進(jìn)行譯碼的時鐘頻率必須比汽車的計費時鐘高得多才能實時顯示出車費和路程的變化,這里采用時鐘頻率為20MHz可取得較好的效果。
4系統(tǒng)調(diào)試和仿真
系統(tǒng)調(diào)試是分模塊進(jìn)行的,即先把每一模塊的功能調(diào)試完成后,再把整個系統(tǒng)連接起來進(jìn)行調(diào)試。系統(tǒng)仿真是EDA技術(shù)的重要組成部分,也是對設(shè)計的電路進(jìn)行功能和性能測試的有效手段。本設(shè)計利用QuartusII9.0自帶的仿真工具對每個模塊分別進(jìn)行了仿真。限于篇幅,此處只給出核心模塊taxi的仿真,其結(jié)果如圖3所示。
觀察仿真波形可知,當(dāng)啟動鍵(start)為一個脈沖時,表示汽車已啟動,車費(money)顯示起步價7.00元,同時路程(distance)隨著計費脈沖開始計數(shù);當(dāng)停止鍵(stop)為1時,表示汽車熄火停止,車費(money)和路程(distance)均為0;當(dāng)暫停鍵(pause)為1時,車費和路程停止計數(shù);當(dāng)擋位分別取0、1、2、3時,路程的計數(shù)逐漸加快,表示車速逐漸加快。在路程超過3km后車費按照設(shè)定標(biāo)準(zhǔn)逐步遞增。仿真圖結(jié)果與期望結(jié)果相符,實現(xiàn)了出租車計費器的功能。最終的電路設(shè)計完成后,若總體電路編譯無錯,且時序仿真成功,即可進(jìn)行硬件測試。
5結(jié)論
本文介紹了一種全新的出租車計費器系統(tǒng)的CPLD的設(shè)計方法。實驗表明,該計費器實現(xiàn)了預(yù)置參數(shù)的自動計費和自動記程等功能,且預(yù)置參數(shù)的可調(diào)范圍廣如果將該設(shè)計結(jié)合到實際應(yīng)用中,那么只需要改變設(shè)計中的計費標(biāo)準(zhǔn)就可以了,升級方便。設(shè)計中采用了大規(guī)??删幊踢壿嬈骷?,使系統(tǒng)整體具有抗干擾能力強、功耗小、系統(tǒng)穩(wěn)定、工作可靠等優(yōu)點叫此外,從系統(tǒng)綜合后生成的報告可知器件資源尚有較大擴展空間,故可根據(jù)實際需要擴展一些功能。比如,通過器件內(nèi)部編程增加時間顯示功能;還可以通過CPLD的輸出弓線控制打印機打印發(fā)票;也可以通過CPLD的輸出弓線控制語音器件,對顧客發(fā)出問候語,提醒其所要收繳的費用等。