基于FPGA的交通燈系統控制設計
摘要:為了對交通燈系統進行精確控制,采用FPGA實驗板,在QuartusⅡ軟件環境下,分別實現脈沖發生模塊、狀態定時模塊、交通燈顯示模塊、時間顯示模塊,進行仿真實驗和硬件下載,獲得的測試結果滿足設計要求。由于采用了EDA技術,使數字系統設計的效率顯著提高。
關鍵詞:FPGA;QuartusⅡ;交通燈;數字系統設計
目前交通燈廣泛應用于道路交通建設中。本文設計一個十字路口交通燈控制電路,要求東西、南北兩條干道的紅、綠、黃交通燈按要求循環變化,并以倒計時方式指示干道通行或禁止的維持時間。在QuartusⅡ軟件環境中設計、仿真,并在FPGA實驗板上實現所設計電路的功能。
1 系統概述
1.1 設計思想
基于FPGA的交通燈系統控制設計包括4大模塊,分別為脈沖發生、狀態定時、交通燈閃爍的控制、閃爍時間的控制,基本原理如圖1所示。
1.2 總體工作情況
交通燈控制要求如表1所示。
該設計的交通燈控制分為6個狀態。由于各狀態持續時間不同,所以電路的核心控制部分是狀態機和定時器,狀態機在定時器觸發下周期性循環,狀態碼控制6個燈以一定的規律變化。變化情況如圖2所示。
系統脈沖由FPGA開發板晶振經過分頻電路實現。狀態定時由74190可逆十進制計數器和T’觸發器實現,只要置數合理,翻轉信號到位,就可以使電路在東西(I)、南北(J)兩個控制狀態間翻轉。紅、黃、綠燈的閃爍由7485數字比較器和組合邏輯控制,其中7485數字比較器用于比較計數器當前持續狀態和所需要的狀態全部時間,并做出相應的變化。組合邏輯控制由AHDL文件編寫真值表實現。時間顯示由AHDL文件編寫真值表實現,輸入正確的邏輯,七段譯碼電路即能得到正確的時間顯示。
1.3 各功能的組成
整個電路可以分為4大部分,包括脈沖發生、狀態定時、時間顯示和數字比較一組合邏輯控制。
1.3.1 脈沖發生
脈沖發生器為整個系統提供驅動,將輸入端分配給FPGA實驗板的PIN55引腳,則會由實驗板上產生頻率為10 MHz的輸入脈沖,用7片7490,每一級都構成10分頻電路,使頻率從10 MHz降低為1Hz。
1.3.2 狀態定時
狀態定時可由預置BCD碼初值的74190級聯實現,構成減計數器。級聯原則是:低位計數器從全0狀態變為較大碼值狀態時可使高位計數器減1。級聯方式分為異步和同步兩種,本文采取的是異步級聯方式,即低位計數器溢出信號控制高位計數器的記數脈沖輸入端。可根據計數器的時鐘觸發方式,在低位計數器狀態碼從全“0”變為較大碼值的瞬間,為高位計數器提供有效的計數脈沖邊沿。具體做法是將低片位的溢出信號RCON端口接到高片位的計數脈沖CLK,實現兩位BCD碼的置數、翻轉和借位,使系統表示的數字能在22~16之間循環。
74190功能說明:
(1)GN為計數器使能控制端,低電平有效。當GN為高電平時,禁止計數。
(2)DNUP為計數方式控制,接高電平為減計數,接低電平為加計數。
(3)LDN為異步預置數控制。當LDN為低電平時,計數器狀態QD,QC,QB,QA分別等于D,C,B,A。
(4)計數器位序由高至低順序為QD,QC,QB,QA。QD為較高位MSB,QA為較低位LSB。
(5)計數脈沖CLK上升沿有效。
(6)當計數器輸出QDQCQBQA為十進制加計數的較大狀態碼“1001”或為減計數的較小狀態碼全“0”時,極值狀態碼指示MAX/MIN輸出為高電平。
(7)當極值狀態碼指示MAX/MIN為高電平且CLK為低電平時,溢出信號RCON為低電平,即RCON與計數脈沖同步。
系統記數脈沖為1 Hz時,如表2所示,當I狀態(東西控制狀態)的定時時間為22 s,計數器應該先預置22的BCD碼;同理,J狀態(南北控制狀態)之前應該預置16的BCD碼。
狀態計時電路由兩片74190級聯而成,構成22和16自翻轉的電路。其要解決的核心問題包括置數,翻轉和借位。根據74190芯片的特點,可分析其實現原理如圖4所示,通過溢出信號RCON的上升沿實現借位,使得數字能夠從20到19,個位向十位借位,順利過渡。
置數和翻轉之間有先后關系,即須先置數后翻轉。如表3所示,分析兩個BCD碼各位特點,可知兩者D7D6D3D0位均為1,D1位均為0,而D5D4D2位不同,如圖5,D5D4D2位由狀態電平S來控制,當為I狀態時,計數器的預置的數為D5=0,D4=D2=1,而為J狀態時,計數器的預置的數為D5=1,D4=D2=0,根據74190的功能,將2片74190的MAX/MIN引出,通過與非門,分別連在高位和低位的LDN置數端,通過分析可知,當計數器從01減到00時候,高低位的MAX/MIN均為高電平,經過與非門以后為低電平,74190被置數,其置數值由狀態S來決定,S是由LDN端信號經
過一個T’觸發器決定的,即LDN信號每置數一次,S翻轉1次,從而區分16和22狀態。按這個結構,可分別置數16和22,使其實現自翻轉。
圖5為狀態定時模塊的實際連接圖。
1.3.3 時間顯示
時間顯示要用到7段顯示譯碼電路,由于是兩位BCD碼,故用二選一數據選擇器。選擇端S接一個頻率很高的方波(如1 kHz);數據比較器的輸出和1 Hz脈沖作為AHDL模塊的輸入,即可正確顯示時間。
為正確顯示時間,用AHDL文件自編譯碼真值表如下:
1.3.4 數字比較一組合邏輯控制
該模塊將狀態定時模塊輸出的時間與時間節點進行比較,從而確定電路處于22 s或者16 s的具體的某個狀態。由表1可知,東西(I)或南北(J)的控制狀態都有3個階段的控制邏輯,分別對應3個時間段:1~3 s,4~6 s和大于6 s,因此,采用數字比較器進行比較,確定定時值小于4 s或大于6 s,方法如圖7所示,采用4片7485數字比較器,兩兩級聯,其中一個由狀態定時模塊的輸出與4即二進制0100比較;另一個由狀態定時模塊的輸出與6即二進制0110比較。
編寫組合邏輯真值表,將狀態信號S,兩個數字比較器的輸出Y1,Y2和1 Hz脈沖作為輸入,各個燈的狀態作為輸出。從而根據邏輯關系得出對應時間電路的狀態,控制紅、黃、綠燈處于不同的狀態。S判斷電路處于22 s狀態還是16 s狀態,Y1,Y2區分東西、南北六個階段狀態,1 Hz脈沖實現綠燈閃爍。
2 電路的組構與調試
來用QuartusⅡ軟件設計各個模塊,并進行仿真。確認結果后,下載至FPGA實驗板中,進行相應的硬件調試,調試結果與仿真結果相一致。圖8為仿真波形,系統上電需要調整的過程,因此電路正常工作前重復了22s的狀態。
相關閱讀:
- ...2012/03/31 10:53·基于FPGA的射頻讀卡器設計
- ...2011/12/02 16:57·基于FPGA直接序列擴頻系統的設計
- ...2011/11/07 15:11·基于FPGA的高速串行傳輸系統的設計與實現
- ...2011/11/07 15:10·基于FPGA的通用異步收發器設計
- ...2011/11/07 15:10·基于FPGA的遠距離測溫器數控系統設計
- ...2011/10/31 16:02·基于FPGA的數據采集系統設計
- ...· Efinix® 全力驅動AI邊緣計算,成功推出Trion™ T20 FPGA樣品, 同時將產品擴展到二十萬邏輯單元的T200 FPGA
- ...· 英飛凌亮相進博會,引領智慧新生活
- ...· 三電產品開發及測試研討會北汽新能源專場成功舉行
- ...· Manz亞智科技跨入半導體領域 為面板級扇出型封裝提供化學濕制程、涂布及激光應用等生產設備解決方案
- ...· 中電瑞華BITRODE動力電池測試系統順利交付北汽新能源
- ...· 中電瑞華FTF系列電池測試系統中標北京新能源汽車股份有限公司
- ...· 中電瑞華大功率高壓能源反饋式負載系統成功交付中電熊貓
- ...· 中電瑞華國際在電動汽車及關鍵部件測評研討會上演繹先進測評技術