AXI接口简介

本文详细介绍了AXI(高级可扩展接口)的分类,如AXI4、AXI4-Lite和AXI4-Stream,以及它们在存储器映射和数据流通信中的应用。还探讨了AXISmartConnect和AXIInterconnectIP核的区别,以及AXI4读写操作的特性。此外,文章涵盖了接口规范、时序图等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、什么是AXI

(一)简介

AXI:高级可扩展接口,是ARM,AMBA的一部分

AMBA:是由ARM公司定义的一种高级微控制器总线架构;开放的片内互联总线标准,提供一种用于系统-on-chip(SoC)设计的通用、高性能、可扩展的总线架构,以便于不同的处理器、外设和其他硬件组件之间的通信和协作。

(二)分类

AXI4(AXI4-Full): 用于高性能的存储器映射需求

        (存储器映射:主机对从机进行读写操作时,指定一个目标地址,这个地址对应系统存储空间的地址,表示对该空间进行读写操作)

AXI4-Lite: 简化版AXI4,低吞吐率存储器映射通信

AXI4-Stream(AXI4-ST): 用于高速的流数据通信

通过DMA可以实现AXI4数据流通信到存储器映射的转换

(三)优势

  • 高效性:只需要学习一个IP核
  • 灵活性:AXI4仅使用一个地址阶就允许高达256个数据传输周期的高吞吐量。AXI4-Lite占据很小的逻辑空间,但突发长度仅为1。AXI-Stream无需指定地址,不限制突发长度,不属于存储器映射。

(四)工作方式

AXI4和AXI4-Lite包含5个独立通道:主机对从机的读地址通道,写地址通道,写数据通道,读数据通道,写响应通道

二、AXI SmartConnect 与 AXI Interconnect IP核

都可以将一个或多个AXI内存映射的主设备连接到一个或多个内存映射的从设备。

如果系统较为简单,对总线连接的定制需求不高,AXI SmartConnect 可能是一个更便捷的选择。而对于需要更精细控制和定制的系统,AXI Interconnect 则提供了更多的灵活性和配置选项。通常,AXI Interconnect 更适用于大型、复杂的 SoC 设计,而 AXI SmartConnect 则适用于相对简单的连接场景。

三、AXI4读写操作

AXI4: 由于读写操作是分离的,因此支持双向同时传输.最大突发长度为256("突发长度"(burst length)指的是在一个AXI事务中一次性传输的数据元素数量)

AXI4-Lite:与AXI4类似,但是不支持突发传输

AXI4-Stream:只有一个单一的通道,和AXI4写数据通道相似。突发长度不受限制

突发长度是指单词所传输的数据个数,突发大小是指传输的每个数据位宽大小

(一)读

(二)写

四、协议规范

对于5个独立的通道,每个通道都包含一组信息信号,VALID信号和READY信号,用于提供双向的握手机制。

对于数据的源端用VAILD信号去表示地址,数据和控制信号就绪,终端使用READY去表示自己可以接受数据。在最后一个传输的数据后,写数据通道和读数据通道的最后都有一个LAST信号。

读数据通道和写数据通道都包含各自的地址通道,地址通道包含了携带了请求所需的地址和信息。

读数据通道由从机发送给主机,包含了读数据和读响应的信息,读响应信号用于表示读传输是否完成

而写数据通道是由主机发送给从机,包含了写数据,通过频闪信号WSTRB来表示当前数据的哪个字节有效

写响应通道是由从机发送给主机,当前写操作完成后,从机向主机发送该信号

(一)写地址信号通道

(二)写数据信号通道

(三)写响应信号通道

关于读写的响应信号,有以下种类:

(四)读地址信号通道

(五)读数据信号通道

五、接口介绍

(1)时钟采用全局时钟,上升沿采样

(2)复位信号低电平有效,此时主机的ARVALID,AWVALID和WVALID信号为低电平,从机的RVALID和BVALID为低电平,其他信号可以为任意值

(3)握手处理。只有当VALID和READY都为高电平时,信号才可以传输

六、时序图

(一)突发读

(二)突发写

###本文参考正点原子视频,仅用于自己学习复习,如有侵权,请联系删除

###协议文件可私信获取

### Aurora AXI 接口概述 Aurora AXI 接口是在 FPGA 设计中实现高速数据传输的关键组件之一。该接口允许 PCIe 与 Aurora IP 进行高效的数据交换,通过AXI总线协议来简化硬件设计并提高互操作性[^1]。 具体来说,在FPGA设计环境中: - **AXI 总线架构**:AXI (Advanced eXtensible Interface) 是一种高性能、高带宽和低延迟的片上互联标准。它支持多种工作模式,包括读写分离通道以及突发传输特性。 - **PCIe 模块集成**:为了使 PCI Express 能够无缝对接到 Aurora 协议栈,通常会采用专门针对此目的优化过的硬核或软核IP模块。这些模块可以处理物理层PHY功能,并提供给用户逻辑部分一个易于使用的寄存器映射空间来进行配置管理等操作。 - **Aurora IP 配置**:Aurora IP 提供了一种灵活的方法来建立两个端点间的可靠链路。其内部包含了编码解码单元、弹性缓冲区以及其他必要的控制机制以确保数据包能够无误地到达目的地。当涉及到多条独立信道或多Gbps级别的吞吐量需求时尤为有用。 #### 实现示例 下面是一个简单的 Verilog 代码片段展示如何实例化 Aurora 和 PCIe 的 AXI 接口连接: ```verilog // 定义顶层模块参数 module top_module ( input wire aclk, input wire aresetn, // PCIe AXI 接口信号定义 output reg [31:0] m_axi_awaddr, // 地址写入请求地址 output reg m_axi_awvalid, // 写地址有效指示符 input wire m_axi_awready, // 写地址准备好响应 ... ); // 创建 Aurora 实例 aurora_8b10b aurora_inst( .gtrefclk(gtrefclk), .areset(areset), // 其他 Aurora 端口... // 对接至 AXI接口 .axis_tx_tdata(axis_tx_tdata), .axis_tx_tkeep(axis_tx_tkeep), .axis_tx_tlast(axis_tx_tlast), .axis_tx_tvalid(axis_tx_tvalid), .axis_tx_tready(axis_tx_tready), .axis_rx_tdata(axis_rx_tdata), .axis_rx_tkeep(axis_rx_tkeep), .axis_rx_tlast(axis_rx_tlast), .axis_rx_tvalid(axis_rx_tvalid), .axis_rx_tready(axis_rx_tready) ); endmodule ``` 上述代码展示了基本框架下如何将 Aurora IP 中的 AXIS(AXI Stream)流接口同外部设备相连的方式。实际应用过程中还需要考虑更多细节如时钟域转换等问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值