簡(jiǎn)而言之,USB
理解USB標(biāo)準(zhǔn)開始新的USB接口可能會(huì)讓人望而生畏。和USB 2.0規(guī)范在650頁(yè)的篇幅上,人們很容易因?yàn)闃?biāo)準(zhǔn)的篇幅而被推遲。這只是一長(zhǎng)串USB相關(guān)標(biāo)準(zhǔn)的開始。有USB類標(biāo)準(zhǔn)例如HID類規(guī)范,它詳細(xì)說明了HID(人機(jī)界面設(shè)備)類下的設(shè)備(鍵盤、鼠標(biāo)等)的常見操作——只有另外97頁(yè)。如果您正在設(shè)計(jì)一個(gè)USB主機(jī),那么您有三個(gè)主機(jī)控制器接口標(biāo)準(zhǔn)可供選擇。這些都沒有在usb2.0規(guī)范中詳細(xì)說明。
好消息是你甚至不需要費(fèi)心去閱讀整個(gè)USB標(biāo)準(zhǔn)。有些章節(jié)是由市場(chǎng)營(yíng)銷精心編寫的,有些章節(jié)針對(duì)的是通常由USB控制器IC負(fù)責(zé)的較低鏈路層,還有一些章節(jié)針對(duì)主機(jī)和集線器開發(fā)人員。通過一個(gè)小的章節(jié)讓我們簡(jiǎn)單的介紹一下USB的各個(gè)章節(jié)。
章節(jié) | 姓名 | 說明 | 頁(yè) |
1 | 介紹 | 包括USB的動(dòng)機(jī)和范圍。本章最重要的信息是參考通用串行總線設(shè)備類規(guī)范。不用讀這一章。 | two |
2 | 術(shù)語(yǔ)和縮略語(yǔ) | 這一章不言自明,對(duì)任何標(biāo)準(zhǔn)來說都是必要的。 | eight |
3 | 背景 | 指定USB的目標(biāo)是即插即用和對(duì)最終用戶的簡(jiǎn)單性(不是開發(fā)人員)。通過直接從市場(chǎng)營(yíng)銷部獲得的功能列表介紹低速、全速和高速范圍。也不需要讀這一章。 | four |
4 | 體系結(jié)構(gòu)概述 | 這是你可以開始閱讀的地方。本章提供USB系統(tǒng)的基本概述,包括拓?fù)浣Y(jié)構(gòu)、數(shù)據(jù)速率、數(shù)據(jù)流類型、基本電氣規(guī)格等。 | ten |
5 | USB數(shù)據(jù)流模型 | 本章開始討論數(shù)據(jù)如何在通用串行總線上流動(dòng)。它引入了端點(diǎn)和管道等術(shù)語(yǔ),然后將本章的大部分時(shí)間用于每種數(shù)據(jù)流類型(控制、中斷、同步和批量)。雖然了解每種傳輸類型及其屬性很重要,但對(duì)于第一個(gè)讀者來說這有點(diǎn)沉重。 | sixty |
6 | 機(jī)械的 | 本章詳細(xì)介紹了USB的兩個(gè)標(biāo)準(zhǔn)接口。這里的重要信息是,a型連接器面向下游,B型連接器面向上游。因此,不可能將電纜插入兩個(gè)上游端口。所有可拆卸電纜必須是全速/高速電纜,而任何低速電纜必須硬接線到設(shè)備。除了快速查看連接器,您可以跳過本章,除非您打算制造USB連接器和/或電纜。PCB設(shè)計(jì)人員可以在本章中找到標(biāo)準(zhǔn)封裝。 | thirty-three |
7 | 電氣 | 本章介紹低電平電信號(hào),包括線路阻抗、上升/下降時(shí)間、驅(qū)動(dòng)器/接收器規(guī)格和位級(jí)編碼、位填充等。本章更重要的部分是通過使用電阻器來對(duì)數(shù)據(jù)線和總線供電設(shè)備與自供電設(shè)備進(jìn)行偏差的設(shè)備速度識(shí)別。除非你是在硅水平設(shè)計(jì)USB收發(fā)器,否則你可以翻閱本章。好的USB設(shè)備數(shù)據(jù)表將詳細(xì)說明總線阻抗匹配所需的總線終端電阻值。 | seventy-five |
8 | 協(xié)議層 | 現(xiàn)在我們開始進(jìn)入?yún)f(xié)議層。本章描述了字節(jié)級(jí)的USB數(shù)據(jù)包,包括sync、pid、address、endpoint、CRC字段。一旦掌握了這一點(diǎn),它就進(jìn)入下一個(gè)協(xié)議層,即USB包。大多數(shù)開發(fā)人員仍然看不到這些較低的協(xié)議層,因?yàn)樗麄兊腢SB設(shè)備IC負(fù)責(zé)這一點(diǎn)。然而,了解狀態(tài)報(bào)告和握手是值得的。 | forty-five |
9 | USB設(shè)備框架 | 這是整個(gè)規(guī)范中使用頻率最高的一章,也是我唯一一個(gè)費(fèi)心打印和裝訂的章節(jié)。這詳細(xì)說明了總線枚舉和請(qǐng)求代碼(set address,get descriptor等),它們構(gòu)成了USB程序員和設(shè)計(jì)人員將看到的最常見的協(xié)議層。本章必須詳細(xì)閱讀。 | thirty-six |
10 | USB主機(jī)硬件和軟件 | 本章涉及與主辦國(guó)有關(guān)的問題。這包括幀和微幀生成、主機(jī)控制器要求、軟件機(jī)制和通用串行總線驅(qū)動(dòng)程序模型。除非您正在設(shè)計(jì)主機(jī),否則可以跳過本章。 | twenty-three |
11 | Hub規(guī)格 | 詳細(xì)介紹USB集線器的工作原理,包括集線器配置、分割事務(wù)、集線器類的標(biāo)準(zhǔn)描述符等。除非您正在設(shè)計(jì)集線器,否則您可以跳過本章。 | one hundred and forty-three |
所以現(xiàn)在我們可以開始閱讀標(biāo)準(zhǔn)中與我們需要相關(guān)的部分。如果您為USB外設(shè)開發(fā)驅(qū)動(dòng)程序(軟件),那么您可能只需要閱讀章節(jié),
4-建筑概述
5-USB數(shù)據(jù)流模型
9-USB設(shè)備框架,以及
10-USB主機(jī)硬件和軟件。
另一方面,外圍硬件(電子)設(shè)計(jì)師可能只需要閱讀章節(jié),
4-建筑概述
5-USB數(shù)據(jù)流模型
6-機(jī)械,以及
7-電氣
現(xiàn)在讓我們面對(duì)現(xiàn)實(shí),(1)我們大多數(shù)人都是來開發(fā)USB外設(shè)的,(2)讀一個(gè)標(biāo)準(zhǔn)很常見,但仍然不知道如何實(shí)現(xiàn)一個(gè)設(shè)備。因此在接下來的7章中,我們將重點(diǎn)介紹開發(fā)USB設(shè)備所需的相關(guān)部分。這使您能夠掌握USB及其問題,從而進(jìn)一步研究特定于您的應(yīng)用程序的問題。
USB1.1標(biāo)準(zhǔn)在高速傳輸?shù)経SB2.0之前已經(jīng)足夠復(fù)雜了。為了幫助理解USB背后的基本原理,我們省略了許多高速設(shè)備特有的領(lǐng)域。
介紹通用串行總線USB版本1.1支持兩種速度,一種是12Mbits/s的全速模式,另一種是1.5Mbits/s的低速模式。1.5Mbits/s模式速度較慢,不易受電磁干擾影響,因此降低了鐵氧體磁珠和優(yōu)質(zhì)元件的成本。例如,晶體可以用更便宜的諧振器代替。USB2.0在主流臺(tái)式機(jī)上還沒有見到曙光,它已經(jīng)把****注提高到480Mbits/s。480Mbits/s被稱為高速模式,是與Firewire串行總線競(jìng)爭(zhēng)的一種手段。
USB速度
高速-480Mbits/s
全速-12Mbits/s
低速-1.5Mbits/s
通用串行總線由主機(jī)控制。每個(gè)總線只能有一個(gè)主機(jī)。規(guī)范本身不支持任何形式的多主控排列。但是隨動(dòng)規(guī)范作為usb2.0的一個(gè)附加標(biāo)準(zhǔn),它引入了一個(gè)主機(jī)協(xié)商協(xié)議,允許兩個(gè)設(shè)備協(xié)商主機(jī)的角色。這是針對(duì)并僅限于單點(diǎn)對(duì)點(diǎn)連接,例如移動(dòng)電話和個(gè)人事務(wù)管理器,而不是多個(gè)集線器、多設(shè)備桌面配置。USB主機(jī)負(fù)責(zé)處理所有事務(wù)和調(diào)度帶寬??梢允褂没诹钆频膮f(xié)議通過各種事務(wù)方法發(fā)送數(shù)據(jù)。
在我看來,USB的總線拓?fù)浣Y(jié)構(gòu)有一定的局限性。USB的初衷之一是減少電腦背面的布線量。蘋果的人會(huì)說,這個(gè)想法來自蘋果桌面總線,在那里鍵盤、鼠標(biāo)和其他一些外圍設(shè)備可以通過一根電纜連接在一起(菊花鏈)。
然而,USB使用分層星形拓?fù)浣Y(jié)構(gòu),與10BaseT以太網(wǎng)相似。這就要求在某處使用集線器,這增加了更大的開銷,桌面上有更多的盒子和更多的電纜。不過,這并不像看上去那么糟糕。許多設(shè)備都集成了USB集線器。例如,您的鍵盤可能包含一個(gè)連接到您的計(jì)算機(jī)的集線器。鼠標(biāo)和其他設(shè)備(如數(shù)碼相機(jī))可以輕松地插入鍵盤背面。監(jiān)視器只是一長(zhǎng)串通常有內(nèi)置集線器的外圍設(shè)備。
這種分層的星形拓?fù)浣Y(jié)構(gòu),而不是簡(jiǎn)單地將設(shè)備串接在一起有一些好處。首先,可以監(jiān)控每個(gè)設(shè)備的電源,如果發(fā)生過電流情況,甚至可以在不中斷其他USB設(shè)備的情況下關(guān)閉電源。高速、全速和低速設(shè)備都可以支持,集線器過濾掉高速和全速事務(wù),這樣低速設(shè)備就不會(huì)接收到它們。
在任何一個(gè)給定的時(shí)間,最多可以將127個(gè)設(shè)備連接到任何一個(gè)USB總線。需要更多設(shè)備嗎只需添加另一個(gè)端口/主機(jī)。雖然大多數(shù)早期的USB主機(jī)都有兩個(gè)端口,但大多數(shù)制造商認(rèn)為這是一種限制,并開始引入4端口和5端口主機(jī)卡以及硬盤等的內(nèi)部端口。早期的主機(jī)有一個(gè)USB控制器,因此兩個(gè)端口共享相同的可用USB帶寬。隨著帶寬需求的增長(zhǎng),我們開始看到帶有兩個(gè)或更多控制器的多端口卡允許單獨(dú)的通道。
USB主機(jī)控制器有自己的規(guī)格。對(duì)于USB1.1,有兩種主機(jī)控制器接口規(guī)格, 通用主機(jī)控制器接口由Intel開發(fā),它將更多的負(fù)擔(dān)放在軟件(Microsoft)上,并允許更便宜的硬件和開放式主機(jī)控制器接口由康柏公司、微軟公司和國(guó)家半導(dǎo)體公司共同開發(fā),它將更多的負(fù)擔(dān)放在硬件(英特爾)上,并使軟件變得更簡(jiǎn)單。典型的硬件/軟件工程師關(guān)系。
隨著usb2.0的引入,需要一個(gè)新的主機(jī)控制器接口規(guī)范來描述特定于usb2.0的寄存器級(jí)細(xì)節(jié)。這個(gè)增強(qiáng)型主機(jī)接口出生了。重要的貢獻(xiàn)者包括Intel、Compaq、NEC、Lucent和Microsoft,因此希望它們能夠聯(lián)合起來,為我們提供一個(gè)接口標(biāo)準(zhǔn),從而只有一個(gè)新的驅(qū)動(dòng)程序可以在我們的操作系統(tǒng)中實(shí)現(xiàn)。是時(shí)候了。
USB顧名思義就是串行總線。它使用4根屏蔽線,其中2根為電源(5v和GND)。其余兩個(gè)是雙絞線差分?jǐn)?shù)據(jù)信號(hào)。它使用NRZI(Non-Return to Zero Invert)編碼方案發(fā)送帶有同步字段的數(shù)據(jù),以同步主機(jī)和接收器的時(shí)鐘。
USB支持plug'n'plug與動(dòng)態(tài)可加載和不可加載的驅(qū)動(dòng)程序。用戶只需將設(shè)備插入總線即可。主機(jī)將檢測(cè)到這個(gè)添加,詢問新插入的設(shè)備,并在沙漏閃爍的時(shí)間內(nèi)加載相應(yīng)的驅(qū)動(dòng)程序,前提是為您的設(shè)備安裝了驅(qū)動(dòng)程序。最終用戶不必?fù)?dān)心終止,諸如irq和端口地址之類的術(shù)語(yǔ),或者重新啟動(dòng)計(jì)算機(jī)。一旦用戶完成,他們可以簡(jiǎn)單地將電纜拔出,主機(jī)將檢測(cè)到它的缺失并自動(dòng)卸載驅(qū)動(dòng)程序。
使用PID/VID(產(chǎn)品ID/供應(yīng)商ID)組合加載相應(yīng)的驅(qū)動(dòng)程序。VID是由USB實(shí)現(xiàn)者的論壇以一定的成本提供的,這被視為USB的另一個(gè)癥結(jié)。有關(guān)費(fèi)用的最新信息,請(qǐng)?jiān)L問USB實(shí)施者網(wǎng)站
其他標(biāo)準(zhǔn)組織為非商業(yè)活動(dòng)提供額外的視頻,如教學(xué)、研究或玩弄(業(yè)余愛好者)。USB實(shí)現(xiàn)者論壇還沒有提供這項(xiàng)服務(wù)。在這些情況下,您可能希望使用分配給開發(fā)系統(tǒng)制造商的一個(gè)。例如,大多數(shù)芯片制造商將有一個(gè)VID/PID組合,您可以使用您的芯片,這是眾所周知的不存在的商業(yè)設(shè)備。其他芯片制造商甚至可以賣給你一個(gè)PID,與他們的視頻一起用于你的商業(yè)設(shè)備。
USB的另一個(gè)更顯著的特點(diǎn)是它的傳輸模式。USB支持控制、中斷、批量和同步傳輸。稍后我們將討論其他傳輸模式,Isochronous允許設(shè)備在保證延遲的情況下保留一定數(shù)量的帶寬。這是音頻或視頻應(yīng)用程序的理想選擇,在這些應(yīng)用程序中,擁塞可能會(huì)導(dǎo)致數(shù)據(jù)或幀的丟失。每種傳輸模式在錯(cuò)誤檢測(cè)和恢復(fù)、保證的延遲和帶寬等方面為設(shè)計(jì)者提供了權(quán)衡。