課程設(shè)計-- 交通燈控制器設(shè)計_第1頁
已閱讀1頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p>  課 程 設(shè) 計 報 告 </p><p>  課程名稱 PLD原理與應(yīng)用 </p><p>  設(shè)計題目 交通燈控制器設(shè)計 </p><p>  專 業(yè) 通信工程 </p><p>  班 級

2、 </p><p>  學(xué) 號 </p><p>  姓 名 </p><p>  完成日期 2012-12-21

3、 </p><p><b>  一.設(shè)計目的.</b></p><p> ?。?)運(yùn)用VHDL(Verilog)語言編寫模塊程序。</p><p> ?。?)鞏固課堂所學(xué)的組合邏輯電路,時序邏輯電路及其有關(guān)的應(yīng)用,如計數(shù)器,分頻器。</p><p> ?。?)提高實(shí)踐及運(yùn)用意識。</p><p>

4、  二.設(shè)計任務(wù)及要求.</p><p><b>  基本模型:</b></p><p>  設(shè)交通燈信號控制器用于主干道公路的交叉路口,要求是優(yōu)先保證主干道的暢通,因此,平時處于“主干道綠燈,支道紅燈”狀態(tài)。</p><p> ?。?)當(dāng)處于“主干道綠燈,支道紅燈”狀態(tài):</p><p> ?、?主干道有車要求通行,支

5、道也有車要求通行時,若主干道通行時間大于等于30秒則切換到“主黃,支紅”,4秒后自動切換到“主紅,支綠”。</p><p> ?、?主干道無車要求通行,支道有車要求通行時,立即切換到“主黃,支紅”,4秒后自動切換到“主紅,支綠”。</p><p>  其它情況保持“主綠,支紅”狀態(tài)。</p><p> ?。?)當(dāng)處于“主干道紅燈,支道綠燈”狀態(tài):</p>

6、<p>  ① 支道有車要求通行時,保持“主紅,支綠”狀態(tài),但最多保持30秒,然后自動切換到“主紅,支黃”狀態(tài)4秒,之后自動切換到“主綠,支紅”狀態(tài)。</p><p>  ② 支道無車要求通行時,立即切換到“主紅,支黃”狀態(tài),4秒之后,自動切換到“主綠,支紅”狀態(tài)。</p><p> ?。?)利用八位七段管碼顯示模塊其中的2位實(shí)現(xiàn)時間顯示。</p><p&

7、gt; ?。?)擴(kuò)展要求:自主設(shè)計(如改變時間顯示方式,豐富控制邏輯等)</p><p>  三.設(shè)計原理及方案.</p><p><b>  1.總體設(shè)計框圖</b></p><p><b>  2.原理概述:</b></p><p> ?。?)由于主干道,支干道的交通燈均在綠,黃,紅三種狀態(tài)之間

8、有順序的轉(zhuǎn)換,組合共有四種。所以,利用狀態(tài)機(jī)按照設(shè)定的條件實(shí)現(xiàn)“主綠,支紅” 、“主黃,支紅” 、“主紅,支綠”、“主紅,支黃”4種狀態(tài)之間的切換。</p><p>  (2)因為紅黃綠燈之間轉(zhuǎn)換有時間限制,所以要有計數(shù)器,可用七段數(shù)碼管顯示模塊,由于時間是兩位數(shù),所以只需要八位七段管碼顯示模塊其中的2位實(shí)現(xiàn)時間顯示。</p><p>  (3)由于實(shí)驗室提供的基準(zhǔn)頻率為50MHZ,所以得

9、用分頻器得到所需要的頻率。</p><p>  四、VHDL 功能語言實(shí)現(xiàn)程序:</p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  ent

10、ity traffic is</p><p>  port(clk: in std_logic;</p><p>  A1,B1,C1,D1,A2,B2,C2,D2:out std_logic;</p><p>  AR,AY,AG,BR,BY,BG,oe:out std_logic);</p><p><b>  end;<

11、/b></p><p>  architecture arch of traffic is</p><p>  type states is (s3,s2,s1,s0);</p><p>  signal state: states:=s0;</p><p>  signal next_state: states:=s0;</p&

12、gt;<p>  signal count: std_logic_vector(2 downto 0);</p><p>  signal count0: std_logic_vector(3 downto 0);</p><p>  signal count1: std_logic_vector(3 downto 0);</p><p>  sign

13、al data0: std_logic_vector(3 downto 0);</p><p>  signal data1: std_logic_vector(3 downto 0);</p><p>  signal light: std_logic_vector(5 downto 0);</p><p>  signal en,load,carry: std_

14、logic;</p><p><b>  begin</b></p><p>  p1:process(clk,load)</p><p><b>  begin</b></p><p>  if rising_edge(clk) then</p><p>  if load

15、='1' then</p><p>  count0<=data0;</p><p>  elsif count0="0000" then</p><p>  count0<="1001";</p><p><b>  else</b></p>

16、;<p>  count0<=count0-'1';</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  end process p1;</p><p>  p2:process(clk)&l

17、t;/p><p><b>  begin</b></p><p>  if clk='0' then</p><p>  if count0="0000" then</p><p><b>  en<='1';</b></p>&l

18、t;p><b>  else</b></p><p><b>  en<='0';</b></p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  end pr

19、ocess p2;</p><p>  p3:process(clk,en)</p><p><b>  begin</b></p><p>  if (rising_edge(clk) AND en='1') then</p><p>  if load='1' then</p&g

20、t;<p>  count1<=data1;</p><p>  elsif count1="0000" then</p><p>  count1<="0001";</p><p><b>  else</b></p><p>  count1<=

21、count1-'1';</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  end process p3;</p><p>  p4:process(clk)</p><p><b&

22、gt;  begin</b></p><p>  if(falling_edge(clk)) then</p><p>  if(count0="0000" and count1="0000") then</p><p>  load<='1';</p><p>  

23、state<=next_state;</p><p><b>  else</b></p><p>  load<='0';</p><p><b>  end if;</b></p><p><b>  end if;</b></p>

24、<p>  end process p4;</p><p>  p5:process(state)</p><p><b>  begin</b></p><p>  case state is</p><p>  when s0=>light<="001100";</p

25、><p>  next_state<=s1;</p><p>  data0<="0000";</p><p>  data1<="0101";</p><p>  when s1=>light<="010100";</p><p>

26、  next_state<=s2;</p><p>  data0<="0101";</p><p>  data1<="0000";</p><p>  when s2=>light<="100001";</p><p>  next_state<

27、;=s3;</p><p>  data0<="0101";</p><p>  data1<="0011";</p><p>  when s3=>light<="100010";</p><p>  next_state<=s0;</p>

28、<p>  data0<="0101";</p><p>  data1<="0000";</p><p><b>  end case;</b></p><p>  end process p5;</p><p>  A1<=count0(0);B

29、1<=count0(1);C1<=count0(2);D1<=count0(3);</p><p>  A2<=count1(0);B2<=count1(1);C2<=count1(2);D2<=count1(3);</p><p><b>  oe<='0';</b></p><p&

30、gt;  AR<=light(5);</p><p>  AY<=light(4);</p><p>  AG<=light(3);</p><p>  BR<=light(2);</p><p>  BY<=light(1);</p><p>  BG<=light(0);<

31、/p><p><b>  end arch;</b></p><p><b>  五、仿真波形如下:</b></p><p>  六、開發(fā)板引腳連接序號參考表:</p><p><b>  七、設(shè)計總結(jié):</b></p><p>  在實(shí)驗室先后下載多次,第

32、一次時燈亮但數(shù)碼管不能正常顯示,經(jīng)科協(xié)楊許豪耐心的多次調(diào)試,重新檢查并更改管腳,最終還是失敗,顯示器數(shù)字顯示不對,而led指示燈正常工作,之后,楊許豪幫助檢查程序,認(rèn)為程序的編寫與開發(fā)板硬件接口有出處。</p><p>  在設(shè)計過程中遇到不少問題,如編寫的程序,編寫的模塊與開發(fā)板相關(guān)元件引腳不協(xié)調(diào),引腳連接沒掌握,接線步驟不熟悉等問題??傮w感覺就是:學(xué)得不夠,知識真需要不斷學(xué)習(xí)和更新。同時,也感覺到書本知識與實(shí)

33、際問題及需要結(jié)合的難處,但也激發(fā)了我這方面的興趣,提高了理論結(jié)合實(shí)際的意識。通過為期一周的課程設(shè)計,我應(yīng)用所學(xué)數(shù)字電子技術(shù)和自學(xué)的VHDL語言順利得完成了交通燈控制器的設(shè)計。期間,我查閱里很多相關(guān)書籍,學(xué)習(xí)了VHDL語言,并利用它設(shè)計了符合設(shè)計要求的計數(shù)器,分頻器,狀態(tài)機(jī)等。不僅鞏固了課堂知識,而且有效的和實(shí)際結(jié)合在了一起,擴(kuò)展了所學(xué)知識和見識。</p><p><b>  八、參考文獻(xiàn)</b&g

34、t;</p><p>  [1] 潘松,黃繼業(yè).EDA技術(shù)實(shí)用教程[ M ].北京:科學(xué)出版社, 2002. </p><p>  [2] 楊君,王景存.基于VerilogHDL的流水線的設(shè)計方法及應(yīng)用[J].武漢科技大學(xué)學(xué)報(自然科學(xué)版) ,2002.</p><p>  [3] 張 原編著,可編程邏輯器件設(shè)計及應(yīng)用,機(jī)械工業(yè)出版社,2010.</p>

溫馨提示

  • 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

提交評論