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