作者:用芯創造未來 這篇文章主要是還原一個“事故”現場,具體原因有待進一步分析。 遇難芯片: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[2:0]=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:題外話,寫這篇文章主要為我自己留下深刻印象,有啰嗦的地方見諒,電路不便放多,忘理解,如有不同觀點的動動手交流交流哈) |