当前位置: 首页 > news >正文

FPGA-zynq PS与PL的交互(一)

1五种交互方式

1.1第一种交互

就是在PS 端口开一个GP接口,去控制Bram,然后PL 读Bram中的数据。

  • PS端控制PL端方式:PS端作为主机通过写寄存器控制PL端
  • 适用场景:少量数据传输(如ADC采样速率、以太网速率等寄存器配置)
  • GP接口特性:低性能AXI Light协议接口,适合单次数据传输
  • BRAM交互方案:PS通过GP接口写入BRAM,PL端读取BRAM获取数据
  • AXI Interconnect特性:内置FIFO但深度较小,适合实时数据传输
  • 方案对比:BRAM方案数据存储更稳定,AXI直连方案资源占用更少
  • 推荐方案:PL端能实时接收时优先选用AXI Interconnect直连方案

1.2第二种:在PS端口进行链接互联模块AXI Interconnect,然后直接跟PL进行交互(轻量级)

1.3第三种:

  • PL端主机配置:PL端作为主机,PS端作为从机
  • 接口设置:主机端开启AXI从机接口,从机端开启GP接口
  • SL主机实现:在PL端实现SL主机用于写入PS端GP接口
  • 适用场景:适合大数据量突发传输的应用场景
  • 交互方式特点:第三种交互方式在实际应用中非常常用

1.4第四种:

大数据量的传输,使用HP 接口以及ACP接口  HP接口的目的端是DDR存储器,ACP是给cache,如果PS 端口的想从HP接口读出数据,需要吧DDR的数据读出,送给CACHE,然后再给ps处理。

1.5第五种】

  • HP接口应用:使用现成HP接口进行数据交互
  • 官方DMA选择:可选用赛林斯提供的AXI DMA等官方IP核
  • IP核优缺点:无需编写代码但需学习使用方式
  • 自定义优势:自主编写HP接口交互更直接可控
  • IP核潜在问题:官方IP核存在使用"坑"需注意

2配置第一种

2.1勾选GPMASTER是PS的主机接口 去控制pL

2.2配置时钟以及复位

2.3添加互联模块

因为PS的总线直接控制PL无法完成,必须要互联模块

配置从机接口的1个口,以及主机接口两个口

可以把ACK当做从机接口的时钟 下面俩可以当主机接口的时钟

2.4采用两种交互 第一种采用通过互联模块第一个口控制bram与PL交互 第二种是直接与PL交互

实现功能

在PL写bram中的数据0-39 ps读出来看看读的对不对

然后PS写入40-79写数据 PL读出来看看对不对

两种方式

2.4.1BRAM设置

如果要控制BRAM需要有BRAM的控制模块

如果设置是两个bram端口 一个是写另一个是读 ,设置一个是可读可写  



添加BRAM的时候发现地址大小无法设置,这个需要再AXI分配地址中进行设置,分配互联模块的m00_AXI的寻址范围

根据PS控制bram以及pl交互

2.4.2 编写PL侧代码

新建源文件

将编写完的代码添加进工程,然后送进BLOCK_dESIGN

2.4.3,为了完善另一个AXI互联模块的接口,添加一个AXI从机模块

将代码添加到工程中

完成链接

分配地址

根据地址进行路由

这样有问题会一直卡

改一下把编写模块放在外面 输出到顶层,然后在顶层进行连线,但是不用通过FPGA输出出去,在内部进行链接

导出硬件描述信息

2.5启动SDK建立bsp文件

在bsp中的标准库文件中找到系统级基础函数

延迟文件 usleep微秒级的延迟函数

在读GP接口的数据,数据会到DDR中,Ps处理需要刷新cache,把数据放到Cache中,在做处理,该项目禁止掉它

最常用的是IO 这个库文件,输入的话是对于PS来说输入的数据 u8是一个字节  16是两个字节32是4个字节

2.6编写main.c文件

PL先给PS进行写数据,,ps需要读出来,在AXI里面是一个字节一个字节一个地址操作的,PS读入需要把基址给它,+4*i表示下一次是第4个地址。这一次就把这32位取出来。 经过5000us的延迟。ps往里面写数据,基址是从第40个地址进行操作。写入的数据就是i 。

编译

debug一下

上述说明PL写入  PS读出数据成功

2.7 PS写入 PL读出数据查看  使用ILA进行查看

在PS中可以添加DEBUG查看  PS的GP接口的写入 

添加完后重新输出以及到顶层

PL查看可以使用 MARK——debug进行查看  还可以使用ILA查看

第一种

第二种添加ILA IP

设置位宽

把PL侧需要抓的信号进行抓取

同时需要定义一下

创建一个头问价  xxx.vh,同时设置为全局变量

在文件中写`ifdef 定义的变量名  如果定义了就执行这里的

 ·endif

直接生成BIT流就行

打开SDK  ,编译工程后 进行DEBUG下载
在下载的时候需要注意把FPGA的程序也下进去 ,如果没有下载需要手动把程序下载到板卡中

打开VIVADO就可以看到抓的PS的信号以及PL侧的信号了进行查看,给一个地址 写入32位数据,同时地址加4 因为一次增加一个字节地址 送的4个字节给了0地址  就得把0123 地址写进去 下一次32位的地址就是4567

PL 侧需要让PS运行成功在进行打开

http://www.dtcms.com/a/596619.html

相关文章:

  • 做电影网站需要施工企业会计核算及常用会计分录
  • CONFIG_TRACEPOINTS和CONFIG_FTRACE的作用
  • LeetCode 热题 100——哈希——字母异位词分组
  • MATLAB 计算两点直线方程(叉乘)
  • 系统分析师-信息安全-通信与网络安全技术系统访问控制技术
  • 25年11月软考架构真题《论无服务器架构(Serverless)》考后复盘总结
  • SMamba: 基于稀疏Mamba的事件相机目标检测
  • 怎么给自己制作一个网站php整站最新版本下载
  • 饰品网站模版哪种网站
  • 耐达讯自动化Profibus光纤模块:智能仪表的“生命线”,极端环境通信无忧!
  • C++入门(算法) - 习题
  • 校验热稳定,裸导体宜采用主保护动作时间加相应断路器开断时间。电气设备宜采用后备保护动作时间加相应断路器开断时间。
  • 【Java SE 基础学习打卡】10 JDK 下载与安装
  • 【SqlServer】日志文件无法收缩的解决方法
  • 拟牛顿法的数学原理:正定性、合理性与割线约束
  • 解决 Chrome 下载 `.crx` 文件被自动删除及“无法安装扩展程序,因为它使用了不受支持的清单版本”问题
  • 网站图片翻页效果如何做网站开发有哪些服务器
  • o2o网站建设如何上海网站建设服
  • 【agent】AI 数字人构建11:FunASR 2:c++工程分析及模型下载
  • 【OpenCV + VS】OpenCV中的图像像素读写
  • 柳州哪家公司做网站好vancl网站
  • xtu oj环--唉
  • Polar CTF Reverse简单 刷题笔记
  • 刷题日常 2 二叉树中序遍历
  • 从C++到仓颉:一个小型项目的迁移实践与深度思考
  • ⸢ 拾肆-Ⅱ⸥⤳ 实战检验应用实践(下):自动化检验 演练复盘
  • TypeScript中extends与implements的区别
  • 企业网站建设问卷专业网站建设 公司哪家好
  • 建一个网站需要什么条件可以免费观看电视电影
  • ArrowDL BT下载工具v4.2.1中文版安装教程(附详细步骤+下载方法)