1 / 66

USB 裝置控制器

USB 裝置控制器. 大綱. USB 概觀 裝置組態 USB 協定 UDC 操作 UDC 暫存器定義. USB 概觀. 通用序列匯流排裝置控制器( UDC ): 遵循 USB 標準及支援所有主機發出的標準裝置請求 。 支援 16 個端點 (endpoints) 。 12 Mbps 。 半雙工 。. USB 概觀 (cont.). UDC 資料傳送欄位( Field ): 同步( Sync ) 封包識別字( PID ) 位址( Address ) 端點( Endpoint ) 訊框數目( Frame Number ) 資料( Data )

chiku
Download Presentation

USB 裝置控制器

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. USB 裝置控制器 8- 1

  2. 大綱 • USB概觀 • 裝置組態 • USB協定 • UDC操作 • UDC暫存器定義 8-2

  3. USB概觀 • 通用序列匯流排裝置控制器(UDC): • 遵循USB標準及支援所有主機發出的標準裝置請求。 • 支援16個端點(endpoints) 。 • 12 Mbps。 • 半雙工。 8-3

  4. USB概觀 (cont.) • UDC資料傳送欄位(Field): • 同步(Sync) • 封包識別字(PID) • 位址(Address) • 端點(Endpoint) • 訊框數目(Frame Number) • 資料(Data) • 循環冗餘核對(CRC) 8-4

  5. USB概觀 (cont.) • 結合欄位(Field) →封包(Packet)。 • 封包類型: • 符記(Token) • 訊框的開始(Start of Frame) • 資料(Data) • 信號交換(Handshake) 8-5

  6. USB概觀 (cont.) • 組合封包(Packet) →交易(Transaction)。 • 交易種類: • 大量(Bulk) • 控制(Control) • 中斷(Interrupt) • 等時(Isochronous) 8-6

  7. USB概觀 (cont.) • UDC使用雙埠(dual-port)記憶體並支援FIFO操作。 • Bulk與Isochronous端點FIFO結構為雙倍緩衝區,當端點在處理一個封包時可以同時組合另一個封包。 • 端點0只用來傳輸設定UDC組態的控制交易,負責: • 連接 • 指定位址 • 端點組態 • 匯流排計數 • 切斷連接 8-7

  8. USB概觀 (cont.) • UDC介面專用外部腳位: • UDC+ • UDC- • USB協定在這兩個腳位上使用不同信號做半雙工資料傳輸。 8-8

  9. USB概觀 (cont.) • 序列匯流排使用不同的信號來同時傳送多個狀態: • 閒置(Idle) • 恢復(Resume) • 封包開始(Start of Packet) • 封包結束(End of Packet) • 切斷連接(Disconnect) • 連接(Connect) • 重置(Reset) 8-9

  10. 大綱 • USB概觀 • 裝置組態 • USB協定 • UDC操作 • UDC暫存器定義 8-10

  11. 8-11

  12. 大綱 • USB概觀 • 裝置組態 • USB協定 • UDC操作 • UDC暫存器定義 8-12

  13. USB協定 • 信號層級 • 位元編碼 • 欄位格式 • 封包格式 • 交易格式 • UDC設備需求 8-13

  14. 信號層級 (Signaling Level) • USB使用不同的信號來作資料編碼與指示不同的匯流排狀況。 • UDC+與UDC-編碼會表現出4種不同的狀態: • 1:UDC+為high、UDC-為low 。 • 0:UDC+為low、UDC-為high 。 • 其餘的兩個狀態用來表示目前USB狀態 。 8-14

  15. USB狀態 8-15

  16. 位元編碼 • USB使用不歸零翻轉(NRZI)做位元編碼。 • 有狀態轉換:0 • 無狀態轉換:1 8-16

  17. 欄位格式 • 同步(Sync) • 每個封包的第一個欄位。 • 8位元寬(0x80)。 • 封包識別字(PID)。 • 8位元寬。 • 前四個位元表示封包類型(Token、Data、Handshake、Special)、封包格式、與錯誤偵測的類型。 • 後四個位元為確認欄位,確定傳送PID沒有發生錯誤。 • 位址(Address) • 7位元寬,允許127個獨立的裝置置於USB上。 8-17

  18. 欄位格式(cont.) • 端點(Endpoint) • 4位元寬 。 • 決定要定址到哪一個UDC端點。 • 訊框數目(Frame Number) • 11位元寬。 • 主機每一次傳送訊框會增加其值。 • 控制等時傳輸。 • 資料(Data) • 0到1023位元組寬。 8-18

  19. 欄位格式(cont.) • 循環冗餘核對(CRC) • 用來偵測符記與資料傳輸期間所發生的錯誤。 • 應用至封包內全部的欄位(PID欄位除外)。 • 符記封包使用一個5位元CRC 。 • 資料封包使用一個16位元CRC 。 8-19

  20. 封包格式 • USB支援四種封包類型: • Token • Data • Handshake • Special 8-20

  21. 封包格式 (cont.) • Token封包: • Token封包位於Frame的起端,用來識別OUT、IN、SOF、SETUP處理。 • SOF為特別的Token封包,主機每隔1ms就會發出一次,以避免UDC進入暫停模式。格式如下: 8-21

  22. 封包格式 (cont.) • Data封包: • 用來傳輸主機和UDC之間的資料。 8-22

  23. 封包格式 (cont.) • Handshake封包: • 用來描述資料交易狀態,包括:確認資料已經成功接收、流量控制以及延遲情況。 • 三種型態: • ACK:資料封包已被接收,無位元填充、無CRC或PID檢查錯誤發生。 • NAK:UDC無法從主機接收資料或沒有傳輸資料。 • STALL:UDC無法傳送/接收資料,需要主機介入來清除延遲狀況。 8-23

  24. 交易格式 • USB協定使用四個不同的交易格式: • 大量(Bulk) • 控制(Control) • 中斷(Interrupt) • 等時(Isochronous) • USB所有交易均由主機開始,主機和UDC之間同時只能有一個方向的傳輸(半雙工)。 8-24

  25. 交易格式 (cont.) • Bulk交易: • 使用封包錯誤偵測、重試,以保證在主機和UDC之間傳輸資料無錯誤。 • 由三種封包組成:Token、Data、Handshake。 8-25

  26. 交易格式 (cont.) • Isochronous交易: • 主機和UDC之間資料是以固定速率傳輸並可容忍錯誤。 • 由兩個封包組成:Token、Data。 8-26

  27. 交易格式 (cont.) • Control交易: • 用來設定端點組態,並詢問其狀態。 • 包含建立封包 、資料封包(optional)、信號交換封包。 8-27

  28. 交易格式 (cont.) • Interrupt交易: • 用來詢問設備的狀態。 • 包含建立封包 、資料封包(optional)、信號交換封包。 8-28

  29. UDC設備請求 • UDC使用控制、狀態、資料暫存器來監控端點1~15的傳送與接收FIFO。 • 主機使用設備請求當成控制交易,經由USB送給端點0來控制UDC的組態。 • 對端點0的建立封包長度為8 bytes,指明: • 資料傳輸方向:主機到設備,設備到主機。 • 資料傳輸型態:standard、class、vendor。 • 資料接收:設備、介面、端點、其他。 • 傳輸的位元組數目。 • Index或Offset。 • 數值:用來傳送可變大小的資料參數。 • 設備需求。 8-29

  30. UDC設備請求 (cont.) 8-30

  31. 大綱 • USB概觀 • 裝置組態 • USB協定 • UDC操作 • UDC暫存器定義 8-31

  32. UDC操作 • Case 1:EP0控制讀取 • Case 2:含過早狀態階段的EP0控制讀取 • Case 3:含或不含過早狀態階段的EP0控制寫入 • Case 4:EP0無資料命令 • Case 5:EP1資料傳送(BULK-IN) • Case 6:EP2資料接收(BULK-OUT) • Case 7:EP3資料傳送(ISOCHRONOUS-IN) • Case 8:EP4資料接收(ISOCHRONOUS-OUT) • Case 9:EP5資料傳送(INTERRUPT-IN) • Case 10:RESET中斷 • Case 11:SUSPEND中斷 • Case 12:RESUME中斷 8-32

  33. Case 1:EP0控制讀取 • 當軟體啟動,它會初始化軟體狀態機為EP0_IDLE。 • 主機傳送一個SETUP命令。 • UDC產生一個EP0中斷。 • 軟體判斷UDCCS0[SA]與UDCCS0[OPR]位元。這表示一個新的OUT封包在EP0緩衝區內並辨識SETUP交易。 • 當UDCCS0[RNE]位元被設定時,軟體讀取資料至緩衝區。 • 軟體分析緩衝區內命令語法,並判定其為控制讀取。 • 軟體開始載入第一個資料封包進入UDDR0暫存器。 • 在讀取與分析資料後,軟體清除UDCCS0[SA]與UDCCS0[OPR]位元,並設定UDCCS0[IPR]位元。 • 軟體清除UDC中斷位元並自中斷服務常式回復。 8-33

  34. Case 1:EP0控制讀取(cont.) • 當UDC傳送資料回到主機後,主機發出IN封包。在主機傳送ACK至UDC之後,UDC清除UDCS0[IPR]位元並產生一個中斷。 • 軟體進入ISR常式。它決定是否必須傳輸更多的資料。如果需要的話,軟體載入下個資料量,設定UDCCS0[IPR]位元,並自中斷回復。 • 重複步驟10與11直到傳送完所有資料或最後的資料封包為短封包。 • 若最後的封包為一個短封包,則進入EP0_END_XFER狀態。若最後的資料封包在16位元組邊界上,則軟體設定UDCCS0[IPR]來傳送一個長度為0的封包而不會載入FIFO資料。在傳送長度為0的封包之後,進入EP0_END_XFER狀態。 • 當主機接收到長度為0的OUT封包時,UDC設定UDCCS0[OPR]位元,並引發一個中斷。 • 軟體進入ISR常式,並判斷UDCCS0[OPR]位元被設定且UDCCS0[SA]位元被清除,而其內部狀態機為EP0_END_XFER。軟體清除UDCCS0[OPR]位元並進入EP0_IDLE狀態。 • 軟體清除UDC中斷位元並自中斷服務常式回復。 8-34

  35. Case 5:EP1資料傳送(BULK-IN) • 當軟體接收到SETUP 命令來建立一個EP1 BULK IN交易時: • 設定DMA引擎組態並關閉EP1中斷,允許DMA引擎處理交易。 • 啟動EP1中斷來允許Megacell直接處理交易。 8-35

  36. 軟體啟動DMA • 在SETUP命令期間,軟體啟動DMA引擎與遮蔽EP1中斷。 • 若封包大小為64位元組,軟體會傳送一個DMA敘述元內所有資料並設定第二個DMA敘述元內之UDCCS1[TSP]位元。 • 若封包大小小於64位元組,軟體會建立敘述元串,裡面的奇數之敘述元指向資料,而偶數敘述元寫入UDCCS1[TSP]位元。 • 主機傳送BULK-IN,而UDC傳送資料封包回主機PC。 • UDC產生一個中斷。 • DMA引擎填滿EP1資料FIFO(UDDR1),若資料封包為短封包則設定UDCCS1[TSP]位元。 • 重複步驟2到4直到所有的資料都被送至主機PC。 8-36

  37. 軟體啟動EP1中斷 • 在SETUP命令期間,軟體會填滿EP1資料FIFO並清除UDCCS1[TPC]位元。若資料封包為短封包,軟體也會設定UDCCS1[TSP]位元。 • 主機傳送BULK-IN,而UDC傳送資料封包回主機並產生一個EP1中斷。 • 軟體填滿EP1資料FIFO,並清除UDCCS1[TPC]位元。如果是短封包,則設定UDCCS1[TSP]位元。 • 自中斷回復。 • 重複步驟2到4直到所有的資料都被送至主機。 8-37

  38. Case 6:EP2資料接收(BULK-OUT) • 當軟體接收到SETUP 命令來建立一個EP2 BULK OUT交易: • 啟動DMA引擎來處理交易。 • 允許Megacell直接處理交易。 8-38

  39. 軟體啟動DMA • 在SETUP命令期間,軟體會建立DMA引擎並設定UDCCS2[DME]位元。 • 若封包大小為32或64位元組,軟體會建立敘述元串,每一個都以32或64為模數(modulo)。 • 若封包大小小於32位元組,則軟體使用中斷模式。 • 主機傳送一個BULK-OUT。 • DMA引擎從EP2資料FIFO(UDDR2)讀取資料。 • 重複步驟2與3直到從主機讀取所有的資料。 • 若軟體接收到EP2中斷,則完成下列處理: • 若UDCCS2[RNE]被清除且UDCCS2[RSP]被設定,則資料封包為一個長度為0的封包。 • 若UDCCS2[RNE]被設定,則資料封包為短封包,而軟體必須使用UDCWC2計數暫存器來從EP2資料FIFO讀取適當的資料量。 • 軟體清除UDCCS[RPC]位元。 • 自中斷回復。 8-39

  40. 軟體允許Megacell處理交易 • 在SETUP命令期間,軟體會清除UDCCS2[DME]位元。 • 主機傳送BULK-OUT,而UDC產生EP2中斷。 • 若UDCCS2[RNE]被清除且UDCCS2[RSP]被設定,則資料封包為一長度為0的封包。 • 若UDCCS2[RNE]被設定,則軟體使用UDCWC2計數暫存器來從EP2資料FIFO讀取適當的資料量。 • 軟體清除UDCCS2[RPC]位元。 • 自中斷回復。 • 重複步驟2到6直到從主機讀取所有的資料。 8-40

  41. Case 10:RESET中斷 • 系統重置之後,軟體以所需的數值載入暫存器。 • 軟體設定UDCCR[UDE]位元來啟動UDC並立即讀取UDCCR[UDA]位元來決定目前是否有USB重置在USB匯流排上。 • 若UDCCR[UDA]為0,則目前有USB重置在匯流排上,而軟體藉由寫入1至UDCCR[RSTIR]位元來清除中斷。 • 若UDCCR[UDA]為1,則目前沒有USB重置在匯流排上。軟體藉由清除UDCCR[REM]位元來啟動以後的重置中斷。 • 自中斷回復。 • 主機驅動USB重置或取消USB重置。 • UDC產生一個重置中斷。 • 軟體判斷UDCCR[RSTIR]位元,並藉由寫入1至UDCCR[RSTIR]位元來清除中斷。而後軟體檢查UDCCR[UDA]位元來決定發生的重置類型。 • 自中斷回復。 8-41

  42. Case11:SUSPEND中斷 • 軟體啟動時,會清除UDCCR[SRM]位元來允許USB暫停中斷。 • 主機藉由停止UDC+與UDC-信號之來觸發USB暫停。 • UDC產生暫停中斷。 • 軟體判斷UDCCR[SUSIR]位元。這表示發生USB暫停,而軟體會採取任何需要的動作來關閉其他週邊、清除內部緩衝區、執行電源管理、以及執行相似功能。 8-42

  43. Case12:RESUME中斷 • 軟體啟動時,會清除UDCCR[SRM]位元來允許USB恢復操作。 • 主機藉由恢復UDC+與UDC-信號之行動來觸發USB恢復操作。 • UDC產生恢復中斷。 • 軟體判斷UDCCR[RESIR]位元。這表示發生USB恢復操作,而OS會採取任何任何需要的動作來開啟其他週邊、初始化內部緩衝區、執行電源管理、與執行相似功能。 8-43

  44. 大綱 • USB概觀 • 裝置組態 • USB協定 • UDC操作 • UDC暫存器定義 8-44

  45. UDC暫存器定義 • UDC控制暫存器 • UDC端點0控制/狀態暫存器(UDCCS0) • UDC端點x控制/狀態暫存器(UDCCSx),x = 1、6、11 • UDC端點x控制/狀態暫存器(UDCCSx),x = 2、7、12 • UDC端點x控制/狀態暫存器(UDCCSx),x=3、8、13 • UDC端點x控制/狀態暫存器(UDCCSx),x = 4、9、14 • UDC端點x控制/狀態暫存器(UDCCSx),x = 5、10、15 • UDC中斷控制暫存器0(UICR0) • UDC中斷控制暫存器1(UICR1) • UDC狀態/中斷暫存器0(USIR0) • UDC狀態/中斷暫存器1(USIR1) 8-45

  46. UDC暫存器定義(Cont.) • UDC訊框數目高位暫存器(UFNHR) • UDC訊框數目低位暫存器(UFNLR) • UDC位元組計數暫存器x(UBCRx),x = 2、4、7、9、12、14 • UDC端點0資料暫存器(UDDR0) • UDC資料暫存器x(UDDRx),x = 1、6、11 • UDC資料暫存器x(UDDRx),x = 2、7、12 • UDC資料暫存器x(UDDRx),x = 3、8、13 • UDC資料暫存器x(UDDRx),x = 4、9、14 • UDC資料暫存器x(UDDRx),x = 5、10、15 • UDC暫存器位置 8-46

  47. UDC控制暫存器(UDCCR) 8-47

  48. UDC端點0控制狀態暫存器(UDCCS0) 8-48

  49. UDC端點x控制狀態暫存器(UDCCSx),x = 1、6、11 8-49

  50. UDC端點x控制狀態暫存器(UDCCSx),x = 2、7、12 8-50

More Related