1.USB host :在任何USB系統中,只能有一個USB主機(USB host or Root Hub)。由PC系統控制USB host及周邊裝置的溝通。
2.USB 周邊裝置:
a.網路集線器: 提供更多USB裝置的連接點。
b.USB功能裝置
- USB通訊協定的使用。
- 對標準的USB的操作提供反應。
- 提供裝置性能的描述性資訊。
USB架構
定義在一台主機和若干個附屬的USB裝置之的通信方式。
fig 1.從使用者看
通訊分層:
其中,
a. USB physical device:實際硬体。
b.Client Software:針對特定的USB裝置而在主機上運行的軟體。
c. USB System Software: 驅動程式
d. Usb Host controller:匯流排在主機上的介面,同時代表軟体和硬体的介面。透過它可以和USB裝置進行溝通。
提共主機和裝置的物理連接、發送連接、資料封包連接。
USB匯流排拓撲的組成。
- 主機和裝置;USB系統的基礎組成部份
- 物理拓撲結構;描述USB系統中的各組成部分是如何連接的.
- 邏輯拓撲結構;描述USB系統中各組成部分的地位和作用,以及從主機和裝置的角度觀察到的USB系統。
- 客戶軟體層和應用層的關係;描述從客戶軟体層所看到的應用層的情況,以及從應用層看到的客戶軟体層的情況
主機拓撲結構;
其中USB host為負責協調的關鍵及控制USB匯流排使用及監督。
USB device拓撲結構;描述USB系統中的各組成部分是如何連接的.
為了輔助主機辨認及確定USB device,裝置要提供用於辨識的資料,但其資料格式並不固定。
而是由其device class來決定。
USB匯流排的物理拓撲結構;
為樹狀連接,其中Hub也視為USB device,它是由一組USB的連接點所組成。
在連接樹的根部為USB host及一個Root Hub。"但禁止環狀連接"
在USB的架構中,提供具体功能的裝置稱為應用裝置。如果許多不同功能的裝置合在一起,也是一個複合裝置。(經由內部hub連接)。
USB邏輯拓撲結構
在物理結構上,周邊是透過Hub連接到Usb host上。在在程式邏輯上,Usb host可以視為直接與邏輯Usb device通訊。
客戶軟體層和應用層的關係
在USB 物理及邏輯上,其USB匯流排是被所有周邊裝置所共用的。但是對操縱USB應用裝置的客戶軟体來說,只需
關心周邊裝置上與它相關的介面,而不需顧慮其它的USB裝置。
-------------------------------------------
USB 2.0 系統架構及通訊協定
USB系統
當device連接網路時,該裝置就會有一個唯一個usb address,usb主機就可以此(usb address)來操作device。每個usb device可透過一個或多個通道來與usb host通訊,並all usb device 都會在零埠中有一個控制通道。(註冊,device information)
零埠中的描述資訊,可分:
- 標準;USB共同定義(廠商識別、裝置種類及電源)
- 類別;提供不同device class define.
- USB廠商;特定。
Hub;
- 將不同性質的usb device連接.
- 上遊連接主機,下遊連接device or hub
- 可偵測下遊的device step , remote並分配power.
- 內分為集線控制器(controller)及集線放大器(repeater)
USB匯流排硬体介面
電氣物性
Vbus,D+,D- and GND
傳輸率;
480Mb/s
12Mb/s
1.5Mb/s
編碼方式;NRZI(no return zero inverter)
USB 2.0規範概論
- USB 1.1 和USB 2.0相容.
- USB 1.1 device 在USB 2.0 system時,會工作在12Mb/s.
- 特性;
- 高速
- 連接簡單.
- 無須電源
- 有不同頻宽及距離
- 支援多裝置
- 提供電話語音及資訊傳輸(非同步及等時資料傳輸)
- 高傳真音效
USB 2.0資料通訊流
host and device間的service都是透過資料流來達成。而USB 匯流排使用提升效率,可允許不同資料流(速度及傳輸方式)"彼此獨立"進出同一個USB device。
1. 裝置端點(device endpoint)
device--> address-->endpoint
為host與device間通訊流的終點。USB device則是由一組彼此獨立端點所構成。
屬性;
- 匯流排頻率
- 匯流排延遲
- 端點顏寛
- 端點序號
- 除錯
- 最大長度
- 資料類型
- 方向
device init process:
connect USB bus,recive a bus reset signal,設定端點0作為裝置輸人和輸出端點。主機去檢查endpoint 0的設定。
2.USB通道(channel)
此為device的endpoint和host application間的溝通管道,其格式
- Stream 資料流;應用程式自定,不會被翻譯
- Message 訊息;必需符合USB bus定義,但也不會被翻譯。
其建立方式;
1.application 發出 I/O需求package(IRP)
2.其IRP有指定device, endpoint and data director
3.當device 反應其RIP則channel builder
3.傳輸類型;
- 控制;可靠、非週期,由host sendor ack 'start'。 usual send instruction and state
- 同步;週期、連續。常用於傳送與時間相關的資料。(會保留時間在資料中,但並不立即傳送)
- 插斷;低data、低速及固定延遲
- 批次;非週期、大量、可靠。
一。控制傳輸;
可傳送device setting、command、state and search。
- 建立連線;將資料需求從host -->device
- 傳送資料;按所建立連線方向傳送data
- 狀態回俴;device-->host
建立連線;host -->device point 發送Setup command package 。(資料可自定或USB定義)
其控制傳輸所用的[訊息通道]是雙向傳送的(具有輸入及輸出)。其中其所指定的最大長度是指其資料而非封包。(8~wMaxPacketSize)
傳送資料;
當建立連線後,其後送出資料時其結束點,
- 已傳輸由Setup封包所指定的資料量
- 收到一個data package,其長度為0或data length小於最大長度(最後一個package)
狀態回應;
傳送資料完後,host進入等待階段。若host不等待回應,而去送出資料,endpoint會認為被插斷。
或者host or device 收到一佪大於長度的回應則會去中斷controller channel。;若成功回傳,則成正式結束這次控制傳輸。
並由host決定下一個階段。
二、同步
特點;
- 固定延遲,對USB顏寛使用
- 傳送速度
- Error Tolerant(允許錯誤)
經由[同步channel]傳送。為單向的資料流通道。其傳送速度可以其最大長度來判斷是否可成立,若可以成可建立成功。
所以傳輸的資料長度,需等於或小於其設定長度,才可免於被匯流排截斷。也可由CRC來檢查是否有錯誤。
但不會因此來重傳(一般的傳輸模式可由handshking來檢查,改由IRP來回應)
三;插斷
只傳送或接收少量資料,不需常做動作,但是必須確定在固定時間內完成,故其需求
- 保證通道的最長反應時間
- 發生錯誤而重送時,需在下一週期時
也為單向的資料流通道,連接端點的描述資訊會指定通道的資料方向。並其送、發的最大長度。
故在建立插斷通道時,也會依其資料長度判斷是否可有足夠的頻寛。若可時才可有成功建立,與控制通道不同的是,
USB系統不會替插斷通道調整匯流排顏宽,故USB不一定能夠建立插斷通道。
由於端點所發送的資料封包,長度不可超過端點所設的wMaxPacketSize。若超過時,則需分割封包,並利用IRP來發送。
而接收端可設一個緩衝區來接收(資料及IRP)
其判斷完成方式;
- 已傳送的資料量和期待資料量相同
- 傳送長度為0或小於wMaxPacketSize封包
結束時,host會結束IRP並開始下一個IRP。但發生error時,需中止當前IRP並清除error後重新開始IRP。
因為裝置無法送出插斷要求,故由host發出"輸詢"。由其device回應(NAK or ...)來判斷是否需插斷傳輸。
四、批次
為了充分利用顏寛,其特性;
- 可利用整個匯流排顏寛
- 發生錯誤時,可重發
- 保證資料傳輸,但不保證傳送的頻寛及延遲
"只有匯流排有足夠頻宽時,才會進行傳輸",若不足時 並不會動作。其資料的長度可由自己決定(8,16,32及64b 並不會動作。其資料的長度可由自己決定(8,16,32及64byte)。
在傳送端時,其先由USB host讀取最大的長度設定,確定其傳送資料長度不會超過。以及wMaxPacketSize大小,所以在超過時會分割來傳送(只有最後為0或小於)。
在完成後,usb host controller會中止目前的IRP後重新開始IRP,若在接收端收到超出預期長度時則所有在這端端的批次傳輸IRP都會被中止。
因為在系統中的批次傳輸會競爭可用頻寛。所以不能預期其頻宽速度。
匯流排頻率決定於一個週期內最多可進行批次傳輸的數量。usb host controller可自行決定其批次傳輸的週期時間。而其以toggle機制來確保送發的同步。
USB匯流排協定層;
其USB封包中,基本上由下列組成單元;(傳輸時為LSB,least significant bit開始)
在封包第一欄SYNC欄位,為產生最大的邊緣轉換密度(edge Transition Density)以及EOF(end of packet,3bit=011)
- PID(packet identifier)由其前二bit分為;
- 封包類型;標記、資料、交握及專用。
- 8bit(PID,檢查碼)組成。(檢查碼為PID的二進制反碼)
- ADDR;在輸入、建立及輸出時需其裝置的位址。
- 在USB device收到bus packet時會去檢查其device addr及endpoint,若有不同時即會括去。
- 而在未初始化端點的裝置也會捨去,而其位址0保留做為特殊用(在被定位的裝置端點,在收到位址0的封包時都必須回應)
- 共有7bit(127+1)
- ENDP,endpoint
- 提供端點欄位,共4bits 除端點0(,1 controller channel)外其它則依設計要求。最多為16個
- 低速裝置,則最多2個endpoint ,4 channel
- Frame Number,段落序號(在PID,SOF後)
- 為一個11bit(最大3FFH)
- data
- 長度0~1023bytes
- CRC ,以其PID決定長度(5~16)
由PID可分為標記、資料、交握及專用。
a.標記(token packet);由PID,ADDR and ENDP。用於輸入、輸出及建立上。其參考是由USB HOST看(輸入,由usb device to usb host)
b.SOF,start of Frame packet
主機每1.00ms發出SOF packet.
c.data packet
其又分為DATA0,DATA1.(高速,DATA2,MDATA)
其data length依速度而不同
低速;8 byte
全速;1023
高速;1024
d.交握
回報資料傳送狀態,也可用來回應及拒紀命令及要求停止動作。
可分為;
- ACK;正確收到資料封包且PID也正確。
- NAK;裝置無法從主機收資料,或裝置沒有傳輸資料到host
- STALL;回應[輸入、輸出]標記封包,表示裝置無法進行傳、收資料。
-----------------------------------------------------------
並非所有場合中都有交握信號。
可以分為
- USB device對輸入標記封包的回應
收到錯標記 | 發送port | 發送data | 動作 |
Y | don't care | don't care | 不回應 |
N | reset | don't care | STALL |
N | no reset | N | NAK |
N | no reset | Y | data |
- USB host對輸入標記封包的回應
收到錯標記 | host 接收資料 | 動作 |
Y | N/A | 不回應,捨 |
N | N | 不回應,捨 |
N | Y | ACK,收 |
- USB device對輸出標記封包的回應
收到錯標記 | 接收中斷 | 時序同步錯 | USB可收 | 動作 |
Y | N/A | N/A | N/A | none |
N | Y | N/A | N/A | STALL |
N | N | N | N/A | ACK |
N | N | Y | Y | ACK |
N | N | Y | N | NAK |
接收中斷,USB的接收埠無法接收,回應STALL;時序 錯時回ACK並捨;USB可收,裝置忙錄?
- USB device對建立(setup)標記封包的回應
- 不能建立時回STALL或NAK。若可接收則須接收建立標記後的資料封包。如果沒經過建立標記的初始化,它必須忽略封包(資料)且不回應
-----------------------------------------------------------
封包交換的流程
A.批次傳輸
特點;錯誤檢測及重試方式。保證host and device間的資料不會傳送錯誤。
接收;
對USB device 發出標記,usb device endpoint會返回資料封包。如端點不能回資料時,就會回傳NAK ,STALL。
NAK,表Endpoint忙碌暫不回傳資料。
STALL,表示Endpoint被永久地停止,需進一步處理
若收到資料錯誤,則host 並不會回應給USB device。
發送;
對usb device endpoint發出"輸出標記",並一個data packet。若usb device endpoint正確接收,將返回
- ACK,正確接收(usb device) ,host可傳下一筆
- NAK,仍為正確接收(usb device),但因usb device忙碌。故資料捨去,host需重傳
- STALL,usb device發生error。host 需排除error。
- CRC16,資料錯誤並不會產生任何回應
B.控制傳輸
分為三階段;
建立連線,PID=Setup
傳送資料,?由輸入或輸出的過程構成和批次相同
回應,會以前一階段的資料流向回應,且只用DATA1 PID。
若控制端點在控制傳輸的資料和狀態階段中發送STALL,它必須對所有收的封包回對STALL,直到收到建立封包為止。
C.插斷
在收到由host發出的"輸入標記,token",裝置會回傳
- DATA0/1,在收到後host發出的ack。device確主機收到資料,會將device的插斷事件清除。
- NAK,沒有新的資料可回傳
- STALL,usb device已停止狀態
"此模式(插斷輸入),可用來測量其傳輸速度"
D。同步
只有標記和資料二個時間。沒有交握
usb device or host可接收 DATA0/1的資料。
但在發送只會由DATA0