AXI4总线学习笔记

news2024/9/19 10:50:25

  AXI4 总线是 ARM 公司开发的一种总线,广泛应用于 Xilinx 的 IP 核中,比如笔者近期涉及 DDR 的读写控制,需要用到 MIG IP 核,这个 IP 核就通过 AXI4 总线进行控制。

  AXI4 共有 5 种通道:读地址通道 ARC,读数据通道 DRC,写数据通道 AWC,写数据通道 DWC,写回复通道 RC。以上 5 种通道都是单向通道,通过 Valid/Ready 握手机制实现读写控制。

AXI 握手机制

  AXI 通过两个信号(valid、ready)实现握手,发送方(主)通过置高 vaild 信号表示地址/数据/控制信息已准备好,并保持在消息总线上;接收方(从)通过置高 ready 信号表示接收方已做好接收的准备。在 ACLK 上升沿,若 vaild、ready 同时为高,则进行数据传输。

  需要注意,valid 信号必须是独立的,而 ready 信号可以是独立的也可以依赖于 valid 信号。否则若 valid 依赖于 slave 给出的 ready 信号,而 ready 又依赖于 master 给出的 valid 信号,将出现死锁。上述谈及的依赖不止组合逻辑,时序逻辑乃至 FIFO 也是。(所以其实 ready 信号独立,而 valid 依赖于 ready 信号也是可行的),然而强烈建议 ready、valid 完全独立,这样主从端将均具有中止通信的能力,从而可以从主从双向控制通信速度。若想要从机接收全部的来自主机的数据,可径设 ready = H 。

  根据 valid、ready 到达时间,可以分为 3 种情况,分别如下图

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

应当注意到,在 valid 置高的同时,发送方就应该给出有效数据,并将有效数据保持在总线,而在之后的 ACLK 上升沿,若 valid、ready 均有效,则应更新有效数据。

读写通信流程

在这里插入图片描述

  写流程如上图,涉及写地址通道 AWC、写数据通道 DWC、写回复通道 RC 三个通道。首先 master 在 AWC 上给出写地址和控制信息,然后在 DWC 上传输数据,AXI 的数据传输是突发性的,一次可传输多个数据,在传输最后一个数据时,须同步给出 last 信号以表示数据传输即将终止,之后 slave 将在 RC 上给出写回复消息,对本次数据传输表示确认。

在这里插入图片描述

  读流程如上图,涉及读地址通道 ARC、读数据通道 DRC 两个通道。首先 master 在 ARC 上给出读地址和控制消息,slave 将在 DRC 上给出数据。值得注意的是,DRC 集成了读回复功能,且是从 slave 发送给 master 的,在 slave 完成数据传输后,会在 DRC 上给出回复消息,标志一次读取结束。

  AXI 可以连接成多对多的拓扑,这可以借助 AXI Interconnect IP 来实现。

各个通道的信号说明

全局信号

  • ACLK,全局时钟信号,所有读写操作均发生在 ACLK 上升沿。
  • RESETn,全局同步复位信号,低电平有效。

AWC 通道

  • AWID,写事务 ID,源自 master,标识本次写事务。
  • AWADDR,写地址,源自 master,突发传输第一个数据的写入地址,注意该地址是字节地址
  • AWLEN,源自 master,突发传输长度,Length = AxLength + 1,即设为 0 时表示本次传输只传输一个数据。在 INCR 模式可以传输 1~256 个数据,其他类型只能传输 1~16 个,在WRAP 模式下,则只支持 2,4,8,16 个的数据个数。
  • AWSIZE,写过程突发传输宽度,源自 master,标识每个数据的大小, 2 a w s i z e B y t e s 2^{awsize}Bytes 2awsizeBytes ,若 AWSIZE=0,表示每次传输 2 0 = 1 B y t e 2^0=1 Byte 20=1Byte ,如数据位宽为 64 bit(8 Byte),则 awsize 应为 3 。突发传输数据宽度不能超过数据总线本身的位宽,当数据总线位宽大于突发传输宽度时,根据协议的相关规定,将数据在部分数据线上传输。
  • AWBURST,设置突发传输类型,有 FIXED(0b00)、INCR(0b01)、WRAP(0b10)三种。FIXED 模式中所有数据都使用起始地址;INCR模式中后续数据地址依次递增,递增值为 2 a w s i z e 2^{awsize} 2awsize ;WRAP 模式下,根据起始地址获得绕回边界地址(wrap boundary)和最大地址,绕回地址与起始地址相同,而最大地址 = wrap boundary + (N_bytes x burst_len),当当前地址大于最大地址时,将回到绕回地址。
  • AWLOCK,设置是否进行独占传输,默认 0,置高时表示独占
  • AWCACHE,Memory attributes,bit0:Bufferable,bit1:Modifiable,bit2:Other Allocate,bit3:Allocate。具体详见官方手册。
  • AWWPROT,Access attributes,用于避免内存受意外事务影响,具体详见官方手册。
  • AWQOS,Quality of Service identifier,详见官方手册。
  • AWVALID,略
  • AWREADY,略

DWC 通道

  • WDATA,略
  • WSTRB,写有效字段,WSTRB[n] 为高时表示 WDATA 的第 n 个字节有效,即 WDATA[8n+7 : 8n] 有效;WSTRB 必须仅在对应 Byte 通道有效时置高,当 WVALID = L 时,WSTRB 可以任意值,但强烈建议保持为低。
  • WLAST,标识最后一个 transfer,master 发出。
  • WVALID,略
  • WREADY,略

  注意,AXI 读写地址是与数据位宽对齐的,如下图所示的窄传输(单次 transfer 的位宽小于用户数据位宽)例子,用户数据 size 为 8 Byte,而起始地址设为了 4,则会先将高 4 字节写入,而低 4 字节将在地址 8 进行写入。

在这里插入图片描述

  有时候会遇到起始地址与突发传输的数据位宽不对齐的情况,这时可以通过填充无效数据并将对应字节的 WSTRB 置零来对齐数据,读操作时遇到非对齐情况也做同样处理。如下图所示

在这里插入图片描述

RC 通道

  • BID,写事务 ID,slave 发出,应答给出相同事务 ID 号的写事务。
  • BRESP,写应答,slave 发出,0b00 表示 Okey,其他详见 AMBA 官方手册。
  • BVALID,略
  • BREADY,略

ARC 通道

  • ARID,读事务 ID。
  • ARADDR,读事务首地址。
  • ARLEN,同 AWLEN
  • ARSIZE,同 AWSIZE
  • ARBURST,同 ARBURST
  • ARLOCK,同 AWLOCK
  • ARCACHE,设置内存属性,bit0:Bufferable,bit1:Modifiable,bit2:Allocate,bit3:Other Allocate。注意 Allocate、Other Allocate 在 ARLOCK 和 AWLOCK 中的位置不同。
  • ARPROT,同 AWPROT
  • ARQOS,同 AWQOS
  • ARVALID,略
  • ARREADY,略

DRC 通道

  • RID,读事务 ID,应答信号。
  • RDATA,略
  • RRESP,读应答,slave 发出,0b00 表示 Okey,其他详见 AMBA 官方手册。
  • RLAST,slave 发出,标识最后一个读数据。
  • RVALID,略
  • RREADY,略

后记

  更具体的 AXI 信息详见 ARM 的 AMBA AXI Protocol 手册,下载地址 。

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

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

相关文章

虽然音视频开发只是功能组件开发,但薪资远高于普通开发岗……

首先要明白一件事情,音视频开发是功能组件开发而不是应用开发。应用开发的具体需求基本上是定制化的,而且需求一直在改,比如今天加个按钮,明天改个风格,只要应用还在天天都有活干。而功能组件开发的需求大多都比较统一…

一文详解过滤器Filter、拦截器Interceptor和切面Aspect的区别

目录 Filter过滤器 作用 应用场景 拦截器Interceptor Aspect切片 三者对比 执行顺序 拦截层面 过滤器Filter和拦截器Interceptor的区别 Filter过滤器 Filter 过滤器它是 JavaWeb 的三大组件之一 三大组件分别是:Servlet 程序、Listener 监听器、Filter 过滤…

vue3组件间怎么通信?简述一下通信方式

在写 vue3 的项目中,我们都会进行组件通信,除了使用 pinia 公共数据源的方式除外,我们还可采用那些更简单的API方法呢?给大家介绍介绍几种父子组件和子父组件通信的方式。 1、父子组件通信 1.1 defineProps 父子组件通信我们第一…

【Redis】Redis数据结构——链表

【Redis】Redis数据结构——链表 注意事项: 本文第三点redis中操作列表的相关命令可参考博文: 【Redis】Redis基础命令集详解_Etui۹(・༥・)و ̑̑的博客-CSDN博客 本文参考内容如下: 1、Redis数据结构——链表 - 随心…

MySQL_第07章_单行函数

第07章_单行函数 讲师:尚硅谷 - 宋红康(江湖人称:康师傅) 官网: http://www.atguigu.com 1. 函数的理解 1.1 什么是函数 函数在计算机语言的使用中贯穿始终,函数的作用是什么呢?它可以把我…

音视频八股文(3)--ffmpeg常见命令(2)

07-ffplay命令播放媒体 播放本地文件 播放本地 MP4 视频文件 test.mp4 的命令,从第 2 秒位置开始播放,播放时长为 10 秒,并且在窗口标题中显示 “test time”: ffplay -window_title "test time" -ss 2 -t 10 -autoe…

[计算机图形学]辐射度量学、渲染方程与全局光照(前瞻预习/复习回顾)

一、前言 我们前面讲到的Blinn-Phong着色,Whitted-Style光线追踪都有一定问题,那就是它们并没有严格的按照物理规则定义各个变量。比如,Blinn-Phong中的光的强度,并没有一个确切的单位。同时Whitted-Style光线追踪我们也做了很多简…

二十分钟深入详解<二叉搜索树>!!!

目录 前文 一,什么是二叉搜索树? 1.1 二叉搜索树的概念 二, 二叉搜索树的常用操作及其实现 2.1 查找 2.2 插入 2.3 删除 三,二叉搜索树的应用 3.1 K模型 3.2 KV模型 四,二叉搜索树的性能分析 五,…

SolidWorks建模|渲染装饰件

使用SOLIDWORKS软件建模是许多工程师的选择,对于SOLIDWORKS渲染,也有很多问题,接下来,我们就用SOLIDWORKS建模渲染装饰件的例子来讲解。 1.点击“插入”-“曲面”-“拉伸曲面”,选择上视基准面作为草绘平面&#xff0…

CC2564CRVMR无线音频解决方案、ADE9000ACPZ模拟前端 (AFE) 电路图【MX66L2G45GXRI00 2Gb】FLASH - NOR

CC2564CRVMR 双模蓝牙控制器是一个完整的Bluetooth BR、EDR和低能耗HCI解决方案,可减少设计工作量并缩短上市时间。CC2564C器件基于TI的第七代蓝牙内核,提供符合蓝牙4.2标准的产品验证解决方案。当与微控制器单元 (MCU) 耦合时,该HCI器件具有…

Unity与Andriod交互错误合集

一、无法调用安卓中的方法no non-static method with name‘’ 报错如下,。在保证代码中的方法名没有问题,并且调用的方法名的返回值和传递的参数等都没有问题的情况下, 第一、查看在Unity项目中jar包存放的位置是否正确,需要放在…

LeetCode算法小抄 -- 经典图论算法 之 并查集算法

LeetCode算法小抄 -- 经典图论算法 之 并查集算法 经典图论算法并查集算法动态连通性思路平衡性优化路径压缩Union Find 算法[130. 被围绕的区域](https://leetcode.cn/problems/surrounded-regions/)[990. 等式方程的可满足性](https://leetcode.cn/problems/satisfiability-o…

2023-spring 2.探险营地 — 字符串

🍎道阻且长,行则将至。🍓 🌻算法,不如说它是一种思考方式🍀 算法专栏: 👉🏻123 一、🌱2023-spring 2.探险营地 题目描述:探险家小扣的行动轨迹&a…

SAM Segment Anything

https://arxiv.org/pdf/2304.02643v1.pdf 包含三个主题:Task、Model、Data Task(任务): 需要定义一个 足够通用的图像分割任务,可以提供一个强大的预训练目标,并支持广泛的下游应用程序。 Model&#xf…

mybatis的参数处理详解

mybatis的参数处理详解 parameterType配置参数 1、参数的使用说明 使用标签的 parameterType 属性来设定。该属性的取值可以是基本类型,引用类型(例如:String 类型),还可以是实体类类型(POJO 类)。同时也…

C++学习:类和对象(上)

类和对象 这是C这样的面向对象的语言具有的特性,相较于C语言来说,更加方便的去编写代码,调用代码。 当需要大量重复的调用同一个函数的时候,我们每创建一个函数,就会建立一个栈帧,这样对于空间来讲不友好…

【南京大学PA】 PA0 环境配置 lab (vim | gcc | lab)

本文章学习NJU 的 PA 课程记的笔记 南大PAWLS空间管理 注意事项 whoami 指令 显示你当前的用户IDsudo whoami linux配置 cpp 环境 apt-get install build-essential # build-essential packages, include binary utilities, gcc, make, and so on apt-get install man …

高效办公——Excel表格-03篇(Excel常用快捷键 以及 Excel快捷键结合公式的各种常见的办公例子)

高效办公——Excel表格-03篇(Excel常用快捷键 以及 Excel快捷键结合公式的各种常见的办公例子) 1. commandE(Windows系统:ctrlE)——快速分列/重组2. 高效复制的快捷键2.1 command D(快速复制上一单元格的…

面试篇:MySQL

一、如何定位慢查询 1、慢查询原因: 聚合查询多表查询表数据量过大查询深度分页查询 表现:页面加载慢、接口无响应,或者响应时间过长(超过1s) 2、如何定位慢查询 3、面试官:MySQL中,如何定…

Leetcode-day4【88】【167】【125】【345】

文章目录 88. 合并两个有序数组题目解题思路解题思路【学习】尾插入法 167. 两数之和 II - 输入有序数组题目解题思路 125. 验证回文串题目解题思路 345. 反转字符串中的元音字母题目解题思路 88. 合并两个有序数组 题目 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums…