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

FPGA----UltraScale+系列的PS侧与PL侧通过AXI-HP交互(全网唯一最详)附带AXI4协议校验IP使用方法

1、之前写过一篇关于ZYNQ系列通用的PS侧与PL侧通过AXI-HP通道的文档,下面是链接。

FPGA----ZCU106基于axi-hp通道的pl与ps数据交互(全网唯一最详)_zcu106调试_发光的沙子的博客-CSDN博客大家好,今天给大家带来的内容是,基于AXI4协议的采用AXI-HP通道完成PL侧数据发送至PS侧(PS侧数据发送至PL侧并没有实现,但是保留了PL读取PS测数据的接口)本实验完成了,PL侧自定义数据传输到PS侧,并在PS侧写加软件,完成了PL侧传入数据的求和功能,发挥了整个SoC的功能,为后续PL侧加速计算,PS侧数据分析奠定了基础。_zcu106调试https://blog.csdn.net/qq_37912811/article/details/128097813?spm=1001.2014.3001.5501但当时只是实现了PL侧向PS侧写入数据的功能。而本次给大家带来完整的PS侧与PL侧读写数据完整实验原理以及实现方法。

需要注意的是,本次实验数据接口均采用Xilinx的通用AXI4协议,还有不会的同学赶紧去学习。此外,Xilinx为方便用户调试AXI4协议,还提供了AXI Verification IP本次实验会讲到他的使用方法。

2、实验软硬件:Vivado、zynq UltraScale+系列板卡

3、实验步骤:

①依据上文1中提到的AXI-HP文章,在Block Design中搭建ARM侧的设计,编写相应的数据生成Verilog文件,然后进行仿真。然后在Vivado的SIMULATIN时,可以发现一个现象,就是可以进行正常的写操作,即FPGA可以向ARM写数据。但是在进行读操作时,即FPGA读取ARM侧数据的仿真时,ARM侧应当发送的rvalid信号时钟不能拉高。我一直以为是我代码的问题,我还特意去Xilinx社区问了一下。下面是帖子链接。这也是为什么我去年只做了写操作的教程,没有做读操作的教程。

Xilinx Customer Communityhttps://support.xilinx.com/s/question/0D54U00007BtXHuSAN/the-zcu106-board-uses-axihp-protocol-to-complete-the-communication-between-ps-and-plthe-write-function-is-normal-but-the-read-function-is-abnormal?language=zh_CN

相信大家在做FPGA的时候都会看一些网上的视频教程,比如B站黑金的教程,还会下载对应的程序,但是人家的视频都是针对特定板子开发的,对于我们这种使用Xilinx官方板子的开发者来说,代码啥的都需要再改改。就比如说他的AXI-HP通道读写DDR操作,我看完以后,我甚至以为是Vivado出现BUG了,因为他的Block Design中设置好AXI-HP通道后生成HDL wrapper竟然会有DDR接口,而我用的ZCU106根本不会生成这个DDR接口,只有AXI接口。大家有兴趣的可以自行下载一下,下面是视频链接以及代码链接。

【35】ALINX Zynq MPSoC XILINX FPGA视频教程 SDK 裸机开发—PL读写PS端DDR之Vivado创建过程_哔哩哔哩_bilibili1. 课程内容本套视频教程是ALINX公司基于Xilinx Zynq UltraScale+ MPSoC系列FPGA原创的视频教程,内容包含 裸机开发、Linux基础开发、Linux驱动开发、Vitis HLS开发、Vitis AI开发五大部分,详细讲述MPSoc系列FPGA芯片的各个部分开发的相关内容,视频基于ALINX公司自主设计的FPGA开发板进行讲解,理论结合实践,让大家可以充分理解开发的, 视频播放量 2747、弹幕量 3、点赞数 19、投硬币枚数 8、收藏人数 65、转发人数 8, 视频作者 ALINX官方, 作者简介 ,相关视频:【03】ALINX Zynq MPSoC XILINX FPGA视频教程 SDK 裸机开发—MPSoC开发之Vitis工程创建流程,【02】ALINX Zynq MPSoC XILINX FPGA视频教程 SDK 裸机开发—MPSoC开发之Vivado工程创建流程,【ALINX】FPGA ZYNQ视频教程——AX7010/AX7020教程——FPGA实验篇,【37】ALINX Zynq MPSoC XILINX FPGA视频教程 SDK 裸机开发—PS与PL交互之BRAM读写Vivado创建过程,【01】ALINX Zynq MPSoC XILINX FPGA视频教程 Linux基础开发—Petalinux定制Linux系统,【12】ALINX Zynq MPSoC XILINX FPGA视频教程 SDK 裸机开发—PS端UART读写例程,【ALINX】FPGA ZYNQ视频教程——AX7010/AX7020教程——SDK实验篇,【01】ALINX Zynq MPSoC XILINX FPGA视频教程 SDK 裸机开发—MPSoC架构介绍,【31】ALINX Zynq MPSoC XILINX FPGA视频教程 SDK 裸机开发—自定义IP之Vivado创建流程,【63】ALINX Zynq MPSoC XILINX FPGA视频教程 SDK 裸机开发—AD9280以太网传输及上位机显示波形实验https://www.bilibili.com/video/BV1UY4y1L7wb/?spm_id_from=333.788

  • AX7010资料链接:
  • 2017.4版 链接:https://pan.baidu.com/s/1xr3D1EED4zb1eyJHYTGRHg 
  • 提取码:3z1y 
  • 软件包链接:
  • 2017.4版 链接:https://pan.baidu.com/s/1RiolZAHIi8hCskJJGrmSjg 
  • 提取码:1w8y 
  • ZYNQ视频链接:https://pan.baidu.com/s/11_oHUzEOZlBXWLllCdTf6A 
  • 提取码:3au6
  • ubuntu16链接:
  • 链接:https://pan.baidu.com/s/19TurvpRlmWdEb8Yo_QatIg?pwd=tpcx 
  • 提取码:tpcx 

最后我得出的结论是,zynq UltraScale+系列板卡(ZCU系列),在Vivado中进行仿真时,rvalid信号确实不会自动拉高,只有在上板子之后他才会被拉高。那么问题来了,每次生成bit文件时间那么长,总不能每次都浪费吧?为了解决这个问题,我们可以使用Xilinx提供的AXI协议调试IPAXI Verification IP。由于调试的AXI-HP接口,因此,下面以FPGA为主机,ARM为从机进行测试(ARM为从机,即设置AXI Verification IP为从机即可)。

②在block design中搜索axi vip然后添加

 ③配置axi vip模块

 上面的设置依据大家的具体情况设定即可,要想调试出的AXI接口直接可以上板使用,最好的方法是:先在block design中配置好ARM,然后生成HDL wrapper,查看HDL wrapper中的verilog文件的ARM的每个端口配置,然后依据这个设置axi vip配置即可。

配置好axi vip后,将下面这三根线引出,然后配追地址,需要注意的是,axi vip只有2M,因此不能大量读写数据。写的时候要看清楚地址,下面这个偏移起始地址是44A0_0000,但是我写的代码是从0000_0000开始的,仍然可以正常使用,具体原因不清楚

 ④编写自己的数据生成代码已经AXI接口代码,可以去我上面提供的链接里面下载,也可以查看我之前的文章,自行编写。

⑤配置axi vip仿真文件。虽然上面添加了axi vip模块,但这并不代表可以直接进行仿真了,还需要添加一些仿真文件。

  • 添加自定义的testbench.sv文件(sv文件哈,system verilog文件)
  • 打开axi vip的设计例程

  •  打开例子工程文件夹:x:\xxxx\xx\axi_vip_0_ex\imports,将这些文件夹复制到与testbench.sv同一个目录下,如:D:\vavado_project\AXI_VIP_SLAVE\AXI_VIP_SLAVE.srcs\sim_1\new
  • 更改testbench.sv文件

  •   回到vivado界面,打开TCL Console面板,输入:get_ips *vip*命令,然后复制出现IP名称,我这里是design_1_axi_vip_0_0。

  •  回到Vivado界面可以看到,会自动出现一个引用文件,双击打开

  •  将复制的IP名称贴入红框部分的阴影部分,_pkg以及_slv_t都不改

  •  修改下面红框部分,这是system Verilog语法,目的是找到axi vip这个模块

  •  这样就配置好了,直接在Vivado中进行simulink即可。
  • 需要注意的是,如果配置axi vip为主机,那么需要修改axi_vip_0_mst_stimulus.sv文件,将下面这段代码注释掉即可,不然会报错。

 以上内容参考了知乎大神帖子,下面是传送门​​​​​
【VIVADO IP】AXI Verification IP - 知乎0 前言本文记录关于VIVADO IP核【AXI Verification IP】的部分使用和配置方式,主要参考IP手册【PG267】和【 芯选】关于IP的介绍。IP内功能较为丰富,这里仅对使用到的部分进行记录,如果有错误的地方还请提醒。AX…https://zhuanlan.zhihu.com/p/526968284

⑥直接进行上板调试即可,这里给大家一个PS与PL交互的思路:

 4、我们完成了基于SoC(ARM+FPGA架构)的电力系统电磁仿真SDK,需要合作可以联系作者邮箱!

 

相关文章:

FPGA----UltraScale+系列的PS侧与PL侧通过AXI-HP交互(全网唯一最详)附带AXI4协议校验IP使用方法

1、之前写过一篇关于ZYNQ系列通用的PS侧与PL侧通过AXI-HP通道的文档,下面是链接。 FPGA----ZCU106基于axi-hp通道的pl与ps数据交互(全网唯一最详)_zcu106调试_发光的沙子的博客-CSDN博客大家好,今天给大家带来的内容是&#xff0…...

Unity小游戏——迷你拼图

游戏展示 拼图演示 资源: 链接:https://pan.baidu.com/s/1BGeSmRCO_WZRUyl3MxefGw 提取码:0n4a 一、玩法介绍 排列拼图碎片,拼出最后的图案。可以点住碎片的任意位置拖动;点击"重来"按钮,可以…...

三 动手学深度学习v2 —— Softmax回归+损失函数+图片分类数据集

三 动手学深度学习v2 —— Softmax回归损失函数图片分类数据集 目录: softmax回归损失函数 1. softmax回归 回归vs分类: 回归估计一个连续值分类预测一个离散类别 从回归到多类分类 回归 单连续数值输出自然区间R跟真实值的误差作为损失 分类 通常多个输出输出i是预测为第…...

Stable Diffusion 使用教程

环境说明: stable diffusion version: v1.5.1python: 3.10.6torch: 2.0.1cu118xformers: N/Agradio: 3.32.0 1. 下载 webui 下载地址: GitHub stable-diffusion-webui 下载 根据自己的情况去下载: 最好是 N 卡:(我的…...

在线考试系统springboot学生试卷问答管理java jsp源代码mysql

本项目为前几天收费帮学妹做的一个项目,Java EE JSP项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。 一、项目描述 在线考试系统springboot 系统有2权限:管理…...

创建vue-cli(脚手架搭建)

目录 功能 需要的环境 使用HbuilderX快速搭建一个vue-cli项目 组件路由 element-ui vue-cli 官方提供的一个脚手架,用于快速生成一个 vue 的项目模板;预先定义 好的目录结构及基础代码,就好比咱们在创建 Maven 项目时可以选择创建一个 骨…...

【单调栈part02】| 503.下一个更大元素||、42.接雨水

🎈LeetCode503.下一个更大元素|| 链接:503.下一个更大元素|| 给定一个循环数组 nums ( nums[nums.length - 1] 的下一个元素是 nums[0] ),返回 nums 中每个元素的 下一个更大元素 。 数字 x 的 下一个更大的元素 是按…...

Java——如何使用Stream替换掉List<Student>中符合要求的元素

使用Stream替换掉List中符合要求的元素 要使用Stream流替换掉List中符合特定条件的元素,您可以使用Stream的map()方法对每个元素进行映射,并使用collect()方法将映射后的元素收集到一个新的List中。 示例代码: import java.util.ArrayList; …...

gin 框架中的 gin.Context

〇、前言 Context 是 gin 中最重要的部分。 例如,它允许我们在中间件之间传递变量、管理流程、验证请求的 JSON 并呈现 JSON 响应。 Context 中封装了原生的 Go HTTP 请求和响应对象,同时还提供了一些方法,用于获取请求和响应的信息、设置响…...

新版chrome浏览器恢复下载的时候恢复底栏提示

近日,谷歌对其Chrome浏览器进行了更新,为所有桌面系统的Chrome浏览器增加了位于地址栏右侧的“下载”气泡,并同时取消了原有的底部下载栏。 谷歌表示,这次更新的目的是为了让用户更方便地与最近下载的文件进行交互。 然而&#x…...

ModuleNotFoundError: No module named ‘lsb_release‘

Ubuntu 重装python版本导致的问题 $ lsb_release -a # 使用命令查看报错详情 Traceback (most recent call last):File "/usr/bin/lsb_release", line 25, in <module> # 这个路径很重要import lsb_release ModuleNotFoundError: No module named lsb_re…...

2021-03-03 Multisim 14.0 电池充电防止反接保护

R2R3当作充电线电阻看,也可设置这2个电阻导线电阻,电阻取值依据充电电流范围确定,由于电池存在电压因此可以用光耦检测,发光二极管当作继电器看,可采用继电器自锁,当下次再次反接的话另一个继电器同样,2个继电器相互控制.本电路可验证极性变化时2路检测的变化,图中S1为模拟电池…...

【AI】《动手学-深度学习-PyTorch版》笔记(八):线性回归

AI学习目录汇总 1、线性模型 线性函数如下: y ^ = w 1 x 1 + . . . + w d x d...

uniapp 持续获取定位(登录状态下才获取)(不采用定时器)(任意页面都可监听定位改变)

基于上次文章做了优化和改良,保证在登录状态下才获取定位信息 uniapp 小程序实时且持续获取定位信息(全局设置一次)(单页面监听定位改变)(不采用定时器)_uniapp小程序定位_前端小胡兔的博客-CSDN博客本篇文章实现了uniapp 微信小程序实时获取定位信息,小程序打开即可持续获取定…...

【Linux】Linux工具

Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员&#xff0c;2024届电子信息研究生 目录 一、Linux安装软件&#xff1a; 1.yum安装 2.Linux和Windows文件互传 问题: 3.yum卸载软件 二、vim编辑器 1.命令模式 2.vim配置项说明 3.vim操作总结 一、Linux安装软件&#…...

ImageNet1000分类,英文原版,中文翻译版

在训练模型时&#xff0c;可以用imagenet中的图片进行分类学习&#xff0c;imagenet中分类介绍 一、官网网址 imagenet官网网址 1-398&#xff1a;动物 399-924&#xff1a;物品 925-1000&#xff1a;食物 二、官方英文版分类 n01440764 tench, Tinca tinca n01443537 gold…...

「Qt」常用事件介绍

&#x1f514; 在开始本文的学习之前&#xff0c;笔者希望读者已经阅读过《「Qt」事件概念》这篇文章了。本文会在上篇文章的基础上&#xff0c;进一步介绍 Qt 中一些比较常用的事件。 0、引言 当我们想要让控件收到某个事件时做一些操作&#xff0c;通常都需要重写相应的事件处…...

小鱼深度产品测评之:阿里云容器服务器ASK,一款不需购买节点,即可直接部署容器应用。

容器服务器ASK测评 1、引言2、帮助文档3、集群3.1集群列表3.1.1 详情3.1.1.1概览 tab3.1.1.2基本信息 tab3.1.1.4集群资源 tab3.1.1.5 集群日志 tab3.1.1.6 集群任务 tab 3.1.2 应用管理3.1.2.1 详情3.1.2.2 详情3.1.2.3 伸缩3.1.2.4 监控 3.1.3 查看日志3.1.3.1 集群日志3.1.3…...

RK3588平台开发系列讲解(文件系统篇)什么是 VFS

文章目录 一、什么是 VFS二、VFS 数据结构2.1、超级块结构2.2、目录结构2.3、文件索引结点2.4、打开的文件2.5、四大对象结构的关系沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 今天我们一起来瞧一瞧 Linux 是如何管理文件,也验证一下 Linux 那句口号:一切皆为文…...

Less is More: Focus Attention for Efficient DETR

摘要 类似detr的模型显著提高了探测器的性能&#xff0c;甚至优于经典的卷积模型。然而&#xff0c;在传统的编码器结构中&#xff0c;所有的标记都带来了冗余的计算负担。最近的稀疏化策略利用了信息标记的一个子集&#xff0c;通过稀疏编码器来降低注意力的复杂性&#xff0…...

后进先出(LIFO)详解

LIFO 是 Last In, First Out 的缩写&#xff0c;中文译为后进先出。这是一种数据结构的工作原则&#xff0c;类似于一摞盘子或一叠书本&#xff1a; 最后放进去的元素最先出来 -想象往筒状容器里放盘子&#xff1a; &#xff08;1&#xff09;你放进的最后一个盘子&#xff08…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

Java 语言特性(面试系列1)

一、面向对象编程 1. 封装&#xff08;Encapsulation&#xff09; 定义&#xff1a;将数据&#xff08;属性&#xff09;和操作数据的方法绑定在一起&#xff0c;通过访问控制符&#xff08;private、protected、public&#xff09;隐藏内部实现细节。示例&#xff1a; public …...

反向工程与模型迁移:打造未来商品详情API的可持续创新体系

在电商行业蓬勃发展的当下&#xff0c;商品详情API作为连接电商平台与开发者、商家及用户的关键纽带&#xff0c;其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息&#xff08;如名称、价格、库存等&#xff09;的获取与展示&#xff0c;已难以满足市场对个性化、智能…...

页面渲染流程与性能优化

页面渲染流程与性能优化详解&#xff08;完整版&#xff09; 一、现代浏览器渲染流程&#xff08;详细说明&#xff09; 1. 构建DOM树 浏览器接收到HTML文档后&#xff0c;会逐步解析并构建DOM&#xff08;Document Object Model&#xff09;树。具体过程如下&#xff1a; (…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务&#xff1a; test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

有限自动机到正规文法转换器v1.0

1 项目简介 这是一个功能强大的有限自动机&#xff08;Finite Automaton, FA&#xff09;到正规文法&#xff08;Regular Grammar&#xff09;转换器&#xff0c;它配备了一个直观且完整的图形用户界面&#xff0c;使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)

前言&#xff1a; 最近在做行为检测相关的模型&#xff0c;用的是时空图卷积网络&#xff08;STGCN&#xff09;&#xff0c;但原有kinetic-400数据集数据质量较低&#xff0c;需要进行细粒度的标注&#xff0c;同时粗略搜了下已有开源工具基本都集中于图像分割这块&#xff0c…...