一種出租車(chē)計價(jià)器的FPGA設計方案及應用
O 引 言
FPGA(Field Programmable Gate Array,現場(chǎng)可編程門(mén)陣列)是一種高密度可編程邏輯器件,它支持系統可編程,通過(guò)寫(xiě)入不同的配置數據就可以實(shí)現不同的邏輯功能。使用FPGA來(lái)設計電子系統,具有設計周期短、易于修改等明顯特點(diǎn),特別適合于進(jìn)行科學(xué)實(shí)驗、樣機研制和電子產(chǎn)品的小批量生產(chǎn)。
本文針對FPGA器件,用EDA工具軟件Max+P1usⅡ,設計了一種出租車(chē)的計價(jià)器,它可以以十進(jìn)制數的形式,直觀(guān)地顯示出租車(chē)行駛的里程和乘客應付的費用,具有一定的實(shí)際應用價(jià)值。
1 系統設計要求
所要設計的出租車(chē)計價(jià)器,要求能夠顯示里程數和乘客應付的費用,其中里程數精確到0.1km,乘客應付的費用精確到O.1元,顯示必須以十進(jìn)制的形式來(lái)進(jìn)行。出租車(chē)的計費標準為:起步價(jià)6元,里程在3 km以?xún)染鶠槠鸩絻r(jià);里程在3~7 km之間時(shí),每行駛1 km增加1.6元;超過(guò)7 km時(shí),每行駛1 km增加2.4元。
2 系統設計方案
該系統的設計可以采用分立元件來(lái)搭建,也可以通過(guò)單片機來(lái)設計,而使用可編程FPGA來(lái)設計,具有設計周期短、易于修改等明顯特點(diǎn),而且隨著(zhù)可編程邏輯器件和EDA軟件的飛速發(fā)展,越來(lái)越多的電子系統采用FPGA來(lái)設計,一旦該系統達到一定的量產(chǎn)規模,也比較容易轉化為ASIC芯片設計。因此,基于FPGA來(lái)設計一個(gè)出租車(chē)的計價(jià)器。本系統在EDA工具軟件MAX+plusⅡ中,采用硬件描述語(yǔ)言Verilog HDL和原理圖設計相結合的方法,進(jìn)行各個(gè)模塊的設計,最終將各個(gè)模塊組成整個(gè)系統。
出租車(chē)能夠顯示行駛的里程,可以通過(guò)車(chē)輪的轉動(dòng)產(chǎn)生脈沖,然后通過(guò)計數器對脈沖進(jìn)行計數來(lái)實(shí)現。假設出租車(chē)每行駛2 m就產(chǎn)生一個(gè)脈沖。由于里程數要精確到O.1 km,也就是100m,因此每經(jīng)過(guò)50個(gè)脈沖就要輸出一個(gè)新的脈沖信號,這里稱(chēng)為100 m脈沖信號,作為里程計數器的時(shí)鐘信號,可以通過(guò)一個(gè)模為50的計數器進(jìn)行分頻而得到。
里程計數器可以用一個(gè)三位BCD碼計數器來(lái)實(shí)現,最大能顯示到999。以前兩位為整數,第三位為小數,也就是最大能顯示里程99.9 km,因為出租車(chē)都在市區和近郊活動(dòng),三位BCD碼計數器是可以實(shí)現里程計數的。里程計數器每計數1 km還會(huì )周期性地輸出一個(gè)脈沖信號,稱(chēng)為1 km脈沖信號,可以通過(guò)一定的組合電路來(lái)實(shí)現。
系統最核心的部分就是計費如何實(shí)現。這里就需要設計一個(gè)BCD碼的加法器,在起步價(jià)的基礎上,根據行駛里程的不同,依據計費標準,每增加1 km加上一個(gè)單價(jià),單價(jià)的產(chǎn)生可以用Verilog HDL編寫(xiě)程序來(lái)實(shí)現。系統的總體設計框圖如圖1所示。
2.1 單價(jià)產(chǎn)生模塊
單價(jià)產(chǎn)生模塊的Verilog HDL源程序如下:
其中輸入信號bai和shi就是里程計數器輸出的兩位整數里程,輸出信號jia就是根據計費標準而產(chǎn)生的單價(jià),以三位BCD碼的形式輸出,以前兩位為整數,第三位為小數。即里程在3 km以?xún)葧r(shí),jia=0;里程在3~7 km之間時(shí),jia=016(1.6元);超過(guò)7 km時(shí),jia=024(2.4元)。
用Verilog HDL編寫(xiě)程序來(lái)實(shí)現模塊功能的優(yōu)點(diǎn)在于,當出租車(chē)的計費標準發(fā)生變化時(shí),可以很容易地通過(guò)改寫(xiě)程序來(lái)完成新的設計,比起硬件電路的修改要方便得多,這也是用Verilog HDL來(lái)實(shí)現模塊功能的重要優(yōu)勢。
評論