tag 标签: 菊花链

相关博文
  • 热度 25
    2014-8-20 14:15
    2549 次阅读|
    0 个评论
      当一个系统中含有多片(2片以上)Xilinx FPGA、CPLD或PROM(FLASH)时,可采用单一JTAG口以菊花链(Daisy Chain)形式将所有芯片串联起来实现下载编程,如下图所示。这样做有两个好处:(1)可以节省多个JTAG口所占用的PCB空间,特别适合空间有限的嵌入式系统,如小型工业摄像机等;(2)嵌入式系统处于封闭环境中,有时需要对系统中的FPGA程序进行在线或远程升级,必须将JTAG口引到机箱外,显然这种单JTAG口的菊花链结构是最佳选择。   1、关于链路中的芯片数量 Xilinx的UG380:“Spartan-6 FPGA Configuration User Guide”的第58页“JTAG Signal Routing”一节有如下描述: The TCK and TMS signals go to all devices in the chain; consequently, their signal quality is important. For example, TCK should transition monotonically at all receivers to ensure proper JTAG functionality and must be properly terminated. The quality of TCK can limit the maximum frequency for reliable JTAG configuration. Additionally, if the chain is large (three devices or more), TMS and TCK should be buffered to ensure that they have sufficient drive strength at all receivers, and the voltage at logic High must be compatible with all devices in the chain.   由于TCK和TMS两个信号是连接到菊花链中的所有芯片,因此这两个信号的质量(完整性)非常重要!特别是时钟信号TCK,任何毛刺干扰和边沿抖动都会导致下载失败。 当菊花链中的芯片(或设备)在3个以上时,TMS和TCK必须加缓冲器(如74LVC245),以增加其驱动能力,对于一些驱动能力差的国产下载器尤其重要。每个驱动门所在分支链路中的芯片(或设备)数量取决于缓冲器的驱动能力,一般74LVC245(8缓冲)的一个缓冲门可驱动3~4个负载(芯片)。在TCK的缓冲器输出端串接一个20~30Ω的电阻,设备端并接一个100~1000p的电容到地,可明显降低边沿抖动、减少毛刺干扰。 TMS是一个模式选择开关信号,TCK是时钟脉冲信号,缺省频率为6MHz,当负载较多时,不加缓冲适当降低TCK的频率也可提高信号完整性。        JTAG协议规定TCK下降沿输出TDI数据有效,并在TCK上升沿采集TDO数据,因此,在整个JTAG链中必须保证TDI至TDO的贯通延时(Propagation Delay)T CPD 必须小于TCK的1/2周期T CLK/2 ,即△T=T CLK/2 –T CPD 0。也就是说,在增加缓冲驱动的情况下,JTAG链路中的芯片总数与每个芯片的TDO延时T DOV (FPGA为T TCKTDO )和TCK频率有关。在芯片总数确定以后,为保证△T0,可以降低TCK的频率。        下面举一个实例:假设一个封闭嵌入式系统中有三个模块(或电路板):B1、B2、B3,其中B1、B2的JTAG分支都含1片XCF16P PROM、1片V5 FPGA;B3的JTAG分支含1片XCF16P PROM、1片V5 FPGA、1片S6 FPGA外挂1片8M SPI FPASH。 三个模块的TDI、TDO按B1→B2→B3顺序串接;外部接1个JTAG口,其TCK、TMS在母板上经3路缓冲驱动(74LVC1T45)分别至每个模块,TCK串接22Ω电阻。整个JTAG链上串联7个芯片(不算SPI),其中3个XCF16P、3个V5、1个S6,总的T CPD =3×22+3×6+6.5=85.5ns。考虑到缓冲器和线路延时,T CPD 100ns,因此TCK频率取3MHz最合适,其T CLK/2 =167ns。   2、如何设置JTAG的TCK频率 启动Xilinx FPGA/PEROM下载工具iMpact,点击“Output | Cable Setup…”,下拉“Tck Speed/Baud Rate:”设置频率,缺省值为6MHz,如下图所示:  
  • 热度 21
    2014-2-11 23:24
    1165 次阅读|
    0 个评论
      我们来看一下 DC/DC 稳压器:基本上都是密封在类似 IC 那样的一个封装中的完整 DC/DC 稳压器电路。我们假定,您已经研究了对几家厂商提供的产品进行选择的问题,而且所有这些产品都或多或少地提供了电源转换功能,并满足您的大部分需求。接下来您如何决定哪一款是适合您设计的最佳产品?对于您开发和生产的最终产品,您的客户重视的是什么?哪些 DC/DC 稳压器参数决定了性能?   在您进行选择时,请记着另一个参数:研究每一款 DC/DC 稳压器的可靠性报告。注意那些经过严格测试、以及由性能和可靠性声誉卓著的公司生产的产品。   既然我们在探讨密封的 DC/DC 系统,那么本篇使用说明将仔细研究凌力尔特公司对其 DC/DC 微型模块 (µModule) 稳压器产品所做的深入和详尽的可靠性测试 (图 1)。您在以下网址可以看到完整的可靠性测试报告: 图 1:DC/DC 微型模块稳压器是一种含有电感器和具有高可靠性的密封型完整电路 图 2a:DC/DC 微型模块产品的可靠性测试报告 图 2b:DC/DC 微型模块产品可靠性测试报告中的一个详尽的测试例子    一系列免费可供参考的测试资料   总共就 DC/DC 微型模块产品进行了 18 项测试,其中有几项测试是在不同温度情况下进行的。这些数据是累计的,即自这些产品 3 年半以前推出以来,凌力尔特公司一直在监视和更新这些数据。凌力尔特公司严格更新这份报告,而且可在线提供报告副本。要求报告副本并无需满足任何特殊要求。凌力尔特公司以这种方式支持其高性能微型模块产品线,其中包括 DC/DC 系列 (除了 DC/DC 产品,还提供混合信号微型模块器件,如 LTM9003 和 LTM2881)。    剖析 DC/DC 微型模块稳压器的可靠性测试报告   需要特别提到的第一件事是,微型模块产品的可靠性测试显示,故障为零。   尽管这个数字非常好,但是凌力尔特公司还是会继续监视不同型号和不同封装尺寸器件的生产记录,直到遇到一个或多个故障为止,如果出现故障,将产生一份分析故障原因的测试报告。迄今为止积累的这类数据证明了微型模块产品的封装、组装和电气性能的坚固性。   该报告包含以下测试:   1. 工作寿命   2. 预处理   3. 温度、湿度偏置   4. 电源周期   5. 温度周期 (各种不同的温度范围)   6. 热冲击 (各种不同的温度范围)   7. 焊接冲击   8. 高温烘烤 (各种不同的温度范围)   9. 机械冲击   10. 可变振动频率   11. 电路板安装/温度周期 (各种不同的温度范围)   凌力尔特公司仍然对这些测试结果进行持续监视,而且每个季度都会更新一次数据,然后在网上提供新的测试报告。   以下是每次就 DC/DC 微型模块产品进行的可靠性测试的简短描述:   1. 工作寿命    1,635,385 器件小时,零故障   a. 用该产品在测试环境下的绝对最大电压额定值偏置后进行测试   b. 将环境温度提高到 125oC 以加速测试   2. 预处理    2,500,608 器件小时,零故障   a. 按照 JEDEC 245ºC 标准 (J-STD-020 湿度等级 3) 进行 192 小时的 30ºC/60% 相对湿度 + 3 次 IR 回流焊   b. 模拟电路板装配条件   c. 具有更为潮湿环境   d. 查看封装完整性和脱层   3. 温度、湿度偏置      446,400 器件小时,零故障   a. 查看枝晶生长和腐蚀情况   b. 在潮湿环境中施加数值为被测产品最大额定电压的偏压   4. 电源周期    18,575,540 器件小时,零故障   a. 通过接通和断开对产品进行测试   b. 结温范围为 50ºC 至 100ºC   5. 温度周期 -40ºC 至 125ºC   1,078,000 器件小时,零故障   6. 温度周期 -55ºC 至 125ºC   4,406,436 器件小时,零故障   7. 温度周期 -65ºC 至 125ºC  7,402,790 器件小时,零故障   a. 在多种尺寸的封装上进行   b. 空气对空气或室   c. 在 500 和 1,000 个读出点上,对器件进行电气完整性测试   8. 热冲击 -55ºC 至 125ºC  4,648,000 器件小时,零故障   9. 热冲击 -65ºC 至 150ºC  5,818,300 器件小时,零故障   10. 热冲击 -40ºC 至 125ºC  733,000 器件小时,零故障   a. 热液体至冷液体浸浴测试 (图 3)   b. 遵照 J-STD-020 LEVEL 3  标准   c. 在两个终点 (500 和 1,000 次循环) 之后进行电测试 图 3:热冲击浴槽系统   11. 焊接冲击 245ºC           2,278 个单位样本规模,零故障   a. 浸入熔化的焊料中;   b. 浸没 10 秒钟。   12. 高温烘烤 175ºC      154,000  器件小时,零故障   13. 高温烘烤 150ºC   3,202,874  器件小时,零故障   a. 验证封装连接线上金属间化合的生长   b. 1,000 小时后进行封装连接线牵拉测试   c. 不同的封装连接线厚度和长度   d. 牵拉以记录断裂模式   e. 监视 500 和 1,000 小时的情况   14. 机械冲击   a. 1,500g 峰值冲击测试   b. 按照  JESD22B104 条件 B   15. 可变振动频率   a. 20g 峰值加速度   b. 按照  JESD22B103 条件 A   16. 菊花链式电路板安装/温度周期  211,500 器件周期,零故障   a. 对焊料接合完整性进行测试  (图 4)   b. 0ºC 至 100ºC,具实时监视的菊花链单元   c. 在菊花链电路板上执行测试 图 4:菊花链监视器测试单元   17. 电路板安装/温度周期 -40ºC 至 125ºC      1,689,000 器件周期,零故障   18. 电路板安装/温度周期 -55ºC 至 125ºC         211,500 器件周期,零故障   a. 焊料接合完整性测试   b. 在 ATE (图 4) 或在工作台上接受测试    结论   不是每一位系统设计师都选择或需要高端、高可靠性 DC/DC 稳压器。这些产品的高性能导致的额外成本常常令设计师们望而却步。那么有时会忘记的一件事是,设计师花费了大量的时间和资源来完善系统复杂的数字组成部分,之后却不知道如何为该设计选择合适的 DC/DC 稳压器。当务之急是,仔细研究厂商的可靠性测试方法,以避免以后需要修改设计并花力气调试电路板的电源管理部分,这会造成很大的损失。信任厂商是正常的,但是除了解 FIT 率和表面数字外,验证和比较可靠性数据是明智的。必须询问详细信息。   凌力尔特公司为其 DC/DC 微型模块稳压器产品提供极其详细的可靠性测试结果。可靠性报告每季度更新,并包括不同封装尺寸、批次和不同产品的测试数据。这份可靠性测试报告非常易于理解:它是在线提供的,所有想查看的人都可以得到,而且无需许可就可阅读。对于那些想尽力提供富有竞争力产品的系统设计师来说,选择一个由严格和系统化的可靠性测试计划支持的高端 DC/DC 稳压器,将确保良好的系统级可靠性以及在最终用户那里有良好的产品信誉。
  • 热度 21
    2013-8-7 21:42
    3242 次阅读|
    1 个评论
    所有PCB设计中多会涉及到布线拓扑结构,它对应的是我们的布线策略和一些相应的电路特性,例如为满足时序要求或者某些关键信号的最短路径要求等等。 何为拓扑(Topology)呢,我的理解将复杂的布线问题(例如折线,换层等等)简单表示成点到点、块之间的线连接关系,这个问题简化中只有无数个点、块及他们之间连线,但是这些线之间不可存在交叉的关系。下面介绍几种PCB布线中的几种拓扑结构。 1.     最小生成树结构 所有关联的点以最短的路径连接。一个PIN可以连接很多有链接PIN,从驱动器出发,通过TLINE连接至最近的一个PIN,以此类推,将任何未连接的点用TLIN连接至这个节点附近最近的PIN,直到所有的PIN或者点多建立了连接关系。 2.     菊花链结构 总体描述是这个结构中存在一个相对较长的连接线,其他的点以最短的连接接入这个最长两点间的连线。从drive出发将最近的一个点用TLIN接入drive,下一个节点以最短的TLINE接入最新确定连接的点,直至所有连接多确立。 3.     源负载链结构 类似菊花链,但是每个drive优先连接,接下来顺次是每个receiver节点。 4.     星型结构 用菊花链将所有的drive连接起来,下面将所有的receiver接入到最新的drive节点。 5.     远端集群结构 类似星型结构,只是最后所有的receiver节点是通过一个T节点连入最新的drive节点。                                                                                                                         Mark 译及整理
  • 热度 28
    2012-9-25 15:51
    5567 次阅读|
    10 个评论
           这篇文章主要是还原一个“事故”现场,具体原因有待进一步分析。           遇难芯片: 1片Xilinx FPGA XC5VSX95T、1片PROM XCF32P、2片PROM XCF08P、一块盗版Xilinx Platform Cable USB II。           事故起因: 如下图,左边板子的硬件是我做的,右边的硬件不是(但以前的整个系统是我调的)。我的工作就是将这两款板子的各个功能接口调试完成并将实验平台搭起来,剩下的工作就是动动嘴皮子就行了。之前,我一直在调试右边板子上的超高速AD,有一个通道有些误码(这个以后再谈)。之后,我画的板子回来了,便随心所欲的挨个调试。为了方便描述,左边板称为A板,右边板称为B板。        A板                                                             B板          但是,手上只有一个我以前自己买的盗版下载线(官方下载线退还了),如下图。   盗版下载线                                                 方下载线          事故之前还有个细节,A板刚送来时有隔离磁珠没有焊上,我挨个焊上测量电压均正常,唯独1.2V的磁珠左端正常,而右端只有800mV。当时觉得磁珠碍事,便换了0Ω电阻,但测量还是一样的情况。观察之后发现800mV出现的原因是我把示波器的地线接在了电源地上,而0Ω右端都是与板子右边那片数字区域相连(电源地和数字、模拟地之间也通过0Ω连接,单点接地设计)。因此,将电源地换成数字地,显示的就是1.2V了。这之后A、B两块板子单独找FPGA都是正常的。           事故过程: 正当我认为都没问题,觉得其他电源都是磁珠,就1.2V是0Ω电阻,不满意便换回了磁珠。这里列出磁珠选用型号:PB2012-800/3A(100M阻抗80Ω、最大过流3A),ZRX图如下。        准备再次上电调试时,不幸的事情发生了(我只是单独上电,绝没有同时上点的可能)打开连接A板子的电源,显示的电流变大了将近200mA(输入24V)左右。这意味着肯定有东西短路了,计算机上FPGA也找不到了。马上关掉电源,上手去摸一下各个IC的温度,发现A板的PROM XCF08P已经发烫,但FPGA没有温度,其他也无异常,情况还不算遭。仔细看了下当时的电路,下载线连接如下图            虽然只有一个盗版下载线,但是刚好调试台下面有两**立电源,而我做的板子有14Pin接口,另外一块则刚好是6Pin接口。于是乎就想当然的将这两块板子同时挂在了下载线上。          现在记不清在未换1.2V磁珠上电测试之前,正常状况下这样是否连接过,隐约有这个印象是连过的。换了磁珠再上电就出了状况,这是我的第一反应。因为担心未上电的B板也出问题,我又开了下B板的电源,同样也是增加了200mA左右(B板12V输入,具体电流增加多少没太留意,A板正常应该是110mA,B板插上AD正常应该是500mA左右)。这下情况不妙了,B板的PROM XCF08P一样很烫,背面的PROM XCF32P也有点温度但不烫,FPGA一样无明显的温度变化,其他IC,包括电源都无异常。再看看下载线,还是绿灯,电源正常,但是坏的可能性已经很大了,我以前也用坏过盗版下载线,不过没有烧过配置芯片。           事故排查: 心急之下,第一反应便是还原之前的正常状态,因为怀疑是磁珠的问题,便把A板1.2V的电源磁珠换成了0Ω电阻。换了A板的PROM XCF08P,电源电流正常,但是这次单独连接下载线就找不到FPGA了,临时找到别的地方一个盗版下载线连上正常。心里暗自庆幸,希望B板也只是PROM烧了问题不算大。于是乎也换了B板的PROM XCF08P,因为它的温度太热了。撤下AD板再次上电,电流是降了下来,几乎回到了正常值的范围300mA左右(AD板加上500mA),但是依然找不到FPGA,同时我也用示波器彻底检查了下各个电压值,均无异常。那么,现在要做的就是检查B板的菊花链,主要保证FPGA未坏。取下08P和32P,飞线接出FPGA TDO到JTAG TDO,依然找不到FPGA,检查了N多遍(因为这个板子的下载线是用串口头引出的,起初总是怀疑是不是连线有问题),还是不找不到。为了确定FPGA的JTAG是否被打坏,除了看官方资料,调整了配置模式M =101为JTAG模式外,还拿来了一个正常的小开发板挨个对比TCK、TDI、TMS、TDO。这下算是确认了。如下图所示。   正确的TCK   正确的TDI   正确的TMS   正确的TDO          而B板JTAG的TCK、TDI、TMS都有信号,并与正确信号类似只是信号电平有些出入,唯独TDO在示波器上触发不到任何边沿信号。FPGA的TDO无输出?这我想国内任何人都无能为力,只有更换芯片了。第二天换好的了FPGA、两块PROM的B板送过来,再次上电只找到了FPGA,ID还是错误的。这下是虚惊了一身冷汗,其实这个问题我碰到过不止一次,就是虚焊而已,以前是TQFP的FPGA虚焊,这次就是PROM虚焊。FPGA虚焊很可能就想以前那样找不到任何东西,PROM虚焊则可能找到些异常的东东,补焊一遍就解决了。这并不一定是焊工不行,在搬运或者移动过程中,一些颠簸或者摩擦振动、残渣都有可能引起虚焊,航空测试就有专门的振动试验,听别人说有的板子一上测试台连有些航空导线都被振的七零八乱的,这又和安装、接插件、设计结构以及工艺有关了。           事故分析: 这次事故主要原因还是在于我的操作不规范,如果规规矩矩借个下载线分开调试,可能就不会有这么多麻烦事。但是,我还是有兴趣在分析下这个内藏玄机的事件。我是这样看的,我的目的只是换了磁珠,上A板电验证之前的正常状况而已,B板根本未上电,只是A、B两板由盗版下载线的转接头有连接关系。A板上电坏了XCF08P,Spartan6 XC6SLX25正常,而B板上不光是坏了XCF08P、XCF32P、最值钱的Xilinx FPGA XC5VSX95T的TDO(或者JTAG)却坏了(这也可能是我第二次上电打坏的,但B板电源依然完好)。这便是我觉得悲剧的地方,95T躺着都中*。我觉得有些差异,V5是真脆弱还是有别的原因。我画的FPGA板子在JTAG的供电问题上我都是3.3V和2.5V二选一,一般都是使用2.5V,而B板只能接3.3V,这是我调试忽略地方。A、B板菊花链(JTAG链路)如下图所示。   A板菊花链示意图   B板菊花链示意图   转接板连接图          虽然A、B板的JTAG电源不同,但只是上了A板电源的电,B板相当于负载。          有一种解释是B板3.3V负载较多,而A板2.5V只有PROM和FPGA的VCCAUX。由于同根下载线VREF和GND同时连接A、B板,负载变小。导致电源输出电流增加,同时A板菊花链TDO与B板菊花链的TDO共同连接在JTAG的TDO上,当A板响应时,TDO输出信号,灌进B板的TDO(V5)引脚,置其损坏。但两板的电源没有丝毫损坏,而且A板的FPGA还完好无损。也就是说,主要原因出在A板菊花链的最后一级,但又是什么原因造成最后一集的PROM被打坏的呢?电源过来的脉冲?不得而知。          另一个解释就是盗版下载线内部因为某种原因把脉冲漏进了TDO管脚,致使两条菊花链的最后一级的TDO被损坏,A板FPGA幸免的原因是前面有PROM用身躯挡住了脉冲,而B板则是FPGA第一个遭殃,后面的PROM靠近FPGA的也损坏(至于A、B板后级菊花链的一好一坏的结果可能与FPGA和PROM的JTAG结构有关,这就不是很清楚了)。对于盗版下载线的TDO是如何有输出脉冲的,也许浪涌是罪魁祸首。而官方的下载线是有这方面的保护芯片,盗版没有,至少我这款确定是没有。          至于我当时的第一反应磁珠,我自己也不敢肯定是否与它有关。虽然磁珠隔离只会吸收高频脉冲,是降压而非升压,即便是过流也不是一个磁珠造成的,更何况我换的还是1.2V FPGA核心电源的磁珠,这产生的浪涌也能漏进2.5V的话,FPGA还完好无损如何解释?。这就与TI开关电源模块的输出网络扯不上关系了。           事故小结: 现在我深刻意识到调试贵重东西时候一定要按步就班,不异想天开、想当然的做。每次上电都要高度警觉,对电源,对开板子之外的一切外设接口都要留心。除自我约束之外,我想应该是时候好好研究一下JTAG下载线,之前也早有打算自己弄一个,但没有时间。再说了,USB传输比PCIe要小型化的多,到哪里都能用。刚好我导师的雷达上用到68013做为USB传输芯片,不过是与Altera的FPGA连的,不懂USB有点说不过去。这次如果真是盗版没有浪涌保护的原因,那就真的是一次大教训了。FPGA并不是金刚不坏之身,他的致命弱点或许就是TDO管脚。对于配置接口的浪涌保护,下载没有,那设计的时候不防加上。   (PS:题外话,写这篇文章主要为我自己留下深刻印象,有啰嗦的地方见谅,电路不便放多,忘理解,如有不同观点的动动手 交流交流哈 )      
  • 热度 19
    2012-8-30 12:42
    7239 次阅读|
    5 个评论
           这篇文章主要是还原一个“事故”现场,具体原因有待进一步分析。         遇难芯片: 1片Xilinx FPGA XC5VSX95T、1片PROM XCF32P、2片PROM XCF08P、一块盗版Xilinx Platform Cable USB II。         事故起因: 如下图,左边板子的硬件是我做的,右边的硬件不是(但以前的整个系统是我调的)。我的工作就是将这两款板子的各个功能接口调试完成并将实验平台搭起来,剩下的工作就是动动嘴皮子就行了。之前,我一直在调试右边板子上的超高速AD,有一个通道有些误码(这个以后再谈)。之后,我画的板子回来了,便随心所欲的挨个调试。为了方便描述,左边板称为A板,右边板称为B板。      A板                                                             B板        但是,手上只有一个我以前自己买的盗版下载线(官方下载线退还了),如下图。 盗版下载线                                                 方下载线        事故之前还有个细节,A板刚送来时有隔离磁珠没有焊上,我挨个焊上测量电压均正常,唯独1.2V的磁珠左端正常,而右端只有800mV。当时觉得磁珠碍事,便换了0Ω电阻,但测量还是一样的情况。观察之后发现800mV出现的原因是我把示波器的地线接在了电源地上,而0Ω右端都是与板子右边那片数字区域相连(电源地和数字、模拟地之间也通过0Ω连接,单点接地设计)。因此,将电源地换成数字地,显示的就是1.2V了。这之后A、B两块板子单独找FPGA都是正常的。         事故过程: 正当我认为都没问题,觉得其他电源都是磁珠,就1.2V是0Ω电阻,不满意便换回了磁珠。这里列出磁珠选用型号:PB2012-800/3A(100M阻抗80Ω、最大过流3A),ZRX图如下。        准备再次上电调试时,不幸的事情发生了(我只是单独上电,绝没有同时上点的可能)打开连接A板子的电源,显示的电流变大了将近200mA(输入24V)左右。这意味着肯定有东西短路了,计算机上FPGA也找不到了。马上关掉电源,上手去摸一下各个IC的温度,发现A板的PROM XCF08P已经发烫,但FPGA没有温度,其他也无异常,情况还不算遭。仔细看了下当时的电路,下载线连接如下图        虽然只有一个盗版下载线,但是刚好调试台下面有两**立电源,而我做的板子有14Pin接口,另外一块则刚好是6Pin接口。于是乎就想当然的将这两块板子同时挂在了下载线上。        现在记不清在未换1.2V磁珠上电测试之前,正常状况下这样是否连接过,隐约有这个印象是连过的。换了磁珠再上电就出了状况,这是我的第一反应。因为担心未上电的B板也出问题,我又开了下B板的电源,同样也是增加了200mA左右(B板12V输入,具体电流增加多少没太留意,A板正常应该是110mA,B板插上AD正常应该是500mA左右)。这下情况不妙了,B板的PROM XCF08P一样很烫,背面的PROM XCF32P也有点温度但不烫,FPGA一样无明显的温度变化,其他IC,包括电源都无异常。再看看下载线,还是绿灯,电源正常,但是坏的可能性已经很大了,我以前也用坏过盗版下载线,不过没有烧过配置芯片。         事故排查: 心急之下,第一反应便是还原之前的正常状态,因为怀疑是磁珠的问题,便把A板1.2V的电源磁珠换成了0Ω电阻。换了A板的PROM XCF08P,电源电流正常,但是这次单独连接下载线就找不到FPGA了,临时找到别的地方一个盗版下载线连上正常。心里暗自庆幸,希望B板也只是PROM烧了问题不算大。于是乎也换了B板的PROM XCF08P,因为它的温度太热了。撤下AD板再次上电,电流是降了下来,几乎回到了正常值的范围300mA左右(AD板加上500mA),但是依然找不到FPGA,同时我也用示波器彻底检查了下各个电压值,均无异常。那么,现在要做的就是检查B板的菊花链,主要保证FPGA未坏。取下08P和32P,飞线接出FPGA TDO到JTAG TDO,依然找不到FPGA,检查了N多遍(因为这个板子的下载线是用串口头引出的,起初总是怀疑是不是连线有问题),还是不找不到。为了确定FPGA的JTAG是否被打坏,除了看官方资料,调整了配置模式M =101为JTAG模式外,还拿来了一个正常的小开发板挨个对比TCK、TDI、TMS、TDO。这下算是确认了。如下图所示。 正确的TCK 正确的TDI 正确的TMS 正确的TDO        而B板JTAG的TCK、TDI、TMS都有信号,并与正确信号类似只是信号电平有些出入,唯独TDO在示波器上触发不到任何边沿信号。FPGA的TDO无输出?这我想国内任何人都无能为力,只有更换芯片了。第二天换好的了FPGA、两块PROM的B板送过来,再次上电只找到了FPGA,ID还是错误的。这下是虚惊了一身冷汗,其实这个问题我碰到过不止一次,就是虚焊而已,以前是TQFP的FPGA虚焊,这次就是PROM虚焊。FPGA虚焊很可能就想以前那样找不到任何东西,PROM虚焊则可能找到些异常的东东,补焊一遍就解决了。这并不一定是焊工不行,在搬运或者移动过程中,一些颠簸或者摩擦振动、残渣都有可能引起虚焊,航空测试就有专门的振动试验,听别人说有的板子一上测试台连有些航空导线都被振的七零八乱的,这又和安装、接插件、设计结构以及工艺有关了。         事故分析: 这次事故主要原因还是在于我的操作不规范,如果规规矩矩借个下载线分开调试,可能就不会有这么多麻烦事。但是,我还是有兴趣在分析下这个内藏玄机的事件。我是这样看的,我的目的只是换了磁珠,上A板电验证之前的正常状况而已,B板根本未上电,只是A、B两板由盗版下载线的转接头有连接关系。A板上电坏了XCF08P,Spartan6 XC6SLX25正常,而B板上不光是坏了XCF08P、XCF32P、最值钱的Xilinx FPGA XC5VSX95T的TDO(或者JTAG)却坏了(这也可能是我第二次上电打坏的,但B板电源依然完好)。这便是我觉得悲剧的地方,95T躺着都中*。我觉得有些差异,V5是真脆弱还是有别的原因。我画的FPGA板子在JTAG的供电问题上我都是3.3V和2.5V二选一,一般都是使用2.5V,而B板只能接3.3V,这是我调试忽略地方。A、B板菊花链(JTAG链路)如下图所示。 A板菊花链示意图 B板菊花链示意图 转接板连接图        虽然A、B板的JTAG电源不同,但只是上了A板电源的电,B板相当于负载。        有一种解释是B板3.3V负载较多,而A板2.5V只有PROM和FPGA的VCCAUX。由于同根下载线VREF和GND同时连接A、B板,负载变小。导致电源输出电流增加,同时A板菊花链TDO与B板菊花链的TDO共同连接在JTAG的TDO上,当A板响应时,TDO输出信号,灌进B板的TDO(V5)引脚,置其损坏。但两板的电源没有丝毫损坏,而且A板的FPGA还完好无损。也就是说,主要原因出在A板菊花链的最后一级,但又是什么原因造成最后一集的PROM被打坏的呢?电源过来的脉冲?不得而知。        另一个解释就是盗版下载线内部因为某种原因把脉冲漏进了TDO管脚,致使两条菊花链的最后一级的TDO被损坏,A板FPGA幸免的原因是前面有PROM用身躯挡住了脉冲,而B板则是FPGA第一个遭殃,后面的PROM靠近FPGA的也损坏(至于A、B板后级菊花链的一好一坏的结果可能与FPGA和PROM的JTAG结构有关,这就不是很清楚了)。对于盗版下载线的TDO是如何有输出脉冲的,也许浪涌是罪魁祸首。而官方的下载线是有这方面的保护芯片,盗版没有,至少我这款确定是没有。        至于我当时的第一反应磁珠,我自己也不敢肯定是否与它有关。虽然磁珠隔离只会吸收高频脉冲,是降压而非升压,即便是过流也不是一个磁珠造成的,更何况我换的还是1.2V FPGA核心电源的磁珠,这产生的浪涌也能漏进2.5V的话,FPGA还完好无损如何解释?。这就与TI开关电源模块的输出网络扯不上关系了。         事故小结: 现在我深刻意识到调试贵重东西时候一定要按步就班,不异想天开、想当然的做。每次上电都要高度警觉,对电源,对开板子之外的一切外设接口都要留心。除自我约束之外,我想应该是时候好好研究一下JTAG下载线,之前也早有打算自己弄一个,但没有时间。再说了,USB传输比PCIe要小型化的多,到哪里都能用。刚好我导师的雷达上用到68013做为USB传输芯片,不过是与Altera的FPGA连的,不懂USB有点说不过去。这次如果真是盗版没有浪涌保护的原因,那就真的是一次大教训了。FPGA并不是金刚不坏之身,他的致命弱点或许就是TDO管脚。对于配置接口的浪涌保护,下载没有,那设计的时候不防加上。 (PS:题外话,写这篇文章主要为我自己留下深刻印象,有啰嗦的地方见谅,电路不便放多,忘理解,如有不同观点的动动手 交流交流哈 )