在block design中查找ip时输入microblaze,就会发现下面几种ip,我们常规使用的就是第一个ip,是一个可以自定义外设的软核,但是第三个microblaze mcs到底是个啥,我们接下来详解。
microblaze 微控制器系统 (mcs)是一个 microblaze 实例。mcs 是一个集成的 microblaze 解决方案,在单个模块中包含本地存储器、uart、定时器和 gpio。mcs 旨在减少逻辑资源和程序存储器的占用空间。mcs 可以使用三级或五级管道,具体取决于优化是针对面积还是性能。
mcs 的优势之一是,与使用 microblaze 和分立ip创建等效系统相比,mcs 能够实现进一步优化。
mcs 和 microblaze 之间的主要区别如下表所示。
mcs 为我们想要与 gpio 交互和 uart 接口使用提供了出色的解决方案。
mcs 解决方案提供以下功能:
uart – 具有可配置的波特率、停止位和中断或轮询模式。
固定间隔定时器 (fit) – 四个具有 32 位的固定内部定时器。每个 fit 均提供专用输出,可生成 50% 占空比输出。
周期间隔定时器 (pit) – 四个周期间隔定时器,可在运行时更改。
中断 – io 模块的中断控制器还可以处理外部中断。
gpio – 四个通用输出和四个通用输入gpio。
为了探索 mcs,创建一个针对 arty s7 的项目。项目打开后,可以将 mcs 添加到bd中,并且可以将 gpio 输出连接到 arty s7 上提供的按钮、开关、led 和 rgb led。
在此示例中,代码读取 dip 开关并以一秒循环驱动 led。
#include #include platform.h#include xil_printf.h#include xiomodule.h#include xparameters.h#include xil_printf.hint main(){ xiomodule iomodule; xiomodule_config *iocfgptr = iomodule.cfgptr; u32 switches; init_platform(); print(microblaze mcs); xiomodule_initialize(&iomodule, xpar_iomodule_0_num_instances); while(1){ switches = xiomodule_discreteread(&iomodule, 1); usleep(1000000); xil_printf(dip switches %x,switches); xiomodule_discretewrite(&iomodule,3,switches); } cleanup_platform(); return 0;}
由于 mcs 不提供从外部存储器运行的能力,因此由 vitis 生成并包含应用程序的 elf 文件必须与 vivado 中的比特流合并。这也能确保了 mcs 应用程序在 fpga 配置完成后立即开始运行。
当然,当我们开发这些应用程序时,我们希望应用程序适合用于 mcs 的 bram。我们还希望确保不会在 mcs 定义阶段分配过多的 bram 。
当我们在 vitis 中编译程序时,我们可以在控制台中看到已编译程序的字节大小。
我们可以使用此值来确保最佳的 bram 大小。
摩托罗拉暗示发布无线充电设备
常规五参数水质检测仪河道水质在线监测方案
MIC5158姐成的具有短路保护功能的5V、3.3V/10A
医疗废物在线监测系统
三坐标测量仪影像仪厂家如何选择
MicroBlaze MCS和MicroBlaze的区别在哪?
什么是线性光耦?相关知识介绍!
阿里云通过API经济激活第三产业的新能量
窄带物联网应用推广路越来越宽,相关硬件市场拥有广阔市场空间
John Giannandrea将执行苹果的机器学习和AI战略
华为P50 Pocket折叠屏手机怎么样
主流快充方案的几种设计思路探讨
基于STM32的FreeRTOS应用问题解答
仪表运放在没有输入信号时有很大的50HZ输出,怎么抑制?
台半导体封测产业完成整并最后一步
物联网包括了哪一些技术
LED防爆灯驱动电源的功能具有怎样的特性
联通版Nano-SIM卡曝光 可预约免费换卡
将光纤用于传感器网络设计中有着怎样的好处
SRAM的基础电路及原理分析