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