【Vivado那些事儿】MicroBlaze MCS 和 MicroBlaze区别

在Block Design中查找IP时输入Microblaze,就会发现下面几种IP,我们常规使用的就是第一个IP,是一个可以自定义外设的软核,但是第三个MicroBlaze MCS到底是个啥,我们接下来详解。

f1a47ee64e2669e18d0d9fdd526b75c7.png

MicroBlaze 微控制器系统 (MCS)是一个 MicroBlaze 实例。MCS 是一个集成的 MicroBlaze 解决方案,在单个模块中包含本地存储器、UART、定时器和 GPIO。MCS 旨在减少逻辑资源和程序存储器的占用空间。MCS 可以使用三级或五级管道,具体取决于优化是针对面积还是性能。

fbb2dcc4d2863c00e6e8f9552eddfb85.png

MCS 的优势之一是,与使用 MicroBlaze 和分立IP创建等效系统相比,MCS 能够实现进一步优化。

MCS 和 MicroBlaze 之间的主要区别如下表所示。

c18b32b5c492a22ee08e6c3d3a83d9c9.png

MCS 为我们想要与 GPIO 交互和 UART 接口使用提供了出色的解决方案。

MCS 解决方案提供以下功能:

  • UART – 具有可配置的波特率、停止位和中断或轮询模式。

  • 固定间隔定时器 (FIT) – 四个具有 32 位的固定内部定时器。每个 FIT 均提供专用输出,可生成 50% 占空比输出。

  • 周期间隔定时器 (PIT) – 四个周期间隔定时器,可在运行时更改。

  • 中断 – IO 模块的中断控制器还可以处理外部中断。

  • GPIO – 四个通用输出和四个通用输入GPIO。

为了探索 MCS,创建一个针对 Arty S7 的项目。项目打开后,可以将 MCS 添加到BD中,并且可以将 GPIO 输出连接到 Arty S7 上提供的按钮、开关、LED 和 RGB LED。

a4cc49a686b8cc1f501cff56c8ad8dc3.png 601a4a401eff5d8c60b1b07d24ed7db1.png

在此示例中,代码读取 DIP 开关并以一秒循环驱动 LED。

#include <stdio.h>

#include "platform.h"

#include "xil_printf.h"

#include "xiomodule.h"

#include "xparameters.h"

#include "xil_printf.h"


int main()

{

 XIOModule IOModule;

 XIOModule_Config *IOCfgPtr = IOModule.CfgPtr;


 u32 switches;


    init_platform();

    print("MicroBlaze MCS\n\r");


    XIOModule_Initialize(&IOModule, XPAR_IOMODULE_0_NUM_INSTANCES);


    while(1){

     switches = XIOModule_DiscreteRead(&IOModule, 1);

     usleep(1000000);

     xil_printf("DIP Switches %x\n\r",switches);

     XIOModule_DiscreteWrite(&IOModule,3,switches);

    }




    cleanup_platform();

    return 0;

}

由于 MCS 不提供从外部存储器运行的能力,因此由 Vitis 生成并包含应用程序的 ELF 文件必须与 Vivado 中的比特流合并。这也能确保了 MCS 应用程序在 FPGA 配置完成后立即开始运行。

49d928481e0c65c534d1dd43acb88735.png

当然,当我们开发这些应用程序时,我们希望应用程序适合用于 MCS 的 BRAM。我们还希望确保不会在 MCS 定义阶段分配过多的 BRAM 。

当我们在 Vitis 中编译程序时,我们可以在控制台中看到已编译程序的字节大小。

86f116535a9100492cf9e5ab53263a44.png

我们可以使用此值来确保最佳的 BRAM 大小。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

OpenFPGA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值