KCPSM6 PicoBlaze的原理與應用
(2)新增屬性
KCPSM6新增了3個(gè)屬性,分別是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”即可。其他新增指令的詳細功能,見(jiàn)參考文獻。
2 KCPSM6開(kāi)發(fā)與調試
KCPSM6的開(kāi)發(fā)流程與KCPSM3基本相同。KCPSM6的開(kāi)發(fā)流程如圖2所示。本文引用地址:http://dyxdggzs.com/article/148050.htm
如圖2所示,用戶(hù)程序和ROM模塊經(jīng)編譯器KCPSM6 Assembler編譯后,生成包含程序代碼的ROM模塊。在頂層模塊中例化ROM模塊和KCPSM6模塊,然后綜合、實(shí)現并生成比特流下載到FPGA中。在程序調試過(guò)程中,經(jīng)常需要對用戶(hù)程序進(jìn)行反復修改,如果采用常規的方法,則每次修改用戶(hù)程序,都要重新綜合、布局布線(xiàn),生成新的比特文件,往往需要幾分鐘到十幾分鐘,耗時(shí)耗力,給調試帶來(lái)了極大不便。為此,與KCPSM3類(lèi)似,Xilinx公司也為KCPSM6提供了JTAG Loader工具,而采用JTAG Loader進(jìn)行調試則無(wú)需重新綜合、布局布線(xiàn),通過(guò)JTAG接口直接修改PicoBlaze的程序BRAM,只需幾秒即可完成程序更新,大大加快了調試進(jìn)度。
JTAG Loader的使用步驟如下:
①將代碼中的C_JTAG_LOADER_ENABLE屬性設為“1”。
②綜合、實(shí)現生成比特流并下載到FPGA中。
③將JTAG Loader.exe復制到當前工程目錄下。
④打開(kāi)命令提示符,并切換到當前目錄,運行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,其他器件的查閱方法類(lèi)似。
⑤修改用戶(hù)程序,并用kcpsm6.exe重新編譯程序。
⑥運行jtagloader—1 your_program.hex,即可實(shí)現一鍵更新程序。
另外,值得注意的是,使用JTAG Loader之前,必須正確設置系統的環(huán)境變量,具體方法是運行ISE安裝目錄下C:\Xilinx\1 3.2\ISE_DS文件夾內的settings32.bat批處理文件即可。
3 應用實(shí)例
為了驗證KCPSM6的新增功能及JTAG Loader的使用方法,本文在FPGA開(kāi)發(fā)板上實(shí)現了8位LED的控制。綜合結果顯示,本設計共占用了35個(gè)Slice和2個(gè)RAMB 16BWERs單元,僅占XC6SLX75T-3FGG676總Slice數和BRAM單元的1%。最后,將生成的比特流下載到開(kāi)發(fā)板上進(jìn)行驗證,LED能夠按預期要求閃爍。修改用戶(hù)程序,重新編譯后,能夠用JTAG Loader快速更新程序。
結語(yǔ)
本文簡(jiǎn)要闡述了Xilinx公司最新推出的KCPSM6軟核的結構及原理,并與KCPSM3進(jìn)行了對比分析。介紹了KCPSM6的開(kāi)發(fā)調試流程,并進(jìn)行了實(shí)例驗證。本文對已有KCPSM3使用經(jīng)驗的設計者快速熟悉KCPSM6的應用開(kāi)發(fā)具有積極意義。
評論