新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 實(shí)現(xiàn)比特完美(Bit-Perfect) 的USB音頻

        實(shí)現(xiàn)比特完美(Bit-Perfect) 的USB音頻

        作者: 時(shí)間:2016-09-16 來(lái)源:電子產(chǎn)品世界 收藏

          采用接口來(lái)確保高品質(zhì)音頻傳輸?shù)酵獠吭O(shè)備是一種常用方法。由于使用者只需要把設(shè)備插入到預(yù)裝了驅(qū)動(dòng)程序的通用接口即可,因此其對(duì)于音頻應(yīng)用極富吸引力。盡管有這些優(yōu)勢(shì),使用音頻類(lèi)時(shí)仍然需要對(duì)系統(tǒng)設(shè)計(jì)進(jìn)行明智的選擇,以確保傳送音頻流時(shí)不會(huì)發(fā)生錯(cuò)誤或更加糟糕的頻率失配。這篇文章《選擇音頻須小心:來(lái)自測(cè)試臺(tái)的可怕故事》給出了幾個(gè)有趣的故障案例。

        本文引用地址:http://www.104case.com/article/201609/297019.htm

          USB音頻系統(tǒng)是一個(gè)串行橋接系統(tǒng),,它將來(lái)自USB總線的數(shù)據(jù)包轉(zhuǎn)換成音頻(I2S)總線數(shù)據(jù)包。這條總線通常連接一個(gè)編解碼器或下游音頻處理器(圖1)。I2S 總線的棘手之處在于,其需要精準(zhǔn)的時(shí)鐘信號(hào),才能實(shí)現(xiàn)高品質(zhì)音頻。

          

         

          圖一:基于USB的音頻系統(tǒng)將來(lái)自USB總線的數(shù)據(jù)包轉(zhuǎn)換到I2S總線,后者通常連接編解碼器或下游音頻處理器

          舉例來(lái)說(shuō),典型的音頻采樣率是48 k個(gè)樣本/秒。大多數(shù)商用編解碼器IC需要一個(gè)頻率為音頻采樣率整數(shù)倍(通常是128或256倍)的純凈時(shí)鐘。這迫使編解碼器的時(shí)鐘頻率達(dá)到恐怖的12.288 MHz,而這個(gè)頻率難以從標(biāo)準(zhǔn)的晶振震蕩時(shí)鐘源中獲得。更為復(fù)雜的是,支持44.1 k個(gè)樣本/秒等多個(gè)采樣率需要為每一個(gè)采樣率采用同樣高品質(zhì)的時(shí)鐘。這意味著系統(tǒng)或者配置多個(gè)晶振振蕩器,或采用非常靈活的時(shí)鐘方案。

          可以使用貼片(SMD)振蕩器,但這些通常功耗較大的器件需要高達(dá)20 mA的功率,因此不適合電池供電型設(shè)備。也可以使用鎖相環(huán)(PLL)實(shí)現(xiàn)靈活的時(shí)鐘方案。例如,賽普拉斯的PSoC 4-L系列芯片內(nèi)置PLL和高度可配置的通用數(shù)字模塊(UDB),可讓開(kāi)發(fā)人員設(shè)計(jì)出靈活的時(shí)鐘方案。

          Clocking Woes—the I2S Bus

          時(shí)鐘悲劇—I2S總線

          

         

          圖二:編解碼器和主芯片之間一條典型的I2S總線連接

          I2S是用于在兩個(gè)芯片之間傳送音頻的標(biāo)準(zhǔn)接口。該協(xié)議類(lèi)似于一個(gè)串行外設(shè)接口(SPI),只是增加了幾個(gè)額外的信號(hào)。但是,音頻數(shù)據(jù)的性質(zhì)使得為I2S總線計(jì)時(shí)比想象的要困難。圖2顯示了編解碼器和主芯片之間典型的I2S總線連接。

          I2S總線包括(圖3):

          • Bit clock:用于從Data In和Data Out線路讀取數(shù)據(jù)的時(shí)鐘。

          • Word select:也被稱(chēng)為L(zhǎng)eft-Right Clock。該信號(hào)用于區(qū)分左右信道。

          • Data out: 主芯片輸出的串行數(shù)據(jù)流。

          • Data in:來(lái)自編解碼器的串行數(shù)據(jù)流。

          

         

          圖三:I2S總線的主要構(gòu)件包括bit clock、word select、data in和data out

          此外,大多數(shù)編解碼器還需要一個(gè)主時(shí)鐘(MCLK),用于為編解碼器的內(nèi)部邏輯計(jì)時(shí)。

          音頻數(shù)據(jù)有兩種典型的分辨率:16位和24位。如果我們考慮一個(gè)立體聲數(shù)據(jù)流,一個(gè)采樣周期中的總數(shù)據(jù)流為32或48位。這個(gè)周期通常是48/44.1/32 kHz。大多數(shù)編解碼器在一個(gè)word-select周期中最多支持32位,但分辨率可能仍為24位,因?yàn)橐?填充到最后。

          這將每個(gè)采樣周期的總數(shù)據(jù)增至64位。如果我們考慮48-kHz的24位立體聲,我們所需的位時(shí)鐘將為48 × 64 × 2,即6.144 MHz。

          編解碼器對(duì)主時(shí)鐘的要求取決于所用的編解碼器的品牌和類(lèi)型。現(xiàn)代編解碼器支持多個(gè)時(shí)鐘模式,但每個(gè)模式都是采樣頻率(fS).的整數(shù)倍。主時(shí)鐘的值通常為fS的128/256/512倍。因此,48-kHz采樣頻率的時(shí)鐘值為 6.144/12.288/24.576 MHz。

          USB音頻同步

          同步來(lái)自于I2S 接口的流入/流出數(shù)據(jù)包是實(shí)現(xiàn)USB音頻需要克服的一個(gè)基礎(chǔ)性的問(wèn)題。USB類(lèi)別規(guī)范定義了幾種不同的實(shí)現(xiàn)方法:

          • 同步模式:在同步模式中,從設(shè)備的音頻時(shí)鐘將與USB幀起始同步(每1 ms)。這簡(jiǎn)化了系統(tǒng)的緩沖器管理工作,更加便于維持一個(gè)一致的數(shù)據(jù)流。

          • 異步模式:在異步模式中,音頻電路的從設(shè)備運(yùn)行一個(gè)完全獨(dú)立于USB時(shí)鐘的時(shí)鐘。使用一個(gè)通過(guò)USB接口的反饋路徑來(lái)保持?jǐn)?shù)據(jù)速率之間的同步。

          同步端點(diǎn)模式

          在同步端點(diǎn)模式中,所生成的音頻時(shí)鐘與每1ms進(jìn)入一次的USB幀起始(SOF)包同步(圖4)。本質(zhì)而言,我們從USB恢復(fù)時(shí)鐘,并用它運(yùn)行編解碼器主時(shí)鐘和I2S模塊。同步模式極大簡(jiǎn)化了緩沖器管理,因?yàn)槌鋈氲臄?shù)據(jù)包基于同一個(gè)時(shí)鐘。

          

         

          圖四:在同步端點(diǎn)模式中,音頻時(shí)鐘與USB幀起始同步

          生成用于支持標(biāo)準(zhǔn)采樣率的部分時(shí)鐘頻率依然棘手,涉及一些數(shù)學(xué)問(wèn)題。一種方法是使用前饋和反饋混合架構(gòu)。所需的fS的整數(shù)倍由一個(gè)高品質(zhì)的PLL生成。可以使用 1-3 MHz之間的一個(gè)參考時(shí)鐘頻率,然后乘以一個(gè)可配置的有理分?jǐn)?shù),以此生成純凈的輸出時(shí)鐘。

          PLL的參考時(shí)鐘由一個(gè)快速前饋一級(jí)生成。該級(jí)計(jì)算出本地晶振震蕩源生成所需參考時(shí)鐘所必需除以的分?jǐn)?shù)因子,然后暗中運(yùn)行這個(gè)除法運(yùn)算。運(yùn)算由一個(gè)雙模前置分頻器執(zhí)行,其除法控制輸入由一個(gè)△Σ調(diào)制器驅(qū)動(dòng),后者接受一個(gè)代表分?jǐn)?shù)分頻的輸入。

          一個(gè)噪聲整形環(huán)路提供一個(gè)兩級(jí)輸出,后者代表一個(gè)數(shù)字的分?jǐn)?shù)部分,我們需要將本地時(shí)鐘頻率除以該數(shù)字以獲取所需參考頻率。有關(guān)如何恢復(fù)USB時(shí)鐘的詳細(xì)解釋?zhuān)?qǐng)參閱:USB音頻系統(tǒng)中可編程時(shí)鐘的生成和同步。

          異步模式

          

         

          圖五:在異步模式中,一個(gè)獨(dú)立的時(shí)鐘源提供主時(shí)鐘

          在異步模式中,主時(shí)鐘由一個(gè)獨(dú)立的本地時(shí)鐘源提供(圖5)。該模式可實(shí)現(xiàn)研發(fā)時(shí)間和生產(chǎn)成本所能實(shí)現(xiàn)的時(shí)鐘純凈度。系統(tǒng)擁有兩個(gè)獨(dú)立的時(shí)鐘域。PSoC系列可在芯片內(nèi)創(chuàng)建獨(dú)立的時(shí)鐘域,而且能夠靈活地確保UDB與CPU和系統(tǒng)時(shí)鐘完全異步。

          我們還遇到了多個(gè)音頻速率的支持問(wèn)題。選擇合適的晶振和內(nèi)置PLL,我們有可能創(chuàng)建一個(gè)可實(shí)現(xiàn)常用音頻頻率的頻率集。這個(gè)神奇的數(shù)字就是17.2032 MHz(見(jiàn)下表)。

          

         

          使用PLL異步模式可提供一個(gè)沒(méi)有鎖定和同步問(wèn)題的低抖動(dòng)時(shí)鐘,但該模式給系統(tǒng)的緩沖器管理增加了復(fù)雜性。這是因?yàn)楸镜鼐д裾袷幤鞑灰欢ū绘i定到主機(jī)認(rèn)為的48 kHz。微小的頻率失配將最終導(dǎo)致上溢/下溢,從而導(dǎo)致音頻污染。

          為了解決這個(gè)問(wèn)題,USB類(lèi)別規(guī)范提供一個(gè)反饋端點(diǎn),它可用于調(diào)節(jié)主機(jī)數(shù)據(jù)速率,以匹配輸入數(shù)據(jù)包和I2S輸出數(shù)據(jù)流之間的數(shù)據(jù)速率。系統(tǒng)計(jì)算I2S發(fā)出的數(shù)據(jù)包數(shù)量,將其與USB SOF進(jìn)行對(duì)比,然后調(diào)節(jié)反饋端點(diǎn)的值,以匹配平均數(shù)據(jù)流。簡(jiǎn)而言之,主機(jī)縮小或擴(kuò)大數(shù)據(jù)樣本數(shù)量,以便讓一段時(shí)間內(nèi)的平均速率匹配音頻采樣率。CY8CKIT-046套件中演示了異步模式USB音頻。



        關(guān)鍵詞: USB MCU

        評(píng)論


        相關(guān)推薦

        技術(shù)專(zhuān)區(qū)

        關(guān)閉
        主站蜘蛛池模板: 左云县| 深圳市| 于都县| 博湖县| 昆明市| 乌兰浩特市| 武鸣县| 邯郸市| 抚顺县| 当涂县| 南召县| 资中县| 都匀市| 安多县| 墨玉县| 任丘市| 呼图壁县| 华阴市| 望谟县| 华宁县| 广安市| 福州市| 石柱| 石阡县| 吉水县| 阿合奇县| 湄潭县| 扎鲁特旗| 托里县| 黄石市| 游戏| 陆川县| 文化| 沂源县| 开阳县| 蓝田县| 普洱| 天镇县| 阜平县| 庆安县| 乾安县|