深入浅出AXI协议(4)——猝发传输

一、前言

         在之前的文章中,我们着重介绍了关于AXI4的握手协议它可以使得传输的双方都可以自如地控制传输的速率,我们主要介绍了握手协议出现的3种可能情况。然后对于AXI4交易通信的握手信号的关系做出了介绍:(1)在AXI4互联中 ,VALID信号不依赖交易中其他元件的READY信号(2)READY信号能够等待确认VALID信号;之后介绍了读交易和写交易种握手信号的依赖关系。在本文中,我们将介绍AXI4的猝发传输相关内容。

        AXI协议是基于猝发的,主机通过将控制信息和传输中第一个字节的地址驱动到从机,开始每一次猝发传输。随着猝发的进行,从机必须计算突发中后续传输的地址。一次猝发不能跨越4KB的地址边界。

二、AXI猝发长度与大小

1、AXI猝发长度(Burst length)

        猝发的长度被指定为:ARLEN[7:0](对于读传输来说)和WRLEN[7:0](对于写传输来说)。

        AXI3支持1到16个突发长度,用于所有猝发类型。AXI4将对INCR突发类型的猝发长度支持扩展到1到256次传输。AXI4中所有其他猝发类型的支持仍然保持在1到16次传输。

        任何元件都不能提前终止猝发。但是,为了减少写猝发中的数据传输数量,主机可以通过失效所有的写掩码来禁用进一步的写操作。在这种情况下,主机必须完成猝发中的剩余传输。在读猝发事件中,主机可以丢弃读取数据,但它必须完成猝发事件中的所有传输。

2、AXI猝发大小(Burst size)

        在每个数据传输中传输的最大字节数由ARSIZE[2:0](对于读传输来说)和WRSIZE[2:0](对于写传输来说)指定。其具体的编码方式如下:

57f87b29201f412fbbe4ca90919bea24.jpeg

        如果AXI总线宽度大于猝发大小,则AXI接口必须通过传输地址确定每次传输使用数据总线的哪个字节道。任何传输的大小不得超过事务中任何一个代理的数据总线宽度。

三、AXI猝发类型(Burst type)

        AXI4协议定义了3种猝发类型:

        (1)固定猝发(FIXED)

        (2)递增猝发(INCR)

        (3)回卷猝发(WRAP)

        AXI的猝发类型通过ARBURST信号(表示读猝发操作类型,属于读地址通道)和AWBURST(表示写猝发操作类型,属于写地址通道)信号进行体现,具体的表示形式和含义如下:

ARBURST[1:0]

AWBURST[1:0]

猝发类型描述访问
00固定固定地址猝发FIFO类型
01递增递增地址猝发普通顺序存储器
10回卷递增地址猝发,但在边界处,返回到低地址高速缓存行
11保留------------

        对于回卷式的猝发方式,有2个限制:

        (1)起始地址必须对齐传输大小。

        (2)猝发的长度必须是2,4,8,16。大于16拍的猝发传输只支持递增类型。回卷和固定类型只限于小于16拍的猝发传输。

四、AXI猝发地址(Burst address)

        为了说明猝发交易中地址的计算方法,首先给出计算过程中需要用到的术语:

(1)Start_Address :主机给出的开始地址

(2)Number_Bytes : 每个数据传输过程中的最大的字节个数

(3)Data_Bus_Bytes :数据总线上字节通道的个数

(4)Aligned_Address : 起始地址的对齐版本

(5)Burst_Length : 在一个猝发中数据传输的总个数

(6)Address_N :在一个猝发中传输N个的地址

(7)Wrap_Boundary :在一个回卷猝发方式的低地址

(8)Lower_Byte_Lane : 一个传输中最低寻址字节的字节通道

(9)Upper_Byte_Lane : 一个传输中最高寻址字节的字节通道

(10)INT(x):x取整操作

下面是计算公式:

对下列的术语进行赋值操作:

  • Start_Address = ADDR
  • Number_Bytes = eq?2%5E%7BSIZE%7D
  • Burst_Length = LEN + 1
  • Aligned_Address = (INT(Start_Address / Number_Bytes) ) x Number_Bytes
在一个猝发中,第一个传输的地址表示为:
  • Address_1 = Start_Address
在一个传输中,传输N个数据后的地址表示为:
  • Address_N = Aligned_Address + (N – 1) x Number_Bytes
对于WARP的猝发方式,其边界由下式确定
  • Wrap_Boundary = (INT(Start_Address / (Number_Bytes x Burst_Length))) x (Number_Bytes x Burst_Length)
如果有
  • Address_N = Wrap_Boundary + (Number_Bytes x Burst_Length)

则使用这个公式

  • Address_N = Wrap_Boundary。

在边界后,使用这个公式

  • Address_N = Start_Address + ((N – 1) × Number_Bytes) – (Number_Bytes × Burst_Length).
使用下面的等式确定第一个传输中使用哪个字节通道:
  • Lower_Byte_Lane = Start_Address - (INT(Start_Address / Data_Bus_Bytes)) x Data_Bus_Bytes
  • Upper_Byte_Lane = Aligned_Address + (Number_Bytes - 1) - (INT(Start_Address / Data_Bus_Bytes)) x Data_Bus_Bytes
使用下面的等式确定一个猝发中第一个传输后用于所有传输中哪个字节通道:
  • Lower_Byte_Lane = Address_N – (INT(Address_N / Data_Bus_Bytes)) x Data_Bus_Bytes
  • Upper_Byte_Lane = Lower_Byte_Lane + Number_Bytes – 1
传输数据的范围在:
  • DATA[(8 x Upper_Byte_Lane) + 7 : (8 x Lower_Byte_Lane)]

五、总结

        AXI协议是基于猝发的,主机通过将控制信息和传输中第一个字节的地址驱动到从机,开始每一次猝发传输。随着猝发的进行,从机必须计算突发中后续传输的地址。本文介绍了猝发的长度,大小和猝发类型,最后介绍了AXI猝发地址的计算过程。

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

传输层—TCP原理详解

目录 前言 1.TCP协议 2.TCP协议段格式 3.如何解包如何分用 4.网络协议栈和文件的关系 5.如何理解TCP报头 6.TCP的特点 7.TCP字段 7.1 16位窗口大小 7.2标志位 8.超时重传 9.连接管理机制 10.滑动窗口 11.拥塞控制 12.延迟应答 13.捎带应答 14.理解TCP的面向字…

GeoServe Web管理界面远程访问GeoServe Web管理界面的最佳工具

文章目录 前言1.安装GeoServer2. windows 安装 cpolar3. 创建公网访问地址4. 公网访问Geo Servcer服务5. 固定公网HTTP地址 前言 GeoServer是OGC Web服务器规范的J2EE实现,利用GeoServer可以方便地发布地图数据,允许用户对要素数据进行更新、删除、插入…

Axure RP PC电商平台Web端交互原型模板

Axure RP PC电商平台Web端交互原型模板。原型图内容齐全,包含了用户中心、会员中心、优惠券、积分、互动社区、运营推广、内容推荐、商品展示、订单流程、订单管理、售后及服务等完整的电商体系功能架构和业务流程。 在设计尺寸方面,本套模板按照主流的…

Web安全测试(五):XSS攻击—存储式XSS漏洞

一、前言 结合内部资料,与安全渗透部门同事合力整理的安全测试相关资料教程,全方位涵盖电商、支付、金融、网络、数据库等领域的安全测试,覆盖Web、APP、中间件、内外网、Linux、Windows多个平台。学完后一定能成为安全大佬! 全部…

NPM 常用命令(二)

目录 1、npm bugs 1.1 配置 browser registry 2、npm cache 2.1 概要 2.2 详情 2.3 关于缓存设计的说明 2.4 配置 cache 3、 npm ci 3.1 描述 3.2 配置 install-strategy legacy-bundling global-style omit strict-peer-deps foreground-scripts ignore-s…

亚马逊云科技通过生成式AI,帮助清华RIOS加速计算和分析的处理效率

近日,硬件创建平台Efabless宣布了其第一届“生成式AI开源芯片设计挑战赛”(AI Generated Open-Source Silicon Design Challenge)的评选结果。来自清华大学的RISC-V国际开源实验室(RIOS Lab)团队基于亚马逊云科技云上科…

机器人制作开源方案 | 桌面级全向底盘--本体说明+驱动控制

一、本体说明 1. 底盘概述 该底盘是一款模块化的桌面级应用型底盘,基于应用级软件架构设计、应用级硬件系统设计、典型应用型底盘机械系统设计。 底盘本体为一个采用半独立刚性悬挂的四驱全向底盘。 2. 软件环境介绍 操作系统:Ubuntu18.04系统。基于Deb…

电脑怎么设置定时关机,2个简单的操作

电脑作为现代生活中不可或缺的工具,我们通常会在工作或娱乐过程中使用它。但有时候,我们可能需要在一段时间后自动关机,例如在下载完成后或在睡觉前。那么电脑怎么设置定时关机呢?为了满足这种需求,电脑提供了多种定时…

Mybatis的关系关联配置

前言 MyBatis是一个流行的Java持久化框架,它提供了一种简单而强大的方式来映射Java对象和关系数据库之间的数据。在MyBatis中,关系关联配置是一种用于定义对象之间关系的方式,它允许我们在查询数据库时同时获取相关联的对象。 在MyBatis中&…

docker使用(一)生成,启动,更新(容器暂停,删除,再生成)

docker使用(一) 编写一个 Dockerfile构建镜像构建失败构建成功 运行镜像运行成功 修改代码后再次构建请不要直接进行构建,要将原有的旧容器删除或暂停停止成功删除成功再次构建且构建成功! 要创建一个镜像,你可以按照以…

ChatGPT 一条命令总结Mysql所有知识点

想学习Mysql的同学,可以使用ChatGPT直接总结mysql所有的内容与知识点大纲 输入 总结Mysql数据库所有内容大纲与大纲细分内容 ChatGPT不光生成内容,并且直接完成了思维导图。 AIGC ChatGPT ,BI商业智能, 可视化Tableau, PowerBI, FineReport, 数据库Mysql Oracle, Offi…

桌面应用小程序,一种创新的跨端开发方案

Qt Group在提及2023年有桌面端应用程序开发热门趋势时,曾经提及三点: 关注用户体验:无论您是为桌面端、移动端,还是为两者一起开发应用程序,有一点是可以确定的:随着市场竞争日益激烈,对产品的期…