USB音頻的基本原理
USB基本原理
USB是一種由PC(USB主機)發(fā)起一次傳輸,設備(例如一套USB揚聲器)繼而響應的通信協(xié)議。每次傳輸都尋址到一個(gè)特定設備,并尋址到該設備的一個(gè)特定端點(diǎn)。IN傳輸將數據發(fā)送至PC。當主機發(fā)起一次IN傳輸時(shí),設備必須用主機所需的數據做出響應。OUT傳輸將數據傳輸至設備。當主機執行一次OUT傳輸時(shí),它發(fā)送設備必須捕獲的數據包。在USB音頻領(lǐng)域,IN傳輸和OUT傳輸可以用于傳輸音頻樣本:一個(gè)OUT傳輸將音頻數據從PC發(fā)送至揚聲器,而IN傳輸用于將音頻數據從麥克風(fēng)發(fā)送至PC。
![]() 作者:XMOS首席技術(shù)專(zhuān)家Henk Muller |
USB規范中有4種類(lèi)型的IN傳輸和OUT傳輸:批量傳輸、同步傳輸、中斷傳輸和控制傳輸。
批量傳輸用于在主機和設備之間可靠地傳輸數據。所有USB傳輸都帶有CRC(校驗和),它表明是否有錯誤發(fā)生。在一次批量傳輸中,數據的接收端必須驗證CRC。如果CRC正確,傳輸被應答,數據被假定已經(jīng)傳輸無(wú)誤。如果CRC不正確,傳輸不會(huì )被應答,然后將會(huì )重試。如果設備未準備好接收數據,它將傳送一個(gè)否定應答(NAK)信號,該信號將會(huì )使主機重試傳輸。批量傳輸不被認為對時(shí)間要求嚴格,因此將會(huì )安排在以下將要討論的、對時(shí)間要求嚴格的各種傳輸的周邊時(shí)間。
同步傳輸用于在主機和設備之間實(shí)時(shí)傳輸數據。若主機建立了同步端點(diǎn),主機會(huì )為同步端點(diǎn)分配一定數量的帶寬,并且它將在該端點(diǎn)上規律地執行IN傳輸或OUT傳輸。例如,主機可以每125μs對該設備OUT 1KB數據。由于分配了固定的、有限數量的帶寬,如果出現了任何異常,都將沒(méi)有時(shí)間重發(fā)數據。數據具有正常的CRC,但是如果接收端檢測到錯誤,將沒(méi)有重發(fā)機制。
中斷傳輸被主機用于定期探詢(xún)設備,以發(fā)現是否有值得做的事情發(fā)生。例如,主機可以探詢(xún)音頻設備,核對靜音(MUTE)按鈕是否已被按下。“中斷”傳輸這個(gè)名稱(chēng)有一點(diǎn)混淆視聽(tīng),因為其并不中斷任何事情。然而,數據的定期探詢(xún)給出了主機中斷將會(huì )提供的相同類(lèi)型的功能。
控制傳輸與批量傳輸非常相似??刂苽鬏敃?huì )被應答(即可以被NAK),并且以非實(shí)時(shí)方式傳送??刂苽鬏斢糜谡祿饕酝獾牟僮?,例如詢(xún)問(wèn)設備功能或端點(diǎn)狀態(tài)。設備功能描述的說(shuō)明在本文范疇之外,本文僅陳述諸如“USB音頻類(lèi)”或“USB大容量存儲類(lèi)”等預定義的類(lèi)型,它們能夠實(shí)現跨平臺的互操作性。
USB幀中制定了所有的傳輸類(lèi)型。高速USB幀的長(cháng)度為125μs(Full Speed USB幀為1ms),并由主機發(fā)送幀起始(SOF)消息進(jìn)行標記。同步傳輸和中斷傳輸每幀至多發(fā)送一次。
USB音頻
USB音頻使用了同步傳輸、中斷傳輸和控制傳輸。所有音頻數據通過(guò)同步傳輸來(lái)傳輸;中斷傳輸用于轉發(fā)關(guān)于音頻時(shí)鐘可用性的信息;控制傳輸用于設置音量、請求采樣率等(參見(jiàn)圖1)。

圖1:主機和USB設備之間的傳輸——同步IN和OUT用于音頻數據,控制用于設置參數,中斷用于狀態(tài)監視。
USB音頻系統的數據需求取決于通道數、代表每個(gè)樣本的位數,以及采樣率。典型的通道數為2(立體聲)、6(5.1聲道)或者更高(用于錄音室或DJ應用)。盡管傳統音頻可用16位,典型的采樣率為24位,而高質(zhì)量音頻為32位。典型的采樣率為44.1、48、96及192kHz,后者為高質(zhì)量音頻所使用。
這里假設去設計一個(gè)具有96kHz采樣率和24位樣本的立體聲音頻揚聲器系統,為了簡(jiǎn)化主機和設備上的數據編組,24位值一般用一個(gè)零字節填充,因此,總數據吞吐速率為96,000×2通道×4B=768,000Bps。同步端點(diǎn)以每125μs進(jìn)行一次傳輸(或8000次傳輸/s)的速率工作。用所需的字節速率除以幀速率,可以得到每次同步傳輸的字節數:768,000/8,000=每次傳輸96B。
假若使用例如44,000Hz 的CD唱片速率,傳輸速率經(jīng)計算為44.1次傳輸/s。在USB音頻中,每次傳輸總是運送整數個(gè)樣本;傳輸在48B和40B(6個(gè)和5個(gè)立體聲樣本)之間交替進(jìn)行,以至于平均速率算出為每次傳輸44.1B。
單次同步傳輸可運送1024B,最多能夠運送256個(gè)樣本(在24/32位時(shí))。這意味著(zhù),單個(gè)同步端點(diǎn)在48kHz時(shí)能傳輸42個(gè)通道,或者在192kHz時(shí)能傳輸10個(gè)通道——假定使用的是高速USB(High Speed USB)——全速USB(Full Speed USB)在48kHz時(shí)無(wú)法運送多于一個(gè)立體聲IN和OUT對。
當發(fā)送數字音頻時(shí),將會(huì )有延遲引入。在高速USB的情況下,延遲為250μs。數據包在每個(gè)125μs窗口中傳輸一次,但是考慮到它可能會(huì )在該窗口中的任何時(shí)候發(fā)送,需要有一個(gè)250μs的緩沖器。在該250μs延遲的頂端,操作系統(O/S)驅動(dòng)程序和編解碼器(CODEC)中可能引起額外延遲。注意:全速USB的固有延遲遠遠更高(為2ms),因為數據在每個(gè)1ms窗口中僅發(fā)送一次。
1s在“朋友”之間是什么?
在數字音頻中,商定一個(gè)共同的時(shí)間概念是大問(wèn)題。上文已經(jīng)定義了USB幀的傳輸速率為8,000次/s,并設定了揚聲器播放樣本的速率為96,000次/s。僅當揚聲器和主機約定了1s的長(cháng)度,這才能夠奏效。USB音頻提供了3種模式,來(lái)確保主機和揚聲器共同約定時(shí)序:
● 在同步模式中,1s的長(cháng)度由主機設備定義。這就是說(shuō),主機以某個(gè)速率發(fā)送數據,設備必須精確匹配這個(gè)速率。
● 在異步模式中,這正好相反——設備設置1s的定義,主機必須對設備進(jìn)行匹配。
● 在自適應模式中,數據流決定時(shí)鐘。
自適應模式和同步模式并不理想,因為PC保持時(shí)鐘穩定的能力非常差,而且經(jīng)常有其他音頻源介入,例如一臺外部數字錄音機。異步模式使外部時(shí)鐘源(或是設備內的低抖動(dòng)時(shí)鐘)能夠用作主時(shí)鐘。一般兩者都依賴(lài)于基于晶振的鎖相環(huán)(PLL),如圖2所示。
評論