做硬件的人迟早要碰以太网。不管是单片机加个W5500做联网,还是FPGA、ARM跑Linux需要网口,RJ45网口都是绕不开的那一环。这篇文章我会用Altium Designer,从原理图到PCB,把RJ45以太网口的布局布线完整走一遍。项目按千兆网(1000BASE-T)的标准来做,同时也讲清楚千兆和百兆在设计上的差异——因为很多项目现在虽然只跑百兆,但方案选型阶段就得把升级余量留好。
内容面向有一定AD基础、想系统了解网口设计的工程师,也适合刚接触PCB设计、想找一份完整参考流程的新手。全文涉及的关键点包括:RJ45接口定义与信号分配、连接器选型、PCB层叠规划、差分对规则设置、网口区域的布局布线思路,以及制板回来后网口不通的排查逻辑。这些内容是我自己做了好几版网口板子之后沉淀下来的,希望能帮你少走弯路。
1. 动手之前:先把千兆网方案和层叠想清楚
1.1 千兆和百兆的本质区别:不是多两根线那么简单
千兆以太网1000BASE-T工作在125MHz,四对双绞线全部参与数据传输,而且每一对线都是全双工——发送和接收同时进行。这和百兆100BASE-TX只用到1、2、3、6这四根线(两对差分线),一对负责发送、一对负责接收,是完全不同的工作机制。
千兆网采用PAM-5编码,信号电平更精细,幅度也更小,对外界噪声和自身串扰比百兆敏感得多。这给PCB设计带来的直接影响有三点:
- 差分对从2对变成4对,布线面积几乎翻倍
- 差分阻抗控制要求更严格,100Ω±10%是底线,实际做的时候尽量往±5%靠
- 对内等长、对间等长的要求远高于百兆,阻抗不连续、等长偏差大都会直接导致误码率上升
所以做千兆网口,布局布线不能用百兆那种“差不多就行”的思路来对付。差分对是网口信号的主角,每一对的参考平面必须完整,线宽间距必须算过,等长必须调过。这些后面都会展开讲。
1.2 连接器和变压器怎么选
RJ45网口方案常见有两种形态:
- 一种是RJ45座子自带变压器,例如HR911105A这类集成磁性元件的一体式座子,体积小、走线短、Layout简单,小板和模块上用得很多。
- 另一种是RJ45裸座加独立网络变压器,例如排针式RJ45加HX1188NL独立变压器。这种方案灵活,变压器和座子各自选型,散热和隔离处理比一体式更好控制,做中高端网口板子时更常见。
选型时看Datasheet重点看三块内容:引脚定义和内部结构图(Pin Map、Internal Diagram)、中心抽头(Center Tap)的推荐接法、是否支持PoE供电。像T568B线序下千兆网四对线分布在1/2、3/6、4/5、7/8上,但不同厂家的RJ45座子内部引脚顺序不一定一致,原理图符号上的信号名和实际PCB封装脚位要反复核对,不要照搬别人的引脚分配。
做独立变压器方案时,PHY → 变压器 → RJ45这个顺序是经典布局,变压器一侧接PHY(原边),另一侧接RJ45(副边),原副边中间是安全隔离区域。中心抽头部分,常见偏置电压是3.3V或2.5V,按照PHY芯片手册的推荐来接,通常串磁珠或RC滤波后接过去。
1.3 层叠规划:能上四层板就别省
做千兆网口,我强烈建议四层板起步。四层板常见的叠法有两种:
- 信号-地-电源-信号:顶层走元件和主要信号,底层走普通信号和少量走线,内层一个完整地平面、一个完整电源平面,这是最通用的叠法。
- 地-信号-信号-地:适合有大量底层走线或需要严格屏蔽的场景,缺点是电源完整性不如第一种好做。
在Altium Designer里打开层叠管理器,快捷键是D K,把每一层的Layer Type设置为Top Layer、GND、POWER、Bottom Layer,然后调整介质厚度和材料参数。这里顺便说一下网上一搜一大把的“PCB层叠厚度”问题——在Layer Stack Manager里调的Prepeg和Core厚度,直接影响差分阻抗计算。介质厚度越薄,达到目标差分阻抗所需的线宽就越细,布线空间越充裕;反过来介质厚,线就要加粗,占用面积变大。
强烈不建议在2层板上做千兆网口。不是说绝对做不成,但2层板没有完整的参考平面,差分阻抗很难控制,EMI辐射也更难压住。做个百兆网口用2层板可以,前提还是要把差分阻抗匹配做好。
2. 原理图端准备:库和连线决定后面顺不顺
2.1 RJ45的库从哪来
原理图符号和PCB封装有三条获取路径:厂家官网直接下载Altium格式库,用Ultra Librarian这类工具转换,或者自己手动建库。
厂家提供的库看起来省事,但导入后必须检查引脚编号是否与Datasheet一致。用转换工具转出来的库更要小心,封装容易丢3D模型或者焊盘尺寸出偏差。最可靠的还是自己建,原理图符号照着Datasheet的引脚定义画,PCB封装用AD内置的IPC Footprint Wizard生成,再根据具体型号的实尺寸微调。
RJ45座子这种连接器,厂家之间尺寸差异很大,不能盲目套用通用封装。我自己建封装时会重点核对四个地方:引脚间距、焊盘孔径、座体外框尺寸、定位柱或固定脚的位置。建完后下载厂商提供的STEP格式3D模型导入AD,把封装和3D模型叠在一起看,这一步能避免绝大多数封装错误导致贴不了板的悲剧。
2.2 原理图连线:网口电路不是光把线连上就行
信号链路是PHY芯片 → 网络变压器 → RJ45。数据段用差分方式连接,这里有个命名规范建议一开始就执行:差分网络统一加_P和_N后缀,例如ETH_TX0_P、ETH_TX0_N。后面在PCB里设置差分对时会非常省事,AD能自动识别成对网络。
电源部分有几个容易忽略的细节:
- PHY的每个电源引脚旁边就近放0.1uF去耦电容,模拟电源和数字电源如果分开供电,注意单点连接
- 变压器中心抽头的偏置电压按PHY芯片手册给定值接,常见是3.3V或2.5V,供电路径上串磁珠或加RC滤波
- LED指示灯电路:RJ45座子上的Link/Act指示灯,驱动端限流电阻按LED压降和驱动电平平算,常见取1k到2k
我自己见过不少初级工程师在原理图阶段就把差分网络命名成ETH1P、ETH1N这种不带下划线的名字,结果到PCB阶段AD无法自动识别成对网络,只能手动一个个加Differential Pair,浪费时间还容易漏。
2.3 编译检查与工程版本管理
在AD里按快捷键C C编译工程,重点看ERC报错:有没有未连接的网络、悬空的电源引脚、输出引脚短路等问题。编译通过后执行Design → Update PCB Document,把网表同步到PCB。
再提一句版本管理。虽然是个人项目,也建议从一开始就用Git管理工程,或者每天另存一个带日期的文件。AD工程里的 .PcbDoc 和 .SchDoc 都是二进制格式,Git合并比较麻烦,但每天提交一次、留好回退点,比出了问题重新画要高效得多。我以前吃过亏,一版板的走线调了三天,覆盖保存后想回退上一步,发现没有备份,只能靠记忆重补。
3. PCB布局实操:位置对了布线才有意义
3.1 板框与网口区域的预留
打开PCB文档后的第一件事不是急着拖元件,而是先把板框画好,把接口位置预留出来。RJ45座子无论直插还是贴片,都要放在板边缘,让网口能露出壳体。如果是做产品,还要配合结构限位确定座子的朝向和出线高度。
建议在Keepout层把网口座子的占用区域框出来,设置成禁止布线区,把座子底下和周边的走线空间全部约束住。隔离带(禁布槽)也在这个阶段画好:变压器下方原边与副边之间的隔离区域,宽度我习惯开8到12mil,这个宽度要在后面布线时一直保持清空。
这里有个大多数教程不会提的细节:隔离带不只是顶层铜皮上画一条线,而要在所有需要隔离的铜箔层同步处理。AD里可以用Edit → Select → All on Layer配合多选完成,先把隔离槽在机械层画好,然后在布线后期铺铜时统一执行Keepout设置。
3.2 摆放顺序:从连接器往芯片推
网口区域的布局逻辑是:RJ45 → 网络变压器 → PHY芯片 → 主控。按信号流向摆放,每级之间的走线距离最短,差分对拥塞最少,也方便后续做等长。
几个关键点:
- RJ45紧贴板边,保证插拔时外壳能受得住力,应力不传导到焊盘
- 变压器放在RJ45和PHY中间,尽量靠近RJ45那一侧,原边副边隔离距离足够
- PHY芯片靠近主控,MDIO/MDC管理信号走线短,减少干扰
- 四对差分线经过的区域,不允许其他高速信号横穿
地平面的处理是网口布局的重头戏。带隔离变压器的网口,原边(PHY侧)和副边(RJ45侧)通常要分割地。做法是在变压器下方区域把地平面切开,形成两个独立地岛,再用一颗0欧电阻或高频电容在特定位置桥接。桥接点位置很关键,一般放在变压器下方靠近PHY侧,两边地岛的电位差通过这个桥接点泄放。
3.3 元器件细节与地的处理
去耦电容永远是最容易被忽略的。PHY的每个电源引脚,0.1uF电容到引脚的距离不要超过50mil,尽量放在芯片同侧且紧贴引脚。变压器中心抽头偏置的滤波电容,放在对应的中心抽头引脚旁边。LED限流电阻靠近PHY驱动端,不要放在RJ45旁边——放驱动端的好处是走线短,LED开关噪声不会辐射太远。
网口变压器底下的挖空处理要单独说。千兆网络变压器本身有隔离作用,但如果变压器正下方铺满铜皮,共模噪声可能通过寄生电容耦合到副边,造成辐射发射超标。我一般会在变压器所在层的正下方画一块禁布区把铜皮掏空。注意不是所有层都掏空,电源层掏空面积太大,会导致内电层跨分割,带来电源完整性问题。经验做法:顶层掏空,地平面和电源层只在副边对应区域掏。
4. PCB布线实操:差分线是网口设计的灵魂
4.1 规则设置:先把100欧姆算明白
打开PCB Rules and Constraints Editor(快捷键D R),需要设置的规则包括线宽(Width)、间距(Clearance)、差分对规则(Differential Pair)和长度约束(Length)。
差分阻抗的计算离不开层叠参数。以我自己常用的四层板叠层为例:
- 顶层:1oz铜,信号层
- 第二层:地平面,与顶层的介质厚度约4~5mil
- 第三层:电源平面
- 底层:信号层
在这个叠层下,表层差分线做5~6mil线宽、8~10mil对内间距,差分阻抗大概落在95~105Ω范围。但注意:这只是经验估算,不同板厂的叠层厚度和板材介电常数有差异,最靠谱的方法还是用Polar Si9000这类工具,把目标100Ω±10%反推线宽和间距。
在AD规则里填差分参数时要注意:Width是单根走线的宽度,Gap是差分对内部两条线之间的间距。填好规则后,差分走线会按照规则里的线宽、间距自动推线。
4.2 差分对布线的具体操作
在PCB中把网络定义成差分对,可以手动操作:菜单Design → Classes,进入Differential Pair Classes,右键添加类,把_P和_N网络分别加进去。如果你在原理图阶段命名规范,这一步基本就是拖拽确认。
交互式差分布线是最快的路径:先选中一对差分网络,按快捷键U D,AD会识别_P/_N后缀自动进入差分布线模式。这时候只需要沿着目标路径点两下,按Shift+空格切换拐角模式,就能快速把一对线布完。
布差分线有几个原则,是经验也是教训:
- 同一对差分线尽量贴近并行走线,不要中途分开
- 差分线正下方必须是完整参考平面,不要跨越平面分割缝隙
- 过孔越少越好,一对线上最多不超过两个过孔
- 远离晶振、时钟线、开关电源功率走线,距离不小于3W(线宽的3倍)
差分不是玄学,是数学。线宽、线距、参考平面距离这三个参数决定阻抗,阻抗决定信号完整性。靠感觉走线的人,往往会在实验室里被千兆link不上的问题折磨到怀疑人生。
4.3 等长处理与蛇形补偿
千兆网四对差分线,PHY芯片手册上通常会给出等长要求。以常见PHY手册的典型值为例:
- 对内等长差:最小做到不超过5mil(约0.127mm)
- 四对差分线之间的总长度差:控制在50mil(约1.27mm)以内
在AD里调等长,先给每一对差分线设好目标长度值,然后用Length Tuning工具做蛇形补偿。蛇形线有三个关键规则:波峰间距不小于线宽的3倍、拐角用圆弧或45度斜角不用90度直角、同一对里两根线的蛇形补偿要成对出现。
实际操作的顺序是:先完成所有差分走线,然后查看每对的长度,记录下来排序。从最短的那对开始调,把蛇形长度加在靠近PHY那一侧,这样对侧差分对的影响最小。调完一对马上锁定锁定长度,再调下一对。
这里有一个我在实际中踩过的坑:为了追求美观,把蛇形补偿全部放在网口座子旁边,结果蛇形区域的耦合太强,千兆link成功率反而下降。后来把蛇形集中到PHY侧、并且同一对线的两根线都做相同的蛇形长度,问题才解决。所以等长补偿的位置同样重要,不是随意塞一段蛇形就算完。
5. 制板与调试:设计完了问题才刚开始
5.1 从AD到生产文件
布局布线完成之后,用OutJob文件统一输出生产文件(快捷键F T F)。Output Job可以一次性输出Gerber(RS-274X格式)、钻孔文件(NC Drill)、元器件坐标文件(Pick and Place)和装配图纸(Assembly Drawing),每一版都不会漏输出。
出Gerber前要检查几项:板框是否包含在输出层、丝印是否完整、铜皮间距是否满足制板工艺(最小线宽线距、最小过孔孔径)、电源层是负片还是正片输出。这些参数在发单前和板厂确认好,能避免来回沟通浪费周期。
5.2 千兆网不通的排查思路
这是高频问题——跑U-Boot时千兆网不通、PHY识别不了、ping不通。结合调试经验,我给一个排查顺序:
- 先看PHY有没有起来:板上指示灯有没有亮,用MDIO/MDC管理接口读PHY寄存器,如果读不到ID,先查复位、时钟和电源
- 查时钟:25MHz晶振是否起振,幅度够不够
- 看信号:用示波器量TX差分对,看差分信号幅度和时基是否正常
- 百兆通千兆不通:八成是四对线没有全部处理到位。检查四对差分是否都布线、等长是否满足、差分阻抗是否在100Ω附近
- link状态不稳定:多半是连接器或变压器虚焊,或者隔离地带分割有问题
用万用表测RJ45连接器和变压器副边之间的导通关系,可以快速判断是选型问题还是焊接问题。链路调不通时,先换一根质量好的网线、换个交换机端口,排除测试环境因素再动板子。
我自己踩过最深的一个坑:原理图里PHY的驱动能力配置引脚没接对,导致发送幅度不足,百兆勉强通、千兆完全不通。这种问题属于原理图层面的缺陷,PCB布线做得再好也救不回来。所以调试时先怀疑原理图,再怀疑PCB,这个顺序别搞反。
5.3 收到板子后先别急着上电
拿到板子先做外观检查:丝印是否清晰、过孔是否堵孔、焊盘尺寸是否正确。有条件的话用万用表量一下电源对地阻抗,确认没有短路再上电。上电后先摸芯片温度,温度异常立刻断电排查。
网口区域的焊点建议用放大镜或者剥线钳夹住座子轻微晃一晃,确认没虚焊。RJ45座子的引脚比较密,手工焊接时容易连锡,量产板回来也要抽样检查。
这里说一个调试网口特别好用的小工具:命令行的mii工具(在U-Boot或Linux下都有),可以直接读PHY寄存器状态,看link是否建立、协商速率是千兆还是百兆。很多情况下一条mii命令就能定位问题在哪一侧,比示波器到处点高效得多。
最后分享几个小习惯
网口设计做多了之后,我最大的体会是:一切问题都能归结到原理、布局、布线三个层面。原理图阶段把PHY手册读透,确认引脚配置、偏置电压、等长要求;布局阶段把信号流向摆顺、把地分割想清楚;布线阶段把计算工具用起来,老老实实算阻抗、调等长。三步做到位,制板回来基本一次点亮。
再补充一个Altium Designer的小技巧:在Preferences里把默认差分线宽和间距预填好,交互式布线时就不用每次手动改规则了。另外AR全局修正可以快速调整走线,Shift+F5切换层显示,这些快捷键在实际布局布线中能明显提升效率。
如果你想在这个网口设计基础上继续扩展,建议下一步做ESD防护,在RJ45座子旁加TVS管;或者做PoE供电,把电源协议芯片纳入布局。每加一层功能,坑就换一批,但核心思路永远一样:先想清楚信号怎么走,再让PCB辅助信号走得舒服。