突破FPGA限制:TS-M4i系列数字化仪利用GPU加速实现高效块平均处理

news2024/11/13 2:03:31

一、应用背景

块或分段内存平均模式常用于在不同应用当中,移除信号中不相干的噪声。不管是哪家的数字化仪制造商,几乎所有基于FPGA实现的块平均模式都会受到块或者段内存大小的限。该限制一般取决于FPGA的容量,最大样品量通常在32k到500k之间。

本白皮书将展示如何使用TS-M4i系列数字化仪的高速PCIe流模式来在软件中实现块平均处理,从而突破FPGA的限制。我们用了TS-M4i.2230(1通道,5 GS/s,8位垂直分辨率,1.5 GHz带宽)作为例子,对比硬件和软件进行块平均处理的效果。

二、什么是块平均?

块平均模式可以用来移除随机噪声成分,提高重复信号的保真度。该模式允许对多次单段采集进行处理、累积和平均。这个过程减少了随机噪声,提高了重复信号的可见性,平均后的信号具有增强的测量分辨率和更高的信噪比(SNR)

块平均模式可用于改善雷达测试、天文学、质谱学、医学成像、超声波测试、光纤测试和激光测距等各种不同应用中的测量。

下面截图显示了一个较低电平的信号(大约2mV),完全被随机噪声覆盖的情形,以及使用不同平均因子获得的信号质量改进。虽然在原始单次采集中源信号基本无法看到,但10x平均时,能显示出实际上有5个信号峰。执行1000x的块平均可以进一步改善信号质量,揭示出带有二次最大值和最小值峰的完整信号形状。

通过块平均改善噪声问题,该示例使用了一个500MS/s采样率(每个采样点2ns)和14位分辨率的数字化仪制作

三、系统配置

为了兼顾更多老旧设备的性能状况,测试系统选用了一台德思特公司内的旧办公电脑,大致配置如下:

● 主板:技嘉GA-H77-D3H

● CPU:Intel i7-3770,4核3.4 GHz

● 运行内存:8 GB DDR3

● 硬盘:120 GB固态

● 操作系统:Win 7 64bit

● IDE:Visual Studio 2005标准版

主板上有一个空闲的PCIe Gen2 x8插槽,我们就使用该插槽来插数字化仪板卡。此时,德思特的TS-M4i板卡的流式传输可以达到满速,约3.4 GB/s(不考虑数据处理的情况下)。

四、软件实现

测试软件使用纯C++编写,并基于德思特流式传输示例。数字化仪板卡通过外部触发采集,板卡会自动在每个触发事件后获取一段数据。数据会先存储在板载内存中,然后通过分散聚集式式DMA直接传输到PC的运行内存,并在运行内存中进行累积,进而执行块平均操作。我们针对不同的配置方式和优化策略进行了测试,来看看分别能达到什么样的性能水平。

摘录出来的一小段源代码显示了多线程版本的主求和循环,这正是软件处理的关键部分,也是决定速度的部分。

以下列表提供了具体实现各个方面的一些信息和备注:

● 数据段大小:收到触发事件后将获取数据的样本点数量

● 平均次数:对于一个数据段,在算法重置前,整个过程中需要执行多少次平均前的累加操作。

● 通知大小:硬件生成中断所需的数据量。该参数决定了整个平均循环的速度。如果通知大小大于数据段大小,则会在一次中断中传输多个数据段的内容,这将减少线程通信和中断处理的额外开销。

● 缓冲区大小:DMA传输的目标缓冲区整体大小。在我们的实验中,这个缓冲区固定等于通知大小的16倍。

● 触发速率:作为外部触发的信号发生器的信号重复频率。在结果表格中,我们给出的是在不填满(溢出)缓冲区的情况下可以达到的最大触发速率。

● 线程数:为了加快求和过程,我们对该任务进行并行化优化,将其分割成多个不同的软件线程。如果线程为1,则表示求和过程不使用额外线程,而是直接在主循环中直接执行。

● CPU负载:由于平均过程是用软件完成的,具体来说就是CPU进行了所有的工作。幸好现代CPU往往包含多个内核,我们实际上可以轻松地在它们之间共享工作任务。

● SSE/SSE2指令:乍一看,这些命令似乎非常适合并行化求和过程,并似乎可以在不需要任何线程编程的情况下加快软件的速度。但不幸的是,SSE命令集都是基于相同类型的数据的,而由于获取的数据是8bit宽度,而平均缓冲区是32位宽,因此在本例中无法利用该指令集进行加速。

五、效果和比较

所有的测量都是使用一个采样率高达5GS/s、垂直分辨率为8位,并且带有外部触发通道的数字化仪进行的。我们在表格中还列出了不同的程序配置以对比效果差异。

通过普通(性能偏低的)PC在时域上进行块平均的性能对比

六、新方法:使用CUDA进行平均运算

2018年11月,我们推出了一些使用SCAPP(通过CUDA访问数据和并行处理)选项进行块平均的示例,适用于非常高速的数据处理。其基本概念与前文所述相同,即数据由数字化仪采集并通过PCIe总线连续传输。不同之处在于,平均值的计算操作不是由CPU完成,而是在GPU中完成。GPU解决方案的一个主要优点在于,GPU本身就是为并行计算而设计,这使GPU成为各种类型的块平均运算的理想选择

在实现上,SCAPP允许用户直接将数据传送到GPU,这使用了RDMA(远程直接内存存取)技术,然后可以在GPU上执行高速时域和频域信号的平均,并突破通常在CPU和FPGA中出现的数据长度或算力限制。

比如,TS-M4i.2220数字化仪可以以2.5 GS/s的速度连续采样信号,我们可以做到在不丢失样品点的情况下,进行长达数秒的平均运算。类似地,我们还有14位垂直分辨率的TS-M4i.4451数字化仪可以以450 MS/s的速度同时对四个通道的信号进行同一功能的采样。数字化仪板卡还提供了灵活的触发、捕获和读出模式设置,从而使它们能够在触发速率极高的情况采回原始信号,进而做平均处理。相比之下,FPGA方案需要最高性能级别的FPGA来同时满足数据拉取和平均运算,而GPU方案则可以轻松跑满数字化仪的全速,即使是使用入门级GPU也不会成为瓶颈。

以下表格展示了使用GPU,并在和之前表格中板卡参数相同的情况下的测试结果:

在时域上使用GPU进行块平均的测试结果

这些结果是在使用一张Quadro P2000 GPU获得的。如表所示,数据段大小和通知大小并未限制性能,我们遇到唯一限制的瓶颈是GPU内存(显存)。

七、使用GPU进行频域平均

在需要进行频域平均的情况下,也建议使用GPU,因为GPU允许比FPGA方案更大的平均块大小。频域的平均运算过程包含两个步骤,一个是针对块数据的FFT运算,另一个是对FFT结果求和(然后取平均)。其中FFT计算在处理能力方面要求非常高,因此对于频率域平均而言,除了FPGA外,GPU是唯一的可行方案,CPU并不适合在高速下进行FFT转换。

以下表格显示了使用最大采样率为500 MS/s的TS-M4i.4451数字化仪(4通道,14位垂直分辨率)的一些测试结果。最终表明该方案能高效地实现无间隙数据采集,将每个块中的原始数据转换为对应电压值,然后再转换至频率域做平均。

使用GPU进行频率域块平均的测试结果

八、结论

如上述结果所示,只要重复率不算太高,得益于PCIe总线的高速数据传输率,使用基于CPU的软件在进行块平均时,可以实现比FPGA更大的总数据段大小,从而平均更长时间的样本;而使用GPU时,更是可以达到PCIe总线传输所限制的上限速度。对于需要处理更高重复触发率的情况,会对总线传输速度提出更高的要求,此时基于FPGA硬件的块平均仍将是最佳选择。

上述测试程序也可以提供给您,以便您自己进行重复测试,或者作为实现其他软件程序的基础。其中GPU示例是SCAPP软件选项的一部分,在选购后,德思特的客户可按照NDA协议使用。

总的来说,通知大小设为1 MByte时,可获得最佳性能。具体执行的平均次数对测试性能并没有明显的影响。因为复制结果段和清除结果缓冲所需的时间相对于样本求和运算而言微不足道。

由于在同时采集多个通道时,整个的数据处理和求和过程并没有本质区别,因此只需等价成一个把所有数据都合并到一起的新通道即可(等效采样率= 每通道采样率 × 通道数)。以下设置对应的最大触发速率完全相同:

● 1通道5 GS/s @ 数据段大小S1

● 2通道2.5 GS/s @ 数据段大小S1/2

● 4通道1.25 GS/s @ 数据段大小S1/4

将采样速度降低到2.5 GS/s时,可以在理论上使软件针对1个通道执行平均运算的速度最大化。对于1 M样本点的数据段大小,外加死区长度为160个样本点时,理论上的最大触发速率为:(2.5 GS/s) / (1 MS+ 160 S) = 2.38 kHz。

注意,这确实会明显低于单纯采集时的最大触发速率:2.9 kHz @ 5 GS/s。

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

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

相关文章

RS232(旧协议)与RS485(新协议)

RS232: RS485: RS485和RS232是两种常见的串行通信标准,它们在通信距离、速度、拓扑结构等方面存在显著差异。以下是它们的主要区别: 1. 物理层接口 RS232: 使用单端信号传输,即信号通过一根信号线和一根公共地线(GND&#xff09…

外呼触发通知发送闪信(mod_cti基于FreeSWITCH)

文章目录 前言联系我们手动外呼配置方法例子一:接收到180或183时触发闪信发送例子二:挂断后触发闪信发送 自动外呼配置方法例子:接收到180或183时触发闪信发送 前言 在呼叫中心中间件中,自动外呼触发闪信发送,我们可以…

电销机器人引领电销变革

以前电销都是都是通过盲打,现在有了电话机器人的出现,为电销公司带来新的篇章。 我们都知道外呼中心的人员离职率始终居高不下,人员的培训频繁成本很高,外部电话水平参差不齐,服务态度不够稳定等问题,都是难…

【硬件模块】震动传感器模块

震动传感器模块实物图 DO:数字信号量输出,接单片机管脚; AO:模拟输出,无效,一般不接。 无震动,DO输出高电平,信号指示灯灭; 有震动,DO输出低电平,…

50道深度NLP和人工智能领域面试题+答案

编者按:分享一个很硬核的免费人工智能学习网站,通俗易懂,风趣幽默, 可以当故事来看,轻松学习。 什么是自然语言处理(NLP)?自然语言处理是一种人工智能领域,致力于使计算机…

letcode 分类练习 BST 530.二叉搜索树的最小绝对差 501.二叉搜索树中的众数 236. 二叉树的最近公共祖先(自底向上的典型例子)

letcode 分类练习 BST 530.二叉搜索树的最小绝对差 501.二叉搜索树中的众数 236. 二叉树的最近公共祖先 BST530.二叉搜索树的最小绝对差501.二叉搜索树中的众数236. 二叉树的最近公共祖先 BST 重要性质:它的中序遍历是一个有序数组 530.二叉搜索树的最小绝对差 BS…

linux 远程访问及控制 (SSH)

目录 一、SSH远程管理 1.1 配置OpenSSH服务端 1.1.1 SSH协议介绍 1.1.2 服务监听选项 1.1.3 用户登录控制 1.1.4 登录验证方式 1.2 使用SSH客户端程序 1.3 密钥对验证的SSH体系 二、TCP Wrapppers访问控制 2.1 TCP Wrappers概述 2.1.1 TCP Wrappers简介 2.1.2 TCP…

会声会影2023安装好后运行显示乱码的解决方法

会声会影2019安装好了之后,打开软件之后,会有个乱码弹窗错误,其实这个乱码提示只有简体中文版本上才会是乱码, 英文版上显示的是″You do not appear to be a register user. Please re-install the application or call custome…

如何像演示PPT幻灯片一样演示PDF文件 - PDF幻灯片使用说明

PDF幻灯片是一款Windows平台下可以让您像演示PPT幻灯片一样全屏演示PDF文件的放映工具软件。 在我们日常工作中,许多幻灯片文件被转换成了PDF格式。这些由幻灯片生成的PDF文件只能被打开查看内容,但是却不能像原始PPT或PPTX文件一样直接用PowerPoint等软…

常量池梳理

参考资料: 参考视频 参考demo 参考博客 说明: 详情见参考demo的文件夹:

JS逆向高阶补充

文章目录 JS逆向高阶补充eval函数Hook函数案例1: Hook eval案例2: Hook JSON.stringify案例3: Hook JSON.parse案例4: Hook Cookie Promise对象(1)回调函数(2)基本语法(3)then函数(4&#xff09…

wireShark tcpdump 抓包 ,检测dns

开两个窗口执行 1窗口。tcpdump -i any port 53 -w clirent.pcap2窗口。nslookup ip 过滤目标ip or 域名 统计域名DNS 将 生成的 clirent.pcap使用wireshark 分析 1.queryType : A ipv4 AAAAipv6

[word] 复杂文本如何仅全选word中的表格 (简单跟做即可)

问题描述 在word文档中,有各种形式的文本,有纯文本,有表格,有图片或者更多其它形式参杂在一起,本篇记录解决如何只全选中文档中的所有表格形式的部分,从而方便对表格进行批量修改和操作 环境说明 word版…

【系统架构设计】开发方法(二)

【系统架构设计】开发方法(二) 软件生命周期软件开发模型统一过程敏捷方法极限编程特征驱动开发Scrum水晶方法开放式源码ASD 软件重用基于架构的软件设计形式化方法 软件生命周期 软件开发模型 统一过程 敏捷方法 所谓敏捷开发,个人认为&…

day01- Web开发介绍-HTML-CS

Web开发介绍 1 什么是web开发 Web:全球广域网,也称为万维网(www World Wide Web),能够通过浏览器访问的网站。 所以Web开发说白了,就是开发网站的,例如下图所示的网站:淘宝,京东等等 那么我们…

ROS_package 、CMakeLists.txt、package.xml、ROS_node之间的关系

一、整体框架结构 二、关系描述 1、ROS.cpp 里面初始化了一个ROS节点,注意我的源文件里面只初始化了一个节点 // ROS.cpp #include "ros/ros.h"int main(int argc, char **argv) {ros::init(argc, argv, "node_name"); // 指定节点名称为 &…

C++图笔记(三)有向无环图(及最小生成树(略))以及剩下的排序

目录 一,定义: 1,有向无环图 2,拓朴排序 1,每个顶点出现且仅仅出现一次。 2,若存在一条从顶点 A 到顶点 B 的路径,那么在序列中顶点 A 出现在顶点 B 的前面。 二,DAG的性质 性质1…

Clash-Docker在Ubuntu下的使用

说明 最近折腾nas,docker镜像被墙之后很多镜像拉取不了,需要添加代理,这里使用Clash docker版。 安装&运行 docker pull dreamacro/clash:v1.18.0 docker run -d --name clash --network host dreamacro/clash:v1.18.0修改配置文件 d…

java使用itext 直接生成pdf

itext 使用 需求背景itext 的使用依赖简单示例基础设置(页面大小、边距、字体等)段落内部,特殊设置关键字 字体或颜色生成动态表格页脚展示页数其他设置密码添加水印(背景图)目录Header, Footer分割 PDF合并 PDF 需求背…

动态路由//

静态路由的缺点 1.配置量大 2.不能基于拓扑的变化进行实时更新 总结:只能在简单的小型网络中进行配置 动态路由的优点 实时基于拓扑的变化而进行路由表的收敛 动态路由的缺点 1.额外的占用链路资源:动态路由协议需要路由器之间不断交换路由信息,这会占用网络…