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