系统基础 -- AXI总线协议

ops/2024/12/28 7:09:37/

AXI 总线详解

1. AXI的主要特点

  • 高性能: 支持多主多从架构,可以实现高带宽和低延迟的数据传输。
  • 完全地址分离: 读操作和写操作使用独立的地址通道,支持并发。
  • 高灵活性: 支持非固定地址的突发传输(burst)。
  • 低功耗: 支持稀疏数据传输和动态电源管理。
  • 适配性强: 可用于多种应用场景,包括高性能处理器、高速外设等。

2. AXI的基本结构

AXI 总线的通信通过以下五种通道完成:

  1. 读地址通道(AR,Address Read)
  2. 读数据通道(R,Read Data)
  3. 写地址通道(AW,Address Write)
  4. 写数据通道(W,Write Data)
  5. 写响应通道(B,Write Response)

这五个通道互相独立,可以并行操作。

2.1 通道信号

每个通道包括以下关键信号:

  • 地址信号(ARADDR / AWADDR): 32位或64位宽,用于传输数据的目标地址。
  • 数据信号(RDATA / WDATA): 数据宽度通常为 32/64/128 位,可扩展到更宽。
  • 控制信号:
    • ARBURST / AWBURST: 表示突发类型(如固定地址、递增地址等)。
    • ARLEN / AWLEN: 表示突发的长度(0-15,表示1-16次传输)。
    • ARSIZE / AWSIZE: 表示每次传输的字节数。
  • 响应信号(BRESP / RRESP): 表示传输的结果状态(如成功、错误)。

3. 通道工作原理

3.1 读操作

  1. 主设备在 AR 通道 上发送读地址请求(ARADDR)。
  2. 从设备在接收到请求后,在 R 通道 上发送数据(RDATA)和状态(RRESP)。
  3. 传输完成后,主设备接收所有数据。

3.2 写操作

  1. 主设备在 AW 通道 上发送写地址请求(AWADDR)。
  2. 主设备在 W 通道 上发送写数据(WDATA)。
  3. 从设备在 B 通道 上返回写响应(BRESP),指示操作是否成功。

3.3 突发传输

AXI 支持以下几种突发传输:

  • 固定突发(FIXED): 地址不变,常用于FIFO。
  • 递增突发(INCR): 地址按固定步长递增,常用于存储器。
  • 环形突发(WRAP): 地址递增到设定的边界后,返回起始地址。

4. AXI协议的版本

AXI有多个版本,常用的包括:

  • AXI3: 第一个 AXI 协议版本,支持突发长度为16的传输。
  • AXI4: 增加了对大数据块传输的支持,突发长度增加到256。
  • AXI4-Lite: 精简版 AXI 协议,仅支持单次传输,常用于控制寄存器访问。
  • AXI4-Stream: 专为高速数据流传输设计,主要用于点到点通信。

5. AXI与其他总线协议的对比

特点AXIAHBAPB
地址通道独立
数据宽度支持32/64/128/256+ 位32/64 位8/16/32 位
突发传输支持
高性能场景适用一般

6. 应用场景

  • AXI4: 高性能内存访问,例如 DDR、GPU。
  • AXI4-Lite: 低吞吐量、低复杂度的设备控制。
  • AXI4-Stream: 数据流传输,如视频处理、音频流等。

7. 常见问题

  1. 地址和数据对齐: 地址必须与数据宽度对齐,否则会导致未定义行为。
  2. 传输状态监控: RRESP 和 BRESP 信号用于判断数据是否传输成功。
  3. 多主设备仲裁: 主设备之间可能需要仲裁机制来解决访问冲突。

AXI 总线传输示例及多主仲裁示例

1. AXI 传输示例

场景描述

主设备(Master)需要从从设备(Slave)地址 0x1000_0000 开始读取 4 个字的数据(递增突发)。每次传输的数据宽度为 32 位。

信号交互流程

  1. 读地址传输(AR 通道):

    • Master 发送读地址请求。
      • ARADDR = 0x1000_0000 (起始地址)。
      • ARLEN = 3 (表示 4 次传输,ARLEN+1)。
      • ARSIZE = 2 (每次传输 4 字节,即 32 位)。
      • ARBURST = INCR (递增突发)。
    • Slave 接收地址请求并准备数据。
  2. 数据传输(R 通道):

    • Slave 将数据传给 Master,数据宽度为 32 位:
      • RDATA = 0x12345678RRESP = OKAY
      • RDATA = 0x9ABCDEF0RRESP = OKAY
      • RDATA = 0x13579BDFRRESP = OKAY
      • RDATA = 0x2468ACE0RRESP = OKAY
    • Slave 在最后一个数据时设置 RLAST = 1,表示传输结束。

信号时序图(简化)

时钟周期ARADDRARLENRDATARRESPRLAST
10x100000003---
2--0x12345678OKAY0
3--0x9ABCDEF0OKAY0
4--0x13579BDFOKAY0
5--0x2468ACE0OKAY1

2. 多主仲裁示例

场景描述

系统中存在两个主设备(Master 0 和 Master 1),它们同时尝试访问同一个从设备的不同地址:

  • Master 0 需要写入地址 0x2000_0000
  • Master 1 需要读取地址 0x2000_0010

仲裁规则

假设仲裁器采用轮询调度(Round-Robin)的方式,优先处理 Master 0,然后处理 Master 1。

信号交互流程

  1. 仲裁器分配总线给 Master 0:

    • 仲裁器检测到 Master 0 和 Master 1 都发出请求,但优先选择 Master 0。
    • Master 0 开始发送写请求:
      • AWADDR = 0x2000_0000AWLEN = 0AWSIZE = 2
      • WDATA = 0xDEADBEEF
    • Slave 接收写数据后,通过 B 通道返回写响应(BRESP = OKAY)。
  2. 仲裁器分配总线给 Master 1:

    • 仲裁器在 Master 0 的操作完成后切换到 Master 1。
    • Master 1 开始发送读请求:
      • ARADDR = 0x2000_0010ARLEN = 0ARSIZE = 2
    • Slave 在 R 通道上返回读取的数据(RDATA = 0x12345678,RRESP = OKAY)。

信号时序图(简化)

时钟周期MasterARADDR / AWADDRRDATA / WDATARESPRLAST
1Master 00x20000000 (Write)0xDEADBEEFOKAY-
2Master 10x20000010 (Read)0x12345678OKAY1

总结

  • AXI传输: AXI 的分离通道架构允许高效的并行数据传输,支持读写并发。
  • 多主仲裁: 仲裁器在多主设备竞争时决定谁优先访问总线。采用合理的仲裁策略(如轮询、优先级调度)可以避免资源争用引发的问题。

http://www.ppmy.cn/ops/145599.html

相关文章

HDLBits训练4

时间&#xff1a;2024.12.23 Dff8ar 代码 注意敏感信号的写法 module top_module (input clk,input areset, // active high asynchronous resetinput [7:0] d,output [7:0] q );always(posedge clk or posedge areset)beginif(areset) q<8b0;else q<d;end endmodul…

FileLink为企业打造了一站式的跨网安全文件共享解决方案

在现代企业信息化建设中&#xff0c;内外网隔离已成为保障网络安全的重要手段。然而&#xff0c;这种隔离也带来了文件共享的诸多难题。如何在确保安全的前提下&#xff0c;实现高效、便捷的文件流通&#xff1f;FileLink 内外网文件共享平台应运而生&#xff0c;为企业打造了一…

LSTM实现天气模型训练与预测

要实现一个天气预测的模型&#xff0c;并确保该模型可以反复进行训练和更新&#xff0c;先设计&#xff1a; 设计方案 数据获取&#xff1a; 使用公开的天气数据API&#xff08;例如OpenWeather API或其他类似的API&#xff09;获取天气数据。确保数据以合适的格式&#xff08…

抖音小程序登录(前端通过tt.login获取code换取openId)

抖音小程序登录 抖音开放平台小程序登录&#xff1a; https://developer.open-douyin.com/docs/resource/zh-CN/mini-app/develop/tutorial/basic-ability/microapp-login 前端(通过tt.login获取code) 流程 静默登录依赖小程序 API tt.login&#xff0c;把tt.loginsuccess 回调…

PDF书籍《手写调用链监控APM系统-Java版》第7章 插件与链路的结合:Tomcat插件实现

本人阅读了 Skywalking 的大部分核心代码&#xff0c;也了解了相关的文献&#xff0c;对此深有感悟&#xff0c;特此借助巨人的思想自己手动用JAVA语言实现了一个 “调用链监控APM” 系统。本书采用边讲解实现原理边编写代码的方式&#xff0c;看本书时一定要跟着敲代码。 作者…

Milvus×EasyAi:如何用java从零搭建人脸识别应用

如何从零搭建一个人脸识别应用&#xff1f;不妨试试原生Java人工智能算法&#xff1a;EasyAi Milvus 的组合拳。 本文将使用到的软件和工具包括&#xff1a; EasyAi&#xff1a;人脸特征向量提取Milvus&#xff1a;向量数据库用于高效存储和检索数据。 01. EasyAi&#xff1a;…

Qt存储大整数到`JsonValue`

原文链接&#xff1a;【Qt】Qt存储大整数到JsonValue【2023.08.01】_在qt中,当您将一个uint64数据存储为qjsonvalue,如果该数据超出了javascript-CSDN博客 Qt存储大整数到JsonValue 简介 我负责的需求是这样&#xff0c;存储文件绝对路径和文件大小到json字符串。格式如下&…

探寻 OneCode 核心优势:MVVM 进阶与前后端协同之魅

在当今的软件开发领域&#xff0c;高效、可维护且功能强大的架构是开发者们不懈追求的目标。OneCode 凭借其独特的增强版 MVVM 架构、前后端一体化特性&#xff0c;以及创新的技术如 OneCode DSM&#xff08;Domain-Specific Modeling&#xff0c;领域特定建模&#xff09;、视…