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锁定范围偏了,只能靠外部时钟补偿,那叫一个难受。
下面这张图是我自己画的,帮你快速理解两者的适用场景:
2.2 SerDes硬核:10G通信的物理基石
SerDes,Serializer/Deserializer的缩写。说白了就是把并行数据转成串行高速信号发出去,再在接收端转回来。10G光通信里,SerDes是绝对的核心。
FPGA里的SerDes通常是硬核。比如Xilinx的GTX、GTH,Intel的Transceiver。这些硬核已经集成了PMA(物理介质适配层)和PCS(物理编码子层)。你只需要配置寄存器,不用自己设计高速模拟电路。嗯,这里要注意,硬核虽然好用,但它的性能是有极限的。
下面是一个典型的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的另一个关键指标是抖动容限。它描述了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