AXI-stream总线简介-LDD

本节介绍的AXI是个什么东西呢,它其实不属于Zynq,不属于Xilinx,而是属于ARM。它是ARM最新的总线接口,以前叫做AMBA,从3.0以后就称为AXI了。

Zynq是以ARM作为核心的,运行时也是第一个“醒”过来,然后找可执行代码,找到后进入FSBL(第一引导阶段),接着找配置逻辑部分的bit文件,找到后就叫醒PL按照bit中的方式运行,再接着找可执行代码,进入SSBL(第二引导阶段),这时就可以初始化操作系统的运行环境,引导像Linux这样的大型程序,随后将控制权交给Linux。Linux运行时可以跟PL进行数据交互。注意了,就在这时候,数据交互的通路,就是我们本节要讲的AXI总线。

说白了,AXI就是负责ARM与FPGA之间通信的专用数据通道。

ARM内部用硬件实现了AXI总线协议,包括9个物理接口,分别为AXI-GP0~AXI-GP3,AXI-HP0~AXI-HP3,AXI-ACP接口。如下图黄圈所示。

可以看到,只有两个AXI-GP是Master Port,即主机接口,其余7个口都是Slave Port(从机接口)。主机接口具有发起读写的权限,ARM可以利用两个AXI-GP主机接口主动访问PL逻辑,其实就是把PL映射到某个地址,读写PL寄存器如同在读写自己的存储器。其余从机接口就属于被动接口,接受来自PL的读写,逆来顺受。

这9个AXI接口性能也是不同的。GP接口是32位的低性能接口,理论带宽600MB/s,而HP和ACP接口为64位高性能接口,理论带宽1200MB/s。

有人会问,为什么高性能接口不做成主机接口呢?这样可以由ARM发起高速数据传输。答案是高性能接口根本不需要ARM CPU来负责数据搬移,真正的搬运工是位于PL中的DMA控制器。

位于PS端的ARM直接有硬件支持AXI接口,而PL则需要使用逻辑实现相应的AXI协议。Xilinx提供现成IP如AXI-DMA,AXI-GPIO,AXI-Datamover都实现了相应的接口,使用时直接从XPS的IP列表中添加即可实现相应的功能。

有时,用户需要开发自己定义的IP同PS进行通信,这时可以利用XPS向导生成对应的IP。xps中用户自定义IP核可以拥有AXI-Lite,AXI4,AXI-Stream,PLB和FSL这些接口。

后两种由于ARM这一端不支持,所以不用。

AXI-Lite具有轻量级,结构简单的特点,适合小批量数据、简单控制场合。不支持批量传输,读写时一次只能读写一个字(32bit)。

AXI4接口和AXI-Lite差不多,只是增加了一项功能就是批量传输,可以连续对一片地址进行一次性读写。

上面两种均采用内存映射控制方式,即ARM将用户自定义IP编入某一地址进行访问,读写时就像在读写自己的片内RAM,编程也很方便,开发难度较低。代价就是资源占用过多,需要额外的读地址线、写地址线、读数据线、写数据线、写应答线这些信号线。

另外一种AXI接口就是AXI-Stream,这是一种连续流接口,不需要地址线(很像FIFO,一直读或一直写就行)。对于这类IP,ARM不能通过上面的内存映射方式控制(FIFO根本没有地址的概念),必须有一个转换装置,例如AXI-DMA模块来实现内存映射到流式接口的转换。

AXI-Stream适用的场合有很多:视频流处理;通信协议转换;数字信号处理;无线通信等。其本质都是针对数值流构建的数据通路,从信源(例如ARM内存、DMA、无线接收前端等)到信宿(例如HDMI显示器、音频输出等)构建起连续的数据流。这种接口适合做实时信号处理。

有了上面的这些官方IP和向导生成的自定义IP,用户其实不需要对AXI时序了解太多(除非确实遇到问题),因为Xilinx已经将和AXI时序有关的细节都封装起来,用户只需要关注自己的逻辑实现即可

AXI4-Stream协议是一种用来连接需要交换数据的两个部件的标准接口,它可以用于连接一个产生数据的主机和一个接受数据的从机。当然它也可以用于连接多个主机和从机。该协议支持多种数据流使用相同共享总线集合,允许构建类似于路由、宽窄总线、窄宽总线等更为普遍的互联。AXI4-Stream接口的信号线定义如图1所示[1]

比较重要的信号线有:

ACLK为时钟线,所有信号都在ACLK上升沿被采样;

ARESETn为复位线,低电平有效;

TVALID为主机数据同步线,为高表示主机准备好发送数据;

TREADY为从机数据同步线,为高表示从机准备好接收数据;这两根线完成了主机与从机的握手信号,一旦二者都变高有效,数据传输开始。

TDATA为数据线,主机发送,从机接收。

TKEEP为主机数据有效指示,为高代表对应的字节为有效字节,否则表示发送的为空字节。

TLAST为主机最后一个字指示,下一clk数据将无效,TVALID将变低。

TID,TDEST,TUSER均为多机通信时的信号,这里不涉及,不予考虑。

看到这里,可能大家都还对Stream没有一个直观的认识。其实Stream并不陌生,在我们学c++编程时,一定会包含<iostream>,这样就可以完成控制终端对程序的输入输出了。如果还是不够直观,想象一下连续不断的水流,永远向着一个方向以固定的速度输送的接口。以我们看视频为例,视频文件本来是保存在硬盘里的,怎么播放呢,不能一下子把整个文件都显示到屏幕上,而是以一定的速度,连续不断地输出到屏幕上(每秒30~60帧),这个过程就是流Stream接口完成的。

Xilinx提供的流式IP核有很多用途,可以实现音频流、视频流、数据流到内存或者相反方向的传输。有人问了,内存是PS控制的,怎么才能把PS里DDR2的内容以Stream形式发出去呢(例如以固定速度送往DA,完成信号发生器的设计)?答案就是利用AXI总线做转换。ZYNQ的PS部分是ARM CortexA9系列,支持AXI4,AXI-Lite总线。PL部分也有相应AXI总线接口,这样就能完成PS到PL的互联。仅仅这样还不够,需要PL部分实现流式转换,即AXI-Stream接口实现。Xilinx提供的从AXI到AXI-Stream转换的IP核有:AXI-DMA,AXI-Datamover,AXI-FIFO-MM2S以及AXI-VDMA等。这些IP核可以在XPS的IP Catalog窗口中看到。

AXI-DMA:实现从PS内存到PL高速传输高速通道AXI-HP到AXI-Stream的转换;

AXI-FIFO-MM2S:实现从PS内存到PL通用传输通道AXI-GP到AXI-Stream的转换;

AXI-Datamover:实现从PS内存到PL高速传输高速通道AXI-HP到AXI-Stream的转换,只不过这次是完全由PL控制的,PS是完全被动的;

AXI-VDMA:实现从PS内存到PL高速传输高速通道AXI-HP到AXI-Stream的转换,只不过是专门针对视频、图像等二维数据的。

除了上面的还有一个AXI-CDMAIP核,这个是由PL完成的将数据从内存的一个位置搬移到另一个位置,无需CPU来插手。这个和我们这里用的Stream没有关系,所以不表。

这里要和大家说明白一点,就是AXI总线和接口的区别。总线是一种标准化接口,由数据线、地址线、控制线等构成,具有一定的强制性。接口是其物理实现,即在硬件上的分配。在ZYNQ中,支持AXI-Lite,AXI4和AXI-Stream三种总线,但PS与PL之间的接口却只支持前两种,AXI-Stream只能在PL中实现,不能直接和PS相连,必须通过AXI-Lite或AXI4转接。PS与PL之间的物理接口有9个,包括4个AXI-GP接口和4个AXI-HP接口、1个AXI-ACP接口,均为内存映射型AXI接口。

上面的IP是完成总线协议转换,如果需要做某些处理(如变换、迭代、训练……),则需要生成一个自定义Stream类型IP,与上面的Stream接口连接起来,实现数据输入输出。用户的功能在自定义Stream类型IP中实现。

AXI总线的一些知识相关推荐

  1. 基于 PYNQ 的 AXI 总线主从控制编写(ddr3的读写)

    菜鸟一枚,最近也学习了关于 AXI 总线的相关知识.基于 PYNQ 编写了一个简单的 AXI 主从控制(牵涉到 DDR3 的读写). 设计目的 设计出以下一个通过 AXI 总线连接的简单片上系统.包含 ...

  2. AXI总线学习(AXI34)

    AXI总线学习 AXI协议的主要特征 主要结构 通道定义 读写地址通道 读数据通道 写数据通道 写操作回应信号 接口和互联 寄存器片 基本传输 Read burst Overlapping read ...

  3. AXI总线之AXI-LITE总线分析与实现

    AXI是由ARM公司提供的一种总线协议,Xilinx从6系列的FPGA开始对AXI总线提供支持,现如今已经发展到AXI4这个版本.在Xilinx的ZYNQ系列中,AXI是经常用的一种接口.AXI有3个 ...

  4. AXI总线之AXI FULL总线分析与实现

    一.AXI总线简介 AXI是AMBA中一个新的高性能协议.AXI技术丰富了现有的AMBA标准内容,满足超高性能和复杂的片上系统(Soc)设计的需求.AXI特点:单向通道体系结构.信息流只以单方向传输, ...

  5. AXI DMA测试-AXI总线最后一章

    AXI DMA测试 增加一个AXIDMA章节,这部分内容是很多例程的基础,难度不大但是也不小,需要彻底理解整个运行机制. 图4‑61 测试框图 处理器通过M_AXI_GP0接口和AXI_DMA通信,以 ...

  6. AXI总线学习-------从零开始详细学-------------连载(8)读数据通中字节通路,narrow transfer

    AXI总线学习连载(8) 鲁迅曾经说过: 学硬件,不是学哪里查哪里,有一些东西是必须系统的学的,不管是嵌入式还是FPGA,硬件学习的积累一定要是系统的. 我也曾经说过: 英文手册非常重要,这是学习硬件 ...

  7. ZYNQ AXI总线 PS与PL内部通信(用户自定义IP)

    ZYNQ .AXI协议.PS与PL内部通信  三种AXI总线分别为: AXI4:(For high-performance memory-mapped requirements.)主要面向高性能地址映 ...

  8. AXI_01 《AXI总线系列文章》由来

    笔者从学习ZYNQ开始接触AXI总线,绝大多数学习ZYNQ的资料中都是从定义一个简单的自定义IP核开始的,设计一个通过PS端ARM,写一段C代码通过AXI总线读写自定义IP核的寄存器,来完成LED流水 ...

  9. (13)ZYNQ AXI总线应用范围(学无止境)

    0 AXI协议应用 ZYNQ FPGA中PL与PS交互接口为AXI接口,AXI接口按照协议分类,可以分为AXI4总线.AXI4-Lite.AXI4-Stream. 1 AXI4总线简介 (For hi ...

  10. (125)FPGA面试题-熟悉AXI总线吗,介绍AXI

    1.1 FPGA面试题-熟悉AXI总线吗,介绍AXI 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题-熟悉AXI总线吗,介绍AXI: 5)结束语. 1.1 ...

最新文章

  1. java 正则_认识正则表达式(Java语言基础)
  2. 创新课程管理系统数据库设计心得
  3. java 大数据处理一
  4. 数据仓库入门(实验7)部署分析服务数据库
  5. static_cast
  6. C#-利用Marshal类实现序列化
  7. linux oracle11g客户端安装
  8. 2.在窗口中添加按钮
  9. ACE网络编程思考(二)
  10. [USACO06DEC]The Fewest Coins G(混合背包)
  11. 为什么VS2019的解决方案资源管理器中的文件名和文件夹名里的下划线不显示?
  12. Scrach基本概念与操作
  13. iTop-4412 裸机程序(十七)- 按键介绍
  14. 使用windows远程桌面连接复制拷贝远程电脑上文件到本地的方法
  15. 美国大学本科计算机本科排名,2017美国大学计算机排名本科
  16. 二叉树的中序遍历,前序遍历,后序遍历
  17. 浅谈资金发展投资行业的发展路径
  18. 事务的概念以及事物的四大特性
  19. vol.132 《流浪地球》带火了中国科幻?(嘉宾:郑军)
  20. 华米的“脱米后遗症”

热门文章

  1. 电脑装机必备软件清单
  2. 13.设计模式--外观模式(Facade模式)
  3. 使用rmmod无法卸载驱动,强制卸除的两种方法
  4. java:换行符“\n”
  5. ogg是什么格式的文件后缀
  6. java判断字符是否为0_Java判断字符串是否为空
  7. rgb灯珠电路图_rgb led灯变色原理详解_RGB三基色LED变色程序
  8. 安装的时候出现SPSS中can not create java virtual machine问题怎么办
  9. 行政区划代码2020(SQL)--(上)
  10. 全网音乐下载,抖音热歌、无损音乐下载