跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
汇编Pay算法

JESD204B 链路建立与 Xilinx IP 仿真记录

JESD204B 常用于 ADC/DAC 与 FPGA 之间的高速数据传输,本文对比了它和 LVDS 的差别,梳理了协议的四层结构以及 Subclass 0/1/2 的同步和延迟特性。重点说明了 Subclass 1 下链路建立的三个阶段:SYSREF 对齐、CGS 组码同步、ILAS 初始通道对齐,并解释了确定性延迟的含义。后半部分结合 Xilinx JESD204 IP 和 Example Design,整理了常见配置项、仿真 testbench 的组成,以及调试时更值得关注的寄存器和状态日志。

赛博行者发布于 2026/6/300 浏览

一、背景与对比

JESD204B 是 JEDEC 制定的高速串行接口标准,常见于数据转换器(ADC/DAC)和 FPGA、ASIC 之间的数据传输。它火起来并不难理解:相比早期常用的 LVDS,线更少,布线压力也小,板级时序也没那么挑剔。LVDS 依赖源同步,时钟和数据一起送,走线等长、阻抗控制和抖动都得盯得很紧;通道一多,布局很容易变得别扭。JESD204B 走的是另一条路,靠高速收发器把串行链路跑起来,工程上更适合高密度、高速率场景。

文章配图

二、协议结构

JESD204B 的协议层次通常分成四层:物理层、链路层、传输层和应用层。

  • 物理层:基于高速 SerDes,例如 Xilinx GTY、GTX,负责电气收发。
  • 链路层:处理加扰、8B/10B 编码以及链路同步过程,典型就是 CGS 和 ILAS。
  • 传输层:定义采样数据如何映射到各条 lane 上。
  • 应用层:最终给上层逻辑提供可用的数据。

JESD204B 还定义了 Subclass 0、1、2 三种模式,核心差别在于同步方式和延迟是否可预测。

Subclass 0

  • 不依赖全局同步信号,主要靠器件自身时钟关系完成工作。
  • 单器件内可以同步,但跨器件时延没有固定保证。

文章配图

Subclass 1

  • 通过 SYSREF 把多个器件的 LMFC 相位对齐。
  • 链路起来之后,延迟是确定的,工程上最常见,也最值得优先考虑。

文章配图

Subclass 2

  • 允许在运行时做重配置,链路灵活性更高。
  • 代价是实现复杂度也会上去,处理不好反而更难排查。
特性Subclass 0Subclass 1Subclass 2
同步信号无SYSREFSYSREF
确定性延迟不支持固定延迟(±1 LMFC)固定延迟 + 可动态调整
多器件同步仅单器件全局对齐全局对齐
动态重配置不支持需复位链路支持运行时调整
复杂度低中高

三、链路层同步机制建立

JESD204B 的物理层部分主要由高速串行收发器承担,这一块相对通用,真正容易出问题的是链路建立。下面以 Subclass 1 为例,链路通常分成三个阶段。

1. SYSREF 阶段

这一阶段可以理解成'对表'。外部时钟源同时给 ADC 和 FPGA 提供 Device Clock 和 SYSREF,Device Clock 再分频得到 Frame Clk 和 LMFC。SYSREF 的捕获方式常见有两种:

  • One-Shot 模式:只捕获一次 SYSREF,适合环境比较稳定、链路不会频繁改动的场景,配置简单。
  • Continuous 模式:SYSREF 按固定频率持续送入,器件每次都可以重新校准 LMFC,相对更稳,代价是系统配合要更细。

这里最容易踩坑的地方其实不是协议本身,而是 SYSREF 和 Device Clock 的相位关系。建立时间和保持时间一旦不满足,后面的同步看起来都'像是差一点'。

文章配图

2. 组码同步阶段(Code Group Synchronization, CGS)

Subclass 1 里,TX 会先发送 K28.5。RX 连续收到规定数量的 K 码后,通常会把 sync 拉高,表示自己准备进入下一步。Xilinx IP 的仿真里一般能看到识别到 20 个 K 码后进入这个状态。RX 这边一旦确认无误,就等 TX 在下一个 LMFC 边界切到 ILAS。

3. 初始通道对齐阶段(Initial Lane Alignment Sequence, ILAS)

ILAS 的重点不是'发数据',而是把通道对齐和链路参数确认做完。标准里会发送 4 个多帧序列,多帧以 K28.0 开头,D 数据按递增规则组织,A 作为多帧结束标志。第二个多帧前 14 个 C 字段包含配置信息。

多通道情况下,各 lane 的物理时延不一样,接收端检测到 /R/(K28.0)后,会把后续数据先塞进对齐 Buffer。等下一个 LMFC 到来,而且所有通道的 Buffer 都准备好,再统一输出。这个设计不算优雅,但很好用,尤其在板级时延不完全一致的时候。

确定性延迟 指的是 TX 并行帧数据输入到 RX 并行帧数据输出之间的时间差。它不是一个单一固定值,而是固定延迟和可变延迟的组合;后者通常来自数字处理块内部的时钟域相位关系。

整个流程在时序上大致就是这几步,图里可以看得更直观。

文章配图

四、Xilinx IP 配置与仿真

1. IP 设置

Xilinx 提供的 JESD204 IP 已经把链路层大部分工作包进去了,实际工程里经常和 JESD204_PHY IP 一起用。UltraScale 系列也可以直接考虑 JESD204C,具体看项目需求。

常见配置项包括:

  • 方向:发送端或接收端。
  • 通道数:按硬件连接来定,别想当然。
  • Pattern Generators:用于测试的序列生成,比如修改的随机模式(RPAT)或加扰抖动模式(JSPAT)。标准要求 TX 能发连续 /K28.7/、连续 /K28.5/ 以及重复的 ILAS 序列。
  • AXI-LITE 时钟:配置通道和寄存器时要用。
  • SYSREF 边沿类型:上升沿或下降沿。

共享逻辑里还会涉及 SYSREF 模式、数据加扰、每帧字节数、每多帧帧数,以及是否需要再次 SYSREF。这些参数默认都在寄存器里,可以通过 AXI4-Lite 覆盖。只要外面挂了 AXI4-Lite 主机,状态和配置都能读写,调试会顺手很多。

文章配图

2. IP 仿真

生成 IP 后,进入 Example Design,示例工程里已经把基本框架搭好了。发端和收端的仿真结构差不多,区别主要在数据流向和检查点。

发端 Testbench 解析

在 demo_tb 里,通常会先做这些初始化:

  • LANE 数量和对齐 Buffer 参数初始化:设置通道数和缓冲深度。
  • ILAS 阶段配置参数初始化:按手册把各字段填好。
  • K 码定义:比如 K28.0、K28.5 等控制字符。
  • 时钟定义:包括 GTXE2 BUF 时钟、DRP 时钟、AXI-LITE 配置时钟。
  • SYSREF 产生:模拟外部时钟源。
  • 8B/10B 解码模块:解码高速串行数据,识别 K 码后拉高 is_k,供组码同步和通道对齐使用。
  • 逗号对齐模块:监测串行数据中的逗号字符,判断字符边界是否正确。
  • K28.0 检测模块:专门识别 ILAS 阶段的多帧起始符 /R/。
  • 配置 IP 模块:通过 AXI-LITE 读写寄存器,完成参数设置。
仿真逻辑关键点

组码同步阶段里,仿真模块先识别到一定数量的 COMMA,然后进入 ILAS。这里的 bit_count 相当于一个滑动窗口,每 10 个 bit 做一次 8B/10B 解码,找出 K28.0 作为多帧起始字段。之后按通道做数据对齐,Buffer 深度通常设为 64,按 bit 输入,I 表示通道编号。等所有通道都对齐后,链路才算真正建立起来。

寄存器配置模块在实际项目里也很关键。PG066 里的寄存器空间定义可以直接对照着看,别只盯着波形,很多问题其实是配置没对上。调试时把不同阶段的状态打印出来,定位速度会快很多。

文章配图

目录

  1. 一、背景与对比
  2. 二、协议结构
  3. Subclass 0
  4. Subclass 1
  5. Subclass 2
  6. 三、链路层同步机制建立
  7. 1. SYSREF 阶段
  8. 2. 组码同步阶段(Code Group Synchronization, CGS)
  9. 3. 初始通道对齐阶段(Initial Lane Alignment Sequence, ILAS)
  10. 四、Xilinx IP 配置与仿真
  11. 1. IP 设置
  12. 2. IP 仿真
  13. 发端 Testbench 解析
  14. 仿真逻辑关键点
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 用 Tkinter 做一个 Windows 磁盘清理工具
  • Seedance 2.0 双分支扩散 Transformer 解析
  • 用 Docker Compose 部署 Dify 的实操记录
  • OpenClaw 记忆系统实践:Token 压缩、分层记忆与定时反思
  • Strudel:在浏览器里做实时算法音乐
  • Coze 智能体开发与工作流实践
  • Webman 与 Laravel+RoadRunner 的性能差异
  • NewStar CTF Web 题解整理
  • Java 8 基础知识整理:运算符、控制流与面向对象
  • Whisper-Large-V3-Turbo 部署与调优笔记
  • RAD Studio 13 Florence:Delphi 与 C++ Builder 的新变化
  • 为什么流匹配常用高斯分布做源分布
  • 用 OpenClaw 和飞书搭一个 7x24 服务器运维机器人
  • Windows 上安装 Docker Desktop 与配置 WSL2
  • 用 DeepFace 和 OpenCV 做实时情绪识别
  • Qwen 3.5 MoE 本地部署:用 Ollama 跑起来并调用 API
  • 2026 跨端框架怎么选:Flutter、RN、uni-app 与 KMP
  • 圣光艺苑:把 Stable Diffusion 画框生成做得更顺手
  • 用 Trae Solo 模式做微信小程序:一次 2 小时实战
  • 用 C 实现一个简易 Linux Shell

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online