版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 電子課程設(shè)計</b></p><p> 基于Verilog的出租車計費器</p><p> 學(xué)院:電子信息工程學(xué)院</p><p><b> 目錄</b></p><p><b> 0引言</b></p><p>&
2、lt;b> 1設(shè)計任務(wù)與要求</b></p><p><b> 2總體框圖</b></p><p><b> 3器件選擇</b></p><p><b> 4功能模塊</b></p><p> 5 Verilog HDL程序</p>&
3、lt;p><b> 6功能仿真</b></p><p><b> 7硬件下載</b></p><p><b> 8總結(jié)</b></p><p> 基于Verilog_HDL的出租車計費器</p><p><b> 引言</b></p&
4、gt;<p> Verilog HDL是一種硬件描述語言(HDL:Hardware Discription Language),是一種用文本形式來描述數(shù)字系統(tǒng)硬件的結(jié)構(gòu)和行為的語言,用它可以表示邏輯電路圖、邏輯表達(dá)式,還可以表示數(shù)字邏輯系統(tǒng)所完成的邏輯功能。</p><p> Verilog HDL和VHDL是目前世界上最流行的兩種硬件描述語言,都是在20世紀(jì)80年代中期開發(fā)出來的。現(xiàn)在,隨著系
5、統(tǒng)級FPGA以及片上系統(tǒng)的出現(xiàn),軟硬件協(xié)同設(shè)計和系統(tǒng)設(shè)計變得越來越重要。傳統(tǒng)意義上的硬件設(shè)計越來越傾向于與系統(tǒng)設(shè)計和軟件設(shè)計相結(jié)合。</p><p> 隨著出租車行業(yè)的發(fā)展,對出租車計費器的要求也越來越高,用戶不僅要求計費器性能穩(wěn)定計費準(zhǔn)確,而且要求在乘坐出租車時,顯示起步價、行車?yán)锍潭糠?,由自動計費器自動記錄。安裝在與汽車輪相連接的傳感器在汽車行進(jìn)時向自動計費器發(fā)送脈沖信號,在一定的公里數(shù)內(nèi),按起步價計費;
6、超過這一里程后,自動計費器按里程計費;超過一定費用后,則則增加里程費用;如果停車等候,則不收費。</p><p><b> 設(shè)計任務(wù)與要求</b></p><p> 設(shè)計一個出租車計費器,能按路程計費,具體要求如下:</p><p> 1 、實現(xiàn)記費功能,記費標(biāo)準(zhǔn)為:按行駛里程記費,起步價為6.00元,并在3km后按1.20元/km記費,
7、當(dāng)記費器達(dá)到或超過20元時,每公里加收50%的車費,車停止和暫停時不記費。</p><p> 2、 現(xiàn)場模擬功能:能模擬汽車啟動,停車及暫停和換檔等狀態(tài)。</p><p> 3、設(shè)計動態(tài)掃描電路,將車費和里程顯示出來,各有兩位小數(shù)。</p><p><b> 二、總體框圖</b></p><p> 設(shè)計思路:假設(shè)
8、出租車有啟動鍵、暫停鍵、加速鍵和檔位鍵。</p><p> 啟動鍵為脈沖觸發(fā)信號,當(dāng)它開始發(fā)出脈沖時表示汽車啟動,并根據(jù)車速的選擇和基本車速發(fā)出相應(yīng)頻率的脈沖(計費脈沖)實現(xiàn)車費和路程的計數(shù),</p><p> 當(dāng)停止鍵為高電平時,表示汽車熄火,停止發(fā)出脈沖,此時車費和路程計數(shù)清零;</p><p> 當(dāng)暫停鍵為高電平時,表示汽車暫停并停止發(fā)出脈沖,此時車費和
9、路程計數(shù)暫停</p><p> 檔位鍵用來改變車速,不同的檔位代表不同的車速,同時路程計數(shù)的速度也不同。當(dāng)檔位鍵鍵分別取0、1、2、3時路程的計數(shù)逐漸加快,表示車速逐漸加快。</p><p> 出租車計費器分為兩大模塊即控制模塊及譯碼顯示模塊。系統(tǒng)框圖如上圖所示。控制模塊根據(jù)車速選擇和基本車速發(fā)出響應(yīng)頻率的脈沖驅(qū)動計費器和路程顯示進(jìn)行計數(shù),當(dāng)處于停止?fàn)顟B(tài)時暫停發(fā)出脈沖,此時計費器和里程
10、顯示相應(yīng)的停止計數(shù)。譯碼顯示模塊實現(xiàn)了十進(jìn)制到四位十進(jìn)制的轉(zhuǎn)換。以及車費和路程的顯示。</p><p><b> 器件選擇</b></p><p> 硬件:本實驗所使用的實驗箱是EL-EMCU-I實驗箱,它是集EDA/CPLD/FPGA和MCU的開發(fā)為一體的綜合性實驗,此實驗箱所使用芯片是Altera公司生產(chǎn)的Cyclone系列EPIC12Q240C8芯片。還用到
11、了實驗箱外圍接口電路:8段數(shù)碼管顯示單元及其周圍端口、按鍵控制單元。</p><p> 軟件:使用了Quartus II9.1(32-Bit)軟件、其軟件中所使用的芯片有Cyclone IV E:EP4CE6E22C8、Cyclone:EP1C6Q240C8。</p><p><b> 功能模塊</b></p><p><b>
12、 計費功能</b></p><p> 計費標(biāo)準(zhǔn)為:按行駛里程收費,起步費為6.00元,并在車行3千米后按1.2元/km當(dāng)計費器達(dá)到或超過20元時,每千米加收50%的車費,車停止不計費。</p><p><b> 2、實現(xiàn)預(yù)置功能</b></p><p> 能預(yù)置起步費,每千米收費,加收費</p><p>
13、; 當(dāng)啟動鍵start為高電平時,預(yù)置起步費6.00元,</p><p><b> 3、模擬功能</b></p><p> 模擬汽車啟動,停止,暫停,車速等狀態(tài)</p><p> 當(dāng)啟動鍵start為高電平時汽車啟動,開始發(fā)出脈沖,從而開始計費和路程的增加</p><p> 當(dāng)停止鍵stop為高電平時汽車熄火,
14、停止發(fā)出脈沖,車費和路程計數(shù)清零。</p><p> 當(dāng)暫停鍵pause為高電平時汽車暫停,停止發(fā)出脈沖,車費和路程暫停。</p><p> 當(dāng)檔位鍵speedup都為低電平00時,車速為1檔,每來10個脈沖路程增加10米</p><p> 當(dāng)檔位鍵speedup高位為低電平,低位為高電平即01時,車速為二檔,每來10個脈沖路程增加20米</p>
15、<p> 當(dāng)檔位鍵speedup高位為高電平,低位為低電平即10時,車速為三檔每來10個脈沖路程增加50米</p><p> 當(dāng)檔位鍵speedup都為高電平即11時,車速為四檔,每來一個脈沖路程增加10米</p><p><b> 動態(tài)掃描功能</b></p><p> 將車費和路程在數(shù)碼管上顯示出來,因為數(shù)碼管只有四位,
16、所以用開關(guān)控制車費和路程的顯示,當(dāng)開關(guān)為高電平時,數(shù)碼管顯示車費。當(dāng)開關(guān)為低電平時,數(shù)碼管顯示路程。通過位選和段選的控制將車費和路程顯示出來,車費和路程各顯示兩位小數(shù)。</p><p> 注:如果用原理圖的辦法實現(xiàn)的話,控制模塊的按鍵可以用與門或非門來實現(xiàn),預(yù)置費功能和車速功能用原理圖的話有些復(fù)雜故選用程序來實現(xiàn)。</p><p><b> 附:設(shè)計程序</b>&
17、lt;/p><p> module taxi(scan,seg7,dp,clk50mhz,start,stop,pause,speedup,a,);</p><p> output[3:0] scan; //數(shù)碼管地址選擇信號</p><p> output[6:0] seg7; ///7段顯示控制信號(abcdefg)</p>&l
18、t;p> output dp; //小數(shù)點</p><p> input clk50mhz; //系統(tǒng)時鐘</p><p> input start; //汽車起動</p><p> input stop; //汽車停止</p><p> input pause; //汽車暫停</p&
19、gt;<p> input[1:0] speedup; //擋位(4個擋位)</p><p><b> input a;</b></p><p> reg[3:0] scan;</p><p> reg[6:0] seg7;</p><p><b> reg dp;</b&
20、gt;</p><p> reg[15:0] money_reg; //車費寄存器</p><p> reg[15:0] distance_reg; //路程寄存器</p><p> reg[3:0] num; //控制車速的計數(shù)器</p><p> reg[15:0] dis; //千米計數(shù)器<
21、/p><p> reg d; //千米標(biāo)志位</p><p> reg clk1khz; //1kHz的分頻時鐘,用于掃描數(shù)碼管地址</p><p> reg[3:0] data;</p><p> reg[3:0] m_one,m_ten,m_hun,m_tho; //錢數(shù)的4位十進(jìn)制表示</p>
22、<p> reg[3:0] d_one,d_ten,d_hun,d_tho; ///路程的4位十進(jìn)制表示</p><p> reg[15:0] m_a,m_b;</p><p> reg[15:0] d_a,d_b;</p><p> reg[24:0] count,count_1;</p><p> reg[2:
23、0] cnt;</p><p><b> reg clk;</b></p><p> always @(posedge clk1khz)</p><p><b> begin</b></p><p> if(count_1=='d125)</p><p>
24、begin clk<=~clk;count_1<='d0; end</p><p><b> else</b></p><p> begin count_1<=count_1+1; end</p><p><b> end</b></p><p> always @
25、( posedge clk )</p><p><b> begin</b></p><p> if(stop) //汽車停止,計費和路程清零</p><p><b> begin </b></p><p> money_reg<='d0;</p>&l
26、t;p> distance_reg<='d0;</p><p><b> dis<='d0;</b></p><p><b> num<='d0;</b></p><p><b> end</b></p><p> el
27、se if(start) //汽車起動后,起步價為6元</p><p> begin money_reg<='d600;</p><p> distance_reg<='d0;</p><p><b> dis<='d0;</b></p><p><b>
28、 num<='d0;</b></p><p><b> end</b></p><p><b> else</b></p><p><b> begin</b></p><p> if(!start&&!speedup&
29、;&!pause&&!stop) //1擋</p><p><b> begin</b></p><p> if(num=='d9)</p><p> begin num<='d0;</p><p> distance_reg<=distance_reg
30、+1;</p><p> dis<=dis+1;</p><p><b> end</b></p><p><b> else</b></p><p> begin num<=num+1; end</p><p><b> end</b&
31、gt;</p><p> else if(!start&&speedup=='b01&&!pause&&s!top) //2擋</p><p><b> begin</b></p><p> if(num=='d9)</p><p> beg
32、in num<='d0;</p><p> distance_reg<=distance_reg+2;</p><p> dis<=dis+2;</p><p><b> end</b></p><p><b> else</b></p><p&
33、gt; begin num<=num+1; end</p><p><b> end </b></p><p> else if(!start&&speedup=='b10&&!pause&&!stop) //3擋</p><p><b> begi
34、n</b></p><p> if(num=='d9)</p><p> begin num<='d0;</p><p> distance_reg<=distance_reg+5;</p><p> dis<=dis+5;</p><p><b> e
35、nd</b></p><p><b> else</b></p><p> begin num<=num+1; end</p><p><b> end</b></p><p> else if(!start&&speedup=='b11&&
36、amp;!pause&&!stop) //4擋</p><p><b> begin</b></p><p> distance_reg<=distance_reg+1;</p><p> dis<=dis+1;</p><p> end </p>
37、<p><b> end</b></p><p> if(dis>='d100)</p><p> begin d<='d1;dis<='d0; end</p><p><b> else</b></p><p> begin d&l
38、t;='d0; end</p><p> if(distance_reg>='d300) //如果超過3km則按1.2元/km計算</p><p><b> begin </b></p><p> if(money_reg<'d2000&&d=='d1)</p>
39、;<p> begin money_reg<=money_reg+'d120; end</p><p> else if(money_reg>='d2000&&d=='d1)</p><p> begin money_reg<=money_reg+'d180; end</p><p&g
40、t;<b> end</b></p><p> //-------------------當(dāng)計費器達(dá)到20元時,每千米加收50%的車費-------------</p><p><b> end</b></p><p> //---------------------------1kHz的分頻時鐘,用于掃描數(shù)碼管地
41、址----------------------</p><p> always @(posedge clk50mhz)</p><p><b> begin</b></p><p> if(count=='d25000)</p><p><b> begin </b></p&g
42、t;<p> clk1khz<=~clk1khz;count<='d0; </p><p><b> end</b></p><p><b> else</b></p><p><b> begin </b></p><p> cou
43、nt<=count+1;</p><p><b> end</b></p><p><b> end</b></p><p> //----------------------------將車費的十進(jìn)制數(shù)轉(zhuǎn)化為4位十進(jìn)制數(shù)-----------------------</p><p>
44、 always@( money_reg )</p><p><b> begin</b></p><p> m_tho=money_reg/1000;</p><p> m_a=money_reg%1000;</p><p> m_hun=m_a/100;</p><p> m_b=mo
45、ney_reg%100;</p><p> m_ten=m_b/10;</p><p> m_one=money_reg%10;</p><p><b> end</b></p><p> //---------------------------將路程的十進(jìn)制轉(zhuǎn)化為4位十進(jìn)制數(shù)-----------------
46、------</p><p> always@( distance_reg )</p><p><b> begin</b></p><p> d_tho=distance_reg/1000;</p><p> d_a=distance_reg%1000;</p><p> d_hun=
47、d_a/100;</p><p> d_b=distance_reg%100;</p><p> d_ten=d_b/10;</p><p> d_one=distance_reg%10;</p><p><b> end</b></p><p> //-----------------
48、------------數(shù)碼管動態(tài)掃描----------------------------------</p><p> always @(posedge clk1khz)</p><p><b> begin</b></p><p> cnt<=cnt+1'd1;</p><p><b&g
49、t; end</b></p><p> always @(cnt)</p><p><b> begin</b></p><p><b> if(a)</b></p><p><b> case(cnt)</b></p><p>
50、 'b000:begin data<=m_one;dp<='d0;scan<='b1110; end</p><p> 'b001:begin data<=m_ten;dp<='d0;scan<='b1101; end</p><p> 'b010:begin data<=m_hun;dp
51、<='d1;scan<='b1011; end</p><p> 'b011:begin data<=m_tho;dp<='d0;scan<='b0111; end</p><p> // default:begin data<='bx;dp<='bx;scan<='bx;
52、end</p><p><b> endcase</b></p><p><b> else</b></p><p><b> case(cnt)</b></p><p> 'b100:begin data<=d_one;dp<='d0;sc
53、an<='b1110; end</p><p> 'b101:begin data<=d_ten;dp<='d0;scan<='b1101; end</p><p> 'b110:begin data<=d_hun;dp<='d1;scan<='b1011; end</p>
54、<p> 'b111:begin data<=d_tho;dp<='d0;scan<='b0111; end</p><p> // default:begin data<='bx;dp<='bx;scan<='bx; end </p><p><b> endcase</b
55、></p><p><b> end</b></p><p> //---------------------------------7段譯碼----------------------------------</p><p> always @(data)</p><p><b> begin&
56、lt;/b></p><p> case(data[3:0])</p><p> 4'b0000:seg7[6:0]=7'h3f;</p><p> 4'b0001:seg7[6:0]=7'h06;</p><p> 4'b0010:seg7[6:0]=7'h5b;</p&g
57、t;<p> 4'b0011:seg7[6:0]=7'h4f;</p><p> 4'b0100:seg7[6:0]=7'h66;</p><p> 4'b0101:seg7[6:0]=7'h6d;</p><p> 4'b0110:seg7[6:0]=7'h7d;</p&g
58、t;<p> 4'b0111:seg7[6:0]=7'h07;</p><p> 4'b1000:seg7[6:0]=7'h7f;</p><p> 4'b1001:seg7[6:0]=7'h6f;</p><p> default:seg7[6:0]=7'hx;</p>&
59、lt;p><b> endcase</b></p><p><b> end</b></p><p><b> Endmodule</b></p><p><b> 五、總體設(shè)計電路圖</b></p><p> 1、總體設(shè)計電路圖 <
60、;/p><p> 上圖為總體設(shè)計電路圖,一個時鐘信號,五個輸入端,三個輸出端。start為啟動鍵控制汽車啟動,同時預(yù)置車費6.00元,pause為暫停鍵,高電平有效,汽車暫停,同時停止發(fā)出脈沖,車費和路程停止計數(shù)。Stop為停止鍵,高電平有效,Speedup為檔位鍵,當(dāng)他們分別取00,01,10,11四個不同的檔位時汽車有不同的速度。a為開關(guān),高電平時控制車費顯示,低電平時控制路程顯示。scan為位選信號,seg為
61、數(shù)碼管段選信號。</p><p><b> 仿真結(jié)果</b></p><p> Quartus||功能仿真結(jié)果分析:</p><p> 觀察波形可知,當(dāng)啟動鍵start為一個脈沖時,表示汽車已經(jīng)起動,車費顯示為6.00元,同時路程隨著計費脈沖開始計數(shù),當(dāng)停止鍵stop為高電平時,表示汽車熄火,車費和路程均為0,當(dāng)暫停鍵pause為1時,車
62、費和路程停止計數(shù),當(dāng)檔位鍵取2,3時路程的計數(shù)逐漸加快,表示車速逐漸加快。</p><p><b> 3、管腳分配圖</b></p><p><b> 4、硬件下載</b></p><p> 硬件下載時的實驗連線:</p><p> clk對應(yīng)CPU板上的50M時鐘。</p>
63、<p> 將EDA/CPLD/FPGA側(cè)的IO1——IO3,IO7——IO10,IO20分別連接到數(shù)碼管的輸入插孔LED_A、LED_B、LED_C、LED_D、LED_E、LED_F、LED_G、LED_DP上,將IO21——IO24連接到數(shù)碼管的輸入插孔LED_C1——LED_C4上。將IO14、IO15、IO25、IO27、IO28、IO31分別接到撥碼開關(guān)上</p><p><b>
64、 5硬件效果照片</b></p><p> 上圖即為撥動啟動鍵,第一個脈沖時汽車啟動,車費顯示起步價6.00元,路程顯示0,但同時路程隨著計費脈沖開始計數(shù)。</p><p> 當(dāng)路程到達(dá)三千米時,每加一千米車費增加1.2元依次累加</p><p> 當(dāng)車費超過20元時,每行駛一千米多收取50%的車費即1.8元,所以當(dāng)路程為15千米時車費為20.4
65、0元,再行駛一千米收取1.8元即22.20元。</p><p> 當(dāng)stop為高電平時汽車熄火同時停止發(fā)出脈沖,車費和路程的計數(shù)清零</p><p><b> 實驗箱上的連線圖</b></p><p><b> 總結(jié)</b></p><p> 在近兩個星期的課程設(shè)計中,培養(yǎng)了我接受新事物、理
66、論分析以及發(fā)現(xiàn)并解決問題的能力。通過這次課程設(shè)計鍛煉了我獨立思考的能力,也培養(yǎng)了我團(tuán)體合作的精神。盡管大家選擇的是不同的課題,但大家仍然能聚在一起討論在設(shè)計的過程中出現(xiàn)的問題,然后解決問題。使我在以后的學(xué)習(xí)中也能夠與同學(xué)們共同合作研究打下良好的基礎(chǔ)。</p><p> 本次課程設(shè)計是在**老師的悉心指導(dǎo)下完成的,從論文的選題答辯到完成論文都表現(xiàn)了老師淵博的知識、嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度和求實精神、忘我的工作作風(fēng),在此我對
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電子課程設(shè)計--基于verilog的出租車計費器
- 出租車計費器數(shù)字電子課程設(shè)計
- 基于verilog語言的出租車計費器
- 出租車計費器課程設(shè)計報告
- eda課程設(shè)計出租車計費器
- eda課程設(shè)計--出租車計費器
- 出租車自動計費器課程設(shè)計
- eda課程設(shè)計--- 出租車計費器
- 出租車計費器課程設(shè)計報告
- eda課程設(shè)計---出租車計費器設(shè)計
- eda 課程設(shè)計--出租車計費器設(shè)計
- 基于cpld出租車計費器的課程設(shè)計
- 課程設(shè)計-出租車自動計費器設(shè)計
- eda課程設(shè)計——出租車計費器設(shè)計
- 出租車自動計費器設(shè)計課程設(shè)計
- 出租車自動計費器設(shè)計課程設(shè)計
- eda課程設(shè)計--出租車計費器的設(shè)計
- eda課程設(shè)計--出租車自動計費器
- eda課程設(shè)計--出租車計費器的設(shè)計
- eda課程設(shè)計---出租車計費器系統(tǒng)
評論
0/150
提交評論