萬 飛
(武漢職業技術學院,湖北武漢 434000)
在當今城市管理建設中,為保證城市照明系統的正常開關燈和運行,保證當照明控制箱或線路出現問題時,不會造成大面積滅燈,產生較壞的影響,加強實時監測手段,實現故障的及時發現和維修尤為重要。將控制芯片應用到路燈控制系統上,使得控制更加高效和人性化,也更環保和節能,而使用FPGA來設計路燈控制系統,而且器件性價比極高。本設計在傳統模擬電路的基礎上加入數字電路控制單元,實現模擬電路與數字電路的結合設計,使路燈控制更為節能環保。
FPGA一般由3種可編程電路和一個用于存放編程數據的靜態存儲器sram組成。這3種可編程電路是:可編程邏輯模塊 (CLB-Configurable Logic Block)、輸入/輸出模塊 (IOB-I/O Block)和互連資源 (IR-Interconnect Resource)。圖1是CLB基本結構框圖,它主要由邏輯函數發生器、觸發器、數據選擇器等電路組成。

圖1 CLB基本結構框圖
輸入/輸出模塊IOB。IOB提供了器件引腳和內部邏輯陣列之間的連接。它主要由輸入觸發器、輸入緩沖器和輸出觸發/鎖存器、輸出緩沖器組成。
可編程互連資源IR可以將FPGA內部的CLB和CLB之間、CLB和IOB之間連接起來,構成各種具有復雜功能的系統。IR主要由許多金屬線段構成,這些金屬線段帶有可編程開關,通過自動布線實現各種電路的連接。
VHDL的英文全名是Very-High-Speed Integrated Circuit HardwareDescription Language,即超高速集成電路硬件描述語言。VHDL語言是一種用于電路設計的高級語言。VHDL主要用于描述數字系統的結構,行為,功能和接口。與其他硬件描述語言相比,VHDL具有以下特點:
(1)功能強大、設計靈活;
(2)支持廣泛、易于修改;
(3)強大的系統硬件描述能力;
(4)獨立于器件的設計、與工藝無關;
(5)很強的移植能力;
(6)易于共享和復用。
(1)Altera QuartusⅡ作為一種可編程邏輯的設計環境,由于其強大的設計能力和直觀易用的接口,越來越受到數字系統設計者的歡迎 (見圖2)。Altera QuartusⅡ (3.0和更高版本)設計軟件是業界唯一提供FPGA和固定功能HardCopy器件統一設計流程的設計工具。
2.0 版QuartusⅡ設計軟件現在除了支持Altera的APEX 20KE,APEX 20KC,APEXⅡ,ARM的Excalibur嵌入處理器方案,Mercury,FLEX10KE和ACEX1K之外,還支持MAX3000A,MAX7000系列乘積項器件。MAX3000A和MAX7000設計者現在可以使用QuartusⅡ設計軟件中才有的所有強大的功能。QuartusⅡ2.0安裝軟件不選擇Excalibur嵌入處理器,減少了安裝所需空間,加快了軟件的裝載,編譯,仿真速度。QuartusⅡ2.0設計軟件通過增強層次LogicLock模塊級設計方式,將性能平均改善15%;編譯速度更快,對設計性能的影響最小;提供了HDL測試模板快速地開發HDL仿真矢量;可以自動地從QuartusⅡ仿真器波形文件中創建完整的HDL測試平臺;支持高速I/O設計,生成專用I/O緩沖信息規范 (IBIS)模型導入到常用的EDA信號集成工具中;簡化第三方工具的分析。
(2)Proteus是英國Labcenter公司開發的電路分析與實物仿真及印制電路板設計軟件,它可以仿真、分析各種模擬電路與集成電路,軟件提供了大量模擬與數字元器件及外部設備,各種虛擬儀器,特別是它具有對單片機及其外圍電路組成的綜合系統的交互仿真功能。Proteus主要由ISIS和ARES兩部分組成,ISIS的主要功能是原理圖設計及與電路原理圖的交互仿真,ARES主要用于印制電路板的設計。

圖2 QuartusⅡ設計流程
基于FPGA的路燈控制系統是通過對路面上各種環境的自動檢測,來實現自動控制路燈的開關,以達到節電等目的的 (見圖3)。此系統要滿足下面的基本要求:

圖3
(1)支路控制器有時鐘功能,能設定、顯示開關燈時間,并控制整條支路按時開燈和關燈。
(2)支路控制器應能根據環境明暗變化,自動開燈和關燈。
(3)支路控制器應能根據交通情況自動調節亮燈狀態:當可移動物體M(在物體前端標出定位點,由定位點確定物體位置)由左至右到達S點時(見圖4),燈1亮;當物體M到達B點時,燈1滅,燈2亮;若物體M由右至左移動時,則亮燈次序與上相反。

圖4
(4)支路控制器能分別獨立控制每只路燈的開燈和關燈時間。
(5)當路燈出現故障時 (燈不亮),支路控制器應發出聲光報警信號,并顯示故障路燈的地址編號。
設計一個基于FPGA的路燈控制系統,實現支路控制器對單元控制器的有效控制。本系統采用FPGA為主控芯片,采用光敏電阻分壓的方式感應周圍環境明暗的變化,支路控制系統采集分壓值經過FPGA芯片處理后控制路燈的變化。采用超聲波測距傳感器采集由于物體運動所產生的信號,再由FPGA芯片對信號進行處理實現對路燈的合理控制。控制器的時鐘通過VHDL編寫的電子時鐘程序,在FPGA芯片中控制并用字符型液晶顯示,利用按鍵設定、修改時間。當有路燈出現故障后,FPGA會根據返回的電平值進行相應的處理,顯示對應的地址編號,顯示故障路燈的編號,并觸發揚聲器報警。
3.3.1 系統的構成
路燈控制系統以FPGA為控制單元,系統的硬件框圖如圖5所示。

圖5 系統的硬件框圖
3.3.2 系統的工作原理
系統VHDL編寫的時鐘程序,對路燈進行定時開關。通過光學傳感器采集街道亮度的值經過A/D轉換后以電信號的形式傳送給FPGA處理器,處理器通過二進制數值的計算判斷是否亮燈。使用超聲波測距傳感器對路燈間有無物體經過進行檢測,超聲波測距傳感器利用信號遇到障礙物距離的不同反射回來的時間也不同的原理,進行障礙物遠近的檢測。
測距的公式表示為:L=C×T。式中L為測量的距離長度;C為超聲波在空氣中的傳播速度;T為測量距離傳播的時間差 (T為發射到接收時間數值的一半)。由于超聲波易于定向發射、方向性好、強度易控制、與被測量物體不需要直接接觸的優點,是作為液體高度測量的理想手段。在精密的液位測量中需要達到毫米級的測量精度,但是目前國內的超聲波測距專用集成電路都是只有厘米級的測量精度。通過分析超聲波測距誤差產生的原因,提高測量時間差到微秒級,以及用LM92溫度傳感器進行聲波傳播速度的補償后,設計出來的的高精度超聲波測距儀能達到毫米級的測量精度。超聲波測距的原理是利用超聲波在空氣中的傳播速度為已知,測量聲波在發射后遇到障礙物反射回來的時間,根據發射和接收的時間差計算出發射點到障礙物的實際距離,超聲波信號反射回來被接收管接收,經過處理之后,通過數字傳感器接口返回到FPGA進行判斷是否有物體經過,以發出路燈開關信號。故障檢測部分的工作原理是通過電流傳感器采集路燈電路的工作電流值傳給處理器然后將這個值與路燈電路的正常工作電流作比較來判斷是否有路燈故障。
3.3.3 系統流程及設計分析 (見圖6)

圖6 系統流程圖
設計分析:本系統的設計主要思路是對路燈實現實時控制,并且可以進行單路控制和總控制。最基本的程序是時鐘程序,設定開燈和開燈時間并能對路燈進行實時控制。同時,路上光線明亮程度和移動物體狀況也是路燈打開的條件。系統主要是基于這三個條件進行設計。
3.3.4 系統單元模塊的設計與實現
(1)時鐘控制模塊
圖7是時鐘程序框圖。

圖7 時鐘程序框圖
為實現精確的定時開關功能,該設計的時標信號的頻率由振蕩器產生,由于計時最小單位為1s,所以時標信號經分頻器后輸出頻率為1Hz的秒脈沖clk;而校準信號的頻率應該高于1Hz,若取信號經另一分頻器后輸出頻率為2Hz的校準信號脈沖clk1。
在無校準信號作用,校分信號、校時信號為高電平時,整個電路處于正常計數的工作狀態。時、分、秒計數器采用同步計數方式,其時鐘脈沖端均接由分頻器輸出的時鐘信號clk(1Hz)。en為計數使能端,高電平有效。秒計數器的en端始終是為高電平,所以每來一個秒脈沖clk,秒計數器計一個數,當秒計數器計到60時,其進位輸出端輸出高電平產生進位,使分計數器的使能端有效,每來一個計數脈沖,分計數器計一個數,這樣就滿60s進1min;當秒計數器和分計數器都計到60,其相應的秒計數器的進位和分計數器的進位同時輸出高電平,使小時計數器的使能端有效時,每來一個計數脈沖,小時計數器計一個數。
(2)信號采集模塊 (見圖8)

圖8 光信號采集電路
信號采集模塊包括光信號采集模塊和移動物體檢測模塊,兩者功能如下:
光信號采集模塊:該模塊需要檢測周圍環境光的明暗程度來進行路燈開關的自動控制。采用由光敏電阻組成的分壓電路進行檢測,通過adc模數轉換器把電壓變化量轉換為二進制數值,送入FPGA檢測并發出控制信號。光敏電阻器又稱光導管,特性是在特定光的照射下,其阻值迅速減小,可用于檢測可見光。在不同的光強下,光敏電阻的電阻值會發生明顯變化,光敏電阻器是利用半導體的光電效應制成的一種電阻值隨入射光的強弱而改變的電阻器;入射光強,電阻減小。
移動物體檢測模塊:本模塊采用T/R-40-12小型超聲波傳感器作為的檢測元件,其中心頻率為40Hz,由晶振發出的40kHz脈沖信號驅動超聲波傳感器發送器發出40kHz的脈沖超聲波,該模塊檢測路燈間物體的移動,超聲波信號被障礙物反射回來,由接收器接收,經LM318兩級放大,再經帶有鎖相環的音頻解碼芯片LM567解碼,當LM567的輸入信號大于25mV時,輸出端由高電平變為低電平,送FPGA處理。
(3)故障報警模塊 (見圖9)

圖9 報警電路
當路燈發生故障,揚聲器會發出警報聲。當有路燈不亮,將會返回一個低電平到FPGA,通過8-3線譯碼器功能,FPGA將確定故障路燈的編號并送到數碼管顯示。
(4)編碼器模塊
8-3編碼器模塊用于顯示故障路燈的編號。邏輯框圖如圖10所示。

圖10 編碼器邏輯框圖
(5)三態與非門模塊
三態與非門用于綜合時間、光線、移動物體三個條件,產生路燈開關信號。
數字時鐘分頻電路邏輯框圖見圖11。

圖11 分頻電路模塊
該模塊的時序仿真圖如圖12所示,滿足設計要求。

圖12 分頻模塊仿真圖
秒計數模塊邏輯框圖如圖13所示。

圖13 秒計數模塊框圖
輸入端口ENL是秒時鐘使能信號,也是整個數字中的使能信號,高電平有效;RES是異步清零信號;CLK是秒脈沖輸入端口;MADD和MDEC是同步校時控制信號,MADD是控制秒信號加一,MDEC是控制秒信號減一;輸出端口A[3..0]是秒時鐘的低位,B[3..0]是高位;CA端口是進位輸出端口,當秒計數到59時輸出高電平,其他時候輸出低電平。
秒時鐘的仿真波形圖如圖14所示,仿真圖滿足設計的要求。分計數和時計數模塊的設計原理與秒模塊的類似。

圖14 秒時鐘仿真波形
動態掃描電路將計數器輸出的8421BCD碼轉換為數碼管需要的邏輯狀態,并且輸出數碼管的片選信號和位選信號。所謂動態掃描顯示方式是在顯示某一位LED顯示塊的數據的時候,讓其他位不顯示,然后在顯示下一位的數據,同時關閉其他顯示塊。這樣做可以使每一個顯示塊顯示與自己相對應的數據。只要保證每一位顯示的時間間隔不要太大,利用人眼的視覺暫留的現象,就可以造成各位數據同時顯示的假象。一般每一位的顯示時間為1~10ms。動態掃描邏輯框圖如圖15所示。

圖15 動態掃描邏輯框圖
比較器用于把采集到的光電壓信號與預先設定的光照電壓值進行比較,以確定出電平的高低,讓FPGA送出路燈控制指令。圖16為仿真波形。

圖16 比較器仿真波形
將程序在運行環境上仿真調試成功后,下載入FPGA開發板上運行調試后,結果與預期效果基本一致,定時開關功能正常,光敏電阻采集信號送入FPGA處理后,控制信號基本能實現對系統的控制。
[1]鄭亞民,董曉丹.可編程邏輯器件開發軟件QUARTUS II[M].北京:國防工業出版社,2006,9.
[2]李云,侯傳教,馮永浩.VHDL電路設計實用教程[M].北京:機械工業出版社,2006.
[3]劉欲曉,方強,黃婉寧.EDA技術與VHDL電路開發應用實例[M].北京:電子工業出版社,2009.
[4]黃智偉.FPGA系統設計與實踐 [M].北京:電子工業出版社,2005,1.
[5]王智鵬.可編程落腳器原理與程序設計 [M].北京:國防工業出版社,2005,1.
[6]wayne wolf.基于FPGA的系統設計 [M].北京:機械工業出版社,2006.
[7]高有堂.EDA技術及應用實踐 [M].北京:清華大學出版社,2006.
[8]clive maxfield,杜生海,邢聞譯.FPGA設計指南器件、工具和流程[M].北京:人民郵電出版社,2007.