一、概述
MicroBlaze是一種基於軟件定義的低成本、高性能、低功耗的32位RISC處理器,適用於FPGA(現場可編程邏輯門陣列)平台。它提供了一個可編程的硬件解決方案,可以應用於嵌入式系統、網絡設備、安全系統、數字信號處理等多個領域。
MicroBlaze處理器由Xilinx公司推出,是一種可配置的IP(Intellectual Property)內核,完全免費使用,適用於Xilinx的FPGA器件。本文將圍繞MicroBlaze詳細闡述其架構、編程模型及相應的開發工具。
二、架構
MicroBlaze架構整體包括處理器核、存儲單元、I/O單元、中斷控制器和調試模塊,如下圖所示:
+-------------------------+ | | +---> | I/O | | | | | Units | |IP | | +-------------------------+ | | | | | | | | | | | | | | AXI | | | | | | | | +--------+ | 通信 | +------------+ | Debug | | Units | | AXI | | Module | | | | Interconnect | | | +-------------------------+ | | +--------+ | | | | | | | | | +--------> | | | MicroBlaze |CPU| | | | | | | | +--------> | | | | | | | | | | +--------+ | | | |Interrupt| +------------+ |Controller| +--------+
其中,處理器核是MicroBlaze的核心,負責運算和控制操作;存儲單元包括數據存儲和程序存儲;I/O單元用於與外部設備進行通信;中斷控制器負責處理各式各樣的中斷信息;調試模塊提供了工作狀態的監視和修改。
三、編程模型
MicroBlaze採用的是Harvard結構,即程序存儲(instruction memory)和數據存儲(data memory)是分離的。程序存儲和數據存儲都可以通過AXI總線與其它IP核相連。MicroBlaze是一種基於寄存器的架構,共有32個32位通用寄存器和3個特殊的寄存器,分別是程序計數器(PC)、堆棧指針(SP)和鏈接寄存器(LR)。
以下是一個簡單的MicroBlaze彙編程序示例:
.global _start _start: addi r3, r0, 0x11 # r3=0x11 addi r4, r0, 0x22 # r4=0x22 add r5, r3, r4 # r5=r3+r4=0x33 loop: b loop # 無限循環
代碼解釋:首先定義一個全局開始標籤“_start”,然後分別將立即數0x11和0x22加到了r3和r4寄存器中,接着r3和r4寄存器的值相加,存入r5寄存器中,最後通過無限循環實現了程序的不斷運行。
四、開發工具
Xilinx公司為MicroBlaze提供了多種開發工具,包括Vivado Design Suite、EDK(Embedded Development Kit)等。下面將介紹其中的Vivado Design Suite工具。
五、Vivado Design Suite
Vivado Design Suite是Xilinx公司開發的FPGA設計和綜合工具,可實現IP集成、邏輯綜合、架構拓撲布線、時序分析等多種功能。下面將分別介紹如何創建MicroBlaze處理器系統和如何在軟件開發工具中編寫彙編程序。
六、創建MicroBlaze處理器系統
1、打開Vivado Design Suite,創建一個新工程,為其選擇一個目錄。
2、在“Add Sources”對話框中,點擊“Add or create design sources”按鈕並選擇“Create a new AXI4 peripheral”選項創建一個新的AXI總線外設。
3、在“Create and Package IP”對話框中,為新創建的IP核選擇名稱,並在“Templates”選項中選擇“MicroBlaze Processor”選項。
4、在“Edit Customizations”對話框中選擇IP核的應用程序和數量級等其它屬性,並點擊“OK”按鈕。
5、在“Design Sources”界面中會自動添加一個文件“system_wrapper.v”,此時需要使用FPGA的“Generate”和“Import”功能將該文件添加到工程中。
6、在“IP Integrator”中進行相應的連線,並在“Run Block Automation”對話框中進行設置。
7、在IP Integrator中點擊“File”選項卡,並選擇“Export Hardware”選項,將設計導出到SDK軟件開發環境中。
七、在軟件開發工具中編寫彙編程序
1、打開SDK軟件開發環境,創建一個新的應用程序工程。
2、在“SDK”中選擇“Create New Microblaze Project”選項並添加軟件項目文件。
3、在文件列表中右鍵點擊“src”並選擇“New File”添加一個新的彙編文件,將以下代碼粘貼到該文件中:
.text .globl _start _start: addi r3, r0, 0x11 # r3=0x11 addi r4, r0, 0x22 # r4=0x22 add r5, r3, r4 # r5=r3+r4=0x33 loop: b loop # infinite looping
4、將該文件編譯並連接到工程中。
5、將SDK軟件開發環境中生成的可執行文件下載到FPGA中,運行應用程序。
八、總結
本文詳細介紹了MicroBlaze的架構、編程模型及相應的開發工具,並提供了相關代碼示例,希望能夠對想要在FPGA平台上使用MicroBlaze的開發者提供一些幫助。
原創文章,作者:AEXN,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/145572.html