基于太陽能LED照明控制系統(tǒng)的處理器設(shè)計
3 指令集設(shè)計
在本系統(tǒng)中, 處理器要對AD 以及按鍵的輸入量進(jìn)行處理。這些輸入數(shù)據(jù)位寬小且處理過程為常規(guī)運(yùn)算,不需要進(jìn)行使用高級數(shù)學(xué)算法進(jìn)行繁雜的數(shù)據(jù)運(yùn)算。所以本設(shè)計采用精簡指令集(RISC) 的設(shè)計方法。
精簡指令集具如下特點(diǎn)為: 指令系統(tǒng)的規(guī)模較小且復(fù)雜程度小; 操作數(shù)預(yù)存在寄存器中; 指令格式統(tǒng)一; 避免不必要的存儲器訪問。
采用RISC 指令集設(shè)計可直接減小芯片面積, 節(jié)省成本, 減少開發(fā)人員的開發(fā)與維護(hù)開銷。是嵌入式設(shè)備處理器的主流設(shè)計方法。
本處理器具有l(wèi)oad/ store 結(jié)構(gòu), 也就是說與主存儲器通信只能通過LOAD 和STORE 指令進(jìn)行。運(yùn)算操作數(shù)只與寄存器組有關(guān), 而并不在主存儲器上。TOP2的指令分為4 類: 運(yùn)算指令、寄存器指令、跳轉(zhuǎn)指令、存儲器指令, 如表1 所示。
針對太陽能LED 照明控制系統(tǒng)的處理器指令集設(shè)計考慮到功耗及面積成本, 只包含6 條運(yùn)算指令, 沒有連續(xù)移位指令和硬件乘法器。經(jīng)測試本指令集可滿足上一節(jié)所述對處理器的功能需求。
作為RISC 體系的特點(diǎn)之一就是指令格式簡單規(guī)則, 筆者遵循這一原則, 指令集中的11 條指令均為4 位操作碼和12 位操作目標(biāo)位 。
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)的主要特點(diǎn)是: 程序指令存儲通路與數(shù)據(jù)指令存儲通路物理上是分離的。使得兩個存儲器可以獨(dú)立編址、獨(dú)立訪問, 從而避免了程序訪問與數(shù)據(jù)訪問之間產(chǎn)生的相關(guān)性沖突。這中并行設(shè)計架構(gòu)相當(dāng)于提高了1 倍的吞吐量, 從而提高了處理器性能。
4. 2 流水線結(jié)構(gòu)
基于哈佛存儲結(jié)構(gòu), 處理器核心的設(shè)計采用5 級流水線( pipe2line) 結(jié)構(gòu) 分別是: 取指令級( IF) 、譯碼級( ID) 、寄存器訪問級( LO) 、運(yùn)算級( 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ǔ)上添加了兩個可獨(dú)立流水線運(yùn)行的模塊: TIMER( 定時器) 和PWM( 脈寬調(diào)制) 。T IMER 模塊是16 位定時器, 時鐘源采用32 768 Hz晶振。其可以準(zhǔn)確分辨1 s 時間單位, 誤差低, 可為本系統(tǒng)長年室外穩(wěn)定工作提供支持。定時器可以供中斷和查詢2 種操作方式, 以供系統(tǒng)后期的靈活配置。PWM 是脈沖調(diào)制模塊。其功能是產(chǎn)生占空比可變的方波, 以驅(qū)動大功率MOS 管進(jìn)行脈沖充電。其占空比變化范圍為0~ 100% , 步長1%。本模塊減輕了處理器流水線部分的負(fù)擔(dān), 使脈沖驅(qū)動可與其他控制信號并行執(zhí)行, 增強(qiáng)了系統(tǒng)的穩(wěn)定性。
處理器片內(nèi)還包含通用I/ O 控制單元。此單元完成對管腳數(shù)據(jù)方向的控制, 并為輸出數(shù)據(jù)提供保持功能, 對輸入數(shù)據(jù)進(jìn)行同步。此單元對外部異步信號域與內(nèi)部同步信號域進(jìn)行隔離。避免產(chǎn)生信號毛刺, 簡化時序分析。
5 仿真與實現(xiàn)
本設(shè)計通過FPGA 實現(xiàn)了所需求功能。設(shè)計流程如圖3 所示。
5. 1 仿真
在太陽能LED 照明控制系統(tǒng)中, 控制器所需要面對的指令流主要有三種: 運(yùn)算指令流( 順序執(zhí)行) 、分支跳轉(zhuǎn)指令流、循環(huán)指令流。
5. 1. 1 運(yùn)算操作指令流( 加法)
完成加法指令需要的步驟包括:
( 1) 準(zhǔn)備2 個操作數(shù)。這2 個操作數(shù)如果已經(jīng)存在于寄存器組中則可以忽略此步驟, 如果其中一個或兩個是立即數(shù)或者在存儲器中, 則需要MOV 指令或LOAD 指令完成準(zhǔn)備過程。
( 2) 進(jìn)行運(yùn)算。一條ALU 加操作。
( 3) 寫回存儲器。根據(jù)不同的需求會編譯出不同的指令組合, 這里以兩立即數(shù)相加結(jié)果存放在寄存器中為例進(jìn)行加法操作。這需要首先執(zhí)行兩條MOVD 指令準(zhǔn)備操作數(shù), 之后進(jìn)行加法操作。需要注意的是, 在流水線中由于數(shù)據(jù)相關(guān)性問題, 在MOVD 指令之后ADD 指令不能馬上進(jìn)入流水線執(zhí)行。
評論