USB音頻的基本原理
USB基本原理
USB是一種由PC(USB主機(jī))發(fā)起一次傳輸,設(shè)備(例如一套USB揚(yáng)聲器)繼而響應(yīng)的通信協(xié)議。每次傳輸都尋址到一個(gè)特定設(shè)備,并尋址到該設(shè)備的一個(gè)特定端點(diǎn)。IN傳輸將數(shù)據(jù)發(fā)送至PC。當(dāng)主機(jī)發(fā)起一次IN傳輸時(shí),設(shè)備必須用主機(jī)所需的數(shù)據(jù)做出響應(yīng)。OUT傳輸將數(shù)據(jù)傳輸至設(shè)備。當(dāng)主機(jī)執(zhí)行一次OUT傳輸時(shí),它發(fā)送設(shè)備必須捕獲的數(shù)據(jù)包。在USB音頻領(lǐng)域,IN傳輸和OUT傳輸可以用于傳輸音頻樣本:一個(gè)OUT傳輸將音頻數(shù)據(jù)從PC發(fā)送至揚(yáng)聲器,而IN傳輸用于將音頻數(shù)據(jù)從麥克風(fēng)發(fā)送至PC。
作者:XMOS首席技術(shù)專家Henk Muller |
USB規(guī)范中有4種類型的IN傳輸和OUT傳輸:批量傳輸、同步傳輸、中斷傳輸和控制傳輸。
批量傳輸用于在主機(jī)和設(shè)備之間可靠地傳輸數(shù)據(jù)。所有USB傳輸都帶有CRC(校驗(yàn)和),它表明是否有錯(cuò)誤發(fā)生。在一次批量傳輸中,數(shù)據(jù)的接收端必須驗(yàn)證CRC。如果CRC正確,傳輸被應(yīng)答,數(shù)據(jù)被假定已經(jīng)傳輸無誤。如果CRC不正確,傳輸不會被應(yīng)答,然后將會重試。如果設(shè)備未準(zhǔn)備好接收數(shù)據(jù),它將傳送一個(gè)否定應(yīng)答(NAK)信號,該信號將會使主機(jī)重試傳輸。批量傳輸不被認(rèn)為對時(shí)間要求嚴(yán)格,因此將會安排在以下將要討論的、對時(shí)間要求嚴(yán)格的各種傳輸?shù)闹苓厱r(shí)間。
同步傳輸用于在主機(jī)和設(shè)備之間實(shí)時(shí)傳輸數(shù)據(jù)。若主機(jī)建立了同步端點(diǎn),主機(jī)會為同步端點(diǎn)分配一定數(shù)量的帶寬,并且它將在該端點(diǎn)上規(guī)律地執(zhí)行IN傳輸或OUT傳輸。例如,主機(jī)可以每125μs對該設(shè)備OUT 1KB數(shù)據(jù)。由于分配了固定的、有限數(shù)量的帶寬,如果出現(xiàn)了任何異常,都將沒有時(shí)間重發(fā)數(shù)據(jù)。數(shù)據(jù)具有正常的CRC,但是如果接收端檢測到錯(cuò)誤,將沒有重發(fā)機(jī)制。
中斷傳輸被主機(jī)用于定期探詢設(shè)備,以發(fā)現(xiàn)是否有值得做的事情發(fā)生。例如,主機(jī)可以探詢音頻設(shè)備,核對靜音(MUTE)按鈕是否已被按下。“中斷”傳輸這個(gè)名稱有一點(diǎn)混淆視聽,因?yàn)槠洳⒉恢袛嗳魏问虑?。然而,?shù)據(jù)的定期探詢給出了主機(jī)中斷將會提供的相同類型的功能。
控制傳輸與批量傳輸非常相似??刂苽鬏敃粦?yīng)答(即可以被NAK),并且以非實(shí)時(shí)方式傳送。控制傳輸用于正常數(shù)據(jù)流以外的操作,例如詢問設(shè)備功能或端點(diǎn)狀態(tài)。設(shè)備功能描述的說明在本文范疇之外,本文僅陳述諸如“USB音頻類”或“USB大容量存儲類”等預(yù)定義的類型,它們能夠?qū)崿F(xiàn)跨平臺的互操作性。
USB幀中制定了所有的傳輸類型。高速USB幀的長度為125μs(Full Speed USB幀為1ms),并由主機(jī)發(fā)送幀起始(SOF)消息進(jìn)行標(biāo)記。同步傳輸和中斷傳輸每幀至多發(fā)送一次。
USB音頻
USB音頻使用了同步傳輸、中斷傳輸和控制傳輸。所有音頻數(shù)據(jù)通過同步傳輸來傳輸;中斷傳輸用于轉(zhuǎn)發(fā)關(guān)于音頻時(shí)鐘可用性的信息;控制傳輸用于設(shè)置音量、請求采樣率等(參見圖1)。
圖1:主機(jī)和USB設(shè)備之間的傳輸——同步IN和OUT用于音頻數(shù)據(jù),控制用于設(shè)置參數(shù),中斷用于狀態(tài)監(jiān)視。
USB音頻系統(tǒng)的數(shù)據(jù)需求取決于通道數(shù)、代表每個(gè)樣本的位數(shù),以及采樣率。典型的通道數(shù)為2(立體聲)、6(5.1聲道)或者更高(用于錄音室或DJ應(yīng)用)。盡管傳統(tǒng)音頻可用16位,典型的采樣率為24位,而高質(zhì)量音頻為32位。典型的采樣率為44.1、48、96及192kHz,后者為高質(zhì)量音頻所使用。
這里假設(shè)去設(shè)計(jì)一個(gè)具有96kHz采樣率和24位樣本的立體聲音頻揚(yáng)聲器系統(tǒng),為了簡化主機(jī)和設(shè)備上的數(shù)據(jù)編組,24位值一般用一個(gè)零字節(jié)填充,因此,總數(shù)據(jù)吞吐速率為96,000×2通道×4B=768,000Bps。同步端點(diǎn)以每125μs進(jìn)行一次傳輸(或8000次傳輸/s)的速率工作。用所需的字節(jié)速率除以幀速率,可以得到每次同步傳輸?shù)淖止?jié)數(shù):768,000/8,000=每次傳輸96B。
假若使用例如44,000Hz 的CD唱片速率,傳輸速率經(jīng)計(jì)算為44.1次傳輸/s。在USB音頻中,每次傳輸總是運(yùn)送整數(shù)個(gè)樣本;傳輸在48B和40B(6個(gè)和5個(gè)立體聲樣本)之間交替進(jìn)行,以至于平均速率算出為每次傳輸44.1B。
單次同步傳輸可運(yùn)送1024B,最多能夠運(yùn)送256個(gè)樣本(在24/32位時(shí))。這意味著,單個(gè)同步端點(diǎn)在48kHz時(shí)能傳輸42個(gè)通道,或者在192kHz時(shí)能傳輸10個(gè)通道——假定使用的是高速USB(High Speed USB)——全速USB(Full Speed USB)在48kHz時(shí)無法運(yùn)送多于一個(gè)立體聲IN和OUT對。
當(dāng)發(fā)送數(shù)字音頻時(shí),將會有延遲引入。在高速USB的情況下,延遲為250μs。數(shù)據(jù)包在每個(gè)125μs窗口中傳輸一次,但是考慮到它可能會在該窗口中的任何時(shí)候發(fā)送,需要有一個(gè)250μs的緩沖器。在該250μs延遲的頂端,操作系統(tǒng)(O/S)驅(qū)動程序和編解碼器(CODEC)中可能引起額外延遲。注意:全速USB的固有延遲遠(yuǎn)遠(yuǎn)更高(為2ms),因?yàn)閿?shù)據(jù)在每個(gè)1ms窗口中僅發(fā)送一次。
1s在“朋友”之間是什么?
在數(shù)字音頻中,商定一個(gè)共同的時(shí)間概念是大問題。上文已經(jīng)定義了USB幀的傳輸速率為8,000次/s,并設(shè)定了揚(yáng)聲器播放樣本的速率為96,000次/s。僅當(dāng)揚(yáng)聲器和主機(jī)約定了1s的長度,這才能夠奏效。USB音頻提供了3種模式,來確保主機(jī)和揚(yáng)聲器共同約定時(shí)序:
● 在同步模式中,1s的長度由主機(jī)設(shè)備定義。這就是說,主機(jī)以某個(gè)速率發(fā)送數(shù)據(jù),設(shè)備必須精確匹配這個(gè)速率。
● 在異步模式中,這正好相反——設(shè)備設(shè)置1s的定義,主機(jī)必須對設(shè)備進(jìn)行匹配。
● 在自適應(yīng)模式中,數(shù)據(jù)流決定時(shí)鐘。
自適應(yīng)模式和同步模式并不理想,因?yàn)镻C保持時(shí)鐘穩(wěn)定的能力非常差,而且經(jīng)常有其他音頻源介入,例如一臺外部數(shù)字錄音機(jī)。異步模式使外部時(shí)鐘源(或是設(shè)備內(nèi)的低抖動時(shí)鐘)能夠用作主時(shí)鐘。一般兩者都依賴于基于晶振的鎖相環(huán)(PLL),如圖2所示。
評論