信號鏈基礎知識#54 誰是音頻時鐘的“老板”,誰是主,誰又是從呢?
傳統 I2S—為何要包括系統時鐘?
大多數人認為 I2S 有三種信號:
- 數據:輸入或者輸出數據
- 位時鐘 (Bitclock,BCK):確立數據流中兩個相鄰位之間邊界的信號
- 左/右時鐘 (LRCK)/字時鐘 (Wordclock):一個在采樣速率下運行、占空比為 50% 的慢時鐘,它確立數據流中兩條相鄰通道(左和右)之間的邊界。
I2S 的幕后英雄是主時鐘 (MCK),也稱作系統時鐘 (SCK),它常常被數字信號處理器 (DSP) 程序員和其他處理器愛好者們忽略。主時鐘 (MCK/SCK),通常為一個64、128、256 和 512 倍采樣速率 (FS) 的時鐘。它可以由一個輸入引腳直接提供,也可以通過一個鎖相環路 (PLL) 在某些器件內部產生。
如果您能暫時將注意力從您的處理器上移開,您會發現音頻主時鐘重要得多。大多數 MCK/SCK 輸入的音頻轉換器,都要求時鐘同步,而有一些則允許異相位。這就意味著,它們需要由相同的高速時鐘來提供,然后被除小。我接觸過的一些客戶會突發靈感地告訴我:“我的 ADC 需要一個 MCK,但它離我的 DAC 太遠。因此,我要在每個轉換器旁邊放置一個晶體……”有這種想法可以理解,但請您“千萬別這么做!”
您在購買晶體時,無法保證它剛好為 48.000 kHz。您的模數轉換器 (ADC) 晶體的運行精確度可能會為 +5%,而數模轉換器 (DAC) 的運行精確度可能為 –5%。這樣的精確度,會給您的設計帶來災難性的后果!這是為什么呢,下面將為您娓娓道來。
用于 I2S
用于音頻 ADC 的主時鐘
當 ADC 運行在主模式(生成 BCK 和 LRCK,作為輸出)下時,ADC 只是對 MCK/SCK 進行劃分,產生 LRCK 和 BCK 信號。這就對啦!LRCK/BCK 和主時鐘被同步—相位也可能同步(除非它是一個特殊分割器)。

圖 1 通用 ADC 結構圖
如果作為一個從器件,并且主時鐘不同步,則它產生的數據會過多或者過少,以至于數字抽取器無法剛好適合于輸出字。在這種條件下,許多 ADC 會拒絕流傳輸數據。
DAC 也是如此。圖 2 顯示了一個高級 DAC 結構圖。此處,需要通過 MCK/SCK 運行內插器,而 MCK/SCK 同時還驅動△∑ 調制器。如果 MCK/SCK 不是采樣速率的整倍數 (64/128/256/512),則在 △∑ 調制器輸出端可能會出現錯誤數據。

圖 2 通用 DAC 結構圖
我在哪里/如何生成 MCK/SCK 呢?
另外,我建議,如果在晶體源驅動 ADC 或是 DAC 兩者之間選擇,請您選擇通過一個晶體產生源來運行 ADC。如果輸入很糟糕,那么您做什么都于事無補!(就像您不可能把爛泥打磨光亮!)
因此,我的建議遵循的原則是:
- 如果轉換器為一個 I2S 從器件,則您必須通過相同源(如果轉換器帶有,則可以依靠內部 PLL),提供所有三個 I2S 時鐘(MCK、BCK 和 LRCK)。
- 如果轉換器為一個 I2S 主器件,則請確定能夠提供一個可靠的無抖動 MCK源。然后,讓轉換器自己分配。在可能的情況下,讓 ADC 通過一個可靠的低抖動 MCK 源在主模式下運行。這樣做可以確保最低抖動和最小高頻失真。
建議參閱資料:
《關于抖動》,作者:Dan Lavry,Lavry 工程公司,版權所有 1997。
本文引用地址:http://www.j9360.com/article/201706/347174.htm
評論