【【深入浅出了解AXI4协议 一】】

深入浅出了解AXI4协议 一

AXI 的英文全称是 Advanced eXtensible Interface,即高级可扩展接口,它是 ARM 公司所提出的 AMBA

(Advanced Microcontroller Bus Architecture)协议的一部分。在介绍 AXI 协议之前,我们首先要对通信协

议有一个基本的概念。

AXI 协议是一种高性能、高带宽、低延迟的片内总线,具有如下特点:

1、总线的地址/控制和数据通道是分离的;

2、支持不对齐的数据传输;

3、支持突发传输,突发传输过程中只需要首地址;

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 接口,它由五个独立的通道构成:

1、 读地址

2、 读数据

3、 写地址

4、 写数据

5、 写响应

下面是使用读地址和读数据通道实现读传输过程的示意图:

从图中可以看到,在一个读传输过程中,主机首先在读地址通道给出读地址和控制信号,然后从机由读数据通道返回读出的数据。另外我们需要注意的是,这是一次突发读操作,主机只给出一个地址,从该地址连续突发读出四个数据。

big deserve to learn

//=================================================================================\

在此处我们讲述一下 突发的概念

突发传输是指的是 我们传输 只需要给一个地址 然后传数据即可

突发传输的概念就是主设备只需要发送 一拍信息,就可以通过计算,决定未来数拍,写入或读出的地址。

对于上面的形式 我们的解释是 我们可以用一拍的地址和控制信号,操控了四拍的读出数据 。

//----------------------因此 我们还知道一个概念叫 突发传输长度 (burst length )

一般来说我们假如有 8位的 ARLEN 和 AWLEN 这两个信号代表了 额外的transfer 数量

即 从设备在首地址外计算几次地址 ,或者 说在 首地址 对应的数据外,需要 额外进行多少次 传输

8位代表了我们最多可以传输 1-256 个 地址

//-------------------------- 下一个概念是 突发传输大小 (burst size)

这里 所说的 突发传输的大小 就是 awsize arsize 代表了 传输的数据位宽 单位是 8 bit 字节 就是 8位

Bytes=2^Burst_size

剩下的还有表格展示 其他的位宽于 Ax Size的关系

就像是

Axsize[2:0] Bytes Bits

000 1 8

001 2 16

010 3 32

011 4 64

//----------------------现在我们需要注意的是 突发传输种类 (burst type)

我们知道了传输的数据大小 传输的数据数量

现在我们需要它的地址是怎么样一种形式变化的

对于突发传输的种类对应的信号可以分为 ARBURST AWBURST

这两个信号都是 2位 用以区分 Burst 传输的 种类

AxBURST [1:0] BURST Type

00 FIXED (fixed 固定的 )

01 INCR ( increase 增加的)

10 WRAP

11 Reserved

//\//\ 对于 第一种 FIXED 的 burst 传输 ,在Fixed种类的burst传输中,每一次访问的地址是相同的,这意味着我们需要对同一个地址进行读写操作,读者们有没有想到哪种电路结构非常符合这种规则?
没错,是FIFO,用AXI连接作为从设备的FIFO,只需要考虑Fixed Type的burst传输,这是因为FIFO不涉及到具体的地址来控制读写,数据只需要先入先出即可。
Fiixed Type 的 burst length 仅支持 1- 16
//\//\ 对于 INCR Type 的 burst 传输

在INCR Type的burst传输中,主设备给出首个地址和控制信号,接下来从设备会自发的计算出接下来传输数据所需要的,递增的,新的地址信号。

比如说第一次传输的地址是1,并约定 INCR Type 的传输 ,之后的递增地址为2,3,4,5,6,7,8, 之后的地址都由设备自行计算得到 。

这种形式的传输,经常用于对连续内存的读写上。

INCR Type 的 Burst length 支持 1-256位

//\//==\ 对于 WRAP Type 传输

WRAP Type 被称为 回旋型的burst 传输类型

第一次的 传输地址是1 ,我们约定地址之后 传输到头例如 1,2,3,4,0,1 就像这样,会重新地址绕了一圈 。

需要注意的是WRAP Type的burst length仅支持2,4,8,16(即AxLEN = 1/3/7/15

//\//==\ Reserved TypeReserved:保留,AXI协议未规定0b11的burst type种类,因此针对于AxBURST而言,只有0b00,0b01,0b10存在具体的含义

//================================================我们需要注意到的是 另一个重要的内容是 突发传输的地址计算

因为 毕竟是 突发的形式造就的 我们仅需要一个地址

我们现在分开 讨论

对于 Fixed Type 称为 固定形式 地址固定

对于 INCR (increase 形式)

Address_N = Aligned_Address + (N-1) x Number_Bytes

  1. Address_N -----> 第N个地址
  2. Aligned_Address -----> 对齐后的首地址
    3 Aligned_Address 的计算方法是INT( Start_Address/ Number_Bytes) x Number_Bytes
    (地址先除以整个位数向下取整) 再 乘上 整个位数
  3. INT 为向下取整 的 函数
  4. Start_Address 是起始地址
  5. Number_Bytes = 2^AxSize

//=========握手协议 的介绍

AXI 双向握手机制简介

AXI标准协议有五路独立的数据通道(分别为读数据通道,写数据通道,读地址通道,写地址通道,写回复通道),每一路数据通道都遵循双向握手机制,即使用VALID和READY信号作为控制信号来传输数据,只有VALID与READY同时为高的时候,才可以正常的发送数据,而通常情况下,VALID信号用来表示什么时候"地址、数据、和控制信号"是有效的,而READY信号则用来表示什么时候从设备准备好采集数据了

相关推荐
HIT_Weston3 分钟前
22、【Ubuntu】【远程开发】技术方案选择
linux·tcp/ip·ubuntu
恒创科技HK11 分钟前
香港100G高防服务器的防御力如何?
运维·服务器
Hoxy.R14 分钟前
iSCSI 磁盘扩容后节点不刷新容量的问题解决(StarWind + Linux)
linux·运维·服务器
CV小白进阶路15 分钟前
【无标题】Vscode 报错 got bad result from install script无法远程链接服务器
服务器·ide·vscode
爱编程的鱼20 分钟前
301 是什么意思?——HTTP 状态码详解与应用
网络·网络协议·http
lytao12323 分钟前
使用 dnsmasq 搭建本地 DNS 服务器完整指南
运维·服务器·dns
心随雨下29 分钟前
Tomcat日志配置与优化指南
java·服务器·tomcat
wljt39 分钟前
Linux 常用命令速查手册(Java开发版)
java·linux·python
riderxin39 分钟前
【20251028】固定Ubuntu的IP地址
linux·tcp/ip·ubuntu
赖small强40 分钟前
Linux 内核 8 类同步机制详解(原理、场景与示例)
linux·信号量·原子操作·自旋锁·内核同步方法·读-写自旋锁·读-写信号量