基于VHDL的出租車計費器的設計_第1頁
基于VHDL的出租車計費器的設計_第2頁
基于VHDL的出租車計費器的設計_第3頁
基于VHDL的出租車計費器的設計_第4頁
基于VHDL的出租車計費器的設計_第5頁
已閱讀5頁,還剩6頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、基于VHDL 的出租車計費器的設計 目前以硬件描述語言(Verilog 或 VHDL)所完成的電路設計,可以經過簡單的綜合與布局,快速的燒錄至 FPGA 上進行測試,是現代 IC 設計驗證的技術主流。這些可編輯元件可以被用來實現一些基本的邏輯門電路(比如AND、OR、XOR、NOT)或者更復雜一些的組合功能比如解碼器或數學方程式。在大多數的FPGA里面,這些可編輯的元件里也包含記憶元件例如觸發器(Flipflop)或者其他更加完整的記憶塊。系統設計師可以根據需要通過可編輯的連接把FPGA內部的邏輯塊連接起來,就好像一個電路試驗板被放在了一個芯片里。一個出廠后的成品FPGA的邏輯塊和連接可以按照

2、設計者而改變,所以FPGA可以完成所需要的邏輯功能。 本設計是一種采用FPGA芯片進行出租車計費器,主要分為分頻模塊、計量模塊、計費模塊、控制模塊等模塊,利用FPGA的可編程性,簡潔又多變的設計方法,縮短了研發周期。主要采用了FPGA芯片,使用VHDL語言進行編程,使其具有了更強的移植性,更加利于產品的升級。 一、設計任務與要求(1)、能夠實現計費功能費用的計算是按行駛里程收費,設出租車的起步價是5.00元,當里程小于3km里時,按起步價收費;當里程大于3km時每公里按1.3元計費。等待累計時間超過2min,按每分鐘1.5元計費。所以總費用按下式計算:總費用=起步價+(里程-3km)*里程單價

3、+等候時間*等候單價(2)、能夠實現顯示功能l 顯示汽車行駛里程:用四位數字顯示,顯示方式為“XXXX”,單價為km。計程范圍為099km,計程分辨率為1km。l 顯示等候時間:用兩位數字顯示分鐘,顯示方式為“XX”。計時范圍為059min,計時分辨率為1min。l 顯示總費用:用四位數字顯示,顯示方式為“XXX.X”,單位為元。計價范圍為999.9元,計價分辨率為0.1元。二、設計原理根據設計要求,系統的輸入信號clk,計價開始信號Start,等待信號Stop,里程脈沖信號fin。系統得輸出信號有:總費用數cha0 cha3,行駛距離km0 km1,等待時間min0 min1 等。系統有兩個

4、脈沖輸入信號clk_750k、fin,其中clk_750k將根據設計要求分頻成13hz、15hz和1hz分別作為公里計費和超時計費的脈沖。兩個控制輸入開關start、stop;控制過程為:start作為計費開始開關,當start為高電平時,系統開始根據輸入的情況計費。當有乘客上車并開始行駛時,fin脈沖到來,進行行駛計費,此時的stop需要置為0;如需停車等待,就把stop變為高電平,并去除fin輸入脈沖,進行等待計費;當乘客下車且不等待時,直接將start置為0,系統停止工作;價格開始歸為起步價5.00元。整個設計由分頻模塊、計量模塊、計費模塊、控制模塊等四個部分組成。其中計量模塊是整個系統

5、實現里程計數和時間計數的重要部分;控制模塊是實現不同計費方式的選擇部分,根據所設計的使能端選擇是根據里程計費還是根據等待時間計費;同時設計通過分頻模塊產生不同頻率的脈沖信號來實現系統的計費。計量模塊采用1HZ的驅動信號,計費模塊采用13HZ、15HZ的驅動信號;計量模塊每計數一次,計費模塊就實現13次或者15次計數,即為實現計時時的1.5 元/min、計程時的1.3元/km的收費。組成框圖如下所示:三、各個模塊設計分析(2)分頻模塊由于試驗箱上沒有13hz和15hz的整數倍時鐘信號,因此我們采用頻率較大的750khz進行分頻,以近似得到13HZ、15HZ和1HZ的時鐘頻率。本設計中通過以上三種

6、不同頻率的脈沖信號實現在計程車在行駛、等待兩種情況下的不同計費。模塊元件如下:(2)計量模塊計量模塊主要完成計時和計程功能。計時部分:計算乘客的等待累積時間,當等待時間大于2min時,本模塊中en1使能信號變為1;當clk1每來一個上升沿,計時器就自增1,計時器的量程為59min,滿量程后自動歸零。計程部分:計算乘客所行駛的公里數,當行駛里程大于3km時,本模塊中en0使能信號變為1;當clk1每來一個上升沿,計程器就自增1,計程器的量程為99km,滿量程后自動歸零。元件框圖為:計量模塊仿真波形為:由波形可知,Start置1程序始終處于計費狀態,當fin脈沖到來時k0和k1進入計程狀態,且k0

7、每次滿9就向k1進位,超過3km時en0就變為高電平;同理,當stop由0置為1時開始由計程進入等待狀態,fin脈沖歸為0里程計數停止,等待時間開始計時,m0每次滿9就向m1進位,超過2min時en1就變為高電平。(3)控制模塊本模塊主要是通過計量模塊產生的兩個不同的輸入使能信號en0、en1,對兩個分頻模塊輸出的13HZ、15HZ的脈沖進行選擇輸出的過程;本模塊實現了雙脈沖的二選一;最終目的為了計費模塊中對行駛過程中不同的時段進行計價。模塊元件如下:控制模塊仿真波形如下:(4)計費模塊 當計費信號Start一直處于高電平即計費狀態時,本模塊根據控制模塊選擇出的信號從而對不同單價的時段進行計費

8、。即行程在3km內,而且等待累積時間小于2min則為起步價5元;3km外以每公里按1.3遠計費,等待累積時間超過2min則按每分鐘1.5元計費。c0、c1、c2、c3分別表示費用的顯示。模塊元件為:計費模塊仿真波形:由圖可知當處于計費狀態時,隨著clk2的高電平的到來,計費起步價為5元。c0滿9向c1進位,c1滿9向c2產生進位,依次逐級進位,從而完成計費功能。(5)譯碼顯示模塊譯碼顯示模塊完成計價、計時和計程數據顯示。計費數據送入譯碼顯示模塊進行譯碼,最后送至以百元、十元、元、角為單位對應的數碼管上顯示。計時數據送入譯碼顯示模塊進行譯碼,最后送至以分為單位對應的數碼管上顯示。計程數據送入譯碼

9、顯示模塊進行譯碼,最后送至以km為單位的數碼管上顯示。由于本次課程設計所用實驗箱上自帶數碼管譯碼顯示電路,因此不需再寫譯碼程序,選定模式直接管腳鎖定在對用的數碼管上即可實現。(6)頂層模塊,元件例化語句本模塊用圖形輸入法實現出租車的計費器系統設計,將各個模塊組合在一起。模塊元件如下: 圖形如下所示:程序最終功能實現仿真波形: 由圖中可以看出,當fin脈沖信號到來時,實現了行駛計費,當行駛里程超過三公里,則再按每公里1.3元計費;當stop為高電平,即進入等待計時收費;當等待時間超過2min時,每過一分鐘加1.5元,即為實現每等一分鐘收費1.5元。但本次仿真中等待時間為1分鐘,沒有超過2分鐘,因

10、此沒有等待時間的計費。結果驗證:出租車的起步價是5元,當行駛了33km的時候,收費為5+(33 3)*1.3=44元。四、硬件實現 在QuartusII軟件中仿真成功,現在下載到試驗箱上以驗證其功能。實驗中采用萬用模式模式五,程序中各個端口鎖定到試驗箱上對應的管腳下載驗證。最后得數碼管顯示計時、計程和計費數據如下: 以上可知等待時間為10分鐘,行駛公里數為23公里。根據設計要求計算所得費用為:5+(23km-3km)*1.3元/km+(10min-2min)*1.5元/min=5+26+12=43元,與試驗箱上所得結果相同,仿真下載成功。五、結束語課程設計是我們專業課程知識綜合應用的實踐訓練,

11、著是我們邁向社會,從事職業工作前一個必不少的過程”千里之行始于足下”,通過這次課程設計,我深深體會到這句千古名言的真正含義我今天認真的進行課程設計,學會腳踏實地邁開這一步,就是為明天能穩健地在社會大潮中奔跑打下堅實的基礎。六、參考文獻曹昕燕、周鳳臣、聶春燕,EDA技術實驗與課程設計【M】,清華大學出版社劉欲曉、方強、黃宛寧,EDA技術與VHDL電路開發應用實踐【M】,電子工業出版社。潘松、黃繼業。EDA技術實用教程(第三版)【M】,科學出版社附錄:源程序:分頻源程序:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARIT

12、H.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity fenpin2 isport ( clk_750k :in std_logic; -系統時鐘 clk_13: buffer std_logic; -13分頻 clk_15: buffer std_logic; -15分頻 clk_1: buffer std_logic); -1分頻end fenpin2;architecture rt1 of fenpin2 is signal q_13:integer range 0 to 28845; - 定義中間信號量 signal q_15:integer ran

13、ge 0 to 24999; signal q_1:integer range 0 to 374999; begin process(clk_750k) beginif (clk_750k'event and clk_750k='1' )then if q_13=28845 then q_13<=0;clk_13<=not clk_13; else q_13<=q_13+1; end if; -得13hz頻率信號if q_15=24999 then q_15<=0;clk_15<=not clk_15; else q_15<=q_15

14、+1; end if; -得15hz頻率信號if q_1=374999 then q_1<=0;clk_1<=not clk_15; else q_1<=q_1+1;end if; -得1hz頻率信號 end if; end process;end rt1;計量源程序:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity jiliang isport( start: in std_logic; -計費開始信號 fi

15、n: in std_logic; -里程脈沖信號 stop: in std_logic; -行駛中,中途等待信號 clk1: in std_logic; -驅動脈沖 en1,en0:buffer std_logic; -計費單價使能信號 k1,k0: buffer std_logic_vector(3 downto 0); -行駛公里計數 m1,m0: buffer std_logic_vector(3 downto 0); -等待時間計數end jiliang;architecture rt2 of jiliang issignal w:integer range 0 to 59; -計時范

16、圍059 beginprocess(clk1)begin if clk1'event and clk1='1' then if start='0' then w<=0;en1<='0'en0<='0'm1<="0000"m0<="0000"k1<="0000"k0<="0000" elsif stop='1' then -計時開始信號 if w=59 then w<=0; else

17、 w<=w+1; end if; if m0="1001" then m0<="0000" if m1="0101" then m1<="0000" else m1<=m1+1; end if; else m0<=m0+1; end if; if stop='1' then en0<='0' if m1&m0>"00000010"then en1<='1' -若等待時間大于2min則en1置1

18、 else en1<='0' end if; end if; elsif fin='1' then -里程計數開始 if k0="1001" then k0<="0000" if k1="1001" then k1<="0000" -計程范圍099 else k1<=k1+1; end if; else k0<=k0+1; end if; if stop='0' then en1<='0' if k1&k0&

19、gt;"00000011" then en0<='1' -若行駛里程大于3km則en0置1 else en0<='0' end if; end if; end if; end if;end process;end rt2;控制模塊源程序:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity kongzhi isport(en0,en1:in std_logic; -使能

20、選擇信號 clk_in1:in std_logic; -13分頻輸入信號 clk_in2:in std_logic; -15分頻輸入信號 clk_out:out std_logic); -輸出信號 end kongzhi;architecture rt3 of kongzhi isbeginprocess(ent0,ent1)begin if en0='1' then -實現二選一功能 clk_out<=clk_in1; elsif en1='1' then clk_out<=clk_in2; end if; end process;end rt3;計費模塊源程序:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity jifei isport(clk2:in std_logic; -計費驅動信號 start: i

溫馨提示

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

評論

0/150

提交評論