USB系統設計

USB系統設計

USB 的設計架構在拓撲上是不對稱的,由主機、多個下游 USB 端口以及以分層星形拓撲連接的多個外圍設備組成。 層中可以包含額外的 USB 集線器,從而允許分支為最多五層的樹形結構。 一個USB主機可以實現多個主機控制器,並且每個主機控制器可以提供一個或多個USB端口。 最多 127 個設備(包括集線器設備(如果存在))可以連接到單個主機控制器。USB 設備通過集線器串聯鏈接。 內置於主機控制器中的一個集線器是根集線器。

物理 USB 設備可能由多個稱為設備功能的邏輯子設備組成。 單個設備可以提供多種功能,例如,帶有內置麥克風(音頻設備功能)的網絡攝像頭(視頻設備功能)。 這種器件稱為複合器件。 另一種方法是複合設備,其中主機為每個邏輯設備分配一個獨特的地址,所有邏輯設備都連接到一個內置集線器,該集線器連接到物理 USB 電纜。

示意圖:設備內部有多個端點,每個端點都通過邏輯管道連接到主機控制器。 每個管道中的數據沿一個方向流動,儘管進出主機控制器的數據是混合的。

USB 設備通信基於管道(邏輯通道)。 管道是從主機控制器到邏輯實體的連接,在設備上找到並命名為端點。 由於管道與端點一一對應,因此這些術語有時可以互換使用。 一個 USB 設備最多可以有 32 個端點(16 個輸入,16 個輸出),但很少有這麼多。 端點是由設備在初始化期間(物理連接後稱為“枚舉”的時期)定義和編號的,因此相對永久,而管道可以打開和關閉。
 


USB 端點實際上駐留在連接的設備上:到主機的通道稱為管道

 

管道有兩種類型:流管道和消息管道。 消息管道是雙向的,用於控制傳輸。 消息管道通常用於向設備發出簡短的命令和狀態響應,例如由總線控制管道編號 0 使用。流管道是連接到單向端點的單向管道,它傳輸使用同步、中斷或批量傳輸的數據:

• 等時傳輸:以某種保證的數據速率(通常但不一定是盡可能快)但可能會丟失數據(例如,實時音頻或視頻)。
• 中斷傳輸:需要保證快速響應(有限延遲)的設備(例如,指點設備和鍵盤)。
• 批量傳輸:使用所有剩餘可用帶寬進行大量零星傳輸,但不保證帶寬或延遲(例如文件傳輸)。

管道的端點可通過主機在想要啟動數據傳輸會話時發送的 TOKEN 數據包中指定的元組(device_address、endpoint_number)進行尋址。 如果數據傳輸的方向是從主機到端點,則主機發送具有所需設備地址和端點號的OUT分組(TOKEN分組的特化)。 如果數據傳輸的方向是從設備到主機,則主機發送 IN 數據包。 如果目的地端點是單向端點,其製造商指定的方向與TOKEN數據包不匹配(例如,製造商指定的方向是IN,而TOKEN數據包是OUT數據包),則忽略TOKEN數據包。 否則,它被接受並且數據事務可以開始。 另一方面,雙向端點接受 IN 和 OUT 數據包。

端點被分組為接口,每個接口與單個設備功能相關聯。 端點 0 是一個例外,它用於設備配置,不與任何接口關聯。 由獨立控制的接口組成的單一設備功能稱為複合設備。 複合設備僅具有單個設備地址,因為主機僅將設備地址分配給功能。


計算機正面的兩個 USB 標準 A 插座

 

當 USB 設備首次連接到 USB 主機時,USB 設備枚舉過程就會啟動。 枚舉首先向 USB 設備發送復位信號。 USB 設備的數據速率在復位信號期間確定。 復位後,主機讀取USB設備的信息,並為設備分配一個唯一的7位地址。 如果主機支持該設備,則加載與該設備通信所需的設備驅動程序,並將該設備設置為已配置狀態。 如果 USB 主機重新啟動,則會對所有連接的設備重複枚舉過程。

主機控制器將流量引導至設備,因此,如果沒有主機控制器的明確請求,任何 USB 設備都無法在總線上傳輸任何數據。 在 USB 2.0 中,主機控制器通常以循環方式輪詢總線的流量。 每個 USB 端口的吞吐量由 USB 端口或連接到該端口的 USB 設備的較慢速度決定。

高速 USB 2.0 集線器包含稱為事務轉換器的設備,可在高速 USB 2.0 總線與全速和低速總線之間進行轉換。 當高速 USB 2.0 集線器插入高速 USB 主機或集線器時,它會以高速模式運行。 然後,USB 集線器使用每個集線器一個事務轉換器來創建路由到集線器上所有全速和低速設備的全速/低速總線,或者使用每個端口一個事務轉換器來創建每個端口的隔離全速/低速總線。集線器上的端口。

由於每個 USB 3.0 主機中有兩個獨立的控制器,因此無論連接到該主機的 USB 2.0 或更早版本的設備如何,USB 3.0 設備都會以 USB 3.0 數據速率進行傳輸和接收。 早期設備的操作數據速率以傳統方式設置。