pcie学习记录(1):基于xdma的工程搭建
写在最前面
Vivado的版本!!!(后面验证是错误的思路,可以不用看)
XDMA PCIE开发期间两个版本问题的解决https://blog.csdn.net/kris_paul/article/details/128131527
我说实话在这里卡了很久,哪怕是最简单的bram的测试。我的板子是ALINX的AKU60,FPGA芯片为xcku060-ffva1156-2-i。我前两周的开发环境是vivado2020.2,这是我实验室电脑上安装的版本。但是一直跑不通,我一直以为是程序的问题。后面重新弄了几次,还是不行。运行xilinx官方的simple_xdma,exe时,甚至会出现蓝屏卡死,重启的状况。
后面我查看了ALINX的开发手册,将他们提供的pcie测试历程烧录进板卡,可以成功正常通信:
然后我将这个例程用我当前的开发环境(vivado2020.2)打开,什么都不操作,只是进行了ip核升级,然后重新进行了bitstream的生成,再烧录进去,就不行了!
后面我用了ALINX手册中的开发环境,重新装了一个vivado2017.4,就可以了!!!所以我一直卡在了版本问题。大家的开发板如果有例程的话,建议用对应的开发环境。
我将这个问题在xilinx的中文社区进行了提问,等待大佬能够解决。
解决了!!!
哈哈哈,解决了,不是版本问题,是xdma的参考时钟需要进行约束,总结:少了一句约束,在这居然卡了两三周,我真是。以后得注意:
xdma约束https://adaptivesupport.amd.com/s/feed/0D54U00008xrzf6SAA?language=zh_CN 这是在amd官网找到的解决方案。
我一开始是在综合的时候进行的io口分配,导致xdc中的约束是这样的:
然后进行implement也没时序报错,就一直修改bd设计了,没关注这里了。
后面我又生成了一个xdma的例程(因为一直在进行bd设计,所以没有考虑这个步骤,属实是粗心了)。提供了一个约束文件,里面是这样的:
然后王博的xdc中也是这样:
然后就瞬间懂了,加了一个时序约束,终于在我的vivado2020.2上测试成功了!
前面的疑问就不删了(vivado版本问题),也算是自己探索的一步骤。
0,参考
大家一定要去学下下这个:花个3,4天简单通读,有一个简单的结构在脑子中,后面使用的时候随时查询各自详细的部分。PCIe扫盲系列博文连载目录篇(第一阶段)-Felix-电子技术应用-AET-中国科技核心期刊-最丰富的电子设计资源平台 (chinaaet.com)https://blog.chinaaet.com/justlxy/p/5100053251
记录一下在学习过程中参考的资料:
1,xdma网上一般推荐在block_design里面实现,所以关于地址映射需要考虑
block design中关于地址映射问题https://blog.csdn.net/m0_61298445/article/details/126323544
2,板卡与pc机的pcie确认在上电时就会确认,所以需要将程序烧写进板卡的flash中
烧写程序进flashhttps://blog.csdn.net/weixin_42837669/article/details/121625188擦除flash中程序
https://blog.csdn.net/AlibabaApple/article/details/123114304
3,XDMA因为其接口众多,建议使用block_design开发,网上查询的资料都是BD为主。
参考模块搭建:
Xilinx XDMA说明和测试-MMhttps://blog.csdn.net/weixin_43956013/article/details/128608551【FPGA干货教程】10分钟上手Xilinx XDMA IP核 手把手搭建测试工程
https://www.bilibili.com/video/BV1QsU7Y8EgS/?spm_id_from=333.337.search-card.all.click&vd_source=ab9cce66f1d596ced0a60f784d99d365
4,站内很好的关于xdma的模块介绍
新手学习Vivado XDMA (1) - 配置详细分析https://blog.csdn.net/qq_18553915/article/details/136524372 PCIE XDMA调试记录
https://blog.csdn.net/hy_520520/article/details/120545128
5,GitHub的王博
WangXuan95 / Xilinx-FPGA-PCIe-XDMA-Tutorialhttps://github.com/WangXuan95/Xilinx-FPGA-PCIe-XDMA-Tutorial?tab=readme-ov-file
工程编写:
xdma使用gen3.0x8
1,xcku060_bd_xdma_bram
1,bram_bar:与xdma的bar_axi_lite接口相连接,用于测试bar空间的使用。
2,bram_ddr:与xdma相连接,用于数据交互。
3,几个ila,用于上板时抓取数据。
2,xcku060_bd_xdma_ddr
上图为我搭建的xdma测试用例,包括:
1,bram:与xdma的bar_axi_lite接口相连接,用于测试bar空间的使用。
2,ddr4:与xdma相连接,用于数据交互。
3,几个ila,用于上板时抓取数据。
上板测试
推荐使用两台电脑,一台用于抓取ila数据,帮助我们更好的去了解xdma的数据流向与详情。另一台用于插FPGA板卡。
实物连接:
1,xcku060_bd_xdma_bram
一开是认为是版本问题,在vivado2017.4中开发的。后续也成功的在vivado2020.2中实现。
这个模块实现的是基于bram的xdma测试模块:bd设计框图如下:
使用一个bam与xdma的M_AXI相连接,进行交互数据的处理。另外一个bram与AXI-LITE相连接,作为bar空间的存储单元。
ila抓取,使用Drive Wizard进行bar空间的写入(写入12345678):
速度测试:
数据AXI抓取:
2,xcku060_bd_xdma_ddr
与前面相比只是将存储数据的容器从bram换成了ddr,这也间接证明了bd在设计带AXI接口时的快速开发能力。
mig pass:
xilinx官方例程:
测速计算与后续基本一致:
ila抓取,数据:
ila抓取,axi_lite,bar空间:
测速软件:可以看到相比与bram, 写速率快乐很多
读写同时测试:
只读测试:
只写测试:
调试完毕。
相关文章:
pcie学习记录(1):基于xdma的工程搭建
写在最前面 Vivado的版本!!!(后面验证是错误的思路,可以不用看) XDMA PCIE开发期间两个版本问题的解决https://blog.csdn.net/kris_paul/article/details/128131527 我说实话在这里卡了很久ÿ…...
HTML5 动画效果:淡入淡出(Fade In/Out)详解
HTML5 动画效果:淡入淡出(Fade In/Out)详解 淡入淡出(Fade In/Out)是一种常见的动画效果,使元素逐渐显现或消失,增强用户体验。以下是淡入淡出的详细介绍及实现示例。 1. 淡入淡出的特点 平滑…...
AI赋能R-Meta分析核心技术:从热点挖掘到高级模型、助力高效科研与论文发表
Meta分析是针对某一科研问题,根据明确的搜索策略、选择筛选文献标准、采用严格的评价方法,对来源不同的研究成果进行收集、合并及定量统计分析的方法,现已广泛应用于农林生态,资源环境等方面,成为Science、Nature论文的…...
maven如何从外部导包
1.找到你项目的文件位置,将外部要导入的包复制粘贴进你当前要导入的项目下。 2.从你的项目目录下选中要导入的包的pom文件即可导包成功 注意一定是选中对应的pom文件 导入成功之后对应的pom.xml文件就会被点亮...
使用python发送gmail邮件
首先要有一个gmail邮箱:https://accounts.google.com/lifecycle/steps/signup/name?ddm1&dshS237022023:1736341599452877&flowEntrySignUp&flowNameGlifWebSignIn&TLAE–Llw01wbAW0P9gYEloi_C5wBurZd0MeIi4B1j8daH-72CNcc-1qwapbIRA_UZ&conti…...
Android 绘制学习总结
1、刷新率介绍 我们先来理一下基本的概念: 1、60 fps 的意思是说,画面每秒更新 60 次 2、这 60 次更新,是要均匀更新的,不是说一会快,一会慢,那样视觉上也会觉得不流畅 3、每秒 60 次,也就是 1…...
推动多语言语音科技迈向新高度:INTERSPEECH 2025 ML-SUPERB 2.0 挑战赛
随着语音技术在各领域应用的迅速扩展,全球语言与口音的多样性成为技术进一步突破的重大挑战。为了应对这一难题,来自卡内基梅隆大学(CMU)、斯坦福大学(Stanford University)、乔治梅森大学(George Mason Un…...
『SQLite』子查询可以这样用
摘要:本节主要讲子查询的使用,可以在查询、更新、修改、删除等操作中使用。 什么是子查询? 子查询是一种在 SELECT-SQL 语言中嵌套查询下层的程序模块。当一个查询是另一个查询的条件时,称之为子查询(Sub Query&#…...
thingsboard通过mqtt设备连接及数据交互---记录一次问题--1883端口没开,到服务器控制面板中打开安全组1883端口
1,链接不上:原因是1883端口没开,到服务器控制面板中打开安全组1883端口 2,参考链接: https://blog.csdn.net/bujingyun8/article/details/120024788...
Pod状态为“被驱逐(evicted)”的解决思路
在Kubernetes集群中,Pod状态为“被驱逐(evicted)”表示Pod无法在当前节点上继续运行,已被集群从节点上移除。针对Pod被驱逐的问题,以下是一些常见的解决方法: 一、识别被驱逐的原因 资源不足:…...
【代码随想录-数组篇02】:双指针(快慢指针)法相关力扣练习题
提示1:本篇共包含5道题,全部用python语言进行实践,看会不如行动会,请大家多多实践~ 提示2:强烈推荐 代码随想录 提示3:博主最近在跟着【代码随想录】进行刷题,有小伙伴有想法的可以私…...
Docker基础
Docker基础 命令介绍 其中,比较常见的命令有: 命令说明文档地址docker pull拉取镜像docker pulldocker push推送镜像到DockerRegistrydocker pushdocker images查看本地镜像docker imagesdocker rmi删除本地镜像docker rmidocker run创建并运行容器&am…...
计算机网络之---传输介质
传输介质的定义 传输介质是计算机网络中用于传递信号的物理媒介。它将数据从发送方传输到接收方,可以是有线的(如铜线、电缆、光纤等)或者无线的(如无线电波、微波等)。传输介质的作用是承载和传播物理信号(…...
数据结构:LinkedList与链表—面试题(三)
目录 1、移除链表元素 2、反转链表 3、链表的中间结点 4、返回倒数第k个结点 5、合并两个有序链表 1、移除链表元素 习题链接https://leetcode.cn/problems/remove-linked-list-elements/description/ 描述:给你一个链表的头节点 head 和一个整数 val ÿ…...
P10424 [蓝桥杯 2024 省 B] 好数
题目描述 一个整数如果按从低位到高位的顺序,奇数位(个位、百位、万位……)上的数字是奇数,偶数位(十位、千位、十万位……)上的数字是偶数,我们就称之为“好数”。 给定一个正整数 N…...
MySQL - 子查询和相关子查询详解
在SQL中,子查询(Subquery)和相关子查询(Correlated Subquery)是非常强大且灵活的工具,可以用于执行复杂的数据检索和操作。它们允许我们在一个查询中嵌套另一个查询,从而实现更复杂的逻辑和条件…...
MySQL入门学习笔记
第一章 数据库系统概述 数据库的4个基本概念 数据、数据库、数据库管理系统、数据库系统是与数据库技术密切相关的4个基本概念 数据 数据是数据库中存储的基本对象,描述事物的符号记录称为数据,数据的表现形式还不能完全表达其内容,需要…...
使用vue-pdf预览pdf和解决pdf电子签章显示问题
使用vue-pdf预览pdf和解决pdf电子签章显示问题 第一步:npm install vue-pdf 第二步页面使用vue-pdf <template><div class"pdf1"><Pdf v-for"i in numPages" :key"i" :src"src" :page"i" />…...
MySQL Windows 11 的 MySQL 配置文件 (my.ini) 路径查找指南
✅ Windows 11 的 MySQL 配置文件 (my.ini) 路径查找指南 在 Windows 11 上,MySQL 的 ini 配置文件(通常是 my.ini 或 my.cnf)的位置取决于 MySQL 的安装方式。下面是一些常见的路径和方法来找到这个配置文件。 🔍 方法 1&#…...
记一次k8s下容器启动失败,容器无日志问题排查
问题 背景 本地开发时,某应用增加logback-spring.xml配置文件,加入必要的依赖: <dependency><groupId>net.logstash.logback</groupId><artifactId>logstash-logback-encoder</artifactId><version>8…...
Delaunay三角刨分算法理解及c#过程实现
Delaunay三角刨分算法理解及c#过程实现 0 引言1 关于三角剖分2 Delaunay三角剖分算法实现及对比3 结语0 引言 💻💻AI一下💻💻 三角剖分是什么? 三角剖分是一种将平面或曲面划分成三角形集合的方法。在二维平面中,给定一个平面区域(可以是多边形等),通过连接区域…...
【单片机】实现一个简单的ADC滤波器
实现一个 ADC的滤波器,PT1 滤波器(也称为一阶低通滤波器),用于对输入信号进行滤波处理。 typedef struct PT1FilterSettings PT1FilterSettings; struct PT1FilterSettings {//! last Filter output valueuint32_t filtValOld;//…...
在 Ubuntu 22.04 上从 Wayland 切换到 X11的详细步骤
在 Ubuntu 22.04 上从 Wayland 切换到 X11,步骤其实很简单,主要是在登录界面进行选择。以下是详细的步骤: 步骤 1:退出当前会话 首先,点击屏幕右上角的用户菜单,选择 注销 或 退出,以退出当前…...
NOVA:AutoRegressive Video Generation Without Vector Quantization——自回归视频生成无需向量量化
这篇文章介绍了一种名为NOVA的新型自回归模型,用于高效的文本到图像和文本到视频生成。以下是文章的主要内容总结: 1. 研究背景与问题 自回归大语言模型(LLMs)在自然语言处理(NLP)中表现出色,但…...
79 Openssl3.0 RSA公钥加密数据
1 引言 最近不小心用到了openssl3.0,项目中需要使用rsa非对称加解密算法,所以把openssl3.0使用公钥加密数据的函数调用摸了一遍。 之所以记录此篇文章,是因为网络上大多数是openssl3.0以前的版本的函数接口,而openssl3.0之后已经丢…...
基于单片机的数字电子秒表设计
此文章谨为课设记录 一、实验要求 题目六 数字电子时钟 基本要求: (1) 设计一个单片机电子时钟,设计的电子时钟通过数码管显示; (2) 具有能通过按键实现设置时间的功能; (3) 显示格式为小时十位、小时个位,分…...
rust学习——环境搭建
rust安装:https://kaisery.github.io/trpl-zh-cn/ch01-01-installation.html 1、vscode装插件: toml语法支持 依赖管理 rust语法支持 2、创建demo 3、查看目录 4、执行文件的几种方式: rust安装:https://www.rust-lang.org/z…...
解读若依框架中的 @Xss 注解
文章目录 1. 背景与问题定义什么是 XSS 攻击?XSS 的常见类型传统解决方案的局限性 2. Xss 注解详解Xss 注解源码解析注解核心要素 XssValidator 实现解析核心逻辑 3. 应用场景场景一:表单输入校验示例代码 场景二:API 接口参数校验示例代码 4…...
ADO.NET知识总结4---SqlParameter参数
目录 5.1 SqlParameter介绍 5.2 SqlParameter创建参数方式 5.3 添加命令参数 5.4 参数使用 5.1 SqlParameter介绍 SqlParameter: 表示SqlCommand对象的参数,或与DataSet中列的映射。 常用属性 DbType 参数的SqlDbType(即 数据库的类型而言&#x…...
分布式主键ID生成方式-snowflake雪花算法
这里写自定义目录标题 一、业务场景二、技术选型1、UUID方案2、Leaf方案-美团(基于数据库自增id)3、Snowflake雪花算法方案 总结 一、业务场景 大量的业务数据需要保存到数据库中,原来的单库单表的方式扛不住大数据量、高并发,需…...
【顶刊TPAMI 2025】多头编码(MHE)之极限分类 Part 4:MHE表示能力
目录 1 MHE的表示能力2 基于Frobenius-范数的低秩逼近3 基于CE的低秩近似 论文:Multi-Head Encoding for Extreme Label Classification 作者:Daojun Liang, Haixia Zhang, Dongfeng Yuan and Minggao Zhang 单位:山东大学 代码:h…...
Spring Boot 项目启动报 NoClassDefFoundError 异常的原因分析与解决方案 - jackson 版本不一致
目录 报错: 问题分析: 解决方案: 方案 1:对 Jackson 版本进行统一 方案 2:升级 Springfox 版本 方案 3:替换 Springfox 为 springdoc-openapi(推荐) 方案 4:排除冲突的 Jack…...
Ubuntu网络连接问题(笔记本更换wifi后,虚拟机连不上网络)
1、笔记本更换wifi后,虚拟机的IP地址变了,然后就连不上网络了(主机笔记本连接wifi正常上网) 2、修改子网地址(按照ubutun的ip设置子网掩码) 3、Ubuntu已经显示网络连接正常了,但是就是无法上网&…...
vue3中el-table实现多表头并表格合并行或列
1、el-table中添加事件 :span-method"genderSpanCity" <el-table :span-method"genderSpanCity":data"data.tableData":fit"true" table-layout"fixed" header-align"center" stripestyle"width:100%;he…...
Selenium 八大元素定位方法及场景扩展
Selenium 提供了八种常见的元素定位方法,用于在网页中准确找到需要操作的元素。以下是详细介绍以及一些特殊场景的解决方案。 1. ID 定位 用法: 通过元素的唯一 id 属性进行定位。 element driver.find_element(By.ID, "element_id")使用场…...
计算机网络之---网络拓扑
什么是网络拓扑 为什么需要网络拓扑 网络拓扑有哪些 什么是网络拓扑 网络拓扑 是指网络中各设备(如计算机、路由器、交换机等)如何连接以及它们之间数据流动的结构和布局。它是网络设计的一个关键方面,决定了网络的性能、可扩展性、可靠性…...
YOLO11新王登基!实战改进版,杀穿顶会!
众所周知,YOLO一直是发论文的大热门!而YOLO11做为其的最新版本,必然会在2025成为各大顶会的“宠儿”! 主要在于:一方面,YOLO其他系列的改进早已卷成“红海”,而YOLO11提出才几个月,…...
【《游戏编程模式》实战04】状态模式实现敌人AI
目录 1、状态模式 2、使用工具 3、状态模式适用范围 4、实现内容 5、代码及思路 Enemy.cs EnemyState.cs 6、unity里的设置 7、运行效果展示 1、状态模式 “允许一个对象在其内部状态改变时改变自身的行为。对象看起来好像是在修改自身类。” 就是一个对象能随着自己…...
Linux 环境(Ubuntu)部署 Hadoop 环境
前置准备 准备三台机器 cat /etc/hosts 192.168.1.7 hadoop-master 192.168.1.11 hadoop-slave01 192.168.1.12 hadoop-slave02Linux 环境 cat /etc/os-release PRETTY_NAME"Ubuntu 24.10" NAME"Ubuntu" VERSION_ID"24.10" VERSION"24.…...
裸机器搭建k8s部署 1.28.10版本
问了搭建k8s集群踩了很多坑,问题主要出现在网络插件处,因此主要是master节点操作问题。重新走一下流程整理一下笔记。 目录 虚拟机准备 虚拟机 系统版本信息 修改镜像地址 配置静态ip 关闭防火前和交换分区 转发 IPv4 并让 iptables 看到桥接流量…...
np.ndarray 是 NumPy 库中的核心数据结构
np.ndarray 是 NumPy 库中的核心数据结构,代表一个多维数组(或称为矩阵)。它是一个高效的容器,用于存储和操作数据,可以包含任意类型的数据(整数、浮点数、布尔值等)。 主要特点: …...
全新免押租赁系统打造便捷安全的租赁体验
内容概要 全新免押租赁系统的推出,标志着租赁行业的一次重大变革。这个系统的最大特点就是“免押金”,大大减轻了用户在租赁过程中的经济负担。从此,不再需要为一部手机或其他商品支付高昂的押金,用户只需通过简单的信用评估&…...
C语言——结构体,位段,枚举和联合
目录 前言 结构体 1含义 2语法 3匿名结构体 4结构体自引用 5结构体的定义与初始化 6内存对齐 7修改对齐数 8结构体传参 位段 1含义 2位段的内存分配 编辑3位段的问题 4位段的应用 枚举 1含义 2定义 3枚举优点 4枚举使用 联合 1含义 2定义 3特点 4计…...
现场展示deepseek VS openAI o1模型大对比
DeepSeek-V3 模型的发布在 AI 领域引起了广泛关注。作为一款拥有 6850 亿参数的混合专家(MoE)语言模型,DeepSeek-V3 在多个基准测试中表现出色,甚至超越了一些闭源模型。其在 Aider 代码能力排行榜上的正确率达到 48.4%࿰…...
深度解析 tanh tanh 激活函数
1. 引言 在现代深度学习中,激活函数(Activation Function)是神经网络的核心组件之一。它的主要作用是引入非线性,从而使神经网络能够学习和表示复杂的非线性关系。如果没有激活函数,神经网络的输出将只是输入的线性组…...
【Golang 面试题】每日 3 题(二十五)
✍个人博客:Pandaconda-CSDN博客 📣专栏地址:http://t.csdnimg.cn/UWz06 📚专栏简介:在这个专栏中,我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞👍收藏…...
Unity Canvas中显示粒子特效
首先在场景中新建一个粒子特效 修改一下参数 1.改变粒子特效的渲染层级,层级修改为UI层,由UI相机渲染 使用粒子特效的Sorting Layer ID和Order In Layer,Sorting Layer ID设置为UI(如果没有UI层则新建就好了),对UI进行排序 对于要显示在前的UI组件添加Canvas组件,设置O…...
excel精简使用工具
1.获取sheet1的行填充到sheet2的列 希望在 Excel 中使用 INDEX 函数从不同的列中提取数据,并且每一行都引用不同的列。为了实现这个目标,你可以使用 COLUMN 函数来动态获取列的偏移量。 为了避免手动输入每个单元格的公式,你可以使用以下公…...
上手体验微软全新整合的王炸平台Fabric
体验确实不错,微软强大的生态能力。 把可视化,数仓,数据胡,数据工厂,机器学习,数据监控等技术都整合到一个平台了。所有数据全都存储在统一的one lake数据中心,消除数据孤岛问题。而且不同角色可…...
Linux 下 Vim 环境安装踩坑问题汇总及解决方法(重置版)
导航 安装教程导航 Mamba 及 Vim 安装问题参看本人博客:Mamba 环境安装踩坑问题汇总及解决方法(初版)Linux 下Mamba 及 Vim 安装问题参看本人博客:Mamba 环境安装踩坑问题汇总及解决方法(重置版)Windows …...