深入 AXI4 总线(二)架构

2023-11-04

五个独立通道

AXI4 总线的一大特征是它有 5 个独立的传输通道,这些通道都只支持单向传输。作为类比,SPI 总线有 2 条传输通道:MISO, MOSI。SPI 输入输出的数据,大路朝天,各走一条;而作为对比, IIC 协议则只有 SDA 一条通道,输入输出数据只能在这一条通道上分时双向传输。

单向传输的通道意味着通道两端的终端节点是有身份差距的,好比水只能从上游流到下流。在 AXI 总线传输中,通道两端分为 Master 主机与 Slave 从机,主机总是发起读写请求的一方,而我们五大通道的读/写定义就都是根据主机来定义的。

那么五个通道都有谁呢:

  1. 读地址 read address
  2. 读数据 read data
  3. 写地址 write address
  4. 写数据 write data
  5. 写回复 write response

5 个是不是很奇怪,你看读/写怎么也得是个 2 的倍数不是,那为什么不是 6 条,为什么没有读响应?其实,读响应借用了读数据通道。至于为什么没有独立的读回复通道,我们之后再讲。

五个独立通道在读写操作中的角色

首先是写操作,主机在写地址通道上写地址和控制信息。

在写地址操作结束之后,即主机确保从机已经获得了此次传输的地址和控制信息后,才开始在写数据通道上写数据。

从机在写回复通道上,将此次写传输的状态回复给主机。

一般来说,写数据都发生在写地址操作之后,但也不是绝对的,在有些情况下,可以先写数据。但是,所有情况下,写回复必然是在写数据之后,是对此次写数据的状态回复。

 

接下来看读操作:

读操作只涉及两个通道,首先主机在读地址通道上写入想要读取的数据的地址以及控制信息。

从机在接收到地址后,将该地址上的数据通过读数据通道发送给主机。

有两点值得注意:一是 AXI 总线支持突发传输,主机可以写入起始地址以及突发传输的字节数,从机将发送起始地址开始,突发传输个数的多个连续地址上的数据。

二是虽然名字为读地址通道,但实际上仍由主机写入地址,只不过是写入要读取数据的地址。读地址通道,这个名字确实有点歧义,主机读操作地址通道表达得更贴切一些。

 

通道定义

五个通道有一些共同的定义:

每个通道都使用 VALID/READY 握手机制,详情可见:

在读数据以及写数据两条数据通道中,传输一次突发传输中的最后一个数据,必须要给出 LAST 信号,来标识这是此次突发传输中的最后一个数据。如果缺少 LAST 信号会破坏 AXI 总线的工作状态。

 

读地址通道与写地址通道:

在这两条通道上传输地址和控制信息,读写操作都拥有各自的地址通道。地址位宽一般限制为32位。

读数据通道:

读数据通道上包括从机发送给主机的读数据以及读操作完成状态回复,具体的读操作状态回复情况会在之后讨论。数据的宽度可以是8,16,64,128,256,512 或者是 1024 比特。

写数据通道:

写数据的宽度和读数据通道的数据位宽相同,写通道有一点读通道所不具有的特性是有 STROBE 信号,用于标识写数据中有效的传输字节,即有些无效的数据,出于减少主机工作量的目的,或者在读写宽度不对称时,被放到写数据通道上和有效数据一起发送。而 STROBE 的信号的作用就是标识出这些无用的数据,告知从机不需要接收无用数据。(Master:我太懒,以至于把所有信号都送过来了)

写回复通道:

用于从机将写完成情况回复给主机。所有的写传输操作都需要在写回复通道上接收此次写传输操作的完成情况。值得注意的是写回复是针对一次突发传输的,而不是针对每一次的写数据操作的。(一次突发传输包括了多次写操作)

那么问题来了,为什么只有写回复通道而没有读回复通道呢?

这个问题可以从数据流向看出来,主机在读取数据时,数据在读通道上传输,流向为从机到主机。而读回复由从机向主机报告读操作的情况,信号的数据流向也是从机到主机,所以读回复可以合并在读数据通道中。

但写回复通道的数据流向就和写数据相反。写数据是从主机到从机,而写回复为从机报告写操作的完成情况,流向为从机到主机,无法合并到写数据通道中,另一方面,写回复又是不可或缺的,所以就有了一条独立的写回复通道。

通道上的信号们

全局信号

AXI 总线中有两个全局信号:ACLK,全局的时钟信号,所有的传输操作都发生在 ACLK 的上升沿。ARESETn,全局复位信号,低电平有效。在复位问题上,AXI 规定了一些细节,会在后续的文章中讨论。

写地址通道

写地址通道的信号可以分为 3 部分:经常用到的基础信号,突发传输有关的信号以及和内存访问相关以及其他的在基础阶段不是很常用的信号。

基础信号即 AWADDR:你想要写入的地址,AWVALID 以及 AWREADY:所有通道都使用的握手信号。

突发传输指的是传输一次起始地址后,进行多次地址上连续的读写操作。突发传输有关的操作包括:AWLEN:突发传输的长度,即在一次突发传输中数据传输的个数。AWSIZE:每次突发传输中的数据传输的位宽。AWBURST:突发传输的类型。

其他信号包括和内存原子操作有关的 AWLOCK,AWCACHE,AWPROT 以及用于用户自定义的 AWUSER 信号,都将在以后的文章涉及。(等我自己先用到再说)

读地址通道

读地址通道和写地址通道的信号十分类似,就不再从 specification 中截图以及介绍了。

写数据通道

值得注意的是 AXI4 不再支持 WID 信号,这和 AXI4 的乱序机制有关,AXI4 规定所有数据通道的数据必须顺序发送。

WDATA 与常见的握手信号不再赘述,WDATA 的可使用位宽可以见上文。WSTRB 信号用于标记传输数据中有效的字节,每个 WSTRB 位对应一个字节的位宽,比如数据位宽为 64 位,那么 WSTRB 信号的位宽就是 1 个字节,共 8 位。(感谢评论区纠正)

WLAST 标识一次突发传输中最后一次数据传输,如果没有正确的 WLAST 的信号,就会造成写入地址的混乱,导致从机无法正确接收写数据,从而造成从机不再拉高 READY 信号的现象。

写回复通道

与写数据通道不同,写回复通道支持 BID,即支持乱序的写回复,关于乱序的问题,我们稍后再谈。BRESP 回复上一次的写状态。

读数据通道

读数据通道与写数据通道类似,区别有两点:一,支持 RID 信号。二,因为读回复信息在读数据通道上传递,所以集成了 RRESP 信号,用于返回读状态,值得注意的是读回复信号和读数据一样,发送方(source)为从机(slave)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

深入 AXI4 总线(二)架构 的相关文章

  • ZYNQ 在linux 通过AXI_GPIO操作电平

    在petalinux 通过AXI GPIO操作电平 以zynq为例 xff0c vivado工程 xff1a axi gpio n都是选择的一位输出 xff1a 管脚约束 xff1a set property SEVERITY Warnin
  • zynq gpio linux,zynq AXI GPIO使用

    通用 如果需要GPIO中断 需要打开arm core中的pl ps中断 如下图 API详情 xgpio函数 int XGpio Initialize XGpio InstancePtr u16 DeviceId 名称 代码 解释 函数名 X
  • ZYNQ7000-AXI GPIO详解

    摘要 AXI GPIO是ZYNQ的一个IP核 xff0c 它能够将PS侧的AXI4 Lite接口转成PL侧的IO口 xff0c 可解决PS侧IO口不够用的问题 本文就AXI GPIO的概念 作用 配置与使用做了详细说明 xff0c 展示了示
  • zynq7000 linux axi-gpio驱动:重置axi-gpio驱动方法

    linux gpio 从内核空间导出到用户空间 petalinux 在制作 Linux 系统时 xff0c 会自动的将 gpio 从内核空间导出到用户空间 xff0c 在用户空间下可以通过 sysfs 方式控制 gpio xff1b 用户空
  • ZYNQ中的GPIO与AXI GPIO

    GPIO GPIO 一种外设 xff0c 对器件进行观测和控制MIO 将来自PS外设和静态存储器接口的访问多路复用到PS引脚上处理器控制外设的方法 通过一组寄存器包括状态寄存器和控制寄存器 xff0c 这些寄存器都是有地址的 xff0c 通
  • xilinx ZYNQ 7000 AXI GPIO

    0AXI GPIO 第一部分 PS 和 PL之间的通讯有一个接口称为AXI AXI总线具体的内容这边不去深究 xff0c 可以理解为一种特殊协议的通讯方式 AXI GPIO是什么意思 xff1f PL是FPGA它可以做成任何你想要的东西 x
  • AXI STREAM ,AXIS总线的理解

    全兼容ZEDBOARD 开发板子 SYSCLK TAOBAO COM 1 xff0c VALID和READY 是所有AXI总线必须有的 xff0c VALID是MASTER告诉SLAVE数据已经展现在了总线上了 xff0c 你可以取走了 x
  • AXI DMA总结、内核axidmatest.c测试程序分析、SG mode

    AXI DMA 概述 xff1a XILINX提供的AXI DMA支持Scatter Gather mode和Direct Register mode 数据位宽支持32 64 128 256 512 1024bits xff0c strea
  • 在EBAZ4205 zynq7010上运行AXI_DMA中断回环测试

    在EBAZ4205 zynq7010上运行AXI DMA loop interrupt 整体的布局图 这是上面的一张接口图 下面对每个模块附上截图 AXI DMA的输出mm2s introut s2mm introut接到PS系统的中断触发
  • AXI接口协议详解-AXI总线、接口、协议

    转自 xff1a https cloud tencent com developer article 1695010 AXI接口协议详解 AXI总线 接口 协议 AXI 总线 上面介绍了AMBA总线中的两种 xff0c 下面看下我们的主角
  • 深入 AXI4 总线(一)握手机制

    VALID READY 握手机制 AXI 总线共有 5 个独立的通道 分别为写地址 写数据 写回应 读地址 读数据通道 5 条通道相互独立 有一些细小的差别 但共同使用一套握手机制 VALID READY 机制 VALID READY 机制
  • 深入浅出AXI协议(2)——通道及信号

    一 前言 在之前的文章中 我们主要介绍了什么是AXI协议 AXI协议的特点与优点 然后对于AXI协议非常重要的五通道结构进行了介绍 了解了5个通道各自的作用 本文我们继续AXI协议的学习 我们将讨论5个通道的具体内容和相对应的信号 这一部分
  • 深入 AXI4总线 (四):RAM 读取实战

    光说不练 云玩家 这篇文章中我们就通过访问一个 AXI4 接口的 RAM 的实际操作 加深我们对 AXI4 总线的理解 我们的实验平台是 ISE 14 7 以及 modelsim 10 2 RAM 的 ip 使用 ISE 的 block m
  • 深入 AXI4 总线(二)架构

    五个独立通道 AXI4 总线的一大特征是它有 5 个独立的传输通道 这些通道都只支持单向传输 作为类比 SPI 总线有 2 条传输通道 MISO MOSI SPI 输入输出的数据 大路朝天 各走一条 而作为对比 IIC 协议则只有 SDA
  • AXI总线学习小结

    1 AXI总线结构 AXI总线由5个通道构成 通道名称 通道功能 数据流向 read address 读地址通道 主机 gt 从机 read data 读数据通道 包括数据通道和读响应通道 从机 gt 主机 write address 写地
  • Xilinx ISE、MicroBlaze系列教程

    本文是Xilinx MicroBlaze系列教程的第0篇文章 这个系列文章是我个人最近两年使用Xilinx MicroBlaze软核的经验和笔记 以Xilinx ISE 14 7和Spartan 6 Vivado 2018 3和Artix
  • AMBA总线协议AHB、APB、AXI对比分析

    一 AMBA概述 AMBA Advanced Microcontroller Bus Architecture 高级处理器总线架构 AHB Advanced High performance Bus 高级高性能总线 ASB Advanced
  • AXI4-Stream协议总结

    AXI4 Stream去掉了地址项 允许无限制的数据突发传输规模 一 接口信号描述 信号 源 描述 ACLK 时钟源 全局时钟信号 所有信号在ACLK信号上升沿采样 ARESETn 复位源 全局复位信号 ARESETn低电平有效 TVALI
  • AXI总线之DDR控制器的实现

    由于FPGA的内部RAM资源实在有限 同时又不得不面临大数据量缓存的问题 因此 将DDR进行共享成了最为直接有效的解决方案 设计目标 PL端有多个需要大量数据缓存的通道 让每个通道都将DDR作为外部缓存 FIFO 注意 总的突发在1Gbps
  • Debug of AMBA AXI Outstanding Transactions

    Verifying today s complex designs is time consuming as simulations run for long time and millions of transaction are exe

随机推荐

  • JVM 面试深入理解内存模型和垃圾回收(二)

    JVM 面试深入理解内存模型和垃圾回收 二 文章目录 JVM 面试深入理解内存模型和垃圾回收 二 1 运行时数据区域 1 1 The PC Register 1 2 Java Virtual Machine Stacks 1 2 1 Fra
  • MongoDB Replica Sets + Sharding 实战

    一 Replica Sets 复制集 MongoDB 支持在多个机器中通过异步复制达到故障转移和实现冗余 多机器中同一时刻只有一台是用于写操作 正是由于这个情况 为 MongoDB 提供了数据一致性的保障 担当Primary 角色的机器能把
  • image点击事件

    self headImage userInteractionEnabled YES UITapGestureRecognizer singleTap1 UITapGestureRecognizer alloc initWithTarget
  • 实验八 模板

    一 实验目的和要求 1 能够使用C 模板机制定义重载函数 2 能够实例化及使用模板函数 3 能够实例化和使用模板类 4 应用标准C 模板库 STL 通用算法和函数对象实现查找和排序 二 实验内容 1 分析并调试下列程序 了解函数模板的使用
  • GJM : 【技术干货】给The Lab Renderer for Unity中地形添加阴影

    感谢您的阅读 喜欢的 有用的就请大哥大嫂们高抬贵手 推荐一下 吧 你的精神支持是博主强大的写作动力以及转载收藏动力 欢迎转载 版权声明 本文原创发表于 请点击连接前往 未经作者同意必须保留此段声明 如有问题请联系我 侵立删 谢谢 我的博客
  • R4 STM32高级定时器笔记之PWM互补输出

    STM32高级定时器笔记之PWM互补输出 程序功能 通过两个GPIO 输出相反的PWM信号 带死区时间和刹车控制 PWM为50 要配置几个寄存器 CNT计数器 CCR输出比较寄存器器 输入捕获寄存器 ARR自动重装载寄存器 最大65535
  • 数据结构之Trie树

    目录 前言 什么是Trie树 如何实现一棵Trie树 Trie 树与散列表 红黑树的比较 问题 总结 参考资料 前言 搜索引擎的搜索关键词提示功能 我想你应该不陌生吧 为了方便快速输入 当你在搜索引擎的搜索框中 输入要搜索的文字的某一部分的
  • C语言共用体-union的用法

    定义格式 union 共用体名 成员列表 共用体特点 1 占用的内存等于最长的成员占用的内存 2 共用体使用了内存覆盖技术 同一时刻只能保存一个成员的值 如果对新的成员赋值 就会把原来成员的值覆盖掉 会影响其余所有成员 实例说明 typed
  • 二进制流:C++中使用 (char *)& 传递int型值

    文章目录 前言 一 利用二进制流传递整形数组值 1 1 整形数组 1 2 二进制流 1 2 1 那如何将整形数值依次按一个字节存放入二进制流中呢 1 2 2 如何重构回整形数值 二 结构体数组赋值 前言 此前参与罗技G29方向盘远程遥控au
  • 关于运行gitblit.cmd中的@java -cp gitblit.jar;“%CD%\ext\*“ com.gitblit.GitBlitServer --baseFold data报错

    关于运行gitblit cmd中的 java cp gitblit jar CD ext com gitblit GitBlitServer baseFold data报错 问题 关于运行gitblit cmd中的 java cp gitb
  • C#中async/await的线程ID变化情况

    一 简单的起步 Console WriteLine 主线程开始ID Thread CurrentThread ManagedThreadId a await Task Delay 100 c Console WriteLine 主线程结束I
  • 产学合作、协同育人|众享比特董事长严挺连续三年荣获“区块链60人”2022赋能中国区块链创新人物奖

    2022年11月4日 5日 由全国高校人工智能与大数据创新联盟主办的 2022第五届全国高校人工智能大数据区块链教育教学创新论坛 在北京隆重召开 北京众享比特科技有限公司董事长严挺荣获 区块链60人 2022赋能中国区块链创新人物奖 本届论
  • Sober算子边缘检测与Harris角点检测1

    此篇文章主要介绍了Sobel算子的底层运算规律 和cv Harris的相关介绍 测试 import numpy as np mm np array 1 2 3 pow mm 2 array 1 4 9 dtype int32 Harris
  • 大数据不得不说的事儿(一):存算分离凭什么能一统天下

    随着大数据系统建设的深入 企业的数据基础设施面临两个问题 一个是成本问题 随着累积的数据量的增大 大数据业务量的增多 数据存储和处理的成本越来越高 企业数据基础设施的投资越来越大 这部分投资挤占了企业大数据业务创新的空间 另一个是效率问题
  • 安装pycrypto,windows10,全解

    安装pycrypto 一 下载pycrypto源码或pip安装 1 下载pycrypto源码 建意先全部阅读一遍在进行安装 坑太多 不能急 官网 https www dlitz net software pycrypto github ht
  • jquery 实现页面自动加载

    最近组长布置了一项任务 让我们初步了解一下jquery 并用jquery实现页面的自动加载 我在网上找了一些资料实现此功能 现整理如下 首先是要理清思路 下面给一个我从网上找的具体的例子 会帮助大家更好的理解 将前台代码直接拷贝即可执行 这
  • SpringBoot接收前端参数json格式的五种方式(转)

    import java util List import java util Map import org springframework web bind annotation RequestBody import org springf
  • 查看某个端口的连接数情况

    windows指令 查看信息 netstat aon findstr 9200 find ESTABLISHED 查看连接数 netstat aon findstr 9200 find ESTABLISHED c linux 查看信息 ne
  • webpack 学习(一)前端常用的模块化设计模式之commonJs

    前端常用模块化规范 commonJs 规范 AMD ES6 Module规范 commonJs 和AMD 的区别 commonJs加载模块是同步的 也就是说只有加载完成的才会执行后面的操作 由于Node主要用于服务器编程 模块文件一般都存在
  • 深入 AXI4 总线(二)架构

    五个独立通道 AXI4 总线的一大特征是它有 5 个独立的传输通道 这些通道都只支持单向传输 作为类比 SPI 总线有 2 条传输通道 MISO MOSI SPI 输入输出的数据 大路朝天 各走一条 而作为对比 IIC 协议则只有 SDA