赞
踩
ZYNQ 作为首款将高性能 ARM Cortex-A 系列处理器与高性能 FPGA 在单芯片内紧密结合的产品,为了实现 ARM 处理器和 FPGA 之间癿高速通信和数据交互,发挥 ARM 处理器和 FPGA的性能优势,需要设计高效的片内高性能处理器不 FPGA之间癿互联通路。因此,如何设计高效的PL 和 PS 数据交互通路是 ZYNQ 芯片设计癿重中之重,也是产品设计成败关键之一。
AXI 就是 ARM 公司提出的 AMBA( Advanced Microcontroller Bus Architecture)的一个部分,是一种高性能、高带宽、低延迟的片内总线,也用来替代以前的 AHB 和 APB 总线。
AXI 协议主要描述了主设备和从设备之间的数据传输方式,主设备和从设备之间通过握手信号建立连接。 当从设备准备好接收数据时,会发出 READY 信号。 当主设备的数据准备好时,会发出和维持 VALID 信号,表示数据有效。 数据只有在 VALID 和 READY 信号都有效的时候才开始传输。 当这两个信号持续保持有效,主设备会继续传输下一个数据。主设备可以撤销 VALID信号,或者从设备撤销 READY 信号终止传输。 AXI 的协议如下图所示, T2 时,从设备的 READY信号有效, T3 时主设备的 VILID 信号有效,数据传输开始。
在 ZYNQ 中,支持 AXI-Lite, AXI4 和 AXI-Stream 三种总线, 通过下表,我们可以看到这三种 AXI 接口的特性。
具有轻量级,结极简单的特点,适合小批量数据、简单控制场合。不支持批量传输,读写时一次只能读写一个字( 32bit)。 主要用于访问一些低速外设和外设的控制。
接口和 AXI-Lite 差不多,只是增加了一项功能就是批量传输,可以连续对一片地址进行一次性读写。 也就是说具有数据读写的 burst 功能。
上面两种均采用内存映射控制方式,即 ARM 将用户自定义 IP 编入某一地址进行访问,读写时就像在读写自己的片内 RAM,编程也很方便,开发难度较低。代价就是资源占用过多,需要额外的读地址线、写地址线、读数据线、写数据线、 写应答线这些信号线。
这是一种连续流接口,不需要地址线(很像 FIFO,一直读或一直写就行)。对于这类 IP,ARM 不能通过上面的内存映射方式控制( FIFO 根本没有地址的概念),必须有一个转换装置,例如 AXI-DMA 模块来实现内存映射到流式接口的转换。 AXI-Stream 适用的场合有很多:视频流处理;通信协议转换;数字信号处理;无线通信等。其本质都是针对数值流构建的数据通路,从信源(例如 ARM 内存、 DMA、无线接收前端等)到信宿(例如 HDMI 显示器、 高速AD 音频输出, 等)极建起连续的数据流。返种接口适合做实时信号处理。
在 ZYNQ 芯片内部用硬件实现了 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 在 Vivado 开发环境里提供现成 IP 如 AXI-DMA,AXI-GPIO,AXI-Dataover, AXI-Stream
都实现了相应的接口,使用时直接从 Vivado 的 IP 列表中添加即可实现相应的功能。 下图为Vivado 下的各种 DMA IP
下面为几个常用的 AXI 接口 IP 的功能介绍:
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-CDMA: 这个是由 PL 完成的将数据从内存的一个位置搬移到另一个位置,无需 CPU 来插手。
有时,用户需要开发自己定义的
IP 同 PS 进行通信,返时可以利用向导生成对应的 IP。用户自定义 IP 核可以拥有 AXI-Lite,AXI4,AXI-Stream, PLB 和 FSL 这些接口。后两种由于 ARM 这一端不支持,所以不用。
有了上面的这些官方 IP 和向导生成的自定义 IP,用户其实不需要对 AXI 时序了解太多(除非确实遇到问题),因为 Xilinx 已经将和 AXI 时序有关的细节都封装起来,用户只需要关注自己的逻辑实现即可。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。