2. 10G物理层芯片选型与架构:主流FPGA与ASIC方案对比、SerDes硬核介绍、时钟与数据恢复(CDR)原理

做10G光通信物理层开发,第一步就是选芯片。说白了,你得先决定用FPGA还是ASIC。这个选择会直接影响你的开发周期、成本,还有最终产品的性能。我这些年在这上面踩过不少坑,今天就把我的经验摊开来聊聊。

2.1 FPGA vs ASIC:一场没有标准答案的博弈

先说说FPGA。它的优势是灵活。你可以今天改个协议,明天换个编码方式,后天再调调均衡参数。对于原型验证和小批量生产,FPGA几乎是唯一的选择。我记得2018年做一款10G PON ONU原型时,就是用Xilinx的Kintex-7系列,配合内部的GTX收发器,三个月就调通了物理层链路。

但FPGA也有短板。功耗高、单价贵、逻辑资源有限。一旦产品定型、量级上来,ASIC的优势就凸显了。

ASIC呢?性能强、功耗低、成本低(大批量时)。但开发周期长,动辄一年半载,而且一次流片费用几十万到上百万美金。改一次bug,心疼得滴血。我曾经有个项目,ASIC流片回来发现SerDes的CDR锁定范围偏了,只能靠外部时钟补偿,那叫一个难受。

我的建议: 如果年出货量在1万片以下,或者协议还在频繁迭代,老老实实用FPGA。如果年出货量超过10万片,且协议已经冻结,果断上ASIC。

下面这张图是我自己画的,帮你快速理解两者的适用场景:

10G物理层芯片选型决策框架 FPGA方案 灵活可重配 开发周期:3-6个月 单颗成本:$50-500 功耗:5-15W 适合:原型验证、小批量 代表:Xilinx Kintex-7 SerDes:GTX/GTH ASIC方案 固定功能 开发周期:12-24个月 单颗成本:$1-20 功耗:1-5W 适合:大批量、定型产品 代表:MACOM、MaxLinear SerDes:硬核集成 混合方案 FPGA + 外部SerDes 开发周期:6-12个月 成本:中等 功耗:中等 适合:FPGA SerDes不够用 代表:FPGA + Gennum SerDes:外部独立芯片 选型核心:看量级、看周期、看灵活性需求

2.2 SerDes硬核:10G通信的物理基石

SerDes,Serializer/Deserializer的缩写。说白了就是把并行数据转成串行高速信号发出去,再在接收端转回来。10G光通信里,SerDes是绝对的核心。

FPGA里的SerDes通常是硬核。比如Xilinx的GTX、GTH,Intel的Transceiver。这些硬核已经集成了PMA(物理介质适配层)和PCS(物理编码子层)。你只需要配置寄存器,不用自己设计高速模拟电路。嗯,这里要注意,硬核虽然好用,但它的性能是有极限的。

经验之谈: 我建议你在选型时,一定要看SerDes的抖动容限和CDR锁定范围。有些低端FPGA的SerDes在10.3125Gbps速率下,抖动容限只有0.2UI,稍微有点噪声就误码。我曾经吃过这个亏,后来换了一款带GTH的片子,问题才解决。

下面是一个典型的SerDes硬核配置示例(以Xilinx GTX为例):

// GTX配置关键参数(Vivado IP例化)
// 线速率:10.3125 Gbps
// 参考时钟:156.25 MHz
// 编码方式:64B/66B
// CDR模式:LPM (低功耗模式)
// 预加重:-3 dB
// 接收均衡:DFE + CTLE

// 关键寄存器配置
gtx_inst.rx_cdr_cfg = 0x0300;  // 设置CDR环路带宽
gtx_inst.tx_precursor = 0x02;  // 预加重系数
gtx_inst.rx_eq_ctle = 0x0A;    // CTLE增益

2.3 时钟与数据恢复(CDR):从噪声中提取信号

CDR是物理层最核心的模块之一。它的任务是从接收到的串行数据流中恢复出时钟,并用这个时钟去采样数据。为什么需要CDR?因为发送端和接收端的时钟是独立的,频率和相位都有偏差。没有CDR,数据根本采不准。

CDR的基本原理是锁相环(PLL)。它通过鉴相器比较数据边沿和本地时钟的相位差,然后调整VCO(压控振荡器)的频率,让时钟锁定在数据上。这个过程有点像「追着数据跑」。

我遇到过最头疼的问题是什么?是CDR锁定时间过长。有一次在10G-LR光模块的调试中,CDR锁定时间达到了500微秒,导致链路建立时间超标。后来调整了环路滤波器的带宽,把锁定时间降到了50微秒以内。

避坑指南: 我曾经在CDR的环路带宽设置上栽过跟头。带宽太宽,锁定快但抖动大;带宽太窄,抖动小但锁定慢。对于10G速率,我一般建议环路带宽设在1-5 MHz之间,具体要看你的应用场景。如果是连续数据流,带宽可以窄一点;如果是突发模式(比如PON),带宽必须宽。

CDR的另一个关键指标是抖动容限。它描述了CDR能容忍多大的输入抖动而不失锁。标准要求10G光口的抖动容限至少达到0.3 UI(单位间隔)。实际项目中,我通常会留出20%的余量,也就是设计目标定在0.36 UI以上。

下面是一个CDR性能的典型参数表:

参数 典型值 说明
锁定时间 < 100 μs 从复位到稳定锁定
抖动容限 > 0.3 UI @ 10.3125 Gbps
环路带宽 1-5 MHz 根据应用调整
频率捕获范围 ±200 ppm 参考时钟偏差
相位噪声 < -120 dBc/Hz @ 1 MHz 偏移

最后说一句,CDR的调试是个细致活。你想想看,10Gbps的信号,一个UI只有97皮秒。这么短的时间窗口里,任何一点噪声、抖动、反射都可能让链路误码。所以,选好芯片只是第一步,调好CDR才是真功夫。

核心要点回顾:
  • FPGA适合原型和小批量,ASIC适合大批量定型产品
  • SerDes硬核是10G通信的物理基础,配置时注意抖动和CDR参数
  • CDR的环路带宽设置是关键,太宽太窄都不行
  • 抖动容限要留余量,至少20%

公众号:蓝海资料掘金营,微信deep3321