“把市面上十几块钱的USB3.0集线器拆开,你看到的方案几乎千篇一律:一颗GL3523主控,几个电源开关,一堆MLCC和小容量钽电容,然后就没了。方案成熟到这种程度,按理说直接买现成的最省事,但我还是决定在立创EDA里把一片1转4的USB3.0高速集线器从原理图到PCB完整画一遍,打样回来再通电实测。这篇博文就是这个项目从立项到落地的全程复盘:为什么选GL3523、供电架构怎么搭、90Ω差分阻抗在嘉立创四层板上怎么算怎么走、成品性能到底掉不掉速,以及我在实测里真实踩到的“只识别USB2.0”和“过流误报”两个坑。想照抄硬件的人可以直接看BOM和连线表;想搞明白每一步取舍的,跟着章节把一块USB3.0 HUB的设计要点过一遍,基本就通了。”
1. 从“市售Hub不够用”到“自己画一片”:这个项目的需求边界
1.1 我实际碰到的痛点
我自己是常年插着多块移动硬盘干活的人,台式机后置USB3.0口就那么几个,键盘鼠标接收器、采集卡、调试器各占一个,剩下能插高速设备的就一两个。买过几个成品集线器之后问题也来了:
- 供电抠门,有些宣称“4口5V2A”,实际上4个口共用一路5V/2A,插满两块移动硬盘就开始掉盘。
- 高速信号走线非常随意,把一块能跑450MB/s的移动固态盘插在集线器上,直接掉到300MB/s上下,个别时候还会突然“同意断开”。
- 部分外壳用塑料却不做屏蔽,放在强干扰源旁边,鼠标接收器都跟着受影响。
DIY的目标很简单:做一块1转4的USB3.0集线器,在自供电模式下每个下行口都能稳定输出,高速SSD插上去不掉速,同时尽量把原理搞明白,而不只是照着某宝方案抄一遍。
1.2 设计目标与验收指标
| 项目 | 目标 |
|---|---|
| 上行接口 | USB3.0 Type-A,兼容USB2.0/1.1 |
| 下行接口 | 4路USB3.0 Type-A |
| 供电方式 | 外部5V适配器优先,支持总线供电降额模式 |
| 单路下行电流 | 自供电模式下最大1A左右 |
| 性能 | 单盘连续读不低于直连主机的95% |
| 保护 | 每个下行口带独立过流保护和ESD防护 |
| PCB | 四层板,差分阻抗按90Ω±10%控制 |
当时心里预期是:只要能做出“插满4块移动硬盘不异常、单盘速度不输直连”,这个项目就算成功。
1.3 为什么不直接抄参考设计
GL3523官方参考设计确实能跑,但参考设计是“功能保证”的下限,不是“可靠性”的上限。市售成品和参考设计之间差的那部分,恰恰是供电余量、ESD防护、PCB叠层和差分线细节。比如我拆过一个小牌子成品,芯片外围看起来和公版几乎一样,但差分线走了直角,主控QFN底部的散热焊盘只打了4个过孔,满载二十分钟后芯片表面烫手,随后开始掉速。这种问题在原理图上根本看不出来,只有自己做板实测对比,才知道每一处细节的价值。
2. GL3523主控选型与供电架构:整个方案的地基
2.1 为什么选了GL3523而不是VL817或RTS5411
GL3523是创惟科技(Genesys Logic)的USB3.0集线器主控,内部集成4端口下行,支持USB3.0 SuperSpeed,同时向下兼容USB2.0和USB1.1。选它的理由很直接:
- USB3.0 Hub主控里,GL3523的公开资料和参考设计最多,遇到问题能搜到的案例也最丰富。
- 外围非常简洁,QFN48封装,5V供电进来之后内部就有3.3V LDO,不需要额外再搭一套复杂的DC-DC。
- 在Linux和Windows下都免驱,枚举稳定,已经经过大量量产产品验证。
VL817是后来的升级方案,USB3.1 Gen1性能更强,功耗也更低;RTS5411也不错。但如果第一次做USB3.0 HUB,我还是建议先用资料老、案例多的方案把流程跑通,之后再升级其他主控也不迟。芯片本身不复杂,真正容易翻车的都是外围细节。
2.2 电源拓扑:外部5V优先,上行VBUS备用
USB3.0规范规定单个USB3.0端口的最大输出电流是900mA,所以4个下行口如果都满载,理论上需要接近3.6A的5V电源。单靠电脑前置面板或主板USB口的上行5V供电,根本撑不住这种负载。实际设计必须做“自供电”和“总线供电”两种模式的取舍:
- 外部DC 5V/4A适配器输入为主电源。
- 上行端口的USB 5V VBUS作为备用电源。
- 外部电源接入时,用二极管或P-MOS开关把上行VBUS断开,防止电流反灌到电脑主板。
- 外部电源未接入时,下行口供电降额,只保证一个低功耗设备能工作,避免把电脑端USB口拉死。
我在原理图里用的是两颗肖特基二极管做“或”逻辑,简单可靠,压降大约0.3V。如果追求低损耗,也可以用理想二极管控制器,比如LTC4415这类芯片,但对集线器应用来说必要性不大。
2.3 关键BOM选型表格
| 模块 | 选型 | 说明 |
|---|---|---|
| 主控 | GL3523 QFN48 | 1转4 USB3.0 Hub |
| 晶振 | 12MHz无源晶振 | 配2颗18pF左右负载电容 |
| 上行座 | USB3.0 Type-A公头/面板母座 | 或通过延长线引出 |
| 下行座 | USB3.0 Type-A母座 | 带铁壳,建议选带固定脚的型号 |
| 电源开关 | AP2141/AP2151一类 | 带过流标志OC输出,每路独立 |
| ESD防护 | USBLC6-2等TVS阵列 | 数据线靠近连接器处放置 |
| 外部电源 | DC 5.5/2.1mm插座或USB-C输入 | 5V/4A适配器 |
| 滤波电容 | 10μF+100nF组合 | 靠近各电源引脚 |
| LED | 0805红色/绿色 | 电源指示和端口指示 |
GL3523的电源开关接口其实很标准,每路下行都有对应的PWR_EN控制脚和OCS过流检测脚。选电源开关时一定要挑带“过流标志输出”引脚的那种,否则GL3523无法感知端口过流,保护功能就形同虚设。
3. 原理图设计:USB3.0 HUB最容易翻车的四个细节
3.1 数据方向别接反:TXP/TXN和RXP/RXN的交叉
USB3.0收发分离,主机端的TX差分对要接设备端/主控端的RX差分对,主控端的TX差分对再接主机端的RX差分对。原理图阶段最容易犯的低级错误,就是把上行连接器到GL3523之间的TXP/RXP整对交叉搞反。
我第一版原理图评审时,肉眼盯了几遍也没发现问题,最后是打样回来电脑只能识别到USB2.0,用示波器量SSTX对才反应过来:GL3523的RX引脚被接到了连接器的TX引脚上,主控根本收不到超高速信号,只能退化到USB2.0的D+/D-去通信。这个问题的坑点在于,USB2.0还能正常工作,所以很多人会误以为板子只是“慢一点”,而不会立刻怀疑是硬件方向错误。
3.2 时钟、复位和上下拉配置引脚
GL3523需要一颗12MHz无源晶振,两个负载电容18pF左右。晶振要尽量靠近主控XIN/XOUT引脚,两个负载电容的地要单独打过孔回主控GND焊盘附近,不要绕远路。
复位脚RESET_N不能悬空,一般用10kΩ电阻上拉到3.3V再接一个小电容到地做RC延时复位。有些型号的习惯是高有效复位,有些是低有效复位,画原理图前必须对着数据手册的引脚表逐一确认,不能想当然。
另外GL3523有不少配置功能的引脚,比如是否从外部EEPROM加载配置等。这些引脚我全部按数据手册推荐值接上拉或下拉,不做“先悬空以后再说”的处理。数字电路的悬浮引脚就是隐患源,轻则不定状态,重则电流倒灌。
3.3 下行端口过流检测和PWR_EN的配合
每个下行端口的5V电源不是直接从主电源引出来就完事,而是先经过一个负载开关,再由开关控制是否输出到USB座。GL3523输出PWR_EN信号控制开关的EN脚,开关的OC脚把过流状态送回GL3523的OCS#引脚。
这里有两个容易踩的问题:
- OC脚是开漏输出,必须外接10kΩ上拉到3.3V,否则过流信号电平不稳定,主控会误判端口过流,导致设备被不断断开重连。
- PWR_EN是低有效还是高有效,不同电源开关芯片定义不同,接反的话上电瞬间端口直接没电,或者一直处于关闭状态。
建议在原理图阶段就把每路开关的EN逻辑极性和GL3523对应引脚画在一起,用标注直接写清楚“低有效”或“高有效”,打样回来就不用来回翻数据手册。
3.4 ESD防护和连接器铁壳接地
USB端口属于经常热插拔的接口,静电放电防护不能省。每个连接器的数据线都放了USBLC6-2这一类TVS阵列,注意USB3.0一共有6根数据线:D+/D-一对,SSTX差分对一对,SSRX差分对一对,所以一个USB3.0口至少需要3片两线TVS阵列,或者直接选用六线一体的TVS。
连接器的金属铁壳接地也比较讲究。像USB集线器这种小板子,通常把铁壳直接接到主地平面,让静电干扰尽快泄放到地回流路径。有些高档设计会把机壳地通过0Ω电阻或1MΩ电阻再到信号地,用来隔离环路。小板子空间紧张,我选择直接接地,实测EMI和静电表现都正常。铁壳的固定脚一定要有足够多的过孔缝合到地平面,否则外壳等于是个天线。
4. 在立创EDA里把PCB做成“不降速”的样子
4.1 为什么直接上四层板
USB3.0的超高速信号对参考平面要求很高,两层板理论上也能做,但差分阻抗很难控,而且信号回流路径容易被电源走线割断。我选择四层板,成本上嘉立创打样并不贵,但稳定性提升非常明显。
叠层方案:
- L1:顶层信号走线,USB3.0差分对和普通低速信号
- L2:完整GND参考平面
- L3:电源平面,5V和3.3V分割
- L4:底层信号,辅助走线
四层板最大的优势不是“多层”,而是给高速信号提供了一个连续完整的回流平面。差分信号的回流电流基本在参考平面里,如果参考平面被切断,回流路径就要绕着过孔走,环路面积变大,辐射和串扰都会变差。
4.2 用嘉立创“阻抗计算神器”把线宽线距算出来
嘉立创的阻抗计算工具确实是干这个用的。打开之后选择对应的叠层型号,比如四层板1.6mm的JLC04161H-3313,填入已知板材参数和目标阻抗90Ω,工具会直接给出表层差分线的推荐线宽和线距。
我实际算下来,表层差分线做微带走线,线宽/线距大约在0.2mm/0.15mm这个区间(具体会随叠层参数浮动)。记住,阻抗不等于“越宽越好”,USB3.0要求的90Ω是对差分信号的整体等效阻抗,线宽和线距要配合起来看。线距太小容易加工偏差,线距太大耦合变弱,也会偏离目标阻抗。
立创EDA专业版里可以设置差分规则:先给信号定义网络类,再在布线规则里把差分对线宽、线距填进去,然后使用差分布线命令拉线。拉线过程中能看到实时的线距提示,基本不会偏。
4.3 走线顺序和长度匹配
PCB布局顺序非常重要,我按照“上行连接器→主控→四个下行连接器”一字排开。这样每条超高速差分线都能走得很短,路径清晰,回流也自然。
几个实际操作原则:
- 超高速差分对优先走表层,尽量不打过孔。打过孔就会引入Stub和参考平面切换的问题,新手控不住。
- SSTX差分对和SSRX差分对之间保持间距,不要贴着长距离并行走,否则TX会串扰到RX。
- 差分对内要做等长。USB3.0的差分对内长度差一般要求控制在5mil以内,立创EDA里可以设置差分对内匹配长度。
- 低速信号、LED灯、过流检测这些线离差分对至少留3倍线宽的间距。
USB3.0差分走线长度限制其实比很多人想象的宽松,但长度越短越稳。我最后把上行到主控的差分线长度压在1.5cm以内,四路下行到连接器的线在2~4cm之间。
4.4 电源铺铜和散热
四层板的L3层做电源平面,5V和3.3V分割铺铜。特别关键的一点是每路下行VBUS在电源开关之后的走线要足够宽:按1A电流走,至少留40~50mil线宽,如果走线很长,建议加宽到60mil以上。如果VBUS走线太细,满载时压降会非常明显,电脑端一检测到电压低于4.5V就会触发欠压掉盘。
GL3523的QFN48底部有一个大散热焊盘,必须把它接到GND并在焊盘上打阵列过孔。我做的是0.3mm过孔,间距1mm左右,网格排列。这个焊盘不只是散热,也承担了一部分接地回流。焊盘不接好,主控满载时温度会直接上一个台阶。
关于星型接地,我多说一句:很多人做PCB时总想用星型接地,但对这种纯数字加电源的集线器板子而言,完整地平面比星型接地更合理。星型接地主要解决模拟电路地回流串扰,USB3.0高速信号需要的是低阻抗、连续、不过孔断开的参考平面,老老实实铺地比什么花活都管用。
5. 打样、焊接与第一次上电检查
5.1 嘉立创下单的参数选择
板子在立创EDA里画完之后,导出Gerber到嘉立创下单。我选的参数是:
- 板材:四层板,1.6mm厚度
- 表面处理:沉金,不要喷锡。插拔频繁的地方沉金更耐磨,也不容易出现喷锡厚度不均导致差分线阻抗波动的问题。
- 阻焊:常规绿色
- 确认叠层选用JLC04161H-3313,这样阻抗计算工具的结果才和实际加工一致
四层板打样周期比两层板稍长,但价格已经很友好。这个项目板子尺寸控制在90mm×50mm左右,贴片回来自己焊也没问题。
5.2 上电前的检查清单
PCB和元件到手之后,千万别急着插电脑,先做基础检查:
- 目检焊接:重点看QFN48有没有连锡,Type-A母座的铁壳固定脚有没有虚焊。
- 万用表二极管档量5V和GND、3.3V和GND,如果有短路尤其要注意电源开关周边。
- 只接外部5V适配器,测量GL3523供电脚电压,确认3.3V LDO输出正常。
- 量晶振两个引脚对地电压,正常会有0V到电源电压之间的偏置电平;有条件用示波器看12MHz波形最直接。
- 测每路PWR_EN和OCS#的静态电平,确认没有因为上拉/下拉错误导致端口一开始就处于关闭或过流状态。
我这次焊接完成后,第一次上电就发现有两路端口完全没电。查了半天,是PWR_EN极性接反了。电源开关的EN脚是低有效,而GL3523的默认输出在高电平,导致开关一直被关断。更换逻辑之后端口才正常,所以这个项目真的应验了一句话:原理图里所有引脚的逻辑极性,都要在画图的时候标清楚。
5.3 枚举检查
板子插上电脑后,Linux下可以直接看dmesg:
[ 1234.567890] usb 3-1: new SuperSpeed USB device number 15 using xhci_hcd [ 1234.601234] usb 3-1: New USB device found, idVendor=05e3 [ 1234.601240] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 1234.601245] usb 3-1: Product: USB3.0 Hub看到new SuperSpeed说明USB3.0链路已经协商成功。如果输出是new high-speed,说明只协商到了USB2.0,你需要回到第3.1节查差分线方向。
Windows下可以用USBTreeView看设备连接速率,如果没有显示“SuperSpeed”而是“High-Speed”,也是同样的排查思路。
6. 性能实测:数据说话,以及被逼出来的两个查错案例
6.1 测试条件和工具
| 项目 | 环境 |
|---|---|
| 主机 | 原生USB3.0控制器,Windows 10 / Ubuntu 22.04双系统 |
| 测试设备 | SATA SSD+USB3.0硬盘盒,NVMe硬盘盒,U盘若干 |
| 供电 | 外部5V/4A适配器 |
| 测速软件 | CrystalDiskMark 8.0.4 |
| 空载电压 | 5.11V |
测试项目包括单盘连续读写、双盘并发、四盘满载,同时记录端口电压波动和主控表面温度。
6.2 实测数据
| 测试场景 | 读取速度 | 写入速度 | 备注 |
|---|---|---|---|
| 移动SSD直连主机 | 456MB/s | 428MB/s | 对照基准 |
| 移动SSD经集线器 | 441MB/s | 412MB/s | 损耗约3% |
| 双盘同时连续读 | 412MB/s(总和) | — | 上行口成瓶颈 |
| 四盘同时连续读 | 446MB/s(总和) | — | 稳定不掉盘 |
| 四盘满载30分钟后主控温度 | — | — | 61℃(环境26℃) |
单盘经过集线器之后,速度损耗控制在3%以内,基本达到项目目标。4个下行口同时高速读写时,最终瓶颈是USB3.0上行口的5Gbps带宽,这是所有USB3.0集线器的物理上限,没有办法通过硬件设计突破。
电压波动方面:空载5.11V,单盘满载5.09V,四盘同时持续读写时降到5.02V,没有出现低于4.8V的危险情况。四盘满载后主控表面61℃,外壳温热但不烫手,长期使用应该没问题。
6.3 查错案例一:某个下行口只能识别USB2.0
实测中发现第4路下行口非常奇怪,无论插什么USB3.0设备,系统都只识别为High-Speed,也就是USB2.0模式,速度一直在30~40MB/s附近。前3路都正常,唯独第4路有问题。
排查链路是这样的:
- 先用USBTreeView确认,第4路确实协商成了High-Speed,排除是软件设置问题。
- 目检第4路连接器,铁壳固定和D+/D-焊接都正常,D+/D-能正常枚举,说明USB2.0通路没问题。
- 万用表蜂鸣档量GL3523的SSRX差分脚到第4路连接器SSTX差分焊盘,通断正常。
- 继续量GL3523的SSTX差分脚到连接器SSRX焊盘,这时发现问题:SSTX+和SSTX-两根线在连接器端被对调了,整对信号极性接反。
USB3.0的差分对内部极性反接,链路训练无法完成,于是只能退回到USB2.0。这是我在立创EDA里从连接器往主控拉线时,不小心参考了另一路的网络顺序导致的。改PCB,把这组差分线交换回来就恢复了。
排查经验是:USB3.0出问题,先看枚举速率,再看差分线方向,最后才怀疑芯片。不要一上来就换主控,大部分问题都出在PCB。
6.4 查错案例二:端口过流误报
另一个问题出现在早期版本原理图上:某个下行口只要一插设备,系统就会提示“集线器端口上的电涌”,Windows直接把端口停用了。
万用表量负载开关的输出,电流还不到300mA,明显是误报。后来翻GL3523数据手册才确认,OCS#脚内部没有上拉,而AP2141的OC脚是开漏输出。我在原理图里没给OC线接外部上拉电阻,导致电平处于不确定态,主控随机判断成过流。
解决方案是在每路OC信号上加10kΩ上拉到3.3V。电平稳定之后,误报完全消失。这里也解释了一个原则:凡是数据手册说“开漏输出”的引脚,外部必须接上拉,这不是可有可无的电阻。
7. 如果再做第二版:我有哪些会改的地方
自己做过一遍之后,再回头看这块板子,还是能挑出不少可以改进的点。
上行接口我会直接改成USB-C,而不是Type-A母座。Type-A在现在的笔记本上已经被USB-C逐渐取代,做成弱线引出式Type-C会更方便,也更耐插拔。如果要做USB-C口,USB3.0的超高速信号方向定义和CC逻辑又要重新核对一遍,不能把原来的Type-A接线直接抄过来,这是我下一版要认真对待的事。
供电入口也可以再优化。现在用的是DC 5.5/2.1mm圆头插座,如果改成USB-C PD输入加一颗PD诱骗芯片,那出门就只需要带一个氮化镓充电器,不需要额外带5V适配器。不过PD协议芯片会带来额外的软件配置问题,复杂度会上升不少,适合做成“进阶版”。
外壳方面,这次我用的是3D打印外壳,内部预留了散热孔,但对EMI屏蔽没有贡献。第二版如果追求更稳的信号完整性,可以考虑带屏蔽的铝合金外壳,同时把连接器铁壳和外壳良好搭接。这样做的好处是长期插拔时的静电损伤概率会更低。
最后说句实在话,自己画HUB这件事,技术难度并不是高到离谱,真正值钱的是你在原理图、PCB、实测这三个阶段建立起来的那套“排查感觉”。以后再碰到USB相关的问题,你会直觉性地先看枚举速率、再看供电电平、再看差分走线,而不是像无头苍蝇一样乱换芯片。这块板子现在还在我桌面上服役,4个口常年插着固态盘盒、鼠标接收器和一个U-Boot烧录器,稳定耐用,这就够了。