摘要:為了對(duì)交通燈系統(tǒng)進(jìn)行精確控制,,采用FPGA實(shí)驗(yàn)板,在QuartusⅡ軟件環(huán)境下,,分別實(shí)現(xiàn)脈沖發(fā)生模塊,、狀態(tài)定時(shí)模塊、交通燈顯示模塊,、時(shí)間顯示模塊,,進(jìn)行仿真實(shí)驗(yàn)和硬件下載,獲得的測(cè)試結(jié)果滿足設(shè)計(jì)要求,。由于采用了EDA技術(shù),,使數(shù)字系統(tǒng)設(shè)計(jì)的效率顯著提高。
關(guān)鍵詞:FPGA,;QuartusⅡ,;交通燈;數(shù)字系統(tǒng)設(shè)計(jì)
目前交通燈廣泛應(yīng)用于道路交通建設(shè)中,。本文設(shè)計(jì)一個(gè)十字路口交通燈控制電路,,要求東西,、南北兩條干道的紅、綠,、黃交通燈按要求循環(huán)變化,,并以倒計(jì)時(shí)方式指示干道通行或禁止的維持時(shí)間。在QuartusⅡ軟件環(huán)境中設(shè)計(jì),、仿真,,并在FPGA實(shí)驗(yàn)板上實(shí)現(xiàn)所設(shè)計(jì)電路的功能,。
1 系統(tǒng)概述
1.1 設(shè)計(jì)思想
基于FPGA的交通燈系統(tǒng)控制設(shè)計(jì)包括4大模塊,,分別為脈沖發(fā)生、狀態(tài)定時(shí),、交通燈閃爍的控制,、閃爍時(shí)間的控制,基本原理如圖1所示,。
1.2 總體工作情況
交通燈控制要求如表1所示,。
該設(shè)計(jì)的交通燈控制分為6個(gè)狀態(tài)。由于各狀態(tài)持續(xù)時(shí)間不同,,所以電路的核心控制部分是狀態(tài)機(jī)和定時(shí)器,,狀態(tài)機(jī)在定時(shí)器觸發(fā)下周期性循環(huán),狀態(tài)碼控制6個(gè)燈以一定的規(guī)律變化,。變化情況如圖2所示,。
系統(tǒng)脈沖由FPGA開發(fā)板晶振經(jīng)過(guò)分頻電路實(shí)現(xiàn)。狀態(tài)定時(shí)由74190可逆十進(jìn)制計(jì)數(shù)器和T’觸發(fā)器實(shí)現(xiàn),,只要置數(shù)合理,,翻轉(zhuǎn)信號(hào)到位,就可以使電路在東西(I),、南北(J)兩個(gè)控制狀態(tài)間翻轉(zhuǎn),。紅、黃,、綠燈的閃爍由7485數(shù)字比較器和組合邏輯控制,,其中7485數(shù)字比較器用于比較計(jì)數(shù)器當(dāng)前持續(xù)狀態(tài)和所需要的狀態(tài)全部時(shí)間,并做出相應(yīng)的變化,。組合邏輯控制由AHDL文件編寫真值表實(shí)現(xiàn),。時(shí)間顯示由AHDL文件編寫真值表實(shí)現(xiàn),輸入正確的邏輯,,七段譯碼電路即能得到正確的時(shí)間顯示,。
1.3 各功能的組成
整個(gè)電路可以分為4大部分,包括脈沖發(fā)生,、狀態(tài)定時(shí),、時(shí)間顯示和數(shù)字比較一組合邏輯控制,。
1.3.1 脈沖發(fā)生
脈沖發(fā)生器為整個(gè)系統(tǒng)提供驅(qū)動(dòng),將輸入端分配給FPGA實(shí)驗(yàn)板的PIN55引腳,,則會(huì)由實(shí)驗(yàn)板上產(chǎn)生頻率為10 MHz的輸入脈沖,,用7片7490,每一級(jí)都構(gòu)成10分頻電路,,使頻率從10 MHz降低為1Hz,。
1.3.2 狀態(tài)定時(shí)
狀態(tài)定時(shí)可由預(yù)置BCD碼初值的74190級(jí)聯(lián)實(shí)現(xiàn),構(gòu)成減計(jì)數(shù)器,。級(jí)聯(lián)原則是:低位計(jì)數(shù)器從全0狀態(tài)變?yōu)樽畲蟠a值狀態(tài)時(shí)可使高位計(jì)數(shù)器減1,。級(jí)聯(lián)方式分為異步和同步兩種,本文采取的是異步級(jí)聯(lián)方式,,即低位計(jì)數(shù)器溢出信號(hào)控制高位計(jì)數(shù)器的記數(shù)脈沖輸入端,。可根據(jù)計(jì)數(shù)器的時(shí)鐘觸發(fā)方式,,在低位計(jì)數(shù)器狀態(tài)碼從全“0”變?yōu)樽畲蟠a值的瞬間,,為高位計(jì)數(shù)器提供有效的計(jì)數(shù)脈沖邊沿。具體做法是將低片位的溢出信號(hào)RCON端口接到高片位的計(jì)數(shù)脈沖CLK,,實(shí)現(xiàn)兩位BCD碼的置數(shù),、翻轉(zhuǎn)和借位,使系統(tǒng)表示的數(shù)字能在22~16之間循環(huán),。
74190功能說(shuō)明:
(1)GN為計(jì)數(shù)器使能控制端,,低電平有效。當(dāng)GN為高電平時(shí),,禁止計(jì)數(shù),。
(2)DNUP為計(jì)數(shù)方式控制,接高電平為減計(jì)數(shù),,接低電平為加計(jì)數(shù),。
(3)LDN為異步預(yù)置數(shù)控制。當(dāng)LDN為低電平時(shí),,計(jì)數(shù)器狀態(tài)QD,,QC,QB,,QA分別等于D,,C,B,,A,。
(4)計(jì)數(shù)器位序由高至低順序?yàn)镼D,QC,,QB,,QA,。QD為最高位MSB,QA為最低位LSB,。
(5)計(jì)數(shù)脈沖CLK上升沿有效,。
(6)當(dāng)計(jì)數(shù)器輸出QDQCQBQA為十進(jìn)制加計(jì)數(shù)的最大狀態(tài)碼“1001”或?yàn)闇p計(jì)數(shù)的最小狀態(tài)碼全“0”時(shí),極值狀態(tài)碼指示MAX/MIN輸出為高電平,。
(7)當(dāng)極值狀態(tài)碼指示MAX/MIN為高電平且CLK為低電平時(shí),,溢出信號(hào)RCON為低電平,即RCON與計(jì)數(shù)脈沖同步,。
系統(tǒng)記數(shù)脈沖為1 Hz時(shí),,如表2所示,當(dāng)I狀態(tài)(東西控制狀態(tài))的定時(shí)時(shí)間為22 s,,計(jì)數(shù)器應(yīng)該先預(yù)置22的BCD碼,;同理,J狀態(tài)(南北控制狀態(tài))之前應(yīng)該預(yù)置16的BCD碼,。
狀態(tài)計(jì)時(shí)電路由兩片74190級(jí)聯(lián)而成,構(gòu)成22和16自翻轉(zhuǎn)的電路,。其要解決的核心問(wèn)題包括置數(shù),,翻轉(zhuǎn)和借位。根據(jù)74190芯片的特點(diǎn),,可分析其實(shí)現(xiàn)原理如圖4所示,,通過(guò)溢出信號(hào)RCON的上升沿實(shí)現(xiàn)借位,使得數(shù)字能夠從20到19,,個(gè)位向十位借位,,順利過(guò)渡。
置數(shù)和翻轉(zhuǎn)之間有先后關(guān)系,,即須先置數(shù)后翻轉(zhuǎn),。如表3所示,分析兩個(gè)BCD碼各位特點(diǎn),,可知兩者D7D6D3D0位均為1,,D1位均為0,而D5D4D2位不同,,如圖5,,D5D4D2位由狀態(tài)電平S來(lái)控制,當(dāng)為I狀態(tài)時(shí),,計(jì)數(shù)器的預(yù)置的數(shù)為D5=0,,D4=D2=1,而為J狀態(tài)時(shí),,計(jì)數(shù)器的預(yù)置的數(shù)為D5=1,,D4=D2=0,,根據(jù)74190的功能,將2片74190的MAX/MIN引出,,通過(guò)與非門,,分別連在高位和低位的LDN置數(shù)端,通過(guò)分析可知,,當(dāng)計(jì)數(shù)器從01減到00時(shí)候,,高低位的MAX/MIN均為高電平,經(jīng)過(guò)與非門以后為低電平,,74190被置數(shù),,其置數(shù)值由狀態(tài)S來(lái)決定,S是由LDN端信號(hào)經(jīng)
過(guò)一個(gè)T’觸發(fā)器決定的,,即LDN信號(hào)每置數(shù)一次,,S翻轉(zhuǎn)1次,從而區(qū)分16和22狀態(tài),。按這個(gè)結(jié)構(gòu),,可分別置數(shù)16和22,使其實(shí)現(xiàn)自翻轉(zhuǎn),。
圖5為狀態(tài)定時(shí)模塊的實(shí)際連接圖,。
1.3.3 時(shí)間顯示
時(shí)間顯示要用到7段顯示譯碼電路,由于是兩位BCD碼,,故用二選一數(shù)據(jù)選擇器,。選擇端S接一個(gè)頻率很高的方波(如1 kHz);數(shù)據(jù)比較器的輸出和1 Hz脈沖作為AHDL模塊的輸入,,即可正確顯示時(shí)間,。
為正確顯示時(shí)間,用AHDL文件自編譯碼真值表如下:
1.3.4 數(shù)字比較一組合邏輯控制
該模塊將狀態(tài)定時(shí)模塊輸出的時(shí)間與時(shí)間節(jié)點(diǎn)進(jìn)行比較,,從而確定電路處于22 s或者16 s的具體的某個(gè)狀態(tài),。由表1可知,東西(I)或南北(J)的控制狀態(tài)都有3個(gè)階段的控制邏輯,,分別對(duì)應(yīng)3個(gè)時(shí)間段:1~3 s,,4~6 s和大于6 s,因此,,采用數(shù)字比較器進(jìn)行比較,,確定定時(shí)值小于4 s或大于6 s,方法如圖7所示,,采用4片7485數(shù)字比較器,,兩兩級(jí)聯(lián),其中一個(gè)由狀態(tài)定時(shí)模塊的輸出與4即二進(jìn)制0100比較;另一個(gè)由狀態(tài)定時(shí)模塊的輸出與6即二進(jìn)制0110比較,。
編寫組合邏輯真值表,,將狀態(tài)信號(hào)S,兩個(gè)數(shù)字比較器的輸出Y1,,Y2和1 Hz脈沖作為輸入,,各個(gè)燈的狀態(tài)作為輸出。從而根據(jù)邏輯關(guān)系得出對(duì)應(yīng)時(shí)間電路的狀態(tài),,控制紅,、黃、綠燈處于不同的狀態(tài),。S判斷電路處于22 s狀態(tài)還是16 s狀態(tài),,Y1,Y2區(qū)分東西,、南北六個(gè)階段狀態(tài),,1 Hz脈沖實(shí)現(xiàn)綠燈閃爍。
2 電路的組構(gòu)與調(diào)試
來(lái)用QuartusⅡ軟件設(shè)計(jì)各個(gè)模塊,,并進(jìn)行仿真,。確認(rèn)結(jié)果后,下載至FPGA實(shí)驗(yàn)板中,,進(jìn)行相應(yīng)的硬件調(diào)試,,調(diào)試結(jié)果與仿真結(jié)果相一致。圖8為仿真波形,,系統(tǒng)上電需要調(diào)整的過(guò)程,因此電路正常工作前重復(fù)了22s的狀態(tài),。