当前位置: 首页 > news >正文

AXI总线协议基础--几分钟熟悉通道信号和基础架构

目录

一、AXI协议基础

1.1读写通道的基本架构图

1.2猝发操作举例

1.3传输顺序

二、各个通道中的信号描述

2.1全局信号

2.2写地址通道信号

2.3写数据通道信号

2.4写响应通道信号

2.5读地址通道信号

2.6读数据通道

三、通道握手

3.1单一信息传输时的握手过程

3.2不同通道之间的信号握手关系

四、寻址项

五、数据总线

5.1字节开关WSTRB

5.2窄带传输

六、非对齐传输

七、其他


一、AXI协议基础

        AMBA  AXI协议主要用于实现高性能、高频率系统的计算,能向下兼容AHB协议和APB协议。它具有以下几个特点:(1)五个分离的地址、数据通道;(2)具有字节开关,可实现非对齐的数据传输; (3)猝发地址由初始地址发起等等。

        AXI最鲜明的特征是有五个独立的通道,分别是读数据、读地址、写数据、写地址、写响应通道。每次数据传输都具有地址和控制信息,通过地址通道传输; 在写操作中多了一个写响应通道,slave可以通过此通到向master发送一个写数据已经完成的反馈。

1.1读写通道的基本架构图

        如图可知,地址、控制信息等通过地址通道发送,数据流方向都是从master到slave,即动作都由master发起;读写数据通过数据通道传输,写数据时数据流方向是从master向salve,即master向slave中写入数据,读数据时数据流方向从slave到master,即master读出slave中的数据;写响应通道传输写操作完成的反馈,通过写响应通道传输,方向是从slave到master。

1.2猝发操作举例

        猝发burst是AXI总线协议的核心,猝发传输也叫突发传输,特点在于,一个burst可传输多个数据包(由len参数决定),且每次传输只需要传输一个初始基地址(addr),在slave端会自动为后续数据包的地址进行计算(多种计算方式)。在具体的传输过程中还牵扯一些乱序传输、字节通道等问题,后续再进行展开。

        先看读写猝发的时序图:

       读猝发的数据传输时序图如图所示,发送地址ARADDR时,ARVALID信号被拉高,等待ARREADY信号拉高完成握手,从而完成一个地址的传输;读数据类似,读数据传输时拉高RVALID信号,与RREADY握手后完成数据传输。而当完成一个burst的最后一笔数据包传输后,RLAST拉高,表示已经结束了最后一个包的传输。

这里在第一次看时有几个疑问;

1.master驱动读地址后数据传输发生,具体延迟多久发生的?

答:读数据操作发送在slave接收读地址之后,具体时间由slave控制

2.读操作中数据流向是slave --> master,所以在数据有效时slave会拉高valid信号,ready信号由master控制?是否会存在在读到有效数据时ready为低的情况?

答:是的,若ready为低,data会持续直到完成传输;

3.每个数据之间为什么会存在无效的间隔?

答:由slave内部控制的,可以设置burst传输各个数据包之间存在delay。

        写猝发类似,从图上看,master把地址和控制信息发送在写地址通道上。之后,master往写数据通道上发送数据。当master发送最后一个数据时,WLAST信号会变高电平(和读一致)。如果slave接受了所有的数据,它将驱动一个写响应信号返回master,以表示这个写操作结束。这里需要注意的是,写操作中写数据和写地址没有严格的先后关系,可以先发送数据,再发送地址,原因是因为写数据、写地址通道中有寄存器可以进行缓存,而地址通道寄存器比数据通道更多时,写数据可以在地址到达之前达到

1.3传输顺序

        可通过对操作进行一个ID标记,同一个ID按指定顺序(即发送前后顺序)进行操作,不同ID可以不按顺序进行,这使得AXI支持乱序传输,后进行的传输操作可能比先进行的操作要快。一个读或写猝发的各个ID(即地址、数据的ID)是一致的。

二、各个通道中的信号描述

2.1全局信号

        全局时钟ACLK(上升沿采样),复位ARESRTn(低电平有效)。

2.2写地址通道信号

地址通道主要包含地址及控制信号,重点关注标出的几个信号:AWID为写地址ID,可通过ID控制顺序;AWADDR为第一个数据包的初始地址;AWLEN为一个burst的长度,即有多少个数据包,其值为1-16(不能超出边界);AWSIZE为一个猝发中单个数据包的传输位宽,3bits的值分别对应1,2,4,8,16,32,64,128字节;AWBURSR为burst的类型,会决定猝发方式,从而影响各个数据的地址计算;AWVALID和AWREADY为该通道的握手信号。

2.3写数据通道信号

这几个信号都很重要,WID不再重复,WDATA是数据总线宽度,这里需要注意与地址通道中AWSIZE的区别(一个决定总线宽度,一个决定数据传输的有效宽度,有效宽度小于总线宽度时即为窄带传输,后续展开);WSRTB是字节开关,1bit对应1字节数据,即1111对应字节通道开4字节,0011对应开较低2字节;WLAST和WVALID和WREADY握手信号去之前类似。

2.4写响应通道信号

BRESP为2bit数据,表明写操作的4种状态。其余信号和前文类似。

2.5读地址通道信号

与写地址通道类似,不再重复。

2.6读数据通道

RRESP是读响应信号,对应写响应通道的信号,读操作时响应随数据通道一同进行传输;其余信号类似。

        关于在读数据没有字节开关strobe信号的问题,这里我的理解是:在写操作时,数据总线会传输完整的数据包,但在slave接收端会根据strobe确定有效的字节位,并写入对应的地址,所以需要通过strob告诉slave哪些字节数据是有效的;但在读操作时,对对应地址进行读数据,通过slave传到master的数据都是有效的,在窄带传输、非对齐等情景下只需要根据地址进行读操作即可,不需要字节开关来控制有效,因为读出的单一地址上的一字节数据是肯定有效的。

三、通道握手

3.1单一信息传输时的握手过程

        单个信号的握手比较好理解,发送方在地址或是数据有效时拉高valid信号,接收方拉高ready,两者同为高时完成一次传输。若未握手成功,数据和valid信号会一直保持,直到完成一次传输。ready拉高可以在valid之前,也可以在valid之后,或同时拉高。

3.2不同通道之间的信号握手关系

        在传输操作中,valid信号不能依赖于其他部件的ready信号,否则容易出现锁死情况;而ready信号可以依赖于valid拉高,在valid置起之后再置起。(ready默认值保持高电平也可行,握手更快,更高效)

        如图所示是读操作时的握手信号依赖关系,单箭头表示没有严格的前后关系,双箭头是有严格的前后关系。  即ARVALID和ARREADY没有严格的前后关系,读地址的握手必须在读数据之前,这是因为没有地址是无法得到读数据的值的。

        如图所示是写操作时的握手信号依赖关系,除了写响应信号的握手信号需要在最后,写地址和写数据握手信号没有严格的先后关系,即数据可以比地址先发送,这是因为通道中的寄存器可以进行缓存,等待地址达到之后再写入数据。

        需要注意的是,写操作中slave中的AWREADY不必等待WVALID置起后再置起,不然可能造成锁死。

四、寻址项

        AXI协议的猝发传输是如何确定地址?在一次猝发过程中,master只会通过地址传输通道发送一个基地址,而slave在接收到之后,会更具其他的控制信息进行地址的计算,以存放后续发送的其他数据。

       在一次猝发传输中,数据总量不能超过4KB的边界,避免出现slave在地址增加计算时出现超出边界的情况。在这里,4KB指的是有效的数据传输总量。

        猝发传输的数据数量由AWLEN或ARLEN来控制,每个猝发有1-16个数据传输。len位宽为4。而对于卷绕式传输长度必须是2,4,8,16。组件不能提前终止一个burst来减少传输的数量;在一个写猝发中,master可以通过字节开关全关来关闭后续的数据传输,但它必须完成当前的写数据传输。一次读猝发中master可以选择丢弃后续的数据包(可能造成数据丢失,例如在fifo中)

        猝发传输的数据包大小有ARSIZE或AWSIZE决定。        

        AXI协议由传输的地址来决定对每个传输使用哪个数据总线的字节通道(设置strobe)。对于传输的大小窄于数据总线的自增式或者卷绕式猝发,对猝发的每个数据包,数据在不同的字节通道上传输。一个固定地址的猝发,每个传输使用相同的字节通道。任何传输的大小一定不能超过数据总线的宽度(总线宽度由数据通道信号WDATA或RDATA控制)。

        猝发类型有三种,分别是固定式,自增式,卷绕式。固定式猝发地址不变,会重复访问相同的区域,例如写入或读取外部fifo时;自增式猝发,猝发的每个传输的地址是在之前的传输地址基础上的增加。增加值依赖于传输数据的大小。例如,猝发式传输每个4字节大小数据的地址是在之前基础上加4,常用在一般的缓存设备中;

        卷绕式猝发和自增式猝发类似,因为猝发的每个传输的地址都是在之前地址上的增加。然而,在卷绕式的猝发里,当到达了卷绕边界时地址会卷绕到一个较低的地址,常用在高速缓存中。应用卷绕式有两个限制:开始的地址必须和传输的大小对齐;猝发的长度必须为2,4,8或者16。

        通过上述的控制信息,可以对猝发中的各个数据的地址进行计算,以及选择字节通道的开关,具体的计算公式略。        

五、数据总线

        AXI协议有2个独立的数据总线(读和写),有各自的握手信号。每一笔传输的位宽可以和总线宽度一致也可以小于总线宽度,小于总线宽度的情况被称作窄带传输。

5.1字节开关WSTRB

        每一个字节开关信号对应于写数据总线上一个字节。当WSTRB为高时,字节开关指示数据总线上对应的字节部分包含内存中要更新的有效信息,即对应的数据字节有效。数据总线上每一个8比特都有一个字节开关,所以WSTRB[n]对应WDATA[(8*N)+7: 8*N)]。

5.2窄带传输

        当master产生的数据传输宽度比数据总线宽度窄时,由地址和控制信息决定了传输使用哪个字节位。在递增和环回猝发传输时,每一个数据包都由不同的字节定位传输数据。在固定式猝发传输时,地址保持不变,使用的字节定位也可以保持不变。

        例1 :1个burst有5个传输(即len=5),起始地址为0,单个传输为8bits(size=8),传输总线是32bits,传输宽度小于总线宽度。

        例2:1个burst有3个传输,起始地址是4,单个传输为32bits,总线宽度为64bits。

六、非对齐传输

        猝发传输数据大小有时是大于一个字节的,可能需要存取的前几个字节不会和数据地址边缘对齐。例如,32位(4个字节)的数据包开始于0x1002的地址,并没有和32位的地址边缘对齐(0x1000或0x1004等),这种情况就是非对齐传输。

        传输示例1:总线宽度为32bits,数据位宽为32,图中第1个是对齐传输的场景,后三个是非对齐传输的例子。非对齐传输的例子中,第一个传输数据的地址由于起始地址没有对齐,会导致有的地址是没有数据存取的,例如起始地址为1,地址0没有地址存取,而此时由于有效地址为并没有4字节,无法存取4字节的数据,则数据开关strobe也需要进行相匹配的数据选通,对数据进行存取。

        传输示例2:总线宽度为64,数据位宽为32。第1个是对齐传输的,后2个为非对齐的传输。

七、其他

        其余还有原子访问、排序、低功耗等内容,由于暂时未接触,在这里不做阐述。



相关文章:

AXI总线协议基础--几分钟熟悉通道信号和基础架构

目录 一、AXI协议基础 1.1读写通道的基本架构图 1.2猝发操作举例 1.3传输顺序 二、各个通道中的信号描述 2.1全局信号 2.2写地址通道信号 2.3写数据通道信号 2.4写响应通道信号 2.5读地址通道信号 2.6读数据通道 三、通道握手 3.1单一信息传输时的握手过程 3.2不…...

matlab数学建模方法与实践 笔记汇总

matlab数学建模方法与实践 笔记汇总 写在最前面笔记1:快速入门1.导入数据2.数据探索3.多项式拟合4.发布功能5.数据类型6、全部代码 笔记2:数据的准备1.数据的读取与写入excel、txt读图读视频 2.数据预处理缺失值噪声过滤数据归约数据变换 3.数据统计4.数…...

[UE虚幻引擎] DTCopyFile 插件说明 – 使用蓝图拷贝复制文件 (Windows)

本插件可以在虚幻引擎中使用蓝图对系统的其他文件进行拷贝复制操作。 1. 节点说明 Async Copy File ​ 异步复制文件 Param Source File : 要复制的源文件的完整路径。Param Target File : 要复制的目标文件的完整路径。Param Force Copy : 如果为true,则如果目标…...

如何用ChatGPT学或教英文?5个使用ChatGPT的应用场景!

原文:百度安全验证 AI工具ChatGPT的出现大幅改变许多领域的运作方式,就连「学英文」也不例外!我发现ChatGPT应用在英语的学习与教学上非常有意思。 究竟ChatGPT如何改变英文学习者(学生)与教学者(老师)呢? 有5个应用场景我感到…...

基于spirngboot人事考勤管理信息系统

一:功能介绍 本系统前端采用vue框架以及Elemnt-UI,后端采用springboot、mysql、redis、mybatis等技术栈。 主要功能有登录、员工考勤、数据统计、薪资管理、权限管理、打卡管理、考勤审核、请假审批、薪资发放、报表统计、文件上传、文件下载、考勤设置、请假设置。…...

QT界面窗口 (widget)的显示和隐藏,关闭

QT界面窗口的显示和隐藏,关闭_qt窗口隐藏关闭按钮_123无敌,就你了的博客-CSDN博客...

这7个AI软件让设计效率飞起,快来收藏 优漫动游

伴随着AI技术的发展,设计师使用AI工具来提高工作效率已成为一种趋势,越来越多的AI工具也出现在市场上。本文收集了市场上7个好用的AI工具推荐给大家,一起来看看吧! 这7个AI软件让设计效率飞起,快来收藏 1、即时AI…...

ElasticSearch环境准备

Elasticsearch 是一个基于 Apache Lucene™ 的开源搜索引擎。不仅仅是一个全文搜索引擎,它还是一个分布式的搜索和分析引擎,可扩展并能够实时处理大数据。以下是关于 Elasticsearch 的一些主要特点和说明: 1.实时分析:Elasticsear…...

JAVA练习百题之数组插入元素

题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。 程序分析 要将一个数插入已经排好序的数组中,我们可以采用以下步骤: 遍历数组,找到第一个大于待插入数的位置。将待插入数插入到该位…...

C++11常见语法

目录 lambda 表达式 可变模板参数 C11新类的默认函数 包装器 function bind lambda 表达式 lambda 表达式也是可调用对象,在C语言中就有函数指针,但是函数指针比较复杂。 而在C11之前,也有仿函数,使用仿函数,还…...

【数据分析】时间序列

UTC时间:时间戳是以格林威治时间1970年01月01日00时00分00秒为基准计算所经过时间的秒数,是一个浮点数。Python的内置模块time和datetime都可以对时间格式数据进行转换,如时间戳和时间字符串的相互转换。 报错记录:AR has been re…...

【图像算法相关知识点】

【图像算法工程师】 什么是图像处理? 图像处理是指对数字图像进行处理和分析,以达到特定的目的。例如,调整图像的颜色、对比度、亮度等参数,进行图像增强、去噪、分割、特征提取等操作,以及应用计算机视觉算法实现目标…...

竹云筑基,量子加密| 竹云携手国盾量子构建量子身份安全防护体系

9月23日-24日,2023量子产业大会在安徽合肥举行。作为量子科技领域行业盛会,2023年量子产业大会以“协同创新 量点未来”为主题,展示了前沿的量子信息技术、产业创新成果,并举办主旨论坛、量子科普讲座等系列专项活动。量子信息作为…...

数据结构P46(2-1~2-4)

2-1编写算法查找顺序表中值最小的结点&#xff0c;并删除该结点 #include <stdio.h> #include <stdlib.h> typedef int DataType; struct List {int Max;//最大元素 int n;//实际元素个数 DataType *elem;//首地址 }; typedef struct List*SeqList;//顺序表类型定…...

基于BERT模型进行文本处理(Python)

基于BERT模型进行文本处理(Python) 所有程序都由Python使用Spyder运行。 对于BERT&#xff0c;在运行之前&#xff0c;它需要安装一些环境。 首先&#xff0c;打开Spyder。其次&#xff0c;在控制台中单独放置要安装的&#xff1a; pip install transformers pip install tor…...

妙鸭相机功能代码复现

妙鸭相机功能代码复现 妙鸭相机主要实现人脸替换与人脸高清增强修复功能。可通过两种方式实现Roop和Lora模型。 RooP笔记 基础模型:inswapper_128.onnx 人脸分析模型:insightface 高清增强模型:gfpgan 大体流程为通过insightface检测出人脸,替换人脸,使用gfpgan对人…...

使用Java Spring Boot构建高效的爬虫应用

本文将介绍如何使用Java Spring Boot框架来构建高效的爬虫应用程序。通过使用Spring Boot和相关的依赖库&#xff0c;我们可以轻松地编写爬虫代码&#xff0c;并实现对指定网站的数据抓取和处理。本文将详细介绍使用Spring Boot和Jsoup库进行爬虫开发的步骤&#xff0c;并提供一…...

归并排序与非比较排序详解

W...Y的主页 &#x1f60a; 代码仓库分享 &#x1f495; &#x1f354;前言&#xff1a; 上篇博客我们讲解了非常重要的快速排序&#xff0c;相信大家已经学会了。最后我们再学习一种特殊的排序手法——归并排序。话不多说我们直接上菜。 目录 归并排序 基本思想 递归思路…...

第85步 时间序列建模实战:CNN回归建模

基于WIN10的64位系统演示 一、写在前面 这一期&#xff0c;我们介绍CNN回归。 同样&#xff0c;这里使用这个数据&#xff1a; 《PLoS One》2015年一篇题目为《Comparison of Two Hybrid Models for Forecasting the Incidence of Hemorrhagic Fever with Renal Syndrome i…...

【MATLAB源码-第36期】matlab基于BD,SVD,ZF,MMSE,MF,SLNR预编码的MIMO系统误码率分析。

1、算法描述 1. MIMO (多输入多输出)&#xff1a;这是一个无线通信系统中使用的技术&#xff0c;其中有多个发送和接收天线。通过同时发送和接收多个数据流&#xff0c;MIMO可以增加数据速率和系统容量&#xff0c;同时提高信号的可靠性。 2. BD (块对角化)&#xff1a;这是一…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表&#xff1f;1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

基于服务器使用 apt 安装、配置 Nginx

&#x1f9fe; 一、查看可安装的 Nginx 版本 首先&#xff0c;你可以运行以下命令查看可用版本&#xff1a; apt-cache madison nginx-core输出示例&#xff1a; nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

&#x1f31f; 什么是 MCP&#xff1f; 模型控制协议 (MCP) 是一种创新的协议&#xff0c;旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议&#xff0c;它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

【决胜公务员考试】求职OMG——见面课测验1

2025最新版&#xff01;&#xff01;&#xff01;6.8截至答题&#xff0c;大家注意呀&#xff01; 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:&#xff08; B &#xff09; A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

Mysql中select查询语句的执行过程

目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析&#xff08;Parser&#xff09; 2.4、执行sql 1. 预处理&#xff08;Preprocessor&#xff09; 2. 查询优化器&#xff08;Optimizer&#xff09; 3. 执行器…...

springboot整合VUE之在线教育管理系统简介

可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生&#xff0c;小白用户&#xff0c;想学习知识的 有点基础&#xff0c;想要通过项…...

mac 安装homebrew (nvm 及git)

mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用&#xff1a; 方法一&#xff1a;使用 Homebrew 安装 Git&#xff08;推荐&#xff09; 步骤如下&#xff1a;打开终端&#xff08;Terminal.app&#xff09; 1.安装 Homebrew…...

C++ 设计模式 《小明的奶茶加料风波》

&#x1f468;‍&#x1f393; 模式名称&#xff1a;装饰器模式&#xff08;Decorator Pattern&#xff09; &#x1f466; 小明最近上线了校园奶茶配送功能&#xff0c;业务火爆&#xff0c;大家都在加料&#xff1a; 有的同学要加波霸 &#x1f7e4;&#xff0c;有的要加椰果…...

日常一水C

多态 言简意赅&#xff1a;就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过&#xff0c;当子类和父类的函数名相同时&#xff0c;会隐藏父类的同名函数转而调用子类的同名函数&#xff0c;如果要调用父类的同名函数&#xff0c;那么就需要对父类进行引用&#…...