基于FPGA的出租車計價系統(tǒng)設(shè)計
摘要:設(shè)計出租車計價系統(tǒng),運用自頂向下的設(shè)計思想,以芯片CycloneⅡEP2C8T144C8為設(shè)計核心,采用QuartusⅡ仿真軟件,對設(shè)計電路的各模塊及整個系統(tǒng)進行了EDA仿真驗證。結(jié)果表明,該計價系統(tǒng)具有計時、計費、計程和動態(tài)顯示的功能,符合設(shè)計要求,修改VHDL語言源程序,可完成更多的出租車計價系統(tǒng)的擴展功能。
關(guān)鍵詞:出租車計價;自頂向下;VHDL;FPGA
0 引言
隨著電子技術(shù)的發(fā)展,出租車計價器的設(shè)計也從傳統(tǒng)的全部由機械元器件組成的機械式設(shè)計到半電子式(即用電子線路代替部分機械器件的出租車計價器),再從集成電路式到目前基于FGPA芯片為核心的系統(tǒng)的設(shè)計共經(jīng)歷了四個階段,利用FPGA芯片,用較少的外部硬件和適當(dāng)?shù)能浖嗷ヅ浜希梢酝ㄟ^軟件編程來完成更多的附加功能,設(shè)計比較靈活,并且還具有功耗小,體積小、低成本、安全可靠、使用方便等優(yōu)點。因此,使用FPGA來設(shè)計出租車計價系統(tǒng)已受到人們的關(guān)注,也能更好地發(fā)揮其優(yōu)點。
本文以FPGA為設(shè)計載體,通過VHDL語言編程,采用QuartusⅡ仿真軟件,設(shè)計了一種能動態(tài)顯示出租車計時、計費、計程的系統(tǒng),具有一定的實際應(yīng)用價值。
1 出租車計價系統(tǒng)的設(shè)計要求
1.1 實現(xiàn)計費功能
車起步開始計費,首先顯示起步價(本次設(shè)計為8.0元),行程在3 km以內(nèi),按起步價收費;當(dāng)行駛超過3 km,1.6元/km,車暫時停車(如遇紅綠燈或中途暫時停車),當(dāng)?shù)却龝r間超過3 min,按1元/min收費。
1.2 實現(xiàn)顯示功能
能動態(tài)顯示出租車行駛的里程,范圍為00~99 km(考慮到出租車就在市區(qū)或近郊附近活動),同時顯示等待時間,范圍為00~59 min,顯示總計價值,范圍為00~999.9元,計價分辨率為0.1元。
2 出租車計價系統(tǒng)的設(shè)計體系
圖1為整個系統(tǒng)的頂層框圖,根據(jù)層次化設(shè)計理論,將出租車自動計價系統(tǒng)自頂向下可分為分頻模塊、控制模塊、計量模塊、譯碼和動態(tài)掃描顯示模塊。
(1)分頻模塊。通過分頻產(chǎn)生不同頻率的脈沖信號用來實現(xiàn)系統(tǒng)的計費,本次設(shè)計中通過對240 Hz的輸入脈沖進行15次,24次和240次分頻,得到16 Hz,10 Hz和1 Hz的三種頻率,分別用于1.6元,1元和0.1元的計費。
(2)計量控制模塊。計量控制模塊是出租車自動計費器系統(tǒng)的主體部分,該模塊主要完成出租車的計時、計價、計程功能。計時器的量程為59 min,滿量程自動歸零。計程器的量程為99 km,滿量程自動歸零。行程在3 km內(nèi),且等待累計時間在3 min內(nèi),起步價費為8元;3 km外以1.6元/km計費,等待累計時間超過3 min按1元/min計費。
(3)譯碼顯示模塊。該模塊經(jīng)過8選1數(shù)據(jù)選擇器將計費數(shù)據(jù)(4位BCD碼)、計時數(shù)據(jù)(2位BCD碼)、計程數(shù)據(jù)(2位BCD碼)動態(tài)顯示輸出。其中計費數(shù)據(jù)最大顯示為999.9元;計時數(shù)據(jù)最大顯示為59 min;計程數(shù)據(jù)最大顯示為99 km。
3 出租車計價系統(tǒng)的實現(xiàn)
系統(tǒng)的頂層原理圖如圖2所示,出租車計價器系統(tǒng)由主體FPGA電路taxi模塊和動態(tài)掃描顯示部分(8選1選擇器mux8_1模塊、模8計數(shù)器mo8模塊、七段數(shù)碼顯示譯碼器di_LED模塊、生成動態(tài)掃描顯示片選信號的3-8譯碼器模塊74138)組成。
3.1 系統(tǒng)各功能模塊
3.1.1 taxi模塊
Taxi模塊是系統(tǒng)中十分重要的模塊,模塊設(shè)計中,系統(tǒng)的輸入信號為clk_240(240 Hz)、計價開始信號start、等待信號stop、里程脈沖信號fin。系統(tǒng)的輸出信號有總費用數(shù)cha3(百),cha2(拾),cha1(元),cha0(角),行駛距離信號為km1,km0,等待時間信號為m1,m0。
Taxi模塊的控制過程為:start作為計費開始開關(guān),當(dāng)start為高電平時,系統(tǒng)開始跟據(jù)輸入情況計數(shù),有乘客上車并開始行駛時,fin脈沖到來,進行行駛里程計數(shù),這時的stop應(yīng)為0,中途若停車等待,就需把stop置為1,同時fin為0,進行等待計費,當(dāng)乘客下車時,直接將start置為0,系統(tǒng)停止工作。taxi模塊又可分為分頻(fenpin)、計量(jiliang)、kongzhi(控制)和計費(jifei)四個子模塊,taxi模塊的內(nèi)部結(jié)構(gòu)如圖3所示。
Fenpin模塊是將輸入端clk_240(240 Hz)的時鐘信號進行分頻,分別得到f_16(16 Hz),f_10(10 Hz),f_1(1 Hz)的信號,用于計量時的1.6元,1元,0.1元。
Jiliang模塊用來計時和計程,fin為汽車的里程脈沖信號,當(dāng)fin為高電平時,以記錄的f_1的脈沖個數(shù)作為行駛的公里里程數(shù),start是汽車計量開始信號,stop為等待信號。f_1是計量驅(qū)動信號,當(dāng)f_1的脈沖到來,如果fin=1,記錄f_1的個數(shù)(即行駛公里數(shù)),當(dāng)行駛超過3 km,ent0輸出為1。當(dāng)stop為高電平時,記錄f_1的脈沖個數(shù),60個脈沖為1 min,當(dāng)超過3 min時,ent1輸出為1。仿真波形如圖4所示。
Kongzhi模塊主要根據(jù)jiliang模塊的en1和en0的不同輸出信號選擇不同的輸出頻率供jifei模塊計費,en1=1時f=10 Hz,en0=1時f=16 Hz。
Jifei模塊實際就是一個四位十進制加法器,仿真圖形如圖5所示,在taxi模塊中,它根據(jù)不同的輸入脈沖頻率對脈沖個數(shù)進行計數(shù)。jil iang模塊每計一次數(shù),jifei模塊就實現(xiàn)16次或10次脈沖計數(shù),即實現(xiàn)超時時的1元/min,超里程時的1.6元/km的收費。
對整個taxi模塊進行仿真,結(jié)果如圖6所示,由圖中可知,當(dāng)stop為高電平時,汽車行駛了km1km0=35 km,計費cha3cha2cha1cha0為05 92,即59.2元,與8+(35-3)x 1.6=59.2元一致,圖中當(dāng)?shù)却^3 min時,價格按1元/min計費,仿真結(jié)果正確。
3.1.2 動態(tài)掃描顯示部分
此模塊包含mo8計數(shù)器、mux8_1(8選1選擇器)、di_led七段數(shù)碼顯示譯碼器3個子模塊。
mo8計數(shù)器:輸入信號clk為系統(tǒng)輸入的240 Hz基準時鐘,輸出a為模8的二進制碼。
mux8_1模塊是根據(jù)輸入信號c[2..0]的地址碼000至111分別對應(yīng)了cha3,cha2,ch1,ch0,km1,km0,min1,min0八個四位BCD碼,dp為小數(shù)點指示信號,在計費的第二位數(shù)字上帶有小數(shù)點,仿真波形如圖7所示。
di_led數(shù)碼顯示譯碼模塊,將輸入信號d[3..0]轉(zhuǎn)換為q[6..0],即g,f,e,d,c,b,a七段譯碼輸出(高電平有效),3F對應(yīng)為0,仿真波形圖如圖8所示。
由于采用動態(tài)掃描,主要是根據(jù)人視覺暫留現(xiàn)象,一般影像在人眼中保留0.1~0.5 s左右,74LS138的輸出碼依次選通8個數(shù)碼管。只要頻率夠高,依次點亮8個數(shù)碼管時,給人視覺是同時點亮。
3.2 總體電路的仿真結(jié)果
通過對整個設(shè)計系統(tǒng)的仿真分析,結(jié)果如圖9所示,輸出依次是3F 7D 27.5B 66 3F 3F 3F,其中總價格為3F7D27.5B(即67.2元),里程數(shù)為663F(即40km),等待時間為3F3F(即0 min),8+(40-3)×1.6=67.2元,仿真結(jié)果正確。
4 結(jié)語
通過仿真驗證表明,本文所設(shè)計的出租車計價系統(tǒng)能動態(tài)顯示行駛的里程、等待時間和計費數(shù)目等,符合預(yù)定的設(shè)計功能要求。但設(shè)計中對出租車里程計數(shù)精度不高,若要提高精度,需根據(jù)設(shè)計要求設(shè)置取樣里程的脈沖,在計量(jiliang)模塊的輸入頻率中要做相應(yīng)的修改,當(dāng)出租車計費標(biāo)準發(fā)生變化時,也可以通過修改VHDL源程序達到要求,另外,還可以擴展語音播報或票據(jù)打印等附加功能,此系統(tǒng)的設(shè)計體現(xiàn)了FPGA設(shè)計的自頂向下的設(shè)計思想,基于FPGA的設(shè)計靈活性高、功耗低、集成度高,具有廣闊的市場前景。