0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

AXI4 、 AXI4-Lite 、AXI4-Stream接口

FPGA之家 来源:FPGA之家 作者:FPGA之家 2022-07-04 09:40 次阅读


第一次接触AXI 4 总线是在使用xilinx zynq的时候,当时用的时候一团雾水,现在雾水少了些,但还是有很多地方没有接触到。本文作为自己的总结,有任何问题,欢迎批评指正。

什么是AXI总线?

AXI 作为 ARM AMBA 微控制器总线的一部分,第一次出现在AMBA 3.0中。后面AMBA 4.0发布,AXI4出现了。

AXI 4总线和别的总线一样,都用来传输bits信息(包含了数据或者地址)。AXI4总线有三种类型,分别是AXI4、AXI4-Lite、AXI4-Stream。

AXI4 是一种高性能memory-mapped总线,AXI4-Lite是一只简单的、低通量的memory-mapped 总线,而 AXI4-Stream 可以传输高速数据流。从字面意思去理解,AXI4-Lite是AXI4的轻量版。这里保留了memory-mapped的写法,主要是为了与AXI4-Stream区分开。

memory-mapped 可以这样去理解,假设有master A , 和 slave B, A与B通过AXI4或者AXI4-Lite连接通讯,A可以把B这个外设看作A上的某个地址。当A向B传输数据时,就等同于A向这个地址传输数据。

AXI4-Stream与AXI4、AXI4-Lite不同, 它不需要地址通道。

AXI4 、 AXI4-Lite 、AXI4-Stream接口

AXI4 和 AXI4-Lite接口包含5个不同的通道:两个读通道和三个写通道。

两个读通道:读地址通道(read address channel)、读数据通道(read data channel);

三个写通道:写地址通道(write address channel)、写数据通道(write data channel)、写响应通道(write response channel);

7b6a5bba-fb2e-11ec-ba43-dac502259ad0.jpg

AXI4读通道操作 图片源自参考[1]

7b7e80a4-fb2e-11ec-ba43-dac502259ad0.jpg

AXI4 写通道操作 图片源自参考[1]

读通道和写通道是分开的,因此可以完成数据的双向传输。此外AXI4能够实现burst传输,换句说就是,可以在一个地址后传输多个数据,最多可以达256 字节。AXI4-Lite不支持burst传输。

AXI4-Stream 只有一个通道,不需要地址,可以burst 传输无限的数据。

常见的辅助IP

AXI Interconnect IP 和AXI SmartConnect IP :

上文提到AXI4 和 AXI4-Lite采用了memory-mapped 的方式,无论是1个master和1个slave、1个master和N个slave、N个master和1个slave、N个master和M个slave,采用这两个ip能帮助我们完成映射。

AXI FIFOs :

缓存数据,或者跨时钟域时有用。

AXI Direct Memory Access (DMA) engines

当我们有一个AXI4-stream接口的IP想与AXI4接口的IP相连时,可以通过AXI DMA完成转换。

ZYNQ上的AXI接口

7be432f0-fb2e-11ec-ba43-dac502259ad0.jpg

图片源自 zynq 7 processing system ip

zynq的ps上共留了9个AXI接口,其中两个GP AXI master、两个GP AXI slave、四个HP AXI slave、以及一个ACP AXI slave。

这些接口都是AXI3类型的,但使用AXI4-Lite、AXI4 的IP仍然可以与这些接口通讯,因为在实际使用中,软件会使用AXI Interconnect ip帮助我们完成接口的转换。

主要参考

[1] ug1037-vivado-axi-reference-guide

[2] ug585-Zynq-7000-TRM

AXI4-Stream在AXI4家族中相对来说比较简单,接下来主要回答两个问题:

(1)AXI4-Stream 传输的数据流都包含什么?

(2)AXI4-Stream 的接口信号有哪些?master和slave是如何握手的?

数据流

AXI4-Stream传输的数据流包含三种类型:data type、position type、null type。

data type是最有意义的数据;position type 作为占位符使用,可以用来表征date type 的相对位置,null type不包含任何有用的信息。

数据流的结构可以有很多种,例如:可以只传数据,也即都是data type,不包含position type和null type;也可以将data type 和 null type 混着传输;还可以将position type 和 data type混着传输。当然,三者混着传输也没有问题。

7c20b888-fb2e-11ec-ba43-dac502259ad0.jpg

全都是data type

7c34f1cc-fb2e-11ec-ba43-dac502259ad0.jpg

data type 和 position type 混搭

那么问题来了,数据流传输类型有三种,在传输的过程中如何分辨这三种类型呢?AXI4-Stream的接口信号可以帮助我们进行区分,接下来看看都有哪些接口信号。

接口信号

先来一图尽览:

7c6eebe8-fb2e-11ec-ba43-dac502259ad0.jpg

ACLK和ARESETn信号,不必多说,时钟和复位信号;

接下来是TVALID和TREADY信号,这两个信号作为握手信号,分别从master 和 slave发出。如何握手呢?想想一下,你和别人握手的过程,大概分为三个阶段:双方心里进行某种心理活动、伸手、握手上下抖动;AXI4-Stream上握手也大体经历这三个过程。

(1)双方心里进行某种心理活动:相当于 master 和 slave 在自己内部搞事情,搞完自己的事情才能闲下来去握手,master搞完事情发出 TVALID high 信号,slave 搞完事情发出TREADY high 信号。

(2)伸手的过程其实比较讲究,现实生活中也是。你和别人握手,可能对方先伸手、也可能你先伸手、也可能你俩同时伸手。master和slave也是如此,可能 TVALID high 信号比TREADY high 早,可能TVALID比TREADY晚,也可能同时出现。

(3)握手上下抖动:当你们两个都抬起了手,接下来就是隆重的握手阶段,在握手的时候,你可以感受到对方的手那么有力量......master和slave在TVALID 和 TREADY同为高时开始传输数据。

7c81d53c-fb2e-11ec-ba43-dac502259ad0.jpg

TVALID 先高为敬

7c9fd762-fb2e-11ec-ba43-dac502259ad0.jpg

TREADY 先高为敬

7cba392c-fb2e-11ec-ba43-dac502259ad0.jpg

TVALID TREADY 同时变高

TDATA不多说了,它就是数据流。前文中提到在数据流中有三种类型,分别为data type、position type和null type,那么在传输的时候如何区分呢?要靠TKEEP和TSTRB。

为了便于说明,假设n为数据总线的字节数,即TDATA的字节数,可以把TDATA表示为TDATA[(8*n-1):0],TKEEP和TSTRB有n位,和TDATA上的每个字节一一对应,二者共同表示TDATA上每个字节的类型。举个例子,n = 2、TDATA = 0x0036、TKEEP = 2'b01、 TSTRB= 2'b01。由于TKEEP和TSTRB高位为0,那么TDATA的高阶字节为null type;由于TKEEP和TSTRB地位为1,那么TDATA的低阶字节为data type。

有一点需要注意,TKEEP为0、TSTRB为1的情况是不能使用的。

7ccea402-fb2e-11ec-ba43-dac502259ad0.jpg

TKEEP 和 TSTRB 表示数据流中字节类型

TLAST信号,用来表示一个包的结尾。例如发送大小为32字节的包,在发送第32个字节的时候,可以把TLAST信号拉高,来表示这个包发送完了。

TID和TDEST信号:当我们在同一个接口传输不同数据流时有用,一般来讲,AXIS4-Stream Interconnect Core IP可以帮助我们完成这个过程。TUSER信号用来传输一些额外的信息。

参考

[1] ug1037-vivado-axi-reference-guide.pdf

[2] IHI0051A_amba4_axi4_stream_v1_0_protocol_spec.pdf

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    7542

    浏览量

    151316
  • AXI总线
    +关注

    关注

    0

    文章

    66

    浏览量

    14261

原文标题:从零学习AXI4总线

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Zynq中AXI4-LiteAXI-Stream功能介绍

    Zynq中AXI4-Lite功能 AXI4-Lite接口AXI4的子集,专用于和元器件内的控制寄存器进行通信。AXI-Lite允许构建简单
    的头像 发表于 09-27 11:33 8893次阅读
    Zynq中<b class='flag-5'>AXI4-Lite</b>和<b class='flag-5'>AXI-Stream</b>功能介绍

    AXI VIP设计示例 AXI接口传输分析

    赛灵思 AXI Verification IP (AXI VIP) 是支持用户对 AXI4AXI4-Lite 进行仿真的 IP。它还可作为 A
    发表于 07-08 09:24 1793次阅读

    XILINX FPGA IP之AXI Traffic Generator

    AXI Traffic Generator IP 用于在AXI4AXI4-Stream互连以及其他AXI4系统外设上生成特定序列(流量)。它根据IP的编程和选择的操作模式生成各种类型
    的头像 发表于 11-23 16:03 2557次阅读
    XILINX FPGA IP之<b class='flag-5'>AXI</b> Traffic Generator

    AMBA 4 AXI4AXI4-LiteAXI4-流协议断言用户指南

    您可以将协议断言与任何旨在实现AMBA®4 AXI4接口一起使用™, AXI4 Lite™, 或AXI
    发表于 08-10 06:39

    AXI4接口协议的基础知识

    AXI-4 Memory Mapped也被称之为AXI-4 Full,它是AXI4接口协议的基础,其他AXI4
    的头像 发表于 09-23 11:20 6055次阅读
    <b class='flag-5'>AXI4</b><b class='flag-5'>接口</b>协议的基础知识

    一文详解ZYNQ中的DMA与AXI4总线

    在ZYNQ中,支持AXI-LiteAXI4AXI-Stream三种总线,但PS与PL之间的接口却只支持前两种,AXI-Stream只能在
    的头像 发表于 09-24 09:50 5293次阅读
    一文详解ZYNQ中的DMA与<b class='flag-5'>AXI4</b>总线

    ZYNQ中DMA与AXI4总线

    接口的构架 在ZYNQ中,支持AXI-LiteAXI4AXI-Stream三种总线,但PS与PL之间的接口却只支持前两种,
    的头像 发表于 11-02 11:27 4330次阅读
    ZYNQ中DMA与<b class='flag-5'>AXI4</b>总线

    AXI-Stream代码

    AXI-Stream代码详解 AXI4-StreamAXI4的区别在于AXI4-Stream没有ADDR接口,这样就不涉及读写数据的概念了
    的头像 发表于 11-05 17:40 3541次阅读
    <b class='flag-5'>AXI-Stream</b>代码

    关于AXI4-Stream协议总结分享

    XI4-StreamAXI4的区别就是AXI4-Stream去除了地址线,这样就不涉及读写数据的概念了,只有简单的发送与接收说法,减少了延时。由于AXI4-Stream协议(amba
    的头像 发表于 06-23 10:08 2303次阅读

    AXI4-Stream Video 协议和AXI_VDMA的IP核介绍

    本文主要介绍关于AXI4-Stream Video 协议和AXI_VDMA的IP核相关内容。为后文完成使用带有HDMI接口的显示器构建图像视频显示的测试工程做准备。
    的头像 发表于 07-03 16:11 8327次阅读

    如何在Vitis HLS中使用C语言代码创建AXI4-Lite接口

    您是否想创建自己带有 AXI4-Lite 接口的 IP 却感觉无从着手?本文将为您讲解有关如何在 Vitis HLS 中使用 C 语言代码创建 AXI4-Lite 接口的基础知识。
    的头像 发表于 07-08 09:40 1815次阅读

    AMBA协议规范解析

    发,同时提高部分功能模块工作性能,集成的IP通常采用业界比较规范的总线协议,完成功能处理和数据传输。目前,常用的IP基本上均提供AXI4AXI4-LiteAXI4-Stream接口
    的头像 发表于 05-04 14:51 1809次阅读
    AMBA协议规范解析

    Xilinx FPGA AXI4总线(一)介绍【AXI4】【AXI4-Lite】【AXI-Stream

    从 FPGA 应用角度看看 AMBA 总线中的 AXI4 总线。
    发表于 06-21 15:21 2269次阅读
    Xilinx FPGA <b class='flag-5'>AXI4</b>总线(一)介绍【<b class='flag-5'>AXI4</b>】【<b class='flag-5'>AXI4-Lite</b>】【<b class='flag-5'>AXI-Stream</b>】

    LogiCORE IP AXI4-Stream FIFO内核解决方案

    LogiCORE IP AXI4-Stream FIFO内核允许以内存映射方式访问一个AXI4-Stream接口。该内核可用于与AXI4-Stream IP
    的头像 发表于 09-25 10:55 1470次阅读
    LogiCORE IP <b class='flag-5'>AXI4-Stream</b> FIFO内核解决方案

    FPGA通过AXI总线读写DDR3实现方式

    AXI总线由一些核心组成,包括AXI主处理器接口AXI4)、AXI处理器到协处理器接口
    发表于 04-18 11:41 1258次阅读