VL805 PCIe转USB3.0扩展卡硬件设计与调试避坑指南
简介:这份VL805数据手册面向硬件工程师、嵌入式开发者及需要为PC扩展USB 3.0接口的PCB设计人员,提供从PCI-E到USB 3.0主控制器的完整芯片级参考。内容围绕4端口USB 3.0 Host Controller展开,涵盖USB 3.0/2.0与xHCI规范符合性、SuperSpeed/High-Speed/Full-Speed/Low-Speed下行端口支持、电池充电与UASP/Turbo驱动兼容性等产品特性,并给出系统概述、引脚图与引脚功能、PCI配置寄存器说明。工程落地部分还包含回流焊制程指南、封装机械规格与封装顶部标记,便于原理图设计、寄存器调试和PCB组装核对。包内为1个PDF文件,约936KB,查阅轻便;已有3614人学习下载,适合作为接口扩展卡设计、驱动适配与硬件排错时的案头资料。
1. 先看引脚再上电:VL805-DataSheet 为什么值得先翻三页
一块四口 USB3.0 扩展卡插上主机只跑 USB2.0,很多人第一反应是驱动玄学;我一般先翻 VL805-DataSheet,把 PCIE转USB3.0 的电源、时钟和 pci-e 链路三件事对齐。VL805 是 4 端口 USB3.0 主控制器,手册把 5Gbps SuperSpeed、480Mbps High-Speed 到 1.5Mbps Low-Speed 的端口能力、xHCI 寄存器、QFN68 封装和回流焊参数放在同一份文档里。它适合做 USB3.0扩展卡、主板板载、Express Card、嵌入式底板和 docking station 的硬件工程师,也适合需要判断一张卡值不值得修、能不能改固件的驱动/系统调试人员。先看引脚和配置空间,再谈驱动,能少走很多弯路。
2. 把手册拆成设计输入:VL805 的 PCIe 转 USB3.0 选型边界
选型阶段最容易犯的错,是把 VL805 当成一个简单的四口 USB Hub。它不是 Hub,而是 PCIe 转 USB3.0 的主控制器,上游是 x1 PCIe 2.0,下游才是四组 USB3.0/2.0 端口。手册第 1 节到第 4 节给的是产品特性、系统概述、引脚图和引脚功能;第 5 节给 PCI 配置寄存器;第 6 到 8 节给回流焊、封装机械和顶部标记。把这几块拆成设计输入,后面画原理图才不会只抄参考图。
2.1 四端口与 31 设备:先确认 root hub 口径
手册第 1 节写得很清楚:VL805 支持 4 个下游端口,SuperSpeed、High-Speed、Full-Speed、Low-Speed 都能走,传输类型覆盖 Control、Bulk、Stream、Interrupt、Isochronous。第 2 节系统概述里又出现一句“root hub consists of two downstream facing ports, allowing simultaneous operation of up to 31 peripheral devices”。读到这里不要直接抄成“两个口”,因为产品特性、引脚表和第 8 节封装标记都按四组端口展开,实际板子上也是四组 SS 差分对加四组 USB2.0 D+/D-。
我一般这样处理:以产品特性和引脚表为准,把第 2 节那句话当成文本口径冲突,投板前再用原厂最新引脚图核一遍。31 个外设是 xHCI 拓扑层面的设备上限,不等于四个口可以同时跑满 5Gbps。设计任务书里要写清楚“四口都可用”,但不要写“四口同时满速”,否则后面测吞吐一定翻车。
| 资源 | 手册依据 | 设计含义 |
|---|---|---|
| 下游端口数 | 产品特性写 4 个 downstream ports | 原理图要放 4 组 USB3.0 TX/RX 和 4 组 USB2.0 D+/D- |
| USB3.0 速率 | SuperSpeed 5Gbps | SS 差分对按 5Gbps 走,阻抗和长度匹配不能按 USB2.0 糊弄 |
| USB2.0 速率 | High-Speed 480Mbps、Full-Speed 12Mbps、Low-Speed 1.5Mbps | 老设备兼容要靠 D+/D- 和过流/电源使能一起做 |
| 设备上限 | 系统概述写 up to 31 peripheral devices | 这是拓扑上限,不是四口同时满带宽的承诺 |
| 传输类型 | Control、Bulk、Stream、Interrupt、Isochronous | 存储、摄像头、音频、调试器都要按各自传输类型留余量 |
这张表不是让你背参数,而是让你在画原理图前把“端口数、速率、设备上限、传输类型”四件事分开。很多四口卡只做了两组 SS 对,剩下两口当 USB2.0 用,插上 SSD 才发现只有一组能跑 5Gbps;这种问题在选型阶段就能避免。
2.2 PCIe x1 2.0 与 5Gbps USB3.0 的带宽账
VL805 上游是 x1 PCI Express 2.0,兼容 PCIe 1.0;下游是 4 个 USB3.0 端口。PCIe 2.0 x1 的原始速率是 5GT/s,8b/10b 编码后有效带宽大约 500MB/s;USB3.0 单口也是 5Gbps,8b/10b 后同样在 500MB/s 量级。也就是说,四个 SS 口共享一条 x1 上行链路,单口跑一块 SATA SSD 能接近上限,四口同时跑 NVMe 硬盘盒就一定抢带宽。
| 链路 | 原始速率 | 编码/有效带宽量级 | 备注 |
|---|---|---|---|
| PCIe 2.0 x1 | 5GT/s | 8b/10b,约 500MB/s | 四口共享,别按四口独立带宽算 |
| USB3.0 单口 | 5Gbps | 8b/10b,约 500MB/s | 实际盘速受 UASP/BOT、线材、供电影响 |
| USB2.0 单口 | 480Mbps | 约 40MB/s 量级 | 老设备兼容口,别拿它测 SS 性能 |
常见做法是:做扩展卡时把“单口峰值”和“四口并发”分开标。单口接高速盘,测顺序读写;四口并发接硬盘盒,测总吞吐和掉盘。如果四口并发时总吞吐卡在 400MB/s 左右,不要立刻怀疑芯片坏了,先看 PCIe 链路是不是 x1 2.0、UASP 有没有开、供电有没有掉压。手册给的是芯片能力,板子能不能稳住要看电源和散热。
2.3 电源域与封装:QFN68 8x8 的落板约束
VL805 的电源不是单轨:核心 1.05V、3.3V suspend、USB PHY 1.05V/3.3V、PCIe PHY 3.3V 都要分开看。手册第 4 节引脚表把 VDD、VSUS33、VSUSUSB、VCCA33PEX、VCCA10SSRX12、VCCA33SS12、VCCA10SSRX34、VCCA33SS34 列在不同表项里,文本表里 3、12、54、63 这几个脚又同时出现在 VSUSUSB 和 VCCA10SSRX 下。画封装时不要只抄文本序号,要以引脚图为准,把同名电源域合并,把需要分开的域单独铺铜。
| 电源名 | 引脚 | 电压/作用 | 落板注意 |
|---|---|---|---|
| VDD | 9、29、45、60 | 1.05V core power | 核心电,去耦靠近引脚 |
| VSUS33 | 32、46 | 3.3V suspend power | 休眠保持电,不能和主 3.3V 简单短接 |
| VSUSUSB | 3、12、54、43、63 | 1.05V suspend power | 和 USB PHY 供电有交叠,按引脚图核对 |
| VCCA33PEX | 23 | PCIe PHY 3.3V | PCIe 侧电源,噪声要控制 |
| VCCA10SSRX12 | 54、63 | USB PHY 1.05V | 文本表与 VSUSUSB 有重叠,投板前核对 |
| VCCA33SS12 | 57、66 | USB PHY 3.3V suspend | 和 SS 端口供电相关 |
| VCCA10SSRX34 | 3、12 | USB PHY 1.05V | 同上,别按文本序号硬分 |
| VCCA33SS34 | 6、15 | USB PHY 3.3V suspend | 去耦和地回流一起看 |
封装是 QFN 68 green package,8x8mm。第 7 节给封装机械规格,第 8 节给顶部标记,第 6 节给回流焊曲线指南。QFN 的焊盘、钢网、热焊盘过孔不要只套通用模板,按手册尺寸和原厂推荐做。尤其热焊盘,虚焊时芯片能枚举但高负载发热,现象很像“驱动不稳”,实际是焊接空洞。
3. 原理图落地:电源、时钟、PCIe 与 USB3.0 差分对怎么摆
原理图阶段要把手册第 3、4 节的引脚图和第 5 节的配置寄存器一起看。引脚图决定线怎么连,配置寄存器决定系统起来后怎么认。下面按电源、时钟、差分对、边带信号四块拆,都是可以直接照着核的项。
3.1 电源域分组与去耦:1.05V、3.3V、suspend 电
电源先分三组:主 1.05V、主 3.3V、suspend 电。VDD 是 1.05V 核心电,VSUS33 是 3.3V suspend,VSUSUSB 是 1.05V suspend;PCIe PHY 和 USB PHY 还有各自的 3.3V/1.05V 引脚。主电和 suspend 电不要为了省 LDO 直接短接,休眠唤醒时端口掉电、设备重新枚举,很多就是 suspend 电没保住。
去耦我一般按“每个电源脚一个 0.1uF,电源入口一个 10uF 到 22uF”先摆,具体容值按原厂参考原理图和实测纹波调。1.05V 核心电的纹波要求比 3.3V 更敏感,靠近 VDD 引脚放小电容,地回流要短。USB PHY 的 1.05V 和 3.3V 不要和数字电混在一大片铜皮上,SS 差分对下面尽量完整地平面。
提示:文本引脚表里 3、12、54、63 同时出现在 VSUSUSB 和 VCCA10SSRX 表项,画原理图时以引脚图为准,把同一电源域合并,不要按文本序号拆成两路独立电。
上电顺序也要看。PONRST# 是 power on reset,PEXRST# 是 PCIe reset,两个不要搞混。PEXRST# 拉低时芯片做内部硬件复位;如果 PERST# 来得比电源晚太多,或者 3.3V 还没稳就放 PERST#,PCIe 链路可能训练失败,系统里就只剩 USB2.0。
3.2 25MHz 晶振与 SSREXT 6.04K 电阻
时钟部分手册写得很直接:SSXI 47 是 25M crystal input,SSXO 48 是 25M crystal output;也可以用外部时钟源驱动 SSXI,电压摆幅 1.05V,SSXO 不接。SSREXT 50 要接一个 6.04K、1% 的电阻到地,给 SuperSpeed USB 做 Band Gap 参考。这个电阻不是随便找个 6.2K 就能替,1% 精度和接地质量都要看。
| 引脚 | 名称 | 接法 | 注意 |
|---|---|---|---|
| 47 | SSXI | 25MHz 晶振输入,或外部 1.05V 摆幅时钟 | 外部时钟时 SSXO 不接 |
| 48 | SSXO | 25MHz 晶振输出 | 晶振尽量靠近芯片 |
| 50 | SSREXT | 6.04K 1% 电阻到地 | 不要用普通 5% 电阻替 |
晶振布局我一般按“晶振体靠近 SSXI/SSXO,负载电容地直接回芯片地,晶振下面不走线”处理。SSREXT 的 6.04K 电阻走线要短,地端就近打过孔。这个电阻虚焊或阻值偏了,SS 口可能直接不枚举,或者跑一段时间掉端口,现象很像固件问题,实际是偏置不对。
3.3 PCIe x1 与 USB3.0 差分对的引脚映射
PCIe 侧是 x1:PEXTX0+ 24、PEXTX0- 25,PEXRX0+ 27、PEXRX0- 28,PEXCLK+ 21、PEXCLK- 22。参考时钟是外部 100MHz 差分时钟,手册允许 SSC,范围 +300ppm 到 -2300ppm。PCIe 差分对按 100MHz 参考时钟、x1 2.0 的规则走,AC 耦合电容放近发送端,具体容值按 PCIe 规范。USB3.0 侧四组 SS 对:第 1 组 SSTX1± 52/53、SSRX1± 55/56;第 2 组 SSTX2± 61/62、SSRX2± 64/65;第 3 组 SSTX3± 1/2、SSRX3± 4/5;第 4 组 SSTX4± 10/11、SSRX4± 13/14。
| 接口 | 差分对 | 引脚 | 备注 |
|---|---|---|---|
| PCIe TX | PEXTX0+ / PEXTX0- | 24 / 25 | 靠近连接器放 AC 耦合 |
| PCIe RX | PEXRX0+ / PEXRX0- | 27 / 28 | 接收对,别和 TX 对调 |
| PCIe CLK | PEXCLK+ / PEXCLK- | 21 / 22 | 100MHz 差分参考时钟 |
| USB3.0 第 1 组 | SSTX1± / SSRX1± | 52/53、55/56 | SS 对按 5Gbps 走 |
| USB3.0 第 2 组 | SSTX2± / SSRX2± | 61/62、64/65 | 同上 |
| USB3.0 第 3 组 | SSTX3± / SSRX3± | 1/2、4/5 | 同上 |
| USB3.0 第 4 组 | SSTX4± / SSRX4± | 10/11、13/14 | 13 脚在文本表有冲突,见第 5 章 |
注意:文本引脚表里 13 脚同时出现 GND 和 SSRX4+ 两个表项,画封装前必须拿引脚图或原厂封装文件核对,不要直接按文本表焊。
差分对交换 P/N 有没有关系,要看芯片是否支持极性反转;手册没有明说的地方不要赌。SS 对走线按 90 欧姆差分阻抗,PCIe 按 85 欧姆或按你板层叠要求,长度匹配优先于“走短”。四组 SS 对之间留地孔隔离,别为了省空间把 TX/RX 对并排贴在一起。
3.4 下行端口电源使能、过流与 LED 边带信号
VL805 给了每个下行端口的电源使能和过流检测:USBHPE1# 44、USBHPE2# 42、USBHPE3# 40、USBHPE4# 38,都是 open drain 输出;USBHOC1# 43、USBHOC2# 41、USBHOC3# 39、USBHOC4# 37,是过流输入。做四口卡时,每个口最好单独放限流开关,过流信号回到对应 HOC#,否则一个口短路把整张卡拉死,排查时很痛苦。
| 信号 | 引脚 | 类型 | 用法 |
|---|---|---|---|
| USBHPE1# | 44 | OD | DP1 电源使能 |
| USBHPE2# | 42 | OD | DP2 电源使能 |
| USBHPE3# | 40 | OD | DP3 电源使能 |
| USBHPE4# | 38 | OD | DP4 电源使能 |
| USBHOC1# | 43 | I | DP1 过流指示 |
| USBHOC2# | 41 | I | DP2 过流指示 |
| USBHOC3# | 39 | I | DP3 过流指示 |
| USBHOC4# | 37 | I | DP4 过流指示 |
SMI# 18 是系统管理中断,如果 BIOS 要支持 USB 功能,就接到平台芯片组;不接的话用 10K 上拉到 3.3V。PEXWAKE# 20 是链路唤醒,PEXCREQ# 30 是参考时钟请求,PEXRST# 19 是 PCIe 复位,PONRST# 31 是上电复位。这些边带信号不是“可接可不接”的装饰,休眠唤醒、BIOS 启动、系统管理都靠它们。
4. 配置寄存器与固件:xHCI、BIOS、UAS/Turbo 驱动的打开顺序
系统认不认这张卡,先看 PCI 配置空间,再看 xHCI 和驱动。手册第 5 节给了 Header 寄存器(00-3Fh)和 XHCI 专属寄存器(40-FFh)。调试时先读寄存器,再换驱动,顺序反了容易把硬件问题当驱动问题。
4.1 Header 区关键寄存器:VID/DID、Command、BAR
Header 区最该先看的是 00h 的 Vendor ID 默认 1106h、02h 的 Device ID 默认 3483h、04h 的 PCI Command 默认 0000h、06h 的 PCI Status 默认 0010h、09h 的 Class Code 默认 0C0330h,以及 10h 的 XHCI MMIO Low Base Address 默认 00000004h。BAR 的 bit 2:1 读 10b,表示 64 位地址;bit 0 保留。Command 里 Memory Space bit 1、Bus Master bit 2 要由系统打开,不然 MMIO 和 DMA 都不工作。
| 偏移 | 寄存器 | 默认值 | 调试看点 |
|---|---|---|---|
| 00h | Vendor ID | 1106h | 先确认卡被系统看到 |
| 02h | Device ID | 3483h | 和 Vendor ID 一起定位设备 |
| 04h | PCI Command | 0000h | bit1 Memory Space、bit2 Bus Master |
| 06h | PCI Status | 0010h | 看异常状态位 |
| 09h | Class Code | 0C0330h | USB3.0 xHCI 控制器 |
| 10h | XHCI MMIO Low BAR | 00000004h | bit2:1 读 10b,64 位地址 |
| 14h | XHCI MMIO High BAR | 00000000h | 高 32 位地址 |
| 34h | Capability Pointer | 80h | 能力链表起点 |
# 先找到 1106:3483 的 BDF lspci -nn | grep -i '1106:3483' # 看 PCIe 链路速率和宽度 lspci -vv -s 01:00.0 | sed -n '/LnkCap/,/LnkSta/p' # 读 VID、DID、Command、BAR0 低 32 位 setpci -s 01:00.0 0.w setpci -s 01:00.0 2.w setpci -s 01:00.0 4.w setpci -s 01:00.0 10.l01:00.0换成实际 BDF;0.w读 0x00 的 16 位 Vendor ID,2.w读 0x02 的 Device ID,4.w读 Command,10.l读 BAR0 低 32 位。Command 读出来是 0000h 不一定是坏,系统没启用内存空间时也会这样;要看驱动有没有把 bit1/bit2 打开。LnkSta 如果显示 2.5GT/s 或宽度不到 x1,先查 100MHz 参考时钟、PERST# 和电源,不要先换驱动。
4.2 XHCI 专属寄存器与固件版本读取
40-FFh 里比较有用的是 48h 的 XHCI CRCR Mirror Low、50h 的 XHCI MCU Firmware Version、5Ch 的 Subsystem Vendor ID for SW、5Eh 的 Subsystem ID for SW、60h 的 SBRN 默认 30h、61h 的 FLADJ 默认 20h。FW_VERSION 读出来是 0 不代表没固件,可能是映射或读取方式不对;先确认 BAR 已启用,再用调试工具读。
| 偏移 | 寄存器 | 默认值 | 用途 |
|---|---|---|---|
| 48h | XHCI CRCR Mirror Low | 00000000h | 命令环镜像,调试 xHCI 时看 |
| 50h | XHCI MCU Firmware Version | 00000000h | 固件版本 |
| 5Ch | Subsystem Vendor ID for SW | 1106h | 软件可改子系统 ID |
| 5Eh | Subsystem ID for SW | 3483h | 软件可改子系统 ID |
| 60h | SBRN | 30h | 串行总线规范版本,30h 对应 3.0 |
| 61h | FLADJ | 20h | 微帧长度调整,bit5:0 默认 20h |
FLADJ 不要随手改。手册写每个十进制值变化对应 16 个 high-speed bit times,SOF 微帧长度跟着变。USB2.0 微帧边界调错,老设备可能枚举不稳。要改先确认主机控制器和 USB2.0 设备兼容性,再用示波器看 SOF。
4.3 BIOS 集成固件与 DOS/Windows 升级工具的边界
手册写固件升级支持 DOS 和 Windows XP、Vista、7、8 下的软件工具;板载设计还可以把固件集成进系统 BIOS。扩展卡和板载是两条路:扩展卡一般靠卡上的 SPI Flash,升级时如果 PCIe 链路不稳,刷到一半掉电就可能变砖;板载设计把固件放进 BIOS,升级跟着 BIOS 走,但 BIOS 版本和固件版本要一起管。
我的习惯是:先读 FW_VERSION 记录当前版本,再确认升级工具认的是哪个总线地址,最后才刷。刷之前把卡插在直连 CPU 的 PCIe 插槽,别挂在转接卡或延长线上;刷的时候不要休眠、不要热插拔。SPI Flash 引脚是 SPICS# 34、SPISCLK 35、SPISI 36、SPISO 33,量波形时先看 CS# 和 CLK 有没有出来,再谈数据。
4.4 驱动栈选择:BOT、UASP 与 Win8 inbox 的差异
手册写软件支持 BOT 模式和 UASP 模式;Windows 7、Vista、XP 有 in-house UAS/Turbo 驱动,Windows 8 兼容 inbox 驱动。BOT 是 Bulk Only Transfer,兼容性好,老盘和老系统稳;UASP 是 USB Attached SCSI Protocol,队列深,SSD 上顺序和随机性能更好,但驱动、固件、盘盒任何一环不配合都可能掉速或掉盘。
| 驱动栈 | 适用场景 | 优点 | 注意 |
|---|---|---|---|
| BOT | 老系统、老 U 盘、启动盘 | 兼容性好 | 性能一般,队列浅 |
| UASP | Win7/Vista/XP 加 in-house UAS/Turbo 驱动 | 队列深,SSD 性能好 | 盘盒固件要支持 |
| Win8 inbox | Windows 8 自带 xHCI 驱动 | 免装驱动 | 仍要看固件和 BIOS 设置 |
测性能时先跑 BOT 做基线,再切 UASP 对比。如果 UASP 下掉盘,换 BOT 能稳,先查盘盒固件和线材,不要一口咬定 VL805 不行。四口并发测试更要分开:单口 UASP 跑顺序读写,四口 BOT 跑同时拷贝,记录掉盘和降速,别把带宽瓶颈当成驱动 bug。
5. 避坑与排查:VL805 扩展卡最容易翻车的五处
这张卡的问题大多不是“芯片坏了”,而是电源、时钟、复位、边带信号和焊接五类。下面五条按“现象→原因→解决”写,都是我在四口卡和板载设计里反复遇到的。
5.1 现象:系统只认 USB2.0,SS 口不亮
现象:设备管理器里能看到 xHCI 控制器,但插 SS 盘只枚举成 USB2.0,或者四口中只有 USB2.0 那组能用。
原因:PCIe 链路没训练到 2.0,或者 SS 差分对 TX/RX 接反、参考时钟没到、PERST# 时序不对。手册的 PCIe 参考时钟是 100MHz 差分,SSC 范围 +300ppm 到 -2300ppm;PEXRST# 拉低会触发内部硬件复位。时钟或复位不对,链路可能降到 2.5GT/s 甚至不枚举。
解决:先用lspci -vv看 LnkSta 的速率和宽度;再量 PEXCLK± 有没有 100MHz、PEXRST# 释放时序、3.3V/1.05V 是否先稳。SS 对按 TX 对 TX、RX 对 RX 核,别把 P/N 当“随便换”。如果链路是 x1 2.0 但 SS 口仍不亮,查 SSREXT 6.04K 电阻和 SS 对过孔/连接器。
5.2 现象:四口轮流失效或高负载掉盘
现象:单口接盘正常,四口同时拷数据时某个口掉盘,或者跑一段时间后端口重新枚举。
原因:四口共享 x1 PCIe 2.0 上行带宽,加上每口 5V 供电和限流开关余量不足。手册写四口支持 SS/HS/FS/LS,但没承诺四口同时满速;如果每口只给 500mA 级供电,再接机械硬盘或大功率 SSD 盒,掉压就会掉盘。过流信号 USBHOC# 没接或接错,也会让系统不知道端口已经过流。
解决:先算总功耗,每口单独限流开关,5V 入口给足铜皮和 bulk 电容;USBHOC# 按口接到对应引脚。测试时用四块盘同时跑,记录总吞吐和 5V 跌落,别只看单口测速。如果总吞吐卡在 400MB/s 左右,先认 PCIe x1 2.0 的带宽账,再谈优化。
5.3 现象:BIOS 里看不到 xHCI 或启动盘不识别
现象:进 BIOS 找不到 xHCI 控制器,或者接启动 U 盘时有时认、有时不认。
原因:SMI# 没接或没上拉,BIOS 的 xHCI hand-off 没开,或者板载设计没把固件集成进 BIOS。手册写 SMI# 要接平台芯片组才能支持 BIOS 下的 USB 功能;不接的话要用 10K 上拉到 3.3V。扩展卡没有 BIOS 集成,启动阶段可能要靠 Option ROM 或主板 BIOS 自带 xHCI 驱动。
解决:先查 SMI# 18 脚的上拉/连接,再进 BIOS 开 xHCI hand-off、Legacy USB 和 USB 启动。启动盘优先用 BOT 模式做兼容测试,UASP 启动要看主板 BIOS 支持。板载设计把固件合进
本文还有配套的精品资源,点击获取