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

下載本文檔

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

文檔簡介

1、<p>  課 程 設(shè) 計</p><p>  課程設(shè)計名稱: EDA課程設(shè)計 </p><p>  專 業(yè) 班 級 : </p><p>  學(xué) 生 姓 名 : XXX </p><p>  學(xué) 號 : <

2、/p><p>  指 導(dǎo) 教 師 : XXX </p><p>  課程設(shè)計時間: 2013-2-25~2013-3-8</p><p>  電子信息科學(xué)與技術(shù)專業(yè)課程設(shè)計任務(wù)書</p><p>  一、 設(shè)計任務(wù)及要求</p><p>  設(shè)計一個出租車計價器:計費包括起步價、行車?yán)锍逃嬞M、等待時

3、間計費3部分。用3位數(shù)碼管顯示金額,最大值為999.9元,最小計價單元為0.1元;行程3公里內(nèi),且等待時間累計3分鐘內(nèi),起步價10元,超過3公里,以每公里1.6元計費,等待時間單價為每分鐘1.5元;用兩位數(shù)碼管顯示總里程,最大值為99公里用兩位數(shù)碼管顯示等待時間,最大值為59min。 </p><p>  二、設(shè)計原理及總體框圖</p><p>  出租車自動計費器分為分頻模塊、控制

4、模塊、計量模塊、計費模塊、譯碼和顯示模塊。 A)、設(shè)計原理:</p><p><b>  (1)分頻模塊 </b></p><p>  分頻模塊對頻率為240HZ的輸入脈沖進(jìn)行分頻,得到的頻率為16HZ、15HZ、和1HZ的3種頻率。該模塊產(chǎn)生頻率信號用于計費,每個脈沖為0.1元計費控制,其中15Hz信號為1.5元的計費控制,16Hz信號為1.6元計費控制。 &

5、lt;/p><p> ?。?)計量控制模塊 </p><p>  計量控制模塊式出租車自動計費器系統(tǒng)的主體部分,該模塊主要完成等待計時功能、計價功能、計程功能,同時產(chǎn)生3分鐘的等待計時使能控制信號en1、行程3公里外的使能控制信號en0。其中計價功能主要完成的任務(wù)是:行程3公里內(nèi)且等待累計時間在3分鐘內(nèi)起步價為10元3公里以外每公里1.6元計費,等待時間3分鐘以外每分鐘1.5元計費。計

6、時功能主要完成的任務(wù)是:計算乘客的等待累計時間,計時器的量程為59分,滿量程自動歸零。計程主要完成的任務(wù)是:計算乘客所行駛的公里數(shù),計價器的量程為99公里,滿量程自動歸零。</p><p>  (3)譯碼顯示模塊</p><p>  該模塊利用實驗板上的譯碼器和數(shù)碼管分別將輸出的計費數(shù)據(jù)(4位BCD碼)、計時數(shù)據(jù)(2位BCD碼)和計程數(shù)據(jù)(2位BCD碼)顯示輸出。其中計費數(shù)據(jù)最后以百元、

7、十元、元、叫、角為單位對應(yīng)的數(shù)碼管上顯示,最大顯示為999.9元;計時數(shù)據(jù)最后送至以分為單位對應(yīng)的數(shù)碼管上顯示,最大顯示為59s;計程數(shù)據(jù)最后送至以公里為單位的數(shù)碼管上顯示,最大公里為99公里。</p><p><b>  B)、總體框圖:</b></p><p>  根據(jù)層次化設(shè)計理論將該問題自頂向下可分為分頻模塊、計量模塊、控制模塊、譯碼和顯示模塊各模塊功能如下

8、:</p><p>  三、程序設(shè)計及編譯仿真</p><p><b>  1)、分頻模塊:</b></p><p>  對頻率為240HZ的輸入脈沖進(jìn)行分頻,得到的頻率為16HZ、15HZ、和1HZ的3種頻率。</p><p><b>  程序如下:</b></p><p>

9、;  library IEEE; </p><p>  use IEEE.STD_LOGIC_1164.ALL;</p><p>  use IEEE.STD_LOGIC_ARITH.ALL; </p><p>  use IEEE.STD_LOGIC_UNSIGNED.ALL; </p><p>  entity fp is </p&

10、gt;<p>  port ( clk :in std_logic; </p><p>  q16: out std_logic; --頻率為16的時鐘 </p><p>  q15: out std_logic; --頻率為15的時鐘 </p><p>  q1: out std_logic);

11、 --頻率為1的時鐘 </p><p><b>  end fp; </b></p><p>  architecture qq of fp is </p><p><b>  begin </b></p><p>  process(clk) </p><p>  va

12、riable cout16:integer range 0 to 14; </p><p>  variable cout15:integer range 0 to 15; </p><p>  variable cout1:integer range 0 to 239; </p><p><

13、;b>  begin </b></p><p>  if (clk'event and clk='1') then </p><p>  if cout16=14 --240hz分頻為16hz </p><p>  then cout16:=0;q16<='1'; </p

14、><p>  else cout16:=cout16+1;</p><p>  q16<='0'; </p><p><b>  end if; </b></p><p>  if cout15=15 --240hz分頻為15hz </p><p>  t

15、hen cout15:=0;q15<='1'; </p><p>  else cout15:=cout15+1;q15<='0'; </p><p><b>  end if; </b></p><p>  if cout1=239 --240hz分頻為1hz </p

16、><p>  then cout1:=0;q1<='1'; </p><p>  else cout1:=cout1+1;q1<='0'; </p><p><b>  end if; </b></p><p><b>  end if; </b></

17、p><p>  end process; </p><p><b>  end qq;</b></p><p><b>  仿真波形:</b></p><p><b>  2)計量模塊:</b></p><p>  該模塊主要完成等待計時功能、計價功能、計

18、程功能,同時產(chǎn)生3分鐘的等待計時使能控制信號en1、行程3公里外的使能控制信號en0。以及進(jìn)行滿量程清零。</p><p>  library ieee; </p><p>  use ieee.std_logic_1164.all; </p><p>  use ieee.std_logic_arith.all; </p><p>  us

19、e ieee.std_logic_unsigned.all; </p><p>  entity jiliang is </p><p>  port( s: in std_logic; --計量開始信號 </p><p>  fin: in std_logic; -- 計量路程的信號 </p>

20、<p>  stop: in std_logic; --等待信號 </p><p>  clk1: in std_logic; --計量驅(qū)動信號 </p><p>  en1,en0: buffer std_logic; --計量控制信號 </p><p>  k1,k0: b

21、uffer std_logic_vector(3 downto 0); --路程的計量 </p><p>  m1,m0: buffer std_logic_vector(3 downto 0)); --時間的計量 </p><p>  end jiliang; </p><p>  architecture rt2 of jiliang is &l

22、t;/p><p>  signal w:integer range 0 to 59; </p><p><b>  begin </b></p><p>  process(clk1) </p><p><b>  begin </b></p><p>  if (c

23、lk1'event and clk1='1') then --驅(qū)動信號發(fā)揮作用 </p><p>  if s='0' then w<=0;en1<='0';en0<='0';m1<="0000";m0<="0000";</p><p> 

24、 k1<="0000";k0<="0000"; --初始化值 </p><p>  elsif stop='1' then --等待信號為高時間控制信號開始計時 </p><p>  if w=59 then w<=0; </

25、p><p>  if m0="1001" then m0<="0000"; </p><p>  if m1="0101" then m1<="0000"; </p><p>  else m1<=m1+1; </p><

26、p><b>  end if; </b></p><p>  else m0<=m0+1; </p><p>  end if; --計時 </p><p>  if m1&m0>"00000010"then en1<='1'

27、;; --當(dāng)時間大于3min時使能信號 en1開始使能 </p><p>  else en1<='0'; </p><p><b>  end if; </b></p><p>  else w<=w+1;en1<='0&#

28、39;; </p><p><b>  end if; </b></p><p>  elsif fin='1' then </p><p>  if k0="1001" then k0<="0000";

29、 </p><p>  if k1="1001" then k1<="0000"; </p><p>  else k1<=k1+1; </p><p><b>  end if; </b></p><p>  else k0<=k0+1; </p>

30、;<p>  end if; --記路程 </p><p>  if k1&k0>"00000010" then en0<='1'; --當(dāng)路程大于3km時使能信號 en0開始發(fā)揮作用 </p><p>  else en0<='0&#

31、39;; </p><p>  end if; </p><p>  else en1<='0';en0<='0'; </p><p>  end if; </p><p><b>

32、;  end if; </b></p><p>  end process; </p><p><b>  end rt2;</b></p><p><b>  仿真波形:</b></p><p><b>  3)、控制模塊:</b></p><

33、p>  該模塊主要進(jìn)行時間和里程的切換。</p><p>  library IEEE; </p><p>  use IEEE.STD_LOGIC_1164.ALL; </p><p>  use IEEE.STD_LOGIC_ARITH.ALL; </p><p>  use IEEE.STD_LOGIC_UNSIGNED.ALL;

34、 </p><p>  entity kongzhi is </p><p>  port(ent0,ent1:in std_logic; --輸入的使能選擇信號 </p><p>  clk_in1:in std_logic; --輸入脈沖 </p><p>  clk_in2:in std

35、_logic; --輸入脈沖 </p><p>  clk_out:out std_logic); --輸出脈沖 </p><p>  end kongzhi; </p><p>  architecture rt4 of kongzhi is </p><p><b>  begin &

36、lt;/b></p><p>  process(ent0,ent1)</p><p><b>  begin </b></p><p>  if ent0='1' then --根據(jù)條件選擇所需的通道 </p><p>  clk_out<=clk_in1;

37、</p><p>  elsif ent1='1' then </p><p>  clk_out<=clk_in2; </p><p><b>  end if; </b></p><p>  end process; </p><p><b>  end rt

38、4; </b></p><p><b>  仿真波形:</b></p><p><b>  4)、計費模塊:</b></p><p>  該程序主要進(jìn)行起步價設(shè)置,和計費功能。</p><p>  library IEEE; </p><p>  use IEEE

39、.STD_LOGIC_1164.ALL; </p><p>  use IEEE.STD_LOGIC_ARITH.ALL; </p><p>  use IEEE.STD_LOGIC_UNSIGNED.ALL; </p><p>  entity jifei is </p><p>  port(clk2:in std_logic;

40、 --計費驅(qū)動信號 </p><p>  start: in std_logic; --計費開始信號 </p><p>  c0,c1,c2,c3: buffer std_logic_vector(3 downto 0));--費用顯示信號 </p><p>  end jifei; </p>

41、<p>  architecture rt3 of jifei is </p><p><b>  begin </b></p><p>  process(clk2,start) </p><p><b>  begin </b></p><p>  if start='0&

42、#39; then c3<="0000";c2<="0001";c1<="0000";c0<="0000"; </p><p>  elsif (clk2'event and clk2='1') then </p&

43、gt;<p>  if c0="1001" then c0<="0000"; </p><p>  if c1="1001" then c1<="0000"; </p><p>  if c2="1001" then c

44、2<="0000"; </p><p>  if c3="1001" then c3<="0000";--計費功能 </p><p>  else c3<=c3+1; </p><p><b>  end if; </b></p><p>  

45、else c2<=c2+1; </p><p><b>  end if; </b></p><p>  else c1<=c1+1; </p><p><b>  end if; </b></p><p>  else c0<=c0+1;

46、</p><p><b>  end if; </b></p><p><b>  end if; </b></p><p>  end process; </p><p><b>  end rt3; </b></p><p><b>  仿

47、真波形:</b></p><p>  5)、譯碼顯示模塊:</p><p>  譯碼顯示模塊是應(yīng)用實驗工具箱上的自帶的硬件電路顯示譯碼。</p><p><b>  6)頂層原理圖:</b></p><p><b>  仿真波形: </b></p><p>  五

48、、 硬件調(diào)試與結(jié)果分析</p><p>  在MAX+plus II中對頂層文件進(jìn)行編輯、編譯、綜合、適配和仿真。選擇實驗電路結(jié)構(gòu)NO.5,進(jìn)行引腳鎖定,CLK接到CLOCK0上,開始計費鍵START鎖定到鍵3(PIO0)上,里程控制信號FIN鎖定到鍵2(PIO1)上,等待時間控制信號鎖定到鍵1(PIO)上。計費輸出信號c0,c1,c2,c3分別鎖定到PIO31—PIO28, PIO27—PIO24, PIO23

49、—PIO20, PIO19—PIO16上;時間輸出信號M1,M0分別鎖定到PIO39—PIO36,PIO35—PIO32上;里程輸出信號K1,K0分別鎖定到PIO47—PIO44, PIO43—PIO40上。</p><p>  仿真后下載到硬件實驗箱的電路上,選擇圖NO.5,按鍵3為高電平計費開始,此時顯示起步價10.0元,然后按鍵2為高電平,當(dāng)里程超過3公里后,開始按每公里1.6元計費,再按鍵2為低電平,計費

50、暫停,當(dāng)按下鍵1等待時間STOP為高電平時,開始時間計費,當(dāng)超過3分鐘時,則按每分鐘1.5元計費,當(dāng)按下鍵1等待時間STOP為低電平時,暫停計費,再次按下鍵3為低電平計費停止,并復(fù)位到起步價10.0元,里程顯示,和等待時間顯示同時清零。</p><p><b>  六、心得體會</b></p><p><b>  七、 參考文獻(xiàn)</b></

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論