產(chǎn)品名稱:USB2.0信號測試分析應(yīng)用方案
產(chǎn)品型號:
更新時間:2024-08-18
產(chǎn)品簡介:
前安捷倫Agilent【現(xiàn) 是德KEYSIGHT】產(chǎn)品——堅 JET 和 吉時利KEITHLEY【現(xiàn) 泰克Tektronix】產(chǎn)品忠實用戶使用工程師——融 YOO于2011年共同創(chuàng)立,志在*電子測量行業(yè)代理經(jīng)銷商只專業(yè)做商務(wù)銷售,不專業(yè)做售前測試方案,不專業(yè)做售后使用培訓(xùn)的空白。USB2.0信號測試分析應(yīng)用方案
專業(yè)儀器設(shè)備和測試方案供應(yīng)商——上海堅融實業(yè)有限公司JETYOO INDUSTRIAL & 堅友(上海)測量儀器有限公司JETYOO INSTRUMENTS,由前安捷倫Agilent【現(xiàn) 是德KEYSIGHT】產(chǎn)品——堅 JET 和 吉時利KEITHLEY【現(xiàn) 泰克Tektronix】產(chǎn)品忠實用戶使用工程師——融 YOO于2011年共同創(chuàng)立,志在*電子測量行業(yè)代理經(jīng)銷商只專業(yè)做商務(wù)銷售,不專業(yè)做售前測試方案,不專業(yè)做售后使用培訓(xùn)的空白。
USB2.0信號測試分析應(yīng)用方案前言
USB 是很常見的串行協(xié)議。USB 有熱插拔的特性,當(dāng) USB 裝置插入主機時,主機會偵測到,并且軟件會對其作規(guī)劃,即插即用。USB 的連接線供應(yīng)裝置電源,可提供 DC +5V 的電壓,電流供應(yīng)約 100mA~500mA。
USB 的連接線共有四條,其中兩條是電源與地線,另兩條是訊號線,分別是 D+與 D-。一般情況兩條線的訊號是相反的,若其中一條的訊號為 High,則另一條的訊號就為 Low。如此的差動訊號能提升訊號抗噪聲抗干擾的能力,USB 就是利用 D+ D-兩條訊號線的差動訊號,來達(dá)成高速傳輸?shù)哪康摹?br />USB 主機端在沒有裝置連接時,D+ D-上會有一個 1.5K 奧姆的電阻接地,確保這兩條線是在接地狀態(tài)。可支持至127 個地址,也就是說,一個 USB 系統(tǒng)支持 127 個裝置,主機會周期性的探詢每個集線器以便得知裝置的連接狀態(tài)。以 USB2.0 而言,分為低速、全速及高速三個模式。低速傳輸率為 1.5M/s ,全速為 12M/s,高速為 480M/s。高速模式時,1 秒 / 480M ,每個 bit 的寬度約 2.08ns。
USB 封包簡介
封包是組成 USB 傳輸?shù)膯挝弧?一個 Transaction 通常由三個封包組成,但依傳輸型態(tài)而定,一個 Transaction 可能包含一個、兩個、三個封包:
圖一 USB 封包架構(gòu)概述
Token 封包:
每個 Transaction 以 Token 封包做起始。Token 封包定義裝置、Endpoint 數(shù)量,傳輸?shù)姆较?。其?SOF (Start Of Frame) Token包含目前的 frame 數(shù),而且會廣播 (broadcast) 給所有的 full-speed 裝置知道。SOF 也是一個不目標(biāo)的 Token。TokenPacket 長度固定為 4 個 Byte。
Data 封包:
Data 封包包含處理此動作的數(shù)據(jù)。 一個 Transaction 中, Data 封包的資料量為 1023 個 Bytes, 高速模式時可達(dá) 1024 個 Bytes以上,其中 Data0 及 Data1 是兩個基本的數(shù)據(jù)封包,這些數(shù)據(jù)封包都是接續(xù)在 Address 之后,且 Data0 及 Data1 采取交互出現(xiàn)方式以達(dá)到同步與除錯的效果。 另外在 USB2.0 當(dāng)中更增加了 Data2 及 MData 數(shù)據(jù)封包, 用于執(zhí)行高速的實時傳輸(IsochronousTransfers)。
e Handshake 封包:
除了實時型傳輸(Isochronous)之外,所有的傳輸都保證數(shù)據(jù)的傳遞正確。Handshake 封包響應(yīng)資料是否正確的被收到。若執(zhí)行處理動作中發(fā)生錯誤,此處理動作將重新執(zhí)行。
封包格式:
封包是執(zhí)行所有處理動作的機制。圖八是 USB 封包的基本格式。封包緊跟在 Synchronization sequence (SYNC,同步列) 之后,Synchronization sequence 使 USB 裝置能跟封包中的位速率同步。封包的 Type 由一個 Packet ID 來定義。Packet ID 之后是隨著封包 Type 而定義的信息,如 Address 或 Data。后,每個封包以一個 CRC (Cyclic Redundancy Check)做結(jié)尾。CRC 是用來確認(rèn)數(shù)據(jù)是否正確的傳輸。每個封包始使用 EOP (End Of Paekct) 狀態(tài)來做辨識。
圖二 USB 封包的基本格式
Synchronization sequence( 同步序列) ) :
圖九是 Synchronization sequence 的波形。Synchronization sequence 由八個 bit 組成,數(shù)值是二進(jìn)制的 00000001,依照 NRZI 編碼原理,數(shù)據(jù) 0 代表訊號要轉(zhuǎn)換,所以前七個 0 之中的每個 Bit 都會在相對應(yīng)的 Bit 時間中轉(zhuǎn)換,作用就好像提供了一組可用來同步的 Clock。
圖三 Synchronization sequence
Packet ID :
Packet ID定義封包的目的與內(nèi)容。封包主要有四種型態(tài):標(biāo)志(Token)、數(shù)據(jù)(Data)、交握(Handshake)及特殊。其中Token封包定義傳輸?shù)男蛻B(tài);Data封包接在Token之后,將傳輸?shù)臄?shù)據(jù)輸出或輸入USB裝置中,Handshake則是提供傳輸成功或失敗的訊息,特殊PID是針對USB2.0*的PID,包含了PING(檢查端點裝置是否能接受數(shù)據(jù))、SPLIT(高頻寬的USB分割傳輸)、PRE(低頻寬的USB前導(dǎo)封包)、ERR(分割傳輸任務(wù)錯誤)。
Packet ID 的訊號格式如圖四。 Packet ID 總共有 8 個 Bit, 前四個 Bit 代表 ID(Type Field), 后 4 個 Bit 是檢查字段 (Check Field),其值固定是 ID 的反向。如 ID 為二進(jìn)制的 1001,則檢查字段就是 0110,合起來就是 10010110。
圖四 Packet ID 訊號格式
封包種類:
所有處理動作都是由一個 Token 封包開始。USB 定義四種 Token 封包:SOF,IN, OUT,SETUP。圖十一是四個封包的 PID與功能描述。
圖五 四種 Token 封包狀態(tài)
SOF 封包:
USB 裝置用 SOF 封包來判斷訊框的起點。當(dāng)每個 frame 開始的時候,SOF 封包被送至每個全速的裝置。實時型傳輸裝置可經(jīng)由 SOF 封包來達(dá)到同步傳輸?shù)淖饔?。低速裝置不支持實時型傳輸,所以 SOF 封包不會送至低速裝置。
如圖六所示,SOF 封包包含一個長度為 11 bit 的 frame number(訊框號碼),接收器使用 5 bit 的 CRC 位來確認(rèn) frame number。
SOF 封包不含任何數(shù)據(jù),其傳輸也不保證一定成功。當(dāng) USB 裝置對此 SOF 封包 PID 檢查碼錯誤時,裝置忽略此封包;當(dāng)CRC 檢查錯誤時,忽略此 frame number。注意 PID 與 Frame Number 都是 LSB 在前面 MSB 在后面。
圖六 Start of Frame (SOF)
圖七是一個 SOF 封包的實際波形。PID 前四個 bit “0101" 就是 SOF 封包。PID 之后的是 11 bit 的 Frame Number,這個例子的 Frame Number 是 10101100010,換算為十進(jìn)制就是 1378,也就是第 1378 個 Frame。
圖七 SOF 封包實際波形
IN 封包:
Token 還有兩種封包,IN 封包與 OUT 封包。所謂 IN 與 OUT 是指對于 PC 而言。IN 封包是 PC 需要由裝置讀進(jìn)來數(shù)據(jù)時使用的;OUT 則是 PC 需要送出數(shù)據(jù)給裝置時使用的。IN 封包可以使用在中斷型傳輸、巨量型傳輸、控制型傳輸?shù)臄?shù)據(jù)時期、實時型傳輸?shù)葌鬏敗?br />圖八是 IN 封包格式示意圖與實際量測圖。如圖所示,除了基本的 Type 字段與 Check 字段之外,IN 封包包含 7 bit 的 DeviceAddress 與 4 bit 的 End Point Number。執(zhí)行 IN 封包動作時,首先 PC 送出一個 IN 封包,接著裝置回傳一個數(shù)據(jù)封包, 后 PC 送出一個交握封包給 Device,表示已收到資料。但在實時型傳輸中,IN 處理動作不使用交握封包。IN 傳輸所能傳輸?shù)臄?shù)據(jù)量取決于傳輸型態(tài)。
圖八 IN 封包格式示意圖與實際量測圖
圖九是一個實際的 IN 封包。PID 的前 4 bit 為 “1001" 就是 IN 封包的 ID。再來是 7 bit 的 Address,這個例子的 Address
是 “1"。再來是 4 bit 的 Endpoint,這個例子的 Endpoint 是 "0"。后是 5 bit 的 CRC。
圖九 IN 封包實際波形
OUT 封包:
當(dāng)數(shù)據(jù)將被送出給某個 Device 時,系統(tǒng)會進(jìn)行一個 OUT 傳輸。有三種傳輸型態(tài)用到 OUT 傳輸:巨量型傳輸、控制型傳輸?shù)臄?shù)據(jù)時期、 實時型傳輸。 OUT 封包除了 PID 之外, 其余數(shù)據(jù)格式都與 IN 封包相同, 一樣有 7 bit 的 Address, 4 bit 的 Endpoint(如圖十所示)。
圖十 OUT 封包格式示意圖與實際量測圖
圖十一是一個實際的 OUT 封包。PID 為“0001"就是 OUT 封包。這個例子的 Address 是“1"。再來是 4 bit 的 Endpoint,這個例子的 Endpoint 是 "0"。后是 5 bit 的 CRC。
圖十一 OUT 封包實際波形
SETUP 封包:
SETUP 封包只有在控制型傳輸?shù)脑O(shè)定階段使用。SETUP 處理動作啟動一個控制型傳輸,并且定義為設(shè)定階段。SETUP 處理動作在形式上類似一個 OUT 動作: SETUP 封包后跟著一個 Data0 封包與一個回復(fù)封包。SETUP 封包的目的是傳送一個要求給 Device 執(zhí)行。下圖是 SETUP 封包的格式。SETUP 封包除了 PID 之外,其余數(shù)據(jù)格式都與 IN/OUT 封包相同,一樣有 7bit 的 Address,4 bit 的 Endpoint(如圖十二所示)。
圖十二 SETUP 封包格式示意圖與實際量測圖
圖十三是一個實際的SETUP封包。 PID為 “1101" 就是SETUP封包。 這個例子的 Address是“1"。 再來是4 bit 的Endpoint,這個例子的 Endpoint 是 "0"。后是 5 bit 的 CRC。
圖十三 SETUP 封包實際波形
Data0 與 1 Data1 封包:
Data封包跟在IN、OUT、SETUP三種封包之后。IN封包之后的Data封包是將數(shù)據(jù)傳入PC;OUT與SETUP之后的封包是將數(shù)據(jù)傳出給Device。傳輸數(shù)據(jù)時,Data0封包與Data1 封包是交互的使用,如果此次傳輸數(shù)據(jù)是用Data0封包,則下次傳輸數(shù)據(jù)就是使用Data1封包,反之亦然。這是為了用來當(dāng)作一個同步機制使用。一個很大量的數(shù)據(jù),會被切成多個小封包來傳輸,此時 Data0 與Data1封包交互的使用就可以當(dāng)作一個同步的機制。在高速模式底下還有Data2及MData兩種實時傳輸數(shù)據(jù)封包。
圖十四是 Data0 與 Data1 的封包格式。PID 為“1100"就是 Data0 封包,PID 為 “1011"就是 Data1 封包。
圖十四 Data0 與 Data1 的封包格式
Data2 及 MData 兩種實時傳輸數(shù)據(jù)封包的 PID 分別為 0111 及 1111。
交握封包 (Handshake Packets) :
交握封包用來回報處理動作的完成狀況。交握封包有三種。
ACK封包:確認(rèn)數(shù)據(jù)正確無誤的被接收。
NAK封包:告知主機現(xiàn)在目標(biāo)裝置暫時無法接收或傳回數(shù)據(jù)。
STALL封包:無法完成傳輸,且需要軟件介入以便使得裝置能從STALL狀態(tài)復(fù)原。
在USB2.0中還有一種NYET封包,表示數(shù)據(jù)尚未備妥無法傳輸。NYET的PID為0110。
圖十五是三種交握封包的格式圖。交握封包沒有資料,也沒有 CRC,只有 SYNC 與 PID。ACK 的 PID 是 0010,NAK 的 PID是 1010,STALL 的 PID 是 1110。
圖十五 三種交握封包格式圖
前導(dǎo)封包 (Preamble Packet) :
前導(dǎo)封包用在低速傳輸時。 在傳送一個低速封包前, 一個前導(dǎo)封包必須被送出, 主機保證前導(dǎo)封包之后的封包是低速傳送。
圖十六是前導(dǎo)封包示意圖。 前導(dǎo)封包由一個 SYNC 與一個 PID 組成, PID 是 1100。 有一點必須注意的是, 前導(dǎo)封包不以 EOP結(jié)尾。
圖十六 前導(dǎo)封包示意圖
USB2.0 總線協(xié)議模塊設(shè)定
圖十七 孕龍科技 USB2.0 分析模塊
總線協(xié)議模塊設(shè)定方便又快速, 如圖十八所示使用者只需要依照連接說明將USB2.0硬件模塊連接至邏輯分析儀,在 USB2.0 總線協(xié)議模塊中設(shè)定高速模式,點下 OK 后就可以將 USB2.0 訊號譯碼。
圖十八 USB2.0 總線協(xié)議模塊
串行協(xié)定封包列表
為更加方便分析以及提高效率,孕龍邏輯分析儀更加在新版軟件中加入串行協(xié)議封包列表功能,能夠?qū)⒋杏嵦柌扇》獍温滹@示以直列方式把數(shù)據(jù)內(nèi)容顯示出來,讓使用者清楚了解各封包先后出現(xiàn)的時序關(guān)系。圖十九為USB2.0 訊號使用串行協(xié)議封包列表顯示的結(jié)果
圖十九 USB2.0 訊號使用串行協(xié)議封包列表顯示的結(jié)果
在圖十九中的封包列表,除了將各種 USB2.0 封包使用直列方式顯示外,在封包列表窗口上方更設(shè)置了過濾條件,依照 USB PID 規(guī)范可對已擷取封包進(jìn)行篩選,更可在龐大的數(shù)據(jù)封包中快速進(jìn)行分析。
USB2.0信號測試分析應(yīng)用方案總結(jié)
總線協(xié)議常常被應(yīng)用在嵌入式系統(tǒng)的設(shè)計中,但是若僅使用示波器分析這些訊號是非?;ㄙM時間的,孕龍的PC-BASE 邏輯分析儀可以提供工程師們更強大的觸發(fā)功能、近百種的總線協(xié)議譯碼模塊及便利的數(shù)據(jù)搜尋,讓工程師在開發(fā)產(chǎn)品時更能夠得心應(yīng)手,近期更推出了可與各大廠牌示波器進(jìn)行堆棧,藉以同時測量數(shù)字及模擬信號,快速解決電路開發(fā)中各種難題。
關(guān)于孕龍
「孕龍科技股份有限公司」Zeroplus Technology Co., Ltd.,于 1997 年創(chuàng)立。在 2004 年擴展事業(yè)版圖于電子量測儀器市場,研發(fā)團隊擁有新進(jìn)微處理控制技術(shù),開發(fā)出新技術(shù)之量測儀器-「PC-Based 邏輯分析儀」 ;du家創(chuàng)新技術(shù)獲得多項技術(shù),申請國家遍及各地,目前仍持續(xù)增加數(shù)量與國家。2005 年甫上市即獲得產(chǎn)業(yè)界 IC 上市公司等數(shù)百家科技大廠,及各大高等教育學(xué)府采用,締造優(yōu)異銷售成績,成為中國臺灣*zui高的邏輯分析儀。