标题：microblaze
简介
MicroBlaze嵌入式软核是一个被Xilinx公司优化过的可以嵌入在FPGA中的RISC处理器软核，具有运行速度快、占用资源少、可配置性强等优点，广泛应用于通信、军事、高端消费市场等领域。
Xilinx公司的MicroBlaze 32位软处理器核是支持CoreConnect总线的标准外设集合。MicroBlaze处理器运行在150MHz时钟下，可提供125 D-MIPS的性能，非常适合设计针对网络、电信、数据通信和消费市场的复杂嵌入式系统。
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通道都可以发送和接收控制或数据字。
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中还带有一些外设接口的IP核，如LMB、OPB总线接口、外部存储控制器、SDRAM控制器、UART、中断控制器、定时器等。利用这些资源，可以构建一个较为完善的嵌入式微处理器系统。
在FPGA上设计的嵌入式系统层次结构为5级。可在最低层硬件资源上开发IP核，或或已开发的IP核搭建嵌入式系统，这是硬件开发部件；开发IP核的设备驱动、应用接口（API）和应用层（算法），属软件开发内容。
利用MicroBlaze构建基本的嵌入式系统。通过标准总线接口—LMB总线和OPB总线的IP核，MicroBlaze就可以和各种外设IP核相连。
EDK中提供的IP核均有相应的设备驱动和应用接口，使用者只需利用相应的函数库，就可以编写自己的应用软件和算法程序。对于用户自己开发的IP核，需要自己编写相应的驱动和接口函数。
MicroBlaze的应用
在软件无线电系统中，一般采用“微处理器+协处理器”结构。微处理器一般使用通用DSP，主要完成系统通信和基带处理等工作；协处理器用FPGA实现，主要完成同步和预处理等底层算法的运算任务。在本课题中，采用的基带处理算法比较简单，应用软处理器IP核代替DSP，在一片FPGA内就能实现整个系统的设计。这样可以简化系统的结构，提高系统的整体性能。
FPGA片上系统主要完成两个任务—发送和接收数据。对于发送任务，FPGA完成硬件算法的初始化，接收串口数据，并将数据存储在双口SRAM中，系统硬件算法部分对双口SRAM中数据进行基带处理，并将结果送给D/A转换器。对于接收任务，FPGA接收A/D转换器送来的数据，进行基带处理，并将数据存储在双口SRAM中，把存储在双口SRAM中的数据通过串口发送回主机。
在EDK开发套件的XPS集成开发环境下进行系统硬件设计。在其界面环境下，添加IP核，进行系统连接和各项参数设置。由于系统中包含的硬件算法模块不是标准模块，因此工程需要设置成子模块方式，利用平台产生器，根据硬件描述文件（.MHS文件），生成嵌入式系统子模块的网表文件（.NGC）。然后在ISE设计环境下，从外部通过GPIO端口与硬件算法模块相连，从而构成整个应用系统的硬件模型。
在EDK中，每一个外设IP模块都有自己的软件函数库。利用Libgen工具，将所需外设函数数库的头文件添加进工程中，通过调用这些函数可以操作和控制这些外设。例如对串口的操作如下：
//初始化串口，设置波特率等参数，清空发送和接收缓冲，禁止中断；
XuartLite_Initialize(&UART，XPAR_MYUARTLITE_DEVICE_ID);
//发送接收数据
XuartLite_Send(&UART,&send_data,1);XUartLite_Recv(&UART,&recv_data,1);
使用标准C语言进行应用程序的开发，编写相应的算法软件，完成系统功能。软件流程。
将编写的程序代码利用mb-gcc编译工具，根据系统的软件一并，生成.ELF文件。在编译链接之前，若选择调试方式，就会在生成文件中加入调试接口SMDstub，进行程序的硬件调
利用系统的硬件模型以及RAM块的组织结构文件、ELF文件和用户结束文件，应用FPGA综合实现工具（如Xilinx XST）进行综合，然后下载生成的配置BIT文件
到目标板上。利用EDK中提供的GDB调试工具可以进行程序调试。有两种调试方法：软件仿真和硬件调试。软件仿真可以进行程序的功能调试，在开发工具内部就可以进行，不需要硬件支持。硬件调试就是通过JTAG接口或串口（可在硬件设计时选择），连接到目标板上的应用系统中的XMD调试接口，将软件程序下载到系统中进行调试。本课题使用的目标板上的主芯片为Xilinx Spartan IIE 30万门的FPGA，系统时钟为50MHz。实际运行完全满足设计要求。　
采用FPGA和MicroBlaze进行嵌入式系统设计，实现了多片专用芯片的功能，大大缩小了接收机体积，便于系统实现小型化、集成化。捕获及跳频同步等算法采用硬件实现，加快了捕获跟踪速度。实验结果表明，FPGA系统设计是正确可行的。如果在系统中配置大容量的SDRAM，加入以太网或USB等高速通信接口，将实时操作系统运行于处理器上，就可以构建一个较为完善的，基于FPGA的嵌入式系统。这将在网络、通信、消费类产品等多方面有着广阔的应用前景。