KCPSM6 PicoBlaze的原理與應用
(2)新增屬性
KCPSM6新增了3個屬性,分別是hwbuild(與HWBULID指令配合使用,可用于定義軟件版本等功能)、interrupt_vector(定義中斷矢量,默認為0x3FF)和scratch_pad_memory_size(定義內部暫存RAM大小,默認為64 B)。
(3)新增指令
KCPSM6指令集向下兼容KCPSM3的指令集,并新增了9條指令,分別是TESTCY、COMPARECY、REGBANK、STAR、OUTPUTK、JUMP@、CALL@、LO ADRETURN和HWBULID。新指令的擴展,極大地改善了KCPSM6的編程靈活性和代碼效率。例如,向端口0x01輸出0x5A,在KCPSM3中需執行兩條指令:“LOAD s0,5A”和“OUPUT s0,01”。而在KCPSM6中,只需執行“OUTPUTK 5A 01”即可。其他新增指令的詳細功能,見參考文獻。
2 KCPSM6開發與調試
KCPSM6的開發流程與KCPSM3基本相同。KCPSM6的開發流程如圖2所示。本文引用地址:http://www.104case.com/article/148050.htm
如圖2所示,用戶程序和ROM模塊經編譯器KCPSM6 Assembler編譯后,生成包含程序代碼的ROM模塊。在頂層模塊中例化ROM模塊和KCPSM6模塊,然后綜合、實現并生成比特流下載到FPGA中。在程序調試過程中,經常需要對用戶程序進行反復修改,如果采用常規的方法,則每次修改用戶程序,都要重新綜合、布局布線,生成新的比特文件,往往需要幾分鐘到十幾分鐘,耗時耗力,給調試帶來了極大不便。為此,與KCPSM3類似,Xilinx公司也為KCPSM6提供了JTAG Loader工具,而采用JTAG Loader進行調試則無需重新綜合、布局布線,通過JTAG接口直接修改PicoBlaze的程序BRAM,只需幾秒即可完成程序更新,大大加快了調試進度。
JTAG Loader的使用步驟如下:
①將代碼中的C_JTAG_LOADER_ENABLE屬性設為“1”。
②綜合、實現生成比特流并下載到FPGA中。
③將JTAG Loader.exe復制到當前工程目錄下。
④打開命令提示符,并切換到當前目錄,運行JTAGLoader(如果是64位操作系統則運行JTAG Loader64),JTAG Loader自行識別目標FPGA,如果報錯顯示未知器件,則需要輸入其IR_Length參數,該參數可以在ISE安裝目錄下查到,如:C:\Xilinx\13.2\ISE_DS\ISE\acecf\data\xccace.bsd文件中的attribute INSTRUCTION_LENGTH ofXCCACE:entity is 8,其他器件的查閱方法類似。
⑤修改用戶程序,并用kcpsm6.exe重新編譯程序。
⑥運行jtagloader—1 your_program.hex,即可實現一鍵更新程序。
另外,值得注意的是,使用JTAG Loader之前,必須正確設置系統的環境變量,具體方法是運行ISE安裝目錄下C:\Xilinx\1 3.2\ISE_DS文件夾內的settings32.bat批處理文件即可。
3 應用實例
為了驗證KCPSM6的新增功能及JTAG Loader的使用方法,本文在FPGA開發板上實現了8位LED的控制。綜合結果顯示,本設計共占用了35個Slice和2個RAMB 16BWERs單元,僅占XC6SLX75T-3FGG676總Slice數和BRAM單元的1%。最后,將生成的比特流下載到開發板上進行驗證,LED能夠按預期要求閃爍。修改用戶程序,重新編譯后,能夠用JTAG Loader快速更新程序。
結語
本文簡要闡述了Xilinx公司最新推出的KCPSM6軟核的結構及原理,并與KCPSM3進行了對比分析。介紹了KCPSM6的開發調試流程,并進行了實例驗證。本文對已有KCPSM3使用經驗的設計者快速熟悉KCPSM6的應用開發具有積極意義。
評論