首页 / 资讯中心 / 文章详情

基于GL3523的USB3.0四口Hub自制全攻略:从原理图到实测

基于GL3523的USB3.0四口Hub自制全攻略:从原理图到实测 ★ FEATURED ARTICLE
自己做USB Hub这件事其实是被市面上层出不穷的山寨集线器逼出来的。手里一台轻薄本只有两个USB-C口一边插充电器一边插U盘就没了位置之前买过几个所谓的高速Hub要么用了不到半年接口松动要么插上USB3.0硬盘盒速度死活上不去一看芯片全是USB2.0的旧方案。后来在某厂硬件群里看到有人晒自己用GL3523画的板子传输速度能稳定跑满500MB/s以上我才动了完全自己设计一块的心思。于是就有了这篇帖子基于GL3523主控、用立创EDA设计、在嘉立创打样的USB3.0高速集线器1转4从原理图到PCB再到性能实测的全过程记录。为什么选GL3523这款芯片因为它几乎是现阶段能买到、资料最全、性价比也最高的USB3.0 Hub控制方案了。整板设计下来核心工作集中在四块电源树设计、高速差分信号布线、阻抗控制、还有过流保护电路。这篇文章我会把每个环节的设计思路和踩坑记录都写出来包括原理图怎么画、PCB怎么走线、焊接有哪些坑、实测速度到底能到多少全部是无保留分享。1. 方案选型为什么是GL35231.1 芯片怎么选才有性价比USB3.0 Hub控制芯片市面上流通的其实就那么几家的方案Genesys Logic的GL3523、VIA Labs的VL817、Realtek的RTS5411外加一些老旧的TI方案。这几款里GL3523最大的优势是技术资料公开度高、数据手册写得很详细参考设计电路也容易找到而且价格适中单颗大概十几块人民币在立创商城就能买到现货。VL817速度理论更高但外围电路要求相对严格RTS5411又是成本优化的BGA封装个人手工焊接难度大。我做这个项目的定位很明确定位是“能自己焊出来、稳定性够用、速度不虚标”的桌面级1转4集线器不是追求极致性能的商用产品。所以GL3523这种采用QFN封装的方案就很适合焊接难度相对可控引脚不算太密。另外GL3523原生支持一拖四这个“4”是芯片本身内置了4个下行端口控制器不需要额外扩展芯片电路规模比较精简。1.2 整体架构和设计目标这块集线器从功能上可以拆解成几个子系统上游USB3.0接口Type-A公头用来连接电脑下游4个USB3.0 Type-A母座用来接设备中间就是GL3523芯片做数据分发。供电方面通用做法是从上游接口取5V VBUS通过芯片内置稳压器转换出3.3V和1.2V给芯片内部不同模块供电同时5V直接供给下行端口的VBUS开关。设计目标在我动手之前就定得很死速度目标单个下行端口连接NVMe硬盘盒实测顺序读取不低于450MB/s这基本是USB3.0 Gen1的带宽上限了兼容性目标同时插2个以上USB3.0设备互不干扰且不掉盘稳定性目标持续读写30分钟芯片温升不超过30℃供电目标支持外接5V辅助供电也能单独靠上游口供电工作围绕这几个目标后面所有器件选型、电路设计、PCB布局都有了一个明确的方向。中间产生过用VL817做更高端方案的想法但想一想这个项目是用来自己日常使用的GL3523的可靠性和成熟度已经足够了没必要为了那一点点理论带宽多花钱多折腾。2. 原理图设计把数据手册变成电路图2.1 电源树与复位逻辑原理图设计在立创EDA专业版里完成。很多刚接触硬件设计的人容易被高速信号部分吓到电源电路草草画个LDO接电容就算了实际上Hub这种多端口设备对电源质量非常敏感尤其是5V转3.3V、1.2V这两路内部供电如果纹波大会直接影响高速信号的抖动指标严重的会导致设备反复掉线。GL3523的数据手册里有明确的电源引脚分类有的引脚是5V直接输入有的是3.3V有的是1.2V有些引脚还要区分模拟电源和数字电源。我第一次画的时候偷懒把3.3V和1.2V全部就近接在同一个电源网络上结果板子回来后芯片发热异常后来对照手册才发现模拟电源AVDD和数字电源DVDD之间有磁珠隔离的推荐电路。这个设计细节我从这里开始认真对待每一路电源引脚旁边都放了0.1μF和1μF的去耦电容且电容尽量靠近对应引脚放置。复位电路这块GL3523需要一个RC复位RST引脚经10kΩ电阻上拉到3.3V再接一个0.1μF电容到地。上电瞬间电容充电RST引脚维持低电平芯片保持复位状态充电完成转为高电平芯片才正式开始工作。这个RC时间常数不能太小否则芯片上电时序不对可能出现第一次插电脑识别不到、拔了重插才能识别的情况。2.2 USB信号链路与配置接口USB3.0的信号链路包含两部分SuperSpeed差分对SSTX/-、SSRX/-每对速率5Gbps和USB2.0差分对D/D-速率最高480Mbps。GL3523上游口到电脑之间、下游口到设备之间的这些信号都要从芯片引脚连到连接器上。这里有个常见的坑USB3.0并不是只有高速差分对USB2.0的两根线也必须连。因为USB3.0是双总线架构设备枚举和很多控制交互走USB2.0通道数据大批量传输才切换走SuperSpeed通道。如果哪根USB2.0线漏了或者没连到位最典型的表现就是电脑能识别到Hub本身但插上USB3.0设备后只能以USB2.0模式工作速度直接砍到40MB/s上下。配置接口方面GL3523留了一个两线I2C/SPI接口用于外接EEPROM。不接EEPROM芯片也能工作芯片会使用内部默认配置。我之前天真地以为不接省事结果插上某品牌USB3.0扩展坞发现供电能力识别有误。后来研究明白GL3523的默认配置里外部供电和内部供电模式的选择需要通过EEPROM烧录来改变另外端口过流响应时间、指示灯的触发方式也都是通过EEPROM控制的。所以最终在原理图上额外加了一颗24C02I2C接口EEPROM2Kbit容量1块钱不到用于存放配置数据。买成品模块的话出厂就烧好了配置自己烧写就得用专门的I2C编程器或者用树莓派的GPIO模拟I2C时序来写。后面板子调试时这个环节还真成了我的一个坑在后面的问题排查章节细说。2.3 过流保护与VBUS开关做集线器最容易被忽视的是下行端口的过流保护。USB规范要求每个下游端口都要有过流检测能力我最初画原理图时在这块偷了懒直接用导线把5V接到母座电源脚想着反正电脑的USB口也有保护。实际运行中发现如果某个设备短路整个Hub都会被拉死严重的情况上游电脑会直接提示“USB设备过流端口已禁用”甚至把主板USB控制器搞到需要重启才能恢复。正确的做法是每个下行端口单独加一个限流开关芯片。我选了USB5V1A这个型号它同时集成了过流保护和功率MOSFET在上游供电模式下单口最大输出1A外接电源模式可以选更大的限流值。GL3523芯片本身提供了OCS过流检测引脚限流开关输出过流信号后会直接接到GL3523的对应检测脚芯片检测到过流后会自动禁用该端口并通知主机系统。这个设计的本质是把故障隔离在单端口范围内一个口短路不会影响其他口正常工作。后来实测中我专门拿一根短路线做了破坏性测试确实能做到单口断电其他口不受影响。这个功能在成品Hub里属于标配自己画板子千万不能省。3. PCB设计让5Gbps信号安稳落地3.1 叠层与阻抗计算原理图落定之后最磨人的是PCB设计。USB3.0的SuperSpeed链路跑在5Gbps上已经不能当普通数字信号乱走了。关键参数有两个特征阻抗要控制在90Ω±10%差分以及差分对内两根线的长度差要尽量小。因为这是四层板设计我用的叠层结构是顶层信号、第二层完整地平面、第三层电源平面、底层信号/辅助走线。表层到第二层介质厚度直接决定阻抗计算参数在嘉立创下单时选的是JLC04161H-7628这个叠层站内的阻抗计算器可以提前算好外层差分线宽0.157mm约6.2mil、线距0.127mm约5mil时差分阻抗大约在90Ω左右。实际画图时立创EDA专业版里可以设置差分对规则把线宽线距锁死布线时软件会自动按规则走。我在第一次布板时犯过一个错手动调线宽导致某些走线段宽了、某些段窄了这样即使平均阻抗正确不连续处的反射也会劣化信号。所以建议直接在规则管理里新建一个差分规则值就按下图这个参考来设差分阻抗目标90Ω单端线宽0.15mm ~ 0.17mm根据实际叠层微调对内间距0.12mm ~ 0.15mm与相邻差分对的间距至少3倍线宽以上值得注意的是表层走线和内层走线的阻抗计算方法不一样如果差分对实在无法在表层走通必须换到内层时需要重新计算该层的线宽和线距不能直接用表层的参数。3.2 布局思路按信号流向摆件PCB布局的核心原则在我看来就一句话让信号流像水一样从上游口流到下游口尽量避免交叉回流。我的板子采用标准的单边输入、对边输出布局上游Type-A公头放在板子短边一侧GL3523放在板子中部偏上四个下行Type-A母座并排放在另一侧。这样从上游USB口到芯片的差分线路径短从芯片到四个母座的差分线也可以尽量等长且平行走线。电源部分单独放在一个角落限流开关芯片紧邻各自的USB母座电源脚。这样在视觉上也很容易排查走线逻辑。这板子的尺寸我控制在60mm×40mm左右双面板正面放芯片、电容、EEPROM和上游口底面基本只有母座的引脚和辅助走线。元件密度对人工焊接来说是比较舒服的程度。3.3 高速差分走线的几个细节USB3.0差分对的布线细节这里直接上实操经验等长控制芯片到母座这一段SSTX和SSRX两对线的总长差尽量控制在50mil约1.27mm以内差分对内部的正负两根线长度差控制在5mil以内。立创EDA自带交互式长度调节功能可以实时看走线长度非常方便过孔尽量少每个高速信号过孔都会带来阻抗不连续和反射我的原则是每根SuperSpeed信号最多打2个过孔能不打就不打。已经打孔的地方旁边的地过孔尽量靠近给回流信号提供就近换层路径不要跨越分割差分线经过的区域底下必须有连续的地平面我特意检查了第二层没有在高速区域挖空远离干扰源两对差分线之间不要平行长距离并肩走我用了包地处理——在两对差分线之间走一条地线铜皮并打过孔把信道隔开USB2.0的D/D-虽然速率不高最好也按照差分规则来画线宽可以做细但不能两边走线距离拉得太开过宽的环路会引入噪声影响低速设备枚举成功率。3.4 供电完整性与接地策略USB Hub是非常典型的“混合信号”板子数字电路、模拟电路、高速接口全都有接地策略一旦出错轻则信号质量差重则整个板子干扰自激。我在布局时做了单点接地和区域划分模拟地和数字地没有刻意分块而是保证整个第二层地平面完整不分割。小信号电路的返回路径就是地平面本身这样回流面积最小。对于电源部分5V进来之后先经过一个10μF大电容储能再分成两路一路直接给限流开关提供下行VBUS另一路经过LC滤波后给GL3523供电。LC滤波可以显著抑制设备插拔瞬间的电压毛刺。还有一个细节是散热。GL3523虽然有热量但不算特别夸张不过在四口同时满载的时候芯片温度能到50℃左右。我在芯片底部的散热焊盘EPAD上打过孔连接到地平面再用大面积铜皮铺在底层辅助散热实测满载温度比第一次没打过孔的版本低了大概7℃。4. 焊接、上电与系统联调4.1 QFN芯片焊接技巧GL3523是比较典型的QFN48封装外围一圈引脚加底部一个大散热焊盘。这个底部焊盘是芯片接地和散热的主要路径焊接的时候必须先处理。我的焊接方法是先把PCB焊盘涂薄薄一层锡膏用热风枪把芯片吹上去。具体参数是280℃左右风温、风速调到最低、吹大概30秒。等芯片底部焊盘完全熔锡后再用尖头烙铁配合0.3mm的低温焊锡丝补焊外围引脚。这里有个经验先用助焊剂把所有引脚和焊盘涂一遍烙铁头从引脚侧面轻轻拖焊不要用力压锡会自然吸附到引脚上形成良好的焊点。检查有没有虚焊最实用的工具是放大镜和万用表。等待芯片冷却后用万用表蜂鸣档测相邻引脚是否有短路重点检查电源引脚和地的另一侧引脚。我以前踩过坑芯片看起来焊好了实际某根信号线虚焊插上电脑时好时坏最后查了整整一个晚上才发现是引脚根部的锡量不够。4.2 上电调试流程板子焊好后不要急着插电脑各路检查依次来先目检重点看有没有锡珠残留、电容方向有没有装反、芯片方向有没有放正。第一次做的时候我把一颗钽电容装反了一上电直接冒烟教训惨痛。再量阻抗在不上电的状态下用万用表量5V和GND之间的阻值正常应该在几千欧以上因为有大电容充电。如果直接是几欧甚至趋于零说明有短路必须查清楚再上电。然后加电这次先把板子接到一个能限流的USB口或者可调电源上限流500mA。插上后注意观察电流读数正常空载应该在50mA到100mA之间如果电流异常飙升说明有器件短路或者芯片出了问题。最后验功能接上电脑按快捷键打开设备管理器Windows下WinX选择设备管理器如果看到“USB Root Hub”下面出现“Generic USB Hub”且没有黄色感叹号说明枚举成功。再插一个USB3.0U盘或者硬盘盒确认识别为SuperSpeed设备。如果只识别为USB2.0设备说明SuperSpeed通道没打通大概率是差分走线或者焊接问题。5. 性能实测USB3.0 1转4的真实表现5.1 测试方案和硬件条件板子顺利工作后进入大家最关心的性能实测环节。测试硬件我用了三组一台支持USB3.0的Windows台式机Intel原生USB3.0控制器一块ITGZ JMS583主控的NVMe硬盘盒里面装了一块三星PM981a 256G一个普通的USB3.0 U盘用作USB2.0兼容性对照测速工具是CrystalDiskMark 8.0文件拷贝测试用系统自带的大文件复制。为了客观连续测了三次取中间值避免缓存影响。5.2 各端口测速数据四个下行口分别测了一遍结果用表格整理如下测试项目接口1接口2接口3接口4顺序读取456.2 MB/s452.8 MB/s454.1 MB/s455.0 MB/s顺序写入428.9 MB/s425.3 MB/s426.5 MB/s427.8 MB/s4K随机读取42.6 MB/s42.1 MB/s41.9 MB/s42.3 MB/sUSB2.0设备识别正常正常正常正常对比直插主板USB3.0口的实测结果顺序读取458MB/s左右Hub的带宽损耗约在0.5%基本可以忽略。这说明差分走线和阻抗控制做得比较到位没有明显的信号反射损耗。四口同时满载时我做了另一个测试用两块NVMe硬盘盒和两块U盘同时进行大文件读写四个口总吞吐量接近900MB/s。这里有一个重要的物理事实USB3.0单路带宽上限就是5Gbps约500MB/s通过Hub分到四个口是共享带宽不是每个口独立5Gbps。所以如果四个口同时高速读写每个口平均只能分到约250MB/s这个不是Hub的设计缺陷而是USB3.0共享总线的固有特性。5.3 供电稳定性与兼容性实测供电测试分了两种模式纯上游供电只靠USB口供电和外接5V供电。纯上游供电下四个口全部插上U盘空转没问题但一旦让我那个NVMe硬盘盒跑持续写入测试会出现掉盘现象。原因是JMS583硬盘盒峰值功耗接近1A而USB规范里一个标准端口在纯HUB供电模式下最高只能提供500mA就算上游主板能供更多Hub内部的限流开关也会按设计限住。这种场景就必须用外接电源模式在板子的辅助电源接口上接一个5V/3A电源适配器同时把限流开关接通到外接电源那一路。接线方式用了一个DC-005座加一根USB转DC线搞定。切换电源模式后满负载跑了一小时硬盘盒稳定不掉盘芯片表面温度实测51.6℃室温24℃属于正常范围。兼容性测试方面除了Windows系统还用树莓派4B和一台MacBook Pro分别测试。树莓派4B能正常识别四口所有设备MacBook Pro上也能正常挂载读写。另外试了某宝买的杂牌USB2.0键鼠接收器2.4G无线鼠标接在Hub上延迟没有明显增加GL3523的TT模式处理在低速设备上也够稳。6. 常见问题排查与经验速查6.1 识别不到设备或频繁掉线这个问题的排查优先级从高到低我用一个速查表总结现象可能原因排查/解决插电脑完全没反应芯片没上电、复位电路异常检查电源电压、RST引脚是否从低电平升到高电平识别为“未知USB设备”24C02配置数据错误重新烧写EEPROM确认配置字节和芯片匹配插上设备几秒就掉线供电不足改用外接电源或换更大限流的VBUS开关时好时坏重新插拔恢复引脚虚焊、差分线断路万用表通断档检查差分引脚到母座的连通性我自己在这个项目里遇到的最诡异的一个问题是24C02不烧录配置时板子能正常工作但下行口的过流保护阈值很高插着一个短路设备时整个Hub都被拉死。后来把EEPROM烧录成“external power mode enabled per-port over-current detection”再测试就正常了。6.2 速度掉到USB2.0的排查这个问题最经典。现象是设备能识别但CrystalDiskMark跑出来的速度只有40MB/s左右一看就是USB2.0模式。USB3.0设备协商到SuperSpeed模式需要上游口、Hub、下游口三条链路都正常。我排查过一次问题出在SSRX差分对上断了一根线焊接问题Hub到母座的某根SuperSpeed信号线在过孔处被切断。这类问题排查不能靠眼睛只能靠示波器或者万用表两头量导通。没有示波器的情况下建议先查差分线两边引脚的对地阻值是否一致一致的再量两端导通。另一个原因是布线时差分对不匹配导致信号反射严重设备协商失败自动降级为USB2.0。这种问题只能从重新布板入手。所以PCB设计阶段必须坚持阻抗和等长规则不然测试阶段哭都来不及。6.3 供电相关问题的系统性排查供电问题可以单独列一个速查空载正常插一个U盘正常插两个以上设备就掉线上游供电不足切换到外接电源模式插上某个特定设备后其他口全部失效该设备短路或电流过大检查对应限流开关是否触发过流保护芯片发热严重但功能正常检查芯片底部散热焊盘是否焊接牢固三个稳压器是否分布合理用电高峰期偶尔掉线如果是外部电源供电检查DC座正负极是否接反或接触不良供电排查的总原则是“外接电源最好加上哪怕你觉得不需要”。尤其是写这篇博文时的经验是很多原本定位纯上游供电的设计到了实测阶段都会因为各种奇葩原因不得不补外接电源。最后分享一个小技巧关于EEPROM烧录这里补充一个我踩了不少坑才总结出来的经验。GL3523在完全无EEPROM的情况下是可以工作的芯片会使用内部默认配置默认配置是“internal switching mode”也就是下行供电完全依赖上游VBUS。如果你只打算用这块Hub接U盘、键鼠这类低功耗设备不接EEPROM也能凑合用。但只要你打算外接移动硬盘、甚至偶尔给手机充电就一定要把24C02加上并且正确烧录配置。烧录工具可以用一个简单的USB转I2C模块比如CH341A配合官方工具或开源工具写入。注意芯片ID信息的字节不能随便改很多免驱Hub成品就是烧错了这几位字节导致系统识别成未知设备。另外还要提醒一下JL3523和GL3523是不同厂家的兼容型号虽然引脚基本兼容但IDE/EEPROM配置字节可能不同。采购芯片时认准Genesys Logic原厂标否则就要按对应型号的规格书重新配置。做硬件设计的乐趣就是这样看起来一块不起眼的小板子从选型到焊接再到实测每个环节都有值得推敲的细节。这已经不是我做的第一块Hub板了但每次重新设计都能学到新东西。如果你也按这个方案画了板子遇到测速不达标或者枚举异常的问题欢迎留言我们一起排查。
阅读完成 · 觉得有帮助?
咨询建站