AXI 接口标准介绍
图 1AXI 握手时序图
AXI-Lite:
AXI4:
接口和 AXI-Lite 差不多,只是增加了一项功能就是批量传输,可以连续对一片地址进行一次性读写。也就是说具有数据读写的 burst 功能。
上面两种均采用内存映射控制方式,即 ARM 将用户自定义 IP 编入某一地址进行访问,读写时就像在读写自己的片内 RAM,编程也很方便,开发难度较低。代价就是资源占用过多,需要额外的读地址线、写地址线、读数据线、写数据线、写应答线这些信号线。
AXI-Stream:
AXI4 和 AXI4-Lite 接口包含 5 个不同的通道:
ReadAddressChannel
WriteAddressChannel
ReadDataChannel
WriteDataChannel
WriteResponseChannel
其中每个通道都是一个独立的 AXI 握手协议。下面两个图分别显示了读和写的模型:
图 2AXI 读数据通道
图 3AXI 写数据通道
ZYNQ 的 AXI 资源
AXI_ACP 接口,是 ARM 多核架构下定义的一种接口,中文翻译为加速器一致性端口,用来管理 DMA 之类的不带缓存的 AXI 外设,PS 端是 Slave 接口。
AXI_HP 接口,是高性能/带宽的 AXI3.0 标准的接口,总共有四个,PL 模块作为主设备连接。主要用于 PL 访问 PS 上的存储器(DDR 和 On-ChipRAM)
AXI_GP 接口,是通用的 AXI 接口,总共有四个,包括两个 32 位主设备接口和两个 32 位从设备接口。
AXI接口分布图如下图 4 所示:
图4AXI接口分布图
另外这 9 个 AXI 接口性能也是不同的。GP 接口是 32 位的低性能接口,理论带宽 600MB/s,而 HP 和 ACP 接口为 64 位高性能接口,理论带宽 1200MB/s。有人会问,为什么高性能接口不做成主机接口呢?这样可以由 ARM 发起高速数据传输。答案是高性能接口根本不需要 ARMCPU 来负责数据搬移,真正的搬运工是位于 PL 中的 DMA 控制器。
PL 端的 AXI 接口设计
下面为几个常用的 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 和向导生成的自定义 IP,用户其实不需要对 AXI 时序了解太多(除非确实遇到问题),因为 Xilinx 已经将和 AXI 时序有关的细节都封装起来,用户只需要关注自己的逻辑实现即可。
AXI Interconnect
这个 AXIInterconnectIP 核最多可以支持 16 个主设备、16 个从设备,如果需要更多的接口,可以多加入几个 IP 核。
AXIInterconnect 基本连接模式有以下几种:
N-to-1Interconnect
1-to-NInterconnect
N-to-MInterconnect(CrossbarMode)
N-to-MInterconnect(SharedAccessMode)
图 6 多对一的情况
图7 一对多的情况
图8 多对多读写地址通道
图9 多对多读写数据通道
图10 AXIInterconnectIP
END
往期精彩回顾(👇猛戳可查看)
校招笔试题合集
FPGA合集
行业动态合集
雷达信号处理合集
闲聊
$display("点个在看吧!")
本文分享自微信公众号 - 数字ICer(Studying_Times)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
来源:oschina
链接:https://my.oschina.net/u/4583574/blog/4389147