【总线】AXI4第六课时:寻址选项深入解析

  大家好,欢迎来到今天的总线学习时间!如果你对电子设计、特别是FPGA和SoC设计感兴趣,那你绝对不能错过我们今天的主角——AXI4总线。作为ARM公司AMBA总线家族中的佼佼者,AXI4以其高性能和高度可扩展性,成为了现代电子系统中不可或缺的通信桥梁。

        上几课时我们了解了AMBA和AXI的历史,也知道AXI4有5个独立的管道,并且有独立的握手机制,本章节更细致的讲一下AXI的寻址选项深入解析

        这里会有一系列的课程,和大家分享AMBA总线家族,欢迎大家一起学习,收藏点赞。

 系列文章

【总线】AMBA总线架构的发展历程-CSDN博客

【总线】设计fpga系统时,为什么要使用总线?-CSDN博客

【总线】AXI总线:FPGA设计中的通信骨干-CSDN博客

【总线】AMBA总线家族的明星成员:AXI协议简介-CSDN博客

【总线】AXI4第一课时:揭秘AXI4总线的五大独立通道-CSDN博客

【总线】AXI4第二课时:深入AXI4总线的基础事务-CSDN博客

【总线】AXI4第三课时:握手机制-CSDN博客

【总线】AXI4第五课时:信号描述-CSDN博客

【总线】AXI4第六课时:寻址选项深入解析-CSDN博客


目录

概念

关于寻址选项

突发长度

突发大小

突发类型

突发地址

升华! 

寻址选项的重要性

突发长度的实际应用

突发大小对性能的影响

突发类型的选择

突发地址的计算方法

结论


        在深入理解AMBA AXI协议的寻址选项之前,我们需要明确几个基本概念:突发传输、地址计算、以及如何利用这些选项来优化数据访问。

        第一章节直接翻译的官方文档。第二章对官方文档进行说明解释,帮助大家理解。

概念

关于寻址选项

AXI协议是基于突发的,主设备通过驱动传输控制信息和突发传输的第一个字节的地址来开始每个突发。随着突发事务的进展,计算突发内连续传输地址的责任在于从设备。突发不得跨越4KB边界,以防止它们跨越不同从设备之间的边界,并限制从设备内部所需的地址增量器的大小。

突发长度

AWLEN或ARLEN信号指定了每个突发中发生的数据传输的数量。如表4-1所示,每个突发可以包含1到16个传输。对于包装突发,突发长度必须为2、4、8或16个传输。每个事务必须完成ARLEN或AWLEN指定的传输数量。任何组件都不能提前终止突发以减少数据传输的数量。在写入突发期间,如果主设备通过取消所有写入使能信号来禁用进一步的写入,它必须完成突发中的剩余传输。在读取突发期间,主设备可以丢弃不需要的进一步读取数据,但它必须完成突发中的剩余传输。

注意: 丢弃不需要的读取数据可能导致在访问诸如FIFO之类的读取敏感设备时丢失数据。主设备在使用比需要的更长的突发长度访问此类设备时,绝不能这样做。

表 突发长度编码

ARLEN[3:0]

AWLEN[3:0]

数据传输数量

b0000

1

b0001

2

...

...

...

b1101

14

b1110

15

b1111

16

突发大小

表4-2展示了ARSIZE或AWSIZE信号如何指定突发传输中每个节拍传输的最大数据字节数。AXI根据传输地址确定数据总线上使用的字节道。

对于增量或包装突发,如果传输大小小于数据总线宽度,则每个节拍的数据传输在不同的字节道上进行。固定突发的地址保持不变,每个传输使用相同的字节道。任何传输的大小都不能超过事务中组件的数据总线宽度。

表 突发大小编码

ARSIZE[2:0]

AWSIZE[2:0]

传输中的字节数

b000

1

b001

2

b010

4

b011

8

b100

16

b101

32

b110

64

b111

128

突发类型

AXI协议定义了三种突发类型:

  1. 固定突发(Fixed Burst):在固定突发中,突发内每个传输的地址都保持不变。这种突发类型适用于对同一位置的重复访问,例如加载或清空外围FIFO。
  2. 增量突发(Incrementing Burst):在增量突发中,突发内每个传输的地址是前一个传输地址的增量。增量值取决于传输的大小。例如,在大小为四个字节的突发中,每个传输的地址是前一个地址加四。
  3. 包装突发(Wrapping Burst):包装突发类似于增量突发,但是当达到包装边界时,地址会回绕到较低的地址。包装边界是突发中每个传输的大小乘以突发的总传输数量。

表 突发类型编码

ARBURST[1:0]

AWBURST[1:0]

突发类型

访问类型

b00

b00

FIXED

固定地址突发

b01

b01

INCR

增量地址突发

b10

b10

WRAP

包装地址突发

b11

b11

Reserved

保留

突发地址

本节提供了一些简单的公式,用于确定突发传输中的地址和字节道。这些公式使用了以下变量:

  • Start_Address:主设备发出的起始地址。
  • Number_Bytes:每个数据传输的最大字节数。
  • Data_Bus_Bytes:数据总线的字节道数。
  • Aligned_Address:起始地址的对齐版本。
  • Burst_Length:突发内总的数据传输数量。
  • Address_N:突发内第N个传输的地址。N是2到16之间的整数。
  • Wrap_Boundary:包装突发内的最低地址。
  • Lower_Byte_Lane:传输中的最低地址字节的字节道。
  • Upper_Byte_Lane:传输中的最高地址字节的字节道。
  • INT(x):x的向下取整整数值。

使用这些方程来确定突发内传输的地址:

  • 起始地址:Start_Address = ADDR
  • 每个数据传输的字节数:Number_Bytes = 2^SIZE
  • 突发长度:Burst_Length = LEN + 1
  • 对齐的起始地址:Aligned_Address = INT(Start_Address / Number_Bytes) * Number_Bytes

使用这些方程来确定突发内第一个传输的地址:

  • 第一个传输的地址:Address_1 = Start_Address

使用这些方程来确定突发内第一个传输后的任何传输的地址:

  • Address_N = Aligned_Address + (N – 1) * Number_Bytes

对于包装突发,使用以下方程来确定包装边界:

  • Wrap_Boundary = INT(Start_Address / (Number_Bytes * Burst_Length)) * (Number_Bytes * Burst_Length)

如果Address_N等于Wrap_Boundary加上Number_Bytes乘以Burst_Length,则使用以下方程:

  • Address_N = Wrap_Boundary

使用这些方程来确定突发内第一个传输使用的字节道:

  • Lower_Byte_Lane = Start_Address - INT(Start_Address / Data_Bus_Bytes) * Data_Bus_Bytes
  • Upper_Byte_Lane = Aligned_Address + (Number_Bytes - 1) * INT(Start_Address / Data_Bus_Bytes) * Data_Bus_Bytes

使用这些方程来确定突发内第一个传输后所有传输使用的字节道:

  • Lower_Byte_Lane = Address_N – INT(Address_N / Data_Bus_Bytes) * Data_Bus_Bytes
  • Upper_Byte_Lane = Lower_Byte_Lane + Number_Bytes – 1

数据在以下位置传输:

  • DATA[(8 * Upper_Byte_Lane) + 7 : (8 * Lower_Byte_Lane)]

升华! 

寻址选项的重要性

        寻址选项在AXI协议中扮演着至关重要的角色。它们不仅决定了数据如何被传输,还影响着系统的性能和效率。通过合理配置寻址选项,可以确保数据传输的准确性,并最大化利用系统资源。

突发长度的实际应用

        突发长度是指在一个突发传输中包含的数据传输次数。这个参数直接影响到数据传输的总量。例如,在内存密集型应用中,较长的突发长度可以减少访问次数,从而提高效率。

示例说明: 假设一个系统使用32位宽的数据总线,并且ARLEN设置为b0100,表示突发长度为4。如果每次数据传输是32位,那么整个突发将传输128位(16字节)的数据。

突发大小对性能的影响

        突发大小定义了每次数据传输中包含的字节数。这个参数对于确保数据在总线上正确传输至关重要。较大的突发大小可以减少传输相同数量数据所需的总线周期数。

示例说明: 如果AWSIZE设置为b110,表示每次数据传输包含64字节。在上述相同的4次传输突发中,总共将传输256字节的数据,这比b100(16字节每次)的配置效率更高。

突发类型的选择

        突发类型的选择取决于具体的应用场景和数据访问模式。固定突发适用于对同一地址的连续访问,增量突发适用于顺序访问,而包装突发则适用于需要在特定边界回绕的场景。

示例说明: 考虑一个需要连续读取多个缓存行的应用,可以使用包装突发来优化访问模式。如果缓存行大小为64字节,并且数据总线宽度为128字节,则可以使用b111(128字节)的AWSIZEb10(包装)的AWBURST来实现高效的数据传输。

突发地址的计算方法

        正确的地址计算对于确保数据被传输到正确的位置至关重要。AXI协议提供了一套公式来计算突发内每个传输的地址和使用的字节道。

示例说明: 如果一个突发操作的起始地址是0x1000,数据总线宽度为128字节,ARSIZEb111(128字节),突发长度为4次传输(ARLENb0100),那么第一个传输的地址是0x1000,第二个是0x1080,第三个是0x1100,第四个是0x1180。

通过这些公式,设计者可以精确控制数据传输的地址,从而实现对系统内存的高效访问。

结论

AXI协议的寻址选项为设计者提供了强大的工具,以实现高效、灵活的数据传输。理解并正确应用这些选项,可以显著提高系统的整体性能。通过上述示例和说明,我们可以看到寻址选项在实际应用中的重要性,以及如何利用它们来满足不同的设计需求。

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

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

相关文章

pip的常用命令整理|python入学必备知识

1. 什么是pip? 通俗的说:pip 是 Python 第三方包管理工具,它提供了对Python 包的查找、下载、安装、卸载的功能。Python 3.4以上版本都自带 pip 工具。 2. 查看系统是否安装的pip? 下面这行代码如果没有报错,则证明系统中安装…

设计模式(实战项目)-状态模式

需求背景:存在状态流转的预约单 一.数据库设计 CREATE TABLE appointment (id bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 主键id,appoint_type int(11) NOT NULL COMMENT 预约类型(0:线下查房...),appoint_user_id bigint(20) NOT NULL COMMENT 预约人…

实现胶囊神经网络,识别手写MNIST数据集,谈谈实现及理解。

🏆本文收录于《CSDN问答解答》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&…

稀疏数组Java练习代码含IO

是在学习尚硅谷的数据结构与算法Java课程,课后自己凭借思路写的练习代码 首先定义一个稀疏数组类 import java.io.*; import java.util.Objects;public class SparseArray {int sum;//创建原始数组public int[][] createArray(int column, int row){//根据传入数据…

雨量气象站:野外监测的得力助手

在广阔无垠的大自然中,雨量、风力、风向、温湿度以及大气压力等气象数据对于各种应用场景都至关重要。特别是在野外、森林防火、山洪监测等无市电供电的场合,一款高效可靠的监测设备更是不可或缺。雨量气象站正是为了满足这些需求而诞生的户外专用监测站…

C++ STL unique_ptr智能指针源码剖析

由于上一篇博客将shared_ptr,weak_ptr,enable_shared_form_this的源码实现整理了一遍,想着cpp智能指针还差个unique_ptr故写下此篇博客,以供学习 源码剖析 一,模板参数 首先,我们先看unique_ptr的模板参数,第一个参数_TP自是不用说表示对象类型,第二个模板参数定义了unique_p…

FFmpeg视频处理工具安装使用

一、前言 FFmpeg是流行的开源视频处理工具,用于转码、合并、编辑等。以下是安装和使用方法: 二、步骤 1.下载 1.1 ffmpeg下载 官网下载地址 wget https://www.ffmpeg.org/releases/ffmpeg-6.1.1.tar.xz1.2 nasm下载 https://www.nasm.us/pub/nasm/…

Android应用安装过程

Android 系统源码源码-应用安装过程 Android 中应用安装的过程就是解析 AndroidManifest.xml 的过程,系统可以从 Manifest 中得到应用程序的相关信息,比如 Activity、Service、Broadcast Receiver 和 ContentProvider 等。这些工作都是由 PackageManage…

drm core

drm core初始化 /*** drm_sysfs_init - initialize sysfs helpers** This is used to create the DRM class, which is the implicit parent of any* other top-level DRM sysfs objects.** You must call drm_sysfs_destroy() to release the allocated resources.** Return: …

Linux通配符及其在文件搜索和管理中的应用

Linux通配符及其在文件搜索和管理中的应用 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 1. 了解Linux通配符 在Linux系统中,通配符是一种用于匹…

家政小程序的开发,带动市场快速发展,提高家政服务质量

当下生活水平逐渐提高,也增加了年轻人的工作压力,同时老龄化也在日益增加,使得大众对家政的需求日益提高,能力、服务质量高的家政人员能够有效提高大众的生活幸福指数。 但是,传统的家政服务模式存在着效率低、用户与…

慧翰股份毛利率下滑:股权转让纠纷引关注,研发费用率远弱同行还买楼?

《港湾商业观察》施子夫 6月11日,慧翰微电子股份有限公司(以下简称,慧翰股份)IPO注册申请获证监会同意,预计公司将很快登陆深交所创业板,保荐机构为广发证券。 从业绩面来看,过去三年&#xf…

基于X86+FPGA+AI的芯片缺陷检测方案

应用场景 随着半导体技术的发展,对芯片的良率要求越来越高。然而集成电路芯片制造工艺复杂,其制造过程中往往产生很多缺陷,因此缺陷检测是集成电路制造过程中的必备工艺。 客户需求 小体积,低功耗 2 x USB,1 x LAN Core-i平台无…

JavaScript——运算符的优先级和结合性

目录 任务描述 相关知识 运算符的优先级 运算符的结合性 编程要求 任务描述 本关任务:我们将给出函数mainJs()的完整代码,要求在函数体内第三句以及第五句中添加适当的括号,实现编程要求里面的要求。 要想完成本关任务,必须…

一点连接千家银行,YonSuite让“银企对账”一键确认

在当今数智化浪潮下,成长型企业面临着前所未有的机遇与挑战。特别是在与银行的对接以及银企对账等方面,传统的手动操作模式已难以满足企业高效、安全的金融管理需求。用友YonSuite作为一款全场景SaaS应用服务,凭借其强大的银企直联功能&#…

AI在线免费视频工具3:声音生视频

1、声音生视频 Noisee:通过声音生成对应视频,可以增加prompt指定生成内容相关视频 https://noisee.ai/create

【基础篇】第5章 Elasticsearch 数据聚合与分析

在Elasticsearch的庞大功能体系中,数据聚合与分析扮演着至关重要的角色,它使我们能够从海量数据中提炼出有价值的信息,为决策提供依据。本章将深入探讨Elasticsearch的聚合功能,从基本概念到常见类型的实践,让你掌握如…

Elasticsearch 使用误区之二——频繁更新文档

在使用 Elasticsearch 时,频繁更新文档是一种常见误区。这不仅影响性能,还可能导致系统资源的浪费。 理解 Elasticsearch 的文档更新机制对于优化性能至关重要。 关于 Elasticsearch 更新操作,常见问题如下: ——https://t.zsxq.c…

Spring Cloud实战:构建分布式系统解决方案

Spring Cloud实战:构建分布式系统解决方案 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将深入探讨如何使用Spring Cloud来构建分布式系统…

剖析DeFi交易产品之UniswapV4:概述篇

本文首发于公众号:Keegan小钢 UniswapV4 与 UniswapV3 相比,算法上并没有什么改变,依然还是采用集中流动性模型,但架构上变化很大,包括功能架构,也包括技术架构。相比之前的版本,UniswapV4 最大…