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