試實(shí)戰(zhàn):從原理到異常定位)
1. 眼圖測(cè)試到底在測(cè)什么從一次USB識(shí)別故障說起1.1 那次讓我意識(shí)到眼圖重要的排查經(jīng)歷年初處理過一個(gè)客戶退回來的板子現(xiàn)象很典型板子在產(chǎn)線上能通過全部功能測(cè)試但到了客戶現(xiàn)場(chǎng)就偶發(fā)“USB設(shè)備無法識(shí)別”重插幾次又能恢復(fù)。軟件組查了枚舉流程電源組量了VBUS紋波都說沒異常。最后我把USB差分對(duì)引到示波器上切到眼圖模式一看結(jié)論非常直觀——高速信號(hào)的眼圖已經(jīng)塌到只剩正常開口的一半而且上下眼皮全是毛刺。問題板子和好板子放在一起對(duì)比差分?jǐn)[幅一個(gè)400mV一個(gè)380mV靜態(tài)參數(shù)差異很小但眼高眼寬差了一倍。這種問題不做眼圖測(cè)試根本發(fā)現(xiàn)不了。這類案子經(jīng)歷得多了我越發(fā)認(rèn)同一個(gè)觀點(diǎn)USB 2.0雖然是個(gè)“老協(xié)議”但它的高速模式High Speed480Mbps仍然是很多嵌入式產(chǎn)品里最容易出信號(hào)完整性問題的接口之一。USB 2.0有三種速率——Low Speed 1.5Mbps、Full Speed 12Mbps、High Speed 480Mbps。前兩種速率對(duì)PCB走線和連接器幾乎不敏感12Mbps時(shí)代拿萬用表都能量電平但到了480Mbps一個(gè)UIUnit Interval單位間隔只有約2.08ns信號(hào)在介質(zhì)里跑一個(gè)來回就可能疊加反射、損耗、串?dāng)_光量“有沒有電平”完全不夠必須用量化的眼圖來看信號(hào)在整個(gè)傳輸路徑上“睜眼”的狀態(tài)。這篇文章我根據(jù)自己的實(shí)測(cè)經(jīng)驗(yàn)把USB 2.0高速眼圖測(cè)試從設(shè)備選型、探頭連接、治具搭建到實(shí)測(cè)流程、參數(shù)解讀、異常定位完整梳理一遍。無論你是做嵌入式主板、做USB外設(shè)還是做線纜和連接器的這套方法論基本通用。即使你手里沒有昂貴的合規(guī)測(cè)試系統(tǒng)只要按文中的思路用一臺(tái)還算過得去的示波器也能做出八九不離十的判斷。1.2 眼圖的形成原理把千百萬次跳變疊在一起看眼圖這個(gè)名字起得非常形象。把示波器的時(shí)基設(shè)到一個(gè)UI或幾個(gè)UI的寬度范圍內(nèi)讓成千上萬個(gè)碼元的波形持續(xù)累加在同一塊屏幕上由于信號(hào)有上升時(shí)間、有過沖、有抖動(dòng)所有跳變沿會(huì)像“疊膠片”一樣層疊起來最終形成一只只像眼睛一樣的輪廓。接收端在每一個(gè)UI的特定位置采樣如果這只“眼睛”張得足夠大、足夠圓潤采樣點(diǎn)就能穩(wěn)定落在高低電平的分離區(qū)域誤碼率就低如果“眼睛”瞇成一條縫哪怕靜態(tài)電壓看起來正常接收端也可能在某個(gè)瞬間判錯(cuò)電平。眼圖實(shí)際上是信號(hào)完整性的“統(tǒng)計(jì)戶口本”它把時(shí)域的幅度失真、時(shí)間域的抖動(dòng)、碼間干擾等所有因素全部投影到一張圖上。理解這一點(diǎn)很重要眼圖不是某一個(gè)瞬間的真實(shí)波形而是一個(gè)長期的統(tǒng)計(jì)疊加結(jié)果。示波器上顯示的每一個(gè)光點(diǎn)都代表成千上萬次跳變中的一個(gè)采樣點(diǎn)亮度越高說明信號(hào)在這個(gè)位置停留的時(shí)間越久邊界越模糊說明信號(hào)在這里“飄”得越厲害。1.3 眼圖能暴露哪些問題從圖上能讀出的信息大概分三個(gè)方向幅度方向、時(shí)間方向、邊沿形態(tài)。幅度方向的問題會(huì)表現(xiàn)為眼睛上下變小——驅(qū)動(dòng)擺幅不足、長走線損耗、連接器插損過大都會(huì)讓眼高收窄。時(shí)間方向的問題會(huì)表現(xiàn)為眼睛左右變小——各類抖動(dòng)源會(huì)讓跳變沿在時(shí)間軸上“左右搖擺”。邊沿形態(tài)則更多反映反射和阻抗突變——上升沿出現(xiàn)回勾、臺(tái)階說明通道里有明顯的反射點(diǎn)。有些工程師習(xí)慣拿普通探頭直接在USB連接器的D/D-上點(diǎn)兩下看看有沒有波形就完了這在Full Speed下面是可行的在High Speed下面基本是在賭運(yùn)氣。原因后面會(huì)專門講。先記住一個(gè)結(jié)論USB 2.0高速眼圖測(cè)試的核心不是“能不能看到波形”而是“能不能在標(biāo)準(zhǔn)定義的條件下看到可重復(fù)、可判定、可定位問題的量化波形”。2. 測(cè)試系統(tǒng)的搭建帶寬怎么選、探頭怎么接、治具怎么搭2.1 示波器帶寬不是“能測(cè)到480Mbps信號(hào)”就夠很多人第一反應(yīng)是信號(hào)才480Mbps找個(gè)1GHz示波器足夠了吧這個(gè)判斷低估了上升沿對(duì)帶寬的需求。數(shù)字信號(hào)的頻寬主要由上升時(shí)間決定480Mbps的USB 2.0高速信號(hào)上升時(shí)間典型值在500ps量級(jí)。工程上有一個(gè)常用的估算公式儀器帶寬 ≥ 0.35 / TrTr是上升時(shí)間。按Tr500ps算0.35/500ps≈700MHz這只是一個(gè)理論下限。實(shí)際測(cè)量時(shí)為了準(zhǔn)確還原上升沿形態(tài)、測(cè)量抖動(dòng)以及進(jìn)行合規(guī)性掩碼測(cè)試業(yè)界普遍建議至少使用2GHz以上的實(shí)時(shí)示波器USB-IF認(rèn)證級(jí)別的測(cè)試更是通常直接上3GHz到4GHz。帶寬不夠會(huì)有什么后果上升沿被示波器自身的響應(yīng)拉緩原本500ps的邊沿量出來變成1ns眼圖的邊界會(huì)比真實(shí)情況更加“圓潤”——對(duì)高頻損耗本身很嚴(yán)重的通道來說這種假象可能掩蓋真實(shí)的高頻塌陷導(dǎo)致你誤判“眼圖還不錯(cuò)”。我見過有人拿500MHz示波器測(cè)USB 2.0高速眼圖測(cè)出來還“挺圓”換到2GHz示波器上一測(cè)眼睛幾乎全閉上了。所以第一步先確認(rèn)你示波器的模擬帶寬別被“帶寬1GHz以上”這種宣傳語迷惑。另外提一句采樣方式和帶寬的區(qū)別。臺(tái)式實(shí)時(shí)示波器直接采集連續(xù)波形適合測(cè)眼圖有些USB測(cè)試用的是采樣示波器等效時(shí)間采樣只適合重復(fù)信號(hào)不適合真實(shí)數(shù)據(jù)碼型。做一般產(chǎn)品調(diào)試一臺(tái)2GHz~4GHz帶寬、20GS/s采樣率的實(shí)時(shí)示波器基本通吃。2.2 差分探頭與連接方式USB 2.0高速信號(hào)是差分傳輸規(guī)范里所有眼圖、擺幅、時(shí)序參數(shù)都是針對(duì)D/D-的差分信號(hào)定義的所以正規(guī)做法是用差分有源探頭直接測(cè)差分對(duì)。差分有源探頭能在探頭前端就做相減對(duì)共模噪聲有很強(qiáng)的抑制能力這是普通單端探頭兩端夾線測(cè)出來的數(shù)據(jù)無法比擬的。單端探頭還有一個(gè)隱藏問題地線夾一長地環(huán)路等效電感會(huì)和高頻分量發(fā)生諧振你會(huì)在波形上看到原本不存在的振鈴最后查了半天發(fā)現(xiàn)是探頭自己引入的。差分有源探頭接上之后還有一個(gè)很多人忽略的關(guān)鍵動(dòng)作通道去偏斜de-skew。兩根差分探頭內(nèi)部通道的傳輸延時(shí)未必完全一致如果不做校準(zhǔn)差分信號(hào)會(huì)出現(xiàn)假的不對(duì)稱眼圖上的交叉點(diǎn)位置會(huì)偏移甚至把共模成分當(dāng)成差分信號(hào)的一部分。示波器菜單里一般都有de-skew校準(zhǔn)功能實(shí)測(cè)之前一定先做一次。具體的做法是把兩根探頭鉤在同一個(gè)方波源上調(diào)節(jié)其中一路的延時(shí)直到兩條通道的上升沿完全重合。這個(gè)動(dòng)作花不了兩分鐘但對(duì)測(cè)量結(jié)果的影響是決定性的。2.3 測(cè)試治具與測(cè)試點(diǎn)TP1/TP2/TP3分別代表什么USB 2.0的合規(guī)測(cè)試并不是讓你拿著手持探頭去點(diǎn)連接器引腳而是通過標(biāo)準(zhǔn)的測(cè)試治具夾具把信號(hào)引出來。規(guī)范里一般把測(cè)量點(diǎn)分為三種TP1是芯片端收發(fā)器引腳附近、TP2是連接器端USB座引腳處、TP3是線纜遠(yuǎn)端。對(duì)送測(cè)的設(shè)備側(cè)Device信號(hào)質(zhì)量測(cè)試通常要求在TP2點(diǎn)完成對(duì)Hub這類需要繼續(xù)向下游傳輸信號(hào)的設(shè)備還需要關(guān)注線纜側(cè)TP3的信號(hào)質(zhì)量。為什么不能直接拿探頭點(diǎn)連接器第一手持探頭很難保證兩根信號(hào)線的探測(cè)點(diǎn)完全對(duì)稱探測(cè)本身就會(huì)破壞差分場(chǎng)的對(duì)稱性第二探頭前端和地線會(huì)給高速網(wǎng)絡(luò)引入附加電容和阻抗不連續(xù)影響被測(cè)信號(hào)。測(cè)試治具一般由夾具PCB、SMA接口和配套測(cè)試負(fù)載組成對(duì)高頻來說是可控的、可重復(fù)的標(biāo)準(zhǔn)接口插損和反射都是校準(zhǔn)過的。測(cè)試治具上通常還有測(cè)試負(fù)載選項(xiàng)。規(guī)范規(guī)定在測(cè)試點(diǎn)需要端接一顆45.25Ω的差分測(cè)試負(fù)載它模擬的是USB線纜90Ω的差分特征阻抗。如果你的被測(cè)設(shè)備是Host側(cè)有些規(guī)范場(chǎng)景還需要額外加容性負(fù)載模擬線纜影響具體看你的測(cè)試目的是研發(fā)調(diào)試還是送認(rèn)證研發(fā)階段先把阻抗匹配和負(fù)載接對(duì)就行。2.4 觸發(fā)與采集參數(shù)怎么設(shè)眼圖測(cè)試的關(guān)鍵是讓波形“對(duì)齊”疊加。實(shí)際操作中示波器可以設(shè)置在任意數(shù)據(jù)沿上觸發(fā)然后把時(shí)基展開到1個(gè)UI~2個(gè)UI的寬度因?yàn)閿?shù)據(jù)是持續(xù)高速翻轉(zhuǎn)的所有跳變沿會(huì)在屏幕上反復(fù)疊加。打開無限余輝Infinite Persistence模式讓亮度和累積效應(yīng)自然顯示出眼圖的輪廓。采樣率建議至少設(shè)到信號(hào)帶寬的5~10倍例如2GHz帶寬示波器配上10GS/s以上的采樣率如果示波器支持最好在眼圖測(cè)試菜單里讓軟件自動(dòng)設(shè)置。采集時(shí)間要足夠長至少要累積數(shù)百萬個(gè)UI的波形尤其是在做抖動(dòng)分析時(shí)UI數(shù)量太少統(tǒng)計(jì)出來的隨機(jī)抖動(dòng)和確定性抖動(dòng)都不具備代表性。我自己習(xí)慣讓示波器跑幾十秒甚至更久中途切出去看一眼波形穩(wěn)定后再讀數(shù)。很多人怕麻煩盯著屏幕看了三五秒就截圖走了這個(gè)習(xí)慣在調(diào)試偶發(fā)問題時(shí)特別容易漏掉關(guān)鍵信息。3. 完整實(shí)測(cè)流程從Test Packet到掩碼判定3.1 讓設(shè)備進(jìn)入高速測(cè)試模式想測(cè)出符合USB規(guī)范意義的眼圖DUT不能只在正常通信狀態(tài)下隨機(jī)抓取而是要讓收發(fā)器持續(xù)發(fā)送特定的測(cè)試碼型。USB 2.0規(guī)范定義了多種測(cè)試模式TEST_SE0_NAK讓設(shè)備在高速模式下響應(yīng)NAK、TEST_J持續(xù)發(fā)送J態(tài)、TEST_K持續(xù)發(fā)送K態(tài)、TEST_PACKET發(fā)送特定的數(shù)據(jù)包碼型。其中信號(hào)質(zhì)量測(cè)試主要用TEST_PACKET它是一段精心設(shè)計(jì)的碼型包含長串連續(xù)的1/0序列和快速翻轉(zhuǎn)序列能在統(tǒng)計(jì)上覆蓋最壞情況的碼間干擾ISI。設(shè)備怎么進(jìn)入測(cè)試模式取決于你的硬件能力。如果芯片和驅(qū)動(dòng)支持可以通過芯片供應(yīng)商提供的調(diào)試工具或寄存器寫入讓設(shè)備在枚舉到高速狀態(tài)后進(jìn)入對(duì)應(yīng)的測(cè)試模式也可以借助上位機(jī)軟件發(fā)USB控制請(qǐng)求。有的示波器供應(yīng)商提供的USB測(cè)試應(yīng)用會(huì)引導(dǎo)你完成這個(gè)過程。需要提醒的是測(cè)試時(shí)設(shè)備必須處于高速連接狀態(tài)不能跑在Full Speed否則眼圖完全是另一種形態(tài)測(cè)出來的結(jié)果沒有意義。我遇到過不止一次DUT聲稱支持高速但實(shí)際枚舉后因?yàn)槲帐质〗导?jí)成了Full Speed拿Full Speed的眼圖去套高速掩碼測(cè)出來的數(shù)據(jù)當(dāng)然莫名其妙。3.2 示波器上的眼圖建立與測(cè)量搭建好硬件鏈路、DUT進(jìn)入TEST_PACKET模式后接下來是示波器操作。把通道配置為差分如果是差分探頭自動(dòng)就是垂直標(biāo)度調(diào)整到能看到完整差分?jǐn)[幅通常是±800mV量級(jí)時(shí)基改到2ns/div左右使一兩個(gè)UI能完整顯示。然后打開眼圖模式或者直接觸發(fā)數(shù)據(jù)沿并開啟無限余輝。此時(shí)屏幕上應(yīng)該出現(xiàn)一個(gè)清晰的“8”字形眼圖輪廓。如果眼圖散亂、無法穩(wěn)定成圖先檢查觸發(fā)設(shè)置如果是示波器自動(dòng)眼圖功能一般會(huì)自行計(jì)算時(shí)鐘恢復(fù)CDR來對(duì)齊數(shù)據(jù)。我這里說一下時(shí)鐘恢復(fù)接收端并不是按發(fā)送端的原始時(shí)鐘采樣的而是從數(shù)據(jù)流里恢復(fù)出一個(gè)跟蹤時(shí)鐘所以示波器的眼圖也要模擬這個(gè)恢復(fù)過程通常用的是PLL模型或恒定頻率恢復(fù)。不同恢復(fù)模型可能讓眼圖開口略有差異合規(guī)測(cè)試軟件里會(huì)按規(guī)范指定模型研發(fā)調(diào)試時(shí)選默認(rèn)模型即可。眼圖成型后可以打開眼圖參數(shù)測(cè)量。示波器會(huì)自動(dòng)算出眼高、眼寬、上升時(shí)間、下降時(shí)間、抖動(dòng)等參數(shù)把光標(biāo)挪到眼圖中央的菱形開口處讀數(shù)會(huì)跳出來。這個(gè)讀數(shù)比你肉眼看屏幕估算要靠譜得多因?yàn)樗腔趲资f甚至上百萬個(gè)UI做統(tǒng)計(jì)算出來的。3.3 掩碼長什么樣怎么理解它的邊界掩碼是規(guī)范畫在眼圖上的一塊禁入?yún)^(qū)域。以USB 2.0高速信號(hào)為例掩碼通常是一個(gè)位于眼圖中央的菱形/六邊形區(qū)域標(biāo)出了在某些特定幅度和時(shí)序坐標(biāo)下“不允許信號(hào)踩入”的范圍。不同版本的測(cè)試規(guī)范、不同的限值文件會(huì)讓掩碼的具體尺寸略有差異所以測(cè)試時(shí)一定要選擇正確的限值文件別拿舊版本的掩碼去下結(jié)論。為什么掩碼是菱形而不是方形因?yàn)榻邮斩说呐袥Q點(diǎn)是理想化地處于UI正中央但對(duì)于一個(gè)帶有抖動(dòng)的信號(hào)時(shí)間裕量和幅度裕量是互相牽連的你離理想采樣時(shí)刻越遠(yuǎn)允許的電壓噪聲裕量就越小越接近UI邊界時(shí)域上根本不允許電平有偏差。菱形正好反映了這種“時(shí)間越靠近邊界幅度裕量越低”的關(guān)系。在實(shí)際操作中我習(xí)慣把掩碼測(cè)試的結(jié)果連同眼高、眼寬、TJ/RJ等參數(shù)一起記錄因?yàn)檠诖a只是“過沒過”參數(shù)才是定位問題的線索。比如掩碼FAIL但眼圖只是邊緣擦線和整體崩塌的修復(fù)方向完全是兩碼事。前者可能是裕量偏緊重點(diǎn)看損耗和驅(qū)動(dòng)能力后者可能是鏈路有嚴(yán)重反射或干擾要查的東西就多了。3.4 眼圖怎么看從一張圖上讀出有效信息關(guān)于“眼圖怎么看”我給一個(gè)速記套路適合剛接觸的人照著做拿到一張眼圖先看中央開口——開口越大越接近長方形越好然后看上下兩條“眼皮”的厚度——眼皮越厚說明幅度噪聲和對(duì)準(zhǔn)不良越大接著看跳變沿的交叉點(diǎn)是否聚攏在同一個(gè)位置交叉點(diǎn)如果散開成一條粗斑說明共?;驎r(shí)序受某種周期性干擾最后看上升沿/下降沿有沒有明顯的“回勾”或臺(tái)階有就說明通道有反射。我見過很多剛?cè)胄械墓こ處熌玫揭粡堁蹐D第一反應(yīng)就是“這眼圖好差”但問他差在哪、哪類問題引起的、該往哪個(gè)方向查就說不出來了。眼圖測(cè)試的價(jià)值不只是出結(jié)論更重要的是把模糊的“信號(hào)質(zhì)量不好”翻譯成具體的“眼高不夠”或“交叉點(diǎn)偏移”這樣硬件工程師才能對(duì)癥下藥。4. 眼圖參數(shù)拆解眼高眼寬抖動(dòng)每個(gè)數(shù)值背后都是一類信號(hào)問題4.1 眼高與眼寬裕量的兩個(gè)維度眼高指的是眼圖中央垂直方向的開口大小單位一般是mV它代表了接收端區(qū)分高電平和低電平的幅度裕量。USB 2.0高速模式規(guī)范的差分輸出電壓擺幅典型值約400mV不同版本規(guī)范表述有細(xì)微差別但眼高一定要考慮通道損耗和反射之后的“凈開口”通常遠(yuǎn)小于這個(gè)值。眼高偏低先查三個(gè)方向DUT驅(qū)動(dòng)強(qiáng)度/擺幅配置、PCB走線的插損、連接器和線纜是否引入額外損耗。眼寬是眼圖中央水平方向的開口單位是ps或UI百分比它決定接收端在采樣時(shí)刻能否獲得足夠的建立保持時(shí)間。眼寬被壓縮多半是抖動(dòng)造成的——包括驅(qū)動(dòng)端的隨機(jī)抖動(dòng)也包括數(shù)據(jù)相關(guān)抖動(dòng)比如一長串同樣的碼元造成基線漂移再遇到翻轉(zhuǎn)時(shí)邊沿位置發(fā)生變化。有些接收端芯片對(duì)眼寬極敏感眼寬不足會(huì)導(dǎo)致“丟包-重試-再丟包”這種非常難查的偶發(fā)問題。眼高和眼寬并不是完全獨(dú)立的。通道損耗增大時(shí)眼高會(huì)下降同時(shí)由于碼間干擾增強(qiáng)眼睛的橫向開口也會(huì)受影響眼圖整體會(huì)同時(shí)“變扁”和“變窄”。反過來如果是電源紋波耦合進(jìn)來的周期性抖動(dòng)通常眼寬先受影響眼高變化不明顯。這兩個(gè)指標(biāo)一起看能幫你把問題分類。4.2 抖動(dòng)總抖動(dòng)、確定性抖動(dòng)與隨機(jī)抖動(dòng)眼寬的數(shù)值背后是抖動(dòng)的故事。示波器報(bào)告里常見的幾個(gè)參數(shù)總抖動(dòng)TJ、確定性抖動(dòng)DJ、隨機(jī)抖動(dòng)RJ。DJ再細(xì)分下去還有數(shù)據(jù)相關(guān)抖動(dòng)含ISI、占空比失真DCD、周期性抖動(dòng)PJ等。我簡單列一個(gè)對(duì)應(yīng)關(guān)系抖動(dòng)類型典型來源眼圖上的表現(xiàn)隨機(jī)抖動(dòng)(RJ)熱噪聲、晶振相位噪聲眼邊界彌散、呈高斯分布邊界比較“虛”數(shù)據(jù)相關(guān)抖動(dòng)(ISI)通道頻率響應(yīng)不均、碼型效應(yīng)長碼型和短碼型的邊沿位置不同出現(xiàn)多重邊界占空比失真(DCD)驅(qū)動(dòng)閾值偏移、上升/下降時(shí)間不對(duì)稱交叉點(diǎn)偏移、眼圖上下不對(duì)稱周期性抖動(dòng)(PJ)電源紋波、開關(guān)噪聲、時(shí)鐘耦合眼邊界出現(xiàn)周期性波動(dòng)可能看到“鬼影”調(diào)試抖動(dòng)問題時(shí)我通常先看DJ和RJ的占比。如果DJ占大頭多半是鏈路設(shè)計(jì)問題比如走線阻抗不連續(xù)、端接不對(duì)、連接器質(zhì)量差如果RJ占大頭重點(diǎn)查參考時(shí)鐘的相位噪聲、電源的隨機(jī)噪聲以及驅(qū)動(dòng)芯片本身的抖動(dòng)特性。被動(dòng)等待時(shí)鐘線和數(shù)據(jù)線之間的干擾耦合也會(huì)讓RJ異常變大這種情況在布局擁擠的板子上很常見。示波器軟件里一般能給出抖動(dòng)分解的浴缸曲線Bathtub Curve那條曲線的斜率能很直觀地反映RJ和DJ的比例值得多看幾眼。4.3 上升時(shí)間與單調(diào)性容易被忽略的細(xì)節(jié)上升時(shí)間是USB 2.0高速眼圖測(cè)試報(bào)告里默認(rèn)輸出的一項(xiàng)參數(shù)但它常常被忽略。上升時(shí)間主要由驅(qū)動(dòng)器的輸出能力和通道帶寬共同決定。如果上升時(shí)間過慢說明通道對(duì)高頻分量的衰減過大這會(huì)讓眼圖的張開速度變慢眼寬的有效區(qū)域被壓縮。如果上升時(shí)間過快伴隨的往往是過沖和振鈴這會(huì)抬高信號(hào)的低頻分量串?dāng)_風(fēng)險(xiǎn)也會(huì)上升。規(guī)范對(duì)高速模式上升時(shí)間大約在500ps量級(jí)有要求不同芯片會(huì)有差異但“過快”和“過慢”都不好理想值是接近芯片數(shù)據(jù)手冊(cè)的典型值。單調(diào)性是指信號(hào)邊沿是否只朝一個(gè)方向變化、沒有回退。上升沿中出現(xiàn)向下的回勾或者下降沿中出現(xiàn)向上的臺(tái)階都叫非單調(diào)邊沿。它通常意味著信號(hào)在某處遭遇了阻抗突變產(chǎn)生了反射反射波疊加到入射波上就形成了回勾。非單調(diào)邊沿最大的危害在接收端如果回勾的位置正好跨越了接收閾值可能出現(xiàn)“二次觸發(fā)”或誤判導(dǎo)致接收器在同一個(gè)UI內(nèi)采樣到多次跳變。在眼圖上你會(huì)看到眼圖邊沿附近有向內(nèi)“凹陷”的輪廓這是典型的反射指紋。4.4 交叉點(diǎn)電壓與共模偏移看到這里如果你以為眼圖只看差分信號(hào)就夠了那就漏了一個(gè)關(guān)鍵點(diǎn)交叉點(diǎn)電壓。差分信號(hào)的交叉點(diǎn)是指D和D-波形相交的位置對(duì)應(yīng)當(dāng)?shù)?V差分電平處。在USB 2.0高速模式下交叉點(diǎn)電壓規(guī)范里和共模范圍是有關(guān)系的它體現(xiàn)了驅(qū)動(dòng)器的差分對(duì)稱性和共模電平設(shè)置。交叉點(diǎn)如果明顯偏離理想位置說明差分驅(qū)動(dòng)存在不對(duì)稱。原因可能是驅(qū)動(dòng)芯片內(nèi)部的上拉/下拉電阻失配也可能是PCB上D/D-的走線長度不等或負(fù)載不一致。交叉點(diǎn)偏移還會(huì)影響接收端的共模接收范圍嚴(yán)重時(shí)會(huì)讓對(duì)端設(shè)備在高速握手階段失敗出現(xiàn)“能枚舉但跑高速不穩(wěn)定”的現(xiàn)象。實(shí)際測(cè)量時(shí)示波器可以直接測(cè)交叉點(diǎn)電壓和共模電壓。我習(xí)慣把交叉點(diǎn)電壓和眼高眼寬一起登記在測(cè)試記錄表里因?yàn)楹芏唷芭及l(fā)識(shí)別失敗”的案子最后查來查去眼高眼寬都過得去就是交叉點(diǎn)電壓飄得厲害把D/D-的等長誤差和芯片周圍的分壓電阻精度一查問題就水落石出了。5. 實(shí)測(cè)中的異常眼圖與定位思路5.1 眼寬塌陷抖動(dòng)到底從哪來有一個(gè)客戶的產(chǎn)品眼圖開口寬度只有規(guī)范要求的六成眼高倒還正常。從參數(shù)上看TJ明顯偏大DJ和RJ都有貢獻(xiàn)。先把DJ拆開看發(fā)現(xiàn)數(shù)據(jù)相關(guān)抖動(dòng)ISI占了大頭——這說明問題出在通道的頻率響應(yīng)上而不是單純的隨機(jī)噪聲。查通道D/D-走線換了兩層過孔打了四個(gè)走線末端還掛了一小段測(cè)試點(diǎn)殘留。雖然單段走線的長度不算夸張但層間過孔阻抗和走線寬度的變化積累起來總插損就能把480Mbps信號(hào)的高頻分量吃掉不少。處理方案是優(yōu)化過孔設(shè)計(jì)、把測(cè)試點(diǎn)殘樁縮短到200mil以內(nèi)、調(diào)整走線寬度使參考層連續(xù)。改板后眼寬恢復(fù)到了規(guī)范值的九成以上。這個(gè)案例說明一個(gè)原則眼寬塌陷時(shí)先做抖動(dòng)分解DJ占大頭就按通道反射/損耗去查RJ占大頭再查時(shí)鐘和電源。這句話說起來簡單但能幫你省掉大量盲目的“這里貼銅箔、那里加電容”的試錯(cuò)時(shí)間。5.2 眼圖出現(xiàn)“重影”阻抗不連續(xù)與連接器虛焊眼圖上如果出現(xiàn)明顯的“雙線”或“重影”也就是同一個(gè)位置的邊界有兩三條亮線多半是通道里有明顯的阻抗不連續(xù)點(diǎn)。最常見的位置在連接器——USB座本身是機(jī)械結(jié)構(gòu)引腳焊盤、外殼地和差分對(duì)之間的間隙都會(huì)制造不連續(xù)。其次是連接器虛焊SMT的USB座引腳虛焊時(shí)引腳和焊盤之間的寄生電容和接觸電阻會(huì)隨溫度變化眼圖重影也會(huì)時(shí)有時(shí)無。遇到重影先用放大鏡或X-ray看連接器和焊點(diǎn)再用萬用表量接觸電阻但更高效的方法是做TDR時(shí)域反射計(jì)測(cè)試。TDR可以告訴你反射點(diǎn)離測(cè)試端多遠(yuǎn)、阻抗是偏高還是偏低直接對(duì)應(yīng)到到底是連接器虛焊還是走線突變。沒有TDR設(shè)備的話用示波器的階躍響應(yīng)也能大概看個(gè)七八分但精度遠(yuǎn)不如專用TDR。我做信號(hào)完整性調(diào)試時(shí)TDR基本是和眼圖配套使用的眼圖告訴你“壞了”TDR告訴你“壞在哪一段”。5.3 眼高不足損耗與驅(qū)動(dòng)配置眼高不足最常見的兩個(gè)原因一是通道損耗過大二是驅(qū)動(dòng)器擺幅本身就不夠。通道損耗方面PCB板材、走線長度、過孔數(shù)量、連接器損耗都會(huì)壓縮眼高。FR4板材在480MHz基頻和更高次諧波上的損耗雖然不是特別夸張但如果走線拉長到8英寸以上眼高衰減就會(huì)很可觀。這時(shí)候要么縮短走線要么改用低損耗板材要么在芯片端調(diào)整預(yù)加重如果芯片支持。驅(qū)動(dòng)器擺幅方面很多USB 2.0收發(fā)芯片的驅(qū)動(dòng)強(qiáng)度或擺幅是可以配置的默認(rèn)配置未必是最優(yōu)的。如果芯片手冊(cè)里給了輸出擺幅調(diào)節(jié)寄存器建議在做板前先和FAE確認(rèn)默認(rèn)值是否滿足USB-IF的擺幅范圍。我遇到過一批芯片批次差異導(dǎo)致擺幅偏低用寄存器把驅(qū)動(dòng)強(qiáng)度調(diào)高一檔后眼高直接從臨界值拉回到充足區(qū)間。不過也要小心驅(qū)動(dòng)強(qiáng)度調(diào)太高會(huì)加劇過沖和振鈴調(diào)完一定要重測(cè)單調(diào)性和交叉點(diǎn)電壓。5.4 非單調(diào)邊沿反射與Stub效應(yīng)非單調(diào)邊沿沿上有回勾是反射的最直接表現(xiàn)。反射源可能是過孔Stub太長、BGA出線區(qū)域的走線阻抗偏低、也可能是連接器附近的地不完整。我調(diào)試過一塊板子USB差分對(duì)從芯片BGA出線后經(jīng)過了一個(gè)長達(dá)25mil的過孔殘樁上升沿上出現(xiàn)一個(gè)明顯的回勾位置大概在過孔之后。把過孔換成背鉆Stub回勾就消失了。另一個(gè)典型案例是差分對(duì)靠近板邊走了很長一段板邊地平面不完整導(dǎo)致回流路徑繞遠(yuǎn)形成了一個(gè)小的阻抗突變同樣會(huì)產(chǎn)生非單調(diào)邊沿。這類問題在單板調(diào)試階段單測(cè)直流阻抗完全看不出來但在眼圖上無處遁形。排查非單調(diào)邊沿時(shí)建議把波形放大到單個(gè)邊沿來看配合游標(biāo)量出回勾的寬度和位置再用整個(gè)差分網(wǎng)絡(luò)的S參數(shù)或TDR來做對(duì)應(yīng)?;毓磳挾韧ǔ?duì)應(yīng)著反射點(diǎn)到驅(qū)動(dòng)端的來回時(shí)間結(jié)合PCB走線長度可以反推反射點(diǎn)的大致位置。5.5 從一次真實(shí)調(diào)試看完整排查鏈路最后用一個(gè)完整案例把所有環(huán)節(jié)串起來。某產(chǎn)品USB口在高溫老化后偶發(fā)識(shí)別失敗常溫下測(cè)試總是通過。我按下面的順序排查第一步先用2GHz示波器配合USB治具做眼圖測(cè)試結(jié)果顯示高溫下眼高從420mV掉到300mV眼寬縮水20%掩碼邊緣擦線。第二步查溫度與信號(hào)的關(guān)系芯片驅(qū)動(dòng)在高溫下輸出擺幅下降這是正常的但下降幅度不應(yīng)該這么大于是懷疑通道本身在高溫下?lián)p耗加劇。第三步用TDR量整個(gè)USB差分鏈路發(fā)現(xiàn)連接器附近的阻抗從90Ω掉到78Ω懷疑是連接器內(nèi)部彈片或焊點(diǎn)在高溫下接觸壓力下降。第四步顯微鏡檢查發(fā)現(xiàn)USB座D引腳焊盤確實(shí)有輕微虛焊痕跡補(bǔ)焊后高溫下眼圖恢復(fù)穩(wěn)定。這條鏈路看著簡單但每一步都依賴前面測(cè)試的量化數(shù)據(jù)做指引。如果沒有眼圖測(cè)試我可能會(huì)一直懷疑電源、懷疑固件繞很多彎路。所以我的經(jīng)驗(yàn)是遇到USB高速信號(hào)相關(guān)的偶發(fā)問題第一件事就是搬出示波器看眼圖讓數(shù)據(jù)說話比憑空猜原因有效率得多。最后再分享一個(gè)小技巧眼圖測(cè)試不等于合規(guī)測(cè)試研發(fā)階段哪怕沒有標(biāo)準(zhǔn)的USB-IF治具也可以用差分探頭直接測(cè)在芯片端或連接器端先建立一個(gè)自己的“基準(zhǔn)眼圖”存檔。等拿到標(biāo)準(zhǔn)治具后再用同一套方法測(cè)一遍并把數(shù)據(jù)對(duì)齊。這樣出了問題至少能快速判斷是設(shè)計(jì)問題還是測(cè)試條件差異省下大量重復(fù)調(diào)試時(shí)間。