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

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

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

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

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

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