PicoBlaze軟核的仿真與調(diào)試
引言
本文引用地址:http://cafeforensic.com/article/189698.htmPicoBlaze是Xilinx公司為Virtex、Spartan系列FPGA和CoolRunnerII系列CPLD設(shè)計(jì)的8位嵌入式處理器軟核。PicoBlaze嵌入式處理器具有高達(dá)44~100 MIPS的指令執(zhí)行速度,并具有效率高、占用資源少等優(yōu)點(diǎn),可以方便地嵌入到硬件系統(tǒng)設(shè)計(jì)中,實(shí)現(xiàn)與其他功能模塊的無縫連接[1],在FPGA嵌入式系統(tǒng)中具有廣泛的應(yīng)用。傳統(tǒng)的PicoBlaze項(xiàng)目調(diào)試方法通常將PicoBlaze的匯編程序編譯后,與FPGA相關(guān)邏輯綜合、實(shí)現(xiàn),然后下載到電路板上進(jìn)行板級驗(yàn)證,往往要花費(fèi)大量時間,效率低下。本文介紹了一種基于pBlazIDE的PicoBlaze匯編程序仿真調(diào)試方法,并對基于JTAG Loader的PicoBlaze程序快速更新方法進(jìn)行了詳細(xì)分析。實(shí)踐證明,該方法簡便可行、效率較高,大大加快了PicoBlaze項(xiàng)目的調(diào)試進(jìn)度。
1 pBlazIDE仿真調(diào)試工具
pBlazIDE是一款免費(fèi)的圖形化仿真調(diào)試工具,只有145 MB,無需安裝即可使用[1],非常適合于PicoBlaze匯編程序的前期仿真驗(yàn)證。pBlazIDE具有以下功能:
◆ 按語法分色高亮顯示代碼;
◆ 指令集仿真器,可設(shè)置斷點(diǎn),并可查看寄存器和存儲器內(nèi)容;
◆ 源代碼格式化;
◆ KCPSM3到pBlazIDE導(dǎo)入功能,并自動完成語法轉(zhuǎn)換;
◆ 支持語法分色高亮顯示HTML文件輸出。
pBlazIDE仿真調(diào)試工具窗口布局如圖1所示。pBlazIDE仿真調(diào)試工具窗口布局為標(biāo)準(zhǔn)的Windows界面,主要包括菜單欄、工具欄、代碼區(qū)、I/O端口欄、PicoBlaze處理器狀態(tài)欄、暫存RAM欄、輸出狀態(tài)區(qū)和系統(tǒng)狀態(tài)欄。其中,I/O端口欄和暫存RAM欄只有在程序中使用了I/O端口和暫存RAM時才顯示,平時默認(rèn)為不顯示狀態(tài)。PicoBlaze處理器狀態(tài)欄顯示程序運(yùn)行過程中PicoBlaze的寄存器值和標(biāo)志位狀態(tài),輸出狀態(tài)區(qū)顯示程序編譯和運(yùn)行信息,系統(tǒng)狀態(tài)欄顯示內(nèi)容包括程序運(yùn)行時間、當(dāng)前PC值、當(dāng)前堆棧指針和堆棧值等。
圖1 pBlazIDE仿真調(diào)試工具
pBlazIDE與標(biāo)準(zhǔn)的KCPSM3語法相比,除中斷處理和其他少量語句外,大部分均相同。在導(dǎo)入KCPSM3程序時,pBlazIDE會自動完成語法轉(zhuǎn)換,無需人工干預(yù)。必須注意的是,pBlazIDE對KCPSM3語法中I/O端口的定義不會自動轉(zhuǎn)換,必須手動修改,否則編譯時會報(bào)錯。例如,KCPSM3語法中輸出端口定義LED EQU 1應(yīng)修改為LED DSOUT 1,輸入端口和雙向口的定義與此類似。
pBlazIDE仿真調(diào)試步驟如下:
① 打開pBlazIDE仿真調(diào)試工具,在Settings里選擇合適的Picoblaze 類型,對于Spartan3、VirtexII或VirtexII Pro系列FPGA選擇Picoblaze 3即可。另外,還需在Settings→Options中設(shè)置軟核的系統(tǒng)時鐘,以便pBlazIDE顯示程序精確運(yùn)行時間。
② 點(diǎn)擊File→Import命令,導(dǎo)入KCPSM3語法格式的.psm源文件,pBlazIDE會自動完成語法轉(zhuǎn)換。
③ 手動修改I/O端口定義,以滿足pBlazIDE語法要求。
④ 單擊AssembleSimulate按鈕,對程序進(jìn)行匯編,如果程序沒有錯誤,即可開始仿真。仿真既可以全速運(yùn)行,也可以單步運(yùn)行,并可設(shè)置斷點(diǎn)等,大部分功能與常用的單片機(jī)開發(fā)軟件Keil 51類似。在仿真過程中,可以查看或修改寄存器和存儲器內(nèi)容,監(jiān)測I/O輸出是否與預(yù)期結(jié)果相符,設(shè)置輸入端口值和模擬端口輸入;另外,還可以對外部中斷進(jìn)行模擬仿真,極大地方便了用戶程序調(diào)試。
評論