01
整體概括
最近調(diào)試了一款音頻采集芯片wm8731,包含兩路音頻輸入(ADC)和一路音頻輸出(DAC),音頻芯片與主控芯片通過I2S接口傳輸ADC采集的數(shù)據(jù)和DAC驅(qū)動數(shù)據(jù)。
本文簡要講解一下I2S協(xié)議,該協(xié)議包含ADCRC(ADC采集數(shù)據(jù)的左右聲道指示信號)、DACRC(DAC采集數(shù)據(jù)的左右聲道指示信號)、BCLK(位數(shù)據(jù)對齊時鐘)、ADCDAT(ADC輸出數(shù)據(jù))、DACDAT(DAC采集數(shù)據(jù))共五個信號。
WM8731通過ADCRC、BCLK、ADCDAT三個信號傳輸ADC采集的數(shù)據(jù),DACRC、BCLK、DACDAT三個信號傳輸驅(qū)動DAC的數(shù)據(jù),ADC和DAC的數(shù)據(jù)通道共用BCLK信號。ADCDAT和DACDAT均在BCALK的下降沿變化,在BCLK上升沿保持不變。
WM8371的I2S接口包含主機(jī)和從機(jī)兩種模式,兩種模式的區(qū)別在于時鐘(BCLK)和聲道指示信號(ADCLRC、DACLRC)由主控芯片還是WM8371提供。
圖1是WM8371的主機(jī)模式,時鐘和聲道指示信號均由WM8371提供。
圖1 主機(jī)模式
下圖是WM8731的從機(jī)模式,時鐘和聲道指示信號均由WM8371提供,通過配置內(nèi)部寄存器實現(xiàn)模式選擇,使用FPGA作為主控時,兩種模式均可使用,后續(xù)詳解。
圖2 從機(jī)模式
02
I2S協(xié)議的四種模式
I2S總線根據(jù)ADCDAT和DACDAT的數(shù)據(jù)變化,分為左對齊,右對齊,I2S及DSP共四種模式,其實就是四種數(shù)據(jù)傳輸時序,推薦使用左對齊模式或者I2S模式。
2.1左對齊模式
對應(yīng)時序如下所示,ADCDAT在ADCLRC高電平時傳輸左聲道的數(shù)據(jù),ADCDAT在ADCLRC低電平時傳輸右聲道數(shù)據(jù),ADCDAT先傳輸高位數(shù)據(jù)。ADCLRC的頻率等于配置的ADC采樣頻率fs。
ADCDAT在BCLK的前n個時鐘的下降沿傳輸數(shù)據(jù),n表示ADC采集數(shù)據(jù)的位寬。
圖3 左對齊模式
注意BCLK的頻率必須大于等于ADC采樣率乘以ADC數(shù)據(jù)位寬乘以2。當(dāng)WM8371作為主機(jī)時,BCLK由WM8371提供,用戶不能設(shè)置其頻率。當(dāng)WM8371作為從機(jī)時,BCLK由用戶提供,必須滿足頻率關(guān)系。
注意BCLK的下降沿與ADCLRC/DACLRC的跳變沿對齊,而DACDAT/ADCDAT的第一個數(shù)據(jù)(MSB)在BCLK下降沿開始傳輸,即DACDAT/ADCDAT與ADCLRC/DACLRC左邊對齊,因此被稱為左對齊模式。
在實測主機(jī)模式時發(fā)現(xiàn)BCLK的周期可能存在占空比不是百分之五十的情況,在設(shè)計時需要注意。
2.2右對齊模式
因為BCLK的頻率滿足大于等于ADCLRC/DACLRC頻率乘以ADC/DAC數(shù)據(jù)位寬乘以2即可,導(dǎo)致BCLK在ADCLRC/DACLRC高電平或低電平時的時鐘個數(shù)可能大于ADC/DAC數(shù)據(jù)位寬,就存在無效時鐘。
此時數(shù)據(jù)起始位與ADCLRC/DACLRC邊沿對齊,則是左對齊模式,如果數(shù)據(jù)的結(jié)束位置與ADCLRC/DACLRC邊沿對齊,則是右對齊模式,右對齊模式時序如下。
圖4 右對齊模式
DACDAT/ADCDAT依舊在BCLK下降沿先傳輸高位數(shù)據(jù),LSB與ADCLRC/DACLRC邊沿對齊。
這種模式不好編寫適配多種采樣率的發(fā)送驅(qū)動,因為主機(jī)模式下不同采樣率時ADCLRC/DACLRC電平對應(yīng)的BCLK個數(shù)不同,通用的驅(qū)動會比較麻煩,因此一般不推薦使用這類驅(qū)動時序。該模式不支持32位ADC和DAC數(shù)據(jù)位寬。
2.3I2S模式
I2S模式時序如下所示,與左對齊模式類似,但ADCDAT/DACDAT在ADCLRC/DACLRC邊沿后的第一個BCLK不傳輸數(shù)據(jù),從BCLK的第二個下降沿傳輸最高位數(shù)據(jù)。
圖5 I2S模式
該模式使用起來也比較方便,推薦使用。
2.4DSP模式
DSP模式時序如下圖所示,每次傳輸數(shù)據(jù)LRCLK只持續(xù)一個BCLK周期,其余時間保持電平。
LRCLK的下降沿與BCLK的下降沿對齊,ADCDAT/DACDAT開始傳輸n位左聲道數(shù)據(jù),然后傳輸n位右聲道數(shù)據(jù),ADCDAT/DACDAT在剩余的BCLK周期無效。
圖6 DSP模式
四種模式下LRCLK和BCLK的頻率都是遵守相同規(guī)則的,且ADCDAT/DACDAT均在BCLK的下降沿傳輸數(shù)據(jù),在BCLK上升沿期間數(shù)據(jù)保持不變。
03
WM8371的時序參數(shù)
WM8731的ADC和DAC的數(shù)據(jù)位寬始終為24位,但在I2S或左對齊模式下,數(shù)字音頻數(shù)據(jù)可編程為16位、20位、24或32位。即寄存器編程音頻數(shù)據(jù)位寬為16位時,ADCDAT會將ADC采集的高16位數(shù)據(jù)輸出,低8位數(shù)據(jù)舍棄。如果寄存器編程音頻數(shù)據(jù)位寬為32位時,ADCDAT會把ADC采集的24位數(shù)據(jù)作為高位,低八位補(bǔ)零,達(dá)到32位數(shù)據(jù)輸出。
主機(jī)模式下的時序參數(shù)如下所示,需要重點關(guān)注下圖紅框中的兩個時序參數(shù)。
圖7 主機(jī)模式時序參數(shù)
兩個時序參數(shù)如下表所示,DACDAT必須在BCLK上升沿前后至少10ns內(nèi)保持穩(wěn)定。
圖8 時序參數(shù)
從機(jī)模式的時鐘信號和聲道指示信號都由主控芯片提供,相關(guān)的時序參數(shù)會多一些,如下圖所示。
圖9 從機(jī)模式時序參數(shù)
BCLK的最小周期為50ns,即接口數(shù)據(jù)傳輸?shù)淖畲箢l率為20MHz,另外DACLRC/ADCLRC和DACDAT在BCLK上升沿前后的10ns內(nèi)必須保持不變,WM8731才能穩(wěn)定采集對應(yīng)信號的狀態(tài)。
圖10 時序參數(shù)
本文主要講解I2S時序,文中圖片均來自WM8371芯片手冊
-
時序
+關(guān)注
關(guān)注
5文章
387瀏覽量
37331 -
I2S
+關(guān)注
關(guān)注
1文章
64瀏覽量
41926 -
wm8731
+關(guān)注
關(guān)注
0文章
2瀏覽量
3318
原文標(biāo)題:詳解I2S時序
文章出處:【微信號:FPGA研究院,微信公眾號:FPGA研究院】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論