microblaze
MicroBlaze嵌入式软核是一个被Xilinx公司优化过的可以嵌入在FPGA中的RISC处理器软核,具有运行速度快、占用资源少、可配置性强等优点,广泛应用于通信、军事、高端消费市场等领域。
Xilinx公司的MicroBlaze 32位软处理器核是支持CoreConnect总线的标准外设集合。MicroBlaze处理器运行在150MHz时钟下,可提供125 D-MIPS的性能,非常适合设计针对网络、电信、数据通信和消费市场的复杂嵌入式系统。
MicroBlaze 是基于Xilinx公司FPGA的微处理器IP核,和其它外设IP核一起,可以完成可编程系统芯片(SOPC)的设计。MicroBlaze 处理器采用RISC架构和哈佛结构的32位指令和数据总线,可以全速执行存储在片上存储器和外部存储器中的程序,并访问其数据。
MicroBlaze内部有32个32位通用寄存器和2个32位特殊寄存器—PC指针和MSR状态标志寄存器。为了提高性能,MicroBlaze还具有指令和数据缓存。所有的指令字长都是32位,有3个操作数和2种寻址模式。指令按功能划分有逻辑运算、算术运算、分支、存储器读/写和特殊指令等。指令执行的流水线是并行流水线,它分为3级流水:取指、译码和执行。
MicroBlaze可以响应软件和硬件中断,进行异常处理,通过外加控制逻辑,可以扩展外部中断。利用微处理器调试模块(MDM)IP核,可通过JTAG接口来调试处理器系统。多个MicroBlaze处理器可以用1个MDM来完成多处理器调试。
MicroBlaze处理器具有8个输入和8个输出快速单一链路接口(FSL)。FSL通道是专用于单一方向的点到点的数据流传输接口。FSL和MicroBlaze的接口宽度是32位。每一个FSL通道都可以发送和接收控制或数据字。
来自 <https://baike.baidu.com/item/microblaze/4554339?fr=aladdin>
一个简单的Microblaze系统:
1. Microblaze核
2. 时钟产生模块、重置信号产生模块
3. LMB模块 局部存储模块,分为ILMB(指令)和DLMB(数据)
该模块用来作为CPU的内存,可以分成指令和数据两块内存,也可以共享一块内存
现假设指令和数据内存控制器是分开的,那么LMB模块由如下几个模块组成
两个LMB总线模块,两个LMB内存控制器,一个BRAM模块
其中LMB内存控制器的 SLMB Adrress Decode Mask指定了内存哪一位作为LMB解码器需要考虑地址解码的位,比如0x010,那么第5位就是被看作是否进行地址解码的位数
MicroBlaze可以直接操作GPIO、BRAM等模块而不使用API接口,使用"xil_io.h"头文件的如下函数:
Xil_Out32(REG_ADDR, Value);
Value = Xil_In32(REG_ADDR, Value);
设置为Area优先,则为三级流水线
设置为Performance优先,则为五级流水线
设置为Frequency优先,则为八级流水线