第2章:时序参数详解

做RGMII接口调试,你最先得跟几个时序参数打交道。说白了,它们就是信号在芯片之间“跑”的时候,你必须要遵守的规矩。我记得刚入行那会儿,觉得这些参数都是芯片手册上写写的东西,直到有一次板子调不通,示波器一看,信号边缘刚好压着接收端的建立时间窗口——嗯,从那以后我再也不敢小看这几个数字了。

2.1 建立时间(Setup Time)

定义:在时钟有效沿到来之前,数据输入必须保持稳定的最短时间。如果数据在这段时间内跳变,寄存器可能锁到错误的值。

对于RGMII来说,接收端的建立时间一般是0.8~1.2 ns(具体看芯片手册)。我自己的经验是:如果你的走线等长做得不理想,setup margin很容易被吃掉。曾经有一版PCB,数据线比时钟线短了快200 mil,结果setup time直接少了0.5 ns,差点翻车。

个人习惯: 我会在时序约束里留出至少0.3 ns的裕量,别卡着边界值设计,不然后期温度电压一变就完蛋。

2.2 保持时间(Hold Time)

定义:在时钟有效沿之后,数据输入必须继续稳定的最短时间。保持时间和建立时间就像跷跷板的两端,一个紧另一个就松。

保持时间在RGMII中通常比建立时间更短,典型值0.5~1.0 ns。但你想想看,如果时钟走线比数据线还长,保持时间约束就容易出问题。我碰到过一次,因为时钟树延迟太大,数据已经变了时钟才到,结果保持时间违规——那把板子最后加了两个buf才修回来。

注意: 保持时间违规无法通过降低频率解决,必须靠调整延迟或重新布局。这一点和setup完全不同。

2.3 时钟到输出延迟(Clock-to-Output Delay, Tco)

定义:从时钟有效沿到数据输出有效的延迟时间。这个参数决定了发送端的数据什么时候准备好给接收端看。

RGMII发送器的Tco一般在1.0~2.5 ns之间,有的大芯片甚至能到3 ns。我习惯把Tco看作“发货时间”——时钟沿一过,数据就开始打包出发,打包需要多久就是Tco。如果你的Tco偏大,留给后面接收端的setup时间就会缩水。

参数RGMII典型值我见过的最差值
Setup Time0.8 – 1.2 ns0.5 ns(某国产PHY)
Hold Time0.5 – 1.0 ns0.2 ns(极端温度)
Tco1.0 – 2.5 ns3.1 ns(FPGA IO老化后)

2.4 时钟偏差(Skew)

定义:同一个时钟源到达不同负载的时间差。在RGMII里,主要关心收发两端的时钟偏差。

Skew通常来源于走线长度差异、负载电容不同、PCB材料不均匀。我个人建议把时钟线走成“鱼骨形”,等长控制在±50 mil以内,这样skew基本能压到0.1 ns以下。但有次我为了省空间,把时钟线绕了个大弯走BGA下面,结果测出来skew有0.3 ns——引以为戒。

避坑指南: 我曾经为了追求等长,把时钟线绕得弯弯曲曲,反而造成了额外串扰。后来学乖了——等长够用就行,别过度。

2.5 抖动(Jitter)

定义:时钟边沿的时间偏移,相对理想位置的随机或确定性变化。Jitter会吃掉你的时序裕量。

RGMII对jitter比较敏感,因为双沿采样。总抖动(Tj)通常分成随机抖动(Rj)和确定性抖动(Dj)。我见过一块板子,电源纹波大,导致时钟jitter从20 ps涨到80 ps,结果100 MHz的RGMII直接误码。怎么办?加一级PLL重新整形时钟,再给模拟电源单独滤一次波。

典型值参考: 大多数MAC/PHY要求时钟jitter峰峰值 < 200 ps(周期到周期)。如果你用的是片上PLL,这个值一般没问题;但外部晶振质量不好时,容易超标。

2.6 参数关系与典型时序路径

这几个参数不是孤立的。我给你画一张图,看看它们怎么串起来的:

RGMII时序参数路径图 发送时钟 Tco 数据输出 接收时钟 Setup/Hold Jitter Skew 核心关系:发送时钟→Tco→数据输出,接收时钟→Setup/Hold→Jitter。 数据输出与接收时钟之间的Skew决定了实际时序裕量。

2.7 实际设计中如何对齐这些参数

你拿到RGMII接口芯片手册后,第一步就是查出它的setup/hold time和Tco。然后估算PCB走线带来的skew,加上时钟jitter,做个加减法。我一般用Excel拉个时序预算表:

  1. 发送端贡献: Tco + 发送端路径延迟
  2. PCB贡献: 数据线走线延迟 - 时钟线走线延迟(就是skew)
  3. 接收端窗口: Tsetup + Thold
  4. 最终裕量: 时钟周期 - (Tco + skew + jitter) - Tsetup

如果裕量小于0.2 ns,我会考虑调PCB等长或者换FPGA IO的delay元素。嗯,这里要注意:千万不要只看典型值,要按最坏情况算,包括温度、电压、工艺角。

一句话总结: 建立时间决定你能跑多快,保持时间决定你能不能稳住,Tco拖后腿,skew和jitter是隐形杀手。把这几个参数吃透,RGMII时序调整才算入了门。