出租車計(jì)價(jià)器的FPGA設(shè)計(jì)
O 引 言
FPGA(Field Programmable Gate Array,現(xiàn)場(chǎng)可編程門陣列)是一種高密度可編程邏輯器件,它支持系統(tǒng)可編程,通過寫入不同的配置數(shù)據(jù)就可以實(shí)現(xiàn)不同的邏輯功能。使用FPGA來設(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)制的形式來進(jìn)行。出租車的計(jì)費(fèi)標(biāo)準(zhǔn)為:起步價(jià)6元,里程在3 km以內(nèi)均為起步價(jià);里程在3~7 km之間時(shí),每行駛1 km增加1.6元;超過7 km時(shí),每行駛1 km增加2.4元。
2 系統(tǒng)設(shè)計(jì)方案
該系統(tǒng)的設(shè)計(jì)可以采用分立元件來搭建,也可以通過單片機(jī)來設(shè)計(jì),而使用可編程FPGA來設(shè)計(jì),具有設(shè)計(jì)周期短、易于修改等明顯特點(diǎn),而且隨著可編程邏輯器件和EDA軟件的飛速發(fā)展,越來越多的電子系統(tǒng)采用FPGA來設(shè)計(jì),一旦該系統(tǒng)達(dá)到一定的量產(chǎn)規(guī)模,也比較容易轉(zhuǎn)化為ASIC芯片設(shè)計(jì)。因此,基于FPGA來設(shè)計(jì)一個(gè)出租車的計(jì)價(jià)器。本系統(tǒng)在EDA工具軟件MAX+plusⅡ中,采用硬件描述語言Verilog HDL和原理圖設(shè)計(jì)相結(jié)合的方法,進(jìn)行各個(gè)模塊的設(shè)計(jì),最終將各個(gè)模塊組成整個(gè)系統(tǒng)。
出租車能夠顯示行駛的里程,可以通過車輪的轉(zhuǎn)動(dòng)產(chǎn)生脈沖,然后通過計(jì)數(shù)器對(duì)脈沖進(jìn)行計(jì)數(shù)來實(shí)現(xiàn)。假設(shè)出租車每行駛2 m就產(chǎn)生一個(gè)脈沖。由于里程數(shù)要精確到O.1 km,也就是100m,因此每經(jīng)過50個(gè)脈沖就要輸出一個(gè)新的脈沖信號(hào),這里稱為100 m脈沖信號(hào),作為里程計(jì)數(shù)器的時(shí)鐘信號(hào),可以通過一個(gè)模為50的計(jì)數(shù)器進(jìn)行分頻而得到。
里程計(jì)數(shù)器可以用一個(gè)三位BCD碼計(jì)數(shù)器來實(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),可以通過一定的組合電路來實(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編寫程序來實(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元);超過7 km時(shí),jia=024(2.4元)。
評(píng)論