2. PHY芯片分类与常见型号介绍

说实话,很多工程师刚接触以太网时,面对一堆PHY芯片型号挺懵的。RTL8211、KSZ9031、BCM5461…长得都差不多,到底怎么选?别急,咱们先搞清楚分类,再逐个聊特点。我个人习惯把PHY芯片按几个维度来分,这样选型时脑子就清晰多了。

2.1 PHY芯片的分类方式

PHY芯片的分类,说白了就这几个关键点:

  • 按接口类型:铜缆(Base-T)还是光纤(如SGMII、1000Base-X)。铜缆PHY占大多数,像RTL8211就是典型的铜缆PHY。光纤PHY一般用在长距离或抗干扰要求高的场景。
  • 按速率:10/100Mbps、10/100/1000Mbps(千兆)、2.5G/5G/10G。千兆是目前主流,2.5G在一些高端交换机和网卡上也开始普及。
  • 按电压域:3.3V、2.5V、1.8V。老的PHY大多是3.3V,新一些的为了低功耗和兼容FPGA/SoC,开始用1.8V或可配置电压。
  • 按温度等级:商业级(0~70℃)、工业级(-40~85℃)、汽车级(-40~125℃)。我在一个户外设备项目中用过工业级KSZ9031,冬天零下30度,系统上电一点就亮,稳得很。

还有一个维度我经常跟团队强调:MDIO/MDC时序兼容性。有些PHY对MDIO的时序要求比较严格,碰上FPGA模拟的MDIO控制器时,容易出怪问题。所以我会在选型时多看几眼芯片手册里的“MDIO Timing Characteristics”那张表。

小提示:工业级PHY不一定比商业级贵很多,但可靠性好一大截。如果你做户外的网关、路由器,或者电力行业的设备,直接工业级起步,别犹豫。

2.2 常见PHY芯片型号与厂商

这块是重点,我挑几款我自己大量用过、踩过坑的型号来聊。

2.2.1 RTL8211系列(瑞昱 Realtek)

RTL8211是我入行时接触最多的PHY。性价比之王,出货量巨大,基本你能想到的消费级路由器、开发板、交换产品都在用。

  • 常见变体:RTL8211E(千兆)、RTL8211F(千兆,带EEE节能以太网)、RTL8211G(工业级)
  • 接口:支持RGMII、SGMII、1000Base-X
  • 封装:QFN48、QFN32
  • 供电:1.0V核心 + 3.3V/2.5V I/O

我使用过的感受:RTL8211的寄存器比较“标准”,大部分地址和功能都符合IEEE 802.3规范。但有一个坑——它的PHY ID(寄存器2和3)在有些版本里读出来是0x001cc912,有些是0x001cc913,我记得以前写驱动时因为没区分导致初始化失败,查了半天才发现是固件版本更新了ID。

2.2.2 KSZ9031系列( Microchip )

KSZ9031是我个人比较喜欢的千兆PHY。特别是RNX系列(带汽车级),稳定性非常棒。

  • 常见变体:KSZ9031RNX(工业/汽车级)、KSZ9031MNX(商业级)
  • 接口:RGMII(内置延迟补偿)、SGMII、1000Base-X
  • 封装:QFN48、QFN32
  • 特色:RGMII内置2ns/4ns/8ns的延迟可调,省掉PCB上的走线延迟补偿

避坑指南:我曾经在一个项目里用KSZ9031接FPGA,RGMII时钟采样总出问题。后来发现芯片手册里有一个pad_skew寄存器可以调TX和RX的时钟延迟。调了2ns后,一切正常。所以建议拿到芯片后先跑一下PHY自环测试,确认时钟对齐。

2.2.3 BCM5461系列(博通 Broadcom)

博通的PHY在高端交换机和通信设备里很常见。BCM5461是老牌的千兆PHY,性能非常可靠,当然价格也比RTL8211贵不少。

  • 常见变体:BCM5461、BCM5461A、BCM5461B
  • 接口:RGMII、SGMII、1000Base-X、SerDes
  • 封装:QFN48、TBGA
  • 特色:支持Auto-MDIX、交叉检测能力强大,省外设

个人经验:博通的PHY寄存器相对“封闭”,一些高级功能(比如EEE、Ethernet@Wirespeed)的配置需要通过Shadow Register来搞,不能直接读写标准寄存器。我第一次用BCM5461时,搞了快两天才把EEE关掉,后来发现手册里有一份专门讲Shadow Registers的文档,没看的话完全不知道从哪下手。

2.2.4 其他常见型号

除了上面三款,还有一些型号也值得提一下:

型号 厂商 主要特性 常见应用
DP83867 TI 千兆,支持IEEE 1588(PTP)、同步以太网 工业以太网、电力系统
AR8031/AR8035 Atheros(现Qualcomm) 千兆,低功耗,RGMII接口 路由器、企业网关
YX8821 宇芯 国产替代,pin-to-pin兼容RTL8211 国产化项目
VSC8514 Microsemi(现Microchip) 四端口千兆PHY,低功耗 多端口交换机
选型思路:我个人在项目里会先看封装和IO电压能否与主芯片对接,再看温度等级是否符合环境。之后第一件事一定是读一下PHY的ID寄存器(寄存器2和3),看看能不能正确读出来。这一招能快速排除硬件连接和复位问题。
特别注意:有些国产PHY芯片号称pin-to-pin兼容RTL8211,但寄存器地址和功能可能有差异。不要直接移植驱动,一定要先跑一遍PHY寄存器dump,把每个寄存器的值都打印出来,对比原厂手册。我之前在一家工控公司看到,升级国产PHY后忘记修改驱动,导致整批设备在高温下断网。教训深刻。

2.3 如何快速识别PHY型号

拿到一个PHY芯片,不管上面印着什么丝印,最快的方式是读寄存器2(PHY Identifier)和寄存器3(PHY Identifier Extension)。IEEE为每个厂商分配了OUI编号,比如:

  • 瑞昱:0x001cc9
  • Microchip:0x002220
  • 博通:0x00036f
  • TI:0x0007a1

具体怎么读?用MDIO命令就行。我常用的是:

# 使用mdio工具读取PHY ID
mdio read 0 2
mdio read 0 3

或者如果你在Linux用户态,可以用ethtool -e来dump寄存器。我建议把PHY ID这个值写进驱动的probe函数里,配合内核里已有的PHY驱动框架,省去很多重复开发。

2.4 一张图快速掌握PHY芯片分类

下面我整理了一张分类与型号对应图,方便你快速建立起知识结构。嗯,这图我自己画了挺久,希望能帮到你。

PHY芯片分类与常见型号图谱 PHY芯片 按接口类型 按速率 按电压等级 按温度等级 铜缆(Base-T) 光纤(SGMII) 10/100M 千兆(主流) 2.5G/5G/10G 3.3V 2.5V/1.8V 商业级(0~70℃) 工业级(-40~85℃) 汽车级(-40~125℃) 典型型号 铜缆:RTL8211、KSZ9031 光纤:BCM5461(支持SGMII) 选型关键点 接口 & 电压 & 温度 先读PHY ID确认硬件

这张图从上往下看:先从PHY芯片出发,按四个维度分到不同类型的节点,再对应到典型型号。我画这张图的时候,考虑到很多刚入行的工程师对“跟谁对接”比较困惑,所以特别把铜缆和光纤的典型型号放在了底部说明框。实际项目里,你只需要根据接口、速率、电压、温度这四个点交叉对比,基本就能圈定目标了。