news 2026/10/6 1:11:45

PCIe转SATA扩展卡设计指南:从芯片选型到PCB布局

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PCIe转SATA扩展卡设计指南:从芯片选型到PCB布局

1. 项目缘起与方案选型

1.1 为什么要在PCIe与SATA之间做转换

手头有一块老旧的Mini-ITX主板,CPU性能够用,DDR4内存也插满了,唯独SATA接口只有两个。想组一个轻量级NAS,两块4TB的机械盘做存储池,再加一块SSD做缓存,接口数量立刻捉襟见肘。USB转SATA的方案我试过,ASM1153E和JMS578都用过,轻负载下没问题,但一旦多盘并发读写,USB总线的中断开销和协议转换延迟就暴露出来了,SMART信息读取也经常出问题。这时候最稳妥的路子,就是从PCIe通道上想办法。

PCIe转SATA的本质,是在PCIe总线和SATA控制器之间搭一座桥。主机侧看到的是一个标准的PCIe端点设备,设备侧则挂载一到多个SATA通道。操作系统加载对应的AHCI驱动后,这些SATA口就和主板原生口没有区别,热插拔、NCQ、TRIM(针对SSD)都能正常支持。这个方案的核心价值在于:用主板空闲的PCIe通道,换取额外的SATA接口,且性能损耗极小。

适合读这篇内容的人,大致有三类:一是DIY NAS玩家,主板SATA口不够用;二是工控机或软路由用户,需要扩展存储接口但机箱空间有限;三是硬件爱好者,想理解PCIe转SATA桥接芯片的工作原理和电路设计要点。不管你是哪一类,下面的内容都会从芯片选型一路讲到PCB布局,尽量把每个环节的“为什么”说清楚。

1.2 88SE9215与ASM1061的定位差异

市面上常见的PCIe转SATA桥接芯片,主要来自Marvell(现属NXP)和ASMedia两家。88SE9215是Marvell的经典四口方案,ASM1061则是ASMedia的双口方案,后来还有ASM1062、ASM1064等衍生型号。这两颗芯片我都实际做过板子,下面从几个维度做个对比。

对比项88SE9215ASM1061
PCIe接口PCIe 2.0 x2PCIe 2.0 x1
SATA通道数42
最大带宽约1000MB/s(x2)约500MB/s(x1)
封装128-pin LQFP48-pin QFN
供电需求1.0V核心 + 3.3V IO1.0V核心 + 3.3V IO
外部晶振25MHz25MHz
典型功耗约1.5W约0.8W
参考价格较高较低

88SE9215的PCIe 2.0 x2接口意味着理论带宽约10Gbps,四口SATA 3.0共享这个带宽,单口跑满6Gbps时其余口会争抢,但实际机械盘根本跑不满,所以四口同时读写也不会成为瓶颈。ASM1061是x1接口,理论5Gbps,两口SATA共享,接两块SSD做RAID 0时可能会碰到带宽天花板,但接机械盘完全够用。

选型逻辑很直接:需要三个以上SATA口,选88SE9215;只需要两个口且对成本敏感,选ASM1061。另外,88SE9215的LQFP封装焊接难度低于ASM1061的QFN,手焊的话前者更友好,但QFN占板面积小,适合紧凑型设计。

1.3 整体方案框架

一个完整的PCIe转SATA扩展卡,硬件上包含以下几个部分:PCIe金手指接口、桥接芯片、SATA接口、电源电路、晶振电路、配置电路(EEPROM或strap引脚)、以及可选的LED指示灯。信号流向是:主板PCIe插槽 → 金手指 → 桥接芯片PCIe侧 → 芯片内部协议转换 → SATA侧 → SATA接口 → 硬盘。

电源方面,PCIe插槽提供3.3V和12V,但桥接芯片核心需要1.0V,IO需要3.3V,所以需要一个LDO或DC-DC把3.3V降到1.0V。SATA接口的5V和12V通常直接从电源取,不走PCIe插槽,因为PCIe插槽的12V电流有限(x1插槽约5.5W,x4约25W),带多块机械盘启动时电流不够。

注意:如果你打算从PCIe插槽取12V给硬盘供电,务必确认插槽的供电能力。x1插槽通常只有10W左右,一块3.5寸机械盘启动瞬间电流可达2A(12V),两块盘同时启动就可能触发过流保护。稳妥做法是从电源直接引SATA供电线。

2. 核心电路设计细节拆解

2.1 PCIe接口电路与金手指设计

PCIe金手指是整块卡与主板通信的物理通道。以x1为例,金手指有36个引脚(A面18个,B面18个),其中关键信号包括:REFCLK+/-(参考时钟)、PERp0/PERn0(发送差分对)、PETp0/PETn0(接收差分对)、PRSNT1#/PRSNT2#(存在检测)、JTAG引脚(通常悬空或下拉)、3.3V和12V供电、以及SMBus(可选)。

差分对的走线是重点。PCIe 2.0的差分阻抗要求是85Ω±10%,走线必须等长、等距、包地。我一般用四层板,顶层走差分线,第二层完整地平面,第三层电源,底层走低速信号。差分对的线宽和间距根据叠层计算,以常见的1.6mm四层板为例,介质厚度约0.2mm,Er约4.3,线宽0.2mm、间距0.2mm时差分阻抗约85Ω,具体数值需要用阻抗计算工具确认。

REFCLK是100MHz差分时钟,来自主板,走线同样需要差分处理,但速率较低,要求可以放宽。PRSNT1#和PRSNT2#需要在金手指端短接,告诉主板“卡已插入”。JTAG引脚(TCK、TDI、TDO、TMS、TRST#)不用时全部下拉到地,避免浮空。

实操心得:金手指的斜边倒角一定要做,否则插拔时容易刮伤主板插槽。倒角角度一般45度,深度约1mm。另外,金手指镀金厚度建议不低于0.5μm,太薄了插拔几次就磨损露铜。

2.2 桥接芯片外围电路

以88SE9215为例,外围电路包括:25MHz晶振、复位电路、EEPROM(可选)、SATA接口、电源去耦。

晶振电路:25MHz无源晶振,负载电容根据晶振规格书选,通常是12pF到18pF。晶振走线尽量短,远离差分对和电源开关节点。我习惯在晶振下方挖空铜皮,减少寄生电容。

复位电路:芯片有一个RST#引脚,低电平复位。通常用一个10kΩ上拉到3.3V,再并一个0.1μF电容到地,配合一个复位按钮或来自PCIe的复位信号。PCIe的PERST#信号可以直接驱动这个引脚,但注意电平匹配,PERST#是3.3V逻辑。

EEPROM:88SE9215支持通过EEPROM配置PCIe设备ID、SATA端口映射等参数。如果不用EEPROM,芯片会用默认配置。我一般留一个I2C EEPROM的焊盘,调试阶段方便改配置,量产时根据需求决定是否贴片。

SATA接口:每个SATA通道有TX+/-和RX+/-两对差分线,外加地线。SATA 3.0速率6Gbps,差分阻抗100Ω。走线要求比PCIe稍宽松,但也不能马虎。SATA接口的金属外壳要接地,屏蔽层单点接地。

电源去耦:芯片的每个电源引脚都要配0.1μF陶瓷电容,尽量靠近引脚。核心电源1.0V还需要一个大容量电容(10μF到22μF)做储能。IO电源3.3V同样需要去耦。我通常会在芯片周围放一圈0.1μF电容,再加两三个10μF电容。

2.3 电源电路设计:从3.3V到1.0V

桥接芯片的核心电压通常是1.0V或1.2V,具体看型号。88SE9215的核心是1.0V,ASM1061也是1.0V。PCIe插槽提供3.3V,所以需要一个降压电路。

方案一:LDO。优点是简单、无开关噪声、纹波小。缺点是效率低,压差2.3V,如果核心电流500mA,LDO自身功耗1.15W,发热明显。适合电流需求小的场景。

方案二:DC-DC降压。效率高,发热小,但需要电感、电容和反馈电阻,布局要求高,开关噪声可能干扰PCIe和SATA信号。

我一般选DC-DC,因为88SE9215的核心电流在1A左右,LDO发热太大。以TPS5430为例,输入3.3V,输出1.0V,开关频率500kHz。反馈电阻计算:Vout = 0.8V × (1 + R1/R2),要得到1.0V,R1/R2 = 0.25,选R1=2.5kΩ,R2=10kΩ。电感选4.7μH,饱和电流至少2A。输出电容选22μF陶瓷电容加一个100μF钽电容。

注意:DC-DC的开关节点(SW引脚)是主要的噪声源,走线要短而粗,远离晶振和差分对。电感下方不要走信号线,必要时在电感下方铺地并打过孔。

2.4 SATA接口与信号完整性

SATA接口有7个引脚:GND、TX+、TX-、GND、RX-、RX+、GND。差分对之间用地线隔开,减少串扰。SATA 3.0的差分阻抗要求100Ω,走线等长误差控制在5mil以内。

如果SATA接口离芯片较远(超过5cm),建议加共模扼流圈或ESD保护器件。ESD保护选低电容型号,结电容小于1pF,否则会影响信号完整性。我常用的是SRV05-4或类似型号。

SATA接口的5V和12V供电,如果从板子上走,需要足够的线宽。1A电流下,1oz铜厚,线宽至少1mm。更稳妥的做法是SATA电源直接从电源引,板子上只走信号。

2.5 配置引脚与LED指示

88SE9215有几个strap引脚,在上电复位时采样,决定PCIe设备ID、SATA端口使能等。这些引脚通常需要上拉或下拉电阻,具体看数据手册。我一般留0Ω电阻跳线,方便调试。

LED指示:每个SATA通道可以接一个LED,指示活动状态。LED串联限流电阻,接到芯片的Activity引脚。限流电阻计算:LED正向压降约2V,电流5mA,3.3V供电,电阻=(3.3-2)/0.005=260Ω,选270Ω或330Ω。

3. 实操过程与核心环节实现

3.1 原理图设计要点

原理图阶段,我习惯先画电源树,再画芯片外围,最后画接口。电源树要标注每路电压的电流需求,方便选型。88SE9215的1.0V核心电流约1A,3.3V IO电流约200mA,总功耗约1.5W。

PCIe差分对在原理图上要标注差分属性,方便PCB工具识别。SATA差分对同理。晶振电路要标注负载电容值,这个值必须和晶振规格书一致,否则频偏可能导致PCIe链路不稳定。

EEPROM如果要用,I2C总线上拉电阻选4.7kΩ,地址引脚根据需求接高或接低。复位电路要确保上电时RST#保持低电平至少1ms,可以用RC延时实现。

3.2 PCB布局与叠层设计

四层板叠层:顶层信号、第二层地、第三层电源、底层信号。板厚1.6mm,顶层到第二层介质0.2mm,第二层到第三层0.8mm,第三层到底层0.2mm。这个叠层下,顶层走线的差分阻抗容易控制在85Ω到100Ω。

布局顺序:先放PCIe金手指,再放桥接芯片,再放SATA接口,最后放电源电路。金手指到芯片的差分对尽量短,最好控制在5cm以内。晶振紧贴芯片,走线不超过1cm。DC-DC远离差分对和晶振,电感朝板边放置。

SATA接口如果放在板边,注意接口方向,方便插线。四个SATA口可以并排,也可以两两一组。我一般并排,间距2.54mm,方便插拔。

3.3 关键走线规则

PCIe差分对:线宽0.2mm,间距0.2mm,差分阻抗85Ω。等长误差5mil以内。包地处理,地线每隔5mm打过孔。避免过孔,如果必须过孔,两个差分线要对称过孔。

SATA差分对:线宽0.2mm,间距0.2mm,差分阻抗100Ω。等长误差5mil以内。TX和RX对之间保持3倍线宽以上的间距,减少串扰。

晶振走线:尽量短,不超过1cm。下方挖空铜皮。负载电容紧贴晶振。

DC-DC走线:SW节点短而粗,反馈线远离SW节点,电感下方铺地。

3.4 焊接与调试

QFN封装的ASM1061手焊难度较大,建议用热风枪加焊膏。LQFP的88SE9215相对好焊,拖焊即可。焊接前先检查焊盘是否平整,焊膏量要适中。

上电前先测各路电源对地阻抗,确认没有短路。上电后先测1.0V、3.3V是否正常,再测晶振是否起振。晶振起振后用示波器看波形,频率应为25MHz,幅度约1Vpp。

PCIe链路训练:上电后,主板会尝试与卡进行链路训练。如果链路训练失败,系统可能无法识别设备。用lspci命令查看是否识别到桥接芯片。如果没识别到,检查REFCLK是否有输出,PERST#是否正常释放,差分对是否接反。

SATA设备识别:链路训练成功后,加载AHCI驱动,SATA口应该出现在系统里。接上硬盘,用smartctl查看SMART信息,确认通信正常。

踩过的坑:有一次REFCLK的差分对走线没有等长,差了20mil,结果链路训练时好时坏。后来重新走线,等长控制在5mil以内,问题消失。PCIe对时序非常敏感,差分对的等长和阻抗控制不能马虎。

3.5 实测数据与性能评估

用88SE9215做的四口卡,接四块4TB机械盘,同时读写,总带宽约450MB/s,单盘约120MB/s,符合机械盘性能预期。接一块SATA SSD,单口读写约520MB/s,接近SATA 3.0的实际上限。

ASM1061的双口卡,接两块SSD做RAID 0,总带宽约800MB/s,受限于PCIe 2.0 x1的5Gbps带宽。接机械盘则完全够用。

功耗方面,88SE9215卡空载约1.2W,满载约2W。ASM1061卡空载约0.6W,满载约1.2W。发热都在可接受范围内,不需要额外散热片。

4. 常见问题与排查技巧实录

4.1 系统不识别卡

这是最常见的问题。排查顺序:先看PCIe插槽供电是否正常,3.3V和12V是否到位。再测REFCLK是否有100MHz输出。然后测PERST#是否在上电后释放。最后检查差分对是否接反,TX和RX不能交叉。

如果以上都正常,可能是EEPROM配置问题。有些卡需要EEPROM才能被识别,检查EEPROM是否焊接良好,I2C地址是否正确。

4.2 识别到卡但SATA口不工作

先确认AHCI驱动是否加载。Linux下用lspci -k查看驱动绑定情况。如果驱动没绑定,可能是设备ID不匹配,需要改EEPROM或驱动。

如果驱动绑定了但SATA口没出现,检查SATA差分对是否接反。SATA的TX和RX是交叉连接的,主机的TX接设备的RX,主机的RX接设备的TX。如果接反,链路无法建立。

4.3 传输速度不达标

先确认PCIe链路速率。用lspci -vv查看LnkSta,确认速率是5GT/s还是2.5GT/s。如果只有2.5GT/s,检查差分对阻抗和等长。

SATA侧,确认硬盘本身速度。机械盘120MB/s左右正常,SSD 500MB/s左右正常。如果SSD只有300MB/s,可能是SATA链路降速到3Gbps,检查SATA差分对。

4.4 多盘并发时掉盘

通常是电源问题。多块机械盘同时启动,12V电流需求大,如果从PCIe插槽取电,可能过流。解决办法是从电源直接引SATA供电线。

也可能是散热问题。桥接芯片温度过高会降速或复位。摸一下芯片表面,如果烫手,加散热片。

4.5 常见问题速查表

现象可能原因排查方法解决措施
系统不识别卡供电异常测3.3V/12V检查金手指和电源
系统不识别卡REFCLK无输出示波器测时钟检查主板插槽
系统不识别卡差分对接反目视检查重新焊接
识别到卡但无SATA驱动未加载lspci -k安装AHCI驱动
识别到卡但无SATASATA差分对接反目视检查交叉TX/RX
速度不达标PCIe降速lspci -vv检查差分对阻抗
速度不达标SATA降速dmesg查看检查SATA走线
多盘掉盘电源过流测12V电流从电源直接供电
多盘掉盘芯片过热摸芯片温度加散热片

独家避坑技巧:调试PCIe转SATA卡时,建议先只焊电源和晶振,确认1.0V和25MHz正常后再焊芯片。这样如果电源有问题,不会烧芯片。另外,PCIe金手指的PRSNT1#和PRSNT2#一定要短接,否则主板认为卡没插好,不给供电。

4.6 设计检查清单

投板前对照以下清单检查:电源树是否完整,每路电压电流是否满足;差分对阻抗是否计算,等长是否满足;晶振负载电容是否匹配;复位电路RC值是否合适;EEPROM上拉电阻是否到位;SATA接口ESD保护是否加;金手指倒角是否做;丝印是否清晰。

5. 设计延伸与个人体会

这套PCIe转SATA的方案,除了做扩展卡,还可以集成到NAS主板或工控板上。如果板子空间允许,把桥接芯片直接画在主板上,省去金手指和插槽,成本更低,可靠性更高。我做过一版集成88SE9215的NAS主板,四个SATA口直接从芯片引出,配合两个原生口,总共六个口,带六块盘很稳。

另一个延伸方向是PCIe Switch。如果主板只有一个x1插槽,但想同时扩展SATA和网口,可以用PCIe Switch芯片(如ASM1182e)把x1拆成两个x1,一个接SATA桥,一个接网卡芯片。这样一块卡解决两个需求,适合软路由或迷你主机。

我个人在实际操作中的体会是,PCIe转SATA的难点不在芯片本身,而在信号完整性和电源设计。差分对的阻抗和等长控制好了,链路训练基本一次过。电源设计留足余量,多盘并发就不会掉盘。另外,调试时耐心很重要,PCIe链路训练失败的原因可能很隐蔽,比如一个过孔没打好,或者一个电容放远了,都会导致问题。用示波器和lspci工具逐步排查,总能找到原因。

最后分享一个小技巧:如果手头没有PCIe协议分析仪,可以用一块已知良好的PCIe转SATA卡做对比测试。把可疑卡的差分对接到良好卡的对应引脚上,看是否能识别,快速定位是卡的问题还是主板的问题。这个方法我用了很多次,省了不少时间。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/6 1:11:45

计算机网络基础PDF怎么学?从分层模型到子网划分的排查手册

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/6 1:11:45

CXL链路层Flit格式深度拆解:字段设计、打包规则与调试实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/6 1:11:32

BCI大电流注入测试硬件优化:滤波、接地与布局实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/6 1:11:13

VCS xprop配置实战:X态传播的精度、性能与精准控制

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/6 1:11:08

EPKS R5XX装机配置全攻略:从FTE网络到License避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/6 1:10:02

SRv6 Policy 数据中心跨域流量调度:从配置到落地避坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华