當(dāng)前位置:首頁(yè) > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 講師博文 > 音頻解碼的兩個(gè)標(biāo)準(zhǔn)AC97和IIS
音頻標(biāo)準(zhǔn)主要有兩個(gè)AC97和IIS,下面我對(duì)這兩個(gè)標(biāo)準(zhǔn)做簡(jiǎn)要的介紹說明,以便在后面的工作中使用作參考。
一 I2s標(biāo)準(zhǔn)
在飛利浦公司的I2S標(biāo)準(zhǔn)中,既規(guī)定了硬件接口規(guī)范,也規(guī)定了數(shù)字音頻數(shù)據(jù)的格式。I2S有3個(gè)主要信號(hào):
1.串行時(shí)鐘SCLK,也叫位時(shí)鐘(BCLK),即對(duì)應(yīng)數(shù)字音頻的每一位數(shù)據(jù),SCLK都有1個(gè)脈沖。SCLK的頻率=2×采樣頻率×采樣位數(shù)
2. 幀時(shí)鐘LRCK,(也稱WS),用于切換左右聲道的數(shù)據(jù)。LRCK為“1”表示正在傳輸?shù)氖亲舐暤赖臄?shù)據(jù),為“0”則表示正在傳輸?shù)氖怯衣暤赖臄?shù)據(jù)。LRCK的頻率等于采樣頻率。
3.串行數(shù)據(jù)SDATA,就是用二進(jìn)制補(bǔ)碼表示的音頻數(shù)據(jù)。
有時(shí)為了使系統(tǒng)間能夠更好地同步,還需要另外傳輸一個(gè)信號(hào)MCLK,稱為主時(shí)鐘,也叫系統(tǒng)時(shí)鐘(Sys Clock),是采樣頻率的256倍或384倍。
串行數(shù)據(jù)(SD)
I2S格式的信號(hào)無(wú)論有多少位有效數(shù)據(jù),數(shù)據(jù)的高位總是出現(xiàn)在LRCK變化(也就是一幀開 始)后的第2個(gè)SCLK脈沖處。這就使得接收端與發(fā)送端的有效位數(shù)可以不同。如果接收端能處理的有效位數(shù)少于發(fā)送端,可以放棄數(shù)據(jù)幀中多余的低位數(shù)據(jù);如 果接收端能處理的有效位數(shù)多于發(fā)送端,可以自行補(bǔ)足剩余的位。這種同步機(jī)制使得數(shù)字音頻設(shè)備的互連更加方便,而且不會(huì)造成數(shù)據(jù)錯(cuò)位。
隨著技術(shù)的發(fā)展,在統(tǒng)一的 I2S接口下,出現(xiàn)了多種不同的數(shù)據(jù)格式。根據(jù)SDATA數(shù)據(jù)相對(duì)于LRCK和SCLK的位置不同,分為左對(duì)齊(較少使用)、I2S格式(即飛利浦規(guī)定的格式)和右對(duì)齊(也叫日本格式、普通格式)。為了保證數(shù)字音頻信號(hào)的正確傳輸,發(fā)送端和接收端應(yīng)該采用相同的數(shù)據(jù)格式和長(zhǎng)度。當(dāng)然,對(duì)I2S格式來說數(shù)據(jù)長(zhǎng)度可以不同。
字段(聲道)選擇(WS)
命令選擇線表明了正在被傳輸?shù)穆暤馈?/p>
WS=0,表示正在傳輸?shù)氖亲舐暤赖臄?shù)據(jù)。
WS=1,表示正在傳輸?shù)氖怯衣暤赖臄?shù)據(jù)。
WS可以在串行時(shí)鐘的上升沿或者下降沿發(fā)生改變,并且WS信號(hào)不需要一定是對(duì)稱的。在從屬裝置 端,WS在時(shí)鐘信號(hào)的上升沿發(fā)生改變。WS總是在高位傳輸前的一個(gè)時(shí)鐘周期發(fā)生改變,這樣可以使從屬裝置得到與被傳輸?shù)拇袛?shù)據(jù)同步的時(shí)間,并且使接收 端存儲(chǔ)當(dāng)前的命令以及為下次的命令清除空間。
二 AC97標(biāo)準(zhǔn)
AC97 標(biāo)準(zhǔn)把音頻設(shè)備中的數(shù)字部分和模擬部分分開, 并規(guī)定數(shù)字信號(hào)處理由CPU 來負(fù)責(zé),或者采用專門的DSP 芯片; 而模擬部分, 即A/D、D/A 轉(zhuǎn)換與Mix 混音操作, 則由CODEC 芯片(Coder2Decoder: 編碼/解碼器) 完成。
音頻處理的流程如下:
①CODEC 采樣音頻數(shù)據(jù), 把模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào)通過AC2link 和AC 控制單元傳送給CPU 或DSP 處理。
②CPU 對(duì)數(shù)字信號(hào)處理后交由AC 控制單元通過AC2link 傳輸給CODEC 進(jìn)行混音處理,再轉(zhuǎn)換成模擬信號(hào)輸出。其中AC 控制單元是AC97 CODEC 的控制器。AC2link 是AC97 標(biāo)準(zhǔn)定義的全雙工的串行接口, 負(fù)責(zé)傳輸音頻數(shù)據(jù)、寄存器控制命令和狀態(tài)信息。
AC2link 由4 根串行總線和一個(gè)nRESET 信號(hào)線組成。串行總線分別是: 位時(shí)鐘信號(hào)線(B IT_CL K ) , 幀同步信號(hào)線(SYNC ) , 數(shù)據(jù)輸出(SDA TA _OU T ) 和數(shù)據(jù)輸入(SDA TA _IN ) 信號(hào)線。它按照AC97 rev211 標(biāo)準(zhǔn)規(guī)定的AC2link數(shù)字串口接口協(xié)議[ 1 ]進(jìn)行數(shù)據(jù)的傳輸。AC2link在B IT _CL K 的上升沿發(fā)送數(shù)據(jù), 在下降沿接收數(shù)據(jù), 實(shí)現(xiàn)全雙工的數(shù)據(jù)傳輸。