1. PCM介面。
對於不同的數字音訊子系統,微處理器或DSP和音訊裝置之間出現了幾個用於數字轉換的介面。 最簡單的音訊介面是 PCM(脈衝編碼調製)介面,它由時鐘脈衝 (BCLK)、幀同步訊號 (FS) 以及接收資料 (DR) 和傳送資料 (DX) 組成。 在FS訊號的上公升沿,資料傳輸從MSB(Most Valid Bit)字開始,FS頻率等於取樣率。 然後,FS訊號開始傳輸資料字,並按順序傳輸各個資料位,並在乙個時鐘週期內傳輸乙個資料字。 在傳送MSB時,首先將訊號電平降低到最小值,以避免在不同的終端介面上使用不同的資料方案時MSB的丟失。
PCM 介面易於實現,原則上能夠支援任何資料方案和任何取樣率,但每個音訊通道都需要乙個單獨的資料佇列。
2. I2S介面。
I2S 介面(Inter-ic Sound)於 20 世紀 80 年代首次被飛利浦用於消費類音訊,並在一種稱為 LRCLK(左右時鐘)的訊號機制中進行多路復用,以將兩個音訊訊號轉換為單個資料佇列。 當 lrclk 為高電平時,傳輸左聲道資料; 當LRCLK為低電平時,將傳輸正確的通道資料。 與 PCM 相比,IIS 更適合立體聲系統。 對於多通道系統,還可以在相同的 BCLK 和 LRCLK 條件下併行執行多個資料佇列。
3. AC97介面。
AC97(Audio Codec 1997)是由英特爾、英特爾、Creative Labs、NS、ADI和山葉等五家PC製造商聯合提出的標準。 與 PCM 和 IIS 不同,AC97 不僅僅是一種資料格式,它還用於音訊編碼的內部架構規範,它還具有控制功能。 AC97 使用 AC-Link 連線到外部編解碼器,其中包括位時鐘 (BitCLK)、同步訊號校正 (SYNC) 以及從處理器編碼到和從處理器(SDATDIN 和 SDATOUT)編碼的資料佇列。 ac'97 個資料幀以同步脈衝開始,由 12 個 20 位時間段(標準中針對不同目的的服務定義時間段)和 16 位“標記”段組成,總共 256 個資料序列。 例如,時間段“1”和“2”用於訪問編碼的控制暫存器,而時間段“3”和“4”分別載入左聲道和右聲道。 “標記”段指示其他哪些段包含有效資料。 將幀拆分為時隙,可以僅通過 4 根線將控制訊號和音訊資料傳輸到 9 個音訊通道或將它們轉換為其他資料流。 與具有分立控制介面的IIS解決方案相比,AC97顯著減少了總引腳數。 通常,AC97編解碼器採用TQFP48封裝。
總結:PCM、I2S和AC97各有優勢和應用範圍,例如在CD、MD、**Walkman大多使用IIS介面,移動**會使用PCM介面,帶音訊功能的PDA大多使用與PC相同的AC97編碼格式。
音訊裝置介面包括 PCM、I2S 和 AC97,適用於不同的應用。 對於音訊裝置,Linux 核心包括 OSS 和 ALSA 兩種型別的音訊裝置驅動框架,前者包含 DSP 和 Mixer 字元裝置介面,並在使用者空間程式設計中使用檔案操作。 後者基於卡和元件(PCM、混音器等),在使用者空間程式設計中使用 alsalib 代替檔案介面。
在音訊裝置驅動程式中,DMA 幾乎總是必需的,並且 DMA 緩衝區逐個拆分為段,其中乙個段在執行 DMA 操作時執行。 OSS驅動的阻塞讀寫具有節流能力,不需要排程使用者空間的流量,但需要及時寫(**)和讀(記錄),避免緩衝區下溢或溢位。