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

2023-11-02 12:20

本文主要是介绍【【深入浅出了解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信号则用来表示什么时候从设备准备好采集数据了

这篇关于【【深入浅出了解AXI4协议 一】】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/330546

相关文章

Java如何接收并解析HL7协议数据

《Java如何接收并解析HL7协议数据》文章主要介绍了HL7协议及其在医疗行业中的应用,详细描述了如何配置环境、接收和解析数据,以及与前端进行交互的实现方法,文章还分享了使用7Edit工具进行调试的经... 目录一、前言二、正文1、环境配置2、数据接收:HL7Monitor3、数据解析:HL7Busines

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

【Linux】应用层http协议

一、HTTP协议 1.1 简要介绍一下HTTP        我们在网络的应用层中可以自己定义协议,但是,已经有大佬定义了一些现成的,非常好用的应用层协议,供我们直接使用,HTTP(超文本传输协议)就是其中之一。        在互联网世界中,HTTP(超文本传输协议)是一个至关重要的协议,他定义了客户端(如浏览器)与服务器之间如何进行通信,以交换或者传输超文本(比如HTML文档)。

速了解MySQL 数据库不同存储引擎

快速了解MySQL 数据库不同存储引擎 MySQL 提供了多种存储引擎,每种存储引擎都有其特定的特性和适用场景。了解这些存储引擎的特性,有助于在设计数据库时做出合理的选择。以下是 MySQL 中几种常用存储引擎的详细介绍。 1. InnoDB 特点: 事务支持:InnoDB 是一个支持 ACID(原子性、一致性、隔离性、持久性)事务的存储引擎。行级锁:使用行级锁来提高并发性,减少锁竞争

【Go】go连接clickhouse使用TCP协议

离开你是傻是对是错 是看破是软弱 这结果是爱是恨或者是什么 如果是种解脱 怎么会还有眷恋在我心窝 那么爱你为什么                      🎵 黄品源/莫文蔚《那么爱你为什么》 package mainimport ("context""fmt""log""time""github.com/ClickHouse/clickhouse-go/v2")func main(

2024.9.8 TCP/IP协议学习笔记

1.所谓的层就是数据交换的深度,电脑点对点就是单层,物理层,加上集线器还是物理层,加上交换机就变成链路层了,有地址表,路由器就到了第三层网络层,每个端口都有一个mac地址 2.A 给 C 发数据包,怎么知道是否要通过路由器转发呢?答案:子网 3.将源 IP 与目的 IP 分别同这个子网掩码进行与运算****,相等则是在一个子网,不相等就是在不同子网 4.A 如何知道,哪个设备是路由器?答案:在 A

Modbus-RTU协议

一、协议概述 Modbus-RTU(Remote Terminal Unit)是一种基于主从架构的通信协议,采用二进制数据表示,消息中的每个8位字节含有两个4位十六进制字符。它主要通过RS-485、RS-232、RS-422等物理接口实现数据的传输,传输距离远、抗干扰能力强、通信效率高。 二、报文结构 一个标准的Modbus-RTU报文通常包含以下部分: 地址域:单个字节,表示从站设备

PHP: 深入了解一致性哈希

前言 随着memcache、redis以及其它一些内存K/V数据库的流行,一致性哈希也越来越被开发者所了解。因为这些内存K/V数据库大多不提供分布式支持(本文以redis为例),所以如果要提供多台redis server来提供服务的话,就需要解决如何将数据分散到redis server,并且在增减redis server时如何最大化的不令数据重新分布,这将是本文讨论的范畴。 取模算法 取模运

Weex入门教程之1,了解Weex

【资料合集】Weex Conf回顾集锦:讲义PDF+活动视频! PDF分享:链接:http://pan.baidu.com/s/1hr8RniG 密码:fa3j 官方教程:https://weex-project.io/cn/v-0.10/guide/index.html 用意 主要是介绍Weex,并未涉及开发方面,好让我们开始开发之前充分地了解Weex到底是个什么。 以下描述主要摘取于

网络原理之TCP协议(万字详解!!!)

目录 前言 TCP协议段格式 TCP协议相关特性 1.确认应答 2.超时重传 3.连接管理(三次握手、四次挥手) 三次握手(建立TCP连接) 四次挥手(断开连接)  4.滑动窗口 5.流量控制 6.拥塞控制 7.延迟应答 8.捎带应答  9.基于字节流 10.异常情况的处理 小结  前言 在前面,我们已经讲解了有关UDP协议的相关知识,但是在传输层,还有