《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于FPGA的交通燈系統(tǒng)控制設計
基于FPGA的交通燈系統(tǒng)控制設計
東華大學電氣工程系
付銘驥
摘要: 為了對交通燈系統(tǒng)進行精確控制,采用FPGA實驗板,,在QuartusⅡ軟件環(huán)境下,,分別實現脈沖發(fā)生模塊、狀態(tài)定時模塊,、交通燈顯示模塊,、時間顯示模塊,進行仿真實驗和硬件下載,,獲得的測試結果滿足設計要求,。由于采用了EDA技術,使數字系統(tǒng)設計的效率顯著提高,。
關鍵詞: FPGA 交通燈 QuartusⅡ
Abstract:
Key words :

摘要:為了對交通燈系統(tǒng)進行精確控制,,采用FPGA實驗板,在QuartusⅡ軟件環(huán)境下,,分別實現脈沖發(fā)生模塊,、狀態(tài)定時模塊、交通燈顯示模塊,、時間顯示模塊,,進行仿真實驗和硬件下載,獲得的測試結果滿足設計要求,。由于采用了EDA技術,,使數字系統(tǒng)設計的效率顯著提高。
關鍵詞:FPGA,;QuartusⅡ,;交通燈;數字系統(tǒng)設計

目前交通燈廣泛應用于道路交通建設中,。本文設計一個十字路口交通燈控制電路,,要求東西、南北兩條干道的紅,、綠,、黃交通燈按要求循環(huán)變化,并以倒計時方式指示干道通行或禁止的維持時間。在QuartusⅡ軟件環(huán)境中設計,、仿真,,并在FPGA實驗板上實現所設計電路的功能。

1 系統(tǒng)概述

1.1 設計思想
   
基于FPGA的交通燈系統(tǒng)控制設計包括4大模塊,,分別為脈沖發(fā)生,、狀態(tài)定時、交通燈閃爍的控制,、閃爍時間的控制,,基本原理如圖1所示。

1.jpg

1.2 總體工作情況

交通燈控制要求如表1所示,。

該設計的交通燈控制分為6個狀態(tài),。由于各狀態(tài)持續(xù)時間不同,所以電路的核心控制部分是狀態(tài)機和定時器,,狀態(tài)機在定時器觸發(fā)下周期性循環(huán),,狀態(tài)碼控制6個燈以一定的規(guī)律變化。變化情況如圖2所示,。

2.jpg
   
系統(tǒng)脈沖由FPGA開發(fā)板晶振經過分頻電路實現,。狀態(tài)定時由74190可逆十進制計數器和T’觸發(fā)器實現,只要置數合理,,翻轉信號到位,,就可以使電路在東西(I)、南北(J)兩個控制狀態(tài)間翻轉,。紅,、黃、綠燈的閃爍由7485數字比較器和組合邏輯控制,,其中7485數字比較器用于比較計數器當前持續(xù)狀態(tài)和所需要的狀態(tài)全部時間,并做出相應的變化,。組合邏輯控制由AHDL文件編寫真值表實現,。時間顯示由AHDL文件編寫真值表實現,輸入正確的邏輯,,七段譯碼電路即能得到正確的時間顯示,。

1.3 各功能的組成

整個電路可以分為4大部分,包括脈沖發(fā)生,、狀態(tài)定時,、時間顯示和數字比較一組合邏輯控制。

1.3.1 脈沖發(fā)生
 
脈沖發(fā)生器為整個系統(tǒng)提供驅動,,將輸入端分配給FPGA實驗板的PIN55引腳,,則會由實驗板上產生頻率為10 MHz的輸入脈沖,用7片7490,每一級都構成10分頻電路,,使頻率從10 MHz降低為1Hz,。

1.3.2 狀態(tài)定時
   
狀態(tài)定時可由預置BCD碼初值的74190級聯(lián)實現,構成減計數器,。級聯(lián)原則是:低位計數器從全0狀態(tài)變?yōu)樽畲蟠a值狀態(tài)時可使高位計數器減1,。級聯(lián)方式分為異步和同步兩種,本文采取的是異步級聯(lián)方式,,即低位計數器溢出信號控制高位計數器的記數脈沖輸入端,。可根據計數器的時鐘觸發(fā)方式,,在低位計數器狀態(tài)碼從全“0”變?yōu)樽畲蟠a值的瞬間,,為高位計數器提供有效的計數脈沖邊沿。具體做法是將低片位的溢出信號RCON端口接到高片位的計數脈沖CLK,,實現兩位BCD碼的置數,、翻轉和借位,使系統(tǒng)表示的數字能在22~16之間循環(huán),。
    74190功能說明:
    (1)GN為計數器使能控制端,,低電平有效。當GN為高電平時,,禁止計數,。
    (2)DNUP為計數方式控制,接高電平為減計數,,接低電平為加計數,。
    (3)LDN為異步預置數控制。當LDN為低電平時,,計數器狀態(tài)QD,,QC,QB,,QA分別等于D,,C,B,,A,。
    (4)計數器位序由高至低順序為QD,QC,,QB,,QA。QD為最高位MSB,,QA為最低位LSB,。
    (5)計數脈沖CLK上升沿有效,。
    (6)當計數器輸出QDQCQBQA為十進制加計數的最大狀態(tài)碼“1001”或為減計數的最小狀態(tài)碼全“0”時,極值狀態(tài)碼指示MAX/MIN輸出為高電平,。
    (7)當極值狀態(tài)碼指示MAX/MIN為高電平且CLK為低電平時,,溢出信號RCON為低電平,即RCON與計數脈沖同步,。
   
系統(tǒng)記數脈沖為1 Hz時,,如表2所示,當I狀態(tài)(東西控制狀態(tài))的定時時間為22 s,,計數器應該先預置22的BCD碼,;同理,J狀態(tài)(南北控制狀態(tài))之前應該預置16的BCD碼,。

3.jpg

狀態(tài)計時電路由兩片74190級聯(lián)而成,,構成22和16自翻轉的電路。其要解決的核心問題包括置數,,翻轉和借位,。根據74190芯片的特點,可分析其實現原理如圖4所示,,通過溢出信號RCON的上升沿實現借位,,使得數字能夠從20到19,個位向十位借位,,順利過渡,。
   
置數和翻轉之間有先后關系,即須先置數后翻轉,。如表3所示,,分析兩個BCD碼各位特點,可知兩者D7D6D3D0位均為1,,D1位均為0,,而D5D4D2位不同,如圖5,,D5D4D2位由狀態(tài)電平S來控制,,當為I狀態(tài)時,計數器的預置的數為D5=0,,D4=D2=1,而為J狀態(tài)時,,計數器的預置的數為D5=1,,D4=D2=0,根據74190的功能,,將2片74190的MAX/MIN引出,,通過與非門,,分別連在高位和低位的LDN置數端,通過分析可知,,當計數器從01減到00時候,,高低位的MAX/MIN均為高電平,經過與非門以后為低電平,,74190被置數,,其置數值由狀態(tài)S來決定,S是由LDN端信號經

過一個T’觸發(fā)器決定的,,即LDN信號每置數一次,,S翻轉1次,從而區(qū)分16和22狀態(tài),。按這個結構,,可分別置數16和22,使其實現自翻轉,。
   
圖5為狀態(tài)定時模塊的實際連接圖,。

5.jpg

1.3.3 時間顯示
   
時間顯示要用到7段顯示譯碼電路,由于是兩位BCD碼,,故用二選一數據選擇器,。選擇端S接一個頻率很高的方波(如1 kHz);數據比較器的輸出和1 Hz脈沖作為AHDL模塊的輸入,,即可正確顯示時間,。

6.jpg6.jpg

為正確顯示時間,用AHDL文件自編譯碼真值表如下:

QQ截圖未命名1_副本.jpg
            
1.3.4 數字比較一組合邏輯控制
   
該模塊將狀態(tài)定時模塊輸出的時間與時間節(jié)點進行比較,,從而確定電路處于22 s或者16 s的具體的某個狀態(tài),。由表1可知,東西(I)或南北(J)的控制狀態(tài)都有3個階段的控制邏輯,,分別對應3個時間段:1~3 s,,4~6 s和大于6 s,因此,,采用數字比較器進行比較,,確定定時值小于4 s或大于6 s,方法如圖7所示,,采用4片7485數字比較器,,兩兩級聯(lián),其中一個由狀態(tài)定時模塊的輸出與4即二進制0100比較,;另一個由狀態(tài)定時模塊的輸出與6即二進制0110比較,。

8.jpg

編寫組合邏輯真值表,將狀態(tài)信號S,,兩個數字比較器的輸出Y1,,Y2和1 Hz脈沖作為輸入,,各個燈的狀態(tài)作為輸出。從而根據邏輯關系得出對應時間電路的狀態(tài),,控制紅,、黃、綠燈處于不同的狀態(tài),。S判斷電路處于22 s狀態(tài)還是16 s狀態(tài),,Y1,Y2區(qū)分東西,、南北六個階段狀態(tài),,1 Hz脈沖實現綠燈閃爍。

QQ截圖未命名1_副本.jpg
   
2 電路的組構與調試
   
來用QuartusⅡ軟件設計各個模塊,,并進行仿真,。確認結果后,下載至FPGA實驗板中,,進行相應的硬件調試,,調試結果與仿真結果相一致。圖8為仿真波形,,系統(tǒng)上電需要調整的過程,,因此電路正常工作前重復了22s的狀態(tài)。

11.JPG

此內容為AET網站原創(chuàng),,未經授權禁止轉載,。