




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 設計名稱: 專業軟件應用綜合設計報告 題 目: 基于FPGA的出租車計價設計 年 級: 2013級 學生姓名: 學 號: 3320130891126 專 業: 電子信息工程 指導教師: 日期: 2015年 12 月 28 日專業軟件應用綜合設計報告 摘要利用FPGA設計出滿足出租車不同計費需求的計費器,去滿足當地出租車的計費需求。在這里我們用QuartusII9.0軟件進行仿真模擬實現,所用的編程語言是VHDL File。這個課題在實現計費功能的同時,也解決了傳統出租車計費器系統的不足。出租車的需求不斷的增大,因此,出租車計費器的需求也將不斷增大,計程車的服務也顯得越來越重要,因此出租車計費
2、器也就應運而生了。 關鍵詞FPGA;計費器;Quartus9.0;VHDL File語言目錄摘要1目錄 第1章 前言11.1發展概括與設計背景1第2章設計目標與主體22.1設計目標22.2設計主體22.3系統框圖2第3章 主體電路與波形仿真43.1兩個模塊生成符號文件43.2對taxi模塊進行波形仿真觀察到的現象43.3對decoder模塊進行波形仿真觀察到的現象53.4整機電路的連接5第4章程序的設計74.1 taxi模塊程序74.2 decoder模塊程序9第5章總結15參考文獻16第1章 前言1.1發展概括與設計背景伴隨中國經濟的騰飛,城市化的進程也隨之加快。雖然人們出行的選擇趨于多樣化
3、,但是出租車作為一種重要的交通工具,也為很多人作為出行的選擇。大城市里出租車已經相當普及,但是在中小城市出租車依然處于快速發展的階段。出租車的計費方式也在發生變化,由只能顯示里程的方式變為現在的自主計費和打印發票及語音提示的智能化方式;根據出租車行業的發展需求,國內許多生產廠商也制造出不同類型的計價器,傳統的出租車計費器經過十幾年的使用,在穩定性,成本等方面都具有一定的優勢。利用FPGA設計出滿足出租車不同計費需求的計費器,去滿足當地出租車的計費需求。這個課題在實現計費功能的同時,也解決了傳統出租車計費器系統的不足。出租車的需求不斷的增大,因此,出租車計費器的需求也將不斷增大,計程車的服務也顯
4、得越來越重要,因此出租車計費器也就應運而生了。第2章設計目標與主體2.1設計目標1. 實現計費功能。按行駛里程計費,起步價為6.00元,并在車行駛3km后按1.2元/km計費,當計費器達到或超過20元時,每千米加收50%的車費,車停止和暫停時不計費;2. 現場模擬汽車的起動、停止、暫停和換擋等狀態;3. 設計數碼管動態掃描電路,將車費和路程顯示出來,各有兩位小數。2.2設計主體假設出租車有啟動鍵、停止鍵、暫停鍵和檔位鍵。啟動鍵為脈沖觸發信號,當它為一個脈沖是,表示汽車已啟動,并根據車速的選擇和基本車速發出相應頻率的脈沖(計費脈沖)實現車費和路程的計數,同時車費顯示起步價;當停止鍵為高電平時,表
5、示汽車熄火,同時停止發出脈沖,此時車費和路程計數清零;當暫停鍵為高電平時,表示汽車暫停并停止發出脈沖,此時車費和路程計數暫停;檔位鍵用來改變車速,不同檔位對應著不同的車速,同時路程計數的速度也不同。首先設計taxi計費模塊,實現計費功能。起步價為6.00元,并在車行駛3km后按1.2元/km計費,當計費器達到或超過20元時,每千米加收50%的車費,車停止和暫停時不計費。其次將輸出的費用和路程作為輸入,給decoder模塊,完成數碼管顯示功能,并且對小數點等做出明確定義。2.3系統框圖出租車計費器可分為兩大模塊,即控制模塊和譯碼顯示模塊,系統框圖如圖2.3所示,控制模塊實現了計費和路程的技術,并
6、且通過不同的檔位控制車速。譯碼顯示模塊實現了十進制到4位十進制的轉換,以及車費和路程的顯示。控制模塊計費時鐘顯示模塊檔位起動暫停停止圖2.3 出租車計費器系統框圖第3章 主體電路與波形仿真3.1兩個模塊生成符號文件電路符號,其中clk為計費時鐘脈沖信號輸入端,clk20MHZ為譯碼高頻時鐘信號輸入端,start為汽車啟動鍵,stop為汽車停止鍵,pause為汽車暫停鍵,speed【1.0】為檔位鍵,scan【7.0】為數碼管地址選擇信號輸出端,seg7【6.0】為7段顯示控制信號輸出端,dp為小數點信號輸出端。 圖3.1.1 taxi模塊生成符號文件圖 decoder模塊生成符號文件3.2對t
7、axi模塊進行波形仿真觀察到的現象對控制模塊taxi進行仿真后得到的功能仿真結果如圖3.2所示。觀察波形可知,當起動鍵(start)為一個脈沖時,表示汽車已起動,車費money顯示起步價6.00元,同時路程distance隨著計費脈沖開始計數;當停止鍵(stop)為1時,表示汽車熄火停止,車費money和路程distance均為0;當暫停鍵(pause)為1時,車費和路程停止計數;當檔位鍵分別取0、2、3時路程的計數逐漸加快,表示車速逐漸加快。 圖3.2 taxi模塊波形仿真3.3對decoder模塊進行波形仿真觀察到的現象將掃描數碼管的分頻系數改小后對譯碼顯示模塊decoder的功能仿真結果
8、如圖3.3所示。進行譯碼的時鐘頻率必須比計費的時鐘高得多才能實時顯示出車費和路程的變化,這里直接采用晶振時鐘20MHz即可。 圖3.3 decoder模塊波形仿真3.4整機電路的連接連接整機電路我們是通過前面生成的taxi模塊和decoder模塊進行搭接電路的,其電路如圖3.4所示。整機電路的搭接與實現,讓我們更加具體和直觀的看到我們對出租車計價器的仿真效果。更好的證明了仿真與實物很接近。 圖3.4 整機電路圖第4章程序的設計4.1 taxi模塊程序 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all
9、;entity taxi isport(clk:in std_logic;-計費時鐘 start:in std_logic;-汽車起動 stop:in std_logic;-汽車停止 pause:in std_logic;-汽車暫停 speedup:in std_logic_vector(1 downto 0);-檔位(4個檔位) money:out integer range 0 to 8000;-車費 distance:out integer range 0 to 8000);-路程end;architecture one of taxi isbeginprocess(clk,start,
10、stop,pause,speedup) variable money_reg,distance_reg:integer range 0 to 8000;-車費和路程的寄存器 variable num:integer range 0 to 9;-控制車速的計數器 variable dis:integer range 0 to 100;-千米計數器 variable d:std_logic;-千米標志位beginif stop='1'then-汽車停止,計費和路程清零 money_reg:=0; distance_reg:=0; dis:=0; num:=0;elsif start
11、='1'then-汽車起動后,起步價為6元 money_reg:=600; distance_reg:=0; dis:=0; num:=0;elsif clk'event and clk='1'then if start='0'and speedup="00"and pause='0' and stop='0'then-1檔 if num=9 then num:=0; distance_reg:=distance_reg+1; dis:=dis+1; else num:=num+1; e
12、nd if; elsif start='0'and speedup="01"and pause='0' and stop='0'then-2檔 if num=9 then num:=0; distance_reg:=distance_reg+2; dis:=dis+2; else num:=num+1; end if; elsif start='0'and speedup="10"and pause='0' and stop='0'then-3檔 if num
13、=9 then num:=0; distance_reg:=distance_reg+5; dis:=dis+5; else num:=num+1; end if; elsif start='0'and speedup="11"and pause='0' and stop='0'then-4檔 distance_reg:=distance_reg+1; dis:=dis+1; end if; if dis>=100 then d:='1' dis:=0; else d:='0' end i
14、f; if distance_reg>=300 then-如果超過3km按1.2元/千米計算 if money_reg<2000 and d='1'then money_reg:=money_reg+120; elsif money_reg>=2000 and d='1'then money_reg:=money_reg+180;-當計費器達到20元,每千米加收50%的車費 end if; end if; end if; money<=money_reg; distance<=distance_reg; end process; e
15、nd;4.2 decoder模塊程序 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity decoder isport(clk20mhz:in std_logic;-系統時鐘20MHZ money_in:in integer range 0 to 8000;-車費 distance_in:in integer range 0 to 8000;-路程 scan:out std_logic_vector(7 downto 0);-數碼管地址選擇信號 seg7:out std_logic_ve
16、ctor(6 downto 0);-7段顯示控制信號(abcdefg) dp:out std_logic);-小數點end;architecture one of decoder issignal clk1khz:std_logic;-1KHZ的分頻時鐘,用于掃描數碼管地址signal data:std_logic_vector(3 downto 0);signal m_one,m_ten,m_hun,m_tho:std_logic_vector(3 downto 0);-錢數的4位十進制表示signal d_one,d_ten,d_hun,d_tho:std_logic_vector(3 d
17、ownto 0);-路程的4位十進制表示begin-1KHZ分頻,用于掃描數碼管地址-process(clk20mhz)variable count:integer range 0 to 9999;beginif clk20mhz'event and clk20mhz='1'then if count=9999 then clk1khz<=not clk1khz;count:=0; else count:=count+1; end if;end if;end process;-將車費的十進制數轉化為4位十進制數-process(clk20mhz,money_in)
18、 variable comb1:integer range 0 to 8000; variable comb1_a,comb1_b,comb1_c,comb1_d:std_logic_vector(3 downto 0);beginif clk20mhz'event and clk20mhz='1'then if comb1<money_in then if comb1_a=9 and comb1_b=9 and comb1_c=9 then comb1_a:="0000" comb1_b:="0000" comb1_c:=
19、"0000" comb1_d:=comb1_d+1; comb1:=comb1+1; elsif comb1_a=9 and comb1_b=9 then comb1_a:="0000" comb1_b:="0000" comb1_c:=comb1_c+1; comb1:=comb1+1; elsif comb1_a=9 then comb1_a:="0000" comb1_b:=comb1_b+1; comb1:=comb1+1; else comb1_a:=comb1_a+1; comb1:=comb1+1;
20、end if; elsif comb1=money_in then m_one<=comb1_a; m_ten<=comb1_b; m_hun<=comb1_c; m_tho<=comb1_d; elsif comb1>money_in then comb1_a:="0000" comb1_b:="0000" comb1_c:="0000" comb1_d:="0000" comb1:=0; end if;end if;end process;-將路程的十進制轉化為4位十進制數-pro
21、cess(clk20mhz,distance_in) variable comb2:integer range 0 to 8000; variable comb2_a,comb2_b,comb2_c,comb2_d:std_logic_vector(3 downto 0);beginif clk20mhz'event and clk20mhz='1'then if comb2<distance_in then if comb2_a=9 and comb2_b=9 and comb2_c=9 then comb2_a:="0000" comb2_
22、b:="0000" comb2_c:="0000" comb2_d:=comb2_d+1; comb2:=comb2+1; elsif comb2_a=9 and comb2_b=9 then comb2_a:="0000" comb2_b:="0000" comb2_c:=comb2_c+1; comb2:=comb2+1; elsif comb2_a=9 then comb2_a:="0000" comb2_b:=comb2_b+1; comb2:=comb2+1; else comb2_a
23、:=comb2_a+1; comb2:=comb2+1; end if;elsif comb2=distance_in then d_one<=comb2_a; d_ten<=comb2_b; d_hun<=comb2_c; d_tho<=comb2_d;elsif comb2>distance_in then comb2_a:="0000" comb2_b:="0000" comb2_c:="0000" comb2_d:="0000" comb2:=0; end if;end if;
24、end process;-數碼管動態掃描process(clk1khz,m_one,m_ten,m_hun,m_tho,d_one,d_ten,d_hun,d_tho)variable cnt:std_logic_vector(2 downto 0);beginif clk1khz'event and clk1khz='1'then cnt:=cnt+1;end if;case cnt is when"000"=>data<=m_one;dp<='0'scan<="00000001" whe
25、n"001"=>data<=m_ten;dp<='0'scan<="00000010" when"010"=>data<=m_hun;dp<='1'scan<="00000100" when"011"=>data<=m_tho;dp<='0'scan<="00001000" when"100"=>data<=d_one;dp&
26、lt;='0'scan<="00010000" when"101"=>data<=d_ten;dp<='0'scan<="00100000" when"110"=>data<=d_hun;dp<='1'scan<="01000000" when"111"=>data<=d_tho;dp<='0'scan<="10000000"end case;end process;-7段譯碼-process(data)begincase data is when"0000"=>seg7<="1111110" when"0001"=>seg7<="0110000" when"0010"=>seg7<="1101101" when"0011&qu
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年微生物檢驗技師考試資格評估試題及答案
- 玻璃行業國際標準與認證流程考核試卷
- 畜牧業品牌推廣與市場渠道建設考核試卷
- 潛水裝備材料科學考核試卷
- 2024年項目管理考試復習建議試題及答案
- 老舊溫室復耕方案范本
- 2025年金屬非金屬礦山提升機操作證考試題及答案
- 石膏在隔音材料中的應用考核試卷
- 疾病預防控制與醫療廢棄物處理規范考核試卷
- 云母制品在農業領域的創新應用考核試卷
- 小學四年級地方課程安全教育教案泰山出版社
- 化學性及藥物性頜骨骨髓炎
- 神奇的植物王國課件
- 員工崗位技能考核評定表
- 人工氣道的護理劉亞課件
- 項目部安全生產事故應急預案
- 垂體瘤-PPT課件
- 鉆井井控裝置
- 贛美版(江西)小學四年級美術下全冊教案
- 12隊淘汰賽_對陣表
- 我國城市馬拉松賽事發展現狀分析
評論
0/150
提交評論