我來(lái)說(shuō)說(shuō)究竟什么是“USB異步傳輸” (Asynchronous USB)吧
討論貼:
http://www.erji.net/read.php?tid=767228&fpage=0&toread=&page=1
參考資料:
http://www.usbdacs.com/Concept/Concept.html
A:
廢話不多說(shuō),直奔主題吧。
對(duì)于USB音頻傳輸,有一個(gè)規(guī)范,叫做“標(biāo)準(zhǔn)USB音頻規(guī)范”。這個(gè)規(guī)范有什么用處和好處?
它的用處就在于,實(shí)現(xiàn)了以USB接口實(shí)時(shí)傳輸音頻信號(hào)。(汗)
它的好處就在于,直接集成在WINDOWS系統(tǒng)內(nèi),也就是說(shuō),只要符合這個(gè)規(guī)范的USB音頻產(chǎn)品,WINDOWS系統(tǒng)內(nèi)的集成驅(qū)動(dòng)就能直接支持,而不用廠商另外開發(fā)驅(qū)動(dòng)程序。相反,如果某款USB音頻產(chǎn)品有自己的驅(qū)動(dòng)程序,那么它就是不支持這個(gè)規(guī)范的。(但不表示這個(gè)產(chǎn)品就不好,自己開發(fā)驅(qū)動(dòng)本身是有研發(fā)實(shí)力的表現(xiàn)。)
在這個(gè)標(biāo)準(zhǔn)USB音頻規(guī)范下,有三種傳輸模式:同步、自適應(yīng),和異步。
同步:標(biāo)準(zhǔn)的同步模式其實(shí)很少見,基本不太用到的,這里省略。
自適應(yīng):大多數(shù)的產(chǎn)品(比如TI PCM270X、PCM290X系列)都是用的自適應(yīng)傳輸模式。
異步:這里的異步,才真正是AYRE QB9所大肆宣傳的異步USB傳輸模式。
所以嚴(yán)格來(lái)說(shuō),所謂“異步USB傳輸”,有個(gè)大前提,就是在標(biāo)準(zhǔn)USB音頻規(guī)范下而言。
那么自適應(yīng)傳輸模式和異步傳輸模式到底有何區(qū)別呢?
這里先要了解一下USB音頻處理的大致流程。電腦通過(guò)USB接口將音頻數(shù)據(jù)流傳遞給DAC上的USB接收芯片,USB接收芯片一邊接收數(shù)據(jù),一邊合成時(shí)鐘信號(hào),然后轉(zhuǎn)化為標(biāo)準(zhǔn)的I2S或者SPDIF信號(hào),再傳遞給后面的數(shù)據(jù)接收芯片,再之后的流程與一般的DAC就沒(méi)有分別了。
而在這個(gè)過(guò)程中,影響USB音頻音質(zhì)的關(guān)鍵,就是USB接收芯片所合成的時(shí)鐘信號(hào)。
在自適應(yīng)模式下,USB接收芯片,在合成時(shí)鐘信號(hào)的過(guò)程中,會(huì)根據(jù)USB傳輸速率的變化,對(duì)時(shí)鐘信號(hào)進(jìn)行實(shí)時(shí)的調(diào)整。也就是說(shuō),在這種情況下,USB傳輸速率的變化,會(huì)直接影響到合成的時(shí)鐘信號(hào)。
舉個(gè)夸張點(diǎn)的例子:比如現(xiàn)在播放一段44.1K的音頻,當(dāng)然就要求USB接收芯片合成一個(gè)44.1K的時(shí)鐘。而這個(gè)44.1K的時(shí)鐘,對(duì)應(yīng)于USB傳輸?shù)乃俾?,比如,胡亂說(shuō)一個(gè),是200個(gè)數(shù)據(jù)包每秒。
也就是說(shuō),如果要讓USB接收芯片穩(wěn)定的合成44.1K 的時(shí)鐘,USB傳輸速率,也必須穩(wěn)定在200個(gè)數(shù)據(jù)包每秒。
但現(xiàn)在的問(wèn)題是,USB傳輸?shù)乃俣炔豢赡苓@么穩(wěn)定,也許這一秒傳遞了200個(gè)數(shù)據(jù)包,而下一秒,突然增加到了400個(gè)。而這個(gè)時(shí)候,USB接收芯片會(huì)怎么做?它會(huì)把實(shí)際合成的時(shí)鐘,提高到88.2K。如果再下一秒的USB速率又變?yōu)?00個(gè)數(shù)據(jù)包每秒,那么相應(yīng)的合成時(shí)鐘就變成了22.05K。當(dāng)然,這是一個(gè)極端夸張的例子。
可是為什么USB接收芯片要這么做?很簡(jiǎn)單。因?yàn)槿绻鸘SB接收芯片只是單純的合成44.1K的時(shí)鐘,每秒處理200個(gè)數(shù)據(jù)包,那么一旦真的收到了400個(gè)或者100個(gè)數(shù)據(jù)包,緩存就會(huì)溢出,或者斷流。
所以,在自適應(yīng)模式下,USB接收芯片所合成的時(shí)鐘信號(hào),是隨USB口的傳輸速率實(shí)時(shí)變化的,傳輸速率是主,時(shí)鐘信號(hào)為從,USB傳輸速率的變化直接影響到合成的時(shí)鐘信號(hào)。那么可想而知,這個(gè)時(shí)鐘信號(hào)的JITTER有多大。從而你也可以理解,為什么有人會(huì)說(shuō),換質(zhì)量好的USB線能提高音質(zhì)。
那么異步傳輸是怎么工作的呢?說(shuō)起來(lái)更簡(jiǎn)單,USB接收芯片現(xiàn)在只需要穩(wěn)定的合成44.1K的時(shí)鐘,也就是說(shuō),現(xiàn)在這個(gè)時(shí)鐘與USB傳輸速率無(wú)關(guān)了。
可是如果這樣的話,緩存的問(wèn)題怎么解決?答案是,軟件控制。通過(guò)一套軟件,根據(jù)緩存的負(fù)載情況,實(shí)時(shí)的控制USB口的傳輸速率,從而保證緩存不會(huì)溢出或者斷流。在這種情況下,時(shí)鐘信號(hào)為主,傳輸速率為從,時(shí)鐘信號(hào)不受傳輸速率變化的影響,理論上這時(shí)的JITTER源,就只有工作晶振本身的誤差了。
這個(gè)方案,就是AYRE QB9所大肆宣傳的“異步USB傳輸”模式。它的實(shí)現(xiàn)方式,就是通過(guò)TAS1020B這塊芯片,配合本地的6M晶振,還有關(guān)鍵的控制傳輸速率的固件,來(lái)完成。
而TAS1020B這塊芯片,是一塊可編程的芯片,并不是說(shuō)用了這塊芯片就一定是異步USB傳輸。DAC1 USB,DA11用的也是這塊芯片,但都只用到了它 的自適應(yīng)模式,關(guān)鍵還是看固件怎么寫。所以從某種程度上來(lái)說(shuō),現(xiàn)在的DAC設(shè)計(jì),比拼的已經(jīng)不是硬件,而是軟件了。
B:
USB聲卡的播放流程是這樣的
在主機(jī)應(yīng)用程序中播放音樂(lè)前,USB聲卡就會(huì)從主機(jī)端收到如下的兩個(gè)包:Setup包 和 控制數(shù)據(jù)包
根據(jù)USB音頻類協(xié)議分解Setup包,可以得知,本次控制傳輸?shù)淖饔檬窃O(shè)置USB聲卡的采樣頻率,那么在播放音樂(lè)前,必須把I2S控制器的采樣頻率做相應(yīng)的設(shè)置。才能和主機(jī)端保持同步。
這是在主機(jī)開始播放音樂(lè)時(shí)做的事。
然后在播放過(guò)程中
USB音頻類規(guī)定的USB同步傳輸周期為1ms,每隔1ms,USB設(shè)備就會(huì)收到一次主機(jī)傳來(lái)的數(shù)據(jù)。而USB設(shè)備會(huì)在接收緩存中暫時(shí)性的存儲(chǔ)這些數(shù)據(jù)。(TAS1020B的接受緩存剛好能存儲(chǔ)24BIT/96K的數(shù)據(jù))然后再進(jìn)行處理,然后送到I2S控制器。在這個(gè)過(guò)程中,USB1.1因?yàn)閹捄蛢?yōu)先度的原因,系統(tǒng)其他操作比較繁忙的時(shí)候容易出現(xiàn)丟包的狀況,在丟包的狀況下,USB芯片會(huì)把生成一個(gè)空數(shù)據(jù)包(就是全部都是0000000)。因此USB1.1的USB聲卡經(jīng)常出現(xiàn)小爆音。
異步模式的USB DAC中,I2S控制器自己生成時(shí)鐘,然后向USB芯片發(fā)出反饋,USB芯片再對(duì)音頻數(shù)據(jù)流進(jìn)行采樣的轉(zhuǎn)換(SRC),轉(zhuǎn)換成I2S控制器所需要的采樣,再發(fā)給I2S控制器。這時(shí)I2S控制器的時(shí)鐘是自己生成的。沒(méi)有和USB總線時(shí)鐘同步,所以很在接收USB處理后的數(shù)據(jù)時(shí),容易受時(shí)鐘誤差和抖動(dòng)等影響。在《USB協(xié)議及規(guī)范》中這樣的處理是十分不推薦的。
“Such slips/stuffs will cause audible degradation in audio applications. ”
自適應(yīng)模式的USB DAC中,USB芯片會(huì)對(duì)數(shù)據(jù)包進(jìn)行處理,根據(jù)播放開始前主機(jī)端發(fā)來(lái)的采樣信息,加進(jìn)數(shù)據(jù)包中,而I2S信號(hào)控制器在讀取數(shù)據(jù)包后,會(huì)根據(jù)采樣信息建立相應(yīng)的時(shí)鐘,并解包,裝載音頻數(shù)據(jù)。
就從USB本身的協(xié)議來(lái)看,作為“目的”端來(lái)說(shuō),自適應(yīng)模式無(wú)疑比異步模式更加適合音頻。
從電路上來(lái)看,QB9是通過(guò)FPGA讀取播放前主機(jī)發(fā)來(lái)的采樣格式信號(hào),然后選擇相應(yīng)頻率的時(shí)鐘,在FPGA上對(duì)TAS1020B輸出的信號(hào)進(jìn)行時(shí)鐘重整。而TAS1020B異步模式時(shí)所采用的時(shí)鐘依然是內(nèi)置的時(shí)鐘。
參考資料:
《USB協(xié)議及規(guī)范》
《USB Audio Class協(xié)議規(guī)范》
同步類型
? ? ? ? ? ——異步:不同步、但目的(sink)能提供數(shù)據(jù)速率反饋
? ? ? ? ? ——同步:同步到USB的SOF時(shí)鐘
? ? ? ? ? ——可調(diào):用反饋或feed forward 的數(shù)據(jù)速率信息實(shí)現(xiàn)同步