JESD204B_IP核使用教程

JESD204B IP 核使用教程

平台:Vivado 17.4 | FPGA:Xilinx xcvu9p(Virtex UltraScale+)


目录

  1. 概述
  2. [JESD204B 协议原理](#JESD204B 协议原理)
  3. [底层概念: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 检测)
  4. [Vivado 17.4 JESD204 IP 核详解](#Vivado 17.4 JESD204 IP 核详解)
  5. [实战:xcvu9p 上的 JESD204B 设计](#实战:xcvu9p 上的 JESD204B 设计)
  6. 调试与验证
  7. 附录

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 层)。

负责链路的建立、同步和数据的可靠传输:

  • 加扰(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 对齐
  1. 系统发出 SYSREF 脉冲(或周期信号),所有设备同时采样
  2. 每个设备在检测到 SYSREF 后,将内部 LMFC 复位到已知相位
  3. 发送端在 LMFC 边界开始发送 ILAS 和数据
  4. 接收端通过弹性缓冲,将不同 Lane 的数据对齐到同一个 LMFC 边界输出
  5. 因此,从发送端输入到接收端输出的总延迟是固定的、可重复的

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 × 8F = (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 阶段:

  1. 用 /R/ 字符检测每条 Lane 的延迟,通过**弹性缓冲(Elastic Buffer)**对齐所有 Lane
  2. 从第 2 个多帧中读取配置参数,与自身配置比对
  3. 接收完 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 位,目的:

  1. 直流平衡:保证长时间内 0 和 1 的数量基本相等,避免耦合电容/变压器隔直导致的信号漂移
  2. 足够跳变沿:保证 CDR 能从数据中恢复时钟
  3. 错误检测:非法的 10b 编码可被检测
  4. 控制字符:部分编码保留为 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 核 ──► 链路同步状态机
时钟约束要点
  1. core_clk:频率 = Line Rate / 40,是 JESD204 核和 AXI4-Stream 数据接口的主时钟
  2. refclk:GT 参考时钟,必须是高质量、低抖动时钟,通常由专用时钟芯片提供
  3. SYSREF:必须与 device clock 同源,作为异步信号处理(设置 ASYNC_REG 或直接约束为 false path,但需保证采样稳定)
  4. 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:创建工程
  1. 打开 Vivado 17.4
  2. Create Project → 选择 RTL Project
  3. 选择器件:xcvu9p-flga2104-2-i(或你的实际型号)
  4. 完成工程创建
步骤 2:添加 JESD204 RX IP 核
  1. IP Catalog → 搜索 "JESD204"
  2. 双击 "JESD204" 打开配置界面
  3. 按以下配置:

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
  1. 点击 OK,生成 IP
步骤 3:生成示例设计(可选但推荐)
  1. 在 Sources 窗口中找到生成的 JESD204 IP
  2. 右键 → Open IP Example Design
  3. Vivado 会创建一个包含 JESD204 核、JESD204 PHY 核、时钟缓冲、复位逻辑的完整示例工程
  4. 以此为基础进行修改
步骤 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 读取状态的步骤
  1. 确保 s_axi_aclk 和 s_axi_aresetn 正常
  2. 释放核复位(写复位寄存器)
  3. 等待 GT 复位完成
  4. 读取链路状态寄存器,检查各阶段状态

6.2 常见问题与排查

问题 1:SYNC~ 一直为低(CGS 不通过)

可能原因:

  • 发送端(ADC)未正常发送 K28.5
  • 线速率不匹配(FPGA 与 ADC 配置不一致)
  • 参考时钟频率错误或无输入
  • GT 引脚分配错误(RX/TX 接反、P/N 接反)
  • 信号完整性问题(衰减过大、均衡不匹配)

排查步骤:

  1. 用示波器检查 ADC 端是否有串行信号输出
  2. 确认 FPGA 端参考时钟频率(用 IBERT 或测量)
  3. 检查 GT 引脚分配和极性
  4. 在 Vivado 中用 IBERT 核测试链路眼图
问题 2:CGS 通过但 ILAS 失败

可能原因:

  • LMFS 参数不匹配(FPGA 与 ADC 配置不一致)
  • K(多帧帧数)不匹配
  • SYSREF 未正确连接或时序不满足
  • Lane 间延迟差超过缓冲容量

排查步骤:

  1. 读取 RX 端捕获的 ILAS 配置参数(第 2 个多帧),与预期比对
  2. 检查 SYSREF 是否正常输入
  3. 增大 LMFC Buffer Size
问题 3:链路偶发失步

可能原因:

  • 信号质量差(误码率高)
  • 参考时钟抖动过大
  • 电源噪声
  • 温度变化导致时序漂移

排查步骤:

  1. 监控 8B/10B 错误计数器
  2. 用 IBERT 测量眼图和误码率
  3. 检查电源完整性和参考时钟抖动
问题 4:确定性延迟不满足

可能原因:

  • SYSREF 与 device clock 不同源
  • SYSREF 采样沿选择不当,建立/保持时间不满足
  • 未使用 Subclass 1(误用 Subclass 0)
  • 接收缓冲延迟(RBD)设置不当

排查步骤:

  1. 确认 SYSREF 与参考时钟同源
  2. 用示波器测量 SYSREF 与 device clock 的相位关系
  3. 调整 SYSREF 采样沿(上升沿/下降沿)

6.3 调试工具

工具 用途
IBERT Xilinx 提供的 GT 收发器比特误码率测试仪,可测量眼图、调整均衡
VIO(Virtual Input/Output) 实时观察和驱动内部信号,如复位、状态寄存器
ILA(Integrated Logic Analyzer) 抓取内部信号波形,分析时序问题
GT Wizard 独立配置 GT 收发器,验证物理层参数
示波器 测量串行信号眼图、SYSREF 时序、参考时钟抖动
协议分析仪 如 Teledyne LeCroy 的 JESD204B 分析仪,可解析链路状态
使用 IBERT 调试物理层
  1. 在 IP Catalog 中添加 "IBERT for UltraScale GTY Transceivers"
  2. 配置与 JESD204 相同的线速率、参考时钟、PLL
  3. 将 IBERT 的 TX/RX 连接到对应引脚(可内部环回或外部环回)
  4. 生成 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 端)

正确的复位顺序对链路建立至关重要:

  1. 上电,提供稳定的参考时钟和 DRP 时钟
  2. 断言 JESD204 核复位(tx_reset/rx_reset = 1)
  3. 核自动输出 gt_reset 给 PHY,复位 GT 收发器
  4. 等待 PLL 锁定(common_pll_lock = 1)
  5. 等待 GT 复位完成(rx_reset_done = 1)
  6. 释放核复位(通过 AXI4-Lite 写复位寄存器,或外部信号)
  7. 核开始 CGS 流程,拉低 SYNC~
  8. 发送端响应,发送 K28.5
  9. CGS 完成,SYNC~ 拉高
  10. ILAS 完成,进入用户数据阶段

本教程基于 Vivado 17.4 和 xcvu9p 平台编写,实际设计中请以官方文档和硬件原理图为准。

相关推荐
cmc102821 小时前
292.三段式状态机第三段时序逻辑用state_c与_n的差异分析
fpga开发
智塑未来2 天前
FPGA开发板怎么选?先看资质、案例与研发底盘
fpga开发
minglie13 天前
黑金AX301的SDRAM
fpga开发
hahaha60163 天前
HLS高层次综合设计技巧--高层次综合设计探讨
fpga开发
minglie13 天前
黑金AX301的EEPROM 24LC04
fpga开发
Hello-FPGA3 天前
量子计算滨松c15550-22up单光子相机与PCIe1004采集卡
人工智能·计算机视觉·fpga开发
9527华安3 天前
FPGA实现CameraLink转SFP光口,基于GT Transceivers Wizard Aurora8B10B编解码架构,提供4套工程源码和技术支持
fpga开发·sfp·cameralink·aurora8b10b·transceivers
ALINX技术博客4 天前
【期刊共读】如何应对 FPGA 短缺常态?
嵌入式硬件·fpga开发·fpga
156082072194 天前
短波接收机灵敏度测试
fpga开发