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

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

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

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

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

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