QSFP28、RoCEv2、RFSoC-4x2 数据传输与器件链路

1. 数据流过程

1MB 数据通过 RoCEv2 协议,从 RFSoC-4x2 传输到另一台 RFSoC-4x2 的完整数据流过程。

重点展示串并转换、并串转换的每个细节,以及跨器件时的协议封装/解封装。


1.1. 传输概览

参数 数值
数据量 1 MB = 8,388,608 bits
线速率 100 Gbps (4×25.78125 Gbps)
理论最小时间 ≈ 84 μs
实际传输时间 ≈ 100-120 μs(含协议开销)
每通道速率 25.78125 Gbps
UI (Unit Interval) 38.788 ps

1.2. 发送端 RFSoC-4x2 详细数据流

步骤 ①:Host CPU → Verbs API

复制代码
┌─────────────────────────────────────────┐
│  Host CPU (ARM Cortex-A53 / RISC-V)     │
│  应用层调用 ibv_post_send()               │
│  - 指定 QP #42 (Queue Pair)              │
│  - 1MB 数据已注册到 Memory Region (MR)    │
│  - 生成 SGE (Scatter-Gather Entry) 列表  │
│  - 通常每 SGE = 4KB,共 256 个 SGE        │
└─────────────────────────────────────────┘
           ↓
    PCIe Gen3 x8 TLP (Transaction Layer Packet)
           ↓

关键操作:CPU 不直接拷贝数据,而是通过 DMA 描述符告诉网卡"数据在哪里"。


步骤 ②:PCIe → DMA Engine

复制代码
┌─────────────────────────────────────────┐
│  DMA Engine (FPGA 内部硬核/软核)          │
│  - 读取 Host 内存中的 SGE 列表             │
│  - 按 SGE 分段从 Host DDR 取数            │
│  - 每段 4KB,通过 PCIe TLP 读取           │
│  - 写入 FPGA 内部 TX Buffer (BRAM/URAM)  │
└─────────────────────────────────────────┘
           ↓
    并行数据总线: 512-bit @ ~200 MHz (PCIe 有效带宽)
           ↓

数据形态 :此时数据仍是字节流,1MB 被切分为 256 个 4KB 块。


步骤 ③:RDMA 引擎封装

复制代码
┌─────────────────────────────────────────┐
│  RDMA 引擎 (FPGA 软逻辑实现)              │
│  对每个 4KB 块封装 RDMA 协议头:            │
│                                         │
│  ┌─────────┬─────────┬───────────────┐ │
│  │ BTH     │ RETH    │ Payload       │ │
│  │ 12B     │ 16B     │ 4KB           │ │
│  │         │         │               │ │
│  │ - Opcode│ - VA    │ (实际数据)     │ │
│  │ - PSN   │ - RKey  │               │ │
│  │ - QPN   │ - DMA Length            │ │
│  └─────────┴─────────┴───────────────┘ │
│                                         │
│  1MB → 256 个 RDMA Write 包             │
│  每包 Payload = 4KB                     │
│  加上头后每包 ≈ 4KB + 28B               │
└─────────────────────────────────────────┘
           ↓
    并行数据总线: 512-bit @ 312.5 MHz
           ↓

BTH (Base Transport Header)

  • Opcode: RDMA_WRITE_ONLY (0x14)
  • PSN (Packet Sequence Number): 0, 1, 2, ... 255
  • QPN (Queue Pair Number): 42
  • P_Key: 0xFFFF

RETH (RDMA Extended Transport Header)

  • Virtual Address: 接收端 MR 的虚拟地址
  • R_Key: 接收端内存区域的密钥
  • DMA Length: 4096

步骤 ④:RoCEv2 协议栈封装

复制代码
┌─────────────────────────────────────────┐
│  RoCEv2 协议栈 (UDP/IP/Eth 封装)         │
│                                         │
│  ┌────────┬────────┬────────┬────────┐ │
│  │ Eth    │ IP     │ UDP    │ RDMA   │ │
│  │ Header │ Header │ Header │ Packet │ │
│  │ 14B    │ 20B    │ 8B     │ 4KB+28B│ │
│  │        │        │        │        │ │
│  │ - DMAC │ - SIP  │ - Sport│        │ │
│  │ - SMAC │ - DIP  │ - Dport│        │ │
│  │ - VLAN │ - TTL  │ =4791  │        │ │
│  │        │ - TOS  │        │        │ │
│  └────────┴────────┴────────┴────────┘ │
│                                        │
│  每包总大小 = 14 + 20 + 8 + 28 + 4096    │
│            = 4166 bytes                │
│  1MB 实际发送 ≈ 256 × 4166B ≈ 1.067 MB   │
└─────────────────────────────────────────┘
           ↓
    并行数据总线: 512-bit @ 312.5 MHz
           ↓

UDP 目的端口 = 4791:IANA 分配给 RoCEv2 的标准端口。


步骤 ⑤:CMAC US+ (MAC 层)

复制代码
┌─────────────────────────────────────────┐
│  CMAC US+ (100G Ethernet 硬核)          │
│                                         │
│  输入: 512-bit 数据总线 @ 312.5 MHz      │
│  (每周期 64 bytes = 512 bits)            │
│                                         │
│  MAC 层操作:                             │
│  1. 添加 Preamble (7B) + SFD (1B)       │
│  2. 计算 FCS (Frame Check Sequence)     │
│     CRC32 多项式: x^32 + x^26 + ... + 1 │
│  3. 添加最小帧间隙 (IPG = 12B)            │
│                                         │
│  输出: 完整 Ethernet 帧                  │
│  每帧 = 8(Preamble+SFD) + 4166 + 4(FCS) │
│       = 4178 bytes                      │
└─────────────────────────────────────────┘
           ↓
    并行数据总线: 512-bit @ 312.5 MHz
           ↓

时钟计算

  • 512-bit × 312.5 MHz = 160 Gbps (内部总线带宽)
  • 实际有效: 100 Gbps (含编码开销后)

步骤 ⑥:PCS 编码层 (关键:并→并转换)

复制代码
┌─────────────────────────────────────────┐
│  PCS (Physical Coding Sublayer)         │
│                                         │
│  输入: 512-bit 并行 @ 312.5 MHz          │
│  (来自 CMAC 的 MAC 帧数据)                │
│                                         │
│  操作 1: 64b/66b 编码                    │
│  ┌─────────────────────────────────────┐ │
│  │ 每 64-bit 数据块 → 66-bit 编码块      │ │
│  │ 添加 2-bit Sync Header:             │ │
│  │   - 10 = 数据块 (Data Block)         │ │
│  │   - 01 = 控制块 (Control Block)      │ │
│  └─────────────────────────────────────┘ │
│                                         │
│  操作 2: 扰码 (Scrambling)               │
│  多项式: 1 + x^39 + x^58                 │
│  目的: 确保 DC 平衡,避免长连 0/1        │
│                                         │
│  操作 3: 虚拟通道分配 (20 VLs)            │
│  100G = 20 个 Virtual Lanes              │
│  每 VL = 66-bit 块流                      │
│                                         │
│  操作 4: Gearbox (20VL → 4PL)           │
│  ┌─────────────────────────────────────┐ │
│  │ 20 个虚拟通道 → 4 个物理通道          │ │
│  │ 每 PL 承载 5 个 VL 的交错数据        │ │
│  │ 输出: 4 × 160-bit 并行 @ 161.13 MHz │ │
│  └─────────────────────────────────────┘ │
└─────────────────────────────────────────┘
           ↓
    4 × 160-bit 并行总线 @ 161.1328125 MHz
           ↓

Gearbox 详细

参数
输入 20 VLs × 66-bit @ 644.53 MHz (等效)
输出 4 PLs × 160-bit @ 161.13 MHz
转换比 (20 × 66) / (4 × 160) = 1320 / 640 = 2.0625
实际实现 块交错 + 缓冲对齐

步骤 ⑦:PMA 层 (关键:并→串转换)

复制代码
┌─────────────────────────────────────────┐
│  PMA (Physical Medium Attachment)       │
│                                         │
│  输入: 160-bit 并行 @ 161.13 MHz         │
│  (每通道独立处理)                         │
│                                         │
│  并→串转换 (SerDes):                     │
│  ┌─────────────────────────────────────┐ │
│  │ 160-bit 并行数据                     │ │
│  │      ↓                              │ │
│  │  并串转换器 (Serializer)             │ │
│  │  - 160:1 多路复用                    │ │
│  │  - 时钟: 161.13 MHz × 160           │ │
│  │         = 25.78125 GHz              │ │
│  │      ↓                              │ │
│  │  1-bit 串行数据流                    │ │
│  │  速率: 25.78125 Gbps                │ │
│  │  UI = 38.788 ps                     │ │
│  └─────────────────────────────────────┘ │
│                                         │
│  输出: 1-bit 串行差分信号 (txp/txn)      │
└─────────────────────────────────────────┘
           ↓
    4 × 1-bit 串行差分信号
    每通道 25.78125 Gbps
           ↓

SerDes 核心

  • 160:1 串行器,使用高速移位寄存器 + 多相时钟
  • 输出经过 TX 预加重 (Pre-emphasis) 补偿信道损耗

步骤 ⑧:GTY 驱动 + QSFP28

复制代码
┌─────────────────────────────────────────┐
│  GTY 收发器 (4 通道)                     │
│                                         │
│  CH0 (X0Y4): Lane 0 差分对 (txp0/txn0)  │
│  CH1 (X0Y5): Lane 1 差分对 (txp1/txn1)  │
│  CH2 (X0Y6): Lane 2 差分对 (txp2/txn2)  │
│  CH3 (X0Y7): Lane 3 差分对 (txp3/txn3)  │
│                                         │
│  TX 驱动器:                              │
│  - 差分摆幅: 800-1200 mV                 │
│  - 预加重: 补偿 PCB 走线高频损耗          │
│  - 4 通道由 QPLL 同步驱动                 │
│                                         │
│  ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓    │
│                                         │
│  QSFP28 光模块:                          │
│  - 4 对差分电信号 → 4 路光调制器          │
│  - 每路 25.78125 Gbps NRZ 光信号         │
│  - 总输出: 100 Gbps 光信号               │
└─────────────────────────────────────────┘
           ↓
    4×25G 光信号 → 单模/多模光纤
           ↓

1.3. 光纤链路

复制代码
┌─────────────────────────────────────────┐
│  光纤链路                                │
│                                         │
│  光信号参数:                             │
│  - 调制方式: NRZ (Non-Return-to-Zero)   │
│  - 每通道: 25.78125 Gbps                │
│  - 4 通道并行传输                        │
│  - 波长: 850nm (多模) / 1310nm (单模)    │
│                                         │
│  光纤类型:                               │
│  - OM3/OM4 多模: 最长 100m               │
│  - OS2 单模: 最长 10km (LR4)             │
│                                         │
│  传输时间:                               │
│  - 100m 光纤: ~0.5 μs (光在光纤中        │
│    传播速度 ≈ 5 ns/m)                    │
│  - 可忽略不计                            │
└─────────────────────────────────────────┘
           ↓
    4×25G 光信号
           ↓

1.4. 接收端 RFSoC-4x2 详细数据流

步骤 ⑧':QSFP28 → GTY 接收

复制代码
┌─────────────────────────────────────────┐
│  QSFP28 光模块 (接收端)                  │
│                                         │
│  - 4 路光电探测器 (PIN/APD)              │
│  - 每路 25.78125 Gbps 光 → 电转换        │
│  - 输出: 4 对差分电信号 (rxp/rxn)        │
│                                         │
│  ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓    │
│                                         │
│  GTY 接收器 (4 通道):                    │
│  CH0 (X0Y4): Lane 0 差分对 (rxp0/rxn0)  │
│  CH1 (X0Y5): Lane 1 差分对 (rxp1/rxn1)  │
│  CH2 (X0Y6): Lane 2 差分对 (rxp2/rxn2)  │
│  CH3 (X0Y7): Lane 3 差分对 (rxp3/rxn3)  │
│                                         │
│  RX 模拟前端:                            │
│  - CTLE (Continuous Time Linear Eq)     │
│  - DFE (Decision Feedback Equalizer)     │
│  - 补偿信道损耗和码间干扰 (ISI)            │
└─────────────────────────────────────────┘
           ↓
    4 × 1-bit 串行差分信号 @ 25.78125 Gbps
           ↓

步骤 ⑦':PMA 层 (关键:串→并转换)

复制代码
┌─────────────────────────────────────────┐
│  PMA (Physical Medium Attachment)       │
│                                         │
│  输入: 1-bit 串行差分信号 @ 25.78125 Gbps│
│                                         │
│  串→并转换 (CDR + Deserializer):          │
│  ┌─────────────────────────────────────┐ │
│  │ 1-bit 串行数据流                     │ │
│  │      ↓                              │ │
│  │  CDR (Clock Data Recovery)          │ │
│  │  - 从数据流中提取时钟                 │ │
│  │  - 无需独立时钟线!                    │ │
│  │  - 使用 PLL + 相位插值器              │ │
│  │      ↓                              │ │
│  │  串并转换器 (Deserializer)           │ │
│  │  - 1:160 解复用                      │ │
│  │  - 输出: 160-bit 并行 @ 161.13 MHz    │ │
│  │      ↓                              │ │
│  │  弹性缓冲 (Elastic Buffer)            │ │
│  │  - 补偿收发端时钟频偏                 │ │
│  │  - 典型深度: 64~128 字               │ │
│  └─────────────────────────────────────┘ │
│                                         │
│  输出: 160-bit 并行 @ 161.13 MHz          │
│  (每通道独立)                            │
└─────────────────────────────────────────┘
           ↓
    4 × 160-bit 并行总线 @ 161.13 MHz
           ↓

CDR 关键

  • 从 25.78125 Gbps 的 NRZ 数据流中恢复 25.78125 GHz 时钟
  • 使用 Bang-Bang PLL 或 Mueller-Muller 算法
  • 锁定时间: 通常 < 1 ms

步骤 ⑥':PCS 解码层 (关键:并→并转换)

复制代码
┌─────────────────────────────────────────┐
│  PCS (Physical Coding Sublayer)         │
│                                         │
│  输入: 4 × 160-bit 并行 @ 161.13 MHz     │
│                                         │
│  操作 1: Gearbox 逆变换 (4PL → 20VL)    │
│  ┌─────────────────────────────────────┐ │
│  │ 4 个物理通道 → 20 个虚拟通道          │ │
│  │ 解交错恢复原始 VL 顺序                │ │
│  │ 输出: 20 VLs × 66-bit               │ │
│  └─────────────────────────────────────┘ │
│                                         │
│  操作 2: 去扰 (Descrambling)             │
│  多项式: 1 + x^39 + x^58 (与发送端同步)  │
│                                         │
│  操作 3: 64b/66b 解码                    │
│  ┌─────────────────────────────────────┐ │
│  │ 检查 2-bit Sync Header:             │ │
│  │   - 10 = 有效数据块                  │ │
│  │   - 01 = 控制块 (对齐标记等)         │ │
│  │   - 00/11 = 错误 (Sync Header Viol)  │ │
│  │ 提取 64-bit 数据 → 512-bit 总线      │ │
│  └─────────────────────────────────────┘ │
│                                         │
│  操作 4: BIP-8 误码检测                  │
│  每 VL 独立计算 BIP-8                    │
│  与发送端插入的值比对                     │
│  不匹配 → BIP-8 Error Counter ++        │
│                                         │
│  操作 5: 通道对齐 (Lane Deskew)          │
│  使用 Alignment Marker (AM)             │
│  补偿 4 通道间的传播延迟差                │
│  典型 skew 容限: ± 几个 UI               │
│                                         │
│  输出: 512-bit 并行 @ 312.5 MHz          │
└─────────────────────────────────────────┘
           ↓
    512-bit 并行总线 @ 312.5 MHz
           ↓

步骤 ⑤':CMAC US+ (MAC 层校验)

复制代码
┌─────────────────────────────────────────┐
│  CMAC US+ (100G Ethernet 硬核)          │
│                                         │
│  输入: 512-bit 数据总线 @ 312.5 MHz      │
│                                         │
│  MAC 层操作:                             │
│  1. 去除 Preamble (7B) + SFD (1B)       │
│  2. FCS (CRC32) 校验                     │
│     - 计算接收数据的 CRC                  │
│     - 与帧尾 FCS 字段比对                │
│     - 不匹配 → FCS Error, 丢弃帧         │
│  3. 去除 FCS (4B)                        │
│  4. 去除 IPG (Inter-Packet Gap)          │
│                                         │
│  输出: 纯 Ethernet Payload               │
│  (即 RoCEv2 包: Eth + IP + UDP + RDMA)  │
└─────────────────────────────────────────┘
           ↓
    512-bit 并行总线 @ 312.5 MHz
           ↓

步骤 ④':RoCEv2 协议栈解封装

复制代码
┌─────────────────────────────────────────┐
│  RoCEv2 协议栈解封装                      │
│                                         │
│  1. Ethernet Header 解析:                 │
│     - DMAC 匹配本机 MAC?                 │
│     - VLAN Tag 处理                      │
│                                         │
│  2. IP Header 解析:                       │
│     - 目的 IP 匹配?                      │
│     - Header Checksum 校验              │
│     - ECN 字段提取 (拥塞通知)             │
│                                         │
│  3. UDP Header 解析:                      │
│     - 目的 Port = 4791? (RoCEv2)         │
│     - UDP Checksum 校验 (可选)            │
│                                         │
│  输出: RDMA 包 (BTH + RETH + Payload)    │
└─────────────────────────────────────────┘
           ↓
    512-bit 并行总线 @ 312.5 MHz
           ↓

步骤 ③':RDMA 引擎解封装

复制代码
┌─────────────────────────────────────────┐
│  RDMA 引擎解封装                          │
│                                         │
│  1. BTH 解析:                             │
│     - Opcode: RDMA_WRITE_ONLY?            │
│     - PSN (Packet Sequence Number) 校验  │
│       期望 PSN = 上次 + 1                │
│       乱序/丢包 → 放入重排序缓冲          │
│     - QPN (Queue Pair Number): 42         │
│                                         │
│  2. RETH 解析:                            │
│     - Virtual Address: 目标内存地址        │
│     - R_Key: 内存区域权限校验              │
│     - DMA Length: 4096 bytes              │
│                                         │
│  3. Payload 写入 RX Buffer:               │
│     - 根据 VA + R_Key 翻译物理地址         │
│     - 通过 DMA 写入 Host 内存              │
│     - 每包 4KB Payload                   │
│                                         │
│  4. 生成 ACK (可选):                      │
│     - 如果是 RDMA_WRITE_WITH_IMM          │
│     - 发送 ACK 包回发送端                  │
└─────────────────────────────────────────┘
           ↓
    512-bit 并行总线 @ ~200 MHz (DMA 内部)
           ↓

步骤 ②':DMA → Host 内存

复制代码
┌─────────────────────────────────────────┐
│  DMA Engine (接收方向)                    │
│                                         │
│  - 按 SGE 列表 Gather 数据               │
│  - 通过 PCIe TLP (Memory Write)          │
│    写入 Host DDR                        │
│  - 每完成一个 SGE,更新 CQ                │
│                                         │
│  数据重组:                                │
│  - 256 个 4KB 块 → 按 PSN 顺序重组        │
│  - 写入连续的 1MB 内存区域                │
│                                         │
│  完成通知:                                │
│  - 写入 CQ Entry (Completion Queue Entry) │
│  - 触发 MSI-X 中断通知 CPU               │
└─────────────────────────────────────────┘
           ↓
    PCIe Gen3 x8 TLP
           ↓

步骤 ①':Host CPU 完成

复制代码
┌─────────────────────────────────────────┐
│  Host CPU (接收端)                        │
│                                         │
│  1. 收到 MSI-X 中断                      │
│  2. 调用 ibv_poll_cq()                   │
│  3. 读取 CQ Entry:                       │
│     - WC (Work Completion) 状态 = SUCCESS  │
│     - 字节数 = 1,048,576 (1MB)           │
│     - QP #42                             │
│  4. 通知应用层: 1MB 数据传输完成           │
│                                         │
│  端到端时间: ~100-120 μs                 │
│  (含协议开销、DMA 延迟、中断处理)         │
└─────────────────────────────────────────┘

1.5. 串并转换/并串转换总结

位置 转换类型 输入 输出 关键组件
发送端 PCS 并→并 512-bit @ 312.5 MHz 4×160-bit @ 161.13 MHz Gearbox (20VL→4PL)
发送端 PMA 并→串 160-bit @ 161.13 MHz 1-bit @ 25.78125 Gbps SerDes (160:1)
接收端 PMA 串→并 1-bit @ 25.78125 Gbps 160-bit @ 161.13 MHz CDR + Deserializer (1:160)
接收端 PCS 并→并 4×160-bit @ 161.13 MHz 512-bit @ 312.5 MHz Gearbox (4PL→20VL)

1.6. 关键时序参数

参数 发送端 接收端
内部总线时钟 312.5 MHz 312.5 MHz
PCS 接口时钟 161.13 MHz 161.13 MHz
SerDes 线速率 25.78125 Gbps 25.78125 Gbps
UI 38.788 ps 38.788 ps
每通道有效载荷 25 Gbps (64b/66b 后) 25 Gbps
总有效带宽 100 Gbps 100 Gbps

1.7. 数据形态变化全景

复制代码
1MB 数据形态变化:

Host 内存:        [1MB 连续字节流]
                      ↓
PCIe TLP:         [256 × 4KB TLP Read]
                      ↓
FPGA TX Buffer:   [256 × 4KB 并行块 @ 512-bit]
                      ↓
RDMA 封装:        [256 × (BTH+RETH+4KB Payload)]
                      ↓
RoCEv2 封装:      [256 × (Eth+IP+UDP+RDMA)]
                      ↓
CMAC MAC:         [256 × Ethernet Frame (4178B)]
                      ↓
PCS 64b/66b:      [256 × 66-bit 块流]
                      ↓
PCS Gearbox:      [4 通道 × 160-bit 并行 @ 161MHz]
                      ↓
PMA SerDes:       [4 通道 × 1-bit 串行 @ 25.78Gbps]
                      ↓
GTY 驱动:         [4 对差分电信号]
                      ↓
QSFP28:           [4 路光信号 @ 25.78G]
                      ↓
光纤:             [4 路光信号传播]
                      ↓
QSFP28 (接收):    [4 路光 → 4 对差分电信号]
                      ↓
GTY 接收:         [4 通道 × 1-bit 串行 @ 25.78Gbps]
                      ↓
PMA CDR+Des:      [4 通道 × 160-bit 并行 @ 161MHz]
                      ↓
PCS Gearbox:      [20VL × 66-bit → 512-bit @ 312.5MHz]
                      ↓
CMAC MAC:         [256 × Ethernet Frame]
                      ↓
RoCEv2 解封:      [256 × (Eth+IP+UDP+RDMA)]
                      ↓
RDMA 解封:        [256 × (BTH+RETH+4KB)]
                      ↓
DMA 写回:         [256 × 4KB TLP Write]
                      ↓
Host 内存:        [1MB 连续字节流]  ← 完成!

2. 电气连接

以下是 模块级逻辑链接图 的详细文字说明,对应上图的完整数据流:


2.1. 发送端 RFSoC-4x2 模块链路

2.1.1 Host CPU → PCIe Hard IP

模块 接口 总线宽度 时钟 协议
Host CPU (Cortex-A53) AXI4-Lite 32-bit ~100 MHz 寄存器配置
PCIe Hard IP (Gen3 x8) AXI4-Stream 512-bit 312.5 MHz TLP 传输

数据流ibv_post_send() → 内核 RDMA 驱动 → PCIe TLP (Memory Read) → FPGA


2.1.2 PCIe → DMA Engine

模块 接口 总线宽度 时钟 功能
DMA Engine AXI4-Stream 512-bit 312.5 MHz Scatter-Gather

子模块

  • Desc Ring:描述符环形缓冲区,存储 SGE 列表
  • TX Buffer:发送数据缓冲 (BRAM/URAM)
  • Addr Trans:虚拟地址 → 物理地址转换
  • IRQ Ctrl:中断控制

2.1.3 DMA → RDMA Engine

模块 接口 总线宽度 时钟 功能
RDMA Engine AXI4-Stream 512-bit 312.5 MHz QP/CQ/WR 管理

子模块

  • QP Table:Queue Pair 状态表
  • PSN Mgmt:Packet Sequence Number 管理
  • BTH Gen:Base Transport Header 生成
  • RETH Gen:RDMA Extended Transport Header 生成

2.1.4 RDMA → RoCEv2 Stack

模块 接口 总线宽度 时钟 功能
RoCEv2 Stack AXI4-Stream 512-bit 312.5 MHz UDP/IP/Eth 封装

子模块

  • Eth:Ethernet Header (14B) + VLAN
  • IP:IP Header (20B) + ECN
  • UDP:UDP Header (8B, Dst Port=4791)
  • PFC/ECN:Priority Flow Control / Explicit Congestion Notification
  • Checksum:IP/UDP 校验和计算

2.1.5 RoCEv2 → CMAC US+

模块 接口 总线宽度 时钟 功能
CMAC US+ AXI4-Stream 512-bit 312.5 MHz 100GbE MAC/PCS

子模块

  • TX MAC:帧封装、CRC32 (FCS)、Preamble/SFD 添加
  • RX MAC:帧校验、FCS 校验
  • TX PCS:64b/66b 编码、扰码
  • RX PCS:64b/66b 解码、去扰

2.1.6 CMAC → PCS Gearbox (关键:并→并转换)

模块 接口 总线宽度 时钟 功能
PCS Gearbox CAUI-4 4×160-bit 161.13 MHz 20VL → 4PL

子模块

  • 64b/66b Enc:64-bit 数据 → 66-bit 编码块 (2-bit Sync Header)
  • Scrambler:扰码 (多项式: 1 + x³⁹ + x⁵⁸)
  • VL Mapper:20 虚拟通道 → 4 物理通道映射
  • AM Insert:Alignment Marker 插入 (用于通道对齐)

转换细节

复制代码
输入: 512-bit @ 312.5 MHz (来自 CMAC)
      ↓
20 VLs × 66-bit @ 644.53 MHz (等效)
      ↓
Gearbox 交错分配
      ↓
输出: 4 PLs × 160-bit @ 161.13 MHz

2.1.7 PCS Gearbox → PMA SerDes (关键:并→串转换)

模块 接口 总线宽度 时钟/速率 功能
PMA SerDes PMA 4×160-bit → 4×1-bit 161.13 MHz → 25.78 GHz 160:1 Serializer

子模块

  • Serializer :160:1 并串转换
    • 160-bit 并行数据 → 1-bit 串行数据流
    • 时钟: 161.13 MHz × 160 = 25.78125 GHz
  • TX Driver :差分驱动器
    • 预加重 (Pre-emphasis)
    • 差分摆幅: 800-1200 mV

2.1.8 PMA → GTY Quad

模块 接口 总线宽度 速率 功能
GTY Quad 差分对 4×1-bit 4×25.78125 Gbps 高速收发器

通道分配

通道 位置 对应 QSFP Lane
CH0 X0Y4 Lane 0
CH1 X0Y5 Lane 1
CH2 X0Y6 Lane 2
CH3 X0Y7 Lane 3

2.1.9 GTY → QSFP28

模块 接口 总线宽度 速率 功能
QSFP28 差分对 4×差分对 4×25.78125 Gbps 光电转换

QSFP28 内部

  • 4 路电信号 → 4 路激光驱动器 → 4 路光调制器
  • 输出: 4×25.78125 Gbps NRZ 光信号

2.2. 光纤链路

参数
介质 单模/多模光纤
波长 850nm (多模) / 1310nm (单模)
调制 NRZ (Non-Return-to-Zero)
总速率 100 Gbps (4×25.78125 Gbps)
传播延迟 ~5 ns/m

2.3. 接收端 RFSoC-4x2 模块链路 (镜像逆过程)

2.3.1 QSFP28 → GTY Quad

模块 接口 总线宽度 速率 功能
QSFP28 差分对 4×差分对 4×25.78125 Gbps 光电转换

QSFP28 内部

  • 4 路光信号 → 4 路光电探测器 → 4 路 TIA/LA
  • 输出: 4 对差分电信号 (rxp/rxn)

2.3.2 GTY → PMA SerDes

模块 接口 总线宽度 速率 功能
GTY Quad 差分对 4×1-bit 4×25.78125 Gbps 接收器

RX 模拟前端

  • CTLE (Continuous Time Linear Equalizer)
  • DFE (Decision Feedback Equalizer)
  • 眼图扫描 / 误码监测

2.3.3 PMA SerDes (关键:串→并转换)

模块 接口 总线宽度 时钟/速率 功能
PMA SerDes PMA 4×1-bit → 4×160-bit 25.78 GHz → 161.13 MHz 1:160 Deserializer

子模块

  • CDR (Clock Data Recovery)
    • 从 25.78125 Gbps 数据流中提取时钟
    • Bang-Bang PLL / Mueller-Muller 算法
    • 无需独立参考时钟!
  • Deserializer :1:160 串并转换
    • 1-bit 串行 → 160-bit 并行
    • 输出时钟: 161.13 MHz
  • Elastic Buffer
    • 补偿收发端时钟频偏 (±100 ppm)
    • 典型深度: 64-128 字

2.3.4 PMA → PCS Gearbox (关键:并→并转换)

模块 接口 总线宽度 时钟 功能
PCS Gearbox CAUI-4 4×160-bit 161.13 MHz 4PL → 20VL

子模块

  • AM Lock:Alignment Marker 锁定,实现通道对齐
  • VL Reorder:4 物理通道 → 20 虚拟通道解交错
  • Descrambler:去扰 (与发送端同步)
  • 64b/66b Dec:66-bit 解码 → 64-bit 数据

转换细节

复制代码
输入: 4 PLs × 160-bit @ 161.13 MHz
      ↓
Gearbox 解交错
      ↓
20 VLs × 66-bit @ 644.53 MHz (等效)
      ↓
64b/66b 解码
      ↓
输出: 512-bit @ 312.5 MHz (送往 CMAC)

2.3.5 PCS Gearbox → CMAC US+

模块 接口 总线宽度 时钟 功能
CMAC US+ AXI4-Stream 512-bit 312.5 MHz 100GbE MAC/PCS

RX 操作

  • FCS (CRC32) 校验
  • 去除 Preamble/SFD
  • 去除 IPG (Inter-Packet Gap)

2.3.6 CMAC → RoCEv2 Stack

模块 接口 总线宽度 时钟 功能
RoCEv2 Stack AXI4-Stream 512-bit 312.5 MHz UDP/IP/Eth 解封装

解封装顺序

  1. Ethernet Header 解析 (DMAC 匹配)
  2. IP Header 解析 (Checksum 校验、ECN 提取)
  3. UDP Header 解析 (Port=4791 确认)
  4. 提取 RDMA 包 (BTH + RETH + Payload)

2.3.7 RoCEv2 → RDMA Engine

模块 接口 总线宽度 时钟 功能
RDMA Engine AXI4-Stream 512-bit 312.5 MHz QP/CQ/WR 管理

子模块

  • BTH Parse:解析 Opcode、PSN、QPN
  • RETH Parse:解析 Virtual Address、R_Key、DMA Length
  • PSN Check:序列号校验,检测丢包/乱序
  • QP Table:Queue Pair 状态更新

2.3.8 RDMA → DMA Engine

模块 接口 总线宽度 时钟 功能
DMA Engine AXI4-Stream 512-bit 312.5 MHz Gather-Scatter

RX 操作

  • 根据 RETH 中的 VA + R_Key 翻译物理地址
  • 通过 PCIe TLP (Memory Write) 写入 Host DDR
  • 每完成一个 SGE,更新 RX Buffer

2.3.9 DMA → PCIe → Host CPU

模块 接口 总线宽度 时钟 功能
PCIe Hard IP AXI4-Stream 512-bit 312.5 MHz TLP 传输
Host CPU AXI4-Lite 32-bit ~100 MHz 中断/完成通知

完成流程

  1. 1MB 数据全部写入 Host 内存
  2. DMA 生成 CQ Entry (Completion Queue Entry)
  3. 触发 MSI-X 中断
  4. CPU 调用 ibv_poll_cq() 检测到 CQE
  5. 应用层收到"传输完成"通知

2.4. 模块间接口总览

连接 接口类型 总线宽度 时钟/速率 方向
Host ↔ PCIe AXI4-Lite 32-bit ~100 MHz 双向 (配置)
PCIe ↔ DMA AXI4-Stream 512-bit 312.5 MHz 双向 (数据)
DMA ↔ RDMA AXI4-Stream 512-bit 312.5 MHz 双向
RDMA ↔ RoCEv2 AXI4-Stream 512-bit 312.5 MHz 双向
RoCEv2 ↔ CMAC AXI4-Stream 512-bit 312.5 MHz 双向
CMAC ↔ PCS Gearbox CAUI-4 4×160-bit 161.13 MHz 双向
PCS ↔ PMA PMA 4×160-bit ↔ 4×1-bit 161.13 MHz ↔ 25.78 GHz 双向
PMA ↔ GTY 差分对 4×1-bit 25.78125 Gbps 双向
GTY ↔ QSFP28 差分对 4×差分对 25.78125 Gbps 双向
QSFP28 ↔ Fiber 光信号 4×光通道 25.78125 Gbps 双向

2.5. 时钟域总结

时钟域 频率 用途
系统时钟 100-250 MHz AXI4-Lite 配置、控制逻辑
数据总线时钟 312.5 MHz 512-bit AXI4-Stream (160 Gbps 总线带宽)
PCS 接口时钟 161.13 MHz CAUI-4, 4×160-bit
SerDes 线速率 25.78125 GHz GTY 串行数据 (UI = 38.788 ps)
REFCLK 322.265625 MHz QPLL 输入,生成 SerDes 时钟

2.6. 关键转换点

位置 转换类型 详细说明
CMAC → PCS Gearbox 并→并 512-bit @ 312.5 MHz → 4×160-bit @ 161.13 MHz (Gearbox 20VL→4PL)
PCS Gearbox → PMA 并→串 160-bit @ 161.13 MHz → 1-bit @ 25.78 GHz (160:1 Serializer)
PMA → PCS Gearbox (RX) 串→并 1-bit @ 25.78 GHz → 160-bit @ 161.13 MHz (CDR + 1:160 Deserializer)
PCS Gearbox → CMAC (RX) 并→并 4×160-bit @ 161.13 MHz → 512-bit @ 312.5 MHz (Gearbox 4PL→20VL)
相关推荐
平生幻1 小时前
基于优先级的流量控制PFC
网络
Echo_cy_1 小时前
基于ZYNQ-7000的Ethernet驱动配置
linux·驱动开发·嵌入式硬件·fpga开发·ethernet·zynq
yeflx2 小时前
基于 ROS2 bag 的多激光雷达外参标定(无标定板方案)
网络
上海云盾-高防顾问3 小时前
SD-WAN 跨境加速,真实日常使用体验
网络·网络安全
2401_873479403 小时前
SOC告警日志中IP归属不明怎么办?部署IP离线库三步提升响应效率
网络·网络协议·tcp/ip
Multipath7124 小时前
多链路聚合 + 宽带自组网 + 卫星便携站,构筑应急通信“铁三角”乾元通多链路聚合路由破局“三断”绝境,重构应急通信生命线
网络·5g·安全·智能路由器·实时音视频
nVisual4 小时前
机柜PDU安装位置与空间建模方案
大数据·网络·数据库·信息可视化·数据中心基础设施管理
许彰午4 小时前
09-媒体访问控制
网络