

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 課 程 設(shè) 計</p><p> 課程設(shè)計名稱: 出租車計價器 </p><p> 專 業(yè) 班 級 </p><p> 學(xué) 生 姓 名 : </p><p> 學(xué) 號 :
2、 </p><p> 指 導(dǎo) 教 師 : </p><p> 課程設(shè)計時間: </p><p><b> 1 設(shè)計任務(wù)及要求</b></p><p> 出租車計價器根據(jù)乘客乘坐汽車行駛距離
3、和等候時間的多少進行計價,并在行程中同步顯示車費值。從起步開始,行程3公里內(nèi),且等待累計時間2分鐘內(nèi),起步費10元;3公里以外以每公里1.6元計費,等待累計時間2分鐘外以每分鐘1.5元計費。并能顯示行駛公里數(shù)、等待累計時間、總費用。設(shè)計的主要技術(shù)指標(biāo):(1)計價范圍:0—999.9元 計價分辨率:0.1元(2)計程范圍:0—99公里 計程分辨率:1公里(3)計時范圍:0—59分 計時分辨率:1分 本次設(shè)
4、計中假設(shè)出租車的速度傳感器具有出租車每行駛1Km提供1000個脈沖信號的特性。當(dāng)行駛速度小于等于2KM/h時為等待。本設(shè)計的最終任務(wù)是顯示出租車的等待時間和行駛里程,并計算出所需費用。根據(jù)要求需要進行如下分工,首先要有一個分頻模塊(FPQ)產(chǎn)生系統(tǒng)工作用的基準(zhǔn)信號1HZ,供系統(tǒng)中的有關(guān)模塊計時用。其次要有一個判斷等待與否的模塊(DDPB),再者就是要有計時和計程模塊(DDSJ和LCJS),最后要有計費模塊和顯示譯碼模塊(JFZ和YIMA
5、)。</p><p> 2設(shè)計原理及總體框圖</p><p><b> ?。?)設(shè)計總體框圖</b></p><p><b> 圖1 總設(shè)計框圖</b></p><p><b> ?。?)設(shè)計總原理圖</b></p><p> 圖2 設(shè)計總原理
6、圖</p><p> 設(shè)計總原理:測控FPGA芯片通過采集速度傳感器脈沖信號WCLK進行行駛里程計算,利用外部脈沖信號CLK1產(chǎn)生標(biāo)準(zhǔn)時鐘信號,用來計算等待時間,最后根據(jù)行駛里程、等待時間來計算計價值。并用譯碼電路顯示行駛里程、等待時間和計價值。</p><p><b> 3 程序設(shè)計</b></p><p> 1.VHDL語言簡單介紹&
7、lt;/p><p> VHDL語言(VHSIC Hardware Description Language,甚高速集成電路硬件描述語言)是一種設(shè)計、仿真、綜合的標(biāo)準(zhǔn)硬件描述語言,是對可編程邏輯器件進行開發(fā)與設(shè)計的重要工具,其優(yōu)點是:支持自上而下和基于庫的設(shè)計,支持范圍廣,具有多層次描述系統(tǒng)硬件功能的能力。VHDL語言已成為IEEE的一種工業(yè)標(biāo)準(zhǔn),是實現(xiàn)信息系統(tǒng)硬件開發(fā)所必備的知識和技能。VHDL程序結(jié)構(gòu)的顯著特點是
8、,任何一個工程設(shè)計或稱設(shè)計實體(可以是一個門電路、一個芯片、一塊電路板乃至整個系統(tǒng))都可以分成內(nèi)外兩個部分,外面的部分稱為可視部分,用實體來說明端口特性;里面的部分稱為不可視部分,用結(jié)構(gòu)體來說明其內(nèi)部功能和算法,由實際的功能描述語句組成。</p><p> 2、模塊程序及相應(yīng)說明</p><p><b> (1)分頻器模塊</b></p><p
9、><b> --FPQ.VHD</b></p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> USE IEEE.STD_LOGIC_AR
10、ITH.ALL;</p><p> ENTITY FPQ IS</p><p> PORT(CLK: IN STD_LOGIC; --CLK=100HZ</p><p> CLK1HZ: OUT STD_LOGIC); --CLK1HZ=1HZ</p><p> END ENTITY FPQ;</p>
11、<p> ARCHITECTURE ART OF FPQ IS</p><p> SIGNAL CNT50: INTEGER RANGE 0 TO 49;</p><p> SIGNAL CLK1: STD_LOGIC;</p><p><b> BEGIN</b></p><p> PROCESS(
12、CLK)</p><p><b> BEGIN</b></p><p> IF CLK'EVENT AND CLK='1' THEN</p><p> IF CNT50=49 THEN</p><p><b> CNT50<=0;</b></p>
13、<p> CLK1<= NOT CLK1; --進行100分頻</p><p><b> ELSE</b></p><p> CNT50<=CNT50+1;</p><p><b> END IF;</b></p><p><b> END IF;
14、</b></p><p> CLK1HZ<=CLK1;</p><p> END PROCESS;</p><p><b> END ART;</b></p><p> 由于現(xiàn)實我們只有某些頻率的信號,而可能沒有我們需要的頻率的信號,因此我們需要用到分頻器來用已有頻率的時鐘信號來產(chǎn)生我們需要的頻
15、率的時鐘信號。本實驗是將100HZ的信號分頻后產(chǎn)生1HZ的基準(zhǔn)時鐘信號。</p><p><b> (2)等待判別模塊</b></p><p> --等待判別模塊DDPB.VHD</p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p&
16、gt;<p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> USE IEEE.STD_LOGIC_ARITH.ALL;</p><p> ENTITY DDPB IS</p><p> PORT(START,WCLK,CLK1HZ: IN STD_LOGIC;</p><p>
17、DDBZ: OUT STD_LOGIC);</p><p><b> END DDPB;</b></p><p> ARCHITECTURE ART OF DDPB IS</p><p> SIGNAL T1min :STD_LOGIC;</p><p> SIGNAL WCLK1: STD_LOGIC_VECT
18、OR(7 DOWNTO 0);</p><p><b> BEGIN</b></p><p> PROCESS(START,CLK1HZ) --產(chǎn)生1分鐘的周期性信號</p><p> VARIABLE CNT60: STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p><b>
19、 BEGIN</b></p><p> IF START='1' THEN</p><p> CNT60:="00000000";</p><p> T1min<='0';</p><p> ELSIF CLK1HZ'EVENT AND CLK1HZ=
20、39;1' THEN</p><p> IF CNT60="00111100" THEN --CNT60=60</p><p> T1min<='1';</p><p> CNT60:="00000000";</p><p><b> ELSE</
21、b></p><p> CNT60:=CNT60+'1';</p><p> T1min<='0';</p><p><b> END IF;</b></p><p><b> END IF;</b></p><p> E
22、ND PROCESS;</p><p> PROCESS(START,WCLK,T1min) --對WCLK進行一分鐘內(nèi)上升沿的計算</p><p><b> BEGIN</b></p><p> IF START='1' THEN</p><p> WCLK1<="000000
23、00";</p><p> ELSIF WCLK'EVENT AND WCLK='1' THEN</p><p> IF T1min='1' THEN</p><p> WCLK1<="00000000";</p><p><b> ELSE<
24、/b></p><p> WCLK1<=WCLK1 +'1';</p><p><b> END IF;</b></p><p><b> END IF;</b></p><p> END PROCESS;</p><p> PROCES
25、S(WCLK1,T1min) --當(dāng)速度小于等于6Km/h時產(chǎn)生等待信號</p><p><b> BEGIN</b></p><p> IF T1min'EVENT AND T1min='1' THEN</p><p> IF WCLK1<="01100100" THEN --
26、wclk1<=100</p><p> DDBZ<='1';</p><p><b> ELSE</b></p><p> DDBZ<='0';</p><p><b> END IF ;</b></p><p>&l
27、t;b> END IF;</b></p><p> END PROCESS;</p><p><b> END ART;</b></p><p> 汽車啟動開始計價后,等待時間和行駛時間的價格不一樣,因此要產(chǎn)生等待時間的標(biāo)志,本設(shè)計根據(jù)WCLK脈沖和時間信號CLK1HZ,來判斷汽車行駛的速度是否小于等于6KM,如果是,
28、則產(chǎn)生等待標(biāo)志。</p><p> (3)等待時間計算模塊</p><p><b> --等待計時模塊</b></p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC
29、_UNSIGNED.ALL;</p><p> USE IEEE.STD_LOGIC_ARITH.ALL;</p><p> ENTITY DDJS IS</p><p> PORT(START,CLK1HZ,DDBZ: IN STD_LOGIC;</p><p> DDSJ:OUT STD_LOGIC_VECTOR(7 DOWNTO
30、 0);</p><p> SJBZ: OUT STD_LOGIC);</p><p><b> END DDJS;</b></p><p> ARCHITECTURE ART OF DDJS IS</p><p> SIGNAL T1min :STD_LOGIC;</p><p> S
31、IGNAL FS,FG: STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p><b> BEGIN</b></p><p> PROCESS(START,CLK1HZ) --產(chǎn)生1分鐘的周期性信號</p><p> VARIABLE CNT60: STD_LOGIC_VECTOR(7 DOWNTO 0);<
32、;/p><p><b> BEGIN</b></p><p> IF START='1' THEN</p><p> CNT60:="00000000";</p><p> T1min<='0';</p><p> ELSIF CLK
33、1HZ'EVENT AND CLK1HZ='1' THEN</p><p> IF CNT60="00111100" THEN</p><p> T1min<='1';</p><p> CNT60:="00000000";</p><p><b
34、> ELSE</b></p><p> CNT60:=CNT60+'1';</p><p> T1min<='0';</p><p><b> END IF;</b></p><p><b> END IF;</b></p>
35、;<p> END PROCESS;</p><p> PROCESS(START,DDBZ,T1min)</p><p><b> BEGIN</b></p><p> IF START='1' THEN</p><p> FS<="0000"; FG&
36、lt;="0000";</p><p> ELSIF T1min'EVENT AND T1min='1' THEN --一分為單位計算等待時間</p><p> IF DDBZ='1' THEN --有等待標(biāo)志信號產(chǎn)生時開始等待時間的計算</p><p> IF FG=2 AND FS=0 THEN
37、</p><p> SJBZ<='1'; --等待時間等于兩分鐘時產(chǎn)生時間標(biāo)志信號</p><p><b> END IF;</b></p><p> IF FG=9 THEN FG<="0000";</p><p> IF FS=5 THEN FS<=&q
38、uot;0000";--當(dāng)時間為59分鐘時清零</p><p><b> ELSE</b></p><p> FS<=FS+'1';</p><p><b> END IF;</b></p><p><b> ELSE</b></p
39、><p> FG<=FG+'1';</p><p><b> END IF;</b></p><p><b> END IF;</b></p><p><b> END IF;</b></p><p> END PROCESS
40、;</p><p> DDSJ(7 DOWNTO 4)<= FS;</p><p> DDSJ(3 DOWNTO 0)<= FG;</p><p><b> END ART;</b></p><p> 根據(jù)產(chǎn)生的等待標(biāo)志進行計時計算,當(dāng)?shù)却龢?biāo)志DDBZ=‘1’時,利用產(chǎn)生的分脈沖進行以分為單位的等待時
41、間計算。</p><p><b> ?。?)里程計算模塊</b></p><p><b> --里程計算模塊</b></p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE I
42、EEE.STD_LOGIC_UNSIGNED.ALL;</p><p> USE IEEE.STD_LOGIC_ARITH.ALL;</p><p> ENTITY LCJS IS</p><p> PORT(START,WCLK,DDBZ: IN STD_LOGIC;</p><p> LCZ:OUT STD_LOGIC_VECTO
43、R(7 DOWNTO 0);</p><p> LCBZ: OUT STD_LOGIC);</p><p><b> END LCJS;</b></p><p> ARCHITECTURE ART OF LCJS IS</p><p> SIGNAL QMZ :STD_LOGIC_VECTOR(7 DOWNTO
44、0);</p><p> SIGNAL FS,FG: STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p><b> BEGIN</b></p><p> PROCESS(START,WCLK)</p><p> VARIABLE MZ: STD_LOGIC_VECTOR(11 DOWNTO
45、 0);</p><p><b> BEGIN</b></p><p> MZ:="000000000000";</p><p> QMZ<=QMZ+'1'; --千米數(shù)計算</p><p> IF QMZ>=3 THEN</p><p>
46、; LCBZ<='1'; --當(dāng)行駛里程大于3Km時產(chǎn)生標(biāo)志信號</p><p><b> END IF;</b></p><p><b> ELSE</b></p><p> MZ:=MZ+'1'; --米數(shù)計算</p><p><b>
47、; END IF;</b></p><p><b> END IF;</b></p><p><b> END IF;</b></p><p> END PROCESS;</p><p><b> LCZ<=QMZ;</b></p>&
48、lt;p><b> END ART;</b></p><p> 當(dāng)DDBZ=‘0’時,汽車處于行駛過程中,根據(jù)WCLK脈沖(汽車行駛1M產(chǎn)生一個脈沖)計算行駛里程。由于行駛里程分辨率為1公里,因此需要先以米為單位計算到1KM時行駛里程再加1。</p><p><b> ?。?)計費值模塊</b></p><p>
49、<b> --計費模塊</b></p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> USE IEEE.STD_LOGIC_ARITH.ALL
50、;</p><p> ENTITY JFZ IS</p><p> PORT(START: IN STD_LOGIC;</p><p> LCZ:IN STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p> DDSJ:IN STD_LOGIC_VECTOR(7 DOWNTO 0);</p><
51、p> JJZ:OUT INTEGER RANGE 0 TO 9999);</p><p> END ENTITY JFZ;</p><p> ARCHITECTURE ART OF JFZ IS</p><p> SIGNAL JFZ1 : INTEGER RANGE 0 TO 9999;</p><p> SIGNAL LC
52、Z1,DDSJ1,DDSJ2,DDSJ3 : INTEGER RANGE 0 TO 199;</p><p><b> BEGIN</b></p><p> LCZ1<=CONV_INTEGER(LCZ); --里程值</p><p> DDSJ2<=CONV_INTEGER(DDSJ(7 DOWNTO 4));DDSJ3&
53、lt;=CONV_INTEGER(DDSJ(3 DOWNTO 0));</p><p> DDSJ1<=DDSJ2*10+DDSJ3; --等待時間計算</p><p> PROCESS(START,LCZ,DDSJ) </p><p><b> BEGIN</b></p><p> IF START=
54、'1' THEN --車啟動顯示起步價</p><p> JFZ1<=100;</p><p> ELSIF DDSJ1<=2 AND LCZ1<=3 THEN --車行駛中的費用計算</p><p> JFZ1<=100;</p><p> ELSIF DDSJ1>2 AND LCZ
55、1<=3 THEN</p><p> JFZ1<=100+(DDSJ1-2)*15;</p><p> ELSIF DDSJ1>2 AND LCZ1>3 THEN</p><p> JFZ1<=100+(LCZ1 - 3)*16 + (DDSJ1 - 2)*15;</p><p><b> EN
56、D IF; </b></p><p> END PROCESS;</p><p> JJZ<=JFZ1;</p><p><b> END ART;</b></p><p> 由行駛里程和等待時間,再根據(jù)計費標(biāo)準(zhǔn)進行計價值JJZ的計算。</p><p><b>
57、; (6)譯碼顯示模塊</b></p><p><b> --譯碼模塊</b></p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p&g
58、t;<p> USE IEEE.STD_LOGIC_ARITH.ALL;</p><p> ENTITY YIMA1 IS</p><p> PORT(LCZ:IN STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p> JJZ:IN INTEGER RANGE 0 TO 9999;</p><p&g
59、t; DDSJ:IN STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p> LCZSX,LCZGX,DDSJSX,DDSJGX,JJZBX,JJZSX,JJZXX: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> JJZGX: OUT STD_LOGIC_VECTOR(3 DOWNTO 0));</p>&
60、lt;p> END YIMA1;</p><p> ARCHITECTURE ART OF YIMA1 IS</p><p> SIGNAL LCZ1 : INTEGER RANGE 0 TO 99 ;</p><p> SIGNAL LCZS,LCZG,JJZB,JJZS,JJZG,JJZX : INTEGER RANGE 0 TO 9 ;</
61、p><p><b> BEGIN</b></p><p> DDSJSX<=DDSJ(7 DOWNTO 4); DDSJGX<=DDSJ(3 DOWNTO 0); --等待時間譯碼顯示</p><p> LCZ1<=CONV_INTEGER(LCZ);</p><p><b> END;
62、</b></p><p> 將等待時間DDSJ、里程值LCZ和計價值JJZ的百位十位個位轉(zhuǎn)換成BCD碼,通過譯碼器在七段數(shù)碼管中顯示出來。</p><p><b> 4 編譯及仿真</b></p><p> ?。ǎ保┓抡孳浖uartus II的簡單介紹和說明</p><p> 隨著技術(shù)的發(fā)展,用戶對開
63、發(fā)工具的要求越來越高,Altera 公司適時推出了新的開發(fā)工具Quartus II 軟件。Quartus II 集成環(huán)境包括以下內(nèi)容:系統(tǒng)級設(shè)計、嵌入式軟件開發(fā)、可編程邏輯器件(PLD)設(shè)計、綜合,布局和布線、驗證和仿真。</p><p> Quartus II 集成環(huán)境除支持MAX 系列、FLEX 系列、ACEX1K 系列器件外,還支持Altera 公司的APEX20K 系列、Stratix 系列、Cyclo
64、ne 系列和MAX II 系列等新型CPLD/FPGA 器件。</p><p> Quartus II 設(shè)計軟件根據(jù)設(shè)計者的需要提供了一個完整的多平臺開發(fā)環(huán)境,它包含整個FPGA 和CPLD設(shè)計階段的解決方案。Quartus II 軟件的開發(fā)流程如下圖所示。</p><p> 圖3 QuartusII 軟件的開發(fā)流程</p><p><b> ?。ǎ玻?/p>
65、仿真波形圖</b></p><p> 圖4 等待判別模塊波形圖</p><p> 圖5 里程值計算模塊波形</p><p> 圖6 等待時間計算模塊波形圖</p><p> 圖7 計價值模塊波形圖</p><p> 圖8 譯碼模塊波形圖</p><p> 圖9 頂層文
66、件波形圖</p><p> 5 硬件調(diào)試與結(jié)果分析</p><p> 通過對設(shè)計電路的分析,該實驗可選擇NO.0號電路進行硬件驗證,鍵3對應(yīng)于START輸入信號,WCLK對應(yīng)于CLK2,CLK1對應(yīng)于CLK0,八個數(shù)碼管作為等待時間、里程值和計價值的顯示用。選定電路圖之后,再選擇ACEX1K/EP1K30TC144-3器件,輸出信號進行引腳鎖定。下載完成后便可進行硬件驗證和調(diào)試。由于本
67、次課程設(shè)計我用的是Quartus Ⅱ軟件,下載出現(xiàn)問題,不能下載。就遺憾的沒有進行硬件驗證。下面是仿真時序圖:</p><p> 圖10 仿真時序圖</p><p> 譯碼過程由于有時間延遲和中間信號替換,導(dǎo)致仿真時序圖出現(xiàn)一些混亂值,但持續(xù)時間很短,不影響譯碼顯示。</p><p><b> 6 參考文獻</b></p>
68、<p> ?。?)黃智偉. FPGA系統(tǒng)設(shè)計與實踐 電子工業(yè)出版社 2005.1</p><p> (2)焦素敏. EDA課程設(shè)計指導(dǎo)書 河南工業(yè)大學(xué) 2008.2</p><p> ?。?)焦素敏. EDA技術(shù)基礎(chǔ) 清華大學(xué)出版社 2009.8</p><p> ?。?)譚會生.EDA技術(shù)綜合應(yīng)用實例與分析 西安電子科技大學(xué)出版社 2004.1
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- eda課程設(shè)計報告--出租車計價器
- eda課程設(shè)計--出租車計價器
- eda課程設(shè)計--出租車計價器
- eda課程設(shè)計---出租車計價器的設(shè)計
- 出租車計價器課程設(shè)計報告
- 出租車計價器課程設(shè)計
- 出租車計價器課程設(shè)計
- 出租車計價器課程設(shè)計
- 出租車計價器課程設(shè)計
- 硬件課程設(shè)計報告--出租車計價器
- 課程設(shè)計---出租車計價器設(shè)計
- 課程設(shè)計--出租車計價器設(shè)計
- 出租車計價器設(shè)計課程設(shè)計
- 課程設(shè)計---出租車計價器設(shè)計
- 出租車計價器課程設(shè)計論文
- 硬件課程設(shè)計----出租車計價器
- 接口課程設(shè)計---出租車計價器
- 課程設(shè)計---出租車計價器的設(shè)計
- 課程設(shè)計--出租車計價器的設(shè)計
- 硬件課程設(shè)計--出租車計價器系統(tǒng)
評論
0/150
提交評論