XILINX ZU系列FPGA PS-PL通过双口BRAM进行数据通信实验

前言

emm最近开始学习ZYNQ PS部分开发,主要是想通过PS-PL BRAM通信接口学习一下在SDK上对PS内存的操作,实际上PL-PS之间通信即通过操作同一片地址空间实现数据通信哈,大数据量的通信通常用DMA实现,少量配置数据传输的话可以用block ram实现。

1、VAVIDO搭建block design

搭建BD主要是配置PS外围部分连接,包括PS和外设之间,PS和PL之间的连接,如图所示搭建BRAM所需最小外围连接,包括PS部分,复位模块,双口BRAM等模块。
在这里插入图片描述
1️⃣zynq ps:配置PS端外围连接,包括时钟、复位、MIO、DDR以及PS-PL之间的连接。

2️⃣AXI smartconnect:用于AXI内存映射设备主从端的连接,相比较具有相同功能的AXI interconnector,以最小的用户干预自动配置和适应连接的AXI主从IP。

3️⃣:BRAM CONTROLLER:用于通过AXI总线实现对本地BRAM的控制,相当于接口协议转换。

4️⃣:BRAM:BLOCK RAM,可配置为双口BRAM,分别通过PS和PL控制两个端口读写数据,从而实现数据交互通信。

连线完成之后分配地址,通常使用自动分配的地址即可,如图分配的地址为0x80000000-0x80000FFF;

右键creat HDL wrapper,将PL控制的端口BRAM_PORT_B连接到VIO debug core实现在线读写BRAM数据,然后综合、实现、生bit。

2、SDK创建工程

生成bit之后,点击文件导出硬件平台(包含bit),然后launch SDK。。

或者从外部打开SDK后添加工作路径:

打开SDK后工作空间中会出现一个在vavido中导出的硬件平台platfom,在硬件平台基础上需要创建一个新的应用程序file->new->application project设置工程名,操作系统平台,芯片支持linux 、freertos、standlone(这里我们先用裸机测试选择standalone),选择处理器核(本芯片R5两核,A5四核),选择创建板级支持包bsp(cpu包含相对于硬件平台的驱动包),然后finish即可。

最后创建的裸机工程环境一般包含application project、bsp、hardware platform。

然后是完成代码部分:
1️⃣PS写数据:首先实现在PS写内存,因为内存以字节为单位存储,因为每32位数据占据4个地址,每写32位地址加4。

代码编译无误之后,点击应用工程然后右键debug as->debug configuration,双击system debugger出现.elf文件,然后点击debug复位整个系统下载程序。

然后单步执行程序,可以看到程序中变量的变化,以及内存中数据的变化。

2️⃣PS读数据:在SDK中写入数据再读出结果。

3️⃣PL写数据:从PL HW MANGER下载bit文件通过VIO向内存0x8000000C写入0x99999999;

然后在SDK中查看内存数据写入正确。

4️⃣PL读数据
读出数据正确
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43813325/article/details/109232046