
直接说结论网口上那颗网络变压器不是所有场景都省不得。很多人一画以太网原理图条件反射就在RJ45旁边摆一颗SMD 12pin 66骨架的百兆变压器或者千兆的四对线变压器然后隔离地、ESD管、共模电感跟着铺一片。但如果你做的是板级互连、背板通信、光模块接入或者只想用PHY芯片做短距离数据传递变压器完全可以拿掉。我这些年做过交换机核心板、工业网关、FPGA网络处理板吃过不少PHY直连的亏也攒了三套实用方案这里一次性放出来照着做基本能少走两个月的弯路。这篇文章适合硬件工程师、嵌入式Linux开发、FPGA逻辑工程师以及正在被PCB面积和BOM成本逼到墙角的人。需要你懂一点原理图、会看PHY数据手册最好手边有示波器或逻辑分析仪。下面先把为什么网口默认要变压器讲清楚再逐个拆解三套直连方案。1. 为什么网口默认必须带变压器——先把原理说清楚1.1 变压器在以太网口里到底干了什么以太网口在绝大多数设计里都带着一颗网络变压器常见的是SMD 12pin 66骨架封装也有16pin甚至24pin的千兆版本。这颗料看上去不起眼实际上承担了四件事。第一是共模隔离。两台设备各自有独立的电源地电位可能相差几十伏甚至几百伏如果没有变压器这个电位差会直接通过网线灌进PHY芯片的差分引脚轻则丢包重则烧芯片。变压器用磁耦合的方式把直流和低频共模成分挡在两侧之外。第二是阻抗变换和匹配。双绞线的特性阻抗是100欧PHY芯片内部发送器的差分阻抗通常也是100欧变压器在这里起到信号耦合和阻抗匹配的作用保证能量尽量传过去、反射尽量小。第三是提供直流偏置。以百兆100BASE-TX为例PHY发送器输出的MLT-3信号带有直流分量经过变压器初级时中心抽头需要接电源或经过电阻网络提供偏置让发送器工作在线性区。这个偏置网络很多时候就集成在变压器外围电路里。第四是防浪涌和静电。网线从外部拉到设备雷击感应、静电放电、设备间地电位突变都会在线上产生很高的共模电压变压器初级线圈加上与之配合的Bob Smith端接电路能把这部分能量吸收掉。这第四条尤其关键。一颗网络变压器也就是几块钱的事但它挡掉的故障率往往是几十倍于它的返修成本。这也是为什么绝大多数带RJ45出线的产品方案再激进也不敢省变压器。1.2 什么情况下变压器可以省、什么情况下不能省判断能不能省变压器不要看PHY芯片本身要看信号最终走什么介质、跨不跨设备。这里有个很实用的判断标准。如果以太网信号要通过双绞线从一个机箱拉出去接到另一个设备或交换机上那变压器必须保留。因为这个时候存在跨设备地电位差、雷击浪涌引入路径以及共模干扰问题变压器是最便宜也最可靠的物理防线。但如果信号只在电路板内部走或者是经过光模块变成光信号再传输情况就完全不同。板内走线时所有电路共地地电位一致不存在跨设备隔离需求光纤介质本身又是绝缘体天然切断了电气连接。这种场景下变压器就变成了纯多余的器件省掉它对信号质量没有负面影响反而少了插损、少了焊接点、省了面积。所以严格来说“PHY直连”并不是让你把RJ45口上的变压器盲目拆掉而是在特定介质和距离约束下用AC耦合电容、光模块接口或芯片间串行接口去替代变压器原来不必要承担的隔离工作。下面这三套方案每一套都有明确的使用边界。2. 方案一两个PHY芯片MDI口直接AC耦合互联2.1 适用场景与省变压器的原理方案一最直接也最能回答“能否省掉变压器”这个原始问题。做法是把PHY芯片的MDI差分引脚通过AC耦合电容直接连接到另一颗PHY芯片的MDI差分引脚中间不经过网络变压器也不接RJ45接头。这个方案适用的场景非常明确两个PHY在同一个系统的不同板卡上或者在同一块PCB的不同区域但整体共地。我实际做过的一个案例是核心板加底板的设计核心板上有一颗MAC芯片底板上有交换芯片的PHY端口两者之间通过板对板连接器做百兆以太网通信。按传统做法是核心板出一路带变压器的网口底板再接一个带变压器的网口两个网口用网线连起来绕了一大圈又占面积又费成本。改造成PHY直连后去掉了两颗网络变压器、两个RJ45座、若干共模电感和ESD管只剩几颗电容和一对差分线成本省了一大截PCB面积也释放了。原理上说变压器去掉后原来由变压器完成的直流隔离和偏置功能需要重新分配。板内直连因为没有跨设备地电位差隔离不需要了直流偏置则可以通过AC耦合电容把两端PHY的直流工作点隔开让信号以交流形式耦合过去。2.2 电路设计参数与具体步骤以百兆PHY为例MDI口的差分线只有两对分别对应1/2引脚和3/6引脚线对。直连时的电路设计要注意几个点。AC耦合电容是核心器件。每对差分线上串一颗电容电容值建议选100nF到220nF之间封装用0402或0603材质选X7R或C0G。位置尽量靠近接收端这样发送端的共模噪声进入电容前能少走一段距离。需要特别提醒的是有些PHY芯片内部已经做了AC耦合你的PCB上就不能再重复加电容否则低频分量会被过度衰减表现为能link上但跑吞吐不过去或者出现周期性丢包。这一点一定要仔细看PHY芯片手册里关于内部偏置的说明。端接方面接收端差分对上通常需要并联一颗100欧电阻用来和走线阻抗匹配。如果两端PHY都启用了片内端接外部电阻就可以省略。有些PHY还提供中心抽头对外供电的功能去掉变压器后需要按照手册在MDI引脚的中心抽头位置接合适的电源或电阻网络如果没有启用内部偏置必须把这个外部偏置电路补上。走线规则上板级直连的距离建议控制在5厘米以内阻抗按100欧差分控制差分对内等长控制在5毫秒以内。参考平面必须完整不要跨分割过孔数量尽量少。如果跨板对连接选择低损耗、有屏蔽的板对板连接器并确保地平面在连接器两侧连续。实操时建议先把MDIO管理接口引出来接上调试工具。上电后第一步不要开自动协商先把两端PHY强制配置成百兆全双工确认link起来了再测试打流。我习惯用iperf或者网络测试仪灌包观察吞吐率和CRC错误计数。2.3 直连后最常见的三个坑第一个坑是link灯不亮。多数情况是MDI线序交叉问题。两个PHY通过MDI直连时一端发送的差分对必须接到对端的接收差分对交叉关系要提前在原理图里规划好。第二个坑是能link但大量FCS错误。这通常不是逻辑问题而是模拟信号质量问题。电容值选得太大会让低频噪声混进来走线过长信号眼图塌陷差分阻抗不连续反射变大。排查时用示波器探一下接收端差分波形看眼图和抖动比盲调参数快得多。第三个坑是只能协商到10M。这说明PHY没有进入预期的直连模式或者两端速率能力不匹配读一下PHY寄存器里的协商结果和速度指示位基本就能定位。板内直连还有一个容易被忽略的点热插拔。如果板卡支持带电插拔连接器插入瞬间的共模冲击会直接打到PHY引脚上虽然没有外部线缆那么严重但建议在差分线上并联一对结电容小于1pF的TVS管做保护。3. 方案二PHY直连光模块光纤介质天然省变压器3.1 光口为什么没有变压器这回事第二种方案更省心因为它根本不需要变压器出场甚至连省变压器的念头都不用动。这就是让PHY工作在光口模式直接连接光模块或SFP座子。很多人把光模块想得很复杂其实光口侧的电信号只是从PHY芯片的特定引脚送到光模块的差分输入输出。以百兆100BASE-FX为例PHY芯片工作在光纤模式下TXD正负差分对接到光模块的发送差分脚RXD正负差分对从光模块接收差分脚取信号。光模块内部再把电信号转换成光信号送到光纤里。为什么这个方案不用变压器因为光纤是玻璃或塑料介质本身不导电两端设备之后完全隔离不存在地电位差问题也就没有共模隔离的需求。光模块和PHY之间的电信号只存在于PCB板上长度一般不超过几厘米不需要像网线那样做防雷隔离。可以说光口天生就是“不用变压器联网”的标准答案。这个方案特别适合跨距离传输、强电磁干扰环境或者设备之间需要完全电气隔离的场景。工业现场的PLC、变电站设备、户外摄像头回传走光纤比走网线靠谱得多。3.2 从MDI切换到光纤模式的关键配置要让PHY工作在光口模式需要做三件事。第一件事是配置PHY的媒体模式。现在很多PHY芯片同时支持电口和光口模式需要通过strap引脚或者MDIO寄存器切换。常见做法是配置媒体类型寄存器把接口从双绞线铜口模式切换成光纤模式然后按百兆或千兆速率配置。读PHY数据手册时重点看“Media Interface”“Fiber Mode”这几个关键词。第二件事是配置MAC侧接口。如果PHY通过SGMII接FPGA或CPU里的MAC这里有一个非常关键的坑FPGA里的SGMII IP核与PHY芯片一起使用时IP核必须配置成MAC模式PHY则配置成PHY模式。SGMII链路两侧有明确的主从关系MAC侧负责发起协商或输出时钟PHY侧以从模式响应。如果两边都配成了MAC模式SGMII链路的协商会超时表现为PHY状态寄存器一直报远程故障Link死活起不来。如果两边都配成PHY模式则根本没有主设备去建立链路。这个问题我在FPGA项目里折腾了一个多星期才彻底想通。第三件事是接好差分信号和电源。光模块的差分信号电平一般是LVPECL或者CML规范PHY芯片侧通常已经内置了合适的工作点PCB上需要在接收端放置100欧差分终端电阻。SFP连接器的引脚中TX_DISABLE必须做上拉或由GPIO控制不能悬空LOS信号可以接到CPU的GPIO上做光信号丢失检测MOD_DEF相关引脚通常需要上拉方便读取模块的EEPROM信息。3.3 光模块直连的调试要点用光模块直连做PHY联调时强烈建议先准备一根光纤跳线和一对光模块或者一个光衰减器。上电后先看LOS引脚LOS为高电平说明光模块没有收到有效光信号这时候查光纤插没插好、对端模块有没有发光。用光功率计测一下接收光功率多模模块一般要求在负20dBm以上单模模块灵敏度更高。光功率正常但Link还是起不来就检查PHY的模式寄存器确认是否真的切到了光纤模式。我之前遇到过PHY默认工作在铜口模式光纤模块的光已经正常发了但PHY还在等双绞线上的信号自然没有反应。另外一个高频问题是差分信号被接反。TXD正负接反光模块发不出光或者发出来是反逻辑RXD正负接反则接收端解析不到信号。遇到接反的情况不会有明显物理损坏但Link就是建立不了用示波器测一下信号极性就行。光纤跳线也要注意类型匹配。多模光模块配多模光纤单模光模块配单模光纤混用会导致链路距离严重缩水。市场上便宜的LC-LC多模跳线接在单模模块上短距离可能能用但稳定性很差长期误码率偏高。4. 方案三用SGMII/RGMII做MAC到PHY的短距直连4.1 直连不等于一定要走MDI口第三套方案换个角度很多人口中的“PHY直连”实际用的根本不是MDI口而是PHY芯片和MAC之间的站侧接口例如SGMII、RGMII。这个接口一侧是MAC或交换芯片另一侧是PHY这段信号本来就不需要变压器。这类直连常见于以太网交换芯片的内部互联、FPGA光模块控制器的测试链路、工业级核心板的CPU到PHY芯片连接。做硬件的人都知道RGMII是并行接口信号线多约束复杂SGMII是串行差分接口只有两对线走线简洁适合板级和背板短距离传输。在这个层面讨论“直连”核心不是省掉变压器而是省略掉传统RJ45加网线那一整套物理层输出直接把设备内部的网络数据用高速差分线连接起来。举个实际例子。有一块ARM核心板自带GMAC要跟底板的交换芯片通信。ARM侧没有独立PHY但交换芯片内部有完整PHY并且对外提供SGMII接口。于是我把核心板的GMAC禁用启用ARM内部的SGMII控制器通过背板差分线直接连到底板交换芯片的SGMII口全程没有变压器也没有RJ45座。这个做法做出来体积很小而且因为本身就是交换芯片的站侧接口协议上没有任何奇怪的东西。4.2 SGMII比RGMII更适合长距离直连如果MAC和PHY距离很近用RGMII完全没问题但如果要跨连接器或走背板强烈推荐SGMII。RGMII是3.3V CMOS电平的并行接口千兆时工作时钟125MHz数据线总共十几根每根都要做等长和低噪声设计。跨板连接时十几根信号线加时钟连接器引脚消耗巨大而且CMOS信号边沿容易辐射EMC压力不小。SGMII只有一对发送差分和一对接收差分信号是1.25Gbps的串行流带8B/10B编码实际有效数据率正好1Gbps。两对差分线占用的连接器引脚大大减少走线阻抗也有明确参考达到10到20厘米距离也不难。两者对时钟的依赖也不同。RGMII需要独立的TX_CLK和RX_CLK时钟和数据之间的相位关系非常敏感跨板传输时skew很难控制。SGMII的时钟是嵌入在串行流里的接收端靠CDR恢复时钟天然避免了并行时钟偏斜问题。做个简单对比对比项RGMIISGMII电平规范3.3V CMOS差分串行信号数量约12根2对差分是否需要独立时钟线需要不需要时钟内嵌板级实用距离3到5厘米10到20厘米抗干扰能力一般较好适合跨板连接不适合很适合4.3 FPGA或ARM核心板上的典型接法用FPGA做以太网设备时SGMII是最常见的PHY侧接口。FPGA内部例化一个带MAC功能的SGMII IP核外部接一颗PHY芯片这时候IP核侧要设置为MAC模式PHY侧工作在SGMII从模式。配置完成后MAC和PHY之间不需要额外管理初始化链路识别依赖SGMII的协商或强制速率。如果PHY的MDI侧不接RJ45和变压器而是通过SGMII接口与另一块板卡的MAC相连严格说是绕了一圈MAC到PHY是SGMIIPHY再到对端MAC又是SGMII。这种情况我一般直接让两端MAC的SGMII控制器互联根本不需要外置PHY。只有一种情况下我会保留PHY需要利用PHY的电平转换能力把MAC的SGMII信号转成另一种电平标准或需要PHY内部的loopback功能做系统自检。这里顺便说一下PHY loopback的妙用。PHY芯片通常支持数字回环从MAC发的数据进到PHY后直接回送到MAC接收侧不需要外部网线。这用来验证MAC侧驱动和数据通路非常方便调试时不需要打流仪也能确认SGMII链路有没有通。很多国产百兆PHY芯片在这个环节的表现都不错管理接口兼容通用寄存器布局写寄存器时记得要关闭自动协商和回环位的同时设置好速率。布线方面SGMII差分对的距离可以稍微放宽但仍然需要严格的差分阻抗控制。用FPGA时还要注意SGMII参考时钟的频偏一般要求50ppm以内个别PHY要求更严。这一点上DDR4内存条和直连颗粒的布线逻辑是共通的先保证参考平面完整再做等长控制最后用端接和ODT调节信号完整性。DDR4直连颗粒时单端信号组要做地址线和数据线分组等长PHY直连虽然没有这么复杂但差分组内部等长依然是硬要求。5. 三套方案怎么选对比与注意事项5.1 三种方案核心参数对比做了这么多方案最后用一张表收拢一下选型思路。方案信号介质是否需要变压器最大实用距离典型速率成本影响MDI口AC耦合直连PCB铜箔/背板不需要厘米级百兆为主省变压器和RJ45加少量电容PHY直连光模块光纤不需要可到数公里百兆/千兆光模块成本较高SGMII/RGMII短距直连PCB差分线/背板不需要10到20厘米百兆/千兆省RJ45模块电路最简洁三种方案没有绝对优劣。成本敏感、距离极短的板内互联选方案一要跨设备、跨距离还要隔离和抗干扰选方案二系统内部芯片间高速传递选方案三。很多项目往往是方案二和方案三组合使用例如FPGA通过SGMII接PHYPHY再接SFP光模块整体链路没有变压器性能却非常稳。5.2 实操中必须注意的6个问题第一凡是信号需要出外壳走双绞线的场景不要省变压器。哪怕只是临时调试用也建议用带网络变压器的RJ45集成座。省钱的项目我见过不少因为省变压器导致PHY芯片成片损坏的大有人在。第二MDIO管理接口必须引出来。PHY寄存器配置是直连调试的核心手段尤其是方案一和方案二没有MDIO调试接口碰到问题只能盲猜。所有直连方案的调试速度都取决于你读寄存器快不快。第三先强制模式再开自动协商。直连场景下特别是板内无变压器结构自动协商在部分PHY芯片上表现不稳定。建议先把速率和双工模式强制成目标值确认链路稳定后再决定是否开启自动协商。第四差分走线务必参考完整地平面。参考平面分割是差分信号质量的最大杀手SGMII和MDI直连对这一点都很敏感。过孔数量要控制不要超过两个差分对内等长控制在5毫秒以内。第五静电敏感的直连场景要加TVS管。板级直连没有外部防护如果是可插拔板卡建议在连接器侧加低结电容的TVS阵列例如结电容小于1pF的型号放在PHY另一侧避免影响信号眼图。第六PHY电源纹波不要超过50毫伏。直连相比带变压器方案少了一层磁隔离电源噪声会直接影响信号质量给PHY供电时加磁珠和钽电容或者MLCC组合参考芯片手册的去耦建议不要省料。关于“千兆变压器电路图”的问题也顺便说一下如果你做的是标准千兆电口方案变压器是四对线结构每对差分线中心抽头配Bob Smith端接和共模抑制电路这种设计密度高、指标严更不建议轻易绕开。我个人的体会是变压器不是敌人盲目省料才是。PHY直连的价值在于让信号走更合适的介质而不是为了省几块钱把可靠性搭进去。先把变压器在链路里的作用拆清楚再决定留不留这样的直连方案才能真正落地且稳定运行。