【【水 MicroBlaze 最后的介绍和使用】】

news2024/11/28 0:37:06

水 MicroBlaze 最后的介绍和使用

我对MicroBlaze 已经有了一个普遍的理解 了
现在我将看的两个 一个是 AXI4接口的 DDR读写实验 还有一个是 AXI DMA 环路实验
虽然是 水文 但是 也许能从中 得到一些收获

第一个是 AXI DDR 读写实验

Xilinx 从 Spartan-6 和 Virtex-6 系列开始使用 AXI 协议来连接 IP 核。在 7 系列器件中,Xilinx 在 IP 核中继续使用 AXI 协议。
AXI 协议就是
描述了主设备和从设备之间的数据传输方式,在该协议中,主设备和从设备之间通过握手信号建立连接。
AXI 协议是一种高性能、高带宽、低延迟的片内总线,具有如下特点:
1、总线的地址/控制和数据通道是分离的;
2、支持不对齐的数据传输;

3、支持突发传输,突发传输过程中只需要首地址;
4、具有分离的读/写数据通道;
5、支持显著传输访问和乱序访问;
6、更加容易进行时序收敛。
在数字电路中只能传输二进制数 0 和 1,因此可能需要一组信号才能高效地传输信息,这一组信号就组
成了接口。AXI4 协议支持以下三种类型的接口:
1、 AXI4:高性能存储映射接口。
2、 AXI4-Lite:简化版的 AXI4 接口,用于较少数据量的存储映射通信。
3、 AXI4-Stream:用于高速数据流传输,非存储映射接口。

4、具有分离的读/写数据通道;
5、支持显著传输访问和乱序访问;
6、更加容易进行时序收敛。
在数字电路中只能传输二进制数 0 和 1,因此可能需要一组信号才能高效地传输信息,这一组信号就组
成了接口。AXI4 协议支持以下三种类型的接口:
1、 AXI4:高性能存储映射接口。
2、 AXI4-Lite:简化版的 AXI4 接口,用于较少数据量的存储映射通信。
3、 AXI4-Stream:用于高速数据流传输,非存储映射接口。
在这里我们首先解释一下存储映射(Meamory Map)这一概念。如果一个协议是存储映射的,那么主
机所发出的会话(无论读或写)就会标明一个地址。这个地址对应于系统存储空间中的一个地址,表明是
针对该存储空间的读写操作。
AXI4 协议支持突发传输,主要用于处理器访问存储器等需要指定地址的高速数据传输场景。AXI-Lite
为外设提供单个数据传输,主要用于访问一些低速外设中的寄存器。而 AXI-Stream 接口则像 FIFO 一样,
数据传输时不需要地址,在主从设备之间直接连续读写数据,主要用于如视频、高速 AD、PCIe、DMA 接
口等需要高速数据传输的场合。

实验任务 :
是通过自定义一个 AXI4 接口的 IP 核,通过 AXI 接口对 DDR3 进行读写测试。
下面是 本次设计的系统框图
在这里插入图片描述

在上图中,DDR3_TEST 是我们自定义的 IP 核,具有 AXI4 Master 端口,该端口通过 AXI Interconnect模块,最终连接 MIG IP 核。AXI UART IP 核打印从 DDR3 中读出的数据。DDR3_TEST IP 核在检测到按键按下后会启动读写过程,并将读出的数据与写入的数据作比较,比较完成后点亮 LED1。另外,如果在读写过程中出错,或者在比较的过程中发现读出的数据与写入的数据不一致,LED2 会点亮。

看上去这是 一个相对来说 比之前做过的都要大而复杂的设计
我们需要先自定义一个 带有 AXI4 接口的IP核

自定义IP 我们按照使用手册的要求 配置成了现在这样子
在这里插入图片描述

因为我们在创建的时候 选择了AXI接口 所以其实并不需要我们的其他操作 vivado IP工具就已经帮助我们实现了一个对 AXI 读写的
所以并不需要对这个代码有任何修改

因为以前的 Micro Blaze 的搭建是没有 DDR的系统结构 本次设计 我们将学习带有 DDR的 MicroBlaze 的搭建
在这里插入图片描述

我们修改 Micro Blaze 的第三页 cache的 内容
在这里插入图片描述

这里的数据 必须与 IP INITRATOR->Adress Editor->microblaze_0->的 mig_7series_0

下面是 AXI DMA 环路实验

DMA 是所有现代计算机的重要特色,它允许不同速度的硬件设备进行沟通,而不需要依于中央处理器
的大量中断负载。否则,中央处理器需要从来源把每一片段的数据复制到寄存器,然后把它们再次写回到
新的地方。在这个时间里,中央处理器就无法执行其它的任务。
DMA 是用硬件实现存储器与存储器之间或存储器与 I/O 设备之间直接进行高速数据传输。使用
DMA 时,处理器向 DMA 控制器发出一个存储传输请求,这样,DMA 控制器在传输数据时,处理器可
以执行其它操作,传输操作完成后 DMA 以中断的方式通知处理器。
为了发起传输事务,DMA 控制器必须得到以下数据:
⚫ 源地址 — 数据被读出的地址
⚫ 目的地址 — 数据被写入的地址
⚫ 传输长度 — 应被传输的字节数
在这里插入图片描述

DMA 存储传输的过程如下:

  1. 为了配置用 DMA 传输数据到存储器,处理器发出一条 DMA 命令。
  2. DMA 控制器把数据从外设传输到存储器或从存储器到存储器,而不占用 CPU 来传输数据。
  3. 数据传输完成后,向 CPU 发出一个中断来通知它 DMA 传输可以关闭了。

实验任务是
是使用 AXI DMA IP 核从 DDR3 中读取数据,并将数据写回到 DDR3 中。
下面展示 Micro Blaze 的 系统框图
在这里插入图片描述

这是 AXI DMA环路测试系统的框架图
我们会发现这其中 使用了一个我们上一个实验用过的MIG IP核
我们现在去 《正点原子的达芬奇 FPGA专栏了解 MIG的工作原理》

此处来自 正点原子 达芬奇 FPGA教学的 第44章节

DDR3 SDRAM(Double-Data-Rate Three Synchronous Dynamic Random Access Memory)是 DDR SDRAM 的第三代产品,相较于 DDR2,DDR3 有更高的运行性能与更低的电压。DDR SDRAM 是在SDRAM 技术的基础上发展改进而来的,同 SDRAM 相比,DDR SDRAM 的最大特点是双沿触发,即在时钟的上升沿和下降沿都能进行数据采集和发送,同样的工作时钟,DDR SDRAM 的读写速度可以比传统的SDRAM 快一倍。本次实验使用的 DDR3 芯片是南亚的 NT5CC128M16IP-DI,NT5CC128M16IP-DI 的 bank位宽为 3,行位宽为 14,列位宽为 10,所以它的地址大小等于 23*2142^10(即 2^27=128M),数据位宽为 16bit,所以容量大小为 128M16bit,也就是 256MByte。

由于 DDR3 的时序非常复杂,如果直接编写 DDR3 的控制器代码,那么工作量是非常大的,且性能难以得到保证。值得一提的是,Artix7 系列 FPGA 自带了 DDR3 控制器的硬核,用户可以直接借助 IP 核来实现对 DDR3 的读写操作,从而大大降低了 DDR3 的开发难度。所以我们一般来说,是使用 MIG 这样的IP控制器 来对DDR3 进行赋值操作
我们观察一下 MIG的结构框图
在这里插入图片描述

MIG IP核 对外分出了两组接口。左侧是用户接口(用户端 FPGA 同 MIG交互的接口)
右侧为 DDR 物理芯片接口,负责产生具体的操作时序,并直接操作芯片管脚。这一侧用户只负责分配正确的管脚,其他不用关心。
使用这个 IP 核,用户将可以进行 DDR3 的读写操作而不必熟悉 DDR3 具体的读写控制时序,当然用户必须掌握用户接口侧的操作时序,并严格遵照时序来编写代码,这样才能正确实现对 DDR3 的读写操作。在了解具体时序之前,大家有必要先了解相关的信号定义。下图给出了 MIG IP 核用户接口的信号及其说明
MIG IP 核用户侧端口数量共 26 个,当然用户并不用去关心所有的信号,只需要了解本实验要用到几组重要信号。下面将对这些信号逐一讲解并以表格的形式呈现给大家。为了与官方的文档保持一致,表中标明的信号的方向是以 MIG IP 核作为参照的,例如表格中的信号方向定义为输出,那么相对于用户端(FPGA)来说实际上是输入。
在这里插入图片描述

以上是用户需要用到的信号,其他信号请大家自行了解。DDR3 的读或者写都包含写命令操作,其中写操作命令(app_cmd)的值等于 0,读操作 app_cmd 的值等于 1。首先来看写命令时序,如下图所示。首先检查 app_rdy,为高则表明此时 IP 核命令接收处于准备好状态,可以接收用户命令,在当前时钟拉高app_en,同时发送命令(app_cmd)和地址(app_addr),此时命令和地址被写入。

大概get 到了 我们现在回到 Micro Blaze 的章节
我们继续研究下整个结构
在这里插入图片描述

MicroBlaze处理器通过互连模块与AXI DMA IP核通信,从而实现设置、启动和监控数据传输。AXI DMA IP 核通过互连模块从 DDR3 中读取数据后发送给 AXI4 Stream Data FIFO,在这种情况下 AXI4 Stream Data FIFO 模块可以充当带有 Stream 接口的高速 DA。AXI DMA IP 核读取 AXI4 Stream Data FIFO 模块中的数据后通过互连模块将数据写入 DDR3,在这种情况下 AXI4 Stream Data FIFO 模块充当带有 Stream 接口的高速AD。

我们要有举一反三的精神 比照一下之前的 DMA 环路实验
在这里插入图片描述

接下来 我们回到现在的 Micro Blaze 的搭建 我们回到vivado
在这里插入图片描述

第二页 基本上是 一些优化的选项 我们无需变动 这里第 三页是配置 cache 的 选项
在这里插入图片描述

这里是对cache的配置
Debug 保持不变
接下来 我们来看 Buses 的 配置
在这里插入图片描述

这样子 我们先生成 block design

在这里插入图片描述

下面是 我们多个模块的作用
在这里插入图片描述

下面 我们 进行一系列优化之后的 Block Design
在这里插入图片描述

下面我来讲述一下 MIG 的配置原理 及 使用
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

下面是对Controller Options

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

元宇宙真的凉凉了吗?

AI和元宇宙作为引领技术和产业发展的两个并行元素正在加速融合,激发出行业强大的创新力。 这里重点讲一下元宇宙。它是建立在区块链之上的虚拟世界,去中心化平台让用户拥有所有权和自治权。通过沉浸式的体验,让虚拟更接近现实。 随着我国元宇…

学习Pinia

Pinia 1.介绍Pinia2.起步 安装3.看完文章学会pinia 1.介绍Pinia Pinia.js 有如下特点: 完整的 ts 的支持; 足够轻量,压缩后的体积只有1kb左右; 去除 mutations,只有 state,getters,actions; a…

苹果股价为何会在11月份突然暴涨?12月份还会继续上涨吗?

来源:猛兽财经 作者:猛兽财经 苹果股价受益于大盘而上涨 随着第四季度财报的公布,全球市值最高的公司苹果(AAPL)的股价在上个月出现了暴涨,并在11月份剩下的大部分时间里一直保持着与标普500指数一致的走势。 猛兽财经认为主要原…

学习IO的第三天

作业1 使用文件IO完成对图像的读写操作 #include <head.h>int main(int argc, const char *argv[]) {int fd -1;if((fdopen(argv[1],O_RDONLY)) -1){perror("open error");return -1;}int wd -1;if((wdopen(argv[2],O_WRONLY|O_CREAT|O_TRUNC,0664)) -1){…

luceda ipkiss教程 42:获取版图所有的电端口

通过判断版图端口的domain.name&#xff0c;可以知道端口是电端口还是光端口&#xff1a; 如&#xff1a; 可以通过如下代码获取两个电端口&#xff08;anode和cathode&#xff09;的信息&#xff1a; from si_fab import all as pdkdef get_electrical_ports(layout):ports …

NTP反射放大攻击

文章目录 什么是NTPNTP反射放大攻击解决方案搭建NTP服务器部署服务器端windows NTP命令行本机测试 部署客户端ntpdatechrony 实验Python利用脚本 什么是NTP 基于UDP协议的NTP&#xff08;网络时间协议&#xff09;&#xff1a;使网络中各个计算机时间同步的一种协议 用途&…

结合ColorUI组件开发微信小程序

1.自定义组件生命周期函数&#xff1a; Component({data: {},attached() {console.log("自定义组件生命周期函数 attached--先执行");this.getPos();},ready() {console.log("ready生命周期函数---在attached之后执行")},methods: {getPos() {var that th…

高效率完成工作任务的工具推荐,待办清单类工具用哪个

日常办公中&#xff0c;领导常常会以高效率完成工作任务来评判一个员工是否敬业&#xff0c;是否在工作岗位上兢兢业业。而想要高效率完成工作也是有技巧的&#xff0c;如提前对各项工作做好规划&#xff0c;制定工作条目清单&#xff0c;跟进好工作任务的进展等等。 职场办公…

HarmonyOS创建JavaScript(类 Web开发模式)项目

上文 HarmonyOS带大家创建自己的第一个Page页面并实现路由跳转(ArkTS)带大家创建了我们项目中第一个自己创建的page 并完成了一个跳转逻辑的编写 上文的开发模式是 ArkTS 的 也被称为 声明式开发范式 还有一种 javaScript的 类Web开发模式 这种方式就类似于我们传统的前端开发模…

Spring Cloud Alibaba实践 --Sentinel

sentinel简介 Sentinel的官方标题是&#xff1a;分布式系统的流量防卫兵。从名字上来看&#xff0c;很容易就能猜到它是用来作服务稳定性保障的。对于服务稳定性保障组件&#xff0c;如果熟悉Spring Cloud的用户&#xff0c;第一反应应该就是Hystrix。但是比较可惜的是Netflix…

anaconda3的激活和Cvcode配置C++:报错:CondaIOError: Missing write permissions in:

报错&#xff1a;CondaIOError: Missing write permissions in: 原因&#xff1a;anaconda所在文件夹只有root 才有权限 查看用户名 whoamisudo chown -R 用户名 /home/anaconda3激活anaconda3 #激活 source activate #退出 source deactivate 配置Cvcode配置C 首先看g的…

人机之间如何产生互?

人与人之间的“互”是通过相互交流和互动产生的&#xff0c;可以是语言沟通、非语言交流、表情肢体语言等多种形式。通过互相交流和互动&#xff0c;人们能够了解对方的意见、需求和情感&#xff0c;进而建立起相互间的联系和关系&#xff0c;这种互动还可以促进合作、分享知识…

因为 postman环境变量全局变量设置好兄弟被公司优化了!

postman环境变量、全局变量设置 在公司中&#xff0c;一般会存在开发环境、测试环境、线上环境等&#xff0c;如果需要在不 同的环境下切换做接口测试&#xff0c;显然我们需要把所有接口的域名进行修改&#xff0c;如果接 口测试用例较多&#xff0c;那么修改会非常费力&…

一篇文章带你快速入门 Vue 核心语法

一篇文章带你快速入门 Vue 核心语法 一、为什么要学习Vue 1.前端必备技能 2.岗位多&#xff0c;绝大互联网公司都在使用Vue 3.提高开发效率 4.高薪必备技能&#xff08;Vue2Vue3&#xff09; 二、什么是Vue 概念&#xff1a;Vue (读音 /vjuː/&#xff0c;类似于 view) …

线程状态:深入理解多任务并发编程中的精髓

目录 引言 1. 线程状态概述 1.1 定义 1.2 线程状态图 2. 线程状态的转换 2.1 新建到就绪 2.2 就绪到运行 2.3 运行到阻塞 2.4 运行到等待和超时等待 2.5 运行到终止 3. 实际编程中的线程状态管理 3.1 合理使用wait()和notify() 3.2 谨慎处理阻塞状态 3.3 使用线程…

学会用bash在linux写脚本 (一)

本章主要介绍如何使用bash写脚本。 了解通配符 了解变量 了解返回值和数值运算 grep的用法是“grep 关键字 file”&#xff0c;意思是从file中过滤出含有关键字的行。 例如&#xff0c;grep root /var/log/messages&#xff0c;意思是从/var/log/messages 中过滤出含有root …

线性代数基础【1】行列式

第一节 行列式的基本概念和性质 一、基本概念 ①逆序 1,2和2,1是一对逆序 ②逆序数 1,2,3,5,4的逆序数为1;1,3,2,5,4逆序数为4; ③行列式 ④余子数和代数余子数 行列式挖掉一个数(例如aij),将原行列式去掉i行j列的行列式M,则M为余子数,代数余子数记为Aij,如果(ij)为偶数…

Gan论文阅读笔记

GAN论文阅读笔记 2014年老论文了&#xff0c;主要记录一些重要的东西。论文链接如下&#xff1a; Generative Adversarial Nets (neurips.cc) 文章目录 GAN论文阅读笔记出发点创新点设计训练代码网络结构代码测试代码 出发点 Deep generative models have had less of an impac…

06 JQuery调用接口

文章目录 一、Qs.js库介绍1. Qs简介2. Qs.parse3. Qs.stringify 二、jQuery调用接口1. 增加&#xff08;Create&#xff09;2. 删除&#xff08;Delete&#xff09;3. 读取&#xff08;Read&#xff09;4. 更新&#xff08;Update&#xff09; 三、示例 一、Qs.js库介绍 1. Qs…

机器连接和工业边缘计算

软件应用和IT创新是制造业投资的主要驱动力。解决方案架构应围绕特定标准进行整合&#xff0c;并采用架构蓝图和最佳实践来满足最终用户的需求。此外&#xff0c;边缘计算&#xff08;Edge Computing&#xff09;也将在制造业中加速部署。 边缘计算是制造业的下一个变革驱动力。…