(一)AXI接口

如何设计高效的 PL 和 PS 数据交互通路是 ZYNQ 芯片设计的重中之重。AXI 全称 Advanced eXtensible Interface,是 Xilinx 从 6 系列的 FPGA 开始引入的一个接口协议,主要描述了主设备和从设备之间的数据传输方式。在 ZYNQ 中继续使用,版本是 AXI4,所以我们经常会看到 AXI4.0, ZYNQ 内部设备都有 AXI 接口。其实 AXI 就是 ARM 公司提出的AMBA(Advanced Microcontroller Bus Architecture)的一个部分,是一种高性能、高带宽、低延迟的片内总线。

AXI 协议主要描述了主设备和从设备之间的数据传输方式,主设备和从设备之间通过握手信号建立连接。当从设备准备好接收数据时,会发出 READY 信号。当主设备的数据准备好时,会发出和维持 VALID 信号,表示数据有效。数据只有在 VALID 和 READY 信号都有效的时候才开始传输。当这两个信号持续保持有效,主设备会继续传输下一个数据。主设备可以撤销VALID 信号,或者从设备撤销 READY 信号终止传输。 AXI 的协议如图, T2 时,从设备的 READY信号有效, T3 时主设备的 VILID 信号有效,数据传输开始。

在 ZYNQ 中,支持 AXI-Lite, AXI4 和 AXI-Stream 三种总线,通过表以看到这三种AXI 接口的特性。

接口协议

特性

应用场合

AXI4-Lite

地址/单数据传输

低速外设或控制

AXI4

地址/突发数据传输

地址的批量传输

AXI4-Stream

仅传输数据,突发传输

数据流和媒体流传输

1、AXI4-Lite:

具有轻量级,结构简单的特点,适合小批量数据、简单控制场合。不支持批量传输,读写时一次只能读写一个字(32bit)。主要用于访问一些低速外设和外设的控制。

2、AXI4:

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

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

3、AXI4-Stream:

这是一种连续流接口,不需要地址线(很像 FIFO,一直读或一直写就行)。对于这类 IP,ARM 不能通过上面的内存映射方式控制(FIFO 根本没有地址的概念),必须有一个转换装置,例如 AXI-DMA 模块来实现内存映射到流式接口的转换。 AXI-Stream 适用的场合有很多:视频流处理;通信协议转换;数字信号处理;无线通信等。其本质都是针对数值流构建的数据通路,从信源(例如 ARM 内存、 DMA、无线接收前端等)到信宿(例如 HDMI 显示器、高速 AD 音频输出,等)构建起连续的数据流。这种接口适合做实时信号处理。

在 ZYNQ 芯片内部用硬件实现了 AXI 总线协议,包括 9 个物理接口,分别为 AXI-GP0~AXIGP3, AXI-HP0~AXI-HP3, AXI-ACP 接口。AXI_ACP 接口,是 ARM 多核架构下定义的一种接口,中文翻译为加速器一致性端口,用来管理 DMA 之类的不带缓存的 AXI 外设, PS 端是 Slave 接口。AXI_HP 接口,是高性能/带宽的 AXI3.0 标准的接口,总共有四个, PL 模块作为主设备连接。主要用于 PL 访问 PS 上的存储器(DDR 和 On-Chip RAM)AXI_GP 接口,是通用的 AXI 接口,总共有四个,包括两个 32 位主设备接口和两个 32 位从设备接口。

只有两个 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。

位于 PS 端的 ARM 直接有硬件支持 AXI 接口,而 PL 则需要使用逻辑实现相应的 AXI 协议。Xilinx 在 Vivado 开发环境里提供现成 IP 如 AXI-DMA, AXI-GPIO, AXI-Dataover, AXI-Stream 都实现了相应的接口,使用时直接从 Vivado 的 IP 列表中添加即可实现相应的功能。下图为 Vivado 下的各种 DMA IP:

几个常用的 AXI 接口 IP 的功能:

  1. AXI-DMA:实现从 PS 内存到 PL 高速传输高速通道 AXI-HP<---->AXI-Stream 的转换
  2. AXI-FIFO-MM2S:实现从 PS 内存到 PL 通用传输通道 AXI-GP<----->AXI-Stream 的转换
  3. AXI-Datamover:实现从 PS 内存到 PL 高速传输高速通道 AXI-HP<---->AXI-Stream 的转换,只不过这次是完全由 PL 控制的, PS 是完全被动的。
  4. AXI-VDMA:实现从 PS 内存到 PL 高速传输高速通道 AXI-HP<---->AXI-Stream 的转换,只不过是专门针对视频、图像等二维数据的。
  5. AXI-CDMA:这个是由 PL 完成的将数据从内存的一个位置搬移到另一个位置,无需 CPU 来插手。

(二)AXI 交换机制

AXI 协议严格的讲是一个点对点的主从接口协议,当多个外设需要互相交互数据时,我们需要加入一个 AXI Interconnect 模块,也就是 AXI 互联矩阵,作用是提供将一个或多个 AXI 主设备连接到一个或多个 AXI 从设备的一种交换机制(有点类似于交换机里面的交换矩阵)。这个 AXI Interconnect IP 核最多可以支持 16 个主设备、 16 个从设备,如果需要更多的接口,可以多加入几个 IP 核。

AXI Interconnect 基本连接模式有以下几种:

  1. N-to-1 Interconnect
  2. to-N Interconnect
  3. N-to-M Interconnect (Crossbar Mode)
  4. N-to-M Interconnect (Shared Access Mode)

          

        

ZYNQ 内部的 AXI 接口设备就是通过互联矩阵的的方式互联起来的,既保证了传输数据的高效性,又保证了连接的灵活性。 Xilinx 在 Vivado 里我们提供了实现这种互联矩阵的 IP 核axi_interconnect,我们只要调用就可以。

PS 和 PL 互联技术之AXI接口相关推荐

  1. ZYNQ 之PS 和PL 互联技术之AXI

    1. ZYNQ 概述 2.  AXI 概述 AXI (Advanced eXtensible Interface)是xilinx 从6系列fpga开始引入的一个接口协议,主要描述了主设备和从设备之间的 ...

  2. AXI总线技术简介——ZYNQ PS和PL的互联技术

    AXI总线技术简介--ZYNQ PS和PL的互联技术 1.AXI总线介绍 2.AXI协议通道介绍 3.ZYNQ芯片内部的AXI总线 4.常用AXI接口IP介绍 5. 多个AXI接口互联交互 1.AXI ...

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

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

  4. ZYNQ 7000 PS和PL 信号、接口、管脚分布

    1.ZYNQ 7000 PS端和PL端都有自己独立的电源引脚(Power Pin) 2.PS端接口和信号: PS_CLK(System reference clock) POR_RST_N(Power ...

  5. Vivado创建带AXI slave接口的IP—PS控制PL侧的LED

    目录 1. 1 创建AXI slave IP 1.2 修改AXI slave IP的2个文件 1.3 重新封装IP 1.4 新建BD添加IP(PS core IP+AXI slave IP) 1.5 ...

  6. ZYNQ开发系列——使用AXI4LITE接口进行PS和PL交互

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ZYNQ开发系列--使用AXI4LITE接口进行PS和PL交互 前言 PS端AXI接口 AXI4LITE slave模块的设计 后记 ...

  7. axi ps读写pl_Xilinx SDK 初学之——PS对PL寄存器的读写控制

    对于FPGA编程时的v文件中的寄存器,在SDK编程时需要一些读写操作,以实现PS与PL部分的信息交换.下面用一具体例子记录所需要的步骤 .如若有误请指正. 首先需要将v文件代码封装为带有AXI总线的I ...

  8. zynq开发系列6:创建AXI IP实现PS对PL的数据配置(步骤一)

    在Vivado开始界面选择Manage IP,新建一个名为custom_ip的文件夹专门存放IP核 新建一个IP,Tools 下打开 Create and Package New IP 在 IP Ca ...

  9. vivado中ZYNQ详解(主要用于PS和PL之间的工作衔接)

    可进qq群进行相关Verilog知识交流:1073030956 AXI的理解 AXI(Advanced extensible Interface)协议主要描述了Master设备和Slave设备之间的数 ...

最新文章

  1. ext2.2打造全新功能grid系列--仅仅动态生成GridPanel
  2. 总结:Sharepoint2010 Client Object Model -- Silverlight Client
  3. 简洁的 Bash Programming 技巧(三)
  4. Gradle用户指南(1)-Gradle安装
  5. python实例 83,84
  6. 关于数据库更新插入语句
  7. linux 共享内存_linux进程间通信----IPC篇(一)----共享内存初识篇
  8. 函数式编程学习之路(四)
  9. HDU 4597 Play Game (记忆化搜索博弈DP)
  10. ctr预估之特征工程
  11. RS232 DB9串口设备
  12. 【勒索病毒数据恢复】Phobos勒索病毒家族之.[back23@vpn.tg].makop
  13. 盘点新加坡旅游宣传片中不可错过的景点
  14. windows:查询本机ip地址方法
  15. [Python] 必应搜索主页的背景图片爬虫
  16. Excel 组及分级显示制作教程
  17. javascript原生脚本代码 飘浮广告
  18. 【线上沙龙】WeTest携手Testerhome共探DevOps下的质量保障
  19. LeetCode #121 买卖股票的最佳时机 贪心 单调栈 动态规划
  20. 计算机插上u盘就无法点亮,u盘启动电脑无反应,小编教你电脑插上U盘后无法启动解决方法...

热门文章

  1. net view 时报错 发生系统错误 6118 解决
  2. 20176408李俊 类与对象
  3. HTML生成word文档
  4. 基于MATLAB的静电场模拟系统
  5. Adobe Premiere Pro CS6的视频剪辑简单教程
  6. python怎样使用各个日期赤纬_基于Python的天文软件命令行界面设计与实现
  7. 我又有一位程序员朋友成了自由职业者
  8. 面试笔记:面经-瓜子
  9. 华为设备常见AAA操作
  10. Java开源的11个中文分词器使用方法和分词效果对比