国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于FPGA的出租車(chē)計(jì)費(fèi)系統(tǒng)設(shè)計(jì)

2021-07-19 22:41:52張炯陳初俠操曉思徐甫歐陽(yáng)凱
電腦知識(shí)與技術(shù) 2021年13期

張炯 陳初俠 操曉思 徐甫 歐陽(yáng)凱

摘要:該文基于FPGA芯片EP1K30QC208-2進(jìn)行了出租車(chē)計(jì)費(fèi)系統(tǒng)設(shè)計(jì)。首先從設(shè)計(jì)要求出發(fā),將出租車(chē)計(jì)費(fèi)系統(tǒng)分成多個(gè)子電路模塊并用Verilog HDL語(yǔ)言對(duì)其進(jìn)行設(shè)計(jì),然后調(diào)用已設(shè)計(jì)好的各子電路模塊采用原理圖方式進(jìn)行頂層電路設(shè)計(jì),最后將設(shè)計(jì)好的頂層電路下載到FPGA芯片中進(jìn)行硬件驗(yàn)證。實(shí)驗(yàn)結(jié)果表明,所設(shè)計(jì)的出租車(chē)計(jì)費(fèi)系統(tǒng)能動(dòng)態(tài)顯示出租車(chē)的行駛里程、等待時(shí)間和計(jì)費(fèi)金額,具有一定的實(shí)用價(jià)值。

關(guān)鍵詞:出租車(chē)計(jì)費(fèi);FPGA;Verilog HDL

中圖分類(lèi)號(hào):TP29? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A

文章編號(hào):1009-3044(2021)13-0093-03

眾所周知,出租車(chē)在我們的生活中承擔(dān)著非常重要的角色,一個(gè)具有良好性能的出租車(chē)計(jì)費(fèi)系統(tǒng)不僅有助于加強(qiáng)行業(yè)管理,還可以減少乘客與司機(jī)之間的糾紛[1]。出租車(chē)計(jì)費(fèi)系統(tǒng)可以采用模擬電路和數(shù)字電路來(lái)實(shí)現(xiàn),這種設(shè)計(jì)方法弊端是整體電路較復(fù)雜,而且出現(xiàn)故障時(shí)調(diào)試比較困難。出租車(chē)計(jì)費(fèi)系統(tǒng)也可以采用單片機(jī)來(lái)實(shí)現(xiàn)[2],但由于計(jì)費(fèi)系統(tǒng)經(jīng)常需要根據(jù)油價(jià)進(jìn)行計(jì)費(fèi)標(biāo)準(zhǔn)的相應(yīng)更改,如果采用單片機(jī),需要每次更改計(jì)費(fèi)標(biāo)準(zhǔn)后再次燒錄程序至單片機(jī),費(fèi)時(shí)費(fèi)力[3]。因此對(duì)出租車(chē)計(jì)費(fèi)系統(tǒng)的更新?lián)Q代迫在眉睫。

隨著大規(guī)??删幊踢壿嬈骷某霈F(xiàn),基于FPGA設(shè)計(jì)的出租車(chē)計(jì)費(fèi)系統(tǒng)逐漸顯示其強(qiáng)大的性能,不僅具有很高的可移植性,而且需要更改電路時(shí)非常方便,如果計(jì)費(fèi)標(biāo)準(zhǔn)變化,可以實(shí)現(xiàn)現(xiàn)場(chǎng)更新[3]。本文以現(xiàn)場(chǎng)可編程邏輯器件(FPGA)為設(shè)計(jì)載體,以硬件描述語(yǔ)言(Verilog HDL)為主要表達(dá)方式,以Quartus Ⅱ開(kāi)發(fā)軟件和ZY11EDA13BE開(kāi)發(fā)系統(tǒng)為設(shè)計(jì)工具設(shè)計(jì)了一種能動(dòng)態(tài)顯示出租車(chē)計(jì)程、計(jì)時(shí)、計(jì)費(fèi)的系統(tǒng)。

1? 出租車(chē)計(jì)費(fèi)系統(tǒng)設(shè)計(jì)要求

本文以安徽省巢湖市出租車(chē)計(jì)價(jià)標(biāo)準(zhǔn)為例來(lái)進(jìn)行設(shè)計(jì)。巢湖市出租車(chē)計(jì)價(jià)標(biāo)準(zhǔn)如下:1)出租車(chē)起步開(kāi)始計(jì)費(fèi),起步價(jià)為6元,車(chē)行駛2km以內(nèi),只收取起步價(jià)。2)當(dāng)行駛公里數(shù)超過(guò)2km而少于5km時(shí),超出2km的路程每千米收費(fèi)為1.6元。3)當(dāng)行駛公里數(shù)超過(guò)5km時(shí),超出5km的路程每千米收費(fèi)加收50%,即為2.4元。4)當(dāng)遇到紅燈或者客戶需要停車(chē)等待時(shí),1分鐘內(nèi)免費(fèi),滿1分鐘后,每分鐘收取0.2元。5)出租車(chē)夜間行駛(22:00-次日5:00)起步價(jià)、行駛公里租價(jià)加收20%夜間補(bǔ)貼。

為了方便出租車(chē)計(jì)費(fèi)系統(tǒng)的模擬,本出租車(chē)計(jì)費(fèi)系統(tǒng)除了實(shí)現(xiàn)以上計(jì)費(fèi)功能外,還包含以下要求:1)設(shè)置計(jì)費(fèi)暫停按鈕,若計(jì)費(fèi)系統(tǒng)收到暫停命令,則不計(jì)費(fèi),車(chē)費(fèi)保持不變。2)設(shè)置計(jì)費(fèi)復(fù)位按鈕,若計(jì)費(fèi)系統(tǒng)收到復(fù)位命令,則車(chē)費(fèi)清零。3)能動(dòng)態(tài)顯示出租車(chē)行駛的里程,范圍為00.0~99.0km。4)能動(dòng)態(tài)顯示等待時(shí)間,范圍為0~9min。5)能動(dòng)態(tài)顯示車(chē)費(fèi)總和,范圍為000.0~999.9元。

2? 出租車(chē)計(jì)費(fèi)系統(tǒng)總體設(shè)計(jì)方案

出租車(chē)計(jì)費(fèi)系統(tǒng)設(shè)計(jì)框圖如圖1所示。根據(jù)設(shè)計(jì)要求,將出租車(chē)計(jì)費(fèi)系統(tǒng)設(shè)計(jì)分為三部分,分別是外部輸入、控制模塊、顯示模塊[4]。外部輸入包含掃描時(shí)鐘、車(chē)輪脈沖、計(jì)時(shí)時(shí)鐘、白天信號(hào)、行駛信號(hào)、使能信號(hào)、復(fù)位信號(hào)。控制模塊包含分頻模塊、計(jì)程模塊、計(jì)時(shí)模塊、計(jì)費(fèi)模塊和轉(zhuǎn)換模塊。

3? 出租車(chē)計(jì)費(fèi)系統(tǒng)設(shè)計(jì)

本次設(shè)計(jì)采用層次化的設(shè)計(jì)方法,分底層各子模塊電路設(shè)計(jì)和頂層電路設(shè)計(jì)。設(shè)計(jì)過(guò)程中,通過(guò)Quartus Ⅱ軟件平臺(tái)利用Verilog HDL語(yǔ)言設(shè)計(jì)和原理圖設(shè)計(jì)相結(jié)合的方式來(lái)進(jìn)行,其中各子模塊電路用Verilog HDL語(yǔ)言設(shè)計(jì)方式來(lái)實(shí)現(xiàn),頂層電路通過(guò)調(diào)用各子模塊用原理圖設(shè)計(jì)方式來(lái)實(shí)現(xiàn)。

3.1? 底層電路設(shè)計(jì)

底層電路有八個(gè)子電路模塊,分別是50分頻模塊、60分頻模塊、計(jì)程模塊、計(jì)時(shí)模塊、計(jì)費(fèi)模塊、轉(zhuǎn)換模塊1、轉(zhuǎn)換模塊2和動(dòng)態(tài)顯示模塊。下面分別對(duì)它們進(jìn)行介紹。

3.1.1? 50分頻模塊

該模塊的功能是對(duì)車(chē)輪傳感器傳送的脈沖信號(hào)進(jìn)行計(jì)數(shù),每轉(zhuǎn)一圈計(jì)一次數(shù)。為方便計(jì)算我們?cè)O(shè)定車(chē)輪轉(zhuǎn)一圈為2米,轉(zhuǎn)50圈剛好為100米,即0.1公里。因此這里我們選用一個(gè)50分頻的分頻器,當(dāng)計(jì)數(shù)從0開(kāi)始計(jì)到24時(shí),輸出信號(hào)進(jìn)行翻轉(zhuǎn),其仿真波形如圖2所示。從波形可以看出,輸出信號(hào)為一個(gè)脈沖周期時(shí),剛好計(jì)數(shù)記了50次。

3.1.2? 60分頻模塊

為了便于計(jì)算出租車(chē)行駛過(guò)程中的等待時(shí)間,我們引入60分頻模塊電路,其輸入時(shí)鐘為1hz,輸出信號(hào)為60秒的周期信號(hào)。由于此分頻器的輸出信號(hào)周期為60秒,所以輸出信號(hào)每來(lái)一個(gè)脈沖剛好就是一分鐘,很好地為計(jì)時(shí)模塊服務(wù)工作。如圖3所示為60分頻模塊仿真波形圖,從波形可以看出,每輸入一個(gè)時(shí)鐘就給其進(jìn)行計(jì)數(shù),當(dāng)計(jì)數(shù)到29時(shí),輸出信號(hào)進(jìn)行翻轉(zhuǎn),剛好計(jì)數(shù)60次就可得一個(gè)完整的輸出脈沖。

3.1.3? 計(jì)程模塊

計(jì)程模塊用來(lái)計(jì)量出租車(chē)行駛的總里程,計(jì)值范圍為0-99.9km。為了設(shè)計(jì)方便,計(jì)值范圍我們?nèi)?-999,那個(gè)小數(shù)點(diǎn)我們可以從動(dòng)態(tài)顯示模塊加上,由此999就可變成99.9。如圖4所示為計(jì)程模塊仿真波形圖,復(fù)位信號(hào)rst、計(jì)程時(shí)鐘clk、使能信號(hào)en和行駛信號(hào)run為輸入信號(hào),里程信號(hào)q為輸出信號(hào)。當(dāng)復(fù)位信號(hào)rst有效時(shí)(高電平有效),總里程為0;當(dāng)使能信號(hào)en和行駛信號(hào)run有效時(shí),每來(lái)一個(gè)計(jì)程時(shí)鐘clk就累加計(jì)數(shù)一次,一直計(jì)到999;當(dāng)使能信號(hào)en無(wú)效或行駛信號(hào)run無(wú)效時(shí),不進(jìn)行計(jì)數(shù),此時(shí)計(jì)程輸出保持里程不變。

3.1.4? 計(jì)時(shí)模塊

計(jì)時(shí)模塊用來(lái)計(jì)量出租車(chē)在行駛過(guò)程中的等待時(shí)間,計(jì)值范圍為0-9分鐘。如圖5所示為計(jì)時(shí)模塊仿真波形圖,復(fù)位信號(hào)rst、計(jì)程時(shí)鐘clk、使能信號(hào)en和行駛信號(hào)run為輸入信號(hào),等待時(shí)間信號(hào)waittime為輸出信號(hào)。當(dāng)復(fù)位信號(hào)rst有效時(shí),計(jì)時(shí)為0;當(dāng)使能信號(hào)en有效而行駛信號(hào)run無(wú)效時(shí),每來(lái)一個(gè)計(jì)時(shí)時(shí)鐘clk就累加計(jì)數(shù)一次,一直計(jì)到9;當(dāng)使能信號(hào)en無(wú)效或行駛信號(hào)run有效時(shí),不進(jìn)行計(jì)數(shù),此時(shí)計(jì)時(shí)輸出保持等待時(shí)間不變。

3.1.5? 計(jì)費(fèi)模塊

計(jì)費(fèi)模塊用來(lái)計(jì)算出租車(chē)開(kāi)始運(yùn)行到結(jié)束所產(chǎn)生的總體費(fèi)用,計(jì)值范圍為0-999.9元。為了設(shè)計(jì)方便,計(jì)值范圍我們?nèi)?-9999,那個(gè)小數(shù)點(diǎn)我們可以從動(dòng)態(tài)顯示模塊加上。如圖6所示為計(jì)費(fèi)模塊仿真波形圖,復(fù)位信號(hào)rst、使能信號(hào)en、白天信號(hào)baihei、里程信號(hào)km和等待時(shí)間信號(hào)waittime為輸入信號(hào),總費(fèi)用信號(hào)costout為輸出信號(hào)。當(dāng)復(fù)位信號(hào)rst有效時(shí),總計(jì)費(fèi)為0;當(dāng)使能信號(hào)en無(wú)效時(shí),總費(fèi)用保持不變;當(dāng)使能信號(hào)en有效時(shí),總費(fèi)用會(huì)根據(jù)白天黑夜信號(hào)baihei、里程信號(hào)km和等待時(shí)間信號(hào)waittime的值而確定。例如,當(dāng)出租車(chē)在白天時(shí)分運(yùn)行時(shí),行駛公里為7km,等待時(shí)間為5分鐘,則總費(fèi)用為6+(5-2)×1.6+(7-5)×2.4+5×0.2=16.6元;當(dāng)出租車(chē)在晚上時(shí)分運(yùn)行時(shí),行駛公里為7km,等待時(shí)間為5分鐘,則總費(fèi)用為[6+(5-2)×1.6+(7-5)×2.4]×(1+0.2)+5×0.2=19.7元。從圖6可以看出,在140ns-160ns之間,仿真結(jié)果數(shù)值與理論計(jì)算值一致,說(shuō)明設(shè)計(jì)正確。

3.1.6? 轉(zhuǎn)換模塊

轉(zhuǎn)換模塊是為了把計(jì)程模塊和計(jì)費(fèi)模塊輸出的多位十進(jìn)制數(shù)轉(zhuǎn)換成便于數(shù)碼管顯示的多個(gè)一位十進(jìn)制數(shù)。如圖7所示為轉(zhuǎn)換模塊仿真波形圖,圖7(a)是計(jì)程模塊輸出里程的轉(zhuǎn)換結(jié)果,圖7(b)是計(jì)費(fèi)模塊輸出費(fèi)用的轉(zhuǎn)換結(jié)果。從7(a)可以看出,當(dāng)里程為11.2km時(shí),輸出結(jié)果為1、1、2;從7(b)可以看出,當(dāng)費(fèi)用為103.7元時(shí),輸出結(jié)果為1、0、3、7,仿真結(jié)果與設(shè)想一致。

3.1.7? 動(dòng)態(tài)顯示模塊

動(dòng)態(tài)顯示模塊通過(guò)掃描時(shí)鐘來(lái)動(dòng)態(tài)顯示出租車(chē)行駛里程數(shù)、等待時(shí)間數(shù)和總體費(fèi)用,其仿真波形如圖8所示。輸入信號(hào)clk32768hz是頻率為32768hz的掃描信號(hào);輸入信號(hào)kmbai、kmshi、kmge為出租車(chē)?yán)锍痰氖?、個(gè)位和十分位;輸入信號(hào)waittime為出租車(chē)所等待的時(shí)間;輸入信號(hào)bcd3、bcd2、bcd1、bcd0為出租車(chē)計(jì)費(fèi)的百位、十位、個(gè)位和十分位。

輸出信號(hào)sel為數(shù)碼管掃描片選信號(hào),當(dāng)sel=000時(shí),最右邊的數(shù)碼管點(diǎn)亮,此時(shí)“4”會(huì)被點(diǎn)亮,以此類(lèi)推,當(dāng)sel=111時(shí),最左邊的數(shù)碼管點(diǎn)亮,此時(shí)“1”會(huì)被點(diǎn)亮[5]。輸出信號(hào)dataout為7段數(shù)碼管的顯示結(jié)果,用8位二進(jìn)制數(shù)表示,最左邊一位用于點(diǎn)亮數(shù)碼管上的小數(shù)點(diǎn)。例如,當(dāng)sel=000時(shí),dataout=01100110,此時(shí)顯示“4”的數(shù)碼管會(huì)被點(diǎn)亮;當(dāng)sel=001時(shí),dataout=10000110,此時(shí)顯示“1.”的數(shù)碼管會(huì)被點(diǎn)亮,由于dataout的最高位為1,所以這里顯示了一個(gè)小數(shù)點(diǎn)。

3.2? 頂層電路設(shè)計(jì)

出租車(chē)頂層電路設(shè)計(jì)采用原理圖輸入方式進(jìn)行,通過(guò)調(diào)用生成的各底層子模塊電路符號(hào),并將它們做適當(dāng)連接就可實(shí)現(xiàn)頂層電路的設(shè)計(jì),其電路如圖9所示。

4? 出租車(chē)計(jì)費(fèi)系統(tǒng)的硬件驗(yàn)證

本設(shè)計(jì)選用湖北眾友科技實(shí)業(yè)股份有限公司生產(chǎn)的ZY11EDA13BE實(shí)驗(yàn)箱作為硬件驗(yàn)證平臺(tái),同時(shí)選用Altera公司的EP1K30QC208-2作為FPGA芯片。只要對(duì)出租車(chē)計(jì)費(fèi)系統(tǒng)頂層文件的輸入輸出引腳進(jìn)行鎖定,然后重新編譯并下載到FPGA芯片中,就可以進(jìn)行出租車(chē)計(jì)費(fèi)系統(tǒng)的硬件測(cè)試驗(yàn)證[6]。

硬件驗(yàn)證結(jié)果如圖10所示,(a)、(b)分別為出租車(chē)白天和夜間行駛的計(jì)費(fèi)結(jié)果。圖(a)中,出租車(chē)行駛里程為4.8km,等待時(shí)間為4分鐘,根據(jù)巢湖市出租車(chē)計(jì)費(fèi)標(biāo)準(zhǔn)可得出租車(chē)的總費(fèi)用理論值為6+(4.8-2)×1.6+4×0.2=11.28元;圖(b)中,出租車(chē)行駛里程為15.4m,等待時(shí)間為5分鐘,根據(jù)巢湖市出租車(chē)計(jì)費(fèi)標(biāo)準(zhǔn)可得出租車(chē)的總費(fèi)用理論值為[6+(5-2)×1.6+(15.4-5)×2.4]×(1+0.2)+5×0.2=43.912元。由于費(fèi)用顯示精度為0.1元,所以小數(shù)點(diǎn)后面的第二位和第三位應(yīng)省去,即費(fèi)用分別應(yīng)為11.2元、43.9元,從圖10可看出這與實(shí)驗(yàn)硬件驗(yàn)證結(jié)果一致。

5 結(jié)束語(yǔ)

本文基于FPGA芯片采用層次化的設(shè)計(jì)方法設(shè)計(jì)出租車(chē)計(jì)費(fèi)系統(tǒng)。設(shè)計(jì)過(guò)程中,首先將出租車(chē)計(jì)費(fèi)系統(tǒng)分成多個(gè)子電路模塊;然后通過(guò)Quartus Ⅱ軟件平臺(tái)利用Verilog HDL語(yǔ)言設(shè)計(jì)各子電路模塊并對(duì)其進(jìn)行仿真分析;接著把設(shè)計(jì)好的各子電路模塊生成元件符號(hào)并調(diào)用它們用原理圖設(shè)計(jì)方式設(shè)計(jì)出租車(chē)計(jì)費(fèi)系統(tǒng)頂層電路;最后把已設(shè)計(jì)好的頂層電路下載到FPGA芯片中對(duì)其進(jìn)行硬件測(cè)試驗(yàn)證。實(shí)驗(yàn)結(jié)果表明,本出租車(chē)計(jì)費(fèi)系統(tǒng)能正確的動(dòng)態(tài)顯示出租車(chē)的行駛里程、等待時(shí)間和計(jì)費(fèi)金額,設(shè)計(jì)達(dá)到預(yù)定目標(biāo)。

參考文獻(xiàn):

[1] 吳承琦,孫培生.出租汽車(chē)計(jì)價(jià)器發(fā)展歷程回顧、感悟及展望[J].中國(guó)計(jì)量,2008(3):18-21.

[2] 張立,張光新,柴磊,等.FPGA在多功能計(jì)費(fèi)器系統(tǒng)中的應(yīng)用[J].儀器儀表學(xué)報(bào),2005(S2):735-737.

[3] 任立民.基于FPGA的出租車(chē)計(jì)費(fèi)系統(tǒng)設(shè)計(jì)[J].南陽(yáng)理工學(xué)院學(xué)報(bào),2019,11(2):49-52.

[4] 陳乾君,葉冬.基于CPLD的出租車(chē)計(jì)費(fèi)器系統(tǒng)的研究與設(shè)計(jì)[J].物聯(lián)網(wǎng)技術(shù),2013,3(6):23-24,27.

[5] 陳初俠,袁濤,曾奧運(yùn),等.基于EDA技術(shù)的汽車(chē)速度表設(shè)計(jì)[J].綏化學(xué)院學(xué)報(bào),2018,38(5):149-151.

【通聯(lián)編輯:朱寶貴】

香格里拉县| 应城市| 长岛县| 石景山区| 铜川市| 边坝县| 扬中市| 泸定县| 察隅县| 若羌县| 四子王旗| 称多县| 柯坪县| 浮山县| 林口县| 方正县| 建德市| 衢州市| 南皮县| 吉林省| 丰原市| 岑溪市| 勃利县| 礼泉县| 龙口市| 霍林郭勒市| 大同市| 犍为县| 朝阳区| 西充县| 玉屏| 垫江县| 鹤岗市| 商丘市| 临武县| 巴楚县| 商都县| 万安县| 上高县| 阜平县| 元阳县|