最近在调一块用RTL8211E做千兆PHY的板卡,从原理图设计到PCB Layout再到贴片调试,整个过程踩了不少坑。RTL8211E应该是目前应用比较广的千兆PHY芯片之一,从千兆路由器、交换机到工业控制板、FPGA开发板,到处都能看到它的身影。这篇就把我从原理图到PCB的完整设计思路、关键参数处理方式、调试中遇到的典型问题都整理出来,给准备入手这颗芯片做硬件设计的朋友做一个参考,尤其是那些准备从百兆PHY切到千兆PHY、或者第一次画以太网电路的工程师,应该能帮你少走不少弯路。
硬件设计这件事,最怕的就是原理图看着没问题,板子回来却不工作,然后拿着示波器满板子乱戳。RTL8211E的硬件设计,核心说白了就是三块:原理图的电源和时钟处理、MAC侧接口的时序关系、PCB上的阻抗控制和差分走线。这三块只要有一个没想清楚,后面调试都会很难受。
1. 先弄清楚这颗PHY的定位:RTL8211E到底是什么
1.1 为什么大家都在用RTL8211E
瑞昱的RTL8211E是一颗10/100/1000M自适应的以太网PHY芯片,常见封装是QFN48。PHY这个词如果不太熟悉的朋友,可以简单理解成“物理层收发器”——它负责把MAC(比如CPU、FPGA、交换芯片)出来的数字信号,变成能在网线上传输的模拟差分信号;反过来把网线上收到的模拟信号,解调成MAC能读的 цифровой数据。也就是说,你在原理图上看到的CPU或FPGA,它本身是出不了一个网口的,中间必须有一颗PHY来做信号转换。
选这颗芯片的理由也很直接:支持千兆速率,这基本是当前高速通信的最低门槛了;接口是标准的RGMII,绝大多数带以太网MAC的处理器都能接;外围器件少,价格也适中,而且这颗料的资料非常容易找到,不像某些冷门PHY芯片,连参考原理图都要找代理要半天。工业通信板卡、消费级路由器、FPGA通信测试板,我见过非常多基于RTL8211E的设计,属于那种“照着手册画不会出大乱子”的芯片。
1.2 开始画原理图之前,先确认这几件事
很多新手拿到RTL8211E的数据手册就开始放符号、拉网络,结果画到一半发现接口类型不对,或者电平不匹配,又把原理图推翻重来。我个人的习惯是,动手之前先把下面几个问题确认清楚。
第一,确认你手上的料是哪一种接口版本。RTL8211E这个系列有几个不同的后缀,有的走RGMII,有的走SGMII,两者引脚和用法差别很大。如果你用的是RTL8211E-VB-CG这样的常见型号,一般是RGMII接口,12根信号线连接MAC;如果是SGMII版本,那就只有一对高速差分串行线。这个区别必须在选型阶段就定下来,否则原理图会完全不一样。
第二,确认MAC侧的电平。RTL8211E的VDDIO引脚决定I/O口的电压,可以是3.3V,也可以是2.5V或1.8V,必须和你的MAC芯片I/O电压对上。比如很多FPGA的Bank电压是1.8V,那RTL8211E的VDDIO就要接1.8V,电平不匹配轻则信号采样失败,重则长期工作后芯片损坏。
第三,确认你的网口是否需要支持千兆。这一点看着像废话,但真的有人踩过坑。千兆以太网用到MDI的4对差分线全部工作,10/100M只用其中2对。如果你画PCB时只布了2对差分线,那板子最多只能协商到百兆,而且这种问题特别隐蔽,因为百兆完全正常,千兆就是起不来。
2. 原理图设计:每个引脚都不是白给的
2.1 电源和去耦:PHY稳定工作的地基
RTL8211E的电源大概分三组:模拟电源AVDD、数字电源DVDD,还有I/O电源VDDIO。常规设计里AVDD和DVDD都是3.3V,但是要注意,模拟电源和数字电源在PCB上要分开走,最好通过磁珠或者0欧电阻在PHY附近汇合,这样能把数字开关噪声挡在模拟区域外面。
我去耦电容的推荐做法,是每个电源引脚旁边放一组0.1uF和0.01uF的并联电容,都紧贴着引脚放置。这个细节看着繁琐,但实测下来对电源纹波的抑制效果差别很大。特别是千兆PHY在工作的时候,瞬时电流变化比百兆PHY剧烈得多,如果去耦电容离引脚太远,电源回路电感变大,高频噪声根本滤不掉。
另外芯片外部一般还需要一颗10uF左右的体电容,放在PHY供电入口处。如果用了LDO给PHY供电,还要留一点余量,因为RTL8211E正常工作电流不算小,LDO压差不够的话一进千兆模式就容易掉电压。我在调试中遇到过一种现象:板子百兆一切正常,一跑千兆吞吐测试就死机重启,后来用示波器抓PHY供电引脚,发现在千兆模式瞬间电源跌落了几百毫伏,换了一颗压差更小的LDO就正常了。所以说,PHY出问题先量电源,这句话一点不夸张。
2.2 25MHz时钟:精度直接影响千兆误码率
RTL8211E需要一个25MHz的参考时钟,可以用无源晶振加匹配电容,也可以用有源晶振直接输入。我个人的建议是优先用无源晶振,外围简单、成本低,只要匹配电容选对,起振很稳定。匹配电容的选择依据是晶振本身的负载电容参数。常见7pF到20pF负载电容的晶振,外部匹配电容一般取18pF到33pF,具体可以按晶振手册推荐值来,这个值也不是越准越好,实测下来稍微偏一点都不至于完全不起振,但会影响频率精度,进而影响千兆数据传输的误码率。
有源晶振的接法更简单,输出信号直接进XI引脚,XO悬空就行。但要注意有源晶振的输出电平,如果是5V的晶振接到3.3V的PHY上,是超压的,容易损坏输入引脚,所以最好选择3.3V供电的版本。
还有一个小细节,很多参考设计会在晶振的串接电阻上做调整。无源晶振一般会在XI或者XO串一颗22欧左右的电阻,用来抑制过冲。但不是什么情况下都必要,我习惯先把预留位画上,调试时看波形再决定是否贴电阻。
2.3 MDI差分对和网络变压器:千兆信号的必经之路
RTL8211E对外有4对MDI差分线,分别叫MDI0±、MDI1±、MDI2±、MDI3±。这4对线不能直接接到RJ45上,中间必须过网络变压器。变压器的核心作用有两个:一个是隔离,把PHY芯片和外部网线之间的直流电位隔开,防止共模干扰和雷击浪涌损坏芯片;另一个是阻抗匹配,把PHY侧和线缆侧的信号阻抗做转换。
选变压器有两种思路。一种是独立的网络变压器(比如HX5008NL、HQGSD50E之类),再接RJ45座子,布局更灵活。另一种是一体化的RJ45,也就是变压器和网口座子合在一起,比如HR911105A就是常见的一体式千兆RJ45。对大多数项目来说,我强烈建议用一体式RJ45,省事、占板面积小,而且厂家已经把变压器和信号线内部连好了,你只需要照着规格书接PHY侧引脚就行,能少犯很多连线错误。
网络变压器的中心抽头接法,很多人第一次画会卡在这里。常见的做法有两种:一种是经过一颗0.1uF电容再接地,形成AC端接,这种属于Bob Smith电路的一种变体;另一种是接电源,通过一颗1k或类似阻值的电阻接到对应的供电电压上。具体用哪种,要以你选的变压器规格书推荐电路为准,不要自行发挥。我曾经见过有人把中心抽头直接短路接地,结果千兆速率完全起不来,因为直流偏置不对,信号波形变形严重。
2.4 RGMII接口和MDIO管理:MAC和PHY之间的对话通道
RTL8211E的RGMII接口包括发送时钟TXC、发送控制TX_CTL、4位发送数据TXD[3:0],以及接收方向对应的RXC、RX_CTL、RXD[3:0]。千兆模式下TXC是125MHz,数据在时钟的上升沿和下降沿都采样,也就是说每个时钟周期传8bit,4根数据线加控制线总共需要维持一个明确的建立时间和保持时间。
RGMII最让人头疼的是发送时钟相对于数据的延迟问题。RGMII标准规定,源同步时钟和数据之间需要错开约2ns,这样接收端才能稳定采样。这个延迟既可以让PHY内部产生,也可以由MAC侧产生,还可以通过PCB走线长度来调整。RTL8211E的很多版本内部已经具备延迟调整功能,你可以通过寄存器或者strap引脚来配置。但是调试的时候,如果发现MAC和PHY之间数据采样有问题,最常见的手段就是在PCB上把TXC和RXC走线设计得比对应数据线长一点,用走线长度来补延迟。这也是为什么不少参考设计里,RGMII的时钟线会画得弯弯曲曲的原因,那是在做长度补偿,不是随手乱画的。
MDIO管理接口就是用来配置PHY和读取状态的,MDC是管理时钟,MDIO是双向数据线。MDIO必须加上拉电阻,一般4.7k到10k都行。PHY的地址是通过PHYAD引脚配置的,这些引脚在复位时被采样,把它们接上拉或下拉电阻,就能决定PHY的地址。如果系统里有多颗PHY,每个地址必须不同。我犯过的一个低级错误是,画原理图的时候把PHYAD引脚全给了网络标号,但忘了接地或者接电源,结果上电后PHY地址不稳定,时有时无。
还有复位电路部分,RTL8211E的复位低电平有效,复位时间要足够长。简单的RC复位电路可以用,但如果MAC引脚能控制复位,更建议用MAC来控制,这样软件可以随时做硬复位。复位引脚要加一个下拉电容,防止上电瞬间因为干扰导致复位不彻底。
3. PCB布局布线:从原理图到实物,这一步决定成败
3.1 布局思路:谁该挨着谁,谁必须远离谁
原理图画得再漂亮,PCB布局布线不行,板子一样废。RTL8211E在PCB上的布局,核心就一句话:PHY靠近变压器,变压器靠近RJ45,三者之间连线尽量短。这样安排的原因在于,MDI差分信号从PHY出来之后,经过变压器再到RJ45,这段路径上如果走线过长或者跨过太多过孔,信号质量会受到很大影响。
有人可能会问,PHY和变压器之间距离到底应该控制多少?我自己的经验是,PHY到变压器之间的距离最好控制在10到15毫米以内,变压器到RJ45也一样。如果空间实在紧张,MDI走线也不建议超过25毫米,再长就要考虑信号完整性问题了。
电源去耦电容、晶振、MDIO上拉电阻这些器件,都应该围绕PHY就近放置。特别是25MHz晶振,离PHY的XI/XO引脚越近越好,最好控制在5毫米以内,晶振下方不要走任何高速信号线。原因很简单,晶振输出的25MHz时钟虽然频率不高,但它是PHY所有时序的基准,一旦被干扰,后面全是乱的。
另外,RTL8211E的QFN封装底部有个大的散热焊盘,这个焊盘一定要接到地平面上去,通过多个过孔把它和底层的地铜皮连接起来,既帮助散热,也能改善接地性能。如果这个焊盘不接地,芯片工作时热量散不出去,长时间跑千兆数据容易不稳。我见过连续跑大流量测试时板卡出现随机丢包的案例,排查到最后发现就是散热焊盘没接好。
3.2 阻抗设计和差分对布线:100欧姆是怎么算出来的
千兆以太网的MDI差分线,特性阻抗要求是100欧姆。这个不是随便布的,需要对PCB的层叠结构、线宽、线距做计算和控制。RTL8211E输出的MDI差分信号频率在千兆模式下很高,如果阻抗不匹配,信号反射会带来误码、CRC错误甚至完全协商不上。
实际计算时,常见4层板的层叠结构是:顶层信号层到第二层参考地之间距离约4mil,板材FR4介电常数一般在4.2到4.6之间,要实现100欧姆差分阻抗,线宽大概在5mil左右,线距在7mil左右。不同板厂的叠层参数不同,具体数值会有差异。所以最靠谱的做法是,把自己设计的层叠参数和阻抗要求发给板厂,让他们帮忙确认或微调线宽线距。千万不要拍脑袋定一个线宽就交给板厂去生产,打样回来测不了阻抗,出了问题哭都来不及。
差分对布线的时候,有几个基本规则要记住:
- 同一对差分线要保持一致的间距,不要一会儿宽一会儿窄。
- 同一对差分线尽量在同一层走,避免打过孔换层。如果必须换层,换层处两侧要加地过孔,保证回流路径连续。
- 差分对和其他信号线或者其它差分对之间,间距至少要保证3倍线宽以上,能到5倍更好,降低串扰。特别是MDI四对差分线之间,间距不够容易互相干扰。
- 差分对内的等长要控制,一般5到10mil以内,因为千兆信号速度快,等长差了容易导致差分信号相位偏移。实际的等长补偿可以用蛇形走线,但蛇形线本身也会带来耦合和延迟,所以尽量少用,而且蛇形线的缝隙不要太小。
还有一个非常关键的点,MDI差分线在PCB上的走线,参考平面必须完整。也就是说,走线下方不能被别的信号层或电源分割线切断,否则回流信号被迫绕路,会造成严重的地弹和辐射问题。如果你发现某一对差分线的正下方经过了一条电源分割线,要么改走线,要么改平面,这个绝对不能妥协。
3.3 层叠设计和过孔处理:让信号有干净的回路
关于RTL8211E的PCB设计,我推荐至少4层板。两层板不是不能用,但要在两层板上实现100欧姆差分阻抗、完整的地平面和良好的EMC特性,难度大很多,而且往往信号质量达不到千兆要求。4层板的推荐叠层是:顶层信号、第二层完整地平面、第三层电源平面、底层信号。
电源平面和地平面之间的耦合越好,电源的阻抗就越低,对整个系统的稳定性都有帮助。第二层作为完整地平面,既能给顶层MDI差分线提供参考回流路径,也能给底层的信号信号提供参考。
过孔的处理上,MDI差分对尽量不要换层是最好的。但如果因为布局实在无法避免,要遵循一个原则:过孔旁边加地过孔。具体来说,一对差分线从顶层换到底层,除了这对信号线本身的过孔之外,最好在这对过孔旁边紧挨着放一到两个地过孔,这个地过孔能帮信号提供最短的回流路径,减少换层带来的阻抗突变。电源平面的分割也要注意,模拟电源和数字电源的分割线不要出现在MDI走线下方,更不能在差分对下方跨分割。
变压器下方的平面处理也很关键。很多成熟的参考设计会把网络变压器正下方的所有层的铜皮挖掉,或者至少挖掉一部分,这是为了防止变压器初级的共模噪声耦合到PCB其他区域。如果你不需要穿越变压器下方走线,把这块区域挖空不铺铜,对EMC性能有明显好处。开始设计之前,建议把参考设计的PCB文件找来仔细看一遍,重点关注变压器下方的处理方式。
4. 调试中的典型问题和排查方法
4.1 MDIO能读到寄存器,但是网口不通
这种情况很多见,说明MDIO管理通道没问题,PHY芯片本身也在工作状态,问题大概率出在RGMII数据通道或者MAC侧配置上。
排查思路分成两步。第一步,用光口或者环回模式测试PHY的物理层。RTL8211E支持在PHY内部把发送数据直接环回到接收路径,绕过网络变压器和网线。如果PHY的环回测试能通过,说明PHY到MAC的RGMII数据通路基本没问题;如果环回测试都失败,那就要重点查RGMII的时序,特别是TXC和TXD之间的延迟关系。第二步,检查MAC侧的寄存器配置,确认MAC是否正确配置了RGMII模式、是否开启了对应的时钟引脚。很多MAC默认工作在GMII模式,如果没有切换到RGMII模式,数据肯定是收不到的。
RGMII延迟是一个值得反复确认的点。RTL8211E的寄存器里通常有TX delay和RX delay的开关,你要确认PHY侧和MAC侧双方对延迟的分工达成一致。如果两边都加了延迟,或者两边都没加,都会出问题。
4.2 百兆正常,千兆CRC错误一大堆
这个问题在搜索结果里都排到热词了,可见困住的人不少。现象就是插上百兆交换机正常,插上千兆交换机或者对端千兆设备时,能协商上千兆,但大量CRC错误,吞吐上不去,偶尔还断流。这个现象背后,往往是千兆特有的问题。千兆模式同时使用4对差分线,而且信号速率比百兆高得多,任何一对差分线有问题,都会导致千兆数据帧大量出错。
排查顺序我建议按信号链路从内到外来。先用万用表量一下4对差异线在PHY和变压器之间的连通性,确认每一对都是通的,而且正负没有接反。有些原理图看着是对的,但PCB封装画错,TXP和TXN在封装里颠倒了,这种问题不量根本发现不了。
然后检查PCB的差分等长。千兆对等长的要求比百兆严格很多,尤其是4对线之间的长度差不能太大。如果布局的时候其他信号占道,导致某一对线绕了很远,对间延迟差太大,就会表现为千兆CRC错误。另外还要确认过孔的数量,我见过最夸张的板子,一条MDI线段打了8个过孔,这信号质量可想而知。
如果PCB布线看起来没什么问题,那就要查晶振的精度和电源纹波了。晶振频率偏离会导致PHY恢复出来的时钟不准确,数据传输时会周期性地出现错误。电源纹波过大会让PHY内部的PLL抖动变大,同样引起误码。测晶振频率最好用频率计或者高精度示波器,不要只看普通示波器上波形有没有起振。
4.3 偶发协商失败、链路掉线
偶发问题最让人头疼,因为不是每次都能复现。我遇到的一种典型情况是,网线一插上系统频繁复位,出现这种情况要分两种情况讨论。
先看复位电路。如果PHY的复位引脚受到干扰,或者复位信号在上电之后还有毛刺,PHY会莫名其妙地重启,链路自然就断了。解决办法是确认复位引脚上有没有一个至少0.1uF的电容,同时确认MAC(控制端)没有在软件里频繁地拉低复位引脚。
其次看供电。PHY在协商千兆瞬间,内部电路会有一个电流突变,如果电源储能不够,或者走线太细,就会导致这个瞬时压降幅度过大,然后把PHY“饿死”重启。处理办法是加强PHY供电入口的体电容,比如加大到47uF甚至100uF,同时确保电源走线宽度足够。
还有一种情况是MDI极性接反导致的偶发异常。虽然RTL8211E支持自动极性翻转和自动交叉(Auto MDI-X),但是如果你用的网络变压器或者RJ45的引脚定义把其中某对线正负颠倒了,自动极性纠正能补救的程度也是有限的,尤其对千兆模式,一对线的极性错误可能导致某一速率档位协商不上。这种问题排查起来很耗时间,最好在设计阶段就把MDI线序再三核对清楚。
5. 避坑指南:我把这些年踩过的坑都写在下面
做RTL8211E硬件设计这几年,我总结下来,大多数板子出问题,无外乎就是下面这几点。
第一,晶振不要省钱买杂牌。25MHz看起来简单,但频率稳定度和相噪对千兆PHY的影响非常大。我试过在量产板上换了便宜的晶振后,报修的板卡明显增多,症状全是千兆速率不稳定。后来换回正规品牌晶振,问题立刻消失。这也是为什么很多大厂参考设计里会标出晶振的品牌型号。
第二,网络变压器建议优先选择带屏蔽的型号。有的便宜变压器省掉了屏蔽层,共模干扰会通过变压器耦合到板子上,EMC测试过不了,千兆传输也不稳定。你可以看变压器的规格书,明确标注内置共模扼流圈和屏蔽的,优先选这种。
第三,PCB打样前一定要和板厂确认阻抗参数。很多人画完板子直接丢到嘉立创下单,也不备注阻抗,板厂默认按常规工艺生产出来的差分线,阻抗很可能就不是100欧姆。正确做法是把层叠参数发过去,并明确要求“差分100欧姆阻抗控制”,一时确认不了就让板厂给你参考线宽线距,再根据反馈改图。这一步预算不了多少时间,但能避免板子回来之后再低效地排查。
第四,无论原理图还是PCB,RTL8211E的数据手册、参考原理图和参考PCB,建议在看懂之后再动手。参考设计也许不是最优解,但它能保证最基本的功能没有问题,你所有的改动都应该建立在理解参考设计为什么要这么画的基础上。
最后再分享一个小技巧:在MDI的四对差分线上,留出串联0欧电阻的位置,比如在PHY和变压器之间。平时用0欧电阻直接连通,遇到信号质量问题和排查困难时,可以把电阻摘掉,方便你断开某一路信号做点位测试或者串联电流探头。这个预留成本几乎为零,调试时却能节约大量时间。
RTL8211E这颗PHY芯片,整体来说是一款非常成熟、耐用的器件,绝大部分问题都是硬件设计细节上疏忽造成的。你只要把电源、时钟、差分阻抗、RGMII时序这么几条关键路径抓稳,板子一次性跑通千兆的概率是非常高的。