4、本地环回与远端环回:概念、测试配置归纳总结

做 PHY 调试,环回模式是你绕不开的坎。刚接触这行的时候,我也觉得环回不就是把发送和接收连起来嘛,有什么好讲的?后来在实际项目中吃过亏,才发现——本地环回和远端环回,本质上是两种完全不同的调试哲学。

简单说说我的理解:本地环回是「自己测自己」,帮你快速确认芯片内部通路是不是好的;远端环回是「让对方帮我测」,用来判断整条链路的健康状况。你一上板就把这两个搞混,后面定位问题会非常痛苦。

先理解一个核心:数据到底往哪走?

我们先看两张图。别觉得画得简单,你脑子里存住这张「数据流向图」,就能在大部分调试场景中不被绕晕。

本地环回 vs 远端环回 — 数据流向对比 【 本地环回 】 发送端 TX PCS 环回 接收端 RX 【 远端环回 】 本端 TX 链路 对端 PMA 环回 本端 RX 回传 数据不经过外部链路 只能测 PHY 内部通路 数据经外部链路走到对端再回传 能测链路 + 收发器整体

说白了,本地环回把数据在 PHY 芯片内部就「截胡」了,发给自己的接收端。远端环回则是让数据真的跑出去,到对端设备再折返回来。

本地环回:优先选它,省心省力

我个人习惯,刚拿到一块新板子,第一件事就是切本地环回。为什么?因为它排除了外部链路、连接器、光模块这些「脏东西」的干扰。

配置本地环回通常有两个位置:

常用配置点:
  • PCS 层环回:在 MAC 和 PHY 之间的接口上做环回。这层最干净,可以绕过大部分 PHY 内部逻辑。
  • PMA 层环回:在 PMA(物理介质适配层)内部做环回。能带上一部分模拟电路,比如串并转换。

不是所有芯片都支持两层。记得查手册。我以前踩过一个坑:以为只要设了某个寄存器就算使能了环回,结果看了半天眼图,发现寄存器根本没写进去——你想想看,调试时最怕的就是这种假象。

本地环回的典型测试流程

  1. 配置环回模式寄存器:找到 PCS/PMA 环回使能位,写入 1。
  2. 发送已知数据流:我习惯用伪随机码(PRBS,Pseudo Random Binary Sequence,伪随机二进制序列)或者固定 Pattern。
  3. 检查接收端收到的数据:打开芯片内部统计寄存器,看误码计数器。
  4. 核对吞吐/误码率:发送 1Gbps 数据,收回来不该丢一个包。

这里有个技巧——你配置完环回,先发个全 0 看看,再发个全 1。如果这两个基本 Pattern 都传错了,十有八九是环回配置本身就有问题。

远端环回:链路健康度的试金石

本地环回测完了,内部通路没问题。这时候如果你发现链路还是不通,就需要远端环回上场了。

远端环回的本质是让对方设备把收到的数据原封不动发回来。我这边发,对端回传,我再收。等于我用自己的数据把整条链路「摸」了一遍。

重要提醒:
  • 远端环回需要双方设备都支持该模式,而且寄存器地址可能不同。
  • 配置远端环回后,本端发送的数据不能用来做业务——所有报文都会被对端直通返回。
  • 测完一定要记得关闭远端环回。不然等你把线接到交换机上,整个网络都会因为这个环回而风暴。

远端环回的典型测试流程

  1. 通过管理接口(MDIO,Management Data Input/Output,管理数据输入输出)配置对端进入远端环回模式。
  2. 本端开始发送测试帧,比如特定长度的以太网帧。
  3. 本端接收对端返回的数据,对比发送的内容。
  4. 统计往返延迟、误码率、帧丢失。

我记得有一次在产线上,一批板子远端环回始终过不了。搞了半天,发现是对端芯片的寄存器地址写错了。你说这冤不冤?所以打个样之前,一定先确认对方的寄存器布局。

为什么会这样?因为不同厂家的 PHY,即使兼容 802.3 标准,但在扩展寄存器上的实现五花八门。你在手册里翻到的远端环回地址,可能只是厂家自己定义的。

两者对比:一张表说清楚

我把它俩的核心差异整理成了表格,你可以直接拿来参考:

对比维度 本地环回 远端环回
数据路径 仅在 PHY 内部 经过外部链路再到对端
适用范围 PHY 内部功能验证 整条链路 + 两侧 PHY
是否需要配对设备 不需要 需要
能否测链路质量 不能 能
环回位置 PCS 或 PMA 层 PMA 或 SerDes 层
误码定位能力 只能定位 PHY 内部 能定位到链路侧问题
配置复杂度 低,单端配置 高,需双端配合

嗯,这里要注意几个实战坑

  • 先本地后远端:本地环通过不了,直接做远端环回等于浪费时间。你连自己的芯片都没搞定,查链路有什么用?
  • 环回时的速率/协议必须一致:1000BASE-X 和 SGMII( Serial Gigabit Media Independent Interface,串行千兆媒体独立接口)的环回行为是不一样的。这在一些多速率 PHY 上尤其明显。
  • 远端环回测完后,检查寄存器是否自动退出:有的芯片掉电或复位后会自动退出,但有的不会。我以前就因为这个,在产线上多花了一个小时排查网络风暴。
我的建议: 把本地环回当成你的第一道防线。 上电、复位、检查时钟,然后直接切本地环回。 这个流程走顺了,能帮你排除 70% 的早期故障。