覃洪英(長江大學(xué)電子信息學(xué)院,湖北 荊州434023)
模擬路燈控制系統(tǒng)的設(shè)計(jì)方法很多,可以采用PLC為控制單元實(shí)現(xiàn)整個(gè)控制,也可以利用單片機(jī)實(shí)現(xiàn)整個(gè)模擬路燈控制系統(tǒng)的控制,還可以采用FPGA進(jìn)行控制。FPGA具有資源豐富、可靈活編程、運(yùn)算處理方便、功能擴(kuò)展容易等特點(diǎn),為此,筆者基于純硬件FPGA器件實(shí)現(xiàn)了一個(gè)模擬路燈系統(tǒng)的控制。
控制系統(tǒng)結(jié)構(gòu)如圖1所示,路燈布置如圖2所示。具體功能要求是:①支路控制器有時(shí)鐘功能,能設(shè)定、顯示開關(guān)燈時(shí)間,并控制整條支路按時(shí)開燈和關(guān)燈。②支路控制器應(yīng)能根據(jù)環(huán)境明暗變化,自動(dòng)開燈和關(guān)燈。③支路控制器應(yīng)能根據(jù)交通情況自動(dòng)調(diào)節(jié)亮燈狀態(tài):當(dāng)可移動(dòng)物體M(在物體前端標(biāo)出定位點(diǎn),由定位點(diǎn)確定物體位置)由左至右到達(dá)S點(diǎn)時(shí)(見圖2),燈1亮;當(dāng)物體M到達(dá)B點(diǎn)時(shí),燈1滅,燈2亮;若物體M由右至左移動(dòng)時(shí),則亮燈次序與上相反。④支路控制器能分別獨(dú)立控制每只路燈的開燈和關(guān)燈時(shí)間。⑤當(dāng)路燈出現(xiàn)故障時(shí)(燈不亮),支路控制器應(yīng)發(fā)出聲光報(bào)警信號(hào),并顯示有故障路燈的地址編號(hào)[1]。

圖1 路燈控制系統(tǒng)示意圖

圖2 路燈布置示意圖(單位:cm)
根據(jù)設(shè)計(jì)要求,采用FPGA作為控制單元的模擬路燈系統(tǒng)整體設(shè)計(jì)框圖如圖3所示。
系統(tǒng)的外圍電路主要包括光線信號(hào)采集部分、位置信號(hào)采集部分、按鍵輸入部分、路燈指示及故障檢測電路、聲光報(bào)警電路和顯示電路部分。FPGA控制電路根據(jù)不同的按鍵輸入由光線的亮暗或者目標(biāo)物體的位置狀態(tài)或者不同的開關(guān)燈時(shí)間控制路燈的開關(guān),并將當(dāng)前的時(shí)間和模式顯示出來。同時(shí)由路燈指示電路中路燈的故障輸出信號(hào)控制聲光報(bào)警電路利用聲音和燈光進(jìn)行報(bào)警提示[2]。
1)模式調(diào)節(jié)模塊 模式調(diào)節(jié)模塊如圖4所示,該模塊實(shí)現(xiàn)根據(jù)模式按鍵MODE_BUTTON所按次數(shù)的不同,進(jìn)行000至100循環(huán)計(jì)數(shù),當(dāng)模式為000時(shí)進(jìn)行正常計(jì)時(shí)及調(diào)試,當(dāng)模式為001時(shí)實(shí)現(xiàn)路燈同步定時(shí)開關(guān)燈,當(dāng)模式為010時(shí)實(shí)現(xiàn)各支路分別定時(shí)開關(guān)燈,當(dāng)模式為011時(shí)實(shí)現(xiàn)光線亮暗控制開關(guān)燈,當(dāng)模式為100時(shí)實(shí)現(xiàn)交通狀況控制開關(guān)燈。調(diào)試啟動(dòng)鍵OPEN_BUTTON實(shí)現(xiàn)在不同模式下根據(jù)功能要求啟動(dòng)相應(yīng)的設(shè)置。模塊中對(duì)啟動(dòng)鍵所按次數(shù)進(jìn)行從00至11循環(huán)計(jì)數(shù)。CLK0為秒脈沖信號(hào),起消除按鍵抖動(dòng)的作用[3]。

圖3 模擬路燈控制系統(tǒng)整體設(shè)計(jì)框圖
2)正常時(shí)間計(jì)時(shí)及調(diào)試模塊 正常時(shí)間計(jì)時(shí)及調(diào)試模塊如圖5所示,該模塊在秒脈沖CLK0的作用下實(shí)現(xiàn)24h制的正常計(jì)時(shí)(小時(shí)、分鐘、秒),且在000模式下,利用分鐘增加按鍵INC_M(jìn)INUTE和小時(shí)增加按鍵INC_HOUR可以進(jìn)行分鐘和小時(shí)的調(diào)節(jié)。CLK1和CLK2是由CLK0分頻后產(chǎn)生的分鐘和小時(shí)的時(shí)鐘信號(hào)[4]。

圖4 模式調(diào)節(jié)模塊

圖5 正常時(shí)間計(jì)時(shí)及調(diào)試模塊
3)路燈同步定時(shí)開關(guān)燈模塊 該模塊在模式001時(shí)實(shí)現(xiàn)同步定時(shí)開關(guān)燈的功能,其輸入輸出信號(hào)較多,這里不給出模塊圖,其功能流程圖如圖6所示。
4)各支路路燈分別定時(shí)開關(guān)燈模塊 該模塊實(shí)現(xiàn)模式為010時(shí)且調(diào)試狀態(tài)為00和01兩種情況下對(duì)一條支路的路燈實(shí)現(xiàn)開關(guān)燈控制,在模式為010且調(diào)試狀態(tài)為10和11兩種情況下對(duì)另一條支路的路燈實(shí)現(xiàn)開關(guān)燈控制。具體調(diào)試方法與同步定時(shí)開關(guān)燈模塊相同。
5)光線控制模塊 光線控制模塊圖如圖7所示,該模塊在模式011時(shí)判斷光線采集信號(hào)的狀態(tài),實(shí)現(xiàn)光線暗時(shí)開燈,光線亮?xí)r關(guān)燈的功能。

圖6 路燈同步定時(shí)開關(guān)燈模塊流程圖
6)交通狀況控制模塊 交通狀況控制模塊圖如圖8所示,該模塊在模式為100時(shí)由物體運(yùn)動(dòng)的方向和物體所處的位置控制燈的亮滅狀態(tài)。當(dāng)物體從燈LED1向燈LED2方向移動(dòng)時(shí),LED1和LED2依次點(diǎn)亮,最后都熄滅;當(dāng)物體從燈LED2向燈LED1方向移動(dòng)時(shí),LED2和LED1依次點(diǎn)亮,最后都熄滅。
7)譯碼顯示模塊 該模塊實(shí)現(xiàn)對(duì)正常時(shí)間計(jì)時(shí)及調(diào)試模塊、同步定時(shí)開關(guān)燈模塊、支路路燈分別定時(shí)開關(guān)模塊中的時(shí)分秒時(shí)間信號(hào)、正在調(diào)試中的時(shí)鐘和分鐘信號(hào)、模式信號(hào)以及故障路燈編碼信號(hào)進(jìn)行動(dòng)態(tài)掃描譯碼顯示,當(dāng)沒有進(jìn)行時(shí)間設(shè)置時(shí),顯示正常計(jì)時(shí)時(shí)間,在進(jìn)行時(shí)間調(diào)試時(shí),動(dòng)態(tài)顯示當(dāng)前調(diào)試時(shí)間,并顯示當(dāng)前所處的模式[5]。
8)路燈控制模塊 路燈控制模塊圖如圖9所示,該模塊實(shí)現(xiàn)在不同的模式下將不同控制模塊的路燈信號(hào)分別選擇輸出以驅(qū)動(dòng)外部路燈電路,根據(jù)外部路燈輸入的故障信號(hào)判斷路燈是否故障,且在故障時(shí)產(chǎn)生聲光報(bào)警的控制信號(hào)ring輸出和故障路燈編碼信號(hào)輸出。

圖7 光線控制模塊

圖8 交通狀況控制模塊

圖9 路燈控制模塊
將前面各子模塊連接起來,構(gòu)成如圖10所示的頂層設(shè)計(jì)模塊圖。頂層設(shè)計(jì)協(xié)調(diào)了各子模塊功能的實(shí)現(xiàn),完整地實(shí)現(xiàn)了模擬路燈控制系統(tǒng)的所有功能。頂層模塊通過FPGA外接的輸入輸出端口信號(hào)說明如下:DIRECTION [1:0]為物體移動(dòng)方向信號(hào)端口,“01”表示右移,“10”表示左移;S1S2S3[2:0]為物體所處位置信號(hào)端口,有 “001”“010”“100”3種情況;Clk0為秒時(shí)鐘信號(hào);CLKH為掃描時(shí)鐘信號(hào);ENTER_BUTTON為確認(rèn)按鍵;INC_M(jìn)INUTE為分鐘調(diào)節(jié)增加鍵;INC_HOUR為小時(shí)調(diào)節(jié)增加鍵;LIGHT為光線狀態(tài)信號(hào),“0”表示光線亮,“1”表示光線暗;MODE_BUTTON為模式選擇按鍵;OPEN_BUTTON為啟動(dòng)按鍵;ERR0為路燈1故障控制信號(hào);ERR1為路燈2故障控制信號(hào);Ring為故障報(bào)警控制信號(hào);LED1為路燈1控制信號(hào);LED2為路燈2控制信號(hào);LED [6:0]為七段數(shù)碼管驅(qū)動(dòng)信號(hào)。

圖10 頂層設(shè)計(jì)模塊

圖11 模式調(diào)節(jié)模塊仿真波形圖
這里僅對(duì)部分子模塊的仿真波形圖和頂層模塊整體仿真波形圖進(jìn)行分析。圖11為模式調(diào)節(jié)模塊的仿真波形圖,從該圖中可看出,當(dāng)模式按鍵 MODE_BUTTON每按下一次,模式MO加1計(jì)數(shù),從而實(shí)現(xiàn)模式從1到4的循環(huán)變化。當(dāng)啟動(dòng)按鍵OPEN_BUTTON每按下一次,時(shí)間調(diào)節(jié)TIME_ADJUST加1計(jì)數(shù)。圖12為正常時(shí)間計(jì)時(shí)及調(diào)試模塊仿真波形圖,從該圖中可看出,在模式000時(shí),小時(shí)和分鐘調(diào)節(jié)鍵沒有按下時(shí)(即INC_HOUR和INC_M(jìn)INUTE均為0時(shí)),時(shí)分秒正常計(jì)時(shí),當(dāng)進(jìn)行時(shí)間調(diào)節(jié)時(shí),小時(shí)和分鐘調(diào)節(jié)鍵每按下一次(即INC_HOUR和INC_M(jìn)INUTE分別為1時(shí)),小時(shí)和分鐘各增加1進(jìn)行時(shí)間調(diào)節(jié)。從圖13所示的頂層模塊整體仿真波形圖可看出,整個(gè)路燈系統(tǒng)控制完全符合設(shè)計(jì)要求。當(dāng)模式為011時(shí)路燈的狀態(tài)由光線的亮暗進(jìn)行控制,因LIGHT為1,光線暗,所以路燈LED1和LED2全開(即為1);當(dāng)掃描時(shí)鐘被計(jì)數(shù)到110時(shí),動(dòng)態(tài)顯示故障路燈的編號(hào),當(dāng)前路燈無故障(即ERR0和ERR1均為0),故共陰極七段顯示器LED的七段gfedcba為0111111,顯示數(shù)字0;當(dāng)掃描時(shí)鐘被計(jì)數(shù)到111時(shí),動(dòng)態(tài)顯示模式的編號(hào),共陰極七段顯示器LED的七段gfedcba為1001111,顯示數(shù)字3;當(dāng)掃描時(shí)鐘被計(jì)數(shù)到000時(shí),動(dòng)態(tài)顯示秒信號(hào)的個(gè)位,前一個(gè)狀態(tài)LED為1111111,顯示數(shù)字8,后一個(gè)000時(shí)對(duì)應(yīng)LED為1101111,顯示數(shù)字9,秒信號(hào)進(jìn)行了加1計(jì)數(shù)。

圖12 正常時(shí)間計(jì)時(shí)及調(diào)試模塊仿真波形圖

圖13 頂層模塊整體仿真波形圖
以FPGA為控制核心,介紹了FPGA實(shí)現(xiàn)模擬路燈控制系統(tǒng)的過程。經(jīng)過多次調(diào)試與仿真,該控制系統(tǒng)能夠根據(jù)不同的按鍵設(shè)置準(zhǔn)確地實(shí)現(xiàn)正常的時(shí)間調(diào)整和顯示,能同時(shí)設(shè)定開關(guān)燈時(shí)間,各支路能分別設(shè)定開關(guān)燈時(shí)間,能根據(jù)環(huán)境明暗自動(dòng)開關(guān)燈,能根據(jù)交通情況自動(dòng)開關(guān)燈,且能顯示控制系統(tǒng)的當(dāng)前模式及故障路燈的編號(hào),同時(shí)在路燈故障時(shí)發(fā)出報(bào)警信號(hào)。采用FPGA純硬件控制,路燈控制更準(zhǔn)確及時(shí)且系統(tǒng)調(diào)試修改也非常方便。
[1]楊宇,曾謝華,譚可,等 .模擬路燈控制系統(tǒng)軟件設(shè)計(jì) [J].昆明冶金高等專科學(xué)校學(xué)報(bào),2011,20(1):35-40.
[2]錢海月,王海浩,王海洋 .模擬路燈控制系統(tǒng)設(shè)計(jì) [J].寧夏工程技術(shù),2011,10(1):20-24.
[3]黃智偉.FPGA系統(tǒng)設(shè)計(jì)與實(shí)踐 [M].北京:電子工業(yè)出版社,2007.
[4]康華光 .電子技術(shù)基礎(chǔ)(數(shù)字部分)[M].第5版 .北京:高等教育出版社,2006.
[5]劉韜,樓興華.FPGA數(shù)字電子系統(tǒng)設(shè)計(jì)與開發(fā)實(shí)例導(dǎo)航 [M].北京:人民郵電出版社,2005.