JESD204B IP 核使用教程
平台:Vivado 17.4 | FPGA:Xilinx xcvu9p(Virtex UltraScale+)
目录
- 概述
- [JESD204B 协议原理](#JESD204B 协议原理)
- [底层概念:SerDes 与 GTY 收发器](#底层概念:SerDes 与 GTY 收发器)
- 3.1 [SerDes 基本原理](#SerDes 基本原理)
- 3.2 [xcvu9p 的 GTY 收发器架构](#xcvu9p 的 GTY 收发器架构)
- 3.3 [PMA 与 PCS](#PMA 与 PCS)
- 3.4 [CPLL 与 QPLL](#CPLL 与 QPLL)
- 3.5 [8B/10B 编码与 Comma 检测](#8B/10B 编码与 Comma 检测)
- [Vivado 17.4 JESD204 IP 核详解](#Vivado 17.4 JESD204 IP 核详解)
- [实战:xcvu9p 上的 JESD204B 设计](#实战:xcvu9p 上的 JESD204B 设计)
- 调试与验证
- 附录
1. 概述
JESD204B 是 JEDEC 协会制定的高速串行接口标准,用于数据转换器(ADC/DAC)与逻辑器件(FPGA/ASIC)之间的数据传输。相比传统的并行 LVDS 接口,JESD204B 具有以下优势:
- 引脚数大幅减少:多路数据复用在少数高速串行差分对上
- 支持更高采样率:单线速率最高 12.5 Gbps
- 确定性延迟:Subclass 1 模式下延迟可重复、可预测
- 多器件同步:通过 SYSREF 实现多芯片间的相位对齐
在 Xilinx FPGA 中,JESD204B 的实现依赖两个 IP 核的配合:
| IP 核 | 职责 |
|---|---|
| JESD204(链路层核) | 实现加扰/解扰、8B/10B 控制、CGS/ILAS 状态机、LMFC 对齐、AXI4-Stream 数据接口 |
| JESD204 PHY(物理层核) | 封装 GT 收发器,提供串行/解串、PLL、均衡、DRP 配置等物理层功能 |
注意:JESD204 PHY 核不能独立使用,必须与 JESD204 核配合。
本教程以 Vivado 17.4 (对应 JESD204 IP v7.2、JESD204 PHY v3.2)和 xcvu9p-flga2104-2-i(Virtex UltraScale+,GTY 收发器)为平台进行讲解。
2. JESD204B 协议原理
2.1 发展历程与定位
| 版本 | 年份 | 最大线速率 | 多通道 | 确定性延迟 |
|---|---|---|---|---|
| JESD204 | 2006 | 3.125 Gbps | 否 | 否 |
| JESD204A | 2008 | 3.125 Gbps | 是 | 否 |
| JESD204B | 2011 | 12.5 Gbps | 是 | 是(Subclass 1/2) |
JESD204B 广泛应用于无线基站、雷达、电子对抗、高速数据采集、软件无线电等场景。典型的系统拓扑如下:
┌──────────┐ 串行Lane(差分对) ┌──────────┐
│ ADC/DAC │◄──────────────────────►│ FPGA │
│(数据转换器│ SYNC~(单向,LVDS) │ (逻辑器件)│
│ 如AD9371)│ SYSREF(差分,LVDS) │ xcvu9p │
└──────────┘◄──────────────────────►└──────────┘
▲ ▲
│ │
Device Clock Device Clock
(同源/相关) (同源/相关)
2.2 三层协议架构
JESD204B 标准采用分层设计,从顶到底分为三层:
┌─────────────────────────────────────────┐
│ 应用层 (Application) │
│ 用户数据 / 采样数据 / 控制信息 │
├─────────────────────────────────────────┤
│ 传输层 (Transport Layer) │
│ 采样→字节映射 / 成帧 / 控制位插入 │
│ 参数: M, S, N, N', CS, CF │
├─────────────────────────────────────────┤
│ 数据链路层 (Data Link Layer) │
│ 加扰 / 8B/10B / CGS / ILAS / 同步 │
│ 参数: L, F, K, Scrambling │
├─────────────────────────────────────────┤
│ 物理层 (Physical Layer) │
│ SerDes / PLL / 均衡 / 串行收发 │
│ 参数: Line Rate, Refclk, PLL Type │
└─────────────────────────────────────────┘
传输层(Transport Layer)
负责将转换器的采样数据映射到字节(octet)流。核心工作:
- 将每个转换器的 N 位样本加上控制位(CS),凑成 N' 位(通常为 4 的倍数,如 12/16/20 位)
- 将多个转换器、多个样本的数据按规则打包到 F 个字节的帧中
- 分发到 L 条 Lane 上
Xilinx 的 JESD204 IP 核不包含传输层,只实现数据链路层和物理层的接口。传输层(framer/deframer)需要用户自行实现或使用第三方 IP(如 ADI 的 axi_jesd204_tx/rx 中的 transport 层)。
数据链路层(Data Link Layer)
负责链路的建立、同步和数据的可靠传输:
- 加扰(Scrambling) :使用多项式
1 + x^14 + x^15的自同步扰码器,减少电磁干扰(EMI)和连续相同比特 - 8B/10B 编码:将 8 位数据/控制字符编码为 10 位,保证直流平衡和足够的跳变沿
- 链路初始化:CGS → ILAS → User Data 三阶段状态机
- 通道对齐:通过弹性缓冲(Elastic Buffer)对齐多条 Lane 的延迟差异
物理层(Physical Layer)
由 FPGA 的高速串行收发器(GTH/GTY)实现,负责:
- 并串转换(Serializer)/ 串并转换(Deserializer)
- 时钟生成(PLL)与时钟数据恢复(CDR)
- 发送预加重(TX Pre-emphasis)与接收均衡(RX EQ/DFE)
- 差分信号驱动与接收
2.3 Subclass 与确定性延迟
JESD204B 定义了三个子类(Subclass),核心区别在于是否支持确定性延迟以及同步机制:
| 特性 | Subclass 0 | Subclass 1 | Subclass 2 |
|---|---|---|---|
| 确定性延迟 | 不支持 | 支持 | 支持 |
| 同步信号 | SYNC~ | SYNC~ + SYSREF | SYNC~(兼作延迟对齐) |
| LMFC 对齐方式 | 无 | SYSREF 触发 | SYNC~ 边沿触发 |
| 实现复杂度 | 最低 | 中等 | 较高 |
| 典型应用 | 简单数据采集 | 多通道同步、雷达、通信 | 特殊时序需求 |
关键概念:LMFC
LMFC(Local MultiFrame Clock,本地多帧时钟) 是理解确定性延迟的核心。
- 多帧(MultiFrame)= K 个帧(Frame)
- LMFC 的周期 = K × 帧周期 =
K × F × 10 / LineRate - 所有设备(ADC、DAC、FPGA)的 LMFC 必须在相位上对齐,才能保证延迟确定
Subclass 1 的工作原理
SYSREF ────────┐ ┌──────────────────┐
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
LMFC_TX │ LMFC │ │ LMFC │ ... │ LMFC │
└──────────┘ └──────────┘ └──────────┘
▲ ▲ ▲
SYSREF 边沿被 device clock 采样,同时复位所有设备的 LMFC 相位 → 所有设备 LMFC 对齐
- 系统发出 SYSREF 脉冲(或周期信号),所有设备同时采样
- 每个设备在检测到 SYSREF 后,将内部 LMFC 复位到已知相位
- 发送端在 LMFC 边界开始发送 ILAS 和数据
- 接收端通过弹性缓冲,将不同 Lane 的数据对齐到同一个 LMFC 边界输出
- 因此,从发送端输入到接收端输出的总延迟是固定的、可重复的
SYSREF 要求:SYSREF 必须与 device clock 同源,且满足建立/保持时间。通常由时钟芯片(如 LMK04828、HMC7044)生成。
2.4 核心参数 LMFS 详解
JESD204B 的配置由一组参数定义,最核心的是 LMFS(有时也写作 L,M,F,S):
| 参数 | 全称 | 含义 | 典型范围 |
|---|---|---|---|
| L | Lanes per device | 每个转换器设备使用的串行 Lane 数 | 1~8(Xilinx IP 单核) |
| M | Converters per device | 每个设备的转换器(ADC/DAC 通道)数 | 1~256 |
| F | Octets per frame | 每个帧中每条 Lane 包含的字节数 | 1~256 |
| S | Samples per converter per frame | 每个帧周期内每个转换器发送的采样数 | 1~32 |
其他重要参数:
| 参数 | 全称 | 含义 |
|---|---|---|
| N | Converter resolution | 转换器实际分辨率(如 14 位 ADC) |
| N' | Bits per sample | 每个样本在链路上传输的总位数(N + CS,通常取 4 的倍数) |
| K | Frames per multiframe | 每个多帧包含的帧数(必须满足 F×K ≤ 256 且为 4 的倍数的相关约束) |
| CS | Control bits per sample | 每个样本附加的控制位数(通常为 0) |
| CF | Control words per frame clock cycle | 每帧周期的控制字数(通常为 0) |
| HD | High density | 高密度模式(样本是否跨字节边界打包) |
参数之间的约束关系
这些参数不是独立的,必须满足以下等式:
F × L = M × S × N' / 8
即:所有 Lane 每帧的总字节数 = 所有转换器每帧的总比特数 / 8。
推导过程:
- 每个帧周期内,M 个转换器各发送 S 个样本,每个样本 N' 位 → 总数据量 =
M × S × N'位 - 这些数据分布到 L 条 Lane 上,每条 Lane 每帧有 F 个字节(8 位)→ 总容量 =
L × F × 8位 - 两者必须相等:
M × S × N' = L × F × 8→F = (M × S × N') / (8 × L)
计算示例
示例 1:8 通道 16 位 ADC,使用 4 条 Lane
- M=8, S=1, N'=16, L=4
- F = (8 × 1 × 16) / (8 × 4) = 128/32 = 4
- 配置为 LMFS = 4841
示例 2:同样 8 通道 16 位 ADC,使用 8 条 Lane
- M=8, S=1, N'=16, L=8
- F = (8 × 1 × 16) / (8 × 8) = 128/64 = 2
- 配置为 LMFS = 8821
示例 3:4 通道 16 位 ADC,使用 4 条 Lane(本教程实战场景)
- M=4, S=1, N'=16, L=4
- F = (4 × 1 × 16) / (8 × 4) = 64/32 = 2
- 配置为 LMFS = 4421
示例 4:LMFS = 4821 反推 N'
- 已知 L=4, M=8, F=2, S=1
- N' = (F × 8 × L) / (M × S) = (2 × 8 × 4) / (8 × 1) = 64/8 = 8
- 即该配置对应 N'=8(8 位样本)
要点 :LMFS 的值必须与 N' 联动考虑,不能孤立设定。实际应用中,LMFS 配置由 ADC/DAC 芯片的数据手册决定,FPGA 端必须与转换器端完全一致,否则 ILAS 阶段会因参数不匹配而失败。
2.5 线速率与时钟计算
线速率(Line Rate)公式
线速率是每条串行 Lane 的比特率,计算公式:
Line Rate = (M × S × N' × f_sample × 10/8) / L
其中:
f_sample= 转换器采样率(Frame Clock = f_sample / S)10/8= 8B/10B 编码开销(每 8 位数据编码为 10 位)- 除以 L = 数据分摊到 L 条 Lane
等价形式:
Line Rate = (M × N' × f_sample × 10/8) / L (当 S=1 时)
Line Rate = F × f_frame × 10 (f_frame = 帧时钟频率)
计算实例:
- ADC:M=4, S=1, N'=16, f_sample=500 MSPS, L=4
- Line Rate = (4 × 1 × 16 × 500e6 × 10/8) / 4 = 10 Gbps
各级时钟频率
在 Xilinx JESD204 IP 核中,涉及以下时钟:
| 时钟 | 计算公式 | 实例(Line Rate=10 Gbps, F=2, K=32) |
|---|---|---|
| 串行线速率 | 用户指定 | 10 Gbps |
| 字节时钟(Byte Clock) | Line Rate / 10 | 1000 MHz(1 GHz) |
| 核时钟(Core Clock) | Line Rate / 40 | 250 MHz |
| 帧时钟(Frame Clock) | Line Rate / (10 × F) | 500 MHz |
| LMFC 时钟 | Line Rate / (10 × F × K) | 15.625 MHz |
| 参考时钟(Ref Clock) | GT 收发器要求,通常为线速率的约数 | 250 MHz 或 500 MHz |
为什么 Core Clock = Line Rate / 40?
Xilinx JESD204 IP 核使用 32 位(4 字节)数据通路。8B/10B 编码后,4 字节 = 40 位串行数据。因此每来一个 core clock,收发器处理 40 位串行数据,core clock = Line Rate / 40。
2.6 链路初始化流程
JESD204B 链路的建立分为三个阶段,由接收端(RX)主导发起:
时间轴 ──────────────────────────────────────────────────────►
阶段1: CGS 阶段2: ILAS 阶段3: User Data
───────────── ───────────────── ─────────────────
RX: SYNC~=0 RX: SYNC~=1 RX: 接收用户数据
TX: 发 K28.5 TX: 发4个多帧(含配置) TX: 发用户数据
阶段一:CGS(Code Group Synchronization,代码组同步)
| 步骤 | 动作 |
|---|---|
| 1 | 接收端(RX)将 SYNC~ 拉低,发起同步请求 |
| 2 | 发送端(TX)在下一个符号周期开始连续发送 /K28.5/ 字符(未加扰) |
| 3 | RX 在串行数据流中搜索 comma 序列 (K28.5 的 10b 编码中包含唯一的 comma 模式 0011111010 或其反),实现比特和字节对齐 |
| 4 | RX 收到至少 4 个连续无误的 K28.5 后,将 SYNC~ 拉高,CGS 完成 |
K28.5 是 8B/10B 编码中的一个特殊控制字符(K 类),其 10b 编码包含唯一的 comma 序列,用于接收器实现字节边界对齐。
阶段二:ILAS(Initial Lane Alignment Sequence,初始通道对齐序列)
SYNC~ 拉高后,TX 在下一个 LMFC 边界开始发送 ILAS,共 4 个多帧:
| 多帧 | 内容 | 作用 |
|---|---|---|
| 第 1 个 | /R/ (K28.0) + 填充 + /A/ (K28.3) |
标记多帧开始,RX 用 /R/ 做通道间延迟对齐 |
| 第 2 个 | /R/ + /Q/ (K28.4) + 配置参数 + /A/ |
传输链路配置参数(L, M, F, S, N, N', K 等) |
| 第 3 个 | /R/ + 填充 + /A/ |
对齐 |
| 第 4 个 | /R/ + 填充 + /A/ |
对齐,最后一个 /A/ 标志 ILAS 结束 |
ILAS 中的关键控制字符:
| 字符 | 8B/10B 名称 | 作用 |
|---|---|---|
| /K/ | K28.5 | CGS 阶段的同步字符 |
| /R/ | K28.0 | 多帧开始标记(Start of Multiframe) |
| /A/ | K28.3 | 多帧结束标记(End of Multiframe) |
| /Q/ | K28.4 | 配置数据开始标记 |
RX 在 ILAS 阶段:
- 用 /R/ 字符检测每条 Lane 的延迟,通过**弹性缓冲(Elastic Buffer)**对齐所有 Lane
- 从第 2 个多帧中读取配置参数,与自身配置比对
- 接收完 4 个多帧后,进入用户数据阶段
阶段三:User Data(用户数据阶段)
ILAS 结束后,链路进入正常数据传输:
- TX 发送加扰后的用户数据(传输层映射后的字节流)
- RX 解扰、解帧,通过 AXI4-Stream 接口输出给用户逻辑
- 运行过程中如果检测到错误(如 8B/10B 错误、意外的控制字符),RX 可以重新拉低 SYNC~,触发重新同步
3. 底层概念:SerDes 与 GTY 收发器
3.1 SerDes 基本原理
SerDes(Serializer/Deserializer,串行器/解串器) 是 JESD204B 物理层的核心。它将 FPGA 内部的并行宽数据转换为高速串行差分信号发送,并将接收到的串行信号恢复为并行数据。
发送方向(TX):
并行数据(32bit) → 8B/10B编码 → FIFO → 并串转换(40:1) → 预加重 → 差分驱动(TX P/N)
接收方向(RX):
差分接收(RX P/N) → 均衡(CTLE/DFE) → CDR(时钟恢复) → 串并转换(1:40) → Comma检测/对齐 → 8B/10B解码 → FIFO → 并行数据(32bit)
SerDes 的关键技术点:
| 技术 | 作用 |
|---|---|
| PLL(锁相环) | 由低频参考时钟生成高速串行时钟 |
| CDR(时钟数据恢复) | 接收端从串行数据中恢复时钟,无需单独传时钟 |
| TX 预加重/去加重 | 补偿高频信号在传输线上的衰减 |
| RX 均衡(CTLE/DFE) | 接收端补偿信号衰减和码间干扰(ISI) |
| 8B/10B 编码 | 保证直流平衡、足够跳变沿,便于 CDR 锁定 |
| Comma 检测 | 从串行比特流中找到字节边界 |
3.2 xcvu9p 的 GTY 收发器架构
xcvu9p 属于 Virtex UltraScale+ 系列,集成 GTY(GTYE4) 收发器。
Quad 组织结构
GTY 以 Quad(四通道组) 为基本组织单元:
┌─────────────────────────────────────────────┐
│ GTY Quad (Q) │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │Channel 0│ │Channel 1│ │Channel 2│ ... │
│ │ (CPLL) │ │ (CPLL) │ │ (CPLL) │ │
│ └─────────┘ └─────────┘ └─────────┘ │
│ ┌─────────────────────────────────────┐ │
│ │ COMMON (共享) │ │
│ │ QPLL0 (LC tank) QPLL1 (LC tank) │ │
│ └─────────────────────────────────────┘ │
│ 参考时钟输入: GTREFCLK0, GTREFCLK1 │
└─────────────────────────────────────────────┘
每个 Quad 包含:
- 4 个 Channel :每个 Channel 是一个独立的收发器(含 TX 和 RX),各自有一个 CPLL
- 1 个 COMMON :包含两个共享的 QPLL0 和 QPLL1(LC tank 型 PLL,抖动性能更好)
- 2 个参考时钟输入:GTREFCLK0 和 GTREFCLK1(差分)
xcvu9p 的 GTY 关键参数(-2 速度等级):
| 参数 | 值 |
|---|---|
| 最大线速率 | 约 28 Gbps(但 JESD204B 标准限制为 12.5 Gbps) |
| JESD204B 最大线速率 | 12.5 Gbps |
| 参考时钟范围 | 60 MHz ~ 820 MHz |
| 每 Quad 通道数 | 4 |
| PLL 类型 | CPLL(每通道)+ QPLL0/QPLL1(Quad 共享) |
注意:虽然 GTY 硬件支持更高线速率,但 JESD204B 协议标准上限为 12.5 Gbps,IP 核也按此限制。
3.3 PMA 与 PCS
GTY 收发器内部分为两个子层:
PMA(Physical Media Attachment,物理介质连接层)
负责模拟信号处理,是真正的"高速"部分:
| 模块 | 功能 |
|---|---|
| TX PMA | 并串转换、TX 输出缓冲、预加重/去加重、差分驱动 |
| RX PMA | 差分接收、CTLE(连续时间线性均衡)、DFE(判决反馈均衡)、CDR、串并转换 |
| PLL | CPLL/QPLL,生成高速串行时钟 |
| 参考时钟选择 | 选择 GTREFCLK0/1 或其他时钟源 |
PCS(Physical Coding Sublayer,物理编码子层)
负责数字逻辑处理,运行在较低的并行时钟域:
| 模块 | 功能 |
|---|---|
| TX PCS | 8B/10B 编码(可选)、FIFO、位宽转换 |
| RX PCS | 8B/10B 解码、Comma 检测、字节对齐、弹性缓冲、通道绑定 |
| DRP(Dynamic Reconfiguration Port) | 动态重配置接口,用于运行时修改 GT 参数 |
在 JESD204B 应用中,8B/10B 编解码和 comma 检测通常由 JESD204 IP 核(链路层) 处理,GTY 的 PCS 配置为原始数据模式(Raw Mode),即不使用 GT 内部的 8B/10B。这是因为 JESD204B 的 8B/10B 有特殊的控制字符序列和状态机要求。
3.4 CPLL 与 QPLL
GTY 提供三种 PLL 选择,各有特点:
| 特性 | CPLL | QPLL0 / QPLL1 |
|---|---|---|
| 位置 | 每个 Channel 独立 | Quad 内 4 个 Channel 共享 |
| 类型 | 环形振荡器(Ring PLL) | LC 谐振槽(LC Tank PLL) |
| 抖动性能 | 一般 | 更好(低抖动) |
| 频率范围 | 较宽 | 分高低两个频段 |
| 功耗 | 每通道一份 | 共享,多通道时更省电 |
| 适用场景 | 单通道、中低速率 | 多通道、高速率、JESD204B |
JESD204B 中的 PLL 选择
- 多 Lane 设计 :推荐使用 QPLL,因为同一 Quad 内的 Lane 共享同一个 PLL,保证时钟同源,有利于通道对齐和确定性延迟
- 单 Lane 或跨 Quad:可使用 CPLL,每通道独立配置
- 超过 4 条 Lane:需要多个 Quad,每个 Quad 使用自己的 QPLL,但所有 QPLL 的参考时钟必须同源
QPLL 频段(GTYE4)
QPLL 的 VCO(压控振荡器)有两个工作频段:
| 频段 | VCO 频率范围 | 适用线速率(大致) |
|---|---|---|
| 低频段(Band 0) | 约 5.93 ~ 8.0 GHz | 较低线速率 |
| 高频段(Band 1) | 约 9.8 ~ 12.5 GHz | 较高线速率 |
线速率 = VCO 频率 / 输出分频器(OUT_DIV)。
在 Vivado 中配置 JESD204 PHY 时,选择线速率和参考时钟后,工具会自动计算合适的 PLL 参数(FBDIV、REFCLK_DIV、OUT_DIV 等),一般无需手动设置。
3.5 8B/10B 编码与 Comma 检测
8B/10B 编码原理
8B/10B 将 8 位数据(或控制字符)编码为 10 位,目的:
- 直流平衡:保证长时间内 0 和 1 的数量基本相等,避免耦合电容/变压器隔直导致的信号漂移
- 足够跳变沿:保证 CDR 能从数据中恢复时钟
- 错误检测:非法的 10b 编码可被检测
- 控制字符:部分编码保留为 K 类控制字符,用于链路管理
编码规则:
- 8 位输入分为低 5 位(ABCDE)和高 3 位(HGF)
- 5B/6B 编码 + 3B/4B 编码
- 使用**极性偏差(RD, Running Disparity)**机制选择编码,保证直流平衡
数据字符(D)与控制字符(K)
- D 字符:普通数据,256 个(D0.0 ~ D31.7)
- K 字符:控制字符,仅 12 个有效,JESD204B 用到的:
| K 字符 | 8b 值 | 10b 编码(RD=-1 / RD=+1) | 用途 |
|---|---|---|---|
| K28.5 (/K/) | 0xBC | 0011111010 / 1100000101 | CGS 同步,含 comma |
| K28.0 (/R/) | 0x1C | 0011110100 / 1100001011 | 多帧开始 |
| K28.3 (/A/) | 0x7C | 0011111000 / 1100000111 | 多帧结束 |
| K28.4 (/Q/) | 0x9C | 0011110010 / 1100001101 | 配置数据开始 |
Comma 检测
Comma 是一个特殊的 7 位序列 0011111(或其反 1100000),在正常数据编码中不会出现。K28.x 系列字符的 10b 编码中都包含 comma。
接收端的 comma 检测器在串行比特流中滑动搜索 comma 序列,找到后确定字节边界,实现字节对齐。这是 CGS 阶段的核心动作。
4. Vivado 17.4 JESD204 IP 核详解
4.1 IP 核体系:JESD204 + JESD204 PHY
Vivado 17.4 中 JESD204B 相关的 IP 核有两个:
| IP 核 | 版本 | 功能 |
|---|---|---|
| JESD204 | v7.2 | 链路层:加扰/解扰、CGS/ILAS 状态机、LMFC、SYNC~、SYSREF、AXI4-Stream 数据接口、AXI4-Lite 配置接口 |
| JESD204 PHY | v3.2 | 物理层:封装 GT 收发器,提供串行接口、PLL、DRP、复位管理 |
两者的连接关系:
┌─────────────────────┐ ┌─────────────────────┐
│ JESD204 (链路层) │ │ JESD204 PHY(物理层)│
│ │ │ │
│ AXI4-Stream 数据 │ │ GT 串行 TX/RX P/N │
│ AXI4-Lite 配置 │ │ 参考时钟 │
│ SYNC~ / SYSREF │◄──────►│ DRP / 复位控制 │
│ core_clk │ │ gt_reset_done │
│ gt_reset │ │ │
└─────────────────────┘ └─────────────────────┘
Shared Logic(共享逻辑)选项
JESD204 IP 核有一个重要选项------共享逻辑放在哪里:
| 选项 | 含义 | 适用场景 |
|---|---|---|
| Include Shared Logic in core | GT 收发器、PLL、参考时钟缓冲等都包含在 JESD204 核内部 | 单 IP 核、简单设计、不需要与其他 IP 共享 GT |
| Include Shared Logic in example design | JESD204 核只包含链路层逻辑,GT 收发器由独立的 JESD204 PHY 核提供 | 多个 JESD204 核共享 GT、TX 和 RX 共用 GT、需要灵活配置 |
推荐 :对于 xcvu9p 上的多 Lane 设计,建议使用 "Include Shared Logic in example design",并配合 JESD204 PHY 核使用。这样可以灵活地将 TX 和 RX 映射到同一个 GT Quad,或在多个 JESD204 核之间共享 GT 资源。
4.2 配置页面逐页详解
在 Vivado IP Integrator 或 IP Catalog 中双击 JESD204 IP,打开配置界面,共 4 个页面(Tab)。
Page 1: Basic(基本配置)
┌──────────────────────────────────────────────────┐
│ Basic │
│ │
│ [Transmit or Receive] │
│ ○ Transmit ● Receive │
│ │
│ [Lanes per Link (L)] │
│ [ 4 ] │
│ │
│ [Transceiver Parameters] │
│ GT Type: [GTY ▼] │
│ Line Rate: [10.0 ] Gbps │
│ Reference Clock:[250.0 ] MHz │
│ DRP Clock: [100.0 ] MHz │
│ PLL Selection: [QPLL ▼] │
│ │
│ [Clocking Options] │
│ ☑ Drive JESD204 Core Clock using Reference Clock│
│ Sample SYSREF on: [Negative Edge ▼] │
└──────────────────────────────────────────────────┘
| 参数 | 含义 | 配置建议 |
|---|---|---|
| Transmit or Receive | 选择 TX 核还是 RX 核 | 根据方向选择,TX 和 RX 需要分别例化 |
| Lanes per Link (L) | 链路使用的 Lane 数(1~8) | 必须与 ADC/DAC 端一致 |
| GT Type | 收发器类型 | xcvu9p 选 GTY |
| Line Rate | 串行线速率(Gbps) | 根据 LMFS 和采样率计算 |
| Reference Clock | GT 参考时钟频率(MHz) | 必须与硬件实际输入一致,60~820 MHz |
| DRP Clock | 动态重配置端口时钟 | UltraScale 器件必须提供,10~200 MHz,常用 100 MHz |
| PLL Selection | CPLL 或 QPLL | 多 Lane 推荐 QPLL |
| Drive Core Clock using Ref Clock | 用参考时钟同时作为核时钟 | 当参考时钟频率 = Line Rate/40 时勾选,可省一个时钟源 |
| Sample SYSREF on | SYSREF 采样沿(上升沿/下降沿) | 需与系统设计一致,保证建立保持时间 |
Page 2: Shared Logic(共享逻辑)
┌──────────────────────────────────────────────────┐
│ Shared Logic │
│ │
│ ○ Include Shared Logic in core │
│ ● Include Shared Logic in example design │
│ │
│ ☑ Include JESD204 PHY in example design │
│ │
│ [Transceiver Control and Status Ports] │
│ ☐ Enable │
└──────────────────────────────────────────────────┘
| 参数 | 含义 |
|---|---|
| Include Shared Logic in core | GT 和共享逻辑封装在核内,核的端口直接是串行差分对 |
| Include Shared Logic in example design | 核只含链路层,需外接 JESD204 PHY 核 |
| Include JESD204 PHY in example design | 自动在示例设计中例化 JESD204 PHY 核 |
| Transceiver Control and Status Ports | 导出额外的 GT 控制/状态端口(如 TX 极性翻转、环回等),调试时可用 |
Page 3: Advanced(高级配置)
┌──────────────────────────────────────────────────┐
│ Advanced (RX only) │
│ │
│ LMFC Buffer Size: [1024] │
│ │
│ [Test Pattern Generators (TX only)] │
│ ☐ Include RPAT Generator │
│ ☐ Include JSPAT Generator │
└──────────────────────────────────────────────────┘
| 参数 | 含义 |
|---|---|
| LMFC Buffer Size | RX 端 LMFC 弹性缓冲深度(单位:字节),用于吸收 Lane 间延迟偏差和实现确定性延迟。默认 1024,需大于最大 Lane 间延迟差 |
| Include RPAT Generator | 包含随机测试模式生成器(TX 核),用于链路测试 |
| Include JSPAT Generator | 包含 JESD204 标准测试模式生成器(TX 核) |
Page 4: AXI4-Lite(管理接口)
┌──────────────────────────────────────────────────┐
│ AXI4-Lite │
│ │
│ AXI4-Lite Clock Frequency: [100.0] MHz │
│ │
│ ☑ Has AXI4-Lite Interface │
└──────────────────────────────────────────────────┘
| 参数 | 含义 |
|---|---|
| AXI4-Lite Clock Frequency | 管理接口时钟频率,10~200 MHz,常用 100 MHz |
| Has AXI4-Lite Interface | 是否包含 AXI4-Lite 配置/状态接口。一般必须勾选,用于配置链路参数和读取状态 |
4.3 关键参数对照表
Vivado GUI 参数与底层 User Parameter(Tcl 中可查看)的对应关系:
| GUI 参数 | User Parameter | 默认值 | 说明 |
|---|---|---|---|
| Transmit or Receive | C_NODE_IS_TRANSMIT | 0 (RX) | 0=RX, 1=TX |
| Lanes per Link | C_LANES | 2 | 1~8 |
| Line Rate | GT_Line_Rate | 8.0 | Gbps |
| Reference Clock | GT_REFCLK_FREQ | 200.0 | MHz |
| DRP Clock | DRPCLK_FREQ | 200.0 (UltraScale) | MHz |
| PLL Selection | C_PLL_SELECTION | 0 (CPLL) | 0=CPLL, 1=QPLL |
| Shared Logic | SupportLevel | 1 | 0=in core, 1=in example design |
| LMFC Buffer Size | C_LMFC_BUFFER_SIZE | 1024 | RX only |
| Sample SYSREF on | C_SYSREF_SAMPLING_EDGE | 0 (Neg Edge) | 0=下降沿, 1=上升沿 |
| AXI4-Lite Clock | AXICLK_FREQ | 100.0 | MHz |
| Include RPAT | USE_RPAT | FALSE | TX only |
| Include JSPAT | USE_JSPAT | FALSE | TX only |
4.4 时钟架构
JESD204 系统涉及多个时钟域,理解时钟关系是设计成功的关键。
时钟树(以 Shared Logic in example design 为例)
外部参考时钟 (250 MHz)
│
├──► GTY REFCLK ──► QPLL ──► 串行时钟 (10 GHz)
│ └──► RXOUTCLK (恢复时钟)
│
└──► (可选) 直接作为 core_clk (250 MHz = 10G/40) ✓
外部 DRP 时钟 (100 MHz) ──► GTY DRP 接口
外部 AXI 时钟 (100 MHz) ──► AXI4-Lite 配置接口
SYSREF (周期/单脉冲) ──► JESD204 核 ──► 复位 LMFC 相位
SYNC~ (LVDS) ──► JESD204 核 ──► 链路同步状态机
时钟约束要点
- core_clk:频率 = Line Rate / 40,是 JESD204 核和 AXI4-Stream 数据接口的主时钟
- refclk:GT 参考时钟,必须是高质量、低抖动时钟,通常由专用时钟芯片提供
- SYSREF:必须与 device clock 同源,作为异步信号处理(设置 ASYNC_REG 或直接约束为 false path,但需保证采样稳定)
- AXI4-Lite 时钟:独立时钟域,与 core_clk 之间有异步 FIFO
推荐时钟方案(xcvu9p + 10 Gbps)
| 时钟 | 频率 | 来源 |
|---|---|---|
| GT REFCLK | 250 MHz | 时钟芯片(如 LMK04828)输出,接 GT_REFCLK0 引脚 |
| core_clk | 250 MHz | 由 REFCLK 直接驱动(勾选"Drive Core Clock using Ref Clock") |
| DRP clk | 100 MHz | 系统时钟 |
| AXI clk | 100 MHz | 系统时钟(可与 DRP clk 同源) |
| SYSREF | 7.8125 MHz(或单次脉冲) | 时钟芯片输出,与 REFCLK 同源 |
| SYNC~ | - | LVDS 电平,由 FPGA 逻辑生成/接收 |
4.5 核心接口信号
TX 核(Shared Logic in example design)主要端口
| 信号名 | 方向 | 时钟域 | 说明 |
|---|---|---|---|
| tx_core_clk | IN | - | 核时钟,= Line Rate/40 |
| tx_reset | IN | 异步 | 核复位,高有效 |
| tx_reset_gt | OUT | - | 输出给 PHY 的 GT 复位 |
| tx_reset_done | IN | - | PHY 的复位完成指示 |
| tx_aresetn | OUT | tx_core_clk | AXI4-Stream 复位,低有效 |
| tx_data | IN | tx_core_clk | AXI4-Stream 数据,位宽 = 4 × L × 8 |
| tx_valid | IN | tx_core_clk | AXI4-Stream valid |
| tx_ready | OUT | tx_core_clk | AXI4-Stream ready |
| tx_sync | OUT | tx_core_clk | SYNC~ 信号(需经 OBUFDS 输出) |
| tx_sysref | IN | tx_core_clk | SYSREF 输入(Subclass 1) |
| s_axi_aclk | IN | - | AXI4-Lite 时钟 |
| s_axi_aresetn | IN | - | AXI4-Lite 复位 |
| s_axi_awaddr/awvalid/... | IN/OUT | s_axi_aclk | AXI4-Lite 写地址通道 |
| s_axi_wdata/wstrb/... | IN/OUT | s_axi_aclk | AXI4-Lite 写数据通道 |
| s_axi_araddr/... | IN/OUT | s_axi_aclk | AXI4-Lite 读地址通道 |
| s_axi_rdata/... | IN/OUT | s_axi_aclk | AXI4-Lite 读数据通道 |
| s_axi_bresp/... | IN/OUT | s_axi_aclk | AXI4-Lite 写响应通道 |
| gt0_txp / gt0_txn | OUT | - | 串行 TX 差分输出(Lane 0) |
| gt1_txp / gt1_txn | OUT | - | 串行 TX 差分输出(Lane 1) |
| ... | ... | ... | 更多 Lane |
RX 核主要端口(与 TX 类似,方向相反)
| 信号名 | 方向 | 说明 |
|---|---|---|
| rx_core_clk | IN | 核时钟 |
| rx_reset | IN | 核复位 |
| rx_reset_gt | OUT | GT 复位输出 |
| rx_reset_done | IN | GT 复位完成 |
| rx_aresetn | OUT | AXI4-Stream 复位 |
| rx_data | OUT | AXI4-Stream 数据输出 |
| rx_valid | OUT | AXI4-Stream valid |
| rx_sync | IN | SYNC~ 输入(从外部接收) |
| rx_sysref | IN | SYSREF 输入 |
| gt0_rxp / gt0_rxn | IN | 串行 RX 差分输入 |
数据位宽 :AXI4-Stream 数据接口的位宽 =
4 × L × 8位。例如 L=4 时,数据位宽 = 4 × 4 × 8 = 128 位。这是因为核时钟周期内处理 4 个字节(32 位),乘以 L 条 Lane。
5. 实战:xcvu9p 上的 JESD204B 设计
5.1 设计场景
假设我们要设计一个基于 xcvu9p 的高速数据采集系统,对接一个 4 通道 ADC:
| 项目 | 值 |
|---|---|
| ADC 型号 | 假设为 4 通道、16 位、500 MSPS ADC(类似 AD9680) |
| JESD204B 配置 | LMFS = 4421(L=4, M=4, F=2, S=1) |
| N / N' | 16 / 16 |
| Subclass | Subclass 1(确定性延迟) |
| 线速率 | 计算见下文 |
| FPGA | xcvu9p-flga2104-2-i |
| GT 类型 | GTY |
5.2 参数计算实例
第一步:计算线速率
已知:M=4, S=1, N'=16, f_sample=500 MHz, L=4
Line Rate = (M × S × N' × f_sample × 10/8) / L
= (4 × 1 × 16 × 500e6 × 1.25) / 4
= (40000e6) / 4
= 10 Gbps
验证 F:
F = (M × S × N') / (8 × L) = (4 × 1 × 16) / (8 × 4) = 64/32 = 2 ✓
第二步:计算各时钟频率
Line Rate = 10 Gbps
Byte Clock = 10G / 10 = 1000 MHz
Core Clock = 10G / 40 = 250 MHz
Frame Clock = 10G / (10 × F) = 10G / 20 = 500 MHz (= f_sample,因为 S=1)
LMFC Clock = 10G / (10 × F × K) = 10G / (10 × 2 × 32) = 10G / 640 = 15.625 MHz
第三步:选择参考时钟
GTY 参考时钟可选范围 60~820 MHz。常用选择:
- 250 MHz:可同时作为 core clock(因为 core clock = 250 MHz = Line Rate/40),最简洁
- 500 MHz:也可以,但需要额外 MMCM 分频产生 core clock
选择 250 MHz 参考时钟,并勾选"Drive Core Clock using Reference Clock"。
第四步:选择 PLL
4 条 Lane 在同一个 Quad 内,选择 QPLL。
QPLL 参数(Vivado 自动计算,此处列出供理解):
- REFCLK = 250 MHz
- QPLL_FBDIV = 40(VCO = 250 × 40 = 10 GHz)
- QPLL_REFCLK_DIV = 1
- OUT_DIV = 1(Line Rate = 10G / 1 = 10 Gbps)
实际 QPLL 的 FBDIV 取值受硬件限制,Vivado 会根据线速率和参考时钟自动选择合法值。上述为概念性说明。
5.3 IP 核配置步骤
步骤 1:创建工程
- 打开 Vivado 17.4
- Create Project → 选择 RTL Project
- 选择器件:
xcvu9p-flga2104-2-i(或你的实际型号) - 完成工程创建
步骤 2:添加 JESD204 RX IP 核
- IP Catalog → 搜索 "JESD204"
- 双击 "JESD204" 打开配置界面
- 按以下配置:
Page 1 (Basic):
- Transmit or Receive: Receive
- Lanes per Link: 4
- GT Type: GTY
- Line Rate: 10.0 Gbps
- Reference Clock: 250.0 MHz
- DRP Clock: 100.0 MHz
- PLL Selection: QPLL
- ☑ Drive JESD204 Core Clock using Reference Clock
- Sample SYSREF on: Negative Edge(根据硬件时序调整)
Page 2 (Shared Logic):
- ● Include Shared Logic in example design
- ☑ Include JESD204 PHY in example design
Page 3 (Advanced):
- LMFC Buffer Size: 1024
Page 4 (AXI4-Lite):
- AXI4-Lite Clock Frequency: 100.0 MHz
- ☑ Has AXI4-Lite Interface
- 点击 OK,生成 IP
步骤 3:生成示例设计(可选但推荐)
- 在 Sources 窗口中找到生成的 JESD204 IP
- 右键 → Open IP Example Design
- Vivado 会创建一个包含 JESD204 核、JESD204 PHY 核、时钟缓冲、复位逻辑的完整示例工程
- 以此为基础进行修改
步骤 4:添加传输层(Transport Layer)
Xilinx JESD204 IP 核只提供链路层,需要自行实现传输层(deframer)。传输层的功能:
- 从 AXI4-Stream 接收解扰后的字节流
- 按照 LMFS 配置解映射,恢复出 M 个转换器的 N 位样本
- 输出给用户逻辑
可以参考 ADI 开源 HDL 库中的 axi_jesd204_rx 传输层实现,或自行编写。
步骤 5:连接时钟和复位
外部 250MHz 差分时钟 ──► IBUFDS_GTE4 ──► refclk (给 JESD204 PHY)
└──► core_clk (给 JESD204 核)
外部 100MHz 时钟 ──► drpclk / s_axi_aclk
外部 SYSREF ──► IBUFDS ──► rx_sysref
SYNC~ ──► IBUFDS ──► rx_sync (或从 FPGA 逻辑输出)
5.4 示例工程结构
使用 Shared Logic in example design 时,生成的示例设计顶层模块结构大致如下:
jesd204_rx_example_top (顶层)
├── jesd204_rx_gt_example (GT 示例包装)
│ ├── jesd204_phy (JESD204 PHY 核)
│ │ └── GTYE4_CHANNEL × 4 + GTYE4_COMMON × 1
│ ├── IBUFDS_GTE4 (参考时钟缓冲)
│ └── 复位状态机
├── jesd204_rx (JESD204 链路层核)
├── 传输层 (用户实现)
└── AXI4-Lite 互联 (可选)
5.5 约束要点
时钟约束(XDC)
tcl
# GT 参考时钟(250 MHz 差分)
create_clock -name gt_refclk_p -period 4.0 [get_ports gt_refclk_p]
# 注意:差分时钟通常只约束 P 端,工具自动推导 N 端
# DRP 时钟(100 MHz)
create_clock -name drp_clk -period 10.0 [get_ports drp_clk]
# AXI 时钟(100 MHz)
create_clock -name axi_clk -period 10.0 [get_ports axi_clk]
# core_clk 由 refclk 驱动,工具会自动推导,但可显式声明
# create_clock -name core_clk -period 4.0 [get_pins .../core_clk]
引脚约束
tcl
# GT 串行引脚(需根据硬件原理图分配到具体 GT Quad/Bank)
set_property PACKAGE_PIN <pin> [get_ports gt0_rxp]
set_property PACKAGE_PIN <pin> [get_ports gt0_rxn]
# ... 其他 Lane
# SYSREF(LVDS)
set_property IOSTANDARD LVDS [get_ports sysref_p]
set_property PACKAGE_PIN <pin> [get_ports sysref_p]
set_property PACKAGE_PIN <pin> [get_ports sysref_n]
# SYNC~(LVDS)
set_property IOSTANDARD LVDS [get_ports sync_p]
时序例外
tcl
# SYSREF 是异步信号,通常设为 false path(但需保证亚稳态处理)
set_false_path -to [get_pins -hierarchical *sysref*]
# AXI4-Lite 时钟域与 core_clk 之间有异步 FIFO,设 false path
set_false_path -from [get_clocks axi_clk] -to [get_clocks core_clk]
set_false_path -from [get_clocks core_clk] -to [get_clocks axi_clk]
重要:GT 串行引脚的位置必须分配到正确的 GTY Bank 和 Quad。xcvu9p 的 GTY Bank 编号(如 Bank 124~131)和 Quad 位置需查阅器件数据手册和硬件原理图。Vivado 的 Device View 可以可视化 GT 资源分布。
6. 调试与验证
6.1 链路状态检查
JESD204 IP 核通过 AXI4-Lite 接口提供状态寄存器,可通过 MicroBlaze/Zynq 或 VIO 读取。关键状态:
| 状态 | 寄存器/信号 | 正常状态 | 异常含义 |
|---|---|---|---|
| GT 复位完成 | rx_reset_done | 1 | GT 未就绪,检查参考时钟和复位 |
| PLL 锁定 | common0_pll_lock_out | 1 | 参考时钟异常或 PLL 参数错误 |
| CGS 完成 | 内部状态 / SYNC~ | SYNC~ = 1 | 未收到 K28.5,检查硬件连接、线速率、参考时钟 |
| ILAS 完成 | 内部状态 | 链路进入数据阶段 | 配置参数不匹配、Lane 对齐失败 |
| 8B/10B 错误 | 错误计数器 | 不增长 | 信号质量差、均衡不匹配 |
| 弹性缓冲上溢/下溢 | 状态位 | 无 | Lane 间延迟差过大、SYSREF 问题 |
通过 AXI4-Lite 读取状态的步骤
- 确保 s_axi_aclk 和 s_axi_aresetn 正常
- 释放核复位(写复位寄存器)
- 等待 GT 复位完成
- 读取链路状态寄存器,检查各阶段状态
6.2 常见问题与排查
问题 1:SYNC~ 一直为低(CGS 不通过)
可能原因:
- 发送端(ADC)未正常发送 K28.5
- 线速率不匹配(FPGA 与 ADC 配置不一致)
- 参考时钟频率错误或无输入
- GT 引脚分配错误(RX/TX 接反、P/N 接反)
- 信号完整性问题(衰减过大、均衡不匹配)
排查步骤:
- 用示波器检查 ADC 端是否有串行信号输出
- 确认 FPGA 端参考时钟频率(用 IBERT 或测量)
- 检查 GT 引脚分配和极性
- 在 Vivado 中用 IBERT 核测试链路眼图
问题 2:CGS 通过但 ILAS 失败
可能原因:
- LMFS 参数不匹配(FPGA 与 ADC 配置不一致)
- K(多帧帧数)不匹配
- SYSREF 未正确连接或时序不满足
- Lane 间延迟差超过缓冲容量
排查步骤:
- 读取 RX 端捕获的 ILAS 配置参数(第 2 个多帧),与预期比对
- 检查 SYSREF 是否正常输入
- 增大 LMFC Buffer Size
问题 3:链路偶发失步
可能原因:
- 信号质量差(误码率高)
- 参考时钟抖动过大
- 电源噪声
- 温度变化导致时序漂移
排查步骤:
- 监控 8B/10B 错误计数器
- 用 IBERT 测量眼图和误码率
- 检查电源完整性和参考时钟抖动
问题 4:确定性延迟不满足
可能原因:
- SYSREF 与 device clock 不同源
- SYSREF 采样沿选择不当,建立/保持时间不满足
- 未使用 Subclass 1(误用 Subclass 0)
- 接收缓冲延迟(RBD)设置不当
排查步骤:
- 确认 SYSREF 与参考时钟同源
- 用示波器测量 SYSREF 与 device clock 的相位关系
- 调整 SYSREF 采样沿(上升沿/下降沿)
6.3 调试工具
| 工具 | 用途 |
|---|---|
| IBERT | Xilinx 提供的 GT 收发器比特误码率测试仪,可测量眼图、调整均衡 |
| VIO(Virtual Input/Output) | 实时观察和驱动内部信号,如复位、状态寄存器 |
| ILA(Integrated Logic Analyzer) | 抓取内部信号波形,分析时序问题 |
| GT Wizard | 独立配置 GT 收发器,验证物理层参数 |
| 示波器 | 测量串行信号眼图、SYSREF 时序、参考时钟抖动 |
| 协议分析仪 | 如 Teledyne LeCroy 的 JESD204B 分析仪,可解析链路状态 |
使用 IBERT 调试物理层
- 在 IP Catalog 中添加 "IBERT for UltraScale GTY Transceivers"
- 配置与 JESD204 相同的线速率、参考时钟、PLL
- 将 IBERT 的 TX/RX 连接到对应引脚(可内部环回或外部环回)
- 生成 bitstream,下载后在 Vivado Hardware Manager 中查看眼图和误码率
7. 附录
7.1 常用 JESD204B 配置速查表
| LMFS | N' | 典型应用 | 线速率(@500MSPS) |
|---|---|---|---|
| 4421 | 16 | 4 通道 16 位 ADC | 10 Gbps |
| 2221 | 16 | 2 通道 16 位(IQ) | 10 Gbps |
| 8821 | 16 | 8 通道 16 位 | 10 Gbps |
| 4841 | 16 | 8 通道 16 位(4 Lane) | 20 Gbps(超标准,需 JESD204C) |
| 4221 | 16 | 2 通道 16 位 | 5 Gbps |
实际线速率需根据具体采样率计算。
7.2 xcvu9p GTY Bank 参考
xcvu9p(flga2104 封装)的 GTY Bank 分布需查阅官方数据手册(DS923)和封装引脚图。一般来说:
- GTY Bank 分布在 FPGA 的左右两侧
- 每个 Bank 包含多个 Quad
- 设计时需根据硬件原理图确认串行引脚所在的 Bank 和 Quad
7.3 参考文档
| 文档 | 编号 | 内容 |
|---|---|---|
| JESD204 v7.2 Product Guide | PG066 | Xilinx JESD204 IP 核官方文档 |
| JESD204 PHY Product Guide | PG198 (v3.x) | JESD204 PHY IP 核官方文档 |
| UltraScale GTY Transceivers User Guide | UG578 | GTY 收发器详细使用说明 |
| JESD204B 标准 | JEDEC JESD204B | 协议标准原文(需购买) |
| Virtex UltraScale+ Data Sheet | DS923 | xcvu9p 电气特性 |
| ADI JESD204B Survival Guide | MS-2374 | ADI 提供的 JESD204B 入门指南 |
| TI JESD204B Overview | SLAP161 | TI 提供的 JESD204B 培训材料 |
7.4 关键公式汇总
线速率: Line Rate = (M × S × N' × f_sample × 10/8) / L
帧字节: F = (M × S × N') / (8 × L)
核时钟: f_core = Line Rate / 40
字节时钟: f_byte = Line Rate / 10
帧时钟: f_frame = Line Rate / (10 × F) = f_sample / S
LMFC: f_lmfc = Line Rate / (10 × F × K)
多帧周期: T_lmfc = K × F × 10 / Line Rate
7.5 复位流程(RX 端)
正确的复位顺序对链路建立至关重要:
- 上电,提供稳定的参考时钟和 DRP 时钟
- 断言 JESD204 核复位(tx_reset/rx_reset = 1)
- 核自动输出 gt_reset 给 PHY,复位 GT 收发器
- 等待 PLL 锁定(common_pll_lock = 1)
- 等待 GT 复位完成(rx_reset_done = 1)
- 释放核复位(通过 AXI4-Lite 写复位寄存器,或外部信号)
- 核开始 CGS 流程,拉低 SYNC~
- 发送端响应,发送 K28.5
- CGS 完成,SYNC~ 拉高
- ILAS 完成,进入用户数据阶段
本教程基于 Vivado 17.4 和 xcvu9p 平台编写,实际设计中请以官方文档和硬件原理图为准。