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