探索USB介面的世界-從USB Host到USB Device
USB介面的演進介紹
USB制定當時資訊如下:
- First Release : 1996 May
- Standard : USB standard
- Designer : IBM, Intel, Microsoft, NEC, Compaq, DEC, Nortel
- Designed : January 1996
- Superseded : Serial Port, parallel port, game port, Apple Desktop Bus, PS/2 port and FireWire(IEEE 1394)
USB全名為Universal Serial Bus,主要由IBM, Intel, Microsoft, NEC, Compaq, DEC, Norte 一同設計,於1996年一月release,當時預計支援Serial Port, parallel port….一直到FireWire (IEEE1394) 等裝置.隨著時間演進,USB的版本與速度依提升,如下列圖所示,目前正在開發80G版本。
其版本與速度(bps)發展順序為:
USB 1.1(12M bps) >> USB 2.0(480M bps) >> USB 3.2 Gen1(5G bps) >> USB 3.2 Gen2x1(10G bps) >> USB 3.2 Gen2x2(20G bps) >> USB 4(40G/80G bps)
USB Host技術探討及市場應用
現今的USB Host包含USB 2.0/3.2/4.0,功能方塊如下,先從USB 4.0看起,Block Diagram參考圖二:
如圖二所示,USB 4 Host中,內部裝置包含了Router與USB/PCIe adaptor,TMU,IO port, 同時高速(SS Bus)與低速(USB 2.0)是分開的Port,且支援PCIe與DP. USB4的支援介面,與傳送模式在Host/Hub/Device中如下表(一):
如上圖所示,USB從3.2版本開始導入Type-C連接器,Type-C連接器包含USB 2.0與3.2傳送介面,以及flip-flop功能,也就是俗稱的”正反插”功能。USB 3.2的Host規範為xHCI (eXtensible Host Controller Interface),中文稱為:「可擴展主機控制器接口」
以下是xHCI架構的主要目標:
- 高效運行,閒置耗電與性能優於傳統USB主機控制器架構。
- 與現有USB軟體模型完全一致的設備級編程模型。
- 將提供給軟體的主機控制器接口與底層USB協議解耦。
- 最小化主機內存訪問,完全消除USB設備空閒時的主機內存訪問。
- 消除暫存器寫入並最小化正常數據傳輸時的暫存器讀取。
- 消除「同伴控制器」模式。
- 在系統資源受限情況下啟用硬體「故障轉移」模式,因此設備仍然可以訪問,但可能有不利的功耗/性能。
- 提供不同市場不同硬體功能的能力,例如針對特定市場的主機控制器功率、性能和成本折衷。
- 定義一個可擴展架構,為新的USB規範和技術提供一條簡單的路徑,例如更高帶寬接口、光傳輸介質等,使其不需要再定義一個USB主機控制器接口。
補充:USB 3.2 Layers 參考圖四
如圖四,各Layer主要功能如下
Protocol Layers :
- 定義封包種類,格式 (Type, Format)
- 定義對主機和設備發送的數據包預期響應 (Expected, Responses)
- 定義四種USB傳送模式(Control,Bulk,Isochornous,Interrupt)
- 支援Bulk模式的串流資訊
Link Layers :
- 封包訊框(Packet Farming)
- 定義連結命令與用法(Link command definition and usage)
- 鏈路初始化與流量控制(Link initialization and flow control)
- 鏈路電源管理(Link power management)
- 定義鏈接錯誤規則與錯誤修復(Link error rules/recovery)
- 重新啟動功能(Resets)
- 定義LTSSM規範(Link Training and Status State Machine)
Physical Layers :
- 實體連結初始化與立起溝通橋梁(Link Initialization & Training)
- 產生時脈(Clock & Jitter)/產生實體訊號(Signaling)
- 定義傳送訊號與接收訊號電器特性(Transmitter & Receiver Spec.)
最後是USB 2.0,此版本為所有USB Host的基礎, block diagram參考圖五:
如圖五所示,USB 2.0 Layer分為Function Layer, USB device Layer, USB Bus Interface Layer. 彼此有Actual communications flow與Logica communication flow連結USB 2.0 Host Controller有以下三種以及其對應的USB版本: OHCI (Open Host Controller Interface) USB 1.1, UHCI (Universal Host Controller Interface) USB 1.x, EHCI (Enhanced Host Controller Interface) USB 2.0, USB 2.0包含三種Performance模式,Low-Speed, Full-Speed, High-Speed.相關應用與特性資訊如圖六。
USB Host市場應用
USB Host的實際應用為PCIe to USB Host,舉例目前市場上常用的PCIe to USB Host solutions如下,常用的包含2 ports USB down stream 以及4 ports USB down stream,其方塊圖參考圖七、圖八:
USB Hub技術探討及市場應用
- 連接行為(Connectivity behavior)
- 電源管理(Power management)
- 設備連接/斷開檢測(Device connect/disconnect detection)
- 總線故障檢測和恢復(Bus fault detection and recovery)
- 高速、全速和低速設備支持(High-, full-, and low-speed device support)
如圖九,USB Hub由三個組件組成:中繼器 (Hub Repeater)、控制器 (Hub Controller)和傳送交換器 (Transaction Translator)所組成。中繼器負責連接設置和斷開,它還支持異常處理,例如:總線故障檢測和恢復以及連接或斷開檢測。
控制器提供主機到集線器通信的機制集線器特定的狀態和控制命令,允許主機配置集線器,並監視和控制其各個面向下游的端口。
傳送交換器可將高速介面轉換為與全速或低速介面,讓不同速度USB裝置以最低速度介面互相溝通補充USB4 HUB/Device方塊圖,如圖十。
如圖九,USB Hub由三個組件組成:中繼器 (Hub Repeater)、控制器 (Hub Controller)和傳送交換器 (Transaction Translator)所組成。中繼器負責連接設置和斷開,它還支持異常處理,例如:總線故障檢測和恢復以及連接或斷開檢測。
控制器提供主機到集線器通信的機制集線器特定的狀態和控制命令,允許主機配置集線器,並監視和控制其各個面向下游的端口。
傳送交換器可將高速介面轉換為與全速或低速介面,讓不同速度USB裝置以最低速度介面互相溝通補充USB4 HUB/Device方塊圖,如圖十。
如圖十所示,基本上與USB 4 Host類似,Hub部分除了USB功能,增加外接PCIe Switch與Enhanced SuperSpeed Hub, USB 2.0Hub等裝置.Device部分可接PCIe,DP,USB 2.0裝置。
USB Hub市場應用
USB Hub市場應用主要為擴充USB port的USB docking,由於USB主機端越來越輕薄,可透過USB docking擴充USB port, 與周邊各種USB裝置連接,以圖十一舉例。
USB Device技術探討及市場應用
USB自1996年以來,就針對當時眾多通訊界面,各種裝置建立支援與其Class,主要目的是統一通訊界面,讓PC端只需留下一個USB端口,就可支援當下眾多的人機介面,輸入輸出裝置等眾多裝置中,除了常用的Keyboard/Mouse(HID), Mass Storage(Flash/SD card), WebCAM,亦包含Audio, Printer, HID, Communications & CDC control等等裝置。圖十二為USB Device Class對應表格。
本文只介紹USB to serial介面轉換,圖十三為USB to Serial block diagram範例
說明如下:
USB Transceiver : USB Transceiver提供 USB 1.1 / USB 2.0 full-speed實體port。,而差分輸入接收器 (differential input receiver) 和兩個單端輸入接收器 (single ended input receivers) 分別提供 USB data input、single-end 0 (SE0) 和 USB reset條件。此功能還包括 USB 的內部串聯終端電阻和 USBDP 上的 1.5kΩ 上拉電阻。
USB DPLL : USB DPLL 單元會鎖定Host傳來的 NRZI USB 數據,並為串行接口引擎 (SIE) 模塊產生重製過的clock和數據信號。
Serial Interface Engine (SIE) : 串行接口引擎 (SIE) 塊執行 USB data的並行 (parallel) 到串行 (serial) 和串行 (serial) 到並行 (parallel) 的轉換。 根據 USB 2.0 規範,它執行位填充/反填充和 CRC5/CRC16 生成。它還檢查 USB data stream上的 CRC封包。
USB Protocol Engine : USB protocol Engine管理來自設備 USB 控制端點 (end point) 的數據流 (data stream)。它根據 USB 2.0 規範第 9 章管理 USB Host Controller生成的低層 USB 協議請求,以及控制 UART 功能參數的命令。
UART FIFO Controller : UART FIFO 控制器管理 FIFO RX 和 TX 緩衝區與 UART 發送和接收寄存器之間的數據傳輸。
UART Controller with Programmable Signal Inversion and High Drive :
UART 控制器與 UART FIFO 控制器一起管理 FIFO RX 和 FIFO TX 緩衝區以及 UART 發送和接收寄存器之間的數據傳輸。它對 RS232(或 RS422 或 RS485)接口上的數據執行非同步 7 位或 8 位並行到串行和串行到並行的轉換。
透過以上的功能,再配合USB Host端安裝的driver與串列傳輸軟體,便可將USB封包轉換為串列資訊.USB device不只有USB to Serial port, 還有USB to I2C/SPI/FIFO等介面轉換,圖十四為說明範例:
方塊功能說明如下:
UTMI PHY :
The Universal Transceiver Macrocell Interfac (UTMI) 唯一實體接口單元。 該塊處理 USB TX/RX 數據的全速/高速 SERDES(序列化 - 反序列化)功能。 它還為晶片的其餘部分提供時鐘。 12 MHz Crystal連接到 OSCI 和 OSCO ,或者 12 MHz OSC連接到 OSCI,OSCO 不接。 PCB 上的 REF 和 GND 之間應連接一個 12K 歐姆的電阻。
USB Protocol Engine and FIFO control : 引擎控制和管理 UTMI PHY 和晶片的 FIFO 之間的接口。它還處理電源管理和 USB 協議規範。
Multi-Purpose UART/FIFO Controllers : 此為一個獨立的 UART/FIFO 控制器。此控制器可以控制UART data、245 FIFO data、快速串行(光電隔離)或 Bit-Bang 模式,可通過 SETUP(FT_SetBitMode)指令選擇。每個多用途 UART/FIFO 控制器還包含一個多協議同步串行引擎(MPSSE)。 使用此引擎,可以在軟件命令下配置多用途 UART/FIFO 控制器,
結論
透過USB Host, USB hub通訊架構,建立了USB的擴充性,可以將個人電腦、工業電腦的實體周邊大量的擴充、增加便利性。USB device中的各種人機介面、輸入輸出裝置則提供了輕易且彈性的應用,因為都共用一個USB port使用者依據需求使用不同裝置。
在USB to Serial應用上可將轉出來的RS-232可以再透過適當的轉換器 (transceiver) 轉換為RS-422/RS-485等介面大大增加了在工業上的應用層面。
USB to Serial/I2C/SPI bridge在工業、AI、醫療、通訊領域應用非常廣泛,解決了主機端串列介面不夠的問題,也提供了強大的設計彈性,同一主機配合USB to Serial / I2C / SPI bridge docking 即可與各種串列介面裝置溝通。
參考文獻
1. USB, 維基百科, https://reurl.cc/klvgQn
2. USB Type-C® Cable and Connector Specification Release 2.2, USB, https://reurl.cc/2W3VvO
3. USB 4® Specification v2.0, USB, https://reurl.cc/qkX64N
4. USB 2.0 Specification, USB, https://reurl.cc/9VyaLx
5. FTDI, https://ftdichip.com/