USB基本原理
USB是一種由PC(USB主機)發(fā)起一次傳輸,設(shè)備(例如一套USB揚聲器)繼而響應(yīng)的通信協(xié)議。每次傳輸都尋址到一個特定設(shè)備,并尋址到該設(shè)備的一個特定端點。IN傳輸將數(shù)據(jù)發(fā)送至PC。當(dāng)主機發(fā)起一次IN傳輸時,設(shè)備必須用主機所需的數(shù)據(jù)做出響應(yīng)。OUT傳輸將數(shù)據(jù)傳輸至設(shè)備。當(dāng)主機執(zhí)行一次OUT傳輸時,它發(fā)送設(shè)備必須捕獲的數(shù)據(jù)包。在USB音頻領(lǐng)域,IN傳輸和OUT傳輸可以用于傳輸音頻樣本:一個OUT傳輸將音頻數(shù)據(jù)從PC發(fā)送至揚聲器,而IN傳輸用于將音頻數(shù)據(jù)從麥克風(fēng)發(fā)送至PC。
USB規(guī)范中有4種類型的IN傳輸和OUT傳輸:批量傳輸、同步傳輸、中斷傳輸和控制傳輸。
批量傳輸用于在主機和設(shè)備之間可靠地傳輸數(shù)據(jù)。所有USB傳輸都帶有CRC(校驗和),它表明是否有錯誤發(fā)生。在一次批量傳輸中,數(shù)據(jù)的接收端必須驗證CRC。如果CRC正確,傳輸被應(yīng)答,數(shù)據(jù)被假定已經(jīng)傳輸無誤。如果CRC不正確,傳輸不會被應(yīng)答,然后將會重試。如果設(shè)備未準(zhǔn)備好接收數(shù)據(jù),它將傳送一個否定應(yīng)答(NAK)信號,該信號將會使主機重試傳輸。批量傳輸不被認(rèn)為對時間要求嚴(yán)格,因此將會安排在以下將要討論的、對時間要求嚴(yán)格的各種傳輸?shù)闹苓厱r間。
同步傳輸用于在主機和設(shè)備之間實時傳輸數(shù)據(jù)。若主機建立了同步端點,主機會為同步端點分配一定數(shù)量的帶寬,并且它將在該端點上規(guī)律地執(zhí)行IN傳輸或OUT傳輸。例如,主機可以每125μs對該設(shè)備OUT 1KB數(shù)據(jù)。由于分配了固定的、有限數(shù)量的帶寬,如果出現(xiàn)了任何異常,都將沒有時間重發(fā)數(shù)據(jù)。數(shù)據(jù)具有正常的CRC,但是如果接收端檢測到錯誤,將沒有重發(fā)機制。
中斷傳輸被主機用于定期探詢設(shè)備,以發(fā)現(xiàn)是否有值得做的事情發(fā)生。例如,主機可以探詢音頻設(shè)備,核對靜音(MUTE)按鈕是否已被按下。“中斷”傳輸這個名稱有一點混淆視聽,因為其并不中斷任何事情。然而,數(shù)據(jù)的定期探詢給出了主機中斷將會提供的相同類型的功能。
控制傳輸與批量傳輸非常相似??刂苽鬏敃粦?yīng)答(即可以被NAK),并且以非實時方式傳送??刂苽鬏斢糜谡?shù)據(jù)流以外的操作,例如詢問設(shè)備功能或端點狀態(tài)。設(shè)備功能描述的說明在本文范疇之外,本文僅陳述諸如“USB音頻類”或“USB大容量存儲類”等預(yù)定義的類型,它們能夠?qū)崿F(xiàn)跨平臺的互操作性。
USB幀中制定了所有的傳輸類型。高速USB幀的長度為125μs(Full Speed USB幀為1ms),并由主機發(fā)送幀起始(SOF)消息進行標(biāo)記。同步傳輸和中斷傳輸每幀至多發(fā)送一次。
USB音頻
USB音頻使用了同步傳輸、中斷傳輸和控制傳輸。所有音頻數(shù)據(jù)通過同步傳輸來傳輸;中斷傳輸用于轉(zhuǎn)發(fā)關(guān)于音頻時鐘可用性的信息;控制傳輸用于設(shè)置音量、請求采樣率等(參見圖1)。
這里假設(shè)去設(shè)計一個具有96kHz采樣率和24位樣本的立體聲音頻揚聲器系統(tǒng),為了簡化主機和設(shè)備上的數(shù)據(jù)編組,24位值一般用一個零字節(jié)填充,因此,總數(shù)據(jù)吞吐速率為96,000×2通道×4B=768,000Bps。同步端點以每125μs進行一次傳輸(或8000次傳輸/s)的速率工作。用所需的字節(jié)速率除以幀速率,可以得到每次同步傳輸?shù)淖止?jié)數(shù):768,000/8,000=每次傳輸96B。
假若使用例如44,000Hz 的CD唱片速率,傳輸速率經(jīng)計算為44.1次傳輸/s。在USB音頻中,每次傳輸總是運送整數(shù)個樣本;傳輸在48B和40B(6個和5個立體聲樣本)之間交替進行,以至于平均速率算出為每次傳輸44.1B。
單次同步傳輸可運送1024B,最多能夠運送256個樣本(在24/32位時)。這意味著,單個同步端點在48kHz時能傳輸42個通道,或者在192kHz時能傳輸10個通道——假定使用的是高速USB(High Speed USB)——全速USB(Full Speed USB)在48kHz時無法運送多于一個立體聲IN和OUT對。
當(dāng)發(fā)送數(shù)字音頻時,將會有延遲引入。在高速USB的情況下,延遲為250μs。數(shù)據(jù)包在每個125μs窗口中傳輸一次,但是考慮到它可能會在該窗口中的任何時候發(fā)送,需要有一個250μs的緩沖器。在該250μs延遲的頂端,操作系統(tǒng)(O/S)驅(qū)動程序和編解碼器(CODEC)中可能引起額外延遲。注意:全速USB的固有延遲遠遠更高(為2ms),因為數(shù)據(jù)在每個1ms窗口中僅發(fā)送一次。
[page]
1s在“朋友”之間是什么?
在數(shù)字音頻中,商定一個共同的時間概念是大問題。上文已經(jīng)定義了USB幀的傳輸速率為8,000次/s,并設(shè)定了揚聲器播放樣本的速率為96,000次/s。僅當(dāng)揚聲器和主機約定了1s的長度,這才能夠奏效。USB音頻提供了3種模式,來確保主機和揚聲器共同約定時序:
1、在同步模式中,1s的長度由主機設(shè)備定義。這就是說,主機以某個速率發(fā)送數(shù)據(jù),設(shè)備必須精確匹配這個速率。
2、在異步模式中,這正好相反——設(shè)備設(shè)置1s的定義,主機必須對設(shè)備進行匹配。
3、在自適應(yīng)模式中,數(shù)據(jù)流決定時鐘。
自適應(yīng)模式和同步模式并不理想,因為PC保持時鐘穩(wěn)定的能力非常差,而且經(jīng)常有其他音頻源介入,例如一臺外部數(shù)字錄音機。異步模式使外部時鐘源(或是設(shè)備內(nèi)的低抖動時鐘)能夠用作主時鐘。一般兩者都依賴于基于晶振的鎖相環(huán)(PLL),如圖2所示。
這些時鐘的頻率會略有不同,其差別會隨時間略微變化。因此,每幀音頻樣本的平均數(shù)會稍微高于或低于期望的比率。例如,在本文96,000Hz采樣率的情況下,樣本的平均數(shù)為12.001。為了確保主機發(fā)送正確數(shù)量的數(shù)據(jù),并且不會太多或太低,主機向中斷端點請求當(dāng)前的采樣率。每隔幾個毫秒,上一個周期的平均采樣率將以16.16位定點數(shù)格式回報。如果上一個周期取平均數(shù)為12.001幀,那么報告值將為0x000C0041(65536×12.001)。
給定該平均速率,主機將能計算出在一次傳輸中在何時發(fā)送額外樣本;在此例中,每秒8次傳輸將運送一個額外樣本。此外,主機能夠利用該值與音頻設(shè)備進行同步。這使得DVD播放器等主機應(yīng)用能夠?qū)⒁曨l保持為與音頻同步。如果沒有同步,音頻會慢慢地跑到視頻前面,兩個小時以后,音頻將會有1s誤差。
為了保持反饋回路較短,訣竅是不對音頻包和反饋包做不必要的緩沖。任何附加的緩沖都會產(chǎn)生報告延遲,該延遲使得保持通信流的平滑變得更加困難。這意味著,底層USB棧和USB音頻棧應(yīng)緊密集成,而無需在它們之間緩沖。盡管這在應(yīng)用處理器上難以達到,但是把軟件在執(zhí)行時間可預(yù)測的嵌入式處理器上來實現(xiàn),這點將非常容易達到。諸如XMOS等公司現(xiàn)在可以提供這種可預(yù)測的嵌入式處理器,如XMOS的xCORE多核MCU等處理器系列。借助其豐富的內(nèi)置USB接口,它們緊密地將底層USB棧和USB音頻棧集成在一起。
[page]
多個時鐘源
以上方案僅考慮了兩個時鐘源——或者USB設(shè)備提供時鐘,或是主機提供時鐘。在調(diào)音臺等更復(fù)雜的設(shè)備中,可能還有其他設(shè)備提供采樣率,例如,通過ADAT或S/PDIF等數(shù)字接口,或通過攜帶字時鐘的BNC連接器提供。對于這樣的系統(tǒng),USB音頻標(biāo)準(zhǔn)使設(shè)計人員能夠在設(shè)備當(dāng)中置入時鐘選擇器。
時鐘選擇器規(guī)定采用哪個時鐘作為采樣率。時鐘選擇器有多個輸入時鐘(例如,一個S/PDIF接口上的輸入時鐘、本地晶振、以及一個ADAT接口上的輸入時鐘),并帶有一個用戶可選擇哪個時鐘用作輸入的控制傳輸,例如S/PDIF接口上的輸入時鐘。
符合性及原生支持
一旦一款設(shè)備符合USB音頻類協(xié)議,它將會很便捷地集成到操作系統(tǒng)中。圖3顯示了USB音頻設(shè)備插入到Mac OS/X系統(tǒng)中的控制界面截屏。它表明,時鐘選擇、采樣率選擇、通道音量控制以及靜音控制等都是可以控制的,就像對于任何其他的音頻設(shè)備那樣。
的確,相同的USB音頻實現(xiàn)能夠進行參數(shù)化,以實現(xiàn)不同數(shù)量的通道,并且相同的驅(qū)動程序能夠用于連接設(shè)備。
結(jié)語
USB-Audio Class 2.0利用了高速USB 2.0標(biāo)準(zhǔn),支持在PC和一臺所連接的音頻設(shè)備之間對音頻進行低延遲傳輸。高速USB 2.0的高吞吐率可用于實現(xiàn)多個音頻通道,并且具有高的音頻質(zhì)量。USB音頻類標(biāo)準(zhǔn)可服務(wù)于多種設(shè)備的,從復(fù)雜的、具備多個通道、多個時鐘源和復(fù)雜控制的調(diào)音臺,到環(huán)繞立體聲系統(tǒng)、PC揚聲器和麥克風(fēng)。
目前,頂級的消費性音頻產(chǎn)生已經(jīng)推出了各種USB-Audio產(chǎn)品,并且受到了市場的好評,如Sony和OPPO已經(jīng)推出了基于XMOS公司xCORE多核MCU產(chǎn)品的USB-Audio耳機放大器和音響組合單元。預(yù)計該項應(yīng)用將在不遠的將來為更多用戶所選用。
相關(guān)閱讀:
熟練掌握它:USB接口數(shù)模轉(zhuǎn)換電路設(shè)計
工程師值得推敲的設(shè)計:嵌入式USB工業(yè)U盤系統(tǒng)的設(shè)計
牛人解讀:從RS 232接口向USB接口通訊的華麗轉(zhuǎn)變