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,一经查实,立即删除!

相关文章

General error during semantic analysis: Unsupported class file major version 61

新买的信创笔记本,Linux系统,安装完Java和Android Studio之后,运行报如下错误。根本原因是打开旧项目时,Android Studio 的gradle的JDK 版本过高导致。 FAILURE: Build failed with an exception.* Where: Initialization script /tmp/ijMapper1.gradle* What went wrong:…

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事件进阶 事件流 什么是事件流 事件流指的是事件完整执行过程中的流动路径 事件流与两个阶段说明 捕获与冒泡 …

从零开始精通RTSP之初识实时流协议

概述 在数字化浪潮席卷全球的今天,实时音视频通信已经成为人们日常生活、工作以及娱乐中不可或缺的一部分。无论是直播平台、在线会议、远程教育,还是安防监控系统,都离不开高效可靠的实时流传输技术。其中,RTSP作为一种广泛应用的…

Leetcode 539. 最小时间差

给定一个 24 小时制(小时:分钟 “HH:MM”)的时间列表,找出列表中任意两个时间的最小时间差并以分钟数表示。 示例 1: 输入:timePoints [“23:59”,“00:00”] 输出:1 示例 2: 输入&#xff…

简介:基于Web的产品3D

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

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

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

<网络安全>《72 微课堂<什么是靶场?>》

1 简介 网络安全靶场是一种模拟真实网络环境的技术或平台。 网络安全靶场基于虚拟化技术,能够模拟网络架构、系统设备、业务流程的运行状态及运行环境,用于支持网络安全相关的学习、研究、检验、竞赛和演习等活动,旨在提高人员及机构的网络…

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

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

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

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

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

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

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

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

算法练习第四十六天|多重背包、139. 单词拆分

题目描述 你是一名宇航员,即将前往一个遥远的行星。在这个行星上,有许多不同类型的矿石资源,每种矿石都有不同的重要性和价值。你需要选择哪些矿石带回地球,但你的宇航舱有一定的容量限制。 给定一个宇航舱,最大容量为…

基于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…

如何实现在线程池中执行远程调用可以获取到主线程的请求上下文

public class ThreadPoolConfig {/*** 异步任务执行线程池** return*/Bean("taskExecutor")public TaskExecutor taskExecutor() {ThreadPoolTaskExecutor executor new CustomThreadPoolExecutor();// 设置核心线程数executor.setCorePoolSize(5);// 设置最大线程数…

PyCharm安装教程:详细步骤解析

目录 1. 下载 PyCharm 安装包 2. 运行安装程序 3. 选择安装类型 4. 确认安装选项 5. 安装过程中 6. 安装完成 7. 启动 PyCharm 8. 选择版本 9. 登录或注册 10. 激活许可证 11. 激活成功 PyCharm 是一款功能强大的 Python IDE(集成开发环境)&a…