太陽能是一種清潔的綠色能源,半導體發光二極管(LED)也是一種環保、節能、高效的固態電光源。將LED技術和太陽能技術相結合在一起,開發太陽能半導體照明,是最佳的節能、環保組合,是新一代能源和新一代光源的完美結合。研究開發利用太陽能LED照明技術將是世界各國政府可持續發展的戰略決策,意義重大。
本文的研究對象是太陽能LED照明控制系統控制器中的處理器。系統通過控制器實現系統工作狀態的管理、蓄電池剩余容量的管理、蓄電池充電、放電控制、太陽能電池電源及市電電源的切換控制以及LED負載半功率控制等主要功能。而控制器是主要依靠處理器的運轉來實現上述功能的。
1、系統構成
太陽能LED照明控制系統主要由太陽能電池、蓄電池、系統控制器、LED照明負載和市電電源5部分組成,系統組成原理圖如圖1所示。系統正常工作時,由蓄電池向LED負載供電,在蓄電池電壓不足時,由市電(備用電源)直接向LED負載供電,避免了蓄電池電壓不足時LED負載不亮的情況。有了市電作為備用電源,在設計時可以適當降低蓄電池的容量,降低成本。同時避免了由于利用太陽能而導致的市電資源的浪費,達到可靠性和經濟性要求。
系統工作時通過太陽能電池將太陽輻射能轉化為電能,但是由于太陽能電池的輸出受溫度和太陽輻射強度影響很大,輸出功率不穩定,因而在太陽輻射強度足夠大的時(白天)需要利用蓄電池將轉化的電能儲存起來,以便在需要照明時(晚上)向半導體照明負載供電。在太陽能半導體照明系統中,控制器是其核心部分,系統工作時通過控制器實現對系統工作狀態的控制和對蓄電池充放電過程的管理,以使系統在不同的工作狀態下均能穩定可靠地工作。
系統各個組成部分的主要功能如下:
(1)太陽能電池。由許多太陽能電池組件串、并聯而成,其合成的容量可以是數百峰瓦(Wp),也可達數個兆峰瓦(Wp)甚至更大,組件可由單晶硅、多晶硅、非晶硅或其他類型的太陽能電池組成。一般來說,光伏陣列由于多為半導體器件構成,其伏安特性具有強烈的非線性。
(2)蓄電池組。蓄電池也稱電瓶,是太陽能LED照明系統的關鍵部分。一般是由一定數量的鉛酸蓄電池經由串、并聯組合而成,其容量的選擇應與太陽能電池陣列的容量相匹配。它的主要作用是在白天儲存太陽能陣列所產生的電能,晚上把儲存的能量釋放出來,供負載照明使用。它的最佳充電電流和放電電流,一般按10h充、放電率計算。
由于蓄電池對電壓的波動具有/緩沖0作用,還可使得負載系統的運行更加平穩可靠。雖然鉛酸蓄電池具有容量大、價格低等優點,但若使用不當,很容易加速蓄電池的老化,使蓄電池的壽命急劇縮短,造成系統運行成本的增加,充、放電電流過大都會對電瓶的壽命有一定的影響。因此對蓄電池的充放電進行合理規劃和控制是光伏充電系統中必不可少的環節。
(3)控制器。控制器的作用是對太陽能電池、蓄電池電壓、市電電源和LED負載進行總體監控。為蓄電池提供最佳的充電電流和電壓,同時保護蓄電池,避免過充電和過放電現象的發生。需要時完成太陽能電池和市電2個電源之間的轉換,保證LED負載穩定可靠的工作。
以處理器為核心的控制器結構可以給系統帶來極大的可配置型,增強系統的應用范圍。
(4)LED照明光源。半導體LED照明光源是系統的重要組成部分。LED應保證亮度高,亮度輻射范圍大且均勻,所使用的白光LED數量少。控制器中的負載控制策略和LED驅動電路的設計直接決定了系統的照明效果。因此,需要根據LED響應速度快和低壓直流驅動等特性,選擇合適的驅動方案及控制策略,實現與蓄電池電壓的匹配,以充分發揮LED照明的優點。
(5)市電電源。在出現陰雨天時,蓄電池不能及時充電,出現蓄電池電壓不足,不能正常向負載供電時,由開關電源將220V交流市電變換成低壓直流電,供LED負載使用。控制器系統設計中為市電電源提供了一個低壓直流電輸入接口。
2、處理器需求分析
控制器是系統的核心部分,系統工作過程通過它進行管理和控制。系統通過控制器實現系統工作狀態的管理、蓄電池剩余容量的管理、蓄電池充電、放電控制、太陽能電池電源及市電電源的切換控制以及LED負載半功率控制等主要功能。而處理器又是控制器的核心。其負責根據程序指揮控制器中元器件實現控制器的上述功能。
在此設計的太陽能LED照明控制系統供街道和住宅小區照明使用,設計控制器中的處理器具有如下功能:
(1)支持5V直流系統工作電壓;
(2)可提供輸出接口,控制狀態指示燈或顯示屏指示工作狀態;
(3)可提供輸入接口,接受外部按鍵輸入;
(4)可控制大功率MOS管支持最大至9A的充放電電流;
(5)可提供直流、脈沖兩種充電方式的控制;
(6)可精確計時以提供深夜使半導體照明燈具亮度減半的功能;
(7)可接收一路A/D轉換器指示,能檢測蓄電池的電壓,對蓄電池的充、放電過程進行控制,并當蓄電池電量不足時,自動切換到市電電源供電;
(8)可接收另一路A/D轉換器指示,能檢測太陽能電池的電壓,自動轉換工作模式;
(9)可提供運算指令以計算各輸入信號關系判斷系統運行轉態;
(10)可提供跳轉指令以使控制器在各狀態間切換;
(11)可暫存狀態標志,以供處理器智能判斷狀態;
(12)低功耗設計以提高控制器在系統中的工作效率;
根據以上需求給出處理器的設計目標:采用精簡指令集設計;采用流水線設計以實現低功耗;具有寄存器堆;具有IO接口;具有PWM功能模塊;具有定時器模塊。
3、指令集設計
在本系統中,處理器要對AD以及按鍵的輸入量進行處理。這些輸入數據位寬小且處理過程為常規運算,不需要進行使用高級數學算法進行繁雜的數據運算。所以本設計采用精簡指令集(RISC)的設計方法。
精簡指令集具如下特點為:指令系統的規模較小且復雜程度小;操作數預存在寄存器中;指令格式統一;避免不必要的存儲器訪問。
采用RISC指令集設計可直接減小芯片面積,節省成本,減少開發人員的開發與維護開銷。是嵌入式設備處理器的主流設計方法。
本處理器具有load/store結構,也就是說與主存儲器通信只能通過LOAD和STORE指令進行。運算操作數只與寄存器組有關,而并不在主存儲器上。TOP2的指令分為4類:運算指令、寄存器指令、跳轉指令、存儲器指令,如表1所示。
針對太陽能LED照明控制系統的處理器指令集設計考慮到功耗及面積成本,只包含6條運算指令,沒有連續移位指令和硬件乘法器。經測試本指令集可滿足上一節所述對處理器的功能需求。
作為RISC體系的特點之一就是指令格式簡單規則,遵循這一原則,指令集中的11條指令均為4位操作碼和12位操作目標位。
4、處理器結構
處理器主體結構如圖2所示,下面具體介紹處理器各部分。
4.1 存儲結構
本處理器的存儲結構采用哈佛(Harvard)結構。這是嵌入式處理器中被廣泛采用的結構,如ARM、MIPS等。特別適用于采用RISC指令集的處理器。哈佛結構的主要特點是:程序指令存儲通路與數據指令存儲通路物理上是分離的。使得兩個存儲器可以獨立編址、獨立訪問,從而避免了程序訪問與數據訪問之間產生的相關性沖突。這中并行設計架構相當于提高了1倍的吞吐量,從而提高了處理器性能。
4.2 流水線結構
基于哈佛存儲結構,處理器核心的設計采用5級流水線(pipe2line)結構分別是:取指令級(IF)、譯碼級(ID)、寄存器訪問級(LO)、運算級(EX)、回寫級(WB)。流水線的設計方法在高性能大規模系統中得到廣泛應用,其實際上就是把規模較大、層次較多的組合邏輯分為幾個級,在每一級插入寄存器并暫存中間數據。這樣做大大地增加了時鐘周期的利用率,最大限度地發揮電路潛能。在不提高時鐘頻率的前提下提高了處理器效率,可以實現在同等效率下相對于非流水線設計功率可降低25倍,實現低功耗設計。
4.3 片內其他模塊
整個芯片是圍繞著流水線核心實現。根據系統需求,處理器要實現精確計時以及脈沖充電方式。為了實現這兩種功能,在流水線核心的基礎上添加了兩個可獨立流水線運行的模塊:TIMER(定時器)和PWM(脈寬調制)。TIMER模塊是16位定時器,時鐘源采用32768Hz晶振。其可以準確分辨1s時間單位,誤差低,可為本系統長年室外穩定工作提供支持。定時器可以供中斷和查詢2種操作方式,以供系統后期的靈活配置。PWM是脈沖調制模塊。其功能是產生占空比可變的方波,以驅動大功率MOS管進行脈沖充電。其占空比變化范圍為0~100%,步長1%。本模塊減輕了處理器流水線部分的負擔,使脈沖驅動可與其他控制信號并行執行,增強了系統的穩定性。
處理器片內還包含通用I/O控制單元。此單元完成對管腳數據方向的控制,并為輸出數據提供保持功能,對輸入數據進行同步。此單元對外部異步信號域與內部同步信號域進行隔離。避免產生信號毛刺,簡化時序分析。
5、仿真與實現
本設計通過FPGA實現了所需求功能。
5.1 仿真
在太陽能LED照明控制系統中,控制器所需要面對的指令流主要有三種:運算指令流(順序執行)、分支跳轉指令流、循環指令流。
5.1.1 運算操作指令流(加法)
完成加法指令需要的步驟包括:
(1)準備2個操作數。這2個操作數如果已經存在于寄存器組中則可以忽略此步驟,如果其中一個或兩個是立即數或者在存儲器中,則需要MOV指令或LOAD指令完成準備過程。
(2)進行運算。一條ALU加操作。
(3)寫回存儲器。根據不同的需求會編譯出不同的指令組合,這里以兩立即數相加結果存放在寄存器中為例進行加法操作。這需要首先執行兩條MOVD指令準備操作數,之后進行加法操作。需要注意的是,在流水線中由于數據相關性問題,在MOVD指令之后ADD指令不能馬上進入流水線執行。
當ADD指令進入LO級進行取數操作時,其之前的兩條MOVD指令分別在EX級與WB級運行著,此時從寄存器組中取數是不正確的。所以要把ADD指令推后,等到MOVD指令退出流水線后,方可進行取數。如果是第二條MOVD指令推出流水線時ADD進入LO級的話,中間需要間隔3個流水線周期。但實際上只需間隔兩個流水線周期就夠了。這是由本處理器ALU操作體系決定的。ALU的第一操作數是從寄存器中直接取出,無需通過LO級。等價于第一操作數比第二操作數要快一個流水線周期。所以,這里設計讓第一條MOVD指令存儲第二操作數,當此指令完成后,ADD進入LO級將第二操作數取出。經過一個流水線周期ADD指令進入EX級時,第二條MOVD也把第一操作數存儲到了寄存器。
之后再經過兩個周期,運算結果存入寄存器組。
從第一條指令輸入到結果寫入寄存器組共用了10個流水線周期(20個時鐘周期)。考慮到指令串的流水化運行,在大段程序中費時是指令輸入的5個流水線按周期。實際上,在這5個流水線周期中的2個間隔周期并不必須為空,只要與本條指令沒有數據相關就可以,例如進行兩個存儲器操作。這樣最好情況下一個加法操作只需3個流水線周期。
5.1.2分支跳轉指令流
分支跳轉指令是高級語言中經常用到的關鍵語句。現在用跳轉指令(JUMPI)來構建條件跳轉操作。分支跳轉語句首先是要判斷條件是否成立,如果條件成立則順序執行,如果不成立則跳到下一程序塊執行。編譯成處理器的操作碼后變為:送條件;進行比較,置標志位;根據標志位跳轉。在這種情況下,實現一個無內容條件結構需要7條語句(7個流水線周期)。其中兩個周期可以插入無關操作,還有兩個周期可以提前執行JUMPI后續指令。所以最好情況下需要三個流水線周期完成。
5.1.3循環語句
循環語句在高級語言中也是常用語句之一。它的實現與分支跳轉類似,同樣是跳轉指令的應用。
循環語句中要定義一個條件變量,通過循環體的運行改變條件變量的值,完成后進行判斷,符合條件跳出循環體,否則重新開始循環體。
此種循環情況下,循環結構共需7條指令,如條件允許優化NOP指令,最好情況下只需3個流水線周期。在時序驗證完成后,筆者結合XILINX公司的Virtex2FPGA,利用Synplify7.5對設計進行了綜合,綜合報表顯示時鐘頻率最高可到153MHz。
5.2 FPGA實現
將設計下載至FPGA后,筆者采用名為ChipscopeProAnalyzer的波形觀察工具。ChipscopePro是采用JTAG方式觀察FPGA內部的信號,再反映到終端上,與板級驗證方法原理一致,而節省了板級布線時間。
將ChipscopePro設置為arm(伺機捕獲)狀態,當觸發條件滿足時捕獲數據,并且在緩沖區填滿后停止捕獲,并將數據上傳,由波形窗口顯示出來。
觸發條件(復位后)滿足時捕獲到的波形圖如圖5所示。所觀察的數據共有16位,其中port[0]2port[7]為存儲器地址輸出,port[8]2port[15]為存儲器數據輸出。程序數我們前面所介紹過的加法操作,并且在得到結果后利用STORE指令輸出到總線上。程序為:
MOVDR21B
MOVDR110B
NOP
NOP
ADDR3R2
NOP
NOP
STORE11110000BR3 程序的操作是1加2,結果為3,將其送到11110000B地址,其后仿真波形如圖6所示。
與FPGA中結果完全相同。設計正確。
6、結語
本文針對太陽能LED照明控制系統設計了一款低功耗面積小的精簡指令集處理器,指令集共包含12條指令。處理器綜合頻率達150MHz,實際在板最高工作頻率為100MHz。系統外設包括計時器和脈寬調制模塊。能夠實現系統所需功能,完成控制器功能。待下一步進行系統統調后進行芯片后端設計。
(審核編輯: 智匯小新)
分享