?? 多功能計程車計價器的設(shè)計.doc
字號:
摘要:
介紹了基于FPGA的多功能計程車計價器的電路設(shè)計。該設(shè)計采用了可編程邏輯器件FPGA的ASIC設(shè)計,并基于超高速硬件描述語言VHDL在Xilinx公司的SpartanⅡ系列的2sc200PQ208-5芯片上編程實(shí)現(xiàn)了整個系統(tǒng)的控制部分,整個自動控制系統(tǒng)由四個模塊構(gòu)成:秒分頻模塊、控制模塊、計量模塊和譯碼顯示模塊。該設(shè)計不僅僅實(shí)現(xiàn)了顯示計程車計費(fèi)的功能,其多功能表現(xiàn)在它可以通過選擇鍵選擇顯示計程車?yán)塾嬜叩目偮烦毯统丝统溯d的時間。計時、計程、計費(fèi)準(zhǔn)確可靠,應(yīng)用于實(shí)際當(dāng)中有較好的實(shí)用價值和較高的可行性。
關(guān)鍵字: 可編程邏輯器件 超高速硬件描述語言 計時 計價 計程
The design of multi-function meter of taxi
abstract :
The paper will introduce the design of multi-function meter of taxi
based on FPGA. The FPGA of Programmable Logic Devices (PLD) are used the
design is the ASIC, it is programming with VHDL in the ICs of
2sc200PQ208-5 to realize the system , the ICs is the series of SpartanⅡ of
the Xilinx Company. The auto control system is constituted of four modules
which are the frequency division modes piece 、the control modes piece、the
calculate mold piece and the piece of translation display modes .This
design can not only realized the function of normal meter ,it also can
display the diatance and time by controlling the choice key. It has good
practical value and high possibility when apply in actual.
Keywords :
PLD/FPGA VHDL time marked price log
目 錄
摘 要 …………………………………………………………………………1
關(guān)鍵字 …………………………………………………………………………1
0引 言 …………………………………………………………………………1
一、 整體方案設(shè)計 ……………………………………………………………3
1.1 設(shè)計要求及主要技術(shù)指標(biāo) ………………………………………………3
1.2 設(shè)計方案比較 …………………………………………………………3
1.3 整體設(shè)計方案的實(shí)現(xiàn) ……………………………………………………3
二、模塊的設(shè)計 …………………………………………………………………4
2.1 秒分頻模塊 ……………………………………………………………… 4
2.1.1秒分頻模塊的設(shè)計思路及原理 ……………………………………………4
2.1.2 秒分頻模塊的仿真實(shí)現(xiàn) …………………………………………………4
2.2 控制模塊模塊 ……………………………………………………………5
2.2.1控制分頻模塊的設(shè)計思路及原理 …理…理…理……理理理…………5
2.2.2 控制模塊的仿真實(shí)現(xiàn) …………………………………………………5
2.3 計量模塊 …………………………………………………………………6
2.3.1計量模塊的設(shè)計思路及原理 ………………………………………6
2.3.2計量模塊的仿真實(shí)現(xiàn) ………………………………………6
2.4 譯碼顯示模塊 ………………………………………………………………7
2.4.1譯碼顯示模塊的設(shè)計思路及原理 ………………………………………7
2.4.2 譯碼顯示模塊的仿真實(shí)現(xiàn) ………………………………………7
三、 軟件的制作 ……………………………………………………………7
四、 系統(tǒng)的測試 …………………………………………………………9
4.1 測試儀器 ………………………………………………………………9
4.2 測試方法 ………………………………………………………………9
4.1 測試結(jié)果 ………………………………………………………………9
五、 結(jié)束語 ……………………………………………………………………9
參考文獻(xiàn) ……………………………………………………………………9
附錄 …………………………………………………………………………10
0 引言
隨著我國市場經(jīng)濟(jì)的發(fā)展,交通也越來越便利,特別是計程車,以快捷、方便的特點(diǎn)早已盛行各個城市,成為城市交通的重要工具。計程車市場從90年代初的起步階段到現(xiàn)在已經(jīng)進(jìn)入了高峰期。隨著城市化水平的提高和人民生活水平的改善,計程車的服務(wù)也就顯得越來越重要。因此計程車計價器也就應(yīng)運(yùn)而生了。本設(shè)計就是針對目前計程車計價器的問題設(shè)計的一種基于可編程邏輯器件FPGA的ASIC,并用超高速硬件描述語言VHDL編程實(shí)現(xiàn)的可同時顯示金額、乘車時間、乘車總路程的“多功能”計價器。有較好的實(shí)用價值和較高的可行性。
一 整體方案設(shè)計
1.1 設(shè)計要求及主要技術(shù)指標(biāo)
實(shí)現(xiàn)計程車的計價器功能。一方面實(shí)現(xiàn)基本功能時,包括在行程中滿足3公里以內(nèi)計起步價 10 元,以后以1.6元/公里計費(fèi);處于等待的狀態(tài)下滿足2 分鐘以內(nèi)計2元,以后以1.5元/分計費(fèi)。另一方面多功能的實(shí)現(xiàn),計價器可以根據(jù)要求顯示需要的內(nèi)容,可以根據(jù)選擇鍵選擇顯示總費(fèi)用,總行程數(shù)和總乘車時間等等。設(shè)計的主要技術(shù)指標(biāo)如下:
1、計價范圍: 0~910.0元
計價分辨率: 0.1元。
2、計程范圍: 0~99公里
計價分辨率: 1公里。
3、計時范圍: 59分59秒
計時分辨率: 1秒(<1小時)
1.2 設(shè)計方案比較
方案一:用單片機(jī)實(shí)現(xiàn):通過軟件編程,仿真,調(diào)試,符合要求后將程序用編程器寫入到單片機(jī)芯片上。利用單片機(jī)的中斷響應(yīng)乘客開車或者等待的請求,進(jìn)行相應(yīng)的處理。利用寄存器存放計價器系統(tǒng)運(yùn)行狀態(tài),從而可以根據(jù)整個行程的狀態(tài)進(jìn)行計價。
方案二:用FPGA(可編程門陣列)實(shí)現(xiàn):利用硬件描述語言編程,仿真調(diào)試后下載到可編程邏輯器件(CPLD)上實(shí)現(xiàn)。可以對計程車整個過程進(jìn)行判斷、處理。整個過程完全實(shí)現(xiàn)了自動化和智能化。
比較而言,方案一的開發(fā)及制作成本較低,能較大程度地利用資源,但外圍電路較多,調(diào)試復(fù)雜,抗干擾能力差,特別對這種計程車的計價器需要長時間不間斷運(yùn)作的系統(tǒng),由于主要是軟件運(yùn)作,容易出錯,造成系統(tǒng)不穩(wěn)定。方案二將所有器件集成在一塊芯片上,體積大大減小的同時還提高了穩(wěn)定性,并且可應(yīng)用EDA軟件仿真,調(diào)試,易于進(jìn)行功能擴(kuò)展,外圍電路較少,采用硬件邏輯電路實(shí)現(xiàn),其最大的優(yōu)點(diǎn)是穩(wěn)定性好,抗干擾能力強(qiáng),非常適合作為計程車的計價器系統(tǒng)的控制核心。基于對以上各個因素的考慮,我們覺得FPGA實(shí)現(xiàn)計程車的計價器的設(shè)計更設(shè)計的要求,提升設(shè)計的可行性。因此,決定選用以FPGA為核心,用VHDL編程來實(shí)現(xiàn)計價器的設(shè)計。
1.3 整體設(shè)計方案的實(shí)現(xiàn)
多功能計程車計價器的控制系統(tǒng)以FPGA為核心控制器。如下圖
圖1.3.1所示,主要分為四個模塊。分別為:秒分頻模塊、控制模塊、計量模塊和譯碼顯示模塊。秒分頻模塊使整個系統(tǒng)的同步工作,把系統(tǒng)提供的32M的晶振頻率進(jìn)行分頻,得到我們所需要的秒信號(便于在以后的計時中用到)。控制模塊是整個系統(tǒng)的核心部分,對各個部分起到了調(diào)控的作用。對計程車的工作狀態(tài)進(jìn)行具體的定義。計量模塊也是系統(tǒng)中一個十分重要的模塊,它分為三個部分,分別為計價部分、計時部分和計程部分,是計程車計價器系統(tǒng)多功能實(shí)現(xiàn)的保證。最后一個譯碼顯示模塊作用在于把計程車的工作情況(價錢、行程數(shù)、行程時間)反饋給乘客。四個模塊有機(jī)地結(jié)合在一起,實(shí)現(xiàn)了基于FPGA的多功能計程車計價器的設(shè)計。
秒分頻模塊
控制模塊
計量模塊
計價部分
計時部分
計程部分
顯示模塊
sec
圖1.3.1 多功能計程車計價器結(jié)構(gòu)方框圖
二 模塊的設(shè)計
2.1 秒分頻模塊
要把系統(tǒng)提供的頻率為32MHz的晶振應(yīng)用與實(shí)際中,就必須對高頻率做一些處理,也就是要對它進(jìn)行分頻。分頻為我們所期望的頻率值再投于應(yīng)用中。所以這里我們就應(yīng)用到了分頻模塊。
2.1.1 秒分頻模塊的設(shè)計思路及原理
分頻模塊用于把系統(tǒng)提供的32M的晶振頻率進(jìn)行分頻,所得我們所需要的固定的頻率值,也就是系統(tǒng)中的sec信號。對它進(jìn)行32M的分頻。所以sec的頻率為:
32M Hz/ 32M = 1Hz
也就是說分頻為周期為1s的信號,且占空比為50% 。應(yīng)用于系統(tǒng)中的計時部分,和其他應(yīng)用的部分。
2.1.2 分頻模塊的仿真實(shí)現(xiàn)
由于分頻系數(shù)過大,給仿真帶來了一定的困難。所以仿真時,我們采用低一點(diǎn)的分頻數(shù)來實(shí)現(xiàn),其原理是相同的。如下圖2.2.1所示,這里采用的是八分頻,其中占空比為0.5。在程序中都可以設(shè)置需要的任意頻率值和占空比值。
圖2.1.1 分頻模塊仿真圖
2.2 控制模塊
控制模塊對整個系統(tǒng)進(jìn)行控制作用,支配系統(tǒng)的工作狀態(tài)。描述了多功能計程車計價器整個工作過程的狀態(tài)。它是計價器工作的核心。
2.2.1 控制模塊的設(shè)計思路及原理
控制模塊是整個系統(tǒng)設(shè)計的核心內(nèi)容,描述了計價器最基本的工作狀態(tài)。實(shí)現(xiàn)了對計程車的等待狀態(tài)和行進(jìn)狀態(tài)工作過程的控制。等待過程中實(shí)現(xiàn)計時三分鐘以內(nèi)不變價格,以后以分鐘的計價;行進(jìn)過程中實(shí)現(xiàn)了三公里以內(nèi)不變價格,以后每公里計價的功能。它是計程車計價器正常工作的保證。
2.2.2控制模塊的仿真實(shí)現(xiàn)
控制模塊中包括時間部分的控制和路程部分的控制。時間部分的控制除了可以對整個控制過程進(jìn)行計時以外,還表現(xiàn)在計程車處于等待狀態(tài)時先對前兩分鐘計時(此時計價2元),然后就以分鐘計時(此時1.5元/分)。其仿真圖如下2.2.1所示:
圖2.2.1 控制模塊仿真圖(時間)
路程方面的控制也不僅僅是對計程車整個行進(jìn)的過程的路程進(jìn)行計算,控制方面的作用還表現(xiàn)在當(dāng)計程車行進(jìn)的路程在三公里以內(nèi)的路程(此時計價10元)和三公里以外的路程的計算,這里以每公里為計數(shù)單位(此時計價1.6元/公里)。
圖2.2.2 控制模塊仿真圖(路程)
2.3 計量模塊
計量模塊是本系統(tǒng)中一個十分重要的部分,是計程車計價器系統(tǒng)多功能實(shí)現(xiàn)的保證。
2.3.1 計量模塊的設(shè)計思路及原理
計量模塊其實(shí)在整個系統(tǒng)中就充當(dāng)一個計算器的功能。它是計價、計時、計程功能的具體實(shí)現(xiàn)。具體如下,計價部分:由計程車的起步費(fèi)10元加上等待過程中的計費(fèi)1.5元/分,再加上行進(jìn)過程中的計費(fèi)1.6元/公里,然后再把計算出來的數(shù)分別以百元、十元、元、角的單位表示出來,送去顯示譯碼模塊;計時部分:是對乘客的乘車時間進(jìn)行計時(包括等待的時間和行進(jìn)的時間),分別以秒和分的形式送去顯示譯碼模塊,到59分59秒時自動歸零;計程部分:對當(dāng)前行進(jìn)過程中所走的公里數(shù)進(jìn)行計算,最大范圍為99公里。
同樣也送入譯碼顯示模塊。
2.3.2 計量模塊的仿真
計量模塊總共有三個部分組成,分別為計時部分、計程部分和計費(fèi)部分。所以我們就用三個仿真突來表示。先來看看計時部分和計程部分的仿真圖。因?yàn)樗麄兊奶冴P(guān)系就好像是一個十分頻。唯一不同的地方就是當(dāng)表現(xiàn)為計時時,它在59時就跳變,而在計程時,它就可以表示99了。基于同一原理,所以我們就用同一個仿真圖來表示。
圖2.3.1 計量模塊的仿真(計時部分和計程部分)
計量模塊中的計價部分實(shí)現(xiàn)的功能也不是單一的。它不僅僅要對整個過程中的價格進(jìn)行匯總,為了方便顯示,它還需要把所計價格轉(zhuǎn)換成為及個相應(yīng)位數(shù)的單個數(shù)字,從而一個一個送到七段譯碼顯示器,進(jìn)行顯示。以下面的仿真圖2.3.2為例。要把數(shù)135拆開,然后分別以百位、十位、各位的形式,分別輸出1、3、5。
圖2.3.2 計量模塊的仿真(計價部分)
2.4 譯碼顯示模塊
譯碼顯示模塊是建立在內(nèi)部系統(tǒng)和觀測人之間的橋梁。通過譯碼顯示模塊,人們才能得到想要的信息。可見,它也是系統(tǒng)中一個必不可少的部分。
2.4.1譯碼顯示模塊的設(shè)計思路及原理
這里的譯碼顯示模塊包括四個譯碼器和四個七段顯示數(shù)碼管。用于顯示需要的信息。需要說明的是它可以根據(jù)需要在價格、時間、路程三者之間互相轉(zhuǎn)換。通過對輸入模塊的選擇信號判斷,而顯示計程車運(yùn)行的狀態(tài),比如說計價多少、走了多長時間、走了多少路程等。具體的狀態(tài)轉(zhuǎn)換圖如下2.4.1。顯示內(nèi)容由一個選擇鍵來控制,發(fā)出選擇信號C,當(dāng)C=‘11’時,表示顯示乘車的時間;當(dāng)C=‘01’時,表示顯示乘車的費(fèi)用;當(dāng)C=‘11’時,表示顯示乘車的總路程。他們之間的切換同樣也是通過這個選擇鍵、選擇信號來實(shí)現(xiàn)的。
圖2.4.1 譯碼顯示模塊的狀態(tài)轉(zhuǎn)換圖
2.4.2譯碼顯示模塊的仿真
仿真圖如下圖2.4.2所示:可以看到該七段譯碼顯示器是低電平有效的。點(diǎn)亮而顯示相應(yīng)的數(shù)據(jù)。
2.4.2譯碼顯示模塊仿真圖
三 軟件的制作
我們在Windows XP
的平臺上,用Xilinx公司生產(chǎn)的Xilinx4.2的軟件進(jìn)行VHDL硬件描述語言編程實(shí)現(xiàn)控制器的功能。用來進(jìn)行系統(tǒng)測試的是清華同方股份有限公司生產(chǎn)的TPG—FPGA
TPG1AC0007實(shí)驗(yàn)箱,選用的是saprtan2系列的xc2s200—5pq208芯片燒制.
下面介紹基于EDA軟件的FPGA開發(fā)流程(VHDL是EDA軟件中的一部分):
第一步:安裝Xilinx4.2軟件和modelsim XE 5.3d仿真軟件.
第二步:在Xilinx4.2軟件進(jìn)行程序設(shè)計,新建一個工程,用硬件描述語言編程來完成所設(shè)計的實(shí)物功能.
第三步:綜合和適配.綜合過程是把軟件設(shè)計的HDL描述與硬件結(jié)構(gòu)掛鉤,是文字描述與硬件實(shí)現(xiàn)的一座橋梁.綜合就是將電路的高級語言(如行為描述)轉(zhuǎn)換成低級的,可與FPGA的基本結(jié)構(gòu)相映射的網(wǎng)表文件或程序.適配器也稱結(jié)構(gòu)綜合器,它的功能是將由綜合器產(chǎn)生的網(wǎng)表文件配置于指定的目標(biāo)器件中,使之產(chǎn)生最終的下載文件.
第四步:仿真.在編程下載前必須利用軟件工具對結(jié)構(gòu)綜合器生成的結(jié)果進(jìn)行模擬測試,就是所謂的仿真.有兩種不同級別的仿真測試,分別是時序仿真和功能仿真.
第五步:編程下載.把適配后生成的下載或配置文件,通過編程器向FPGA進(jìn)行下載,以便進(jìn)行硬件調(diào)試和驗(yàn)證.
第六步:硬件測試.將含有載入了設(shè)計的FPGA的硬件系統(tǒng)進(jìn)行統(tǒng)一測試,以便最終驗(yàn)證設(shè)計項(xiàng)目在目標(biāo)系統(tǒng)上的實(shí)際工作情況,以排除錯誤,改進(jìn)設(shè)計.
從FPGA(現(xiàn)場可編程門陣列)的實(shí)驗(yàn)箱上可以知道所設(shè)計的程序是否能實(shí)現(xiàn)我們所要的功能,最后制作電路板做出實(shí)物.程序流程圖如下圖3.1.1所示。計程車啟動時發(fā)出啟動信號,此時計量模塊中的計時部分、計價部分和計程部分同時工作。計時部分,由內(nèi)部時鐘對乘車的時間進(jìn)行計數(shù),同時計程部分開始計算路程,計價部分先判斷計程車的狀態(tài)是等待還是行進(jìn),然后分別由計時、計程部分對計價部分進(jìn)行相應(yīng)的控制,最后再將整個過程中的計價相加。由輸入選擇信號選擇顯示的內(nèi)容,是金額、乘車時間還是乘車路程。
圖3.1.1 系統(tǒng)程序流程圖
四 系統(tǒng)的測試
4.1測試儀器
Xilinx公司的SpartanⅡ系列的XC2S2005PQ-208芯片
清華同方TPG-FPGA教學(xué)實(shí)驗(yàn)箱
4.2測試方法
首先用Xilinx公司的仿真工具M(jìn)odelsim Xilinx
Edition進(jìn)行對系統(tǒng)的仿真。功能仿真用于綜合前檢查設(shè)計的邏輯功能是否符合設(shè)計要求。仿真過程中可以通過觀察檢測設(shè)計的輸入信號,輸出信號以及內(nèi)部信號以檢測設(shè)計的邏輯功能。如果仿真都通過的話就可以進(jìn)行引腳鎖定,然后下載程序,燒制出功能芯片,在實(shí)驗(yàn)箱上可以直觀的看到結(jié)果。
4.3 測試結(jié)果
從實(shí)驗(yàn)結(jié)果的仿真可以看出,系統(tǒng)完全遵照預(yù)期的結(jié)果運(yùn)行符合設(shè)計要求。需要說明的是由于分頻系數(shù)過大,給仿真帶來了一定的困難。所以仿真時,我們采用低一點(diǎn)的分頻數(shù)來實(shí)現(xiàn),其原理是相同的。整體的仿真圖如下圖4.3.1。
五 結(jié)束語
通過對系統(tǒng)的測試結(jié)果分析符合預(yù)期結(jié)果,滿足題目要求。基于FPGA所設(shè)計的多功能計程車計價器趨于簡單、開發(fā)時間短;整個控制系統(tǒng)的所需元器件少、集成度較高、所占的空間小且可靠性也很高。不僅僅實(shí)現(xiàn)了計程車計費(fèi)的功能,其多功能表現(xiàn)在它可以通過選擇鍵來選擇顯示計程車?yán)塾嬜叩目偮烦毯统丝统溯d的時間。應(yīng)用于實(shí)際當(dāng)中,比較有實(shí)用價值,可行性也較高,是個不錯的創(chuàng)意。此外,如果實(shí)現(xiàn)軟、硬件的相互結(jié)合還可以實(shí)現(xiàn)很多功能比如可以
集成計算機(jī)網(wǎng)絡(luò)、IC卡、語音報價、自動打印等新技術(shù)實(shí)現(xiàn)運(yùn)營數(shù)據(jù)存儲管理和稅費(fèi)計算控制。實(shí)現(xiàn)計價器的計費(fèi)顯示、自動打印發(fā)票、語音報價等功能一體化,有待進(jìn)一步擴(kuò)展。
參考文獻(xiàn)
[1] 高書莉、羅朝霞. 《可編程邏輯設(shè)計技術(shù)及應(yīng)用》[M].北京:人民郵電出版社,2001年(第一版)。
[2] 黃正謹(jǐn)、徐堅、章小麗等. 《CPLD系統(tǒng)設(shè)計技術(shù)入門與應(yīng)用》[M].北京:電子工業(yè)出版社,2002年(第一版)。
[3] 潘松、黃繼業(yè). 《EDA技術(shù)實(shí)用教程》[M].北京:科學(xué)出版社,2002年(第一版)。
[4] 趙俊超 《集成電路設(shè)計VHDL教程》 [M] 北京:北京希望電子出版社 2002年8月 (第一版)
附錄(程序) ---- 計程車計價器試驗(yàn)
----
*****************************************************************************************************
---- 功能:模擬實(shí)際計程車計價器功能 ----
---- 文件名: taxi.vhd
----
---- 設(shè)計者: 黃松
----
---- 說 明:
----
整個自動控制系統(tǒng)由四個模塊構(gòu)成:描分頻模塊、控制模塊、計量模塊和譯碼顯示模塊。不僅僅實(shí)現(xiàn)了計程車計價器的計價功能,還可以通過選擇信號選擇顯示計程車的行程總時間和總路程。
---- 最后修改日期:2003年7月29日
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity taxi is
Port ( clk,st,clr,d_in,choose : in std_logic;
--st:計程車啟動/等候;
--d_in:“里”輸入;--choose:選擇顯示;
--clr:清零;
--L_x:譯碼顯示;
L_1 : out std_logic_vector(6 downto 0);
L_2 : out std_logic_vector(6 downto 0);
L_3 : out std_logic_vector(6 downto 0);
L_4 : out std_logic_vector(6 downto 0) );
end taxi;
architecture Behavioral of taxi is
signal M_15,M_20,d_xx,sec,fen : std_logic;
--M_15、M_20分別表示1.5元和2元
--d_xx 表示超出基礎(chǔ)的公里數(shù)
-- fen表示分鐘位
signal L1,L2,L3,L4 : integer range 0 to 10;
signal Ll1,Ll2,Ll3,Ll4 : integer range 0 to 10;
signal Lll2,Lll3 : integer range 0 to 10;
signal Led1,Led2,Led3,Led4 :
integer range 0 to 10;
signal d : integer range 0 to 3000;
begin
*************************************
秒分頻模塊
----把系統(tǒng)提供的32MHz的頻率分頻為1Hz
*************************************
div_sec:process(clr,clk)
variable c : integer range 0 to 32000000;
begin
if clr='1' then c:=0;
elsif rising_edge(clk) then
if c<32000000 then c:=c+1;
else c:=1;
end if;
end if;
if c>16000000 then sec<='1';
else sec<='0';
end if;
end process;
*************************************
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -