誰是音頻時鐘的「老闆」,誰是主,誰又是從呢?

Dafydd Roche,德州儀器 (TI) 音頻工程師

傳統 I2S—爲什麼要包括系統時鐘?

過去,咱們在討論音頻話題時,偶爾會說起 I2S。我在之前的一些文章中提到過 I2S,其餘人在作音頻研究時也都會提到它。簡而言之,它是一種將立體聲數據從一端傳輸至另外一端的同步方法。

大多數人認爲 I2S 有三種信號:

數據:輸入或者輸出數據

位時鐘 (Bitclock,BCK):確立數據流中兩個相鄰位之間邊界的信號

左/右時鐘 (LRCK)/字時鐘 (Wordclock):一個在採樣速率下運行、佔空比爲 50% 的慢時鐘,它確立數據流中兩條相鄰通道(左和右)之間的邊界。

I2S 的幕後英雄是主時鐘 (MCK),也稱做系統時鐘 (SCK),它經常被數字信號處理器 (DSP) 程序員和其餘處理器愛好者們忽略。主時鐘 (MCK/SCK),一般爲一個6四、12八、256 和 512 倍採樣速率 (FS) 的時鐘。它能夠由一個輸入引腳直接提供,也能夠經過一個鎖相環路 (PLL) 在某些器件內部產生。

通常而言,DSP 不須要音頻主時鐘,由於它們可以以一種徹底不一樣的速率對數據進行處理,而後在 BCK 和 LRCK 的驅動下,讓數據以某種速率進入輸出緩衝器(或者經過輸入緩衝器接收數據)。

若是您能暫時將注意力從您的處理器上移開,您會發現音頻主時鐘重要得多。大多數 MCK/SCK 輸入的音頻轉換器,都要求時鐘同步,而有一些則容許異相位。這就意味着,它們須要由相同的高速時鐘來提供,而後被除小。我接觸過的一些客戶會突發靈感地告訴我:「個人 ADC 須要一個 MCK,但它離個人 DAC 太遠。所以,我要在每一個轉換器旁邊放置一個晶體……」有這種想法能夠理解,但請您「千萬別這麼作!」

您在購買晶體時,沒法保證它恰好爲 48.000 kHz。您的模數轉換器 (ADC) 晶體的運行精確度可能會爲 +5%,而數模轉換器 (DAC) 的運行精確度可能爲 –5%。這樣的精確度,會給您的設計帶來災難性的後果!這是爲何呢,下面將爲您娓娓道來。

用於 I2S

用於音頻 ADC 的主時鐘

如圖 1 所示,高速主時鐘(例如:24.576 MHz 時鐘)用於驅動 ADC 的過採樣調製器。以後,來自過採樣調製器的數據被消減分解成 LRCK 給定的採樣速率。

當 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 呢?

在當今的工業應用中,CMOS 振盪器由許多晶體振盪器支持,並緊靠這些晶體振盪器。它們都擁有很是好的精確度和較低的抖動。偶爾會用到壓控振盪器 (VCO),但它們會受到其輸出抖動的困擾。

許多現代的音頻轉換器如今都集成了一個 PLL,以經過慢 BCK 產生 MCK。這樣作頗有效。可是,您應該注意,使用 PLL 時始終都會有產生抖動的可能,從而下降了音頻性能。

另外,我建議,若是在晶體源驅動 ADC 或是 DAC 二者之間選擇,請您選擇經過一個晶體產生源來運行 ADC。若是輸入很糟糕,那麼您作什麼都於事無補!(就像您不可能把爛泥打磨光亮!)

所以,個人建議遵循的原則是:

一、若是轉換器爲一個 I2S 從器件,則您必須經過相同源(若是轉換器帶有,則能夠依靠內部 PLL),提供全部三個 I2S 時鐘(MCK、BCK 和 LRCK)。

二、若是轉換器爲一個 I2S 主器件,則請肯定可以提供一個可靠的無抖動 MCK源。而後,讓轉換器本身分配。在可能的狀況下,讓 ADC 經過一個可靠的低抖動 MCK 源在主模式下運行。這樣作能夠確保最低抖動和最小高頻失真。

建議參閱資料:
《關於抖動》,做者:Dan Lavry,Lavry 工程公司,版權全部© 1997。
相關文章
相關標籤/搜索