赞
踩
在FPGA - ZYNQ 基于Axi_Lite的PS和PL交互中,介绍了基于基于AXi_Lite的PL和PS交互,接下来构建基于基于Axi_Lite的PS和PL交互。
首先看一下ZYNQ SoC的系统框图,如下图所示。在图中,箭头方向代表主机到从机的方向。
在上图中红色框线中,就是PS和PL之间的交互,将上图简化如下:
GP:General Purpose Port(通用端口),位宽为32 位,适合PS和PL之间中 低速通信,有四个接口(两个从端口,两个主端口);
HP:High Performace Port(高性能端口),位宽为 32 位或者 64 位。适合 PS 和PL之间高速通信,有四个接口(四个都是从端口);
ACP:Accelerator Coherency Port(加速器一致),位宽为 64 位。适合 PS和PL 之间高速通信。
GP接口直接连接到的是中央互联区(central interconnect),然后由中央互联区再连接到OCM interconnect和存储器接口上;而HP接口直接连接到的是OCM interconnect和存储器接口。所以对于GP接口,通常使用他进行控制配置;而对于HP接口,通常使用它进行数据传输交互。
4个AXI HP接口为PL的主机提供了DDR和OCM存储器的高带宽的数据路径。 每个HP接口包括两个的FIFO缓存,用于读写传输。PL到内存互连高速AXI HP端口路由连接到两个DDR内存端口和一个OCM存储器端口。AXI HP接口也被称为AFI (AXI FIFO接口),以强调它们的缓冲功能。 PL电平移位器必须通过LVL SHFTR EN启用后,才能进行PL逻辑通信。
特点
这些接口被设计为在PL主存储器和PS存储器(包括DDR和片上RAM)之间提供一个高吞吐量的数据路径。主要功能包括:
AXI_GP接口直接连接到主互连和从互连的端口,没有任何额外的FIFO缓冲,不像AXI_HP接口使用FIFO缓冲以提高性能和吞吐量。因此,性能受到主互连端口和从互连端口的限制。这些接口仅用于通用用途,并不是为了实现高性能。
特点
AXI GP的特性包括:
注意:AXI_ACP和AXI_HP接口,PL只能是主机,PS只能是从机!!
采用AXI_HP接口,PL为主机,PS为从机
PL 发送给PS的数据,通过AXI_HP接口后,进入DDR3控制器,然后写入到DDR3里面。
反过来,PL也可以通过AXI_HP接口读取DDR3里面的数据。
PS 也可以向DDR3 写入或者读取数据,DDR3 相对于PS 而言就是一个外设。
PS 首先将数据写入到Cache,Cache里面的数据再写入到DDR3 contorller, 最后到DDR3。反过来,PS也可以从DDR3里面读取数据。
PL将数据通过AXI_HP接口写入到DDR3,PS再将数据从DDR3里面读出 来,这样就实现了PL与PS的数据交互。
采用AXI_GP接口,PL为从机,PS为主机
如果PS端采用AXI_GP接口,且PS端为主机,PL为从机,那么PL的接 口模块相对于PS来说,就是一个外设。
既然是外设,那么就会有对应的地址和寄存器。
其中0x4300_0000 为起始地址,又称之为基地址;0x4300_FFFF为结束地址。
其中,基地址和结束地址的值,是由PL端分配的,也就是在PL端可以使用VIVADO软件更改。
第二个地址为0x4300_0004,相比于0x4300_0000 偏移量为4。所以4就是偏移地址。
可以通过 “基地址 + 偏移地址”表示任意的地址。比如基地址为 0x4300_0000,偏移地址为8,表示的地址为0x4300_0008。
下表介绍了 PS- PL和PS内存接口的理论带宽
注意:Gb/s和GB/s是不一样的,B代表字节,b代表比特。
中详细介绍了开发流程。
在Creat Block Design 中:搜索ZYNQ以及axi_interconnect 并进行配置
然后进行自动连线,连线完成后如下图:
这里AXI_HP的从机搭建完成。、
然后建立top文件,设计AXI4_FULL主机模块。
生成bitstream,导出硬件,启动SDK
建立新工程
点击空工程 点击finish
接下来返回main.c,向其中添加以下代码:
一直处于接收发送状态。
- #include <stdio.h>
- #include "xil_printf.h"
-
-
- int main()
- {
- while(1)
- {
-
- };
- return 0;
- }
最后,下载验证。
在这里,实现了基于Axi_full的PS和PL交互,详细介绍了AXI_GP、AXI_HP和AXI_ACP接口。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。