基于 Kintex-7 FPGA + Nvidia TX2 = 16通道高速ADC数据采集系统

2023-11-18

在之前接触的设计中如果涉及要实现ADC采样的话,往往会从精度和速率来考虑对性能的影响,一般来说精度是固定的或有一个最大精度设置,但是采样速率的话,过快会造成采样不准确,往往会对整个设计的性能造成限制,所以一直期望有这样一个系统:可以实现高速ADC采样并将数据远端存储也可以本地存储,最关键的是采样速率要快,存储的速度要快,同时在设计开发是灵活度要高。而信迈科技XMTech最新推出的K7+TX2恰好就是这样一个系统原型。

XMTech高速16通道数据采集系统

XMTech最新推出的高速数据采集系统支持16通道8bit的ADC模数转换,其采样数率高达3G每秒,最关键的是这个系统采用了之前没有见过的独特架构来实现。在这个系统中,巧妙地将一款Xilinx 的Kintex-7 FPGA和 一块 Nvidia的Jetson TX2 SOM系统结合在一起,下面是这个系统的方框图(刚好是上图展开的内部结构图):

XMTech 高速16通道数据采集系统方框图

从上面的方块图中可以明显地看到,系统中的Kintex-7 485T FPGA通过一个接口连接到高速ADC转换接口。这个系统十分适合用于实现灵活高速的I/O任务,同时可以实现数据的实时滤波处理和DDC低频转换,不过从方框图中可以看出 一个问题,那就是我们采集的样本数据都存储到什么地方去了呢?在板卡上,FPGA芯片会同时连接到板卡上的两个100GbE的SFP+ 接口处(或者经由一个板上的GbE选择器选择连接到四个GbE端口),从而实现样本里data的搬移存储,但是,尽管如此,如果ADC模块全部全速运行的话,这些端口还是没法满足快速将如此多的ETH数据迁移运输,所以说,对于data的存储还是需要有本地存储单元来支持,尤其是如果你的处理程序需要用到一些板卡上的数据时,本地存储就比ETH获取数据方便很多。

对于本地存储的问题,其实Nvidia Jetson SOM板上系统本身就集成了8GB的 LPDDR4 SDRAM存储单元在模块上,系统中的Kintex-7 FPGA芯片可以通过TX2上的PCIe Gen 2X4的接口来访存这个存储单元,这确实是一个有点意思的系统架构。

XMTech K7+TX2是一个1U,19英尺长的模块,它的16路ADC通道可以通过自身的SMC连接器外接到外部,下面是这个系统的接口侧面图:

上面这个架构确实在小编之前接触的板卡系统中没有见过,其实这个系统总体来讲是利用了FPGA的端口可配置性,在实现多通道ADC转换的同时,可以连接到ETH接口,对采样data进行远端存储,但是同时也可以利用TX2的loaca 存储单元,实现data的本地存储,这样对于需要本地data的program就没有了data路径的限制,对于不需要local data的program可以将data存储在外部,是一种比较有意思的设计,这也从另一个角度说明了基于FPGA的设计对于设计的灵活性支持真的十分重要。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于 Kintex-7 FPGA + Nvidia TX2 = 16通道高速ADC数据采集系统 的相关文章

  • OpenCL - 多个 GPU 缓冲区同步

    我有一个 OpenCL 内核 用于计算系统中其他粒子对某个粒子施加的总力 然后是另一个积分粒子位置 速度的内核 我想在多个 GPU 上并行化这些内核 基本上为每个 GPU 分配一定数量的粒子 但是 我必须多次运行该内核 并且每个 GPU 的
  • 将 2D 数组复制到已知可变宽度的 GPU

    我正在研究如何将每行可变宽度的 2D 数组复制到 GPU 中 int rows 1000 int cols int host matrix malloc sizeof int rows int d array int length Each
  • 仅在 NVIDIA 上的 glDrawArrays 上的 Java OpenGL EXCEPTION_ACCESS_VIOLATION

    我正在使用 lwjgl 开发一个 java 游戏 它是 OpenGL 实现 从来没有任何问题 直到我与一位使用 NVIDIA 而不是 AMD 的同事交换它 突然它在 AMD 上工作的线路上崩溃 但它只在代码中的那个点崩溃 这是最磨损的部分
  • 我可以在 Windows Server 2019 中运行 NVIDIA DeepStream SDK 吗?

    System 我安装了 Windows Server 2019 操作系统NVIDIA Tesla T4 张量核心 GPU Goal 计划从 IP 摄像机读取实时流视频并进一步逐帧处理 目标是利用 NVIDIA DeepStream SDK
  • 如何强制我想要的任何显示分辨率/时间?

    我无法找到一种方法来在我的 C 程序中强制执行我想要的任何显示分辨率 计时 我运行的是带有 GeForce 210 显卡的 Windows 7 我当前实现这些自定义分辨率的方法是使用驱动程序 GUI 手动添加自定义分辨率 然后使用 Wind
  • 修复 Nvidia 和 AMD 的 GLSL 着色器

    我在让 GLSL 着色器在 AMD 和 Nvidia 硬件上工作时遇到问题 我并不是在寻求修复特定着色器的帮助 而是寻求如何避免出现这些问题 是否可以检查着色器是否可以在 AMD Nvidia 驱动程序上编译 而无需在具有相应硬件的计算机上
  • glReadPixels() 会消耗单个核心的所有CPU周期

    我有一个带有 OpenGL 窗口的 SDL2 应用程序 它表现良好 当它运行时 该应用程序与我的 60Hz 显示器同步 并且我看到该应用程序的 CPU 使用率为 12 到目前为止 一切都很好 但是 当我通过从深度缓冲区 绘制后 读取单个 深
  • 使用 CUDA 进行行列式计算 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有任何库或免费可用的代码可以计算a的行列式small 6x6 双精度矩阵完全在 GPU 上 这是计
  • 检测显示器是否关闭

    我有一个信息亭类型的应用程序 如果液晶电视关闭 我需要收到通知 以便我可以惩罚某人 我正在运行带有 nVidia 显卡和 nVidia 驱动程序的 Ubuntu 10 10 电视通过 HDMI 插入 我看过了nvidia settings
  • 没有 GPU 的系统上的 CUDA [重复]

    这个问题在这里已经有答案了 我的系统中没有安装 GPU 卡 我想知道是否有任何方法可以在我的无 GPU 笔记本电脑上使用 CUDA 进行编码并访问 CUDA 库 是的 您可以使用 CUDA 模拟器 例如 https code google
  • 使用 CUDA 和 cudaMallocPitch 的 2D 数组

    我一直在 stackoverflow 上阅读一些关于 2D 数组和 cudaMallocPitch 的线程 并且尝试将 cudaMallocPitch 与我找到的小文档一起使用 但是我现在面临一个问题 我需要遍历一个数组并执行类似的操作 f
  • tensorflow-gpu 无法与 Blas GEMM 一起使用 启动失败

    我安装了tensorflow gpu 以在GPU 上运行我的tensorflow 代码 但我无法让它运行 它不断给出上述错误 以下是我的示例代码 后面是错误堆栈跟踪 import tensorflow as tf import numpy
  • 在 Optimus 笔记本电脑中以编程方式强制使用 NVIDIA GPU

    我正在编写 DirectX 游戏 当我在 Optimus 笔记本电脑上运行它时 会使用 Intel GPU 导致性能非常糟糕 如果我使用上下文菜单或将可执行文件重命名为 bf3 exe 或其他一些著名的游戏可执行文件名称来强制使用 NVID
  • OpenGL 3:​​glBindVertexArray 使 GL_ELEMENT_ARRAY_BUFFER 无效

    我确信如果你通过绑定缓冲区glBindBuffer 您可以放心地假设它保持绑定状态 直到目标通过另一个调用反弹glBindBuffer 因此 当我发现调用时 我感到非常惊讶glBindVertexArray 将绑定到 GL ELEMENT
  • 如何使 TensorFlow 在具有 2.x 功能的 GPU 上运行?

    我已在 Linux Ubuntu 16 04 上成功安装了tensorflow GPU 并进行了一些小的更改 以使其能够与新的 Ubuntu LTS 版本配合使用 然而 我认为 谁知道为什么 我的 GPU 满足计算能力大于 3 5 的最低要
  • 是否可以在设备函数中调用cufft库调用?

    我在主机代码中使用 cuFFT 库调用 它们工作正常 但我想从内核调用 cuFFT 库 早期版本的 CUDA 没有这种支持 但是有了动态并行性 这可能吗 如果有任何关于如何实现这一目标的示例 那就太好了 尽管在 Kepler cc 3 5
  • CUDA程序导致nvidia驱动程序崩溃

    当我超过大约 500 次试验和 256 个完整块时 我的 monte carlo pi 计算 CUDA 程序导致我的 nvidia 驱动程序崩溃 这似乎发生在 monteCarlo 内核函数中 任何帮助都会受到赞赏 include
  • 在 Mac OS X 10.7.4 上使用 OpenCL 禁用 Nvidia 看门狗

    我有一个 OpenCL 程序 对于小问题运行良好 但是当运行较大的问题超过 Nvidia 硬件上运行内核的 8 10 秒时间限制时 虽然我没有将显示器连接到我正在计算的 GPU Nvidia GTX580 上 但一旦内核运行大约 8 10
  • Linux 上的 OpenCL 编译

    我是 OpenCL 的新手 从昨天开始 我尝试使用 OpenCL 进行并行编程 而不是使用我更熟悉且以前体验过的 CUDA 现在我有 NVIDIA GTX 580 GPU Ubuntu Linux 12 04 操作系统和 CUDA SDK
  • 如何为 CUDA 内核选择网格和块尺寸?

    这是一个关于如何确定CUDA网格 块和线程大小的问题 这是对已发布问题的附加问题here https stackoverflow com a 5643838 1292251 通过此链接 talonmies 的答案包含一个代码片段 见下文 我

随机推荐