本文对axi的网上资料进行一次整理,目的是帮自己进行总结。
ps和pl之间有三种axi协议:axi,axi_Lite, axi_stream, 但只有前两种接口,axi_stream只能在pl中实现。实现内存到数据流的转换
axi常用ip核:axi_dma, AXI-FIFO-MM2S, axi_vdma, axi_cdma
1. axi dma:
AXI Direct Memory Access (AXI DMA), PS端实现PL和DDR间的读写。
使用AXI_DMA IP时,必然还要添加上zqny system 核,若涉及中断使用,可以使能两个PL-PS间的中断IO。
DMA IP 中,需要关注的就是M_AXIS_MM2S、S_AXIS_S2MM、mm2s_introut、s2mm_introut四个IOs ,其它系统自动连线。
M_AXIS_MM2S、S_AXIS_S2MM为数据流总线,mm2s_introut、s2mm_introut为中断信号,可连接到PS端,在PS端编程控制处理。
其中MM2S为DDR3 到 PL, S2MM为PL到DDR3, MM内存,S外设。
其和DDR3单独PS端读写区别为,DMA可以大数据量的批量处理,效率要远高于单地址的数据读存。
概念参考地址:https://blog.csdn.net/liuheda/article/details/52472488
http://www.eefocus.com/zhaoyongke/blog/13-05/294033_550a7.html
xilixn例程:http://www.fpgadeveloper.com/2014/08/using-the-axi-dma-in-vivado.html
2. axi stream fifo:axi接口的fifo,FIFO的S_AXIS是写端口,连接DMA的M_AXIS(DMA读端口);FIFO的M_AXIS是读端口,连接DMA的S_AXIS(DMA写端口);
3. AXI-INTERCONNECT (参考:https://blog.csdn.net/juxianliyu/article/details/43534621)
这个IP核是经常用到的,当我们在PL中增加某些IP核时,默认的选项是自动连接到processing_system_v7_0中,而选择这个后,会自动生成一个AXI INTERCONNECT将GP0或者GP1和IP核连接在一起,那么具体AXI-INTERCONNECT是做什么的呢?
在赛灵思提供的官方文档PG059中,它是这样描述的:
AXI Interconnect核心连接1个或者多个AXI内存映射的控制设备到1个或者多个内存映射的从设备中,另外,它格外强调AXI interconnect核心仅仅进行内存映射的设备之间的传输。
AXI Interconnect核由许多IP核实例组成(基础的IP核)
AXI 允许任意AXI 主或从设备连接到它上,另外可以定制数据宽度、时钟频率和AXI子协议(AXI4,AXI3),这些基础IP核包括:
AXI Crossbar 连接一个或多个类似的AXI内存映射主设备到一个或多个相似的从设备
AXI数据宽度转换器
AXI时钟转换器:转换不同时钟
AXI协议转换器:AXI4、AXI3或者AXI4-LITE之间的转换
AXI数据FIFO
AXI寄存器切片
其中最核心的是AXI Crossboar。
I/O 信号
比较重要的是两个信号:一个是ACLK,另一个是ARESETN
分别是Crossbar的时钟输入信号和复位信号(低有效)
4. axi总共有9个接口,
4个axi_gp,其中,ps作为主设备2个,从设备两个。这个接口什么都能接,也就是说没什么特点,传输速度也不怎么样。
4个axi_hp,ps都作为从设备,可能是因为这个高速传输接口,觉得没别要让ps当主设备,
没意思,ps太慢了。Pl说什么,照着做就好了,axi_hp连接到DDR控制器。是为了方便pl与内存的数据交流,当然也连接到了ocm。这个接口传输速度相当快,1200MB\s,当然对使用也就有一些要求了,
1个axi_gcp,全称acceleratorcoherency port (ACP),加速一致性接口。还没用过,感觉很高级。
通过该接口,pl可以直接访问ps的cache,硬件一致性有scu保证。因此pl可以直接从cache拿到计算结果,同时也可以第一是时间将逻辑加速运算结果送至cpucache中,延时是很低的,适合做专用指令加速器模块接口。
顺便补充一下,pspl之间的通信方式还有emio(在上一篇讲的)以及DMA(dma,CDMA,vdma,