Windows系统读取XDMA实际运行链路速度和PCIE带宽

在我们平常设计XDMA的时候,经常会遇到一个问题:

        在Vivado中设计的XDMA IP中选择的PCIE带宽和链路速度是理想的,但是下到板卡运行的时候,测量速度却发现读写速度根本不是理想中的速度,找不到问题,无法证明我们代码的问题还是硬件或者主机问题。

这样我们就可以利用这篇文章来获取XDMA在Windows系统下实际运行的速度和带宽。下面将以一个例子来介绍:

一、首先建立一个XDMA读写DDR的工程

         这边就不多介绍了,不会的小伙伴记得看我以前的文章,主要把XDMA的配置来给大家看看:

我这边选择的PCIE带宽为x8,速度等级为5.0GT/s

接下来就把DDR接上,然后把工程编译,得到bit文件。

二、PCIE理论传输速率/吞吐量运算

首先我的开发板的PCIE为:PCI-e2.0协议

        以我的开发板和上图xmda配置来计算:

        吞吐量=传输速率 * 编码方案 

        PCI-e2.0 协议支持 5.0 GT/s,即每一条Lane 上支持每秒钟内传输 5G个Bit;但这并不意味着PCle 2.0协议的每-条Lane支持 5Gbps 的速率。

        为什么这么说呢?因为PCle 2.0 的物理层协议中使用的是 8b/10b 的编码方案。 即每传输8个Bit,需要发送10个Bit;这多出的2个Bit并不是对上层有意义的信息。

那么,PCle 2.0协议的每-条Lane支持5*8/10=4 Gbps = 500 MB/s 的速率。

那么我的工程中PCle 2.0 x8的通道为例,x8的可用带宽为4*8=32 Gbps = 4 GB/s。

下图为其他PCIE配置的传输速率图,可根据自己的自行对比:

可以得到我的配置和开发板,最大的传输速率为4GB/s = 4000MB/s,但是一般PCIE的有效传输速率为70% - 80%,也就是我的传输速率要到达 2800MB/s,才算正常,下面我们将下板进行测试一下。

三、下板测试

        把bit文件下载到开发板,并对主机进行热重启后,打开测试速度的软件:        

只需要测量下面两个即可:

>> 2 - XDMA采集卡C2H从采集卡读数到上位机速度测试 (C2H: Card-to-Host)
>> 3 - XDMA采集卡H2C从上位机读数到采集卡速度测试 (H2C: Host-to-Card)

按照对应的数字编号,输入即可进行测速:

可以看出xdma读写速度分别为:1000M、1300M,显然没有达到我们的预期

这个时候就很难判断是我们的代码错了,还是硬件有问题,还是PCIE自动降级了,一般PCIE如果跑不到最大的带宽速度,会自动降级。

四、查看实际运行状态

        在Windows系统查看PCIE实际运行状态:

        右击我的电脑 - 选择管理,然后打开设备管理器

找到XDMA驱动,并右击查看属性,并点到详细信息:

        在属性选项中选择:PCI最大读取请求大小       

这里可以看到,显示的值为0x02,即PCI-e2.0,这个没错!!

然后再选择:PCI最大链路带宽

可以看出显示的值为0x04,即x4,但是我们选择的是x8,说明我们的主机或者开发板不支持x8的速率,这样我们就能排除我们代码的问题了,可以成功帅锅了,舒服!!!

接下里就让他们去找问题吧!!!!

如果感觉文章对您有用,麻烦三连支持一下,方便下次用到的时候,就可以快速找到我,非常感谢您的支持!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/802028.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Octopus:2B 参数语言模型即可媲美 GPT-4 的函数调用性能

近年来,大语言模型在 PC、智能手机和可穿戴设备的操作系统中应用逐渐成为趋势。 例如,MultiOn (Garg, 2024) 和 Adept AI (Luan, 2024) 等 AI 助理工具,以及 Rabbit R1 (Lyu, 2024) 和 Humane AI Pin (Chaudhri, 2024) 等 AI 消费产品在消费者…

蓝桥杯 交通信号 2022研究生组

问题: Dijstra算法变形题,有向边分正行和逆行方向,注意逆行的绿灯时间是正行的红灯时间。 这题的关键是理清从当前节点出发,到下一个节点是哪一时刻,理清这一点后,再跑Dijstra算法求最短路。 假设curr_t时…

JavaScript(三)-Web APIS

文章目录 DOM事件进阶事件流事件流与两个阶段说明事件捕获事件冒泡阻止冒泡解绑事件 事件委托其他事件页面加载事件元素滚动事件页面尺寸事件 元素尺寸与位置 DOM事件进阶 事件流 什么是事件流 事件流指的是事件完整执行过程中的流动路径 事件流与两个阶段说明 捕获与冒泡 …

简介:基于Web的产品3D

基于 Web 的产品 3D 通过可视化界面获得各种选项来个性化他们的产品,例如颜色、材料、尺寸、文字、徽标、零件等。 在过去几年中,随着 3D 建模和渲染软件的出现,3D 渲染现在更常用于营销和促销目的。设计师、制造商和营销人员使用 3D 产品渲…

政安晨:【Keras机器学习实践要点】(二十一)—— MobileViT:基于变换器的移动友好图像分类模型

目录 简介 导入 超参数 MobileViT 实用程序 政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 收录专栏: TensorFlow与Keras机器学习实战 希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正! …

AI 创业指难(一) :Stable Diffusion AI 绘画怎么用

一. 前言 一年不到,AI对生活和工作的影响已经逐步体现。所以千万别掉队了,也许 AI 不能成为我们的主要工作,但是如何借助 AI 实现副业的扩展同样值得思考。 这一篇就来讲一个 AI 绘画工具,这个工具我也是才上手不久,…

冻干可以长期给猫咪吃吗?五款顶尖生骨肉冻干盘点推荐

近年来,冻干猫粮因其高品质而备受喜爱,吸引了无数猫主人的目光,像我这样的养猫老手早已开始冻干喂养。但对于新手养猫的人来说,他们可能会对冻干猫粮感到陌生,并产生疑问:这到底是什么?冻干可以…

.NET 设计模式—装饰器模式(Decorator Pattern)

简介 装饰者模式(Decorator Pattern)是一种结构型设计模式,它允许你在不改变对象接口的前提下,动态地将新行为附加到对象上。这种模式是通过创建一个包装(或装饰)对象,将要被装饰的对象包裹起来…

看看你的身体出现了哪些症状,要当心了!

身体出现以下五个症状,你要小心了。 夜间尿频,不要以为晚上喝水喝多了,很有可能是你的血糖升高了,血糖过高的人,口腔很容易受到刺激,而感到非常的干燥,所以会通过补充水分的方式来缓解&#xff…

基于java+springboot+vue实现的农产品销售系统(文末源码+Lw)23-231

摘 要 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统乐乐农产品销售系统信息管理难度大,容错率低…

Springboot-redis整合

Springboot-redis命令行封装 前言 Redis(Remote Dictionary Server),即远程字典服务,是一个开源的使用ANSI C语言编写的、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。Redis也是现…

CSS导读 (Emmet语法)

(大家好,今天我们将继续来学习CSS的相关知识,大家可以在评论区进行互动答疑哦~加油!💕) 目录 续:七、Chrome调试工具 一、Emmet语法 1.1 快速生成HTML结构语法 1.2 快速生成CSS样式语法 &…

LangChain-10 Agents langchainhub 共享的提示词Prompt

LangChainHub 的思路真的很好,通过Hub的方式将Prompt 共享起来,大家可以通过很方便的手段,短短的几行代码就可以使用共享的Prompt。 我个人非常看好这个项目。 官方推荐使用LangChainHub,但是它在GitHub已经一年没有更新了&#x…

flutter多入口点entrypoint

native中引擎对象本身消耗内存(每个引擎对象约莫消耗42MB内存) 多引擎:native多引擎>启动>flutter多入口点entrypoint>多main函数>多子包元素集>多(子)程序 单引擎(复用):native单引擎>复用启动>flutter多入口点entrypoint>多m…

高等数学基础篇之关于圆,椭圆,圆环的应用

文章目录 前言 1.圆 1.1标准方程 1.2偏心圆 1.3参数方程 2.椭圆 2.1标准方程 2.2参数方程 2.3极坐标 3.圆环 4.扇形 前言 这篇文章主要是应对二重积分出现的一些关于圆的积分域,让大家大概了解一下,不是很详细,因为二重积分对几何…

uniapp请求后端接口

新建文件夹utils const request (config) > {// 拼接完整的接口路径config.url http://mm.test.cn config.url;//这里拼接的是访问后端接口的地址,http://mm.test.cn/prod-api/testconsole.log(config.url)//判断是都携带参数if(!config.data){config.data …

7-26 单词长度

题解&#xff1a; #include <bits/stdc.h> using namespace std; int main() {string s;getline(cin,s); //读取一行字符串char c; //记录字符int cnt 0; //用来记录长度int flag 0; //用来判断是否已经输出了第一个单词的长度for (int i 0;i<s.size(); i)…

阿里云新手用户建站必看攻略,从注册域名到网站上线需完成步骤

无论是个人还是企业新手用户&#xff0c;搭建个人或者企业网站都必须进过注册域名、购买云服务器、搭建网站、ICP备案、解析域名等步骤&#xff0c;本文为大家展示阿里云新手用户建站过程中从注册域名到网站上线需要完成的具体步骤。 1、选购域名 域名是互联网世界的门牌号码&…

什么是HW,企业如何进行HW保障?

文章目录 一、什么是HW二、HW行动具体采取了哪些攻防演练措施三、攻击方一般的攻击流程和方法四、企业HW保障方案1.建意识2.摸家底3.固城池4.配神器5.增值守 一、什么是HW 网络安全形势近年出现新变化&#xff0c;网络安全态势变得越来越复杂&#xff0c;黑客攻击入侵、勒索病…

【JavaWeb】Day37.MySQL概述——数据库设计-DML

数据库操作-DML DML英文全称是Data Manipulation Language(数据操作语言)&#xff0c;用来对数据库中表的数据记录进行增、删、改操作。 1.增加(insert) insert语法&#xff1a; 向指定字段添加数据 insert into 表名 (字段名1, 字段名2) values (值1, 值2); 全部字段添加数据…