自研Xilinx高性能PCIe多通道DMA控制器
1 介绍
基于PCI Express Integrated Block,Multi-Channel PCIe QDMA Subsystem实现了使用DMA地址队列的独立多通道、高性能Continous或Scather Gather DMA,提供FIFO/AXI4-Stream用户接口。
基于PCI Express Integrated Block,Multi-Channel PCIe RDMA Subsystem实现了使用DMA Ring缓冲的独立多通道、高性能/超低延时/超低抖动Continous Ring DMA,提供FIFO/AXI4-Stream用户接口。
在自研DMA控制器和自研PCIe驱动的加持下,总体的PCIe-DMA效率高达88%,PCIe 3.0 x16下DMA带宽高达14GB/s,PCIe 3.0 x8下DMA带宽高达7.1GB/s。
联系方式:neteasy163z@163.com
1.1 特性
Ø 支持Ultrascale+,Ultrascale,7 Series的PCI Express Integrated Block
Ø 支持64,128,256,512-bit数据路径
Ø 64-bit源地址,目的地址,和描述符地址
Ø 多达8个独立的host-to-card(H2C/Read)数据通道或H2C DMA
Ø 多达8个独立的card-to-host(C2H/Write)数据通道或C2H DMA
Ø AXI4-Stream/FIFO用户接口(每个通道都有自己的AXI4-Stream/FIFO接口)
Ø 每个DMA引擎支持DMA地址队列,队列深度可达32
Ø 每个DMA引擎支持DMA Ring缓冲,Ring缓冲深度和个数可配置
Ø RDMA的超低延时和超低抖动性
Ø H2C DMA支持视频显示定时时序输入控制
Ø AXI4-Lite Master接口允许PCIe通信绕过DMA引擎
Ø Scather Gather描述符列表支持无限列表大小
Ø 每个描述符的最大传输长度为4GB
Ø MSI中断
Ø 连续描述符的块获取
Ø 中断或查询模式
1.2 应用
本内核体系结构支持广泛的计算和通信目标程序应用,强调性能、成本、可扩展性、功能可扩展性和关键任务可靠性。典型应用包括:
● 数据通信网络
● 电信网络
● 宽带有线和无线应用
● 网络接口卡
● 用于各种应用程序的服务器add-in card
典型应用如下图所示:

图 1 Multi-Channel PCIe QDMA&RDMA Subsystem典型应用:8通道视频采集和视频显示
2 概述
Multi-Channel PCIe QDMA&RDMA Subsystem作为一个高性能DMA数据搬移器,内核通过AXI4-Stream/FIFO接口直接连接RTL逻辑。使用提供的字符驱动程序,AXI4-Stream/FIFO接口可用于PCIe地址空间和AXI地址空间之间的高性能数据搬移。除了基本的DMA功能,DMA支持多达8个独立的upstream和downstream通道,每个通道支持深度为32的DMA地址队列,以及深度和个数可配置的DMA Ring缓冲,另外还允许PCIe通信绕过DMA引擎。

图 2 Multi-Channel PCIe QDMA&RDMA Subsystem概述
2.1 特性概要
基于描述符提供的信息:源地址,目的地址和传输数据长度,Multi-Channel PCIe QDMA&RDMA Subsystem实现Host存储器和PCIe DMA子系统之间的数据搬移。这些DMA可以同时是Host to Card(H2C)和Card to Host(C2H)传输。每个DMA通道对应各自的AX4-Stream/FIFO接口,DMA从Host存储器获取并解析描述符链表,基于描述符链表信息完成自己通道的数据传输,然后使用MSI中断发出描述符完成或错误的信令。内核也提供多达16个输出到Host的用户中断信号。
主机可以通过以下2个接口访问用户逻辑:
Ø AXI4-Lite Master配置接口:这个接口是一个固定的32-bit端口,用于对性能要求不高的用户配置和状态寄存器的访问
Ø User Register:这个接口是多个32-bit向量信号和1-bit信号,这些信号来自对应DMA通道数据搬移过程中产生的控制或状态信号
3 产品规格
结合Integrated Block for PCI Express IP,Multi-Channel PCIe QDMA&RDMA Subsystem为PCIe提供了一个高性能的DMA解决方案。
3.1 性能
Endpoint配置参数:Max Payload Size=256-byte,Max Read Request Size=512-byte
8-Channel PCIe-SGQDMA Subsystem,DMA Transfer Length = 4MB
表1 PCIe 3.0 x16 C2H DMA速率
| DMA0 | DMA1 | DMA2 | DMA3 | DMA4 | DMA5 | DMA6 | DMA7 | |
| 速率 | 1690MB/s | 1690MB/s | 1690MB/s | 1690MB/s | 1690MB/s | 1690MB/s | 1690MB/s | 1690MB/s |
表2 PCIe 3.0 x16 H2C DMA速率
| DMA0 | DMA1 | DMA2 | DMA3 | DMA4 | DMA5 | DMA6 | DMA7 | |
| 速率 | 1700MB/s | 1700MB/s | 1700MB/s | 1700MB/s | 1700MB/s | 1700MB/s | 1700MB/s | 1700MB/s |
表3 PCIe 3.0 x8 C2H DMA速率
| DMA0 | DMA1 | DMA2 | DMA3 | DMA4 | DMA5 | DMA6 | DMA7 | |
| 速率 | 890MB/s | 890MB/s | 890MB/s | 890MB/s | 890MB/s | 890MB/s | 890MB/s | 890MB/s |
表4 PCIe 3.0 x8 H2C DMA速率
| DMA0 | DMA1 | DMA2 | DMA3 | DMA4 | DMA5 | DMA6 | DMA7 | |
| 速率 | 890MB/s | 890MB/s | 890MB/s | 890MB/s | 890MB/s | 890MB/s | 890MB/s | 890MB/s |
表5 PCIe 3.0 x4 C2H DMA速率
| DMA0 | DMA1 | DMA2 | DMA3 | DMA4 | DMA5 | DMA6 | DMA7 | |
| 速率 | 440MB/s | 440MB/s | 440MB/s | 440MB/s | 440MB/s | 440MB/s | 440MB/s | 440MB/s |
表6 PCIe 3.0 x4 H2C DMA速率
| DMA0 | DMA1 | DMA2 | DMA3 | DMA4 | DMA5 | DMA6 | DMA7 | |
| 速率 | 445MB/s | 445MB/s | 445MB/s | 445MB/s | 445MB/s | 445MB/s | 445MB/s | 445MB/s |
表7 PCIe 2.0 x8 C2H DMA速率
| DMA0 | DMA1 | DMA2 | DMA3 | DMA4 | DMA5 | DMA6 | DMA7 | |
| 速率 | 445MB/s | 445MB/s | 445MB/s | 445MB/s | 445MB/s | 445MB/s | 445MB/s | 445MB/s |
表8 PCIe 2.0 x8 H2C DMA速率
| DMA0 | DMA1 | DMA2 | DMA3 | DMA4 | DMA5 | DMA6 | DMA7 | |
| 速率 | 445MB/s | 445MB/s | 445MB/s | 445MB/s | 445MB/s | 445MB/s | 445MB/s | 445MB/s |
表9 PCIe 2.0 x4 C2H DMA速率
| DMA0 | DMA1 | DMA2 | DMA3 | DMA4 | DMA5 | DMA6 | DMA7 | |
| 速率 | 220MB/s | 220MB/s | 220MB/s | 220MB/s | 220MB/s | 220MB/s | 220MB/s | 220MB/s |
表10 PCIe 2.0 x4 H2C DMA速率
| DMA0 | DMA1 | DMA2 | DMA3 | DMA4 | DMA5 | DMA6 | DMA7 | |
| 速率 | 225MB/s | 225MB/s | 225MB/s | 225MB/s | 225MB/s | 225MB/s | 225MB/s | 225MB/s |
3.2 资源
8-Channel PCIe-SGQDMA Subsystem
表11 PCIe 3.0 x16 DMA Subsystem资源
| LUTs | FFs | BRAMs | PCIe | |
| 资源 | 46985 | 101938 | 150 | 1 |
表12 PCIe 3.0 x8 DMA Subsystem资源
| LUTs | FFs | BRAMs | PCIe | |
| 资源 | 26647 | 51071 | 84 | 1 |
表13 PCIe 3.0 x4 DMA Subsystem资源
| LUTs | FFs | BRAMs | PCIe | |
| 资源 | 17671 | 35598 | 44 | 1 |
表14 PCIe 2.0 x8 DMA Subsystem资源
| LUTs | FFs | BRAMs | PCIe | |
| 资源 | 25301 | 36973 | 66 | 1 |
表15 PCIe 2.0 x4 DMA Subsystem资源
| LUTs | FFs | BRAMs | PCIe | |
| 资源 | 19807 | 29320 | 98 | 1 |
1-Channel PCIe-CQDMA Subsystem
表16 PCIe 3.0 x8 DMA Subsystem资源
| LUTs | FFs | BRAMs | PCIe | |
| 资源 | 8122 | 19331 | 8 | 1 |
表17 PCIe 2.0 x8 DMA Subsystem资源
| LUTs | FFs | BRAMs | PCIe | |
| 资源 | 7911 | 11771 | 6 | 1 |
表18 PCIe 2.0 x4 DMA Subsystem资源
| LUTs | FFs | BRAMs | PCIe | |
| 资源 | 4747 | 6479 | 21 | 1 |
相关文章:
自研Xilinx高性能PCIe多通道DMA控制器
1 介绍 基于PCI Express Integrated Block,Multi-Channel PCIe QDMA Subsystem实现了使用DMA地址队列的独立多通道、高性能Continous或Scather Gather DMA,提供FIFO/AXI4-Stream用户接口。 基于PCI Express Integrated Block,Multi-Channel…...
人工智能原理复习--知识表示(二)
文章目录 上一篇产生式表示法推理方式 结构化表示语义网络语义网络表示知识的方法和步骤应用题目 框架表示法下一篇 上一篇 人工智能原理复习–知识表示(一) 产生式表示法 把推理和行为的过程用产生式规则表示,所以又称基于规则的系统。 产…...
【SpringBoot篇】登录校验 — JWT令牌
文章目录 🌹简述JWT令牌⭐JWT特点 🌺JWT使用流程🛸JWT令牌代码实现🍔JWT应用 🌹简述JWT令牌 JWT全称为JSON Web Token,是一种用于身份验证的开放标准。它是一个基于JSON格式的安全令牌,主要用于…...
leetcode每日一题34
89.格雷编码 观察一下n不同时的格雷编码有什么特点 n1 [0,1] n2 [0,1,3,2] n3 [0,1,3,2,6,7,5,4] …… 可以看到nk时,编码数量是nk-1的数量的一倍 同时nk编码的前半部分和nk-1一模一样 nk编码的最后一位是2k-1 后半部分的编码是其对应的前半部分的对称的位置的数字…...
王者荣耀游戏制作
1.创建所需要的包 2.创建怪物类 bear package beast;import wangzherogyao.GameFrame;public class Bear extends Beast {public Bear(int x, int y, GameFrame gameFrame) {super(x, y, gameFrame);setImg("img/bear.jpg");width 85;height 112;setDis(65);}} b…...
springboot post添加URL添加参数
出现 MissingServletRequestParameterException: Required String parameter pageNumber is not present 异常的原因是在请求中没有提供名为 pageNumber 的参数。 请确保发送 POST 请求时,在请求的 URL 或请求体中提供了名为 pageNumber 的参数,以满足方…...
『 MySQL数据库 』插入查询结果
文章目录 🎟️ 前言🎟️ 创建一张结构相同的表🎟️ 表内插入查询结果🎫 对表内数据进行去重🎫 配合ORDER BY排序后以及LIMIT分页对数据进行插入 🎟️ 前言 在MySQL数据库中不仅可以直接根据字段类型等对数据…...
【笔记】小白学习电路维修
学习视频(b站):从0开始学电路 从0开始学电路维修 p1 黄色长方体元件P2 故障率最高的元件p3带芯铜丝线圈是什么区分电感和变压器接入电路分析: p4 交流和直流分界线整流桥接线整流桥故障判断 带色环的不一定是电阻 p1 黄色长方体元…...
linux简述进程
目录 进程 一个正在运行的程序,一个程序运行至少要启动一个进程,主进程 子进程 一个进程正常运行,至少要启动一个线程,主线程 子线程 进程的生命周期: 进程状态产生的原因: 查看当前系统的进程 ps au…...
由于设置了全局 QWidget 背景导致QT QCalendarWidget 表态背景异常
解决: 单独设置QCalendarWidget 的qss : 对象是查看源码所得 QWidget#qt_calendar_navigationbar{ ...... } QToolButton#qt_calendar_prevmonth, #qt_calendar_nextmonth, #qt_calendar_monthbutton, #qt_calendar_yearbutt…...
数据库的重要你了解多少?如何保障数据库的安全?
随着信息技术的快速发展,数据库已经成为企业、组织以及个人日常生活中不可或缺的一部分。然而,随着数据库的广泛应用,其安全性问题也日益凸显。数据库的安全性主要包括数据的完整性、保密性和可用性。本文将探讨数据库安全性的重要性、以及如…...
距离“全自动”漏洞挖掘又近了一步!腾讯安全大数据实验室论文入选ACM CCS 2023
计算机领域国际权威学术顶会ACM CCS 2023于11月26日在丹麦哥本哈根开幕。腾讯安全大数据实验室团队论文《Hopper: Interpretative Fuzzing for Libraries》被大会收录,昨天,实验室研究员谢雨轩受邀出席大会进行主题分享。 该论文提出了解释性模糊测试&a…...
docker搭建rabbit集群
1.去rabbitMQ官网拉去images 我当前使用的是最新版本的镜像:rabbitmq:3.12-management 2.创建一个集群专用网络 docker的容器相互隔离是不可通信的,我们自行创建一个网络后,创建容器时 给他们放在一起,就可以通信了。 docker netw…...
西南科技大学C++程序设计实验一(C++基础知识)
目录 一、实验目的 二、实验任务 三、预习内容(复习书中前3章内容,说明C++相对于C的扩展有哪些?) 四、问题思考与讨论 一、实验目的 1.熟悉编程环境 2.掌握程序调试方法。 3.熟悉枚举类型、结构体类型等自定义数据类型的使用 4.熟悉函数的定义、说明与使用 5.熟悉引用…...
Rust内存布局
题图忘了来自哪里.. 整型,浮点型,struct,vec!,enum 本文是对 Rust内存布局 的学习与记录 struct A { a: i64, b: u64,}struct B { a: i32, b: u64,}struct C { a: i64, b: u64, c: i32,}struct D { a: i32, b: u64, c: i32, d: u64,}fn main(…...
android 12 添加菜单
1.创建一级菜单 packages\apps\Settings\res\xml\top_level_settings.xml <com.android.settings.widget.HomepagePreferenceandroid:fragment"com.android.settings.DeviceStatusSettings"android:icon"drawable/ic_settings_display_white"android:…...
Map 的 5 种遍历方式
Map 的 5 种遍历方式 强烈推荐 for-each entrySet()遍历 和 lambda 表达式遍历 ,简洁又好用!!! package com.maptest; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set;pub…...
Linux的基本指令 ( 一 )
目录 前言 Linux基本指令 快速认识五个指令 ls指令 补充内容 pwd指令 补充内容 cd指令 补充内容 重新认识指令 指令的本质 which指令 alias指令 最后 一个文件的三种时间 tree指令及安装 tree指令 前言 关于Linux操作系统的桌面,在学校教学中我们…...
【深度学习】学习率及多种选择策略
学习率是最影响性能的超参数之一,如果我们只能调整一个超参数,那么最好的选择就是它。相比于其它超参数学习率以一种更加复杂的方式控制着模型的有效容量,当学习率最优时,模型的有效容量最大。本文从手动选择学习率到使用预热机制…...
具有“真实触感”的动捕数据手套mhand pro,提供更精确的动作捕捉
随着人工智能的普及和万物互联,vr虚拟技术备受关注,为了更加真实的虚拟现实交互体验,动捕数据手套的使用逐渐普及,vr手套可以实时采集各手指关节运动数据,使用动捕数据手套可以在虚拟现实的场景中实现对真实手部运动的…...
从数据采集到回放验证:ADTF 适配 ROS 的 ADAS 测试实践婆
一、简化查询 1. 先看一下查询的例子 /// /// 账户获取服务 /// /// /// public class AccountGetService(AccountTable table, IShadowBuilder builder) {private readonly SqlSource _source new(builder.DataSource);private readonly IParamQuery _accountQuery build…...
小白程序员必备:收藏这份学习指南,轻松入门信息安全领域!
小白程序员必备:轻松入门信息安全领域! 本文系统梳理了信息系统安全的核心要点,涵盖加密解密、身份认证、访问控制、安全协议等关键技术。从安全体系架构(机密性、完整性、可用性等五要素)到数据安全(对称/…...
goqu性能优化实战:10个提升查询效率的关键技巧
goqu性能优化实战:10个提升查询效率的关键技巧 【免费下载链接】goqu SQL builder and query library for golang 项目地址: https://gitcode.com/gh_mirrors/go/goqu goqu是一款强大的Golang SQL构建和查询库,能够帮助开发者高效地构建和执行SQL…...
408计算机考研-计算机操作系统笔记-王道
计算机操作系统笔记-王道1.1.11.1.2操作系统的概念与功能操作系统的概念(定义)操作系统的功能和目标--向上提供方便易用的服务总结1.1.3 操作系统的特性并发与共享虚拟异步总结1.2_操作系统的发展和分类手工阶段批处理阶段--单道批处理系统多道批处理系统…...
基于RexUniNLU的Java企业级文本分析系统构建指南
基于RexUniNLU的Java企业级文本分析系统构建指南 1. 引言 想象一下这样的场景:你的电商平台每天收到数万条客户反馈,客服团队需要手动分类处理;法务部门每天要审核大量合同,寻找关键条款;市场团队需要从海量评论中提…...
Shell脚本中的算术运算:let、(())、expr三种方式全解析(附避坑指南)
Shell脚本算术运算深度指南:从基础到高阶实战 在自动化脚本编写和数据处理中,算术运算是最基础却最容易出错的部分。Shell作为字符串处理起家的脚本语言,其数值计算有着独特的语法规则和陷阱。本文将彻底解析三种主流算术运算方式,…...
Jetson Nano 平台YOLO目标检测优化详细设计方案
Jetson Nano 平台YOLO目标检测优化详细设计方案 1. 项目概况与设计目标 Jetson Nano 作为 NVIDIA 推出的入门级边缘 AI 计算平台,虽然在计算能力上相比高端 GPU有所限制,但在功耗控制和成本效益方面表现优异,特别适合对功耗敏感的边缘部署场景…...
【PyCon 2025闭门分享精要】:Python 3.14 JIT底层调度器深度调优——用3行代码撬动47% CPU利用率提升
第一章:Python 3.14 JIT编译器性能调优配置总览Python 3.14 引入了实验性内置 JIT(Just-In-Time)编译器,基于 Pyston 的优化后端重构,支持函数级动态编译与类型特化。该 JIT 默认处于禁用状态,需通过环境变…...
STM32F407+LAN9252 EtherCat从站开发避坑指南:从SSC配置到TwinCAT3联调全流程
STM32F407LAN9252 EtherCat从站开发实战:从零构建工业通信节点的完整指南 当工业4.0的浪潮席卷全球制造业时,EtherCat协议凭借其卓越的实时性能成为自动化领域的黄金标准。对于嵌入式开发者而言,掌握基于STM32和LAN9252的从站开发技术&#x…...
打字不如说话,说话不如截图——AI 代码助手的多模态输入实践偈
整体排查思路 我们的目标是验证以下三个环节是否正常: 登录成功时:服务器是否正确生成了Session并返回了包含正确 JSESSIONID的Cookie给浏览器。 浏览器端:浏览器是否成功接收并存储了该Cookie。 后续请求:浏览器在执行查询等操作…...
