新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 實現比特完美(Bit-Perfect) 的USB音頻

        實現比特完美(Bit-Perfect) 的USB音頻

        作者: 時間:2016-09-16 來源:電子產品世界 收藏

          采用接口來確保高品質音頻傳輸到外部設備是一種常用方法。由于使用者只需要把設備插入到預裝了驅動程序的通用接口即可,因此其對于音頻應用極富吸引力。盡管有這些優勢,使用音頻類時仍然需要對系統設計進行明智的選擇,以確保傳送音頻流時不會發生錯誤或更加糟糕的頻率失配。這篇文章《選擇音頻須小心:來自測試臺的可怕故事》給出了幾個有趣的故障案例。

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

          USB音頻系統是一個串行橋接系統,,它將來自USB總線的數據包轉換成音頻(I2S)總線數據包。這條總線通常連接一個編解碼器或下游音頻處理器(圖1)。I2S 總線的棘手之處在于,其需要精準的時鐘信號,才能實現高品質音頻。

          

         

          圖一:基于USB的音頻系統將來自USB總線的數據包轉換到I2S總線,后者通常連接編解碼器或下游音頻處理器

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

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

          Clocking Woes—the I2S Bus

          時鐘悲劇—I2S總線

          

         

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

          I2S是用于在兩個芯片之間傳送音頻的標準接口。該協議類似于一個串行外設接口(SPI),只是增加了幾個額外的信號。但是,音頻數據的性質使得為I2S總線計時比想象的要困難。圖2顯示了編解碼器和主芯片之間典型的I2S總線連接。

          I2S總線包括(圖3):

          • Bit clock:用于從Data In和Data Out線路讀取數據的時鐘。

          • Word select:也被稱為Left-Right Clock。該信號用于區分左右信道。

          • Data out: 主芯片輸出的串行數據流。

          • Data in:來自編解碼器的串行數據流。

          

         

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

          此外,大多數編解碼器還需要一個主時鐘(MCLK),用于為編解碼器的內部邏輯計時。

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

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

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

          USB音頻同步

          同步來自于I2S 接口的流入/流出數據包是實現USB音頻需要克服的一個基礎性的問題。USB類別規范定義了幾種不同的實現方法:

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

          • 異步模式:在異步模式中,音頻電路的從設備運行一個完全獨立于USB時鐘的時鐘。使用一個通過USB接口的反饋路徑來保持數據速率之間的同步。

          同步端點模式

          在同步端點模式中,所生成的音頻時鐘與每1ms進入一次的USB幀起始(SOF)包同步(圖4)。本質而言,我們從USB恢復時鐘,并用它運行編解碼器主時鐘和I2S模塊。同步模式極大簡化了緩沖器管理,因為出入的數據包基于同一個時鐘。

          

         

          圖四:在同步端點模式中,音頻時鐘與USB幀起始同步

          生成用于支持標準采樣率的部分時鐘頻率依然棘手,涉及一些數學問題。一種方法是使用前饋和反饋混合架構。所需的fS的整數倍由一個高品質的PLL生成。可以使用 1-3 MHz之間的一個參考時鐘頻率,然后乘以一個可配置的有理分數,以此生成純凈的輸出時鐘。

          PLL的參考時鐘由一個快速前饋一級生成。該級計算出本地晶振震蕩源生成所需參考時鐘所必需除以的分數因子,然后暗中運行這個除法運算。運算由一個雙模前置分頻器執行,其除法控制輸入由一個△Σ調制器驅動,后者接受一個代表分數分頻的輸入。

          一個噪聲整形環路提供一個兩級輸出,后者代表一個數字的分數部分,我們需要將本地時鐘頻率除以該數字以獲取所需參考頻率。有關如何恢復USB時鐘的詳細解釋,請參閱:USB音頻系統中可編程時鐘的生成和同步。

          異步模式

          

         

          圖五:在異步模式中,一個獨立的時鐘源提供主時鐘

          在異步模式中,主時鐘由一個獨立的本地時鐘源提供(圖5)。該模式可實現研發時間和生產成本所能實現的時鐘純凈度。系統擁有兩個獨立的時鐘域。PSoC系列可在芯片內創建獨立的時鐘域,而且能夠靈活地確保UDB與CPU和系統時鐘完全異步。

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

          

         

          使用PLL異步模式可提供一個沒有鎖定和同步問題的低抖動時鐘,但該模式給系統的緩沖器管理增加了復雜性。這是因為本地晶振振蕩器不一定被鎖定到主機認為的48 kHz。微小的頻率失配將最終導致上溢/下溢,從而導致音頻污染。

          為了解決這個問題,USB類別規范提供一個反饋端點,它可用于調節主機數據速率,以匹配輸入數據包和I2S輸出數據流之間的數據速率。系統計算I2S發出的數據包數量,將其與USB SOF進行對比,然后調節反饋端點的值,以匹配平均數據流。簡而言之,主機縮小或擴大數據樣本數量,以便讓一段時間內的平均速率匹配音頻采樣率。CY8CKIT-046套件中演示了異步模式USB音頻。



        關鍵詞: USB MCU

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 绍兴市| 沐川县| 策勒县| 仙居县| 枣阳市| 陇川县| 平顶山市| 福海县| 江华| 交城县| 太仓市| 延寿县| 青岛市| 依兰县| 赞皇县| 尚志市| 肇东市| 黄浦区| 同仁县| 来凤县| 东乡县| 塘沽区| 洛扎县| 湖北省| 巴里| 稻城县| 阿巴嘎旗| 且末县| 延吉市| 和田县| 永康市| 姚安县| 关岭| 松原市| 龙海市| 保靖县| 仁怀市| 洛南县| 博野县| 如皋市| 佳木斯市|