ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

XILINX FPGA下载器故障排查与芯片级维修实战指南

XILINX FPGA下载器故障排查与芯片级维修实战指南 现在开始写这篇关于ALINX 黑金 XILINX FPGA下载器的深度剖析与实战维修指南。我在实际使用中经常遇到一种场景手上一块ALINX黑金FPGA开发板配的下载器调试正嗨的时候突然掉链子——Vivado里提示找不到cable设备管理器里设备也没了或者显示一个黄色感叹号。很多朋友第一反应是板子坏了折腾半天才发现问题出在那个不起眼的黑色小盒子上。这篇指南就围绕ALINX黑金这款XILINX FPGA下载器从硬件方案、故障分类、拆解测量、芯片级维修到固件重写把整个排查链路完整讲一遍。适合正在用黑金开发板做FPGA开发的人也适合实验室里负责维护开发工具的同学哪怕是电子爱好者只要手里有万用表能用电烙铁也能按这个方法把下载器从“报废”边缘救回来。1. 拆开外壳前先搞懂黑金下载器到底是个什么东西别急着动手拆先把黑金下载器的本质搞清楚。ALINX黑金系列配套的下载器核心方案基本都绕不开FTDI公司的USB桥接芯片最常见的是FT2232H。这颗芯片在FPGA调试工具圈子里几乎被用到滥不只是ALINX很多国产下载器、逻辑分析仪、USB转串口模块都在用。它的特点是双通道A通道和B通道可以独立配置。在黑金下载器里A通道通常被配置成MPSSE模式用来跑JTAG协议B通道则配置成UART模式当串口用。很多用户不知道这个下载器本质上是一个“USB转JTAG/串口”的适配器。FPGA要下载bitstream最直接的方式就是通过JTAG接口把配置数据按串行时序送进FPGA内部的配置逻辑。Xilinx的Vivado/ISE通过USB线连接下载器下载器再把USB协议转换成JTAG四根信号线TCK、TMS、TDI、TDO连到FPGA的JTAG引脚上。整个过程USB是高速串行JTAG是低速串行中间翻译工作就是由FT2232H完成的。1.1 从芯片方案看下载器的真实身份拆开黑金下载器外壳后一般能看到以下几块东西一个USB Type-B或者Mini USB座子、一颗FT2232H主控、一颗用于配置的EEPROM常见93C46、一颗12MHz晶振、一组电平转换/缓冲电路以及一个3.3V稳压LDO。有些版本板子背面还有ESD保护二极管和TVS管。不同批次的黑金下载器在具体元件选型上会有差异比如有的用FT232H加外部CPLD实现JTAG时序有的直接把FT2232H的MPSSE功能拉满但总体排查思路是通用的。为什么ALINX选FT2232H而不是更便宜的FT232H核心原因是双通道。FPGA开发过程中除了下载bitstream大家几乎总要打开串口调试助手看打印信息。如果用单通道的FT232H下载和串口只能二选一。FT2232H一颗芯片同时搞定JTAG和UART下载器平时看着只有一个USB口实际插上电脑后设备管理器里会冒出来两个设备一个负责JTAG一个负责COM口。这也是判断主控芯片是否正常工作的一个标志后面会细说。1.2 下载器的工作链路与信号走向把完整链路捋一遍电脑USB口发出的数据经过USB线到下载器上的USB座经过ESD保护元件进入FT2232H主控。FT2232H内部将USB数据包解析后按配置好的模式输出。JTAG模式下FT2232H通过MPSSE引擎产生TCK、TMS、TDI信号同时采样TDO信号。这些信号经过电平转换电路后从排针或者杜邦线连到FPGA开发板的JTAG接口上。这里有个关键点下载器上的排针附近通常有一个标着“VREF”或“VCC”的引脚这个引脚必须和目标板的JTAG供电电压连通。很多刚接触FPGA的朋友会忽略它直接导致连不上。VREF的作用是告诉下载器目标板的IO电平标准——你的FPGA JTAG bank工作在3.3V还是2.5V还是1.8V下载器通过感知VREF电压来调整输出信号的逻辑电平保证两边不会因为电平不匹配而收不到正确数据。1.3 它为啥比“能用就行”的下载器更容易坏黑金下载器坏的概率其实不算低这跟它的使用场景有直接关系。FPGA开发板不像手机用户会反复插拔USB线、反复连接目标板、经常在板子带电状态下插拔JTAG接口。这些操作带来的电压尖峰、静电放电、电流倒灌最先冲击的就是下载器上这几颗脆弱的小芯片。最典型的损坏场景是目标板供电异常。如果你的开发板用的开关电源纹波很大或者电源一开始就没调好下载器通过JTAG线和目标板连在一起目标板上电瞬间的浪涌电流会顺着VREF或GND倒灌进下载器。还有不少人是带电插拔JTAG的FPGA的JTAG引脚通常不是普通IO但插拔瞬间信号线接触不良会产生毛刺和过压直接打穿FT2232H内部或者外部ESD保护器件。因此修下载器之前先要区分是设备级故障还是链路级故障这是两条完全不同的排查路线。2. 故障现象分类先给自己手里的下载器“把脉”下载器出问题不同现象对应不同故障区域把现象分清楚才能少走弯路。我根据实际修过的案例把故障归成四大类下面逐一拆解。故障现象可能原因常见程度排查方向插上电脑毫无反应灯不亮USB座虚焊、5V供电不通、LDO烧毁、主控短路较高先测供电再查USB座系统提示“未知USB设备/设备描述符请求失败”EEPROM配置丢失、晶振不振、主控芯片损坏、USB信号线断裂高万用表测D/D-压降示波器看晶振电脑能识别设备Vivado里找不到FPGA目标板供电/VREF异常、JTAG线序不对、链路中信号不通、驱动问题最高检查目标板测JTAG信号核对线序能识别目标下载时报错或卡住电缆频率过高、JTAG链路多器件冲突、目标板时钟不稳、下载器缓冲坏中降低电缆频率逐段测信号另外还有一种不太起眼的现象下载器和串口都能识别但打开串口助手收到的全是乱码。这种多半是B通道的UART配置被改动过或者是目标板串口的电平不匹配一般不涉及硬件损坏用FT_Prog重新配置一下即可解决。2.1 现象一插上电脑毫无反应灯都不亮这种状态最直接先看指示灯。黑金下载器正常上电后一般会有电源指示灯亮起。如果灯不亮说明电源路径断了。常见的几个断点USB座本身接触不良、连接USB座的线缆内部断芯、VCC走线铜箔断裂、LDO稳压芯片损坏、后端负载短路导致电源被拉低。还有一种细节容易忽略很多下载器的USB座是贴片焊接的受外力反复插拔后焊盘和铜箔之间会产生肉眼几乎看不见的裂纹。这种裂纹用万用表去测静态阻值正常但一摇动USB插头就断路。修这类问题需要用放大镜仔细观察焊点或者直接用手轻微晃动USB座看指示灯有没有闪烁。2.2 现象二系统报“设备描述符请求失败”这个故障非常经典。Windows右下角弹“USB设备无法识别”设备管理器里出现一个“未知USB设备设备描述符请求失败”这种描述基本锁定了USB枚举过程出了问题。USB枚举的过程是这样的设备插上去之后主机先给设备供电然后通过D/D-差分线发复位信号再读取设备的描述符VID、PID、序列号等。如果读不到或者读出来是乱码主机就会报这个错。问题可能出在USB物理层D/D-断线或短路、设备端主控固件EEPROM配置损坏、或者主控芯片根本没跑起来。这里分享一个快速判断技巧用万用表二极管档测USB座D和D-引脚对地的压降。FT2232H正常工作时D/D-对地的二极管压降大约在0.4V到0.6V之间两个脚数值应基本一致。如果测出来近乎0说明主控或ESD保护管被打穿了如果完全开路说明USB信号线到主控之间已经断线。2.3 现象三电脑认了设备Vivado里找不到FPGA这种情况最迷惑因为下载器看起来“是好的”——系统已经识别了USB设备驱动也正常但打开Vivado的Hardware ManagerTarget列表里什么都没有。很多人在这一步开始怀疑FPGA板子坏了其实问题往往出在JTAG链路。排查思路要调整既然USB端已经通了重点就转到JTAG信号链路、目标板供电、以及Vivado驱动状态。具体怎么查第5章会展开。这里先记住一句话下载器能枚举不等于能联机枚举只代表USB通道是通的和JTAG通道是否正常完全是两码事。2.4 现象四能识别目标一下载就报错这种故障最烦人比完全连不上还让人抓狂。Hardware Manager里能看到FPGA了但一点Program报错五花八门IDCODE不匹配、DONE信号没有拉高、配置数据校验失败等等。如果IDCODE能读出来但不对大概率是目标板的JTAG链上有多个器件链的顺序或者IR/DR移位出了问题。如果IDCODE是正确的但下载中途卡死问题可能出在Vivado的电缆频率设置太高尤其是使用了杜邦线连接下载器和目标板时线长超过10厘米高速信号波形已经畸变。这种时候把Cable Frequency从默认的6MHz调到3MHz甚至1.5MHz往往立竿见影这不是玄学是JTAG时序裕量的问题。3. 维修工具与拆解不拆机怎么修管他三七二十一先拆壳别急。下载器维修讲究的是“先测后拆先软后硬”。有些故障根本不用拆机就能定位拆开反而容易把本来就脆弱的板子搞坏。3.1 需要准备的工具清单与档位设置维修一台下载器手边不一定要多高级的设备但基础工具必须到位。我常用的工具清单如下数字万用表必备要求带二极管档和通断蜂鸣档用来测短路、断线和二极管压降数字示波器推荐100MHz带宽以上的用来测晶振波形和JTAG信号没有示波器也能修但效率低不少恒温烙铁配刀头或尖头温度调到310℃-350℃之间用来补焊和拆元件热风枪拆卸FT2232H这类QFP封装芯片时要用温度调到340℃-360℃风速中等助焊剂和吸锡带补焊和清理连锡时必不可少放大镜或体视显微镜检查焊点和走线裂纹看清芯片引脚有没有细微桥连万用表使用上有个小细节测压降要用二极管档不是电阻档。二极管档会给被测回路施加一个恒定电流读出来的是PN结正向压降这对判断芯片IO是否损坏非常有效。电阻档测出来的是纯电阻量程和读数逻辑不一样容易误判。3.2 外壳拆解与板卡结构观察黑金下载器的外壳有几种常见结构有的用透明热缩管包裹有的用超声波焊接的塑料壳少数版本是螺丝固定的。热缩管管套的直接用刀片小心划开就行塑料壳的要先检查有没有螺丝孔没有螺丝的就是卡扣结构。拆卡扣外壳有个技巧不要用一字螺丝刀硬撬容易把卡扣崩断。用两把撬棒从出线口或接缝处同时用力先开一角再沿着边慢慢划开。强迫症朋友可以在拆之前拍几张照片记录USB座的方位、排针的位置、指示灯的位置装回去的时候照着重装就行。拆开后先别上电用肉眼仔细观察板子的每个角落USB座附近有没有裂纹电容有没有鼓包或烧焦主控芯片表面有没有发黄或者针脚颜色的变化。我修过一台被助焊剂污染的下载器板子边缘的铜箔完全被腐蚀成绿色D/D-走线直接断了这种故障肉眼比仪器更先发现问题。3.3 用万用表完成第一轮快速检测拆开板子后第一轮检测按照供电→信号→芯片的顺序来。先测USB电源正负之间有没有短路。万用表拨到蜂鸣档两只表笔分别点USB座的电源脚和地脚。如果蜂鸣器响起说明后级有短路——可能是LDO坏了也可能是主控内部击穿。正常情况应该有一个很小的阻值但不是零随着电源电容充电读数会慢慢上升。第二步测LDO输出电压。USB的5V进来之后经过LDO降到3.3V给主控和EEPROM供电。用万用表电压档量LDO输出端对地如果输出明显偏低可能是负载短路如果没有输出可能是LDO本身挂了。第三步测D/D-对地压降。这块前面讲过两个脚的二极管档读数应该都在0.4V到0.6V而且差值不超过0.1V。这个测量能初步判断主控有没有被静电击穿比上来就拆芯片换芯片靠谱得多。4. 核心故障修复实战从USB接口到主控芯片逐一排查这一章是整个维修指南的重点。按照我自己的维修习惯故障定位顺序是USB座物理连接→供电→晶振→EEPROM→主控芯片。每一步都有明确的判断标准和修复方法。4.1 USB座虚焊与信号线断裂的修复USB座问题在维修里占比最高因为它是受力点每次插拔都在用机械力拉扯焊点。特别是Mini USB和Micro USB这类小接口焊盘小机械强度弱插拔几百次后非常容易出现虚焊。修复流程很简单先用烙铁在USB座所有焊脚上补一遍锡重点看两个数据脚有没有冷焊。如果补锡后故障依旧再仔细检查USB座到主控之间的走线。有些板子USB座引脚和主控之间还有串联电阻或者共模电感这些小元件也可能被撞掉或者虚焊。遇到过更极端的案例USB座内部弹片变形导致接触不良。这种问题从外面根本看不出来万用表量USB线缆是通的插到下载器上就是识别不了。解决办法是更换USB座或者尝试把USB座弹片用镊子小心挑高一点但这个方法治标不治本建议直接换座。4.2 供电与稳压部分的排查与替换供电部分的故障特征很明显5V有输入但板子上3.3V没有或者3.3V被拉得很低。先定位LDO芯片一般是一个三端或五端的小元件表面丝印标着输出电压值。先用万用表测LDO输入脚有没有5V如果有再测输出脚和地之间的电压。输出不正常时不要马上断定LDO坏了先断开后级负载——用烙铁把LDO输出脚挑起或者直接拆下来再测输出电压。有些情况下是后级主控短路把电压拉低到几乎为零这种时候LDO会烫得厉害。更换LDO要注意型号和封装常见的AMS1117-3.3、XC6206、XC6219都很容易买到。拆的时候温度不要太高脚间距小容易把铜箔烫坏。焊完之后先静态测一下输出不短路再上电验证。4.3 晶振不起振的判定与更换FT2232H需要一个12MHz的时钟源通常是两个引脚的晶振。如果晶振没有正常起振主控芯片处于“死机”状态USB枚举自然失败。示波器探头点到晶振的任意一个引脚上正常上电后应该能看到12MHz的正弦波或方波峰峰值几百毫伏到1伏多。测的时候要注意探头寄生电容可能让晶振停振所以优先用10:1档位探头尖端尽量短接地线。如果用示波器看不到起振用镊子或者螺丝刀金属头轻轻触碰晶振引脚偶尔能诱发起振如果触碰后波形出来了说明晶振启动电路不良多半是晶振本身老化或者起振电容失效。更换晶振比较简单注意引脚间距耐心一点就行。拆下来之后先量一下晶振两个脚之间的阻抗正常的晶振阻抗无穷大如果量出来有明显阻值说明晶振已经内部短路或漏电。另外晶振旁边还有两个18pF到33pF左右的负载电容如果晶振换了还不起振检查这个电容是否虚焊或者失效。4.4 EEPROM配置异常导致“设备描述符请求失败”这是一个非常容易误判的故障。FT2232H上电时要从EEPROM常见93C46读取配置信息包括VID、PID、每个通道的工作模式等。如果EEPROM损坏或者数据被清空有些批次的FT2232H会枚举失败直接报“设备描述符请求失败”。我当时修过的一个下载器就是这样万用表测D/D-压降正常晶振也在振荡3.3V也正常但插上电脑就是报未知设备。排查了半天最后一招是拆下EEPROM芯片再插USB。FT2232H在没有EEPROM时会使用芯片工厂默认的VID/PID0x0403/0x6010来枚举设备管理器能看到“USB Serial Converter A/B”。这时候基本确定问题就出在EEPROM上。处理方法是要么找一颗空白93C46换上用FT_Prog重新写入配置要么把原芯片用编程器重写。如果手头没有编程器最省事的办法是直接换一颗空片利用FT2232H默认配置先把设备点亮再用FT_Prog烧录。替换EEPROM时注意TI和Microchip等不同厂家的93C46引脚顺序基本一致直接代换没问题。4.5 FT2232H主控损坏的判断与更换如果前面几项全查完都没有问题那嫌疑最大的就是FT2232H主控芯片本身。判断依据有几条芯片表面异常发烫、D/D-对地压降近乎零、晶振不振荡且外电路无故障、USB数据和主控之间的串联电阻断路等。更换FT2232H是难度最高的一步它是LQFP48封装引脚密集。操作前在芯片周围涂上助焊剂热风枪开300℃-320℃风速中等绕圈吹。等锡熔化后用镊子轻轻碰芯片感到芯片能在锡上滑动时再取下来。强行硬撬会直接把焊盘撕下来板子就彻底报废了。装新芯片之前用吸锡带把焊盘清理平整确保没有残留锡渣。芯片放上去时要对准第一脚标记四边引脚和焊盘对整齐然后先焊固定两个对角引脚确认位置无误后再用拖焊法跑一遍四周。焊完用放大镜检查有没有连锡万用表蜂鸣档测相邻引脚有没有短路。更换主控后EEPROM大概率也需要重新写入配置这一步别漏掉。5. JTAG链路故障下载器好着连不上FPGA怎么办修完下载器本身接下来面对的是第二大类问题下载器插上电脑什么都正常但就是连不上FPGA。这时候不要怀疑自己刚才的维修成果把焦点转向JTAG链路。5.1 目标板供电与JTAG电平检测连不上FPGA时第一个要查的是目标板有没有上电。很多调试场景下开发者只插了USB线目标板电源忘了开下载器当然找不到设备。第二个要查的是VREF。Xilinx下载器的JTAG接口设计上要求有一个参考电压引脚这个引脚必须连到目标板的JTAG接口参考电源上。如果VREF悬空或者电压不正常下载器内部的电平转换电路无法工作整个JTAG通信就是空中楼阁。用万用表直接量目标板JTAG接口的VREF脚和GND之间的电压FPGA核心板JTAG电平通常和Bank电压一致常见的是3.3V、2.5V、1.8V。只要实测电压正常说明路径没问题。还有一种情况目标板电源不正常但USB供电还在FPGA处于一种“半死”状态。此时FPGA不仅JTAG不工作可能还会通过引脚往回漏电让下载器工作异常。解决方式是给目标板上独立的稳定电源不要试图用下载器的3.3V去带动整个板子。5.2 JTAG排针定义与线序核对黑金下载器连到开发板一般有两种方式一种是通过10针排线连接一种是直接用杜邦线逐根连接。排线相对安全因为防呆设计杜邦线就非常考验细心了接错一根就可能烧芯片。常见Xilinx 10针JTAG座定义可以参考下表但不同批次的黑金下载器排针丝印可能有差异务必以你手里的板子丝印为准针脚信号说明1VREF目标板参考电压必须接2GND地3TCKJTAG时钟4TDO目标板输出到下载器5TDI下载器输出到目标板6TMSJTAG状态机控制7-10NC保留脚一般不接如果线序拿不准有一个更稳妥的方法借助万用表通断档把下载器外壳上标注的TCK、TMS、TDI、TDO、VREF、GND逐一和排针位置对应起来再和目标板原理图核对。千万别凭记忆接JTAG四根信号线接反的后果轻则连不上重则烧IO。5.3 信号逐段测量的排查方法到了这一步供电和线序都正常但依然连不上就需要用示波器逐段看信号了。先把Vivado打开连接目标板随便触发一次扫描。用示波器探头夹到下载器JTAG输出端的TCK脚上看有没有时钟翻转。正常情况下TCK应该有连续的脉冲输出频率取决于Vivado里的电缆频率设置。如果没有TCK说明下载器到目标板的连接线有断路或者下载器没有进入工作状态。如果TCK有再看TMS有没有翻转。TMS变化比TCK少但扫描过程中应该能看到电平跳变。如果TMS没有说明软件侧没有发送有效的JTAG指令可能是驱动问题或者Vivado识别下载器异常。如果TCK和TMS都有但TDI就是不出来那基本可以断定问题在下载器本身的TDI输出通道比如缓冲损坏、串联电阻虚焊。反过来如果TDI有但读不到TDO问题就在目标板一侧FPGA的TDI到TDO的内部移位寄存器链没有导通可能FPGA处于一种异常状态。这个时候对FPGA执行一次全擦除或者强制重新配置很多时候就能恢复。还有一种多器件调试场景FPGA下载链路上串联了好几个JTAG器件比如FPGA加CPLD或者多片FPGA首尾相连。Vivado扫描时会把整条链读一遍任何一个器件出问题都会导致整条链断开。排查方法是先用跳线短接某个器件的TDI和TDO跳过它再扫描逐段缩小问题范围。6. 修好之后固件重写、校准与日常保养下载器硬件修好了最后一步是把软件配置写回去并且验证整个链路的完整性。很多人修完硬件直接插上去发现还是不工作其实是漏了EEPROM配置这一步。6.1 用FT_Prog重写EEPROM配置FTDI官方工具FT_Prog是下载器维修的必备软件。打开FT_Prog它会扫描USB线上的FTDI设备。如果能扫到设备说明主控和USB通信已经通了可以直接读取EEPROM内容。如果扫描不到设备但前面硬件测量都正常可以考虑在Windows设备管理器里更新驱动——有时是FTDI驱动没装好导致FT_Prog无法识别。如果驱动没问题最可能还是EEPROM状态不对可以尝试强制加载FT2232H通用驱动再扫描。FT_Prog里有一个“Devices and EEPROMs”的界面扫描到设备后双击就能进去编辑配置。配置内容要点VID保持0x0403PID保持0x6010这是FT2232H的公版编号如果ALINX出厂时定制过PID需要按原值写回A通道的配置设为“FT245 FIFO MPSSE”或者对应你原始配置的模式供JTAG使用B通道的配置设为“UART”供串口使用电源参数、端口参数保持默认配置写完后点“Program”设备会重新枚举一次。如果一切顺利设备管理器里应该能看到一个“USB Serial Converter A/B”和两个COM口这代表配置写入成功了。6.2 维修后验证从设备枚举到比特流下载别急着收工做一套完整的验证流程确认下载器每个功能都恢复到位USB枚举插上电脑系统能正常识别无感叹号双通道设备管理器中能看到两个串口设备分别对应A/B通道串口回环用杜邦线把串口TX和RX短接打开串口助手发数据看是否能原样收到JTAG联机连接FPGA开发板打开Vivado Hardware Manager确认能扫描到器件IDCODE下载测试编译一个点亮LED的简单工程烧写bitstream确认FPGA能工作Flash烧写如果目标板有SPI Flash再试一次烧写flash配置确认下载器通过JTAG-HTML路径也对我遇到过维修完成后USB枚举正常、JTAG识别正常但Flash烧写总是失败的案例最后发现是下载器板上一颗缓冲器的驱动能力下降。这种不烧Flash就没法暴露的问题最考验维修的完整度所以验证步骤一个都不能省。6.3 哪些习惯能让下载器活得更久下载器修好容易但真正值得研究的是怎么让它别再坏。根据我自己的使用统计绝大多数下载器损坏都是人为使用习惯问题真正因元件老化自然损坏的反而很少。习惯一先接目标板再插USB。这个顺序能让VREF在USB通信建立之前就稳定下来避免下载器在目标板未供电时猜测电平。习惯二严禁带电插拔JTAG。虽然下载器上有ESD保护但保护器件的能量承受能力有限。FPGA正在配置或者DONE信号刚拉高时引脚上电平变化最剧烈这时候拔线最容易打出过压尖峰。习惯三目标板独立供电别依赖下载器的3.3V输出。下载器的3.3V是个弱供电只能给板上小电流电路用接个大负载分分钟把LDO烫坏。习惯四给下载器配一根带磁环的优质USB线。劣质线材的D/D-差分阻抗不合格长期使用会导致主控芯片内部驱动器老化这是很多人忽视的隐形杀手。习惯五使用隔离Hub或者带电流保护的USB集线器。实验室电脑USB口往往连着各种设备某个设备短路时USB口的5V瞬间跌落可能顺着USB线反向冲击下载器。一个带过流保护的Hub关键时刻比什么保险丝都管用。按照这几条习惯操作下载器寿命能成倍延长。我自己的那台黑金下载器按照这套方法维护从2018年用到现在除了换过一次EEPROM其他部分工作状态一直很稳定。最后再分享一个实操心得如果你手头有多台同型号下载器建议用FT_Prog把每台的EEPROM配置和序列号都备份一份。序列号在多个下载器同时插入同一台电脑时会用到没有序列号会导致系统无法区分两个相同的FT2232H设备这在多路FPGA调试场景里非常耽误事。备份好配置以后万一再出问题五分钟就能恢复如初不用重新折腾一晚上。
返回列表