《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 出租車計(jì)價(jià)器的FPGA設(shè)計(jì)
出租車計(jì)價(jià)器的FPGA設(shè)計(jì)
摘要: 本文針對(duì)FPGA器件,,用EDA工具軟件Max+P1usⅡ,設(shè)計(jì)了一種出租車的計(jì)價(jià)器,,它可以以十進(jìn)制數(shù)的形式,,直觀地顯示出租車行駛的里程和乘客應(yīng)付的費(fèi)用,具有一定的實(shí)際應(yīng)用價(jià)值,。
Abstract:
Key words :

      FPGA(Field Programmable Gate Array,現(xiàn)場(chǎng)可編程門陣列)是一種高密度可編程邏輯器件,它支持系統(tǒng)可編程,,通過(guò)寫入不同的配置數(shù)據(jù)就可以實(shí)現(xiàn)不同的邏輯功能。使用FPGA來(lái)設(shè)計(jì)電子系統(tǒng),,具有設(shè)計(jì)周期短,、易于修改等明顯特點(diǎn),特別適合于進(jìn)行科學(xué)實(shí)驗(yàn),、樣機(jī)研制和電子產(chǎn)品的小批量生產(chǎn),。

  本文針對(duì)FPGA器件,用EDA工具軟件Max+P1usⅡ,,設(shè)計(jì)了一種出租車的計(jì)價(jià)器,,它可以以十進(jìn)制數(shù)的形式,直觀地顯示出租車行駛的里程和乘客應(yīng)付的費(fèi)用,,具有一定的實(shí)際應(yīng)用價(jià)值,。

 

  1 系統(tǒng)設(shè)計(jì)要求

  所要設(shè)計(jì)的出租車計(jì)價(jià)器,要求能夠顯示里程數(shù)和乘客應(yīng)付的費(fèi)用,,其中里程數(shù)精確到0.1km,,乘客應(yīng)付的費(fèi)用精確到O.1元,顯示必須以十進(jìn)制的形式來(lái)進(jìn)行,。出租車的計(jì)費(fèi)標(biāo)準(zhǔn)為:起步價(jià)6元,,里程在3 km以內(nèi)均為起步價(jià);里程在3~7 km之間時(shí),,每行駛1 km增加1.6元,;超過(guò)7 km時(shí),每行駛1 km增加2.4元,。

  2 系統(tǒng)設(shè)計(jì)方案

  該系統(tǒng)的設(shè)計(jì)可以采用分立元件來(lái)搭建,,也可以通過(guò)單片機(jī)來(lái)設(shè)計(jì),而使用可編程FPGA來(lái)設(shè)計(jì),,具有設(shè)計(jì)周期短,、易于修改等明顯特點(diǎn),而且隨著可編程邏輯器件和EDA軟件的飛速發(fā)展,,越來(lái)越多的電子系統(tǒng)采用FPGA來(lái)設(shè)計(jì),,一旦該系統(tǒng)達(dá)到一定的量產(chǎn)規(guī)模,也比較容易轉(zhuǎn)化為ASIC芯片設(shè)計(jì),。因此,,基于FPGA來(lái)設(shè)計(jì)一個(gè)出租車的計(jì)價(jià)器,。本系統(tǒng)在EDA工具軟件MAX+plusⅡ中,采用硬件描述語(yǔ)言Verilog HDL和原理圖設(shè)計(jì)相結(jié)合的方法,,進(jìn)行各個(gè)模塊的設(shè)計(jì),,最終將各個(gè)模塊組成整個(gè)系統(tǒng)。

  出租車能夠顯示行駛的里程,,可以通過(guò)車輪的轉(zhuǎn)動(dòng)產(chǎn)生脈沖,,然后通過(guò)計(jì)數(shù)器對(duì)脈沖進(jìn)行計(jì)數(shù)來(lái)實(shí)現(xiàn)。假設(shè)出租車每行駛2 m就產(chǎn)生一個(gè)脈沖,。由于里程數(shù)要精確到O.1 km,,也就是100m,因此每經(jīng)過(guò)50個(gè)脈沖就要輸出一個(gè)新的脈沖信號(hào),,這里稱為100 m脈沖信號(hào),作為里程計(jì)數(shù)器的時(shí)鐘信號(hào),,可以通過(guò)一個(gè)模為50的計(jì)數(shù)器進(jìn)行分頻而得到,。

  里程計(jì)數(shù)器可以用一個(gè)三位BCD碼計(jì)數(shù)器來(lái)實(shí)現(xiàn),最大能顯示到999,。以前兩位為整數(shù),,第三位為小數(shù),也就是最大能顯示里程99.9 km,,因?yàn)槌鲎廛嚩荚谑袇^(qū)和近郊活動(dòng),,三位BCD碼計(jì)數(shù)器是可以實(shí)現(xiàn)里程計(jì)數(shù)的。里程計(jì)數(shù)器每計(jì)數(shù)1 km還會(huì)周期性地輸出一個(gè)脈沖信號(hào),,稱為1 km脈沖信號(hào),,可以通過(guò)一定的組合電路來(lái)實(shí)現(xiàn)。

  系統(tǒng)最核心的部分就是計(jì)費(fèi)如何實(shí)現(xiàn),。這里就需要設(shè)計(jì)一個(gè)BCD碼的加法器,,在起步價(jià)的基礎(chǔ)上,根據(jù)行駛里程的不同,,依據(jù)計(jì)費(fèi)標(biāo)準(zhǔn),,每增加1 km加上一個(gè)單價(jià),單價(jià)的產(chǎn)生可以用Verilog HDL編寫程序來(lái)實(shí)現(xiàn),。系統(tǒng)的總體設(shè)計(jì)框圖如圖1所示,。

  2.1 單價(jià)產(chǎn)生模塊

 

  單價(jià)產(chǎn)生模塊的Verilog HDL源程序如下:

  其中輸入信號(hào)bai和shi就是里程計(jì)數(shù)器輸出的兩位整數(shù)里程,輸出信號(hào)jia就是根據(jù)計(jì)費(fèi)標(biāo)準(zhǔn)而產(chǎn)生的單價(jià),,以三位BCD碼的形式輸出,,以前兩位為整數(shù),第三位為小數(shù),。即里程在3 km以內(nèi)時(shí),,jia=0,;里程在3~7 km之間時(shí),jia=016(1.6元),;超過(guò)7 km時(shí),,jia=024(2.4元)。

 

  用Verilog HDL編寫程序來(lái)實(shí)現(xiàn)模塊功能的優(yōu)點(diǎn)在于,,當(dāng)出租車的計(jì)費(fèi)標(biāo)準(zhǔn)發(fā)生變化時(shí),,可以很容易地通過(guò)改寫程序來(lái)完成新的設(shè)計(jì),比起硬件電路的修改要方便得多,,這也是用Verilog HDL來(lái)實(shí)現(xiàn)模塊功能的重要優(yōu)勢(shì),。

 

  2.2 三位BCD碼加法器

 

  系統(tǒng)中用到了三位BCD碼加法器,可以實(shí)現(xiàn)三位十進(jìn)制數(shù)的加法運(yùn)算,。加法器輸出的結(jié)果就是乘客應(yīng)付的費(fèi)用,,這里同樣以前兩位為整數(shù),第三位為小數(shù),,也就是最大能顯示99.9元,。三位BCD碼加法器由三個(gè)一位BCD碼加法器級(jí)聯(lián)而成。

 

  一位BCD碼由四位二進(jìn)制數(shù)組成,,四位二進(jìn)制數(shù)的加法運(yùn)算會(huì)產(chǎn)生大于9的數(shù)字,,必須進(jìn)行適當(dāng)?shù)恼{(diào)整才會(huì)產(chǎn)生正確的結(jié)果。一位BCD碼加法器的Verilog HDL源程序如下:

 

  一位BCD碼加法器模塊的仿真波形和生成的模塊符號(hào)如圖2和圖3所示,。

 

 

  本模塊中A和B為輸入的一位BCD碼,,CIN為低位來(lái)的進(jìn)位信號(hào),CO是本片向高位產(chǎn)生的進(jìn)位輸出信號(hào),,SUM是兩個(gè)數(shù)相加的和,。三位BCD碼加法器由三個(gè)本模塊級(jí)聯(lián)而成,其電路原理圖和仿真波形如圖4和圖5所示,。

  2.3 緩沖器模塊

  三位BCD碼加法器輸出的結(jié)果通過(guò)緩沖器以后,,反饋到輸入端重新作為一個(gè)加數(shù),在1km脈沖信號(hào)的作用下,,每來(lái)一個(gè)脈沖就和單價(jià)相加,,形成連續(xù)累加的功能。緩沖器還有一個(gè)控制輸入端LD,,LD=O時(shí),,在1km脈沖的作用下,輸出起步價(jià)6元,;LD=1時(shí),,在1km脈沖的作用下,輸出和輸入相等,。緩沖器的Verilog HDL源程序如下:

 

2.4 整體電路

 

  將各個(gè)模塊按照輸入輸出關(guān)系連接成整體電路如圖6所示,。

  在整體電路中,,clk為最原始的時(shí)鐘輸入端,cr為異步清零端,,q[11..O]輸出里程,,jiaqian[11..O]輸出乘客應(yīng)付的費(fèi)用。

  3 系統(tǒng)仿真驗(yàn)證

  整體電路的仿真波形如圖7所示,。

  從系統(tǒng)仿真波形圖7(a)中可以看出,,當(dāng)清零端cr=O時(shí),里程數(shù)立刻清零,,乘客應(yīng)付的費(fèi)用顯示三位十進(jìn)制數(shù)060(起步價(jià)6元),,表示乘客剛上車。當(dāng)清零端cr=1時(shí),,出租車開始行進(jìn),,里程和費(fèi)用都開始計(jì)數(shù),里程顯示三位十進(jìn)制數(shù),,前兩位為整數(shù),,第三位為小數(shù),也就是每行駛100 m計(jì)一次數(shù),。

  從系統(tǒng)仿真波形圖7(b)中可以看出,行駛到3 km時(shí),,費(fèi)用由6元增加為7.6元,,行駛到4 km時(shí),費(fèi)用由7.6元增加為9.2元,,在3~7 km之間時(shí),,每行駛1 km增加1.6元。

  系統(tǒng)仿真波形圖7(c)中顯示了每行駛1 km后,,費(fèi)用逐漸累加的情況,。系統(tǒng)仿真波形完全驗(yàn)證了預(yù)期的設(shè)計(jì)要求。

  4 結(jié) 語(yǔ)

  通過(guò)仿真驗(yàn)證表明,,本文所設(shè)計(jì)的出租車計(jì)價(jià)器能夠正常地顯示行駛的里程數(shù)和乘客應(yīng)付的費(fèi)用,,符合預(yù)定的計(jì)費(fèi)標(biāo)準(zhǔn)和功能要求?;贔PGA的設(shè)計(jì),,集成度高、設(shè)計(jì)周期短,。尤其是當(dāng)計(jì)費(fèi)標(biāo)準(zhǔn)發(fā)生變化時(shí),,容易通過(guò)改寫Verilog HDL源程序來(lái)完成新的設(shè)計(jì)。

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。