MDC MDIO 信号质量指标:眼图、抖动、过冲/下冲、边沿速率、噪声容限
做 MDC MDIO 调试,最怕什么?不是协议没写对,是信号质量烂到连示波器都看不清。我见过太多次:软件排查了两周,最后发现是 MDC 时钟边沿太缓,从设备压根没采到数据。所以这一章,咱们把五个核心指标掰开揉碎讲清楚。
4.1 眼图 —— 信号质量的“快照”
眼图是个啥?说白了,就是把多次采集的数字信号叠加在一起,看它的“眼睛”睁得大不大。眼睛睁得大,噪声容限就高;眼睛眯成一条缝,肯定要丢数据。
我自己习惯看眼图时重点盯三个东西:
- 眼高(Eye Height):逻辑 1 和逻辑 0 之间的电压差。差太小,接收端容易误判。
- 眼宽(Eye Width):数据有效的采样窗口宽度。抖动大,眼宽就窄。
- 眼交叉比(Eye Crossing):差分信号过零点处的比例。一般要求 50% ± 10%。
举个实例。我之前调一款交换机的 MDIO 总线,发现眼图里上眼皮和下眼皮都是毛刺,结果发现是 MDIO 信号线的上拉电阻没焊好。换了个 4.7kΩ 电阻,眼睛立刻“睁”开了。
4.2 抖动 —— 时钟和数据的“哆嗦”
抖动就是信号跳变沿在时间轴上的随机偏移。MDC 是时钟,MDIO 是数据,两者都怕抖。抖动大了,眼宽收缩,裕量归零。
我一般把它分成两类:
- 随机抖动(RJ, Random Jitter):热噪声引起,高斯分布,没法完全消除。
- 确定性抖动(DJ, Deterministic Jitter):串扰、反射、电源噪声引起,有规律可循。
重点关注 DJ。我遇到过最典型的案例:PCB 上 MDC 走线挨着大电流电源过孔,MDC 抖动到了 200ps。我把 MDC 走线绕开 3cm,抖动直接掉到 35ps。嗯,有时候就是个走线问题。
4.3 过冲与下冲 —— 信号的“过头”
过冲就是信号超过正常高电平,下冲是低于正常低电平。小幅过冲还能忍,大了就会误触发接收端的保护二极管,甚至把管脚打坏。
我个人的经验法则:
- 过冲幅度不超过 VOH 的 15%
- 下冲幅度不超过 VOL 的 15%
- 持续时间不超过信号周期的 10%
有一次客户反馈 MDIO 偶尔读回 0xFF,我抓波形发现 MDIO 下冲到了 -0.7V,直接把 FPGA 的输入保护钳位二极管搞漏电了。加一个 22Ω 串阻限流,问题解决。
4.4 边沿速率 —— 时钟上升/下降时间
MDC 时钟的上升时间(tr)和下降时间(tf)太慢,接收端可能采样不到正确电平,因为信号还没稳定就过去了。太快的话又会引起过冲和 EMI 超标。
业内一般推荐:MDC 的 tr/tf 控制在信号周期的 5% ~ 20%。假定 MDC 频率 2.5MHz(周期 400ns),上升时间 20ns ~ 80ns 就挺好。
| MDC 频率 | 推荐 tr/tf 范围 |
|---|---|
| 1 MHz | 50 ns ~ 200 ns |
| 2.5 MHz | 20 ns ~ 80 ns |
| 5 MHz | 10 ns ~ 40 ns |
| 10 MHz | 5 ns ~ 20 ns |
记得有一次,我用一个 100Ω 的源端匹配电阻,MDC 上升沿直接拉到了 120ns,2.5MHz 时信号还没高呢就变低了。换成 33Ω,边沿速率立马合格。
4.5 噪声容限 —— 抗干扰能力
噪声容限说白了就是:接收端能容忍多少噪声而不翻盘。CMOS 接口一般要求 VIH(min) 和 VIL(max) 留出 0.5V 左右裕量。
MDIO 属于漏极开路,上拉到 1.8V 或 3.3V。如果噪声容限不够,总线上一有毛刺,数据就错。我建议测量时关注:
- 高电平噪声容限 = 接收端 VIH(min) - 发射端 VOH(min)
- 低电平噪声容限 = 发射端 VOL(max) - 接收端 VIL(max)
如果容限小于 0.2V,十个板子九个有数据错误。我曾经遇到一个板子,VOL(max) 跑到 0.6V,接收端 VIL(max) 只有 0.7V,噪声容限才 0.1V —— 一按开关附近继电器,MDIO 立刻丢数据。后来加了在 MDIO 线上并联 3.3pF 电容滤除高频噪声,才算稳住。
4.6 五指标关联图
下面这张图把五个指标串在一起,你可以把它记在小本本上。每次排查从眼图入手,一路追到底层原因。
OK,第五个指标讲完,这一章就到这。记住这五个测试项,你上手调试的时候就不会乱抓。下一章咱们开始碰真家伙——用示波器抓 MDC MDIO 时序。先别滑走,趁热把眼图规范背下来。