Audio Codec的音頻接口總結之數字音頻接口
本文基于對市場上常用的Audio Codec TLV320AI3101的數據手冊進行總結和學習,從中更深入的總結通用audio codec的輸入輸出接口及其內部的信號處理流程,以此建立對audio codec及其音頻處理流程的更為全面的認識。
全文分為三個部分:
數字音頻接口簡介
除了能夠支持以上的模擬音頻數據的輸入和輸出以外,一般的Audio Codec也同時提供了數字音頻數據傳輸的接口,至少,這個數字傳輸的接口可以用于:
- • 把模擬麥克風采集的音頻數據經過AD轉換以后得到的數字音頻數據,通過數字音頻接口傳輸給DSP進行進一步的處理。
- • 通過數字音頻接口接收DSP傳輸過來的數字音頻數據,經過DA轉換以后在揚聲器、耳機等設備上播放出來。
而對于Audio Codec而言,最常用的數字音頻接口就是I2S接口。一路I2S接口可以用于傳輸包含兩路獨立音頻數據流的雙聲道音頻數據。為了利用I2S的硬件接口同時傳輸更多路的音頻數據,部分Audio Codec也會在I2S硬件接口上提供TDM時分復用的方式傳輸多路音頻數據的音頻傳輸協議。
I2S接口
I2S(Inter-IC Sound)是一種同步串行接口,專門用于音頻數據的傳輸,具有簡單、高效和抗干擾能力強的特點。I2S接口傳輸的是數字音頻數據,通常以PCM(脈沖編碼調制)格式表示,實際上也就是Audio Codec中從麥克風采集語音數據經過AD轉換后的數字音頻數據,或者從DSP接收到的、需要通過Audio Codec進行DA轉換后在揚聲器播放出來的數字音頻數據。
通過I2S所傳輸的數字音頻數據對應的參數包括采樣率(如16KHz、32KHz、44.1kHz、48kHz等)、位深(如16位、24位等)和聲道數(如立體聲雙聲道)。具體的傳輸過程中,I2S接口通過時鐘信號來同步音頻數據的傳輸。它使用多個時鐘信號來控制數據的發送和接收,確保音頻數據的準確傳輸。
I2S硬件接口的信號線包括:
- • SDIN/SDOUT(Serial Data):串行數據線,用于對外或者對內傳輸數字音頻數據。
- • WCLK(Word Clock):字選擇信號,用于指示當前傳輸的是左聲道還是右聲道數據。通常WCLK為高電平時傳輸左聲道數據,為低電平時傳輸右聲道數據。
- • BCLK(Bit Clock):串行位時鐘線,用于控制數據的采樣速率。音頻數據在BCLK的上升沿或下降沿被采樣。
下圖是TLV320AIC3101的I2S工作時序圖。在I2S標準中,數據在WCLK邊沿(上升沿或下降沿)延遲1個時鐘周期(BCLK)后開始傳輸下一個聲道的MSB數據位。

TDM接口
如上所述,一路I2S接口只能以左右聲道的方式用于傳輸兩路獨立的音頻數據,形成雙聲道立體聲的音頻效果。但是很多時候我們的產品(例如包含麥克風陣列的功能)想要傳輸更多路獨立音頻流的時候,除了使用多路獨立的I2S接口以外,還可以使用TDM接口來解決這個問題。
在硬件接口上,TDM接口與I2S接口共享同一組物理引腳(DOUT/DIN、SCK、WS),只不過數據傳輸協議不同。I2S模式可用于傳輸雙通道(立體聲)音頻數據;TDM模式則用于使用相同的物理接口同時傳輸多通道(2~8通道)音頻數據,通過時隙劃分復用同一數據線。
在音頻Codec中,TDM接口可以用于在單條數據線上傳輸多個獨立音頻通道的采樣數據,每個通道的數據按預先分配的時間槽(Time Slot)依次傳輸。在具體的工作過程中,TDM接口和協議會將數據傳輸周期劃分為多個時隙,每個時隙分配給一個獨立的音頻數據通道。例如,若TDM支持8個時隙,則可傳輸8個通道的音頻數據,8個通道輪流使用自己的時隙傳輸數據。
下圖是TLV320AIC3101的TDM數據傳輸時序圖。可以看到,使用TDM模式進行多路音頻數據傳輸使用了與I2S相同的硬件接口和物理引腳,只不過不再使用Word Clock區分左右聲道,而是在Data In和Data Out固定設置不同音頻流所使用的傳輸時隙,因此,對于使用TDM接口進行多路音頻數據傳輸的上下游設備而言,需要提前協商清楚并設置好同時傳輸幾路音頻流,以及各路音頻流在傳輸時序中的時隙才行。

對于TDM接口的使用,需要注意的是,TDM接口仍然沒有完全的標準化,針對其通信協議細節(如時隙數、對齊方式、時鐘相位)缺乏統一的標準,不同廠商的實現可能存在一定的差異,所以在使用TDM接口進行上下游設備之間的對接調試中,可能會遇到一定的兼容性問題,需要調試部分參數才能解決。
PCM接口
其實除了以上的I2S接口和TDM接口以外,在一些Audio Codec上還有一種用于傳輸數字音頻信號的PCM接口(TLV320AIC3101沒有PCM接口),該接口多用于語音通信和多通道數據傳輸場景。
PCM接口一般用于傳輸未經壓縮的多通道(能夠更靈活的支持多通道是PCM接口與I2S之間的最大差別)線性PCM音頻數據,可支持語音、音樂等多種場景。
具體的使用過程中,PCM接口的典型應用場景就是與單設備多通道、多設備多通道等形態的音頻設備進行連接,通過一組PCM接口可以實現多個獨立的音頻通道的音頻數據的傳輸。例如:
- • 1個8通道ADC芯片通過PCM接口連接Host,每個時隙傳輸1個通道的采樣數據。
- • Host通過1個PCM接口連接4個單聲道麥克風(每個設備占用1個時隙)。

從接口的硬件定義上,PCM接口與I2S接口很類似,通常包含以下數據線:
- • PCM_CLK(位時鐘):由主設備生成和控制,頻率為采樣率 × 位寬 × 通道數。例如在16位、8通道、48 kHz采樣率的情況下,PCM_CLK頻率 = 48k × 16 × 8 = 6.144 MHz。
- • PCM_SYNC(幀同步):由主設備生成和控制,標識音頻幀的起始位置,頻率等于采樣率。
- • PCM_DIN(數據輸入)與 PCM_DOUT(數據輸出):傳輸多通道音頻數據。
從以上PCM接口所包含的數據線可以看到,PCM_CLK、PCM_DIN、PCM_DOUT的定義與I2S沒有區別,雙方之間的區別主要是在I2S的WCLK和PCM的PCM_SYNC上。

要徹底解釋清楚這兩者的差異,首先要弄清楚PCM接口中用于作為幀同步信號的PCM_SYNC中的音頻幀是什么意思。
PCM接口中所傳輸的音頻幀,總是由PCM_SYNC的一次跳變(跳變邊沿可編程設置)來啟動傳輸,而一個音頻幀中包含了PCM接口所連接的多通道中每一個通道的一個音頻采樣數據,每個音頻采樣數據占據一個固定的時隙,各個通道在音頻幀中所占據的時隙在Host和Device兩端的寄存器中進行設置。在這種PCM接口連接多通道音頻設備的情況下,一個音頻幀被分為多個時隙,每個時隙包含其中一個通道的音頻采樣數據,整個音頻幀由PCM_SYNC信號觸發開始一個完整的數據傳輸周期(即這個音頻幀的周期)。
如下圖所示的PCM接口連接的四通道音頻傳輸的示意圖,一次PCM_SYNC(FS)的跳變啟動一個PCM Frame的傳輸,一個PCM Frame包含四個獨立通道的音頻采樣數據,每個通道的采樣數據占據固定的時隙。

所以本質上,PCM接口也是以TDM時分復用的方式在在一根DIN和DOUT線上使用不同的時隙傳輸多個通道的音頻采樣數據。 |