eda課程設(shè)計報告---出租車計價器_第1頁
已閱讀1頁,還剩14頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論