出租車計(jì)費(fèi)器設(shè)計(jì)(部分)_第1頁
出租車計(jì)費(fèi)器設(shè)計(jì)(部分)_第2頁
出租車計(jì)費(fèi)器設(shè)計(jì)(部分)_第3頁
出租車計(jì)費(fèi)器設(shè)計(jì)(部分)_第4頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、頁眉.出租車計(jì)費(fèi)器出租車的出現(xiàn)給人們的生活帶來了極大的便利,日漸成為城市交通工具中重要的成員之一。本實(shí)驗(yàn)以日常所見的出租車計(jì)費(fèi)器為設(shè)計(jì)目標(biāo),實(shí)現(xiàn)其計(jì)程、計(jì)時(shí)、預(yù)置、計(jì)費(fèi)等功能。一、系統(tǒng)設(shè)計(jì)要求設(shè)計(jì)一個(gè)滿足日常生活所需功能的出租車計(jì)費(fèi)器。該計(jì)費(fèi)器能實(shí)現(xiàn)計(jì)費(fèi)功能。車起步開始計(jì)費(fèi),首先顯示起步價(jià),起步費(fèi)為 3.00 元,車在行駛 3KM 以內(nèi),只收起步價(jià)。車行駛超過 3KM 之后,沒 KM2 元,車費(fèi)依次累加。當(dāng)總費(fèi)用達(dá)到或超過 40 元時(shí),每 KM 收費(fèi) 4 元。當(dāng)遇到紅燈或客戶需要停車等待時(shí),則按時(shí)間計(jì)費(fèi),計(jì)費(fèi)單價(jià)為每 20s 收費(fèi) 1 元。實(shí)現(xiàn)計(jì)費(fèi)器預(yù)置功能, 能夠預(yù)置起步費(fèi)、 每公里收費(fèi)、

2、車行加費(fèi)里程、 計(jì)時(shí)收費(fèi)等??梢阅M汽車行駛、停止、暫停等狀態(tài),并根據(jù)不同狀態(tài)進(jìn)行計(jì)費(fèi)。以十進(jìn)制顯示出租車行駛路程與車費(fèi)。二、系統(tǒng)設(shè)計(jì)方案分析系統(tǒng)設(shè)計(jì)要求不難得知,整個(gè)出租車計(jì)費(fèi)系統(tǒng)按功能主要分為速度模塊、計(jì)程模塊、計(jì)時(shí)模塊和計(jì)費(fèi)模塊。速度模塊:通過對(duì)速度信號(hào)sp 的判斷,決定變量kinside 的值。 kinside 即是進(jìn)行100m 所需要的時(shí)鐘周期數(shù),然后每行進(jìn)100m,則產(chǎn)生一個(gè)脈沖clkout 。計(jì)程模塊:由于一個(gè) clkout 信號(hào)代表行進(jìn) 100m,故通過對(duì) clkout 計(jì)數(shù),可以獲得共行進(jìn)的距離 kmcount。計(jì)時(shí)模塊:在汽車啟動(dòng)后,當(dāng)遇到顧客等人或紅燈時(shí), 出租車采用計(jì)時(shí)

3、收費(fèi)的方式。通過對(duì)速度信號(hào) sp 的判斷決定是否開始記錄時(shí)間。當(dāng) sp=0 時(shí),開始記錄時(shí)間。當(dāng)時(shí)間達(dá)到足夠長時(shí)則產(chǎn)生timecount 脈沖,并重新計(jì)時(shí)。一個(gè)timecount 脈沖相當(dāng)于等待的時(shí)間達(dá)到了時(shí)間計(jì)費(fèi)的長度。這里選擇系統(tǒng)時(shí)鐘頻率為500HZ, 20s 即計(jì)數(shù)值為 1000。計(jì)費(fèi)模塊由兩個(gè)進(jìn)程組成。其中,一個(gè)進(jìn)程根據(jù)條件對(duì)enable 和 price 賦值:當(dāng)記錄的距離達(dá)到 3 公里后 enable 變?yōu)?1,開始進(jìn)行每公里收費(fèi),當(dāng)總費(fèi)用大于40 元,則單價(jià) price 由原來的 2 元每公里變?yōu)?4 元每公里;第二個(gè)進(jìn)程在每個(gè)時(shí)鐘周期判斷 timecount 和 clkout 的

4、值。當(dāng)其為 1 時(shí),則在總費(fèi)用上加上相應(yīng)的費(fèi)用。三、VHDL 編程速度模塊的 VHDL 代碼如下:Library IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;1 / 9頁眉.ENTITY speed ISPORT (clk : IN STD_LOGIC;reset : IN STD_LOGIC;start: IN STD_LOGIC;stop: IN STD_LOGIC;sp: IN STD_LOGIC_VECTOR(2 DOWNTO 0);clkout: OUT STD_LOGIC;);END speed;

5、ARCHITECTURE rtl OF speed ISBEGINPROCESS (clk, reset, stop, start, sp)TYPE state_type IS (s0,s1);VARIABLE s_state: state_type;VARIABLE cnt: integer range 0 to 28;VARIABLE kinside: integer range 0 to 30;BEGINCASE sp ISWHEN “000”=>kinside :=0;WHEN “001”=>kinside :=28;WHEN “010”=>kinside :=24;

6、WHEN “011”=>kinside :=20;WHEN “100”=>kinside :=16;WHEN “101”=>kinside :=12;WHEN “110”=>kinside :=8;WHEN “111”=>kinside :=4;END CASE;IF reset=1THENs_state:=s0;ELSIF (rising_edge(clk) thenCASE s_state isWHEN s0=>2 / 9頁眉.cnt:=0;clkout<= 0;IF start=1THEN s_state:=s1;ELSE s_state:=s0

7、;END IF;WHEN s1=>Clkout<= 0;IF (stop=1)THENs_state<=s0;ELSIF sp=”000”then s_state:=s1;ELSIF cnt=kinside thencnt:=0; clkout<= 1;s_state:=s1;ELSE cnt:=cnt+1;s_state:=s1;END IF;END CASE;END IF;END PROCESS;END rtl;計(jì)程模塊的 VHDL 代碼如下:Library IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UN

8、SIGNED.ALL;ENTITY kilometers ISPORT (clkout, reset : IN STD_LOGIC;kmcnt1,kmcnt2,kmcnt3: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END kilometers;ARCHITECTURE rtl OF kilometers ISBEGINPROCESS (clkout, reset)3 / 9頁眉.VARIABLE km_reg: STD_LOGIC_VECTOR(11 DOWNTO 0); BEGINIF reset=1THENkm_reg:=”000000000000”;ELSIF

9、 (rising_edge(clkout) thenIF km_reg(3 DOWNTO 0)= ”1001”THENkm_reg := km_reg +”0111”;ELSE km_reg(3 DOWNTO 0)= km_reg(3 DOWNTO 0)+ ”0001”; END IF;IF km_reg(7 DOWNTO 4)= ”1010”THENkm_reg := km_reg +”01100000”;END IF;END IF;kmcnt1<=km_reg(3 DOWNTO 0);kmcnt2<=km_reg(7 DOWNTO 4);kmcnt3<=km_reg(11

10、 DOWNTO 8);END PROCESS;END rtl;計(jì)時(shí)模塊的 VHDL 代碼如下:Library IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY times ISPORT (clk : IN STD_LOGIC;reset : IN STD_LOGIC;start: IN STD_LOGIC;stop: IN STD_LOGIC;sp: IN STD_LOGIC_VECTOR(2 DOWNTO 0);timecount: OUT STD_LOGIC;);END times;4 / 9頁眉

11、.ARCHITECTURE rtl OF times ISBEGINPROCESS (clk, reset, stop, start, sp)TYPE state_type IS (t0,t1,t2);VARIABLE t_state: state_type;VARIABLE cnt: integer range 0 to 28;VARIABLE waittime: integer range 0 to 1000;BEGINIF reset=1THENt_state:=t0;ELSIF (rising_edge(clk) thenCASE t_state isWHEN t0=>waitt

12、ime:=0;timecount<=0;IF start=1THEN t_state:=t1;ELSE t_state:=t0;END IF;WHEN t1=>IF (sp=”000”) THENt_state:=t2;ELSE waittime:=0;t_state:=t1;END IF;WHEN t2=>waittime:= waittime +1;timecount<=0;IF waittime <=1000 THENwaittime:=0;timecount<=1;ELSIF stop=1then t_state:=t0;ELSIF sp=”000”

13、thent_state:=t2;ELSE timecount<=0;5 / 9頁眉.t_state:=t1;END IF;END CASE;END IF;END PROCESS;END rtl;計(jì)費(fèi)模塊的 VHDL 代碼如下:Library IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY kmmoney ISPORT (clk, reset, timecount, clkout: IN STD_LOGIC;kmcnt2, kmcnt3, count1, count2, count3: OUT

14、STD_LOGIC_VECTOR(3 DOWNTO 0);END kmmoney;ARCHITECTURE rtl OF kmmoney ISSIGNAL cash: STD_LOGIC_VECTOR(11 DOWNTO 0);SIGNAL price: STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL enable: STD_LOGIC;BEGINkmmoney 1: PROCESS (cash,kmcnt2)BEGINIF reset=1THENcash<=”000000000011”;ELSIF (rising_edge(clk) thenIF timecou

15、nt=1THENreg2:<=cash;IF reg2(3 DOWNTO 0)+ ”0001”>”1001”THENreg2(7 DOWNTO 0) := reg2( 7 DOWNTO 0)+ ”00000111”; IF reg2(7 DOWNTO 4) > ”1001”THEN6 / 9頁眉.cash<=reg2+”000001100000”;ELSE cash<=reg2+”0001”;END IF;ELSIF (clkout= 1)and (enable=1)THENIF clkout_cnt=9 THENclkout_cnt:=0;reg2:=cash;

16、IF “0000”&reg2(3 DOWNTO 0)+price(3 DOWNTO 0)>”00001001” THEN reg2(7 DOWNTO 0):=reg2(7 DOWNTO 0)+ ”00000110”+price;IF reg2(7 DOWNTO 4) > ”1001”THEN cash<=reg2+”000001100000”;ELSEcash<=reg2;END IF;ELSEcash<=reg2+price;END IF;ELSEclkout_cnt:=clkout_cnt+1;END IF;END IF;END IF;END PROC

17、ESS;count1<=cash(3 DOWNTO 0);count2<=cash(7 DOWNTO 4);count3<=cash(11 DOWNTO 8);END rtl;頂層模塊的 VHDL 代碼如下:Library IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY top ISPORT (clk, reset, start, stop: IN STD_LOGIC;sp: IN STD_LOGIC_VECTOR(2 DOWNTO 0);7 / 9頁眉.kmcnt1,kmcnt2,kmcnt3,count1,count2,count3: OU

18、T STD_LOGIC_VECTOR(3 DOWNTO 0);END top;ARCHITECTURE rtl OF top ISComponent speed isPORT (clk : IN STD_LOGIC;reset : IN STD_LOGIC;start: IN STD_LOGIC;stop: IN STD_LOGIC;sp: IN STD_LOGIC_VECTOR(2 DOWNTO 0);clkout: OUT STD_LOGIC;);End Component speed;Component times isPORT (clk : IN STD_LOGIC;reset : I

19、N STD_LOGIC;start: IN STD_LOGIC;stop: IN STD_LOGIC;sp: IN STD_LOGIC_VECTOR(2 DOWNTO 0);timecount: OUT STD_LOGIC;);End Component times;Component kilometers isPORT (clkout, reset : IN STD_LOGIC;kmcnt1,kmcnt2,kmcnt3: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);End Component kilometers;Component kmmoney isPORT (clk, reset

溫馨提示

  • 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)論