出租車計費系統(tǒng) EDA課程設計報告
《出租車計費系統(tǒng) EDA課程設計報告》由會員分享,可在線閱讀,更多相關《出租車計費系統(tǒng) EDA課程設計報告(13頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、EDA課程設計實驗報告 題 目:出租車計費系統(tǒng) 姓 名:張超峰 學 號:2008550531 班 級:2008級電子信息工程二班 指導老師:姚志強 完成日期:2011年4月8日 一、課程設計目的 1、綜合運用EDA技術,獨立完成一個課題的設計,考察運用所學知識,解決實際問題的能力; 2、結合理論知識,考察閱讀參考資料、文獻、手冊的能力; 3、進一步熟悉EDA技術的開發(fā)流程,掌握文件編輯、編譯、仿真、下載驗證等環(huán)節(jié)的實現(xiàn)方法和應用技巧; 二、課程設計要求 1、 計費部分 a、 起步價設置為6元; b、 設置等待計時計費,當車速小于某值時,系
2、統(tǒng)自動進入等待計時,并在一定條件下進行等待計費,計費單價為1.3元/分鐘; c、 設置超路程計費。當行駛距離超過3km后,系統(tǒng)進入超公里數(shù)計費,單價按1.0元/km計費; d、 計費公式為s=6+1.3*等待時間+1.0*(行駛距離-3km)。 2、 顯示部分 a、 公里計數(shù),記錄汽車行駛距離; b、 等待計時,記錄等待時間; c、 計費顯示,實時顯示系統(tǒng)總費用。 三、設計思路 (一)、基本原理 根據(jù)設計要求,系統(tǒng)的輸入信號有:系統(tǒng)時鐘信號CLK,計價開始信號START,車速控制信號MA。系統(tǒng)的輸出信號有:總費用數(shù)CHA0-CHA3,行駛距離(數(shù))KM0-KM1和等待時間MI
3、N0-MIN1等。通過系統(tǒng)對車速的檢測進入相應的計費系統(tǒng)。 (二)、設計框圖 時鐘信號 計費信號 速度控制信號 分頻器 控 制 部 分 計時 計費 速度產(chǎn)生 顯 示 計程 (三)實現(xiàn)方法 1、系統(tǒng)時鐘clk+計費啟動信號start+等待計時信號stop+外部里程脈沖fin實現(xiàn)。 1>系統(tǒng)實現(xiàn)原理:當外部里程脈沖累計k1&k0=<3時,系統(tǒng)計費始終為起步價,當里程超過3km時,系統(tǒng)進入超公里計費,按相應單價計費;當外部輸入等待計時信號后,系統(tǒng)進入等待計時計費,費用單價可改變。 2>程序分析 LIBRARY IEE
4、E; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY zcftaxi IS PORT( CLK: IN STD_LOGIC; --系統(tǒng)時鐘 START: IN STD_LOGIC; --計費開始信號 STOP: IN STD_LOGIC; --中途等待停止信號
5、 FIN: IN STD_LOGIC; --1KM脈沖信號 RST: IN STD_LOGIC; CHA3,CHA2,CHA1,CHA0: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); --計費輸出信號 KM1,KM0: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); --行駛公里數(shù) MEN1,MEN0: OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); --等待時間輸出 END ENTIT
6、Y zcftaxi ; ARCHITECTURE BEHAVE OF zcftaxi IS SIGNAL X_1: INTEGER RANGE 0 TO 49; --數(shù)碼管掃苗顯示脈沖 SIGNAL W: INTEGER RANGE 0 TO 59; --等待計數(shù)分鐘走動產(chǎn)生信號 SIGNAL C3,C2,C1,C0: STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL K1,K0: STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL M1:
7、 STD_LOGIC_VECTOR(2 DOWNTO 0); SIGNAL M0: STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL TEMP0,TEMP1: STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL F_1: STD_LOGIC; SIGNAL EN0,EN1: STD_LOGIC; BEGIN FEIPIN:PROCESS(CLK,START) BEGIN IF CLK'EVENT AND CLK='1' THEN IF START='0' THEN
8、 F_1 <='0'; X_1 <=0; ELSE IF X_1=49 THEN X_1<=0; F_1<='1'; ELSE X_1<=X_1+1; F_1<='0'; END IF; END IF; END IF; END PROCESS; PROCESS(FIN) --公里脈沖計數(shù) BEGIN
9、 IF FIN'EVENT AND FIN='1' THEN IF START='0' THEN K1<="0000"; K0<="0000"; ELSIF STOP='0' THEN IF K0="1001" THEN K0<="0000"; IF K1="1001" THEN K1<="0000"; ELSE K1<=K1+1; END IF; ELSE K0<=K0+1; END IF;
10、END IF; END IF; END PROCESS; PROCESS(clk) --等待時間顯示 BEGIN IF clk'EVENT AND clk='1' THEN IF START='0' THEN W<=0; M1<="000"; M0<="0000"; ELSIF STOP='1' THEN IF W=49 THEN W<=0; IF M0="1001"
11、THEN M0<="0000"; IF M1="101" THEN M1<="000"; ELSE M1<=M1+1; END IF; ELSE M0<=M0+1; END IF; ELSE W<=W+1; END IF; END IF; END IF; END PROCESS; PROCESS(CLK) BEGIN IF CLK'EVENT AND CLK='1' THEN IF
12、 START='0' THEN EN0<='0'; EN1<='0'; ELSIF STOP='0' THEN EN1<='0'; IF K1&K0>"00000011" THEN EN0<='1'; --超公里數(shù)計費使能信號產(chǎn)生 ELSE EN0<='0'; END IF; ELSIF STOP='1' THEN EN0<='0'; IF M1&M0>"0000010" THEN EN
13、1<='1'; --超等待時間使能信號產(chǎn)生 ELSE EN1<='0'; END IF; END IF; END IF; END PROCESS; PROCESS(CLK,START) VARIABLE C13,C15 : INTEGER; BEGIN IF START='0' THEN C3<="0000"; C2<="0000"; C1<="0101"; C0<="0000"; C13:=0; C15:=0; TEMP0<="0000"; TEMP1
14、<="0000"; ELSIF CLK'EVENT AND CLK='1' THEN IF(EN0='1')THEN IF(C13<13)THEN C13:=C13+1; --13分頻超公里數(shù)計費 IF(C13=1)THEN TEMP0<=K0; END IF; IF C0="1001" THEN C0<="0000"; IF C1="1001" THEN C1<="0000"; IF C2="1001" THE
15、N C2<="0000"; IF C3="1001" THEN C3<="0000"; ELSE C3<=C3+1; END IF; ELSE C2<=C2+1; END IF; ELSE C1<=C1+1; END IF; ELSE C0<=C0+1; END IF; ELSIF(K0/=TEMP0)THEN C13:=0;
16、 END IF; ELSIF(EN1='1')THEN IF(C15<15)THEN C15:=C15+1; --15分頻超公里數(shù)計費 IF(C15=1)THEN TEMP1<=M0; END IF; IF C0="1001" THEN C0<="0000"; IF C1="1001" THEN C1<="0000"; IF C2="1001" THEN C2<="0000"; I
17、F C3="1001" THEN C3<="0000"; ELSE C3<=C3+1; END IF; ELSE C2<=C2+1; END IF; ELSE C1<=C1+1; END IF; ELSE C0<=C0+1; END IF; ELSIF(M0/=TEMP1)THEN C15:=0; END IF; END IF; END
18、IF; END PROCESS; PROCESS(F_1) --信號顯示輸出部分 BEGIN IF F_1'EVENT AND F_1='1'THEN IF START='0' OR RST='1' THEN MEN1<="0000";MEN0<="0000"; KM1<="0000"; KM0<="0000"; CHA3<="0000";CHA2<="0000"; CHA1<="0000";CHA0 <=
19、"0000"; ELSE MEN1<='0'&M1;MEN0<=M0; KM1<=K1; KM0<=K0; CHA3<=C3;CHA2<=C2; CHA1<=C1;CHA0<=C0; END IF; END IF; END PROCESS; END BEHAVE; 3>時序圖分析 從上述時序圖可以看出,當k1&k0=<3km時,cha=5;當路程超過3km時,系統(tǒng)自動進入超公里計費。當stop為高電平時,系統(tǒng)計入等待計時計費。 2、
20、系統(tǒng)時鐘clk+計費啟動信號start +外部里程脈沖fin實現(xiàn)。 1> 系統(tǒng)實現(xiàn)原理:當外部里程脈沖累計k1&k0=<3時,系統(tǒng)計費始終為起步價,當里程 超過3km時,系統(tǒng)進入超公里計費,按相應單價計費;當系統(tǒng)通過速度檢測測得速度小于某值后,系統(tǒng)進入等待計時計費,費用單價可改變。 2> 程序分析 速度監(jiān)控部分:(其他參考方法一) PROCESS(CLK) VARIABLE tim,sudu : INTEGER; BEGIN IF CLK'EVENT AND CLK='1' THEN tim:=tim+1; sudu:=(k1&k0
21、)*1024/tim; IF sudu<10 then EN0<='0'; EN1<='1';--超等待時間使能信號產(chǎn)生 STOP<='1'; ELSE EN0<='1';--超公里數(shù)計費使能信號產(chǎn)生 EN1<='0'; STOP<='0'; END IF; END IF; END PROCESS; 3、 系統(tǒng)時鐘clk+計費啟動信號start +外部速度檔位設置實現(xiàn)。 1>系統(tǒng)實現(xiàn)原理:當外部里程脈沖累計k1&k0=<3時,系統(tǒng)
22、計費始終為起步價,當里程 超過3km時,系統(tǒng)進入超公里計費,按相應單價計費;當系統(tǒng)通過速度檢測測得速度小于某值后,系統(tǒng)進入等待計時計費,費用單價可改變。本思路的最大亮點是速度可選可測。 2>程序分析 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY zcftaxi IS PORT( CLK: IN STD_LOGIC; --
23、系統(tǒng)時鐘 START: IN STD_LOGIC; --計費開始信號 MA: IN STD_LOGIC_VECTOR(2 DOWNTO 0); --檔位控制信號 CHA3,CHA2,CHA1,CHA0: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); --計費輸出信號 KM1,KM0: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); --行駛公里數(shù) MEN1,MEN0: OUT S
24、TD_LOGIC_VECTOR(3 DOWNTO 0)); --等待時間輸出 END ENTITY zcftaxi ; ARCHITECTURE BEHAVE OF zcftaxi IS SIGNAL X_1: INTEGER RANGE 0 TO 2; --數(shù)碼管掃苗顯示脈沖 SIGNAL W: INTEGER RANGE 0 TO 15; --等待計數(shù)分鐘分頻信號 SIGNAL Q0,Q: INTEGER RANGE 0 TO 69; --速度分頻 S
25、IGNAL FIN: STD_LOGIC; --速度產(chǎn)生信號 SIGNAL STOP: STD_LOGIC; --中途等待信號 SIGNAL EN: STD_LOGIC; --超公里數(shù)計費使能信號 SIGNAL GFP: INTEGER RANGE 0 TO 50; --超公里數(shù)計費分頻信號 SIGNAL C3,C2,C1,C0: STD_LOGIC_VECTOR(3 DOWNTO 0
26、); SIGNAL K1,K0: STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL M1: STD_LOGIC_VECTOR(2 DOWNTO 0); SIGNAL M0: STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL TEMP0,TEMP1: STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL F_1: STD_LOGIC; BEGIN FEIPIN:PROCESS(CLK,START) BEGIN IF CLK'EVENT AND CLK=
27、'1' THEN IF START='0' THEN F_1 <='0'; X_1 <=0; ELSE IF X_1=2 THEN X_1<=0; F_1<='1'; ELSE X_1<=X_1+1; F_1<='0'; END IF; END IF; END IF; END PROCESS; PROCESS(CLK,START) BEGIN IF CLK'EVENT AND CLK='1' THEN CASE MA IS
28、 --速度選擇 WHEN "000" => Q0<=29; --V1=1/120KM/M WHEN "001" => Q0<=39; --V2=1/160KM/M WHEN "010" => Q0<=49; --V3=1/200KM/M WHEN "011" => Q0<=59; --V4=1/240KM/M WH
29、EN "100" => Q0<=69; --V5=1/280KM/M WHEN OTHERS=>NULL; END CASE; IF Q0>39 THEN STOP<='1'; ELSE STOP<='0'; END IF; IF START='0' THEN Q0<=0; FIN<='0'; ELSE IF Q=Q0 THEN Q<=0; FIN<='1'; ELSE Q<=Q+1;
30、 FIN<='0'; END IF; END IF; END IF; END PROCESS; PROCESS(FIN) --公里脈沖計數(shù) BEGIN IF FIN'EVENT AND FIN='1' THEN IF START='0' THEN K1<="0000"; K0<="0000"; ELSIF K0="1001" THEN K0<="0000"; IF K1
31、="1001" THEN K1<="0000"; ELSE K1<=K1+1; END IF; ELSE K0<=K0+1; END IF; END IF; END PROCESS; PROCESS(clk) --等待時間顯示 BEGIN IF clk'EVENT AND clk='1' THEN IF START='0' THEN W<=0; M1<="000";
32、 M0<="0000"; ELSIF STOP='1' THEN IF W=15 THEN W<=0; IF M0="1001" THEN M0<="0000"; IF M1="101" THEN M1<="000"; ELSE M1<=M1+1; END IF; ELSE M0<=M0+1; END IF; ELSE W<=W+1; END IF;
33、 END IF; END IF; END PROCESS; PROCESS(CLK,START) BEGIN IF CLK'EVENT AND CLK='1' THEN IF START='0' THEN EN<='0'; ELSIF STOP='0' THEN IF K1&K0>"00000011" THEN EN<='1'; --超公里數(shù)計費使能信號產(chǎn)生 ELSE EN<='0'; END IF;
34、 END IF; END IF; END PROCESS; PROCESS(CLK,START) VARIABLE C10,C13 : INTEGER; BEGIN IF START='0' THEN C3<="0000"; C2<="0000"; C1<="0110"; C0<="0000"; --起步價 C10:=0; C13:=0; TEMP0<="0000"; TEMP1<="0000"; ELSIF CLK'EVENT AND CLK='1' THEN IF(EN='1')THEN
35、 IF GFP>(Q0/10-1) THEN GFP<=0; IF(C10<10)THEN C10:=C10+1; --10分頻超公里數(shù)計費 IF(C10=1)THEN TEMP0<=K0; END IF; IF C0="1001" THEN C0<="0000"; IF C1="1001" THEN C1<="0000"; IF C2="1001" THEN C2<="0000";
36、 IF C3="1001" THEN C3<="0000"; ELSE C3<=C3+1; END IF; ELSE C2<=C2+1; END IF; ELSE C1<=C1+1; END IF; ELSE C0<=C0+1; END IF; ELSIF(K0/=TEMP0)THEN C10:=0; END IF; ELSE GFP<=GF
37、P+1; END IF; ELSIF(STOP='1' AND K1&K0>"00000011") THEN IF(C13<13)THEN C13:=C13+1; --13分頻超時計費 IF(C13=1)THEN TEMP1<=M0; END IF; IF C0="1001" THEN C0<="0000"; IF C1="1001" THEN C1<="0000"; IF C2="1001" T
38、HEN C2<="0000"; IF C3="1001" THEN C3<="0000"; ELSE C3<=C3+1; END IF; ELSE C2<=C2+1; END IF; ELSE C1<=C1+1; END IF; ELSE C0<=C0+1; END IF; ELSIF(M0/=TEMP1)THEN C13:=0;
39、 END IF; END IF; END IF; END PROCESS; PROCESS(F_1) --信號顯示輸出部分 BEGIN IF F_1'EVENT AND F_1='1'THEN IF START='0'THEN MEN1<="0000";MEN0<="0000"; KM1<="0000"; KM0<="0000"; CHA3<="0000";CHA2<="0000";
40、 CHA1<="0000";CHA0 <="0000"; ELSE MEN1<='0'&M1;MEN0<=M0; KM1<=K1; KM0<=K0; CHA3<=C3;CHA2<=C2; CHA1<=C1;CHA0<=C0; END IF; END IF; END PROCESS; END BEHAVE; 3>時序圖分析 從上時序圖可看出,當系統(tǒng)選擇速度為V1時,速度較大,當行駛距離大于3km時,系 統(tǒng)進入超公里數(shù)計費,本次仿真采用起步價6元
41、,超公里計費單價為1.0元/km。如當k1&k0=7km時,系統(tǒng)總計費為:6+4*1=10元。 從上時序圖可看出,當系統(tǒng)選擇速度為V5時,速度較大,當行駛距離大于3km時,系 統(tǒng)進入等待計費,本次仿真采用起步價6元,等待計費單價為1.3元/分鐘。如當k1&k0>3km,men1&men0>12分時,等待時間顯示加一,計費輸出顯示加1.3元,如等待計時時間顯示為15分鐘的下一分鐘系統(tǒng)總計費顯示為:6+(16-12+1)*1.3=12.5元。 四、三種思路的優(yōu)缺點比較 可以看到思路一、二采用的是外部里程脈沖輸入的方法,與實際相比較差距過大;而 方法一當進行等待時間計費時,需人工開
42、啟使能信號,比較麻煩并且也不實用。但思路一相對而言思路比較清晰,容易理解與實現(xiàn)。 思路二主要是為了省略等待計時外部使能信號,通過系統(tǒng)對輸入里程脈沖的頻率考究換算成車子行駛的速度。通過對速度值的比較,設置系統(tǒng)等待計時計費的條件,從而實現(xiàn)系統(tǒng)自動進行等待計時計費。 思路三是比較完整,比較先進的構思,與實際結合緊密,也是本次實驗的最終結果。 設計主要有以下幾個亮點:1、減少了外部信號的輸入,省略了等待計時計費使能信號輸入,省略了外部里程脈沖信號輸入;2、實現(xiàn)了系統(tǒng)自動進行里程計數(shù);3、實現(xiàn)了系統(tǒng)對車速的自動檢測和可選,并能分析進行超公里計費和等待計費的轉換。 五、 實驗心得體會 本次試
43、驗共花去我一周的時間,感受頗深。在這次實驗中,我收獲很多。 首先是態(tài)度方面的認識。實驗需要事實考證,我們要秉著誠實,認真的態(tài)度,并且要有細心和耐心。實驗過程中不免會出現(xiàn)很多的問題,特別是EDA這門課程已學了很久,知識點很多都陌生了,需要踏實的復習。實驗過程中細節(jié)不能放過,對實驗結果和時序仿真圖分析時,要特別認真,有時可能會有0.1元的誤差,如果你忽視了,那實驗后面的誤差將會逐漸增大。 其次是方法。對于本次EDA實驗,我個人認識最深的是軟件分析具有很大的作用。我們到實驗室做的最多的是進行下載和結果觀測。但是在之前的源代碼編寫和時序仿真卻不能總跑到km之外的實驗室去。所以個人電腦利用軟件進行開發(fā)是很重要的。本次實驗我查錯的主要方法還是通過時序圖。 再次是實驗思路和產(chǎn)品開發(fā)構思。本次實驗我一共用了三種方法對其進行實現(xiàn),第一種修改不是很多,但結果也不是很好。實現(xiàn)的結果與實際相差過大。而其后兩種是逐步提高的過程,從減少外部信號輸入和系統(tǒng)自動化的原則出發(fā),對思路一進行修正,最后得到結果。所以,在實驗過程中,我們應當要有創(chuàng)新意識,同時要注重作品的實際利用價值。 13
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識競賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識測試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習題含答案
- 2煤礦安全監(jiān)測工種技術比武題庫含解析
- 1 礦山應急救援安全知識競賽試題
- 1 礦井泵工考試練習題含答案
- 2煤礦爆破工考試復習題含答案
- 1 各種煤礦安全考試試題含答案