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编写算法查找顺序表中值最小的结点,并删除该结点 #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,在运行之前,它需要安装一些环境。 首先,打开Spyder。其次,在控制台中单独放置要安装的: pip install transformers pip install tor…...
妙鸭相机功能代码复现
妙鸭相机功能代码复现 妙鸭相机主要实现人脸替换与人脸高清增强修复功能。可通过两种方式实现Roop和Lora模型。 RooP笔记 基础模型:inswapper_128.onnx 人脸分析模型:insightface 高清增强模型:gfpgan 大体流程为通过insightface检测出人脸,替换人脸,使用gfpgan对人…...
使用Java Spring Boot构建高效的爬虫应用
本文将介绍如何使用Java Spring Boot框架来构建高效的爬虫应用程序。通过使用Spring Boot和相关的依赖库,我们可以轻松地编写爬虫代码,并实现对指定网站的数据抓取和处理。本文将详细介绍使用Spring Boot和Jsoup库进行爬虫开发的步骤,并提供一…...
归并排序与非比较排序详解
W...Y的主页 😊 代码仓库分享 💕 🍔前言: 上篇博客我们讲解了非常重要的快速排序,相信大家已经学会了。最后我们再学习一种特殊的排序手法——归并排序。话不多说我们直接上菜。 目录 归并排序 基本思想 递归思路…...
第85步 时间序列建模实战:CNN回归建模
基于WIN10的64位系统演示 一、写在前面 这一期,我们介绍CNN回归。 同样,这里使用这个数据: 《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 (多输入多输出):这是一个无线通信系统中使用的技术,其中有多个发送和接收天线。通过同时发送和接收多个数据流,MIMO可以增加数据速率和系统容量,同时提高信号的可靠性。 2. BD (块对角化):这是一…...
Uniapp 新手专用 抖音登录 获取用户头像、名称、openid、unionid、anonymous_openid、session_key
TC-dylogin 一定请选择 源码授权版 教程 第一步 将代码拷贝至您所需要的页面 该代码位置:pages/index.vue 第二步 修改appid和secret 第三步 获取appid和secret 获取appid和secret链接 注意事项 为了安全,我将默认的自己的appid和secret在云函数中删…...
openssl引擎开发踩坑小记
前言 在开发openssl引擎过程中,引擎莫名其妙的加载不上,错误如下图: 大概意思就是加载引擎动态库时失败了。 在网上一顿搜索后,也没找到想要的答案。 原因 许多引擎都是基于第三方动态库开发的,引擎本身在开发时&a…...
ubuntu 设置x11vnc服务
Ubuntu 18.04 设置x11vnc服务 自带的vino-server也可以用但是不好用,在ubuntu论坛上看见推荐的x11vnc(ubuntu关于vnc的帮助页面),使用设置一下,结果发现有一些坑需要填,所以写下来方便下次使用 转载请说明…...
物理备份xtrabackup
物理备份: 直接复制数据库文件,适用于大型数据库环境,不受存储引擎的限制,但不能恢复到不同的MySQL版本。 1.完全备份-----完整备份: 每次都将所有数据(不管自第一次备份以来有没有修改过)&am…...
1.springcloudalibaba nacos2.2.3部署
前言 nacos是springcloudalibaba体系的注册中心,演示如何搭建最新稳定版本的linux搭建。 前置条件,安装好jdk1.8 一、二进制压缩包下载 1.1 下载压缩包 nacos下载 点击下载下载后得到二进制包如下 nacos-2.2.3.tar.gz二、安装步骤 2.1.解压二进制…...
Linux 查看是否安装memcached
telnet 127.0.0.1 11211这样的命令连接上memcache,然后直接输入stats就可以得到memcache服务器的版本 安装memcached : sudo apt-get install memcached...
设计模式14、命令模式 Command
解释说明:命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传递给调用对象。调用对象寻找可以处理该命令的合适对象,并把该命令传给相应的对象&…...
【Go】excelize库实现excel导入导出封装(一),自定义导出样式、隔行背景色、自适应行高、动态导出指定列、动态更改表头
前言 最近在学go操作excel,毕竟在web开发里,操作excel是非常非常常见的。这里我选择用 excelize 库来实现操作excel。 为了方便和通用,我们需要把导入导出进行封装,这样以后就可以很方便的拿来用,或者进行扩展。 我参…...
【开发篇】二十、SpringBoot整合RocketMQ
文章目录 1、整合2、消息的生产3、消费4、发送异步消息5、补充:安装RocketMQ 1、整合 首先导入起步依赖,RocketMQ的starter不是Spring维护的,这一点从starter的命名可以看出来(不是spring-boot-starter-xxx,而是xxx-s…...
OpenCV实现求解单目相机位姿
单目相机通过对极约束来求解相机运动的位姿。参考了ORBSLAM中单目实现的代码,这里用opencv来实现最简单的位姿估计. mLeftImg cv::imread(lImg, cv::IMREAD_GRAYSCALE); mRightImg cv::imread(rImg, cv::IMREAD_GRAYSCALE); cv::Ptr<ORB> OrbLeftExtractor …...
广告发布形式有哪几种/seo推广公司有哪些
建立池连接可以显著提高应用程序的性能和可缩放性。SQL Server .NET Framework 数据提供程序自动为 ADO.NET 客户端应用程序提供连接池(MSDN)。<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />Opening a …...
C语言做网站需要创建窗口吗/百度答主招募入口官网
原文地址:http://blog.csdn.net/hitwengqi/article/details/8008203 最近一直在自学Hadoop,今天花点时间搭建一个开发环境,并整理成文。 首先要了解一下Hadoop的运行模式: 单机模式(standalone) 单机…...
网站后台制作步骤/东莞百度搜索网站排名
通过pb文件生成的Java接口,转成postman说需要的json格式字符串,直接上代码: /*** param path* description 具体解析path路径*/public Map<String, Object> doGeneratePostManCollections(String path) {String[] params path.split(&…...
怎么做网站优化 s/苏州百度推广公司地址
1.准备工作——安装一些工具包 $ sudo apt-get install ros-melodic-ros-tutorials ros-melodic-geometry-tutorials ros-melodic-rviz ros-melodic-rosbash ros-melodic-rqt-tf-tree2.运行demo roslaunch turtle_tf turtle_tf_demo.launch会跳出一个窗口,一只小乌…...
网站建设竞标需要怎么做/网站优化要多少钱
以前就研究过debian安装包的问题,当时也没有做相关方面的记录,当时也没有完全研究明白,现在重新研究下,现在写下我的一些笔记,等我研究明白了,我会整理出来,出个系列博客,有兴趣的同…...
推荐微网站建设/企业网络策划
工厂模式 Spring IOC就是使用了工厂模式,对象的创建交给一个工厂去创建。 概念:工厂模式(Factory Pattern)使用一个共同的接口指向新创建的对象。 意图:定义一个创建对象的接口,让其子类自己决定实例化哪…...