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

深入浅出AXI协议(5)——数据读写结构读写响应结构

目录

一、前言

二、写选通(Write strobes)

三、窄传输(Narrow transfers)

1、示例1

2、示例2 

四、字节不变性(Byte invariance) 

五、未对齐的传输(Unaligned transfers)

六 、读写响应结构

七、总结

一、前言

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

        在这篇文章中,我们将介绍AXI协议的数据读写结构和读写响应结构。主要描述了 AXI 读写数据总线传输的不同大小和接口如何用字节不变endian 去握手混合 endian 传输,之后我们简单介绍关于AXI的读写响应操作。

二、写选通(Write strobes)

        当写选通信号 WSTRB[n:0] 为高时,指定包含有效信息的数据总线的字节通道。写数据总线的每8位都有一个写选通,因此 WSTRB[n] 对应于 WDATA[ (8n+7) : (8n) ] 。

        主机必须确保写选通仅对包含有效数据的字节通道是高的。

        当WVALID为低时,写选通可以取任何值,不过还是建议它们要么是驱动的低,要么保持在它们以前的值。

三、窄传输(Narrow transfers)

        主机产生的数据宽度小于数据总线宽度时,地址和控制信息决定哪一个 字节通道(byte lanes)为有效的数据:

(1)在递增或回卷模式时,对猝发的每个节拍使用不同的字节通道

(2)在固定模式时,每个节拍都使用相同的字节通道

下面给出了两个窄传输的例子(阴影单元格表示未传输的字节):

1、示例1

  • 猝发有5个传输
  • 起始地址是0
  • 每个传输是8位
  • 传输是在一个位宽为32位总线上
  • 突发类型是INCR(递增猝发)

2、示例2 

  • 猝发有三个传输
  • 起始地址是4
  • 每个传输是32位
  • 传输是在一个位宽为64位总线上

四、字节不变性(Byte invariance) 

        为了访问单个内存空间中的混合数据结构,AXI协议使用字节不变的方案。大多数小端元件可以直接连接到字节不变接口。只支持大端传输的元件需要一个字节不变操作的转换函数。字节不变性确保了大端结构和小结构可以在单个内存空间中共存而不损坏。

        下面是一个数据不变性存取需求的数据结构的例子。他包含头信息,例如source、destination identifiers 这些信息是采用 little-endian 格式,但是 payload 是big-endian字节流,具体情况如下图:

        字节不变性确保在数据结构中 little-endian 存取头信息的部分不会破坏其他 big-endian 数据。

五、未对齐的传输(Unaligned transfers)

        AXI支持非对齐的传输。对于任何由大于一个字节的数据传输组成的猝发,被访问的第一个字节可能与自然地址边界不对齐。例如,从0x1002的字节地址开始的32位数据包与自然的32位地址边界不对齐。

        主机可以:使用低阶地址行去标示一个不对齐的起始地址。低阶地址行的信息必须包含 byte lane strobes 信息。

        下图显示了在32位总线上使用对齐和未对齐的32位传输的递增猝发的示例。图中的每一行表示一个传输,阴影单元格表示未传输的字节;

        下图显示了在64位总线上使用对齐和未对齐的32位传输的递增突发的示例。图中的每一行表示一个传输,阴影单元格表示未传输的字节:

        下图显示了一个在64位总线上使用对齐的32位传输的包装突发的例子。图中的每一行表示一个传输,阴影单元格表示未传输的字节:

六 、读写响应结构

        AXI协议为读和写事务提供响应信令:

(1)对于读事务,来自从机的响应信息在读数据信道上;

(2)对于写事务,响应信息在写响应信道上。

        AXI 协议对读事务和写事务都有响应。对于读事务,读响应与读数据一起发送给主机,而写事务将写响应通过写响应通道传送。AXI 协议的响应类型有 OKAY、EXOKAY、SLVERR、DECERR。
        通过信号 RRESP[1:0] BRESP[1:0] 来编码响应信号,具体如下图:
        协议规定请求的需要传输的数据数量必须被执行,即使有错误报告。在一次突发式读写的剩余数据不会被取消传输,即使有单个错误报告。
        AXI 协议的四种响应类型:正常存取成功(OKEY)、独占式存取(EXOKEY)、设备错误(SLVERR)、译码错误(DECERR)。AXI 协议要求,在一个传输事务中的所有数据必须传输完成,即使有错误状态发生。

七、总结

        本文介绍的主要内容是AXI协议的数据读写结构和读写响应结构,主要讲述了当遇到各种特殊情况时,AXI如何完成数据的读写操作,最后介绍了读写响应的4种类型。

http://www.lryc.cn/news/153716.html

相关文章:

  • IntelliJ Idea开发Vue遇到的几个问题
  • sql查找最晚一天/日期最大的一条记录 两种方法
  • 详解python的
  • Modbus TCP通信笔记
  • CIM和websockt-实现实时消息通信:双人聊天和消息列表展示
  • useLayoutEffect和useEffect有什么作用?
  • django中配置使用websocket终极解决方案
  • 敦煌网、Jumia等跨境电商平台怎么测评(补单)留评?
  • uni-app之android离线打包
  • 【传输层】TCP -- 三次握手四次挥手 | 可靠性与提高性能策略
  • 前端将UTC时间格式转化为本地时间格式~~uniapp写法
  • 说说Kappa架构
  • 项目介绍:《Online ChatRoom》网页聊天室 — Spring Boot、MyBatis、MySQL和WebSocket的奇妙融合
  • Vue3 学习 组合式API setup语法糖 响应式 指令 DIFF(一)
  • 一文轻松入门DeepSort
  • 关于linux openssl的自签证书认证与nginx配置
  • Mybatis--关联关系映射
  • Golang基本的网络编程
  • Postgresql的一个bug_涉及归档和pg_wal
  • 轻量、便捷、高效—经纬恒润AETP助力车载以太网测试
  • 【跟小嘉学 Rust 编程】二十四、内联汇编(inline assembly)
  • 综合实训-------成绩管理系统 V1.1
  • 13.108.Spark 优化、Spark优化与hive的区别、SparkSQL启动参数调优、四川任务优化实践:执行效率提升50%以上
  • 大模型综述论文笔记6-15
  • 树的介绍(C语言版)
  • Android studio实现圆形进度条
  • 基于Halcon的喷码识别方法
  • 【Sword系列】Vulnhub靶机HACKADEMIC: RTB1 writeup
  • idea使用maven时的java.lang.IllegalArgumentException: Malformed \uxxxx encoding问题解决
  • linux深入理解多进程间通信