【【FPGA的 MicroBlaze 的 介绍与使用 】】

news2024/9/23 9:23:57

FPGA的 MicroBlaze 的 介绍与使用

在这里插入图片描述

可编程片上系统(SOPC)的设计
在这里插入图片描述

在进行系统设计时,倘若系统非常复杂,采用传统 FPGA 单独用 Verilog/VHDL 语言进行开发的方式,工作量无疑是巨大的,这时调用 MicroBlaze 软核嵌入式处理器 IP 核,将会大大减少开发人员的工作量,从而对于提升工作效率,节约项目成本具有重大意义。采用 FPGA 和 MicroBlaze 进行嵌入式系统设计,可实现多片专用芯片的功能,有利于系统实现小型化、集成化。由于使用 MicroBlaze 软核进行系统搭建时需要利用 FPGA 内部通用资源和相关 IP 核,会占用一定的资源,因此当所要实现的功能较为简单时,则没有必要使用 Microblaze 来实现,传统的 FPGA 设计更具有优势;而当实现的功能较为复杂时(如 GUI 界面的实现),则使用 Microblaze 更具有优势,可以大大提升工作效率。

使用 MicroBlaze 的设计流程
使用 MicroBlaze 进行嵌入式设计包括两部分,分别是硬件设计和软件设计。硬件设计使用到的工具是Xilinx 提供的 Vivado 套件,软件设计使用 Xilix 提供的 Vitis 统一软件平台。在 Vivado 中我们可以在 Block Design 中搭建 MicroBlaze 处理系统,然后生成包含硬件信息的 xsa(Xilinx Shell Archive)文件。利用 xsa 文件在 Vitis 软件中搭建硬件平台,进行软件设计和调试。

在这里插入图片描述

第一步:配置 MicroBlaze 核、其他需要的 IP 核以及外围设备。
第二步:硬件设计执行综合、布局布线等。
第三步:生成 BIT 流文件。
第四步:导出包含硬件信息的 xsa 文件。
第五步:启动 Vitis,创建硬件平台工程和应用工程。
第六步:设计软件并调试。
第七步:编译工程生成 ELF 文件。
第八步:将 bit 和 ELF 文件合并为 download.bit 文件并固化。

MicroBlaze 软核的嵌入式开发流程
在这里插入图片描述

如上图所示,开发流程大体可以分为 6 步。其中 step1 至 step4 为硬件设计部分,在 Vivado 软件中实现;step5 为软件设计部分,在 Vitis 软件中实现;step6 为功能的验证。复杂的程序还涉及 Debug,这个也是在Vitis 软件中实施,具体每一步的操作我们会在后面详细介绍。在简单了解嵌入式系统的开发流程后,接下来我们来看一下什么是嵌入式最小系统。嵌入式最小系统的概念包括以下两个方面:一、它是使系统正常工作的最小条件;二、它是其他系统建立的基础。

在这里插入图片描述

以 MicroBlaze 为核心、LocalMemory(片上存储)为内存,加上传输信息使用的 UART串口就构成了嵌入式最小系统。

当程序比较简单时,Local Memory 可以作为程序的运行空间以及存储空间,空间大小可以根据需要设置最小 8KB 到最大 128KB;当程序比较复杂的时候,我们也可以使用片上搭载的外部存储器(如 DDR3)作为程序的运行空间以及存储空间。

AXI Interconnect IP 核用于将一个(或多个)AXI 存储器映射的主器件与一个(或多个)存储器映射互联。在这里我们解释一下这个术语——互联(Interconnect):互联实际上是一个开关,它管理并指挥所连接的 AXI 接口之间的通信。

实验任务
本章的实验任务是在达芬奇 Pro 开发板上搭建基于 BRAM 的 MicroBlaze 嵌入式最小系统,并使用串口打印“Hello World”信息。
在这里插入图片描述

创建MicroBlaze IP核
在这里插入图片描述
在这里插入图片描述

对于 debug 的 调配
在这里插入图片描述

Run Block Automation

在这里插入图片描述

然后点击 OK 接下来会多产生几个不同的Block
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

我们现在要用串口打印信息,因此还需添加 Axi Uartlite IP 核
在这里插入图片描述

下面是得出的hello world 的 Block Design
在这里插入图片描述

在自动连接之后 添加了 AXI Interconnect

我们观察整个系统 会发现 有这样的连接
在这里插入图片描述

橙色高亮的两组信号线表明,在这个设计中,AXI 互联实现了由主器件(MicroBlaze)到从器件(AXI Uartlite)一对一的连接。它也可以实现一对多、多对一以及多对多的 AXI 接口连接。本次实验中,AXI Interconnect IP 就实现了 MicroBlaze 与 AXI Uartlite 的互联,MicroBlaze 中产生的数据能够通过 AXI 协议传输到 AXI Uartlite 模块,AXI Uartlite 模块接收的数据也可以通过 AXI 协议传输到MicroBlaze。

一个很大的注意点 :
我们会观察到 为什么在纯 FPGA端 点击之后 我们会需要添加 管脚约束 而在 之前的 zynq 上并没有 很强烈的这种要求
因为 zynq 是 带有 ARM核 的 结构 在底板上 已经把很多 东西接上去 相当于 之前已经配置好了 所以我们并不需要 额外的操作
但是对于软核而言 我们利用了 FPGA的全能性 用内部的机能 构建出了 一个假的但是很正的 CPU 这就是 软核的本质
所以我们 在使用中 我们 需要编排 添加一下 管脚约束

BSP 的 板级验证包在这里
在这里插入图片描述

我们点击进入src文件夹 对.c文件进行分析
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1272679.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

tornado模版注入 [护网杯 2018]easy_tornado 1

打开题目 打开flag.txt 告诉我们flag在 /fllllllllllllag下 打开welcome.txt 我们看到了render渲染函数,联想到ssti 打开hints.txt 然后我们留意到每个打开url上面都有filehash 告诉我们如果想要访问/fllllllllllllag下的flag文件,是需要filehash这个GE…

回文链表,剑指offer 27,力扣 61

目录 题目: 我们直接看题解吧: 解题方法: 难度分析: 审题目事例提示: 解题分析: 解题思路(数组列表双指针): 代码说明补充: 代码实现: 代码实现&a…

Selenium——isDisplayed()、isEnabled()、isSelected()

判断页面是否存在某元素 Selenium没有直接提供判断是否存在的方法,可以使用findElements返回的数量判断;或者判断findElement是否抛出异常 webDriver.findElements(By.xpath("(//div[classel-button-group]//button)[1]")).size()isDisplaye…

2023.11.28 使用tensorflow进行“三好“权重分析

2023.11.28 使用tensorflow进行"三好"权重分析 这是最基础的一个神经网络问题。许久没有再使用,用来做恢复训练比较好。 x1w1 x2w2 x3*w3 y,已知x1,x2,x3和y,求w1,w2,w3 这是一个三元一次方程,正常需要三组数据就能…

使用 kubeadm 部署 Kubernetes 集群(一)linux环境准备

一、 初始化集群环境 准备三台 rocky8.8 操作系统的 linux 机器。每台机器配置:4VCPU/4G 内存/60G 硬盘 环境说明: IP 主机名 角色 内存 cpu 192.168.1.63 xuegod63 master 4G 4vCPU 192.168.1.64 xuegod64 worker 4G 4vCPU 192.168.1.62 xuegod62 work…

phpoffice在tp框架中如何实现导入导出功能

安装 phpoffice/phpspreadsheet 库 composer require phpoffice/phpspreadsheet 导入功能 创建一个用于上传文件的视图&#xff0c;可以使用元素来实现文件上传。 <!-- application/view/your/import.html --><form action"{:url(your/import)}" method&q…

提升团队协同效率:2023年值得尝试的6大团队任务管理软件

更好地协作、提高工作效率、追踪任务进度并确保任务按时完成。在市面上有很多团队任务管理工具可供选择&#xff0c;本文将为您推荐6款高效实用的团队任务管理工具。 1、飞项 飞项是一款集任务管理、项目协作、团队沟通于一体的协同办公软件。它提供了任务清单、日程安排、文…

Linux命令--根据端口号查看进程号(PID)

Linux命令–根据端口号查看进程号&#xff08;PID&#xff09; 查找8080端口对应的进程号: netstat -nlp|grep :8297对应的进程号1061,如果想杀掉此进程&#xff0c;可以用一下命令&#xff1a; kill -9 1061

XXL-Job详解(二):安装部署

目录 前言环境下载项目调度中心部署执行器部署 前言 看该文章之前&#xff0c;最好看一下之前的文章&#xff0c;比较方便我们理解 XXL-Job详解&#xff08;一&#xff09;&#xff1a;组件架构 环境 Maven3 Jdk1.8 Mysql5.7 下载项目 源码仓库地址链接: https://github.…

网络基础『发展 ‖ 协议 ‖ 传输 ‖ 地址』

&#x1f52d;个人主页&#xff1a; 北 海 &#x1f6dc;所属专栏&#xff1a; 神奇的网络世界 &#x1f4bb;操作环境&#xff1a; CentOS 7.6 阿里云远程服务器 文章目录 &#x1f324;️前言&#x1f326;️正文1.网络发展1.1.背景1.2.类型 2.网络协议2.1.什么是协议2.2.协议…

OSEK OS任务调度的底层逻辑

先参考 FreeRTOS的任务触发底层逻辑 简述RTOS任务调度底层逻辑 AUTOSAR-OS的调度机制-调度表&#xff08;没理解透&#xff0c;继续更新&#xff09; OSEK与FreeRTOS在任务调度上最大的区别在于&#xff0c;FreeRTOS是基于全抢占任务调度和时间片轮转调度机制&#xff0c;具有…

Pyqt5实现多线程程序

主从架构 Pyqt常常使用**主从架构&#xff08;Master-Workers 架构&#xff09;**来避免界面卡死的情况。 Master-Workers 架构就像它的名字&#xff0c;一个master统领着几个workers一起干活。其中某个worker倒下了不会导致整体任务失败。matser不用干活&#xff0c;因此可以…

2021年9月15日 Go生态洞察:TLS加密套件的自动排序机制

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

4年功能测试裸辞找不到工作,一周我就后悔了····

我们可以从以下几个方面来具体分析下&#xff0c;想通了&#xff0c;理解透了&#xff0c;才能更好的利用资源提升自己。 一、我会什么&#xff1f; 先说第一个我会什么&#xff1f;第一反应&#xff1a;我只会功能测试&#xff0c;在之前的4年的中我只做了功能测试。内心存在…

autogen的理解和实践

什么是autogen? AutoGen 是一个框架&#xff0c;支持使用多个代理来开发 LLM 应用程序&#xff0c;这些代理可以相互对话来解决任务。AutoGen 代理是可定制的、可对话的&#xff0c;并且无缝地允许人类参与。他们可以采用法学硕士、人力投入和工具组合的各种模式运作。简单来说…

高级IO select 多路转接实现思路

文章目录 select 函数fd_set 类型timeval 结构体select 函数的基本使用流程文件描述符就绪条件以select函数为中心实现多路转接的思路select 缺陷 select 函数 int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); selec…

3款厉害的小工具,小黑子都在用!

大家好&#xff0c;我是 Javapub。 程序员与普通人最大的区别是什么&#xff0c;当然是会使用工具。基于一些同学经常问我的问题&#xff0c;接下来给大家分享几款我经常使用的工具&#xff0c;主打一个提升效率。 第一款 Everything 用 windwos 的同学都体会过&#xff0c;…

咨询+低代码,强强联合为制造业客户赋能

内容来自演讲&#xff1a;沈毅 | 遨睿智库 | 董事长 & 王劭禹 | 橙木智能 | 联合创始人 摘要 文章主要讲述了智库董事长沈毅创办广告公司的经历&#xff0c;以及他在管理公司过程中遇到的问题和挑战&#xff0c;最后通过与明道云以及橙木智能联合创始人王邵禹老师的合作&…

STM32/GD32_分散加载

Q&#xff1a;如何将一个变量、某个源文件的函数在编译阶段就存储在用户指定的区域&#xff1f; KEIL环境&#xff1a;.map后缀文件、.sct后缀文件 IAR环境&#xff1a;.map后缀文件、.icf后缀文件 【map文件】 对固件里面的变量、函数、常量等元素的存储空间进行分配的说明…

【计算机毕业设计】springboot+java高校实验室器材耗材料借用管理系统94l73

实验室耗材管理系统在Eclipse/idea环境中&#xff0c;使用Java语言进行编码&#xff0c;使用Mysql创建数据表保存本系统产生的数据。系统可以提供信息显示和相应服务&#xff0c;本系统教师和学生申请使用实验材料&#xff0c;管理员管理实验材料&#xff0c;审核实验材料的申请…