基于FPGA的Picoblaze核實(shí)現Modbus通信協(xié)議
摘要:給出了一種在Xinlinx的Spartan-3E評估板上實(shí)現Modbus通信協(xié)議的方法。該方法以PC為上位機,并在評估板上嵌入Picoblaze軟核作為下位機來(lái)實(shí)現Modbus通信協(xié)議的功能。文中同時(shí)介紹了使用Xilinx ISE和Picoblaze軟核進(jìn)行開(kāi)發(fā)的方法。
關(guān)鍵詞:Modbus通信協(xié)議;Picoblaze核;FPGA;Spartan-3E評估板
0 引言
目前,從各大FPGA廠(chǎng)商公布的銷(xiāo)售數據來(lái)看,Xilinx的FPGA市場(chǎng)份額占到了近50%。Spartan-3E系列的器件密度范圍為10萬(wàn)到160萬(wàn)系統門(mén),其單位邏輯單元的成本是FPGA行業(yè)中最低的,能夠以標準產(chǎn)品價(jià)格實(shí)現微處理器、微控制器和數字信號處理器的功能,并可支持18種通用I/O標準,還可通過(guò)ISE來(lái)操作PicoBlaze軟核。Spartan-3E同時(shí)結合了強大的平臺FPGA功能和超低價(jià)位。因而可使更多的設計人員享受可編程能力所帶來(lái)的益處。
1 Picoblaze核結構
本文采用Xilinx公司的Spartan-3E評估板及其PicoBlaze IP核來(lái)進(jìn)行基于Modbus通信協(xié)議的系統設計。該系統的整體結構是以PC做為上位機,并在評估板上嵌入Picoblaze軟核作為下位機,從而實(shí)現Modbus通信協(xié)議。PicoBlaze是Xilinx公司的一款8bit微控制器軟核,它非常之小??梢郧度氲紺ool RunnerⅡ,Virtex-E,Virtex-II(Pro)和Spartan-3E的CPLD以及FPGA中。對于整個(gè)指令集,PicoBlaze執行一條指令需要2個(gè)時(shí)鐘周期。
在對PicoBlaze進(jìn)行開(kāi)發(fā)時(shí),首先需要將PicoBlaze認識并執行的程序經(jīng)過(guò)Assembler轉換成相應的HDL文件并存放在FPGA內部的Block Memory中(因此,PicoBlaze執行一條指令所需的時(shí)鐘周期是固定的)。然后,微控制器核心KCPSM3再從Block Memory里面讀取程序并按順序執行。PicoBlaze的存儲空間為1024x18bit,也就是說(shuō),它能夠存放1024條位長(cháng)為18的指令。而PicoBlaze支持的指令集也很精簡(jiǎn)(只有57條),其中包含程序控制類(lèi)(跳轉,調用,返回)、算數類(lèi)(加,減,比較)、邏輯類(lèi)(與,或,異或)、中斷類(lèi)(中斷開(kāi)啟/關(guān)閉),移位/旋轉類(lèi)(左移/右移,左旋/右旋)和輸入/輸出類(lèi)(輸入,輸出)。PicoBlaze核的結構框架如圖1所示。
圖2是微控制器核心KCPSM3的結構框架圖。KCPSM3中一共有16個(gè)長(cháng)度為8位的通用寄存器,每個(gè)寄存器都可以在匯編代碼中分別命名。其中,Scratch Pad Memory的大小為64 Bytes,作用相當于一塊臨時(shí)存儲區。KCPSM3只支持1個(gè)中斷信號,但實(shí)際上可以將多個(gè)中斷信號用邏輯組合的方式變成一個(gè)來(lái)使用(會(huì )降低單中斷通道的性能)。
評論