1 概述 PicoBlaze 8位微處理器是Xilinx公司為Virtex系列FPGA、Spartan-Iitxi系列FPGA和CoolRunner-II系列CPLD器件設(shè)計(jì)嵌入式專用IP Core。它解決了常量編碼可編程狀態(tài)機(jī)(KCPSM)的問(wèn)題。這一模塊只占用SpartanIIE的76個(gè)小區(qū)(slice),占最小的XC2S50E 器件9%的資源,占XC2S300E器件不到2%的資源。在這一模塊中還包括一個(gè)用于存儲(chǔ)指令的由Block RAM組成的ROM,最多可存儲(chǔ)256條指令。PicoBlaze只用了如此少的資源,但其速度卻可達(dá)到40MIPS以上。 PicoBlaze提供49個(gè)不同的指令,16個(gè)寄存器(CPLD為8個(gè)),256個(gè)直接或間接的可設(shè)定地址的端口,1個(gè)可屏蔽的、速率為 35MIPS的中斷。它的性能超過(guò)了傳統(tǒng)獨(dú)立元器件組成的微處理器,而且成本低,使得PicoBlaze在數(shù)據(jù)處理和控制算法領(lǐng)域有著廣泛的應(yīng)用前景 。由于可編程部分也完成嵌入,PicoBlaze可與子程序和外圍設(shè)備結(jié)合起來(lái)完成特殊的設(shè)計(jì)。其基本應(yīng)用框架如圖1所示。 ![]() PicoBlaze模塊由VHDL語(yǔ)言設(shè)計(jì),不需要預(yù)編譯,可直接由布局布線工具嵌入到容量大一點(diǎn)的器件中;可以認(rèn)為PicoBlaze幾乎不占資源,而且一個(gè)設(shè)計(jì)中可以包括多個(gè)PicoBlaze。PicoBlaze適用于復(fù)雜的但對(duì)時(shí)間要求不太高的系統(tǒng)中,并可以簡(jiǎn)華設(shè)計(jì)。 2 PicoBlaze原理與結(jié)構(gòu)分析 PicoBlaze 8位微處理器內(nèi)部結(jié)構(gòu)如圖2所示。 ![]() PicoBlaze處理器IP Core由全局寄存器、計(jì)算邏輯單元(ALU)、程序流控制標(biāo)志和復(fù)位邏輯、輸入/輸出(I/O)、中斷控制器等幾大部分構(gòu)成。 全局寄存器:16個(gè)8位全局寄存器,s0~sf。寄存器的操作是非常靈活的;沒(méi)有為特殊任務(wù)保留寄存器,任何寄存器的優(yōu)先權(quán)都是一樣的。 算術(shù)邏輯單元(ALU):提供了8位處理器需要的所有簡(jiǎn)單操作。執(zhí)行所有的操作都是用任意一個(gè)寄存器提供的操作數(shù)完成。若操作需兩個(gè)操作數(shù),則有另一寄存器指定或在指令中嵌入一8位常量值。在不增加程序大小的前提下,指不定期任意常量值,增強(qiáng)了簡(jiǎn)單的指令特性。更明白地說(shuō),ADD1與 INCREMENT指令是等價(jià)的。若操作超過(guò)8位,則有一選項(xiàng)(增加或減少)可供選擇。二進(jìn)制操作碼(LOAD、AND、OR、XOR)可操作和測(cè)試二進(jìn)制數(shù),還包括SHIFT和ROTATE指令集合。 程序流控制標(biāo)志:ALU操作后的結(jié)果影響ZERO和CARRY兩個(gè)標(biāo)記。用有條件的或無(wú)條件的程序流控制指令決定程序執(zhí)行的順序。JUMP指令指定在程序空間內(nèi)的絕對(duì)地址。CALL指令將程序定位到用一段代碼寫(xiě)的子程序的絕對(duì)地址,同時(shí)將返回地址壓棧。嵌套CALL指令使用的棧為15層,對(duì)于程序大小足夠了。 復(fù)位邏輯:復(fù)位信號(hào)強(qiáng)迫程序回到初始狀態(tài),即程序從地址00開(kāi)始執(zhí)行,中斷被屏蔽,狀態(tài)標(biāo)記和堆棧也同時(shí)復(fù)位,但寄存器中內(nèi)容不受影響。 輸入/輸出(I /O):PicoBlaze提供256個(gè)輸入端口和256個(gè)輸出端口。由端口總線提供一個(gè)8位地址值與一個(gè)READ或WRITE選通脈沖信號(hào),一起指定訪問(wèn)端口。這個(gè)端口地址值或?yàn)橐淮_定值或由任意一寄存器中內(nèi)容指定。當(dāng)訪問(wèn)一由分布式或塊狀RAM組成的內(nèi)存時(shí),最好用直接尋址。當(dāng)進(jìn)行輸入操作時(shí),輸入端口上的值被輸出一個(gè)READ_STROBE輸出脈沖時(shí),即表示進(jìn)行了一次輸入操作。 中斷控制器:PicoBlaze提供一中斷輸入信號(hào)。只要用一些簡(jiǎn)單的組合邏輯,多個(gè)信號(hào)就可進(jìn)行組合并被應(yīng)用于這一中斷。程序中可定義此中斷是否被屏蔽,默認(rèn)值是中斷被屏蔽。一被激活的中斷信號(hào)使程序執(zhí)行“CALL FF”指令(FF即256,程序存儲(chǔ)器的最后一個(gè)位置),然后設(shè)計(jì)者為此定義的放在此處的一段程序被執(zhí)行。一般在此地址放一JUMP指令,跳轉(zhuǎn)到中斷服務(wù)程序。中斷進(jìn)程屏蔽其它中斷,RETURNI指令保證在中斷程序結(jié)束后,標(biāo)記和控制指令回到原先的狀態(tài)。 表1 PicoBlaze處理器指令集
3 PicoBlaze的指令集和調(diào)試器 表1列舉了所有代表十六進(jìn)制的PicoBlaze操作碼的指令,其中: ①“X”和“Y”代表寄存器,“s”,范圍為0~F; ②“kk”代表常量,“aa”代表地址,“pp”代表端口地址,范圍均為00~FF。 pBlazIDE(Integrated Development Environment)是PicoBlaze匯編程序的編輯、調(diào)試、匯編集成環(huán)境。利用它可以方便地仿真所寫(xiě)程序的輸入輸出、寄存器內(nèi)值的變化及程序指令的順序執(zhí)行過(guò)程,便于檢查程序的錯(cuò)誤。PicoBlaze處理器IP Core應(yīng)用的VHDL源代碼和調(diào)試器pBlazeIDE可以從Xilinx網(wǎng)站上直接下載。 4 PicoBlaze的應(yīng)用系統(tǒng)設(shè)計(jì) 應(yīng)用于Spartan-II和Virtex-E器件的PicoBlaze處理器IP Core,外掛一個(gè)可存儲(chǔ)256條指令的RAM,共同工作。若是用戶需要更多的程序存儲(chǔ)空間以便執(zhí)行更加復(fù)雜的操作,有以下幾種解決方案。 *Xilinx 針對(duì)Virtex-E器件特別設(shè)計(jì)了KCPSM2模塊,提供1024個(gè)地址,且操作32個(gè)寄存器。 *若用戶的程序超過(guò)了256條指令,則可以考慮將設(shè)計(jì)分解為幾個(gè)過(guò)程,每一個(gè)過(guò)程由一個(gè)單獨(dú)的PicoBlaze模塊(每個(gè)擁有自己的RAM)完成。在一些設(shè)計(jì)中,以一個(gè)PicoBlaze為主(Master),其它一個(gè)或多個(gè)PicoBlaze為輔(Slave)。雙端口分布式存儲(chǔ)器是在處理器間交換數(shù)據(jù)的一個(gè)很好的選擇。 *可選擇將超過(guò)256個(gè)指令的程序分解到兩個(gè)或多個(gè)塊狀RAM中,用一個(gè)選擇開(kāi)關(guān)來(lái)選擇存儲(chǔ)了要執(zhí)行的指令的RAM。最簡(jiǎn)單的是使用一個(gè)被一觸發(fā)器輸出控制的二選一選擇器來(lái)選擇RAM,如圖3所示。 ![]() 這種方法的缺點(diǎn)是:二路選擇器占用8個(gè)slice,且加大了程序執(zhí)行的延時(shí),降低了程序最大執(zhí)行速率。一個(gè)更好的方法是將二路選擇器放到RAM 中,一條指令被分別存放在兩個(gè)512×8的RAM中,用switch信號(hào)和8位地址信號(hào)組成9位信號(hào),選擇要執(zhí)行的指令。圖4列舉了一個(gè)利用 PicoBlaze實(shí)現(xiàn)控制四個(gè)七段數(shù)據(jù)管顯示的例子,左邊兩個(gè)從0變到99,右邊情形相同,變化的間隔均為1s。但同時(shí)刻只有一個(gè)計(jì)數(shù)器增加,而選擇哪一個(gè)計(jì)數(shù)器增加則由DIP switch輸入控制。 ![]() 結(jié)語(yǔ) PicoBlaze是一個(gè)典型的8位微處理器。與傳統(tǒng)的8位MCU相比,它是一個(gè)由VHDL實(shí)現(xiàn)的軟處理器IP Core,可以在各種FPGA和CoolRunnerII CPLD上實(shí)現(xiàn),設(shè)計(jì)靈活方便;因此,PicoBlaze將在基于可編程邏輯和MCU的應(yīng)用領(lǐng)域中發(fā)揮積極的作用。其較高的處理性能和較少的資源占用,預(yù)示其具有更加廣泛的應(yīng)用前景。 參考文獻(xiàn) 1. Xilinx Inc PicoBlaze Processor IP Guide 2003 2. Xilinx Inc Programmable Logic Data Book.Rev6 2003 作 者:國(guó)防科技大學(xué) 溫廣翔 徐欣 來(lái) 源:單片機(jī)與嵌入式系統(tǒng)應(yīng)用2003(12) |