摘要
一排整齊的高電平竟然被活生生的砸下一個缺口,是軟件Bug,硬件故障,信號干擾,還是另有主謀?一個撲朔迷離的案件正在拉開序幕……
案發(fā)現(xiàn)場
一日,在測試DATA線的信號時發(fā)現(xiàn),一排整齊的3.3V高電平被活生生的砸下一個缺口,是誰如此膽大!當(dāng)日的案發(fā)現(xiàn)場如下,隨后又發(fā)現(xiàn)旁邊的15根DATA線亦是如此,案情嚴(yán)重,刻不容緩!

圖1 異常波形
現(xiàn)場偵查
狄大人說:你要尋找蛛絲馬跡,得有專業(yè)的家伙,ZDS2000系列示波器有個欠幅觸發(fā)的功能,可以秒抓那個缺口,一試果不其然,如下:

圖2 異常波形展開
案情背景
3.3V信號夾雜著1.5V的成分,這確實很棘手。經(jīng)明察暗訪發(fā)現(xiàn),案件背景如下,三個芯片A,B,C共享同一數(shù)據(jù)總線DATA[0..15],而且測試三個芯片的管腳都是以上波形。

圖3 芯片拓?fù)鋱D
推理論斷
這到底是何方妖孽所為?于是邀請各路高手一同探討,一番激辯之后,出現(xiàn)以下猜測:
芯片A,B,C的電源域有問題 通信過程中受到干擾 芯片內(nèi)部模塊損壞
……
經(jīng)查明,電源域沒問題,第2、3點暫時無法排除。至此,案件依舊毫無頭緒,毫無進(jìn)展……
線索追蹤
以上波形包含了AB,BC,AC間的通信數(shù)據(jù),而且1.5V的占比比較小,或許是發(fā)生在某兩個芯片之間。經(jīng)過進(jìn)一步測試,有了重大發(fā)現(xiàn)!
1.5V的出現(xiàn)竟然對應(yīng)著BC間傳輸使能信號(綠色波形)

圖4 BC使能信號
現(xiàn)在來看有兩種可能: A在干擾總線 A沒有干擾總線,是芯片B、C內(nèi)部的問題
馬上斷開A的DATA0腳,上電卻無法啟動,看來還需另找線索了
柳暗花明 查找了一些資料,基本都是一些“一端拉高一端拉低”的說法,難道是B輸出高的同時C拉低總線了?要怎樣證明呢?
經(jīng)過討論,要找出拉低總線的元兇,最好的辦法是看電流是否增大,依此思路,分別割斷ABC的DATA0腳,串線連通,結(jié)合CP8030A電流探頭和ZP1025S探頭,測試結(jié)果如下:
1、芯片A處DATA腳電壓、電流波形如下,電流約為30mA

圖5 A處電流
2、芯片B處DATA腳電壓、電流波形如下,電流幾乎為0

圖6 B處電流
3、芯片C處DATA腳電壓、電流波形如下,電流約為30mA

圖7 C處電流
結(jié)果表明,1.5V對應(yīng)的位置其電流竟然達(dá)到30mA(遠(yuǎn)遠(yuǎn)超出正常IO口的電流值),且寬度與1.5V的寬度一致。
真相大白
結(jié)合電流鉗的箭頭標(biāo)識,可進(jìn)一步確定電流方向,如下:

圖8 電流方向
我們可以判定,30mA的電流方向是由C到A,BC間傳輸數(shù)據(jù),A本不該插手,如今它卻給總線制造了30mA的異常電流,因此懷疑是A把總線拉低了。
后查看A芯片的固件,發(fā)現(xiàn)BC傳輸數(shù)據(jù)時,A竟然處于低電平狀態(tài)!
修改為高阻后,1.5V電平恢復(fù)到3.3V了,30mA的電流也消失不見,如下圖

圖9 電流驗證
至此,元兇已歸案,此案成功告破。
于是,三個芯片又能夠愉快的傳輸數(shù)據(jù)了
案后語
當(dāng)初遇到這個問題時,硬件開發(fā)說芯片之間采用直連方式,不可能有問題,軟件開發(fā)查看代碼也沒有發(fā)現(xiàn)什么問題?此埔粋無解的問題,顯然用常規(guī)方式難以解決,電壓波形不是萬能的,有時候結(jié)合電流來看,問題卻能迎刃而解,你覺得呢?
|