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

下載本文檔

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

文檔簡介

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

2、 </p><p>  學 號 </p><p>  姓 名 </p><p>  完成日期 2012.12.23

3、 </p><p><b>  設(shè)計背景</b></p><p>  隨著我國城市化建設(shè)的發(fā)展,越來越多的新興城市的出現(xiàn),使得城市的交通成為了一個主要的問題。同時隨著我國經(jīng)濟的穩(wěn)步發(fā)展,人民的生活水平日漸提高,越來越多的汽車進入尋常老百姓的家庭,再加上政府大力發(fā)展的公交、出租車,車輛越來越多了。這不僅要求道路要越來越寬闊,而且要求有新的交通管理模式的出臺。舊有的

4、交通控制系統(tǒng)的弊病和人們越來 越高的要求激化了矛盾,使原來不太突出的交通問題被提上了日程?,F(xiàn)在有關(guān)部門愈來愈多的注重在交通管理中引進自動化、智能化技術(shù),比如“電子警察”、自適應(yīng)交通信號燈以及耗資巨大的交通指揮控制系統(tǒng)等。隨著經(jīng)濟的發(fā)展和社會的進步,道路交通已愈來愈成為社會活動的重要組成部分。對交通的管控能力,也就從一個側(cè)面體現(xiàn)了這個國家對整個社會的管理控制能力,因此各國都很重視用各種高科技手段來強化對交通的管控能力。</p>

5、<p>  為了確保十字路口的行人和車輛順利,暢通的通過,往往采用電子控制的交通信號來進行指揮。而利用PLD技術(shù)來設(shè)計交通燈來完成這個需求就顯的更加迫切,同樣也是非常的實用和合理。</p><p><b>  二、設(shè)計目標</b></p><p>  通過采用VHDL 語言對交通燈控制器的設(shè)計,使交通燈控制電路用數(shù)字信號自動控制十字路口兩組紅、黃、綠交通

6、燈的狀態(tài)轉(zhuǎn)換的方法,指揮各種車輛和行人安全通行,實現(xiàn)十字路口交通管理的自動化。綠燈亮時,準許車輛通行,但轉(zhuǎn)彎的車輛不得妨礙被放行的直行車輛、行人通行,黃燈亮時,已越過停止線的車輛可以繼續(xù)通行,紅燈亮時,禁止車輛通行。</p><p><b>  三、設(shè)計原理</b></p><p>  1.可編程邏輯器件概述</p><p>  可編程邏輯器件

7、(簡稱PLD)是允許用戶編程(配置)實現(xiàn)所需邏輯功能的電路,一般可利用計算機輔助設(shè)計,即用原理圖、狀態(tài)機、硬件描述語言(VHDL)等方法來表 示設(shè)計思想,經(jīng)過一系列編譯或裝換程序,生成相應(yīng)的目標文件,再由編程器或下載電 纜將設(shè)計文件配置到目標器件中,這時的可編程邏輯器件就可作為滿足用戶需求的專用 集成電路使用了??删幊踢壿嬈骷粌H速度快、集成度高,并且能隨心所欲地完成用戶定義的邏輯 功能,還可以加密和重新編程,其編程次數(shù)最大可達1萬次

8、以上。使用可編程邏輯器件可以大大簡化硬件系統(tǒng)、 降低成本、提高系統(tǒng)的可靠性、靈活性和保密性。PLD的出現(xiàn),打破了由中小規(guī)模通用型集成電路和大規(guī)模專用集成電路壟斷的局面,在通信、數(shù)據(jù)處理、網(wǎng)絡(luò)、儀器、工業(yè)控制、軍事和航空航天等眾多領(lǐng)域得到廣泛應(yīng)用,可以預見,不 久的將來,PLD 將在集成電路市場占統(tǒng)治地位。</p><p>  2.硬件描述語言介紹</p><p>  常用的硬件描述語言有V

9、HDL、Verilog、ABEL。VHDL:作為IEEE的工業(yè)標準硬件描述語言,在電子工程領(lǐng)域,已成為事實上的通用硬件描述語言。Verilog:支持的 EDA 工具較多,適用于RTL級和門電路級的描述,其綜合過程較VHDL稍簡單,但其在高級描述方面不如VHDL。ABEL:一種支持各種不同輸入方式的HDL,被廣泛用于各種可編程邏輯器件的邏 輯功能設(shè)計,由于其語言描述的獨立性,因而適用于各種不同規(guī)模的可編程器件的設(shè)計。</p>

10、<p>  3.仿真軟件Quartus II簡介</p><p>  Altera設(shè)計的Quartus II軟件提供了完整的多平臺設(shè)計環(huán)境,它可以輕易滿足各種 特定設(shè)計的需要,也是單芯片可編程系統(tǒng)(SOPC)設(shè)計的綜合性環(huán)境和 SOPC 開發(fā)的基 本設(shè)計工具,并為 Altera DSP 開發(fā)包進行系統(tǒng)模型設(shè)計提供了集成綜合環(huán)境。Quartus II 設(shè)計工具完全支持 VHDL、Verilog的設(shè)計流程

11、,其內(nèi)部嵌有 VHDL、Verilog 邏輯綜合器。Quartus II包括模塊化的編譯器。編譯器包括的功能模塊有分析/綜合器(Analysis &Synthesis)、適配器Fitter)、裝配器(Assembler)、時序分析器(Timing Analyzer)、設(shè)計輔助模塊(Design Assistant)等??梢酝ㄟ^選擇 Start Compilation (Processing 菜單)可以通過選擇Start Processi

12、ng菜單,然后從Start子菜單中為模塊選擇相應(yīng)的指令。此外,還可以通過選擇Compiler Tool(Tools 菜單)并在Compiler Tool窗口中運行該模塊來啟動編譯器模塊。在Compiler Tool 窗口中,可</p><p>  四、系統(tǒng)分析與總體方案</p><p><b>  1.系統(tǒng)分析</b></p><p>  通過

13、分析可以知道,所要設(shè)計的十字路口交通燈控制電路要能夠使南北方向有左轉(zhuǎn)、直行各三個燈(紅、黃、綠),東西方向有左轉(zhuǎn)、直行各三個燈(紅、黃、綠),三個燈能夠按順序依次亮滅。而且要求綠燈亮轉(zhuǎn)黃燈亮然后其他時間為紅燈,紅燈亮可以直接轉(zhuǎn)綠燈(三種燈的循環(huán)順序如圖3.1所示)。還要求三種燈的點亮時間能夠以倒計時的形式顯示出來??梢杂肰HDL語言合理設(shè)計系統(tǒng)功能,使紅黃綠燈的轉(zhuǎn)換有一個準確的時間間隔和轉(zhuǎn)換順序。</p><p>

14、;  圖4.1三種燈的循環(huán)順序</p><p><b>  2.設(shè)計思路</b></p><p> ?。?)時間脈沖可以直接賦予得到。</p><p> ?。?)10s、5s、40s、30s定時信號用倒計時,計時起始信號由控制流程電路給出,每當計滿所需時間,即向控制電路輸出“時間到”的信號,并使計數(shù)器清零,由控制電路啟、閉三色信號燈。</

15、p><p>  (3)主控電路是核心,這是一個時序電路,其輸入信號為東西、南北方向:</p><p>  10s、5s、40s、30s定時信號,其輸出狀態(tài)控制相應(yīng)的三色燈。</p><p>  (4)三種燈轉(zhuǎn)換狀態(tài)表:</p><p><b>  3.設(shè)計方案</b></p><p>  根據(jù)設(shè)計要求

16、和系統(tǒng)所具有功能,并參考相關(guān)的文獻資料經(jīng)行方案設(shè)計畫出如下所示的十字路口交通燈控制器系統(tǒng)框圖,及為設(shè)計的總體方案,框圖如下圖3.2所示:</p><p>  圖4.2 系統(tǒng)的框圖</p><p><b>  五、電路設(shè)計</b></p><p><b>  1.控制器電路設(shè)計</b></p><p>

17、;  流程控制器的作用是根據(jù)計數(shù)器的計數(shù)值控制各方向上發(fā)光二極管的亮、滅,當計時時間到達,狀態(tài)控制器就響應(yīng),自動跳轉(zhuǎn)到下一個狀態(tài)。此外,當檢測到特殊情況(urgen =‘1’)發(fā)生時,無條件點亮紅燈的二極管(急救燈按下urgen ='1',則東西南北都亮紅燈,在這種狀態(tài)下原來的狀態(tài)必須保持,即東西南北方向定時時間保持不變。急救燈未按下或者按下后恢復,則繼續(xù)計時(計時通過計數(shù)器count),同時恢復東西南北原來燈的狀態(tài))。

18、具體實物模塊如圖5.1所示:</p><p><b>  圖5.1控制器模塊</b></p><p>  2.VHDL程序設(shè)計如下:</p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.

19、STD_LOGIC_UNSIGNED.ALL;</p><p>  ENTITY ledcontrol IS</p><p><b>  PORT(</b></p><p>  reset,clk,urgen: INSTD_LOGIC;</p><p>  state: OUTSTD_LOGIC_VECT

20、OR(2 DOWNTO 0);</p><p>  sub,set1,set2,set3,set4: OUTSTD_LOGIC);</p><p>  END ledcontrol;</p><p>  ARCHITECTURE a OF ledcontrol IS</p><p>  SIGNAL count : STD_LOGIC_

21、VECTOR(6 DOWNTO 0);</p><p>  SIGNAL subtemp: STD_LOGIC;</p><p><b>  BEGIN</b></p><p>  sub<=subtemp AND (NOT clk);--將電平型信號變?yōu)槊}沖型,即高電平時輸出一個脈沖</p><p>  stat

22、elabel:</p><p>  PROCESS (reset,clk)</p><p><b>  BEGIN</b></p><p>  IF reset='1' THEN--――系統(tǒng)復位</p><p>  count<="0000000";<

23、;/p><p>  state<="000";</p><p>  set2<='1';set4<='1';</p><p>  ELSIF clk'event AND clk='1' THEN</p><p>  IF urgen='0'

24、; THEN count<=count+1;</p><p>  subtemp<='1';ELSE subtemp<='0';END IF;--經(jīng)過脈沖電平變換后,使得正常狀態(tài)時,正常減計數(shù),緊急狀態(tài)下停止計數(shù)</p><p>  IF count=0 </p><p>  then state<="

25、;000";set1<='1';set2<='1';set3<='1';set4<='1'; </p><p>  ELSIF count=10 then state<="001";set1<='1';</p><p>  ELSIF cou

26、nt=15 THEN state<="010";set1<='1';set2<='1';</p><p>  ELSIF count=55 THEN state<="011";set2<='1';</p><p>  ELSIF count=60 THEN state<

27、;="100";set2<='1';set3<='1';</p><p>  elsif count=70 THEN state<="101";set3<='1';</p><p>  elsif count=75 THEN state<="110";s

28、et3<='1';set4<='1';</p><p>  elsif count=105 THEN state<="111";set4<='1';</p><p>  ELSIF count=110 THEN count<="0000000";</p>&l

29、t;p>  ELSE set1<='0'; set2<='0';set3<='0';</p><p>  set4<='0';</p><p>  END IF;</p><p>  END IF; -- ――控制流程</p><p>  

30、END PROCESS statelabel;</p><p><b>  END a;</b></p><p>  2.輸出顯示電路設(shè)計</p><p>  根據(jù)狀態(tài)控制器所控制的狀態(tài)和計數(shù)器的計時時間,選擇當前狀態(tài)下的顯示器,使顯示器輸出當前狀態(tài)下的數(shù)碼管亮、滅指令,其中數(shù)碼管的顯示采用動態(tài)掃描顯示。具體實物模塊如圖:</p>

31、<p>  圖5.2譯碼顯示電路模塊</p><p>  3.VHDL程序設(shè)計如下:</p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p&

32、gt;  ENTITY ledshow IS</p><p>  PORT(clk,urgen: IN STD_LOGIC;</p><p>  state: IN STD_LOGIC_VECTOR(2 DOWNTO 0);</p><p>  sub,set1,set2,set3,set4: IN STD_LOGIC;</p><p

33、>  eg1,ey1,er1,edg2,edy2,edr2,ng1,ny1,nr1,ndg2,ndy2,ndr2:OUTSTD_LOGIC;</p><p>  led1,led2: OUTSTD_LOGIC_VECTOR(7 DOWNTO 0));</p><p>  END ledshow;</p><p>  ARCHITECTURE a OF l

34、edshow IS</p><p>  SIGNAL count1,count2,count3,count4 : STD_LOGIC_VECTOR(7 DOWNTO 0); </p><p>  SIGNAL setstate1,setstate2,setstate3,setstate4 : STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p>

35、;  SIGNAL etg1,ety1,etr1,edirr1,edirg1, ediry1,norg2,nory2,norr2,</p><p>  nordirg2,nordiry 2,nordirr2 : STD_LOGIC; </p><p><b>  BEGIN&

36、lt;/b></p><p>  led1<="00000000" WHEN urgen='1' AND clk='0' ELSE --顯示東西向行和停止</p><p>  count1 WHEN state="000" ELSE</p><p>  count1 WHEN sta

37、te="001" ELSE </p><p>  count2 WHEN state="010" ELSE</p><p>  count2 WHEN state="011" ELSE</p><p><b>  count2;</b></p><p>  le

38、d2<="00000000" WHEN urgen='1' AND clk='0' ELSE</p><p>  count3 WHEN state="000" ELSE</p><p>  count3 WHEN state="001" ELSE</p><p>  

39、count3 WHEN state="010" ELSE</p><p>  count3 WHEN state="011" ELSE</p><p>  count3 WHEN state="100" ELSE</p><p>  count3 WHEN state="101" ELS

40、E</p><p>  count4 WHEN state="110" ELSE</p><p><b>  count4;</b></p><p>  etg1<='1' WHEN state="000" AND urgen='0' ELSE '0'

41、;</p><p>  ety1<='1' WHEN state="001" AND urgen='0' ELSE '0';</p><p>  etr1<='1' WHEN state="010" or urgen='1' OR state="0

42、11" OR state="100" OR state="101" OR state="110" OR state="111" ELSE '0';</p><p>  edirg1<='1' WHEN state="010" and urgen='0'

43、 ELSE '0';</p><p>  ediry1<='1' WHEN state="011" and urgen='0' ELSE '0';</p><p>  edirr1<='1' WHEN state="000" OR urgen='1

44、' OR state="001" OR state="100" OR state="101" OR state="110" OR state="111" ELSE '0';</p><p>  norg2<='1' WHEN state="100"

45、 AND urgen='0' ELSE '0';</p><p>  nory2<='1' WHEN state="101" and urgen='0' ELSE '0';</p><p>  norr2<='1' WHEN state="000&quo

46、t; OR state="001" OR state="010" OR state="011" OR state="110" OR state="111" OR urgen='1' ELSE '0';</p><p>  nordirg2<='1' WHEN s

47、tate="110" AND urgen='0' ELSE '0';</p><p>  nordiry2<='1' WHEN state="111" and urgen='0' ELSE '0';</p><p>  nordirr2<='1

48、9; WHEN state="000" OR state="001" OR state="010" OR state="011" OR state="100" OR urgen='1' OR state="101" ELSE '0';</p><p>  sets

49、tate1<= "00010000" WHEN state="000" ELSE</p><p>  "00000101" WHEN state="001" ELSE</p><p>  "10010101" ;</p><p>  setstate2&l

50、t;= "00010101" WHEN state="000" ELSE</p><p>  --"00000101" WHEN state="001" ELSE</p><p>  "01000000" WHEN state="010" ELSE</p>

51、;<p>  "00000101" WHEN state="011" ELSE</p><p>  "01010000" ;</p><p>  setstate3<= "01100000" WHEN state="000" ELSE</p><

52、p>  "00010000" WHEN state="100" ELSE</p><p>  "00000101" WHEN state="101" ELSE</p><p>  "00110101" ;</p><p>  setstate4<= &q

53、uot;01110101" WHEN state="000" ELSE</p><p>  "00110000" WHEN state="110" ELSE</p><p>  "00000101" ;</p><p>  label4: ----南北直行</p

54、><p>  PROCESS (sub)</p><p><b>  BEGIN</b></p><p>  IF sub'event AND sub='1' THEN</p><p>  IF set4='1' THEN</p><p>  count4<

55、;=setstate4;</p><p>  elsif count4(3 downto 0)="0000" then count4<=count4-7;</p><p>  ELSE count4<=count4-1; </p><p><b>  END IF;</b></p><p>

56、;  ndy2<=nordiry2;</p><p>  ndg2<=nordirg2;ndr2<=nordirr2;</p><p><b>  END IF;</b></p><p>  END PROCESS label4;</p><p>  label3:

57、 ----南北左行</p><p>  PROCESS (sub)</p><p><b>  BEGIN</b></p><p>  IF sub'event AND sub='1' THEN</p><p>  IF set3='1' THEN</p><p

58、>  count3<=setstate3;</p><p>  elsif count3(3 downto 0)="0000" then count3<=count3-7;</p><p>  ELSE count3<=count3-1; </p><p><b>  END IF;</b></

59、p><p>  ng1<=norg2;</p><p>  ny1<=nory2;</p><p>  nr1<=norr2;</p><p><b>  END IF;</b></p><p>  END PROCESS label3;</p>&l

60、t;p>  label2: ---東西直行</p><p>  PROCESS (sub)</p><p><b>  BEGIN</b></p><p>  IF sub'event AND sub='1' THEN</p><p>  IF set2='1' TH

61、EN</p><p>  count2<=setstate2;</p><p>  elsif count2(3 downto 0)="0000" then count2<=count2-7;</p><p>  ELSE count2<=count2-1; END IF;</p><p>  edg2&

62、lt;=edirg1;</p><p>  edy2<=ediry1;</p><p>  edr2<=edirr1;</p><p><b>  END IF;</b></p><p>  END PROCESS label2;</p><p>  label1:

63、 --東西左行</p><p>  PROCESS (sub)</p><p><b>  BEGIN</b></p><p>  IF sub'event AND sub='1' THEN</p><p>  IF set1='1' THEN</p><

64、p>  count1<=setstate1;</p><p>  elsif count1(3 downto 0)="0000" then count1<=count1-7;</p><p>  ELSE count1<=count1-1; </p><p><b>  END IF;</b><

65、/p><p>  eg1<=etg1;</p><p>  er1<=etr1;</p><p>  ey1<=ety1;</p><p><b>  END IF;</b></p><p>  END PROCESS label1;</p><

66、p><b>  END a;</b></p><p><b>  程序仿真與分析</b></p><p><b>  仿真原理圖</b></p><p><b>  2.仿真結(jié)果</b></p><p>  利用Quartus II軟件對本程序進行編

67、譯,生成了可以進行仿真定時分析以</p><p>  及下載到可編程器件的相關(guān)文件。仿真結(jié)果如圖6.1所示:</p><p><b>  圖6.1 仿真結(jié)果</b></p><p><b>  3.仿真結(jié)果分析</b></p><p>  通過設(shè)定clk值以及reset和urgen的初值,就可以得到

68、如上所示的仿真波形圖。由仿真波形圖可以看出波形是由reset初值信號觸發(fā)而顯示出各個狀態(tài)的。Urgen高電平信號輸入時,所有交通燈都變?yōu)榧t燈狀態(tài)。由仿真波形圖還可以清楚的看出各時間段每個交通燈的狀態(tài)。</p><p>  要得到正確的仿真波形圖就不許設(shè)定合適的時間信號clk值。如果clk值設(shè)置的太小則交通燈狀態(tài)變化得太快無法分辨,如果clk值設(shè)置得太大則交通燈狀態(tài)轉(zhuǎn)換緩慢,效果不明顯。其次,要設(shè)定reset初值,

69、如果沒有設(shè)定reset初值就不可能觸發(fā)而得到仿真圖。最后,就是要設(shè)置Urgen高電平信號來檢測緊急情況下的交通燈的狀態(tài)。</p><p><b>  七、心得體會</b></p><p>  為期一周的PLD原理與應(yīng)用課程設(shè)計,使我對PLD技術(shù)有了全新的認識,現(xiàn)在能夠熟練的使用QuartsII,能夠用VHDL語言編寫簡單的、實用的小程序,這次課程設(shè)計重點學習了交通燈部

70、分程序的編寫、調(diào)試、還有硬件下載、操作等過程。在整個課程設(shè)計的過程中,我查閱了大量的關(guān)于EDA的資料,特別是在網(wǎng)上和圖書館我找到了大量的關(guān)于硬件編程的資料。</p><p>  通過此次課程設(shè)計,使我更加深入的了解VHDL語言的應(yīng)用,也使我對QUARTER II軟件的操作,更加的熟練,加強了我動手、思考和解決問題的能力?,F(xiàn)在設(shè)計已經(jīng)做好了,自己感覺還是比較好的,雖然花了很多的時間,但學到了很多東西,做課程設(shè)計的時

71、候,自己把整個書本都看了幾遍,增強了自己對指示的理解,通過此次課程設(shè)計,使我更加深入的了解VHDL語言的應(yīng)用,也使我對QUARTER II軟件的操作,更加的熟練,加強了我動手、思考和解決問題的能力?,F(xiàn)在設(shè)計已經(jīng)做好了,自己感覺還是比較好的,雖然花了很多的時間,但學到了很多東西,做課程設(shè)計的時候,自己把整個書本都看了幾遍,增強了自己對指示的理解,很多以前不是很懂的問題現(xiàn)在都已經(jīng)解決了。</p><p>  最后非常

72、感謝呂治國老師在此次課程設(shè)計中對我的指導,使我能更加順利的完成此次的課程設(shè)計。</p><p><b>  八、參考文獻</b></p><p>  [1] 閻石主. 數(shù)字電子技術(shù)基礎(chǔ). 高等教育出版社, 1998</p><p>  [2] 譚會生. EDA技術(shù)及應(yīng)用. 西安電子科技大學出版社, 2001</p><p&

73、gt;  [3] 張原. 可編程邏輯器件設(shè)計及應(yīng)用. 機械工業(yè)出版社, 2010</p><p>  [4] 王小軍. VHDL簡明教程. 北京:清華大學出版社,1997</p><p>  [5] 楊崇志. 特殊新型電子元件手冊. 遼寧科學技術(shù)出版社, 1999</p><p>  [6] 彭介華. 電子技術(shù)課程設(shè)計指導. 高等教育出版社, 2000</p&

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論