1. 项目缘起与整体设计思路
1.1 为什么选择RTL8367RB-VB-CG这颗芯片
做网络硬件的朋友大概都有个共识:千兆交换机方案里,Realtek的RTL8367系列是绕不开的一档。我这次选的是RTL8367RB-VB-CG,QFP128封装,5口千兆非管理型交换芯片,内置RISC CPU,支持VLAN、QoS、端口镜像这些基础管理功能。选它的理由很直接:一是集成度高,5个千兆PHY全内置,外围只需要一颗25MHz晶振、一颗SPI Flash(可选)、几个去耦电容和网络变压器就能跑起来;二是资料相对好找,datasheet和参考设计在圈子里流传比较广;三是价格合适,小批量拿货单颗在十几到二十几块人民币之间,做几台自用或者小批量产品都划算。
对比过几款同类芯片:MT7530B也是5口千兆,但封装是BGA,手工焊接难度大;RTL8367S是8口版本,对5口需求来说浪费;IP175G只有百兆。所以RTL8367RB-VB-CG在5口千兆这个定位上,QFP封装对个人和小团队来说是最友好的选择。
1.2 立创EDA作为设计工具的实际考量
工具选型上我纠结过一阵。Altium Designer我用了很多年,但正版授权费用对小项目来说不现实;KiCad开源免费,但元件库和国内供应链的对接不如立创EDA顺畅。最终选立创EDA专业版,核心原因是:立创商城的海量元件库可以直接调用,原理图里放的符号和PCB封装跟实际能买到的物料一一对应,BOM导出后可以直接在嘉立创下单,省去了自己建库、核对封装的环节。
注意:立创EDA专业版和标准版差异很大,专业版支持真正的层次原理图、差分对布线、等长调节,做千兆交换机这种带高速信号的设计必须用专业版,标准版功能不够用。
1.3 整体硬件架构拆解
整个板子的架构可以分成四块:电源部分、交换核心部分、网络接口部分、配置与调试部分。
电源部分输入是DC 5V(圆孔或Type-C都行),经过一颗LDO或者DC-DC降到3.3V给RTL8367RB和晶振供电,再降到1.1V给芯片内核供电。RTL8367RB-VB-CG需要三路电源:3.3V(模拟和IO)、1.1V(内核)、2.5V或3.3V(PLL,具体看设计)。我这次用的是3.3V+1.1V两路方案,PLL内部LDO从3.3V取电。
交换核心就是RTL8367RB-VB-CG加一颗25MHz无源晶振,再加一个SPI Flash(W25Q16或类似型号)用于存放配置。如果不需要管理功能,Flash可以省掉,芯片会从内部默认配置启动。
网络接口部分,5个口全部走RJ45带集成变压器的连接器,比如HanRun HR911105A或者类似型号。每个口的差分对走线需要严格控阻抗。
配置调试部分留了一个4pin的UART排针,用于接串口看启动日志和进命令行配置。
2. 原理图设计核心细节与避坑要点
2.1 电源树设计与去耦电容布局
RTL8367RB-VB-CG的电源引脚分布比较散,QFP128封装四周都有VDD和VSS。3.3V的模拟电源引脚(AVDD33)和数字电源引脚(DVDD33)要分开处理,中间用磁珠或者0欧电阻隔离,避免数字噪声串到模拟部分影响PHY的信号质量。
去耦电容的配置我踩过坑。第一版设计的时候,我在每个电源引脚旁边只放了一颗0.1uF,结果跑千兆的时候有几个口出现丢包。后来用示波器量电源纹波,发现高频噪声比较大。第二版改成:每个电源引脚旁边一颗0.1uF(0402封装,离引脚越近越好),每两个引脚共用一颗1uF,整板再放两颗10uF的钽电容做储能。改完之后丢包问题解决。
实操心得:0.1uF电容的接地回路要尽可能短,最好直接打过孔到地平面,走线长度控制在2mm以内。我见过有人把去耦电容放在芯片背面,通过过孔连接,效果也不错,但过孔要足够多。
1.1V内核电源的电流需求大概在1.5A左右(datasheet标称典型值1.2A,留余量),我选了一颗SY8089同步降压芯片,输入3.3V输出1.1V,外围只需要一颗2.2uH电感和几颗电容。这里注意电感要选饱和电流3A以上的,否则大流量转发时电感饱和会导致电压跌落。
2.2 晶振电路与时钟配置
RTL8367RB-VB-CG需要一颗25MHz无源晶振,负载电容根据晶振规格书来定,一般是12pF到18pF。我用的晶振负载电容是12pF,所以外接电容选了两个22pF(串联公式算下来约11pF,加上PCB寄生电容差不多12pF)。
晶振下面要铺地铜,并且晶振的走线要尽量短,远离差分线和电源开关节点。我在第一版的时候把晶振放在了板子边缘,靠近DC-DC电感,结果启动偶尔失败。后来把晶振移到芯片旁边,远离电感,问题消失。
如果要用外部时钟源,可以把晶振换成有源晶振,输出接XI引脚,XO悬空。但一般没必要,无源晶振成本低且够用。
2.3 网络变压器与RJ45接口设计
5个千兆口全部采用集成变压器的RJ45连接器,型号是HanRun HR911105A。这个连接器内部已经包含了共模扼流圈和隔离变压器,外围只需要在PHY侧加几颗端接电阻和电容。
每个口的差分对(TX+/TX-、RX+/RX-)从芯片出来到RJ45连接器,中间要串两颗49.9欧姆的电阻(精度1%),再并一颗0.1uF电容到地。这个电阻网络的作用是阻抗匹配和共模抑制。我试过用50欧姆的电阻,也能跑,但眼图裕量会小一点,建议还是按datasheet推荐的49.9欧姆来。
RJ45连接器的金属外壳要接到机壳地(如果板子有金属外壳的话),通过一颗1nF/2kV的高压电容和一颗1M欧姆电阻并联到信号地。这个设计是为了泄放静电同时避免地环路。
注意:集成变压器的RJ45连接器分两种:一种变压器在连接器内部,一种只有共模扼流圈。买的时候一定要确认型号,HR911105A是带变压器的,可以直接用。如果买到不带变压器的,需要在PCB上额外放变压器,布局会麻烦很多。
2.4 SPI Flash与配置电路
SPI Flash用的是W25Q16JVSSIQ,2MB容量,SOP-8封装。连接方式很简单:CS、CLK、DI、DO四根线接芯片对应引脚,VCC接3.3V,GND接地。注意WP和HOLD引脚要上拉到3.3V,否则Flash可能进入写保护状态。
如果不需要管理功能,Flash可以省掉,但芯片启动时会检测SPI Flash是否存在,如果没有检测到,会从内部默认配置启动,所有端口自动协商,相当于一个非管理型交换机。我建议还是留上Flash的位置,方便后续调试和功能扩展。
2.5 UART调试接口
UART接口留了4pin排针:VCC、GND、TX、RX。RTL8367RB的UART波特率默认是38400(有些固件是115200),8N1。接串口工具的时候注意TX和RX要交叉连接。
这个接口在调试阶段非常有用,可以看到芯片启动日志、PHY协商状态、端口统计信息。量产的时候可以不焊排针,节省成本。
3. PCB布局布线实战与关键参数计算
3.1 层叠结构与阻抗控制
千兆交换机的PCB建议至少用四层板。我这次用的是四层板,层叠结构如下:
| 层 | 功能 | 厚度 |
|---|---|---|
| Top | 信号层+元件面 | 0.5oz铜厚 |
| Inner1 | 地平面 | 1oz铜厚 |
| Inner2 | 电源平面 | 1oz铜厚 |
| Bottom | 信号层 | 0.5oz铜厚 |
板厚1.6mm,Top到Inner1的介质厚度约0.2mm,用FR-4材料,介电常数约4.3。差分线阻抗要求100欧姆(差分),单端50欧姆。
用立创EDA专业版的阻抗计算器算了一下:差分线宽0.2mm,间距0.2mm,到参考平面距离0.2mm,算出来差分阻抗约102欧姆,接近100欧姆,可以接受。如果想更精确,可以把线宽调到0.19mm,间距0.21mm,阻抗会更接近100欧姆。
实操心得:立创EDA专业版自带阻抗计算工具,在“工具”菜单里能找到。算完之后最好让PCB厂家确认一下他们的叠层参数,因为不同厂家的半固化片厚度和介电常数有差异。嘉立创的JLC04161H-3313叠层是我常用的,参数比较稳定。
3.2 差分对布线规则与星型接地实践
差分对布线是千兆交换机PCB设计的核心。RTL8367RB的每个端口有4对差分线(TX+/TX-、RX+/RX-),5个口一共20对。布线规则如下:
- 差分对内两根线等长,误差控制在5mil以内
- 差分对之间间距至少3倍线宽(0.6mm以上),避免串扰
- 差分线尽量走直线,必须拐弯时用45度角或圆弧,不要用90度
- 差分线不要跨分割地平面,否则阻抗不连续
- 差分线下面要有完整的地平面,不要有开槽
星型接地这个说法在高速PCB设计里其实不太准确,更准确的说法是“单点接地”或“分区接地”。我的做法是:模拟地(PHY部分的AGND)和数字地(内核和IO的DGND)在芯片下方用一块完整的铜皮连接,然后通过多个过孔连接到内层地平面。整板地平面保持完整,不做分割。这样既保证了回流路径短,又避免了地环路。
注意:有些教程说要把模拟地和数字地分开,最后用0欧电阻连接。但在千兆交换机这种高速设计里,分开地平面反而会导致回流路径断裂,影响信号完整性。我的经验是:整板统一地平面,靠布局来隔离模拟和数字部分,而不是靠分割地平面。
3.3 电源平面分割与载流能力核算
内层电源平面我分了两块:3.3V和1.1V。3.3V的电流需求大概2A(芯片+PHY+LED),1.1V大概1.5A。用PCB线宽电流对照表算了一下:
| 铜厚 | 线宽 | 载流能力(温升10度) |
|---|---|---|
| 1oz | 1mm | 约2A |
| 1oz | 2mm | 约3.5A |
| 1oz | 3mm | 约5A |
电源平面直接用整块铜皮,载流能力远远够用。但要注意电源平面的入口处,从DC-DC输出到芯片电源引脚的路径上,不要有细颈。我见过有人电源平面画得很宽,但在某个位置被信号线切断了,导致载流能力骤降。检查的时候用立创EDA的“设计规则检查”功能,看看有没有电源网络走线宽度不足的警告。
3.4 晶振与复位电路布局
晶振要尽量靠近芯片的XI和XO引脚,走线长度控制在10mm以内。晶振下面铺地铜,但不要铺到晶振焊盘上,留出焊接间隙。晶振周围不要走其他信号线,特别是差分线和时钟线。
复位电路很简单:一颗10k欧姆上拉电阻到3.3V,一颗0.1uF电容到地,再加一个复位按键。复位引脚是低电平有效,按键按下时拉低复位。注意复位走线也要短,远离晶振和差分线。
3.5 散热设计与铜皮处理
RTL8367RB-VB-CG的功耗大概在1.5W左右(5口全跑千兆),QFP128封装的热阻约30度/W,算下来结温比环境温度高45度左右。如果环境温度25度,结温约70度,在安全范围内。但为了保险,我在芯片底部铺了一块铜皮,通过多个过孔连接到内层地平面,帮助散热。
铜皮处理上,芯片底部的铜皮要连接到地网络,过孔数量至少9个(3x3阵列),孔径0.3mm。这样热阻可以降低到20度/W左右,结温降到55度左右,更安全。
4. 焊接调试与常见问题排查实录
4.1 首板焊接与上电检查
QFP128封装的焊接对新手来说有点难度,但用对方法也不难。我的流程是:
- 先用洗板水清洁焊盘,涂一层薄薄的助焊膏
- 用镊子把芯片对准焊盘,注意一脚位置
- 用热风枪调至300度,风量中等,从芯片上方均匀加热
- 看到焊锡融化后,用镊子轻轻按压芯片,让引脚充分接触焊盘
- 冷却后用放大镜检查有没有连锡或虚焊
实操心得:热风枪温度不要超过320度,否则容易损坏芯片。风量不要太大,否则会把芯片吹跑。我一般用300度、风量3档(共8档),慢慢加热。
上电前一定要做短路检查:用万用表量3.3V和1.1V对地的电阻,正常应该在几百欧姆以上。如果电阻接近0,说明有短路,要检查焊接。
4.2 启动日志分析与PHY协商排查
上电后接串口,波特率38400,应该能看到启动日志。正常的日志大概长这样:
RTL8367RB Bootloader v1.0 DRAM Init OK SPI Flash Detected: W25Q16 Loading Config... PHY0 Link Up 1000M Full PHY1 Link Down PHY2 Link Up 1000M Full ...如果某个口显示Link Down,先检查RJ45连接器有没有焊好,再检查差分线有没有断线。我遇到过一次PHY2一直Link Down,查了半天发现是RJ45连接器的一个引脚虚焊,补焊后正常。
如果协商速率只有100M,检查差分线阻抗是否匹配,或者换一根网线试试。有时候是网线质量的问题,不是板子的问题。
4.3 常见问题速查表
| 现象 | 可能原因 | 排查方法 | 解决方法 |
|---|---|---|---|
| 上电无反应 | 电源短路或芯片损坏 | 量各路电源对地电阻 | 检查焊接,更换芯片 |
| 串口无输出 | 波特率不对或TX/RX接反 | 换波特率试试,交换TX/RX | 确认波特率38400或115200 |
| 某个口不亮 | RJ45虚焊或差分线断 | 万用表量通断 | 补焊或飞线 |
| 协商只有100M | 差分线阻抗不匹配 | 用TDR测阻抗 | 调整线宽间距 |
| 大流量丢包 | 电源纹波大或散热不足 | 示波器量电源纹波 | 加去耦电容,加散热铜皮 |
| 芯片发热严重 | 散热不足或电源电压偏高 | 量1.1V实际电压 | 加散热过孔,检查DC-DC反馈 |
4.4 实测性能与优化记录
板子调通后我做了简单的性能测试:用两台电脑通过两个千兆口对传文件,用iperf3测吞吐量。实测结果:
- 单口双向吞吐:940Mbps左右(接近千兆线速)
- 5口同时跑流量:总吞吐约4.7Gbps(芯片标称交换容量10Gbps,实际受限于测试环境)
- ping延迟:平均0.3ms,最大1.2ms
这个性能对于家用和小型办公场景完全够用。优化方面,我把晶振的外接电容从22pF换成了18pF,启动稳定性有所提升。另外在DC-DC输出端加了一颗22uF的陶瓷电容,电源纹波从30mV降到了15mV。
4.5 立创EDA使用技巧与导出生产文件
立创EDA专业版有几个功能在做这个项目时特别有用:
- 差分对布线:在原理图里给差分线打上差分对标记,PCB里可以一键差分对布线,自动等长调节
- 设计规则检查:可以自定义线宽、间距、过孔规则,检查有没有违规
- 3D预览:可以看板子的3D效果,检查元件有没有干涉
- BOM导出:一键导出BOM,直接对接嘉立创商城下单
导出生产文件的时候,需要导出Gerber文件和钻孔文件。在“文件”->“导出”->“Gerber”里,选择所有层,格式选RS-274X,钻孔文件选Excellon。导出后打包成zip发给PCB厂家。
注意:立创EDA导出的Gerber文件最好用CAM350或者KiCad的Gerber Viewer检查一遍,确认没有缺层或错位。我遇到过一次导出时漏了阻焊层,板子做出来焊盘上全是绿油,没法焊接。
5. 设计迭代与功能扩展思路
5.1 从非管理型到管理型的升级路径
第一版我做的是非管理型,所有端口自动协商,即插即用。第二版加了SPI Flash和UART,刷了Realtek的SDK固件,支持VLAN和端口镜像。升级过程不算复杂,主要是:
- 焊上SPI Flash和UART排针
- 通过UART连接,用Realtek提供的烧录工具把固件写入Flash
- 重启后进命令行,配置VLAN和端口参数
SDK固件在网上能找到,但版本比较老,编译环境是Linux下的交叉编译工具链。如果不想折腾,也可以只做非管理型,够用就行。
5.2 增加PoE供电的可行性分析
有朋友问能不能加PoE供电。技术上可行,但需要额外的PSE控制器和DC-DC,成本会增加不少。RTL8367RB本身不支持PoE,需要外挂一颗PSE芯片,比如TPS23861或者Si3459。每个口需要一颗PSE控制器和一颗DC-DC,5个口下来物料成本增加大概50到80块。如果只是给AP或者摄像头供电,建议直接买成品PoE交换机,自己做不划算。
5.3 外壳与散热方案
外壳我用的是一块铝合金型材,尺寸120x80x30mm,刚好放下PCB。铝合金外壳兼做散热片,芯片通过导热硅胶垫接触外壳底部,散热效果比裸板好很多。实测满载运行2小时,外壳温度约45度,芯片结温约60度,很安全。
如果不用金属外壳,塑料外壳的话需要在芯片上方开散热孔,或者加一个小风扇。但风扇有噪音,家用场景不太合适。
5.4 成本核算与物料清单
整板物料成本大概如下:
| 物料 | 型号 | 单价(人民币) |
|---|---|---|
| 交换芯片 | RTL8367RB-VB-CG | 18 |
| 晶振 | 25MHz 3225封装 | 0.5 |
| SPI Flash | W25Q16JVSSIQ | 1.5 |
| DC-DC | SY8089 | 0.8 |
| LDO | AMS1117-3.3 | 0.3 |
| RJ45连接器 | HR911105A | 3.5 x 5 = 17.5 |
| 阻容感 | 若干 | 5 |
| PCB | 四层板 10x10cm | 15 |
| 其他 | 排针、按键、LED | 3 |
| 合计 | 约61.6 |
小批量做10台的话,单台成本可以控制在60块以内。相比买成品5口千兆交换机(大概80到120块),自己做的主要价值在于可定制和折腾的乐趣。
5.5 后续可扩展的方向
这个板子后续还可以做几个扩展:一是加一个SFP光口,通过RTL8367RB的RGMII接口外接一颗光模块芯片;二是加一个USB转串口芯片,省去外接串口工具;三是把5口扩展到8口,换RTL8367S芯片,PCB布局需要重新调整但原理类似。
我在实际调试中体会最深的一点是:千兆交换机的硬件设计,核心不在于原理图有多复杂,而在于PCB布局布线的细节。差分线的阻抗控制、电源的去耦、晶振的布局,这些看起来不起眼的地方,往往决定了板子能不能稳定跑千兆。我第一版板子因为去耦电容没放好,调了整整两天才找到问题。第二版把这些细节做到位之后,一次点亮,直接跑满千兆。所以如果你也在做类似的项目,建议在PCB布局上多花点时间,比在原理图上反复检查要划算得多。