基于FPGA出租車計(jì)費(fèi)器設(shè)計(jì)報(bào)告(verilog)_第1頁
基于FPGA出租車計(jì)費(fèi)器設(shè)計(jì)報(bào)告(verilog)_第2頁
基于FPGA出租車計(jì)費(fèi)器設(shè)計(jì)報(bào)告(verilog)_第3頁
基于FPGA出租車計(jì)費(fèi)器設(shè)計(jì)報(bào)告(verilog)_第4頁
基于FPGA出租車計(jì)費(fèi)器設(shè)計(jì)報(bào)告(verilog)_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、 出租車計(jì)費(fèi)器一 實(shí)驗(yàn)任務(wù)及要求1. 能實(shí)現(xiàn)計(jì)費(fèi)功能,計(jì)費(fèi)標(biāo)準(zhǔn)為:按行駛里程收費(fèi),起步費(fèi)為10.00元,并在車行3公里后再按2元/公里,當(dāng)計(jì)費(fèi)器計(jì)費(fèi)達(dá)到或超過一定收費(fèi)(如20元)時(shí),每公里加收50%的車費(fèi),車停止不計(jì)費(fèi)。2. 實(shí)現(xiàn)預(yù)置功能:能預(yù)置起步費(fèi)、每公里收費(fèi)、車行加費(fèi)里程。3. 實(shí)現(xiàn)模擬功能:能模擬汽車啟動(dòng)、停止、暫停、車速等狀態(tài)。4. 設(shè)計(jì)動(dòng)態(tài)掃描電路:將車費(fèi)顯示出來,有兩位小數(shù)。5. 用VHDL語言設(shè)計(jì)符合上述功能要求的出租車計(jì)費(fèi)器,并用層次化設(shè)計(jì)方法設(shè)計(jì)該電路。6. 各計(jì)數(shù)器的計(jì)數(shù)狀態(tài)用功能仿真的方法驗(yàn)證,并通過有關(guān)波形確認(rèn)電路設(shè)計(jì)是否正確。7. 完成電路全部設(shè)計(jì)后,通過系統(tǒng)實(shí)驗(yàn)箱

2、下載驗(yàn)證設(shè)計(jì)的正確性。計(jì)費(fèi)器按里程收費(fèi),每100米開始一次計(jì)費(fèi)。各模塊功能如下:(1) 車速控制模塊當(dāng)起停鍵為啟動(dòng)狀態(tài)時(shí)(高電平),模塊根據(jù)車速選擇和基本車速發(fā)出響應(yīng)頻率的脈沖驅(qū)動(dòng)計(jì)費(fèi)器和里程顯示模塊進(jìn)行計(jì)數(shù);當(dāng)處于停止?fàn)顟B(tài)時(shí)暫停發(fā)出脈沖,此時(shí)計(jì)費(fèi)器和里程顯示模塊相應(yīng)的停止計(jì)數(shù)。(2) 里程動(dòng)態(tài)顯示模塊其包括計(jì)數(shù)車速控制模塊發(fā)出的脈沖以及將計(jì)數(shù)顯示動(dòng)態(tài)顯示出來,每來一個(gè)脈沖里程值加0.1(控制器每發(fā)一個(gè)脈沖代表運(yùn)行了0.1公里)。(3) 計(jì)費(fèi)動(dòng)態(tài)顯示模塊其初值為10元,當(dāng)里程超過3公里后才接受計(jì)數(shù)車速控制模塊發(fā)出的脈沖的驅(qū)動(dòng),并且計(jì)數(shù)顯示動(dòng)態(tài)顯示出來,每來一個(gè)脈沖(代表運(yùn)行了0.5公里)其數(shù)值

3、加1元,當(dāng)收費(fèi)超過20時(shí)數(shù)值加1.5元。三 實(shí)驗(yàn)報(bào)告要求1. 畫出頂層原理圖;2. 用VHDL語言設(shè)計(jì)各子模塊;3. 敘述各子模塊和頂層原理圖的工作原理;4. 給出各模塊和頂層原理圖的仿真波形圖;5. 給出硬件測試流程和結(jié)果。四:設(shè)計(jì)說明:實(shí)際設(shè)計(jì)共五個(gè)模塊,分別為分頻模塊(每一百米送一個(gè)脈沖以方便計(jì)數(shù))、計(jì)算里程模塊、里程取整模塊(不足一公里的按一公里算)、計(jì)費(fèi)模塊、顯示模塊。詳細(xì)功能如下:1、 分頻模塊:假設(shè)車輪每轉(zhuǎn)一圈為2米,送一個(gè)脈沖,則需要50分頻(共100米),同理,若知道車輪直徑,即可算出分頻比2、 里程模塊:每一百米記一次數(shù),最大可以計(jì)999.9公里,精確到0.1公里。3、 取

4、整模塊:現(xiàn)實(shí)中出租車的精確度為0.1公里,計(jì)算價(jià)格的時(shí)候不足一公里的按一公里算,所以加了這一個(gè)模塊,輸出的是計(jì)算價(jià)格時(shí)的里程數(shù)。4、 計(jì)費(fèi)模塊:按行駛里程收費(fèi),起步費(fèi)為11.00元(包括1元得燃油附加費(fèi)),并在車行3公里后再按2元/公里,當(dāng)計(jì)費(fèi)器計(jì)費(fèi)達(dá)到或超過一定收費(fèi)(20元)時(shí),每公里加收50%的車費(fèi),車停止不計(jì)費(fèi)。5、 顯示模塊:通過動(dòng)態(tài)掃描顯示車費(fèi)和里程數(shù),將十進(jìn)制數(shù)轉(zhuǎn)化為四位十進(jìn)制數(shù)(如將9999轉(zhuǎn)化為四個(gè)9)以方便顯示設(shè)計(jì)流程圖如下50分頻器里程計(jì)算模塊計(jì)費(fèi)模塊取整模塊顯示模塊脈沖輸入流程說明:車輪每轉(zhuǎn)一圈送一個(gè)脈沖波,假設(shè)每轉(zhuǎn)一圈為2米,則經(jīng)過50分頻器后是每100米送一個(gè)脈沖到里

5、程計(jì)算模塊,里程計(jì)算模塊可以精確到0.1公里,將計(jì)算的里程數(shù)送至取整模塊進(jìn)行判斷,若小數(shù)部分不為零則整數(shù)部分加1,即不足一公里的部分按一公里計(jì)算,取整后的里程送至計(jì)費(fèi)模塊計(jì)費(fèi),同時(shí)和計(jì)算的費(fèi)用用過顯示模塊進(jìn)行轉(zhuǎn)化和顯示頂層原理圖如下:五、實(shí)驗(yàn)結(jié)果:通過maxplusII將sof文件下載到試驗(yàn)箱上,運(yùn)行正常,與實(shí)驗(yàn)?zāi)康囊恢?,可以通過調(diào)整輸入的脈沖頻率來調(diào)整計(jì)費(fèi)的速度。初始價(jià)格為11元,超過3公里每公里加收2元,價(jià)格超過20每公里3元。六、一些問題和改進(jìn):總的來說本次試驗(yàn)是順利的,過程中主要遇到了這幾點(diǎn)問題:1、剛開始沒有完全想好要用幾個(gè)模塊做,沒畫好流程圖,所以模塊數(shù)量顯得有點(diǎn)多,許多模塊顯得有

6、些不必要,如取整模塊完全可以合并到計(jì)費(fèi)模塊中。2、對(duì)其中的管腳定義太過于隨意,造成很大空間的浪費(fèi),而且在使用較早的芯片時(shí)出現(xiàn)管腳不足的現(xiàn)象,這和模塊過多也有很大關(guān)系 。一些改進(jìn)的想法:1、在本次設(shè)計(jì)中,假設(shè)車輪每轉(zhuǎn)一圈為2米,剛好50分頻,但是顯然現(xiàn)實(shí)中不會(huì)剛好每圈2米,極可能出現(xiàn)有小數(shù)的分頻,所以分頻器需要改進(jìn),或者使用其他模塊使得沒100送一個(gè)脈沖。2、將里程數(shù)送到顯示模塊時(shí),已經(jīng)是經(jīng)過取整,所以沒有小數(shù)部分,但是里程模塊的小數(shù)部分又不能和整數(shù)部分一起送到顯示模塊進(jìn)行轉(zhuǎn)化,所以需要想辦法將小數(shù)和整數(shù)部分合并且不影響取整。3、可以再加上按時(shí)間收費(fèi)的模塊以便出租車在較長時(shí)間等待的過程中也能計(jì)費(fèi)

7、附:程序清單1、module FDIV ( CLK, K);/分頻器設(shè)計(jì)input CLK ;output K ;reg12:0 count ;reg M1 ;parameter ratio=50 ;/定義分頻比為50,若是不同規(guī)格的輪胎,調(diào)整此參數(shù)always (posedge CLK)beginif (count=ratio-1) count=0 ;else count= count+1 ;if (count=0)M1 = M1;else if (count=ratio/2)M1 = M1 ;endassign K=M1 ;endmodule 2、module Mileage ( CLK,

8、RST,Mile_int,Mile_dec ) ; /里程模塊input CLK,RST ;output 12:0 Mile_int ;output3:0 Mile_dec ;/定義小數(shù)和整數(shù)的里程以便取整reg 3:0 count1 ; reg 12:0 count2 ;always (posedge CLK or posedge RST)beginif(RST)begincount1=0 ; count2=0 ; end/里程清零else if (count1=9) begin count1=0 ;count2=count2+1 ;endelsecount1 = count1+1 ;/每一

9、個(gè)脈沖小數(shù)里程加1,滿十后整數(shù)部分加1endassign Mile_dec=count1 ;assign Mile_int=count2 ;endmodule3、module quzheng ( M_int,M_dec,Mile ) ;/取整模塊input 12:0 M_int ; /輸入的里程整數(shù)input 3:0 M_dec ;/輸入的里程小數(shù)output 12:0 Mile ;reg 12:0 Mile ;always ( M_int,M_dec )beginif (M_dec !=0)Mile = M_int+1 ;/不滿一公里的,按一公里計(jì)算,即整數(shù)部分加一else Mile = M

10、_int ;/為零則整數(shù)不變endendmodule4、module Fare ( CLK,RST,Mile,T_fare ) ;/計(jì)費(fèi)模塊parameter S_price=10 , Fuel=1;/起步價(jià)10元,燃油附加費(fèi)1元input CLK,RST ;input 12:0Mile ;/取整后的里程輸入output 12:0 T_fare ;/總的車費(fèi)reg 12:0 Q1 ;always (posedge CLK or posedge RST)begin if(RST)Q1=0 ;else if(Mile=3) Q1 = S_price+Fuel ;/小于3公里,起步價(jià)11元else

11、if(Q120)Q1 = S_price+Fuel+2*(Mile-3) ;/大于11小于20元每公里加收2元elseQ1 = S_price+Fuel+3*(Mile-3) ;/大于20元每公里加收3元endassign T_fare = Q1 ;endmodule5、顯示模塊 module deceder (scan,seg7,dp,clk20mhz,money_in,distance_in); output7:0 scan; /數(shù)碼管地址選擇信號(hào)output6:0 seg7; /7段顯示控制信號(hào) output dp; /小數(shù)點(diǎn)input clk20mhz; /系統(tǒng)時(shí)鐘20MHZinput

12、 12:0 money_in; /車費(fèi)input 12:0 distance_in; /路程reg7:0scan;reg6:0seg7;reg dp;reg clk1khz; /1KHZ分頻時(shí)鐘,用于掃描數(shù)碼管地址reg3:0 data;reg3:0 m_one,m_ten,m_hun,m_tho; /車費(fèi)錢數(shù)的4位十進(jìn)制表示reg3:0 d_one,d_ten,d_hun,d_tho; /路程的4位十進(jìn)制表示reg15:0 count ;reg15:0comb1;reg3:0comb1_a,comb1_b,comb1_c,comb1_d;reg15:0 comb2;reg3:0comb2_a

13、,comb2_b,comb2_c,comb2_d;reg2:0 cnt;/1khz分頻,用于掃描數(shù)碼管地址 always(posedge clk20mhz) beginif(count=1d10000)begin clk1khz=clk1khz;count=d0;endelse begin count=count+1;end/將車費(fèi)轉(zhuǎn)化為4位十進(jìn)制數(shù) if(comb1money_in) begin if (comb1_a=d9&comb1_b=d9&comb1_c=d9)begin comb1_a=b0000; comb1_b=b0000; comb1_c=b0000; comb1_d=com

14、b1_d+1; comb1=comb1+1; end else if(comb1_a=d9&comb1_b=d9) begin comb1_a=b0000; comb1_b=b0000; comb1_c=comb1_c+1; comb1=comb1+1; end else if(comb1_a=d9) begin comb1_a=b0000; comb1_b=comb1_b+1; comb1=comb1+1; end else begincomb1_a=comb1_a+1;comb1=comb1+1; end endelse if (comb1=money_in)begin m_one=com

15、b1_a; m_ten=comb1_b; m_hun=comb1_c; m_thomoney_in) begincomb1_a=b0000;comb1_b=b0000; comb1_c=b0000; comb1_d=b0000; comb1=d0; end/將路程轉(zhuǎn)化為4位十進(jìn)制數(shù) if(comb2distance_in) begin if (comb2_a=d9&comb2_b=d9&comb2_c=d9)begin comb2_a=b0000; comb2_b=b0000; comb2_c=b0000; comb2_d=comb2_d+1; comb2=comb2+1; end else

16、if(comb2_a=d9&comb2_b=d9) begin comb2_a=b0000; comb2_b=b0000; comb2_c=comb2_c+1; comb2=comb2+1; end else if(comb2_a=d9) begin comb2_a=b0000; comb2_b=comb2_b+1; comb2=comb2+1; end else begincomb2_a=comb2_a+1;comb2=comb2+1; end endelse if (comb2=distance_in)begin d_one=comb2_a; d_ten=comb2_b; d_hun=co

17、mb2_c; d_thodistance_in) begincomb2_a=b0000;comb2_b=b0000; comb2_c=b0000; comb2_d=b0000; comb2=d0; end end /數(shù)碼管動(dòng)態(tài)掃描 always(posedge clk1khz)begincnt=cnt+1;endalways(cnt)begincase(cnt)b000:begin data=m_one;dp=d0;scan=b;endb001:begin data=m_ten;dp=d0;scan=b;endb010:begin data=m_hun;dp=d1;scan=b;endb011:begin data=m_tho;dp=d0;scan=b;endb100:begin data=d_one;dp=d0;scan=b;endb101:begin data=d_ten;dp=d0;scan=b;endb110:begin data=d_hun;dp=d1;scan=b;endb111:begin data=d_tho;dp=d0;scan=b;enddefault:begin data=bx;dp=bx;sc

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論