第1章 PHY调试概述

做硬件调试这些年,我经手过的PHY芯片少说也有几十种了。每次项目启动,总有人问同一个问题:"PHY到底在调什么?"要回答这个问题,得先从物理层的基本概念说起。你想想看,数据从设备A传到设备B,中间要经过多少关卡?PHY就是那道最底层的关卡——它负责把数字信号变成能在线缆或光纤上跑的东西,再把对方发来的信号还原回去。说白了,PHY就是MAC和物理介质之间的翻译官。

1.1 到底什么是PHY?

PHY是Physical Layer的缩写,中文叫物理层。在IEEE 802.3体系里,PHY是数据链路层(MAC)与物理介质之间的桥梁。它干的活包括但不限于:

  • 编码/解码:把MAC发来的数据编码成适合线缆传输的码型(比如8B/10B、64B/66B),反过来也一样。
  • 信号收发:驱动差分信号到双绞线或光纤上,同时从线缆上接收信号。
  • 时钟恢复:从接收到的数据流中提取时钟,保证收发双方节奏一致。
  • 链路协商:与对端PHY自动协商速率、双工模式、流控方式。
一个小习惯:我拿到一块新板子,第一件事就是读PHY的寄存器0x02和0x03——这两个寄存器存着PHY的厂商ID和器件ID。读不到正确ID,说明MDIO总线有问题,或者PHY根本没上电。这能帮你快速判断问题在哪个环节。

常见的PHY接口类型有很多,像GMII、RGMII、SGMII、QSGMII、XAUI等等。不同速率用不同的接口,但核心逻辑不变——PHY永远夹在MAC和介质中间。

1.2 物理层基本模型

讲到PHY的内部结构,就得把物理层再拆开看。IEEE 802.3把PHY分成了三个子层:PCS、PMA、PMD。数据从MAC下来,依次穿过这三个子层,才到达线缆。反过来,接收路径上的顺序正好相反。

我个人习惯用一张表格来对比这三个子层的分工,清晰又直观:

子层 全称 核心职责 我踩过的坑
PCS Physical Coding Sublayer 编码/解码、对齐、扰码 曾经遇到过PCS的扰码器没同步,导致链路间歇性断开,折腾了两天才定位到。
PMA Physical Medium Attachment 串行/解串、时钟恢复、环回 PMA环回是排查通路的好工具,但记得测完要关掉,否则后面链路永远建不起来。
PMD Physical Medium Dependent 信号驱动、线缆均衡、预加重 PMD的驱动摆幅设得太小,信号跑到对端已经衰减到没法看了。

这三层的关系,说白了就是:PCS管"码"、PMA管"时钟"、PMD管"信号"。调试的时候,你遇到的绝大多数问题都可以归到这三类里。先定位是哪个子层出了状况,再深入细节,效率高得多。

一个实用的定位思路:链路不通时,先用PMA环回测内部通路,再用外部环回测线缆和对端。环回过了,说明PHY芯片本身没问题;环回过不了,就可以针对性查PCS的编码或PMD的信号质量。

1.3 调试的常见目标

做PHY调试,说白了就是在跟四个东西打交道:链路、眼图、误码率、时序。我按优先级排了个序:

  1. 链路建立——这是前提。Link不起来,后面全是白搭。自动协商成功、同步锁定、链路状态寄存器变成"Up",这是第一步。
  2. 眼图张开——信号质量是PHY的命根子。眼图闭合,数据就出错。调试的目标是让眼图的"眼睛"睁得足够大,垂直方向和水平方向的余量都达标。
  3. 误码率达标——光看眼图还不够,得用PRBS码流实测。不同速率的误码率要求不一样,10G以上通常要求BER < 1E-12。
  4. 时序收敛——时钟抖动、建立保持时间、SKEW(偏斜),这些东西在高速设计中尤其要命。我见过一个案例,因为PCB走线等长没做好,导致4路SGMII的SKEW超标,整板跑不起来。

这四个目标不是独立的。链路建不起来,可能是眼图太差导致的;误码率高,可能是时序有问题。调试的时候要来回看,别钻牛角尖。

1.4 调试中的典型难题

做PHY调试,难的不是理论,是你不知道问题到底出在哪。我总结了四个最常见的"拦路虎":

  • 信号衰减:高频信号在PCB走线、连接器、线缆上都会衰减。频率越高,衰减越严重。10G以上的信号,走线稍微长一点,眼图就全闭上了。
  • 噪声干扰:串扰、电源噪声、EMI,这些东西会叠加在信号上,让眼图的"眼皮"变厚。我记得有一次调试10GBase-T,发现串扰来自隔壁的电源走线,重新布局后才解决。
  • 时钟抖动:抖动分随机抖动(RJ)和确定性抖动(DJ)。RJ来自热噪声,DJ来自串扰或电源纹波。抖动过大会直接吃掉时序余量。
  • 阻抗不连续:连接器、过孔、换层的地方都会引入阻抗突变。阻抗不匹配会导致信号反射,反射回来的信号跟原信号叠加,波形就变形了。
避坑指南:我曾经在一款25G端口的项目上,怎么调眼图都打不开。最后发现是PCB上的一对差分走线在连接器根部间距拉宽了,导致阻抗从100Ω跳到了130Ω。那对过孔的位置离连接器太近,反射严重。从那以后,我每次画板都会检查过孔到连接器的距离——阻抗连续性比走线长短更重要。

这些难题往往一起出现。比如信号衰减会放大噪声的影响,阻抗不连续会引入额外的抖动。你想想看,一个问题还没搞定,另一个问题又冒出来了——这就是PHY调试的日常。

一个实战技巧:调试时先把所有均衡器(EQ)和预加重都开到默认值,确保链路能建立。然后再逐个调优,观察眼图的变化。不要一上来就猛调参数,否则你根本不知道哪个参数起了作用。
PHY 调试知识体系 什么是 PHY 物理层模型 调试目标与难题 MAC 与介质间的桥梁 编码解码与信号收发 PCS 子层(编码对齐) PMA 子层(串化解串) PMD 子层(信号驱动) 调试目标(眼图/BER) 调试难题(噪声/抖动) 调试的本质:在噪声与约束中找到信号的平衡 定位 → 分层 → 隔离 → 测量 → 优化 → 验证

上面这张图把本章的核心知识点串在了一起。你可以把它当作调试时的"地图"——遇到问题时,先看问题落在哪个区域,再顺着往下拆。这样思路不会乱。

小结一下:PHY调试不是玄学,它有一套清晰的方法论。弄懂PHY是什么、物理层怎么分层、调试要达成什么目标、常见难题有哪些——这四件事是基础中的基础。后面章节我们会一步步拆解每个环节,把方法论变成可以落地的操作。