惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
人人都是产品经理
人人都是产品经理
Cisco Talos Blog
Cisco Talos Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
V
V2EX
博客园 - 三生石上(FineUI控件)
Martin Fowler
Martin Fowler
WordPress大学
WordPress大学
D
Docker
S
SegmentFault 最新的问题
博客园 - 聂微东
美团技术团队
Apple Machine Learning Research
Apple Machine Learning Research
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Last Week in AI
Last Week in AI
M
MIT News - Artificial intelligence
F
Fortinet All Blogs
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
The GitHub Blog
The GitHub Blog
GbyAI
GbyAI
L
LangChain Blog
Vercel News
Vercel News
博客园 - 叶小钗
MongoDB | Blog
MongoDB | Blog
Stack Overflow Blog
Stack Overflow Blog
H
Help Net Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The Cloudflare Blog
Engineering at Meta
Engineering at Meta
T
Threat Research - Cisco Blogs
T
Threatpost
Scott Helme
Scott Helme
T
Tailwind CSS Blog
Latest news
Latest news
Stack Overflow Blog
Stack Overflow Blog
Blog — PlanetScale
Blog — PlanetScale
The Register - Security
The Register - Security
罗磊的独立博客
P
Proofpoint News Feed
腾讯CDC
S
Schneier on Security
雷峰网
雷峰网
A
About on SuperTechFans
T
Tenable Blog
F
Full Disclosure
Cyberwarzone
Cyberwarzone
博客园_首页
有赞技术团队
有赞技术团队
K
Kaspersky official blog

博客园_首页

面试官:Workflow 和 Agent 有什么区别?如何选型? - 一枫说码 从失忆到记住一切:Spring AI AutoMemoryTools 与 Session API 实战 2026 年 5 个最佳 Agent Skills 平台推荐 15天学会AI应用开发(三)把历史对话作为提示词会怎样 如何在Reaonix中使用CodeGraph以及CodeGraph效果实测经验分享 架构师必备:分布式事务方案选型 Agent的诞生(二):让模型开始调用工具 OpenDeepWiki 导出仓库 Skill:把代码知识沉淀成企业可复用的 AI 资产 [python]argparse 包在聊天机器人中的应用 LazyVim安装snacks.nvim报错“Process was killed because it reached the timeout” 一、红帽RHCSA+RHCE课前说明与Linux系统安装学习笔记 洛谷-P11240 [KTSC 2024 R2] 回文判定 题解 告别深夜夺命Call:如何利用 AI Agent Skills 自动自愈生产环境故障 从机器翻译到智驾:规则派的黄昏与数据革命的终局 Google 开源了啥,让 AI Agent 碰数据库不再是定时炸弹 P3550 [POI 2013] TAK-Taxis FastAPI 【Agentic RL / 强化学习 / OPD】OpenClaw-RL 源码阅读笔记 --- (4)--- 架构 - 罗西的思考 CentOS服务器上搭建Jenkins+maven+GitLab k8s gateway agentgo 运行时架构深度解析:一个 Go AI 编程助手的核心引擎设计 免费可商用 PHP 管理后台 CatchAdmin V5.3.1 发布 后台打包直降 5s 内 PPO算法 基础讲解 从 Agent 到代码:Claude Code 编排模型的演进 15天学会AI应用开发(二)为什么编写提示词这么重要 记一次GIS专业职称水平能力测试考试 在CubeMX生成项目中,手动移植FreeRTOS Kernel V11.3.0 LTS,HardFault 启动崩溃问题日志 [MAF的Agent管道详解-05]对话历史的持久化和输入输出的增强 从跑通到放弃:我的 Cloud Agent V1开发历程 Avalonia 制作复杂布局动画 Claude Code + 通义千问,从零搭出生产级 RAG 要花多少钱? Flutter 复杂拖拽排序实战:同源排序 + 跨容器拖拽完整落地 语言开发笔记3 Keepalived 学习总结 企智栾生 ETA (企智孪生(ETA)vs 传统数字孪生:有本质区别)【浙江联保网络 卢伟舜】 [数学-导数隐零点] 看起来简单?求过定点 (0, √e) 的直线与 y=e^x 交点横坐标差最小时的斜率 深度学习进阶(二十五)RoPE:现代 NLP 的位置编码范式 GMSL + 硬件PTP方案,真能让ADAS路测告别“数十毫秒偏差”吗? 【学习笔记】《Python编程 从入门到实践》第4章:for循环、range()、切片与元组 AI Agent 框架接金融行情数据前,先检查这 7 个工程风险 Dify — Workflow - 数据可视化 高性能服务器的基石:从并发模型到状态机 我用了 8 个月 Codex CLI,总结出这套 AI 编程工作流 重建 AI 认知第 3 篇:Prompt Engineering——怎么让 AI 听懂你的话 使用typedef封装函数指针新类型 只有踩过坑才懂:前端生成唯一 ID,别用 Date.now ()了!试试它crypto.randomUUID() ClickHouse Kubernetes集群部署与维护文档 c#一行代码免写登录页:PicoServer 的 AddBasicAuth 中间件实战 南京办公室装修避坑|21 年只做公装,闭口合同零增项 共绩科技:跨云弹性推理场景下,模型分发如何跟上算力调度 薄雾之上的上界:高概率复杂度的分析 TopBeeAI基金申请助手:使用AI提升基金申请效率的实践指南 高管的 AI 精神病 【译】构建前先计划:带你了解 Visual Studio 中的 Plan Agent 一行代码干翻 Java 反射?EggG 流式反射调用让反射优雅到不可思议 RAG 负责召回,LLM Wiki 负责沉淀:团队知识系统为什么不能只做检索 做一款企业真正敢用的AI测试应用,到底有多难?究竟难在哪? JaVers 版本历史功能完整实现指南 Github Project-AI Agentic Framework (.NET) [MAF的Agent管道详解-04]如何让LLM按照要求的结构输出数据? 随机过程WebApp实验室:从随机动力学到 AI 洞察的概率世界 有关使用python爬虫的一些心得 前端视角下的 C# 《GIS基础原理与技术实践》配套案例(Python版) GoF设计模式——代理模式 上位机程序集的反编译与加壳保护 基于 Blazor 实现的电梯运行监测系统 - known 【Agentic RL / 强化学习 / OPD】OpenClaw-RL 源码阅读笔记 --- (3)--- 总体思考 用 ESP32 做了一个 AI Agent 桌面状态核心,科技感直接拉满 马能否走遍棋盘的可达性证明 PortSwigger SQL注入LAB10 从 Harness Engineering 到 Trellis:AI 编程助手的工程化落地实践 信息化运维项目费用测算全指南:政策边界、三大方法与实操要点 Claude Code 实战 400 万 Tokens:接入 DeepSeek V4,从$26降到$2 Docker--容器常用命令 Dify — Chatflow - 数据库 零基础认识大语言模型工作原理 不繁花 写页面时别再把 Element Plus 整个搬进来啦!Vue3按需加载的坑我帮你踩平了 一条命令让你这辈子彻底解决"LF will be replaced by CRLF"(建议收藏) Miller Rabin:概率之下,证据成群 - Ofnoname Nessus 2026.5.9 更新升级:企业级漏扫工具的全能进阶与实战应用 Agent Harness 架构真相:Prompt Cache 如何决定 Skill、MCP 与 SubAgent 设计 Claude Code 支持 LSP 指南(C#/JAVA等) [翻译] 为什么我要用 C# 构建数据库引擎 DeepSeek V4 + Claude Code thinking mode 400 错误修复方案 云原生 CI/CD 平台架构设计 模板方法模式实战:重构Agent工具审批,告别重复代码 Ubuntu修改主机名操作指南 [MAF的Agent管道详解-03]连接LLM的IChatClient对象 《HelloGitHub》第 122 期 AI Agent 到底是做什么的?优势在哪里? 完整学习LLM(六):上下文窗口是什么,为什么模型会忘东西 和AI一起搞事情#6. 如何实现AI生图文字可编辑? 洛谷-P11105 [ROI 2023] 解密 题解 入门:我的第一个Vibe Coding实践程序 【Agentic RL / 强化学习 / OPD】OpenClaw-RL 源码阅读笔记 --- (2)--- On-Policy Distillation OpenHuman、OpenClaw、Hermes Agent 傻傻分不清楚?一篇说清三者定位 一个前端股票行情 SDK 的开源进化:从周刊收录到 v1.10.0 Claude Code 装了一堆 Skill,用了三个月,我删掉了 80%
为什么你用光模块测试FPGA IBERT不通
Hello-FPGA · 2026-05-31 · via 博客园_首页

为什么你用光模块测试FPGA IBERT不通

首先需要科普一下光模块相关的术语。
在使用过程中,一定先搞清楚下面的术语

什么是 IBERT

IBERT(Integrated Bit Error Ratio Tester)是 Xilinx/AMD 提供的集成在 FPGA 内部的误码率测试工具。它利用 FPGA 的 GTH/GTY 等高速收发器,生成 PRBS 伪随机序列并发送,同时接收并校验数据,统计误码率(BER)。

IBERT 的作用:

  • 验证 FPGA 高速 SerDes 硬件链路是否正常(PCB 走线、连接器、线缆、光模块)
  • 调整 TX 预加重/去加重、RX 均衡器参数
  • 测量眼图(Eye Diagram)和误码率
  • 不需要编写任何 RTL 代码,直接在 Vivado 中生成 IP 即可使用

PRBS 伪随机序列码型

IBERT 使用的测试码型是 PRBS(Pseudo-Random Binary Sequence,伪随机二进制序列),由线性反馈移位寄存器(LFSR)生成。不同阶数的 PRBS 序列特性如下:

码型 序列长度 最长连续同位 (CID) 频谱特性 测试严格度
PRBS-7 2⁷−1 = 127 bit 7 bit 低频分量较多,转换密度高 ★☆☆ 最宽松
PRBS-9 2⁹−1 = 511 bit 9 bit 中等 ★★☆ 中等
PRBS-15 2¹⁵−1 = 32767 bit 15 bit 较宽 ★★★ 较严格
PRBS-23 2²³−1 ≈ 8M bit 23 bit ★★★★ 严格
PRBS-31 2³¹−1 ≈ 2G bit 31 bit 最接近真实随机数据 ★★★★★ 最严格

关键差异说明

  • 最长连续同位 (CID):PRBS-N 的最长连续 0 或 1 为 N bit。CID 越长,对接收端 CDR(时钟数据恢复)的压力越大,因为长时间无跳变会导致 CDR 失锁。
  • 序列越长:频谱越接近白噪声,对信道的测试越全面(覆盖更多频率分量)。
  • PRBS-7:序列短、转换密度高,对 CDR 友好,容易锁定,适合初步调试。
  • PRBS-31:序列极长,最长 31bit 连续同位对 CDR 挑战最大,是最严格的信道质量评估码型。

应该用哪个码型评价?

场景 推荐码型 原因
初步调试、确认链路基本连通 PRBS-7 CDR 容易锁定,快速判断链路是否通
常规产品验证、光模块测试 PRBS-23 行业常用标准,IEEE 802.3 以太网规范推荐
最终产品认证、严格 BER 评估 PRBS-31 最严苛条件,能暴露所有潜在问题
25G/100G 以太网光模块符合性测试 PRBS-31 SFF-8636 / IEEE 规范要求

实用建议: 先用 PRBS-7 确认链路基本连通和 CDR 锁定,再逐步升级到 PRBS-31 进行最终评估。如果 PRBS-7 就无法锁定,说明链路存在严重问题(硬件故障或控制信号未正确配置)。

AOC DAC MPO SFP+ QSFP+ QSFP28 QSFP-DD

术语 全称 速率 说明
AOC Active Optical Cable 有源光缆,两端集成光电转换芯片,线缆中间为光纤,适用于长距离(1m~100m)互联
DAC Direct Attach Cable 直连铜缆(无源),线缆为高速铜缆,适用于短距离(≤5m)互联,成本低、功耗低
MPO Multi-fiber Push On 多芯光纤连接器标准,常见于 QSFP 光模块尾端,支持 8芯/12芯/24芯
SFP+ Small Form-factor Pluggable Plus 1×10G = 10G 小型可插拔光模块,单通道
QSFP+ Quad Small Form-factor Pluggable Plus 4×10G = 40G 四通道小型可插拔光模块,每通道 10G
QSFP28 Quad Small Form-factor Pluggable 28 4×25G = 100G 四通道小型可插拔光模块,每通道 25G
QSFP-DD Quad SFP Double Density 8×25G/50G = 200G/400G 双密度八通道光模块,向下兼容 QSFP28

AOC 与 DAC 使用上有什么差异

从线材、PIN定义来说

对比项 DAC(直连铜缆) AOC(有源光缆)
传输介质 高速铜缆(Twinax) 光纤
有源/无源 无源(Passive DAC ≤5m)或有源(Active DAC ≤15m) 有源,两端各含光电转换芯片
传输距离 短距 ≤5m(无源),≤15m(有源) 中长距 1m~100m+
功耗 极低(无源 DAC 约 0W) 较高(两端芯片各 ~1W)
成本 中等
弯折半径 铜缆较粗,弯折半径大 光纤细软,弯折半径小
EMI 铜缆可能存在电磁干扰 光纤无 EMI 问题
PIN 定义差异 TX/RX 差分对直接承载高速电信号 TX/RX 差分对连接到线缆端内部的 laser driver / TIA 芯片
连接器兼容性 与 QSFP28 cage 兼容,即插即用 与 QSFP28 cage 兼容,即插即用

实际使用中,DAC 和 AOC 在 FPGA 端的高速 SerDes 差分对电气接口完全一致,区别仅在线缆本身。选型时主要依据传输距离和布线环境决定。

但控制信号(LPMode、ResetL 等)的使用存在差异:

控制信号 Passive DAC(无源铜缆) Active DAC / AOC(有源)
LPMode 无效——无源 DAC 内部无电子器件,无需功耗管理,可保持 Low 必须正确控制:Low = 高功率模式(正常工作),High = 低功耗模式(激光器关闭)
ResetL 无效——无内部逻辑需要复位,可保持 High 必须执行正常复位时序,否则内部芯片不初始化
ModPrsL 模块插入时拉低(正常响应) 模块插入时拉低(正常响应)
ModSelL I2C 管理无效(无内部寄存器),状态无关 必须拉低才能访问内部寄存器
IntL 始终为 High(无告警源) 有效,温度/RX LOS 等告警时拉低

关键结论: Passive DAC 无内部电子器件,控制信号对其无实际作用,FPGA 侧无需特殊处理;而 AOC 和 Active DAC 内部含有激光器/TIA 等有源器件,必须正确驱动 LPMode 和 ResetL,否则模块不会正常工作

QSFP28 光模块使用

image

PIN 定义如下:

PIN 编号 信号名 方向/说明
1, 4, 7, 13, 16, 19, 20, 23, 26, 32, 35, 38 GND
29 VCCT 发送侧电源 (3.3V)
30 VCC1 核心电源 (3.3V)
10 VCCR 接收侧电源 (3.3V)
11 SCL I2C 时钟(管理接口)
12 SDA I2C 数据(管理接口)
36, 37 Tx1p, Tx1n 发送通道 1 差分对
3, 2 Tx2p, Tx2n 发送通道 2 差分对
33, 34 Tx3p, Tx3n 发送通道 3 差分对
6, 5 Tx4p, Tx4n 发送通道 4 差分对
17, 18 Rx1p, Rx1n 接收通道 1 差分对
22, 21 Rx2p, Rx2n 接收通道 2 差分对
14, 15 Rx3p, Rx3n 接收通道 3 差分对
25, 24 Rx4p, Rx4n 接收通道 4 差分对
8 ModSelL 模块选择(Active Low)
9 ResetL 模块复位(Active Low)
27 ModPrsL 模块在位检测(Active Low,模块插入时拉低)
28 IntL 中断输出(Active Low,模块告警时拉低)
31 LPMode 低功耗模式控制(High = 低功耗模式)

使用中如果需要工作在100G 速度下,LPMODE,MODPRSL,RESETL,MODSELL 等约束如下:

控制信号 100G 正常工作时的状态 说明
LPMode 拉低 (Low) Low = 高功率模式,模块 4 通道全部使能并正常工作;High 时模块进入低功耗模式(≤1.5W),仅 I2C 管理可用
ModPrsL 模块输出 Low 该信号为模块输出,插入时自动拉低;FPGA 侧应上拉并检测此信号判断模块是否在位
ResetL 拉高 (High) Low 时模块处于复位状态;上电后应先保持 Low ≥2ms,再释放为 High,等待模块初始化完成(tInit ≤2s)
ModSelL 拉低 (Low) Low = 选中该模块,I2C 通信有效;多模块共享 I2C 总线时,通过此信号选择目标模块
IntL 模块输出,正常时为 High 当模块内部出现告警(温度过高、RX LOS 等)时拉低,FPGA 可通过 I2C 读取具体告警寄存器

上电时序建议:

  1. 上电后 LPMode = High(低功耗),ResetL = Low(保持复位)
  2. 等待电源稳定后(≥100ms),释放 ResetL = High
  3. 等待模块初始化完成(检测 IntL 或等待 2s)
  4. 通过 I2C 读取模块信息、配置参数
  5. 将 LPMode 拉低,进入高功率模式,4 通道开始正常收发

硬件设计注意: 从原理图可见,ModSelL、ResetL、ModPrsL、IntL、LPMode 均通过 4.7KΩ 电阻上拉至 QSPF_3V3,满足 SFF-8636 规范要求。

因此 FPGA 设计时,对于 AOC 或 Active DAC,必须注意 ResetL 和 LPMode 的正确时序控制,错误使用将导致模块不工作。对于 Passive DAC 则无此约束。这也是经常有人测试DAC正常,AOC不工作的原因。


总结:为什么你用光模块测试 FPGA 不通?

如果你的 FPGA 高速链路用 DAC 能通,换成 AOC 就不通,问题几乎只有一个原因——控制信号没有正确驱动

核心检查项:

  1. LPMode 是否拉低?
    上拉电阻会将 LPMode 默认拉高(低功耗模式),此时激光器不工作,光功率为零。必须由 FPGA 主动拉低。

  2. ResetL 是否正确释放?
    上拉电阻会将 ResetL 默认拉高(非复位),但如果上电时序不对,模块可能未正确初始化。应先 Low ≥ 2ms,再 High,等待 2s 初始化。

  3. Passive DAC 为什么能通?
    因为 Passive DAC 内部就是一根铜线,没有任何电子器件,不需要上电、不需要复位、不需要功耗管理——插上就通。而 AOC 内部有激光器和 TIA 芯片,必须按规范上电初始化后才能正常工作。

一句话总结: DAC 能通不代表链路没问题,AOC 不通也不代表硬件有故障——检查你的 FPGA 是否正确控制了 LPMode 和 ResetL。