基于太陽能LED照明控制系統(tǒng)的處理器設(shè)計
當(dāng)ADD 指令進(jìn)入LO 級進(jìn)行取數(shù)操作時, 其之前的兩條MOVD 指令分別在EX 級與WB 級運(yùn)行著, 此時從寄存器組中取數(shù)是不正確的。所以要把ADD 指令推后, 等到MOVD 指令退出流水線后, 方可進(jìn)行取數(shù)。如果是第二條MOVD 指令推出流水線時ADD 進(jìn)入LO 級的話, 中間需要間隔3 個流水線周期。但實際上只需間隔兩個流水線周期就夠了。這是由本處理器ALU 操作體系決定的。ALU 的第一操作數(shù)是從寄存器中直接取出, 無需通過LO 級。等價于第一操作數(shù)比第二操作數(shù)要快一個流水線周期。所以, 這里設(shè)計讓第一條MOVD指令存儲第二操作數(shù), 當(dāng)此指令完成后,ADD 進(jìn)入LO 級將第二操作數(shù)取出。經(jīng)過一個流水線周期ADD 指令進(jìn)入EX 級時, 第二條MOVD 也把第一操作數(shù)存儲到了寄存器。
之后再經(jīng)過兩個周期, 運(yùn)算結(jié)果存入寄存器組。
整個過程如圖4 所示。
從第一條指令輸入到結(jié)果寫入寄存器組共用了10 個流水線周期( 20 個時鐘周期) ??紤]到指令串的流水化運(yùn)行, 在大段程序中費(fèi)時是指令輸入的5 個流水線按周期。實際上, 在這5 個流水線周期中的2 個間隔周期并不必須為空, 只要與本條指令沒有數(shù)據(jù)相關(guān)就可以, 例如進(jì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ìn)行比較,置標(biāo)志位; 根據(jù)標(biāo)志位跳轉(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)體的運(yùn)行改變條件變量的值, 完成后進(jìn)行判斷, 符合條件跳出循環(huán)體, 否則重新開始循環(huán)體。
此種循環(huán)情況下, 循環(huán)結(jié)構(gòu)共需7 條指令, 如條件允許優(yōu)化NOP 指令, 最好情況下只需3 個流水線周期。在時序驗證完成后, 筆者結(jié)合XILINX 公司的Virtex2 FPGA, 利用Synplify 7. 5 對設(shè)計進(jìn)行了綜合,綜合報表顯示時鐘頻率最高可到153 MHz。
5. 2 FPGA 實現(xiàn)
將設(shè)計下載至FPGA 后, 筆者采用名為Chipscope Pr o Analyzer 的波形觀察工具。Chipscope Pro 是采用JTAG 方式觀察FPGA 內(nèi)部的信號, 再反映到終端上,與板級驗證方法原理一致, 而節(jié)省了板級布線時間。
將Chipscope Pro 設(shè)置為arm( 伺機(jī)捕獲) 狀態(tài), 當(dāng)觸發(fā)條件滿足時捕獲數(shù)據(jù), 并且在緩沖區(qū)填滿后停止捕獲, 并將數(shù)據(jù)上傳, 由波形窗口顯示出來。
觸發(fā)條件( 復(fù)位后) 滿足時捕獲到的波形圖如圖5所示。所觀察的數(shù)據(jù)共有16 位, 其中port[ 0]2por t[ 7] 為存儲器地址輸出, port[ 8]2port[ 15] 為存儲器數(shù)據(jù)輸出。程序數(shù)我們前面所介紹過的加法操作, 并且在得到結(jié)果后利用STORE 指令輸出到總線上。程序為:
MOVD R2 1B
MOVD R1 10B
NOP
NOP
ADD R3 R2
NOP
NOP
ST ORE 11110000B R3
程序的操作是1 加2, 結(jié)果為3, 將其送到11110000B 地址, 其后仿真波形如圖6 所示。
與FPGA 中結(jié)果完全相同。設(shè)計正確。
6 結(jié) 語
本文針對太陽能LED 照明控制系統(tǒng)設(shè)計了一款低功耗面積小的精簡指令集處理器, 指令集共包含12 條指令。處理器綜合頻率達(dá)150 MHz, 實際在板最高工作頻率為100 MHz。系統(tǒng)外設(shè)包括計時器和脈寬調(diào)制模塊。能夠?qū)崿F(xiàn)系統(tǒng)所需功能, 完成控制器功能。待下一步進(jìn)行系統(tǒng)統(tǒng)調(diào)后進(jìn)行芯片后端設(shè)計。
評論