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