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