国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

KCPSM6PicoBlaze的原理與應(yīng)用※

2013-08-27 08:33魏厚剛楊寬泗孫武張開鋒
關(guān)鍵詞:嵌入式器件指令

魏厚剛,楊寬泗,孫武,張開鋒

(中國人民解放軍75576部隊,海口570236)

引 言

PicoBlaze 8位嵌入式處理器是Xilinx公司為Virtex、Spartan系列FPGA 和CoolRunner-II系列CPLD設(shè)計的嵌入式處理器軟核。針對不同的器件,Xilinx公司共推出了3 個版本的PicoBlaze,包括KCPSM3(目標器件為Spartan 3、Virtex II、Virtex II PRO、Virtex 4和Virtex 5),CPLD版(目標器件為CoolRunner-II)和最新推出的KCPSM6(目標器件為Spartan 6、Virtex 6 和7 系列FPGA)。KCPSM6針對Spartan 6、Virtex 6和7系列FPGA 進行了特殊優(yōu)化,增加了一些新特性,在開發(fā)和調(diào)試方法上也與KCPSM3 有所不同。本文分析對比了其異同,對KCPSM6在開發(fā)調(diào)試中的注意事項進行總結(jié),并在Avnet Spartan 6 MicroBoard上進行了實例驗證。

1 KCPSM6PicoBlaze的體系結(jié)構(gòu)

KCPSM6PicoBlaze(以下簡稱KCPSM6)8位嵌入式處理器是Xilinx公司為Spartan 6、Virtex 6和7系列FPGA 設(shè)計的嵌入式處理器軟核,它具有效率高、占用資源少等優(yōu)點,可以方便地嵌入到硬件系統(tǒng)設(shè)計中,實現(xiàn)與其他功能模塊的無縫連接[1]。它僅占用26個Slice和1個BRAM,占XC6SLX4器件4.3%的資源、XC6SLX150T 器件不到0.11%的資源。KCPSM6嵌入式處理器具有高達52~120 MIPS的指令執(zhí)行速度,具體速度取決于所選用的FPGA 所屬系列和器件速度等級。

KCPSM6微處理器主要由以下幾個單元組成:

◆兩組16個8位通用寄存器;

◆最高支持4KB的程序存儲單元;

◆8 位算術(shù)邏輯單元,帶有CARRY 和ZERO標志位;

◆64、128或256字節(jié)內(nèi)部暫存RAM;

◆256個輸入和256個輸出端口,方便擴展應(yīng)用;

◆中斷控制單元;

◆休眠模式,進一步降低系統(tǒng)功耗。

KCPSM6嵌入式處理器的原理框圖如圖1所示。

KCPSM6新增的特性和功能總結(jié)如下:

(1)新增引腳

圖1 KCPSM6嵌入式處理器原理框圖

sleep引腳。當sleep引腳電平由低變高時,KCPSM6在執(zhí)行完最后一條已讀取指令后,進入休眠模式,以降低系統(tǒng)功耗。若將sleep引腳一直置低電平,則KCPSM6一直處于正常工作狀態(tài)。

K_write_strobe為常量輸出觸發(fā)信號,與OUTPUTK指令配合使用,可用一條指令即可完成向輸出端口輸出常量值,而無需寄存器的干預(yù)。

bram_enable為程序存儲單元BRAM 使能信號,可進一步降低系統(tǒng)功耗。

Address[11:10]為程序存儲單元高位地址線,最大支持4KB程序存儲。

(2)新增屬性

KCPSM6新增了3個屬性,分別是hwbuild(與HWBULID指令配合使用,可用于定義軟件版本等功能)、interrupt_vector(定義中斷矢量,默認為0x3FF)和scratch_pad_memory_size(定義內(nèi)部暫存RAM 大小,默認為64B)。

(3)新增指令

KCPSM6指令集向下兼容KCPSM3的指令集,并新增了9 條指令,分別是TESTCY、COMPARECY、REGBANK、STAR、OUTPUTK、JUMP @、CALL @、LOAD&RETURN 和HWBULID。新指令的擴展,極大地改善了KCPSM6的編程靈活性和代碼效率。例如,向端口0x01 輸出0x5A,在KCPSM3 中需執(zhí)行兩條指令:“LOAD s0,5A”和“OUPUT s0,01”。而在KCPSM6 中,只需執(zhí)行“OUTPUTK 5A01”即可。其他新增指令的詳細功能,見參考文獻[1]。

2 KCPSM6開發(fā)與調(diào)試

KCPSM6 的開發(fā)流程與 KCPSM3 基本相同。KCPSM6的開發(fā)流程如圖2所示。

圖2 KCPSM6開發(fā)流程示意圖

如圖2所示,用戶程序和ROM 模塊經(jīng)編譯器KCPSM6Assembler編譯后,生成包含程序代碼的ROM模塊。在頂層模塊中例化ROM 模塊和KCPSM6 模塊,然后綜合、實現(xiàn)并生成比特流下載到FPGA 中。在程序調(diào)試過程中,經(jīng)常需要對用戶程序進行反復(fù)修改,如果采用常規(guī)的方法,則每次修改用戶程序,都要重新綜合、布局布線,生成新的比特文件,往往需要幾分鐘到十幾分鐘,耗時耗力[2],給調(diào)試帶來了極大不便。為此,與KCPSM3類似,Xilinx公司也為KCPSM6提供了JTAG Loader工具,而采用JTAG Loader進行調(diào)試則無需重新綜合、布局布線,通過JTAG 接口直接修改PicoBlaze的程序BRAM,只需幾秒即可完成程序更新,大大加快了調(diào)試進度。

JTAG Loader的使用步驟如下:

①將代碼中的C_JTAG_LOADER_ENABLE屬性設(shè)為“1”。

②綜合、實現(xiàn)生成比特流并下載到FPGA 中。

③將JTAG Loader.exe復(fù)制到當前工程目錄下。

④打開命令提示符,并切換到當前目錄,運行JTAG Loader(如果是64位操作系統(tǒng)則運行JTAG Loader64),JTAG Loader自行識別目標FPGA,如果報錯顯示未知器件,則需要輸入其IR_Length參數(shù),該參數(shù)可以在ISE安裝目錄下查到,如:C:\Xilinx\13.2\ISE_DS\ISE\acecf\data\xccace.bsd文件中的attribute INSTRUCTION_LENGTH of XCCACE:entity is 8,其他器件的查閱方法類似。

⑤修改用戶程序,并用kcpsm6.exe重新編譯程序。

⑥運行jtagloader–l your_program.hex,即可實現(xiàn)一鍵更新程序。

另外,值得注意的是,使用JTAG Loader之前,必須正確設(shè)置系統(tǒng)的環(huán)境變量,具體方法是運行ISE安裝目錄下C:\Xilinx\13.2\ISE_DS文件夾內(nèi)的settings32.bat批處理文件即可。

3 應(yīng)用實例

為了驗證KCPSM6的新增功能及JTAG Loader的使用方法,本文在FPGA 開發(fā)板上實現(xiàn)了8 位LED 的控制——編者注:工程文件詳見本刊網(wǎng)站www.mesnet.com.cn。綜合結(jié)果顯示,本設(shè)計共占用了35個Slice和2個RAMB 16BWERs單元,僅占XC6SLX75T-3FGG676總Slice數(shù)和BRAM 單元的1%。最后,將生成的比特流下載到開發(fā)板上進行驗證,LED 能夠按預(yù)期要求閃爍。修改用戶程序,重新編譯后,能夠用JTAG Loader快速更新程序。

結(jié) 語

本文簡要闡述了Xilinx公司最新推出的KCPSM6軟核的結(jié)構(gòu)及原理,并與KCPSM3進行了對比分析。介紹了KCPSM6的開發(fā)調(diào)試流程,并進行了實例驗證。本文對已有KCPSM3 使用經(jīng)驗的設(shè)計者快速熟悉KCPSM6的應(yīng)用開發(fā)具有積極意義。

[1]Xilinx.PicoBlaze 8-bit Embedded Microcontroller User Guide[EB/OL].(2011-07-22)[2010-09].http://www.xilinx.com/support/documentation/ip_documentation/ug129.pdf.

[2]鄭嘉平,孫迪鋒,劉傳,等.PicoBlaze軟核的仿真與調(diào)試[J].單片機與嵌入式系統(tǒng)應(yīng)用,2011(3):74-75.

猜你喜歡
嵌入式器件指令
TS系列紅外傳感器在嵌入式控制系統(tǒng)中的應(yīng)用
ARINC661顯控指令快速驗證方法
搭建基于Qt的嵌入式開發(fā)平臺
嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
殺毒軟件中指令虛擬機的脆弱性分析
旋涂-蒸鍍工藝制備紅光量子點器件
面向高速應(yīng)用的GaN基HEMT器件
中斷與跳轉(zhuǎn)操作對指令串的影響
一種加載集總器件的可調(diào)三維周期結(jié)構(gòu)
高分辨率遙感相機CCD器件精密熱控制
梅州市| 五大连池市| 固阳县| 贺兰县| 行唐县| 南平市| 巨鹿县| 沂南县| 西乡县| 麻栗坡县| 上虞市| 开平市| 石家庄市| 政和县| 九江县| 温州市| 凌云县| 沁水县| 当雄县| 沁阳市| 芦山县| 柳州市| 永定县| 柞水县| 德江县| 肥城市| 方正县| 凤阳县| 灵寿县| 资兴市| 张家口市| 崇阳县| 泾川县| 仁化县| 伊宁市| 会昌县| 曲水县| 鄂托克旗| 青阳县| 阳曲县| 巴楚县|