一、MicroBlaze介绍
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 通道都可以发送和接收控制或数据字。
MicroBlaze 处理器系统框图如下所示:
二、CoreConnect技术
CoreConnect是由IBM开发的片上总线通信链,它使多个芯片核相互连接成为一个完事的新芯片成为可能。CoreConnect 技术使整合变得更为容易,而且在标准产品平台设计中,处理器、系统以及外围的核可以重复使用,以达到更高的整体系统性能。
CoreConnect总线架构包括处理器本机总线(PLB ),片上外围总线(OPB ),1个总线桥,2个判优器,以及1个设备控制寄存器((DCR)总线。Xilinx将为所有嵌入式处理器用户提供IBM CoreConnect许可,因为它是所有Xilinx嵌入式处理器设计的基础。MicroBlaze处理器使用了与IBM PowerPC相同的总线,用作外设。虽然MicroBlaze软处理器完成独立于PowerPC,但它让设计者可以选择芯片上的运行方式,包括一个嵌入式PowerPC,并共享它的外设。
(1) 片上外设总线(OPB )
内核通过片上外设总线(OPB)来访问低速和低性能的系统资源。OPB是一种完全同步总线,它的功能处于一个单独的总线层级。它不是直接连接到处理器内核的。OPB接口提供分离的32位地址总线和32位数据总线。处理器内核可以借助“PLB to OPB”桥通过OPB访问从外设。作为OPB总线控制器的外设可以借助“OPB to PLB”桥,通过PLB访问存储器。
(2) 处理器本机总线(PLB )
PLB接口为指令和数据一侧提供独立的32位地址和64位数据总线。PLB支持具有PLB总线接口的主机和从机通过PLB信号连接来进行读写数据的传输。总线架构支持多主从设备。每一个PLB主机通过独立的地址总线、读数据总线和写数据总线与PLB连接。PLB从机通过共享但分离的地址总线、读数据总线和写数据总线与PLB连接,对于每一个数据总线都有一个复杂的传输控制和状态信号。为了允许主机通过竞争来获得总线的所有权,有一个*判决机构来授权对PLB的访问。
(3)设备控制寄存器总线(DCR)
设备控制寄存器总线(DCR)是为在CPU通用寄存器(GPRs )和DCR的从逻辑设备控制寄存器(DCRs )之间传输数据而设计的。
三、Microblaze开发
应用EDK(嵌入式开发套件)可以进行MicroBlaze IP核的开发。工具包中集成了硬件平台生产器、软件平台产生器、仿真模型生成器、软件编译器和软件调试工具等。EDK 中提供一个集成开发环境XPS ( Xilinx平台开发平台),以便使用系统提供的所有工具,完成嵌入式系统开发的整个流程。EDK中还带有一些外设接口的P核,如AXI、PLB总线接口、外部存储控制器、SDRAM控制器、UART、中断控制器、定时器等。利用这些资源,可以构建一个较为完善的嵌入式微处理器系统。
在FPGA上设计的嵌入式系统层次结构为5级。可在最低层硬件资源上开发IP核,或为已开发的P核搭建嵌入式系统,这是硬件开发部件;开发IP核的设备驱动、应用接口(API )和应用层(算法),属软件开发内容。
利用MicroBlaze构建基本的嵌入式系统。通过标准总线接口PLB总线和AXI总线的IP核,MicroBlaze就可以和各种外设IP核相连。
EDK中提供的IP核均有相应的设备驱动和应用接口,使用者只需利用相应的函数库,就可以编写自己的应用软件和算法程序。对于用户自己开发的IP核,需要自己编写相应的驱动和接口函数。