PHY 基础知识

各位好,我是老刘,在高速接口这块摸爬滚打了十几年。今天咱们正式开始聊 PHY 寄存器,尤其是跟眼图优化相关的那些。不过想调好眼图,你得先搞清楚 PHY 到底是干什么的、它长什么样、寄存器又是怎么组织的。

PHY 在高速串行链路中的角色

说白了,PHY 就是物理层收发器。它位于数字逻辑和物理传输介质之间,负责把要发的数据变成适合在差分线上跑的电信号,再把接收到的微弱信号恢复成干净的数字比特流。

我经常跟新同事打比方:PHY 就像串行链路的“翻译官”。MAC 层说并行数据,PHY 转成串行;线上信号有损耗、有噪声,PHY 还得做均衡和时钟恢复。没有它,你芯片里的 0/1 根本出不去,也读不进来。

一个典型的串行链路长这样:

  • 发送端(TX):并行数据 → 串化 → 预加重/去加重 → 驱动差分对
  • 通道(Channel):PCB 走线、连接器、电缆,会衰减高频分量
  • 接收端(RX):CTLE/DFE 均衡 → CDR 时钟恢复 → 解串 → 数据送到上层

我记得有一次调试 PCIe 3.0 链路,发送端眼图打开得挺好,可接收端就是锁不住。排查了半天,原来是 PCB 过孔电感太大,高频分量丢光了。从那以后我对“通道”这两个字特别敏感。

典型 PHY 架构:PCS / PMA

PHY 内部通常分两层:PCS(Physical Coding Sublayer)和 PMA(Physical Medium Attachment)。IEEE 802.3 和 PCIe 规范都沿用这套划分。

层级 主要工作 我眼中的关键
PCS 编码解码(8b/10b、64b/66b)、加扰/解扰、对齐、协商 负责“数据包得传输”
PMA 串化/解串、时钟产生、驱动器/接收器、均衡、CDR 负责“电信号得干净”

PCS 更贴近数字域,PMA 则是模拟混合信号的重灾区。很多眼图参数——比如 TX 摆幅、预加重强度、RX 的 CTLE 增益、DFE 抽头系数——都在 PMA 的寄存器里。

你想想看,调眼图实际就是在跟 PMA 的模拟模块对话。数字工程师常忽略这个,觉得改个寄存器值就行。我见过有人把 CTLE 调到最大,结果噪声也跟着放大,眼图反而更差。所以咱们得先清楚这些寄存器属于哪个模块、怎么配合。

下面这张图画出了 PHY 在链路中的位置及内部 PCS/PMA 的分层:

PHY 在串行链路中的位置 & 内部架构 MAC(发送) PCS TX PMA TX 通道 PMA RX PCS RX MAC(接收) PCS 层(编码、加扰、对齐) • TX:编码、加扰、链路训练 • RX:解码、解扰、对齐、字边界 PMA 层(串化、均衡、CDR) • TX:串化、驱动、预加重/去加重 • RX:CTLE、DFE、CDR、解串
个人习惯:调试眼图时,我通常先看 PMA 的寄存器,因为绝大多数物理层问题都出在模拟前端。PCS 的寄存器更多记录链路协商和错误计数,那是排查“握手”问题的第一步。

寄存器空间划分

每个 PHY 芯片内部都有一片寄存器“地图”。拿常见的 MDIO(Management Data Input/Output)接口来举例,寄存器地址从 0x00 到 0x1F 共 32 个。但实际芯片会通过 MMD(MDIO Manageable Device)扩展更多空间。

地址范围 功能分类 我关注的关键寄存器
0x00 – 0x0F 标准控制/状态 复位、速度选择、Link状态
0x10 – 0x1F 厂商自定义 TX摆幅、预加重强度、RX均衡配置
MMD 扩展 PMD/PMA/PCS 详细参数 眼图监视、DFE抽头系数、CDR锁定状态

嗯,这里要注意:眼图优化相关的参数几乎全在厂商自定义和 MMD 扩展区。标准寄存器只管让你看个链路通不通,真要调质量,你得进“深水区”。

我曾经踩过一个坑:某款 10G PHY 的 DFE 系数是通过 MMD 地址 0x8400 写的,但手册写成了 0x4800。我折腾了一周,最后用示波器对比波形才发现索引错了。所以 拿到 PHY 手册后第一件事是画寄存器地图,每个要调的参数都标上地址和类型。

寄存器访问的基本模式

// MDIO 写示例(伪代码)
uint16_t mdio_write(uint8_t phy_addr, uint8_t reg_addr, uint16_t data)
{
    // 1. 设置 PHY 地址 (phy_addr)
    // 2. 设置寄存器地址 (reg_addr)
    // 3. 写入 16 位数据
    // 4. 等待 MDC 时钟完成操作
    // 5. 检查状态位
}

代码不难,关键是你得知道写哪个寄存器。举个实际例子:调整 TX 预加重,很多 PHY 用的是 0x1C 或 0x1D,低四位控制预加重幅度,高四位控制去加重。不同厂商可能完全不同。

警告:别盲目相信“默认值”。我见过的板子中,大概有 30% 的 PHY 默认均衡参数不适合你的具体 PCB 走线。一定要上电后先读一次寄存器快照,再针对眼图测试结果微调。