在進行一個USB設備開發之前,首先要根據具體使用要求選擇合適的USB控制器。目前,市場上供應的USB控制器主要有兩種:帶USB接口的單片機(MCU)或純粹的USB接口芯片。帶USB接口的單片機從應用上又可以分成兩類,一類是從底層設計專用於USB控制的單片機另一類是增加了USB接口的普通單片機,如Cypress公司的EZ-USB(基於8051),選擇這類USB控制器的最大好處在於開發者對系統結構和指令集非常熟悉,開發工具簡單,但對於簡單或低成本系統。但價格因素也是在實際選擇過程中需要考慮的因素。純粹的USB 接口芯片僅處理USB通信,必須有一個外部微處理器來進行協議處理和數據交換。典型產品有Philips公司的PDIUSBD11(I2C接口)、PDIUSBD12(並行接口),NS公司的USBN9603/9604(並行接口),NetChip公司的NET2888 等。USB接口芯片的主要特點是價格便宜、接口方便、可靠性高,尤其適合於產品的改型設計(硬件上僅需對並行總線和中斷進行改動,軟件則需要增加微處理器的USB中斷處理和數據交換程序、PC機的USB接口通信程序,無需對原有產品系統結構作很大的改動)。
USB接口芯片在進行USB通信時所需要的支持是不同的。一些芯片只需要訪問一系列寄存器以存儲和恢復USB數據。其他的芯片要求設備程序代碼做更多的工作,包括管理描述符的重新獲得、設定數據切換值和保證正確的交換包被發送等。
一些USB接口芯片上有通用功能的CPU,而其他的接口芯片則采取最簡單的方法和接口與一個外部CPU連接。所有的USB控制器都有一個或多個uSB端口和緩存、寄存器和其他I/O。帶有通用功能CPU的控制器芯片在芯片上也有程序和數據存儲器或一個到外部存儲器的接口。