|
一、I2S 接口介紹 1.1、l2S 是 Inter-IC Sound bus 的簡稱 1.2、l2S 總線接口是立體聲音頻信號和系統(tǒng)之間傳遞的接口,主要應(yīng)用于: 1)、A/D和D/A轉(zhuǎn)換器 2)、數(shù)字信號處理器(DSP) 3)、數(shù)字濾波器 1.3、數(shù)字輸入/輸出接口 lPHILIPS 公司是I2S的發(fā)明者 2、I2S的基本架構(gòu) 在I2S傳輸協(xié)議中,其數(shù)據(jù)信號、時鐘信號以及控制信號是分開傳輸?shù)摹?/p> 2.1、使用三條傳輸線: 1)、SD串行數(shù)據(jù)線 2)、WS 左右聲道選擇線 3)、SCK 同步時鐘信號線 2.2、基本的傳輸時序如圖 1)、SCK是模塊內(nèi)的同步信號,從模式時由外部提供,主模式時由模塊內(nèi)部自己產(chǎn)生。 2)、WS是聲道選擇信號,表明了數(shù)據(jù)發(fā)送端所選擇的聲道,當(dāng) ● WS=0,表示選擇左聲道 ● WS=1,表示選擇右聲道 3)、SD是串行數(shù)據(jù),在I2S中以二進(jìn)制補碼的形式在數(shù)據(jù)線中傳輸,首先傳輸最高位(MSB) 4)、當(dāng)系統(tǒng)字長比數(shù)據(jù)發(fā)送端字長長的時候,數(shù)據(jù)傳輸?shù)臅r候就會出現(xiàn)截取現(xiàn)象,即如果數(shù)據(jù)接收端接收的數(shù)據(jù)位比它規(guī)定的字長長的話,那么規(guī)定字長最低位(LSB)以后的所有位將會被忽略。 5)、另一方面,如果接收的字長比它規(guī)定的字長短的話,那么空余出來的位將會以0填補。 6)、通過這種方式可以使音頻信號的最有效位得到傳輸從而保證正確的聽覺效果。 3、I2S的幾種工作模式 從數(shù)據(jù)的接收和發(fā)送的角度來說,它可以分為數(shù)據(jù)接收端(Transmitter)和數(shù)據(jù)發(fā)送端(Receiver)。從時鐘信號和聲道選擇信號的產(chǎn)生的角度來說,它又可以分為主機(Master)和從機(Slaver)。 3.1、I2S就存在以下三種不同的模式,其中產(chǎn)生時鐘信號和聲道選擇信號的是主機 3.1.1、數(shù)據(jù)傳輸端產(chǎn)生SCK,WS信號,為主機,從而數(shù)據(jù)接收端成為從機,如圖所示 3.1.2、數(shù)據(jù)接收端產(chǎn)生SCK,WS信號,為主機,從而數(shù)據(jù)傳輸端成為從機,如圖所示: 3.1.3、當(dāng)有多個數(shù)據(jù)接收端和多個數(shù)據(jù)傳輸端的時候,很難確定誰作為主機,因此就出現(xiàn)了另一種模式,即一個控制器專門負(fù)責(zé)產(chǎn)生時鐘和聲道選擇信號,如圖所示: 二、I2S IP Core 的設(shè)計 1、在此次設(shè)計中,把整個設(shè)計分成3個模塊 1)、控制模塊 2)、數(shù)據(jù)發(fā)送模塊 3)、數(shù)據(jù)接收模塊 數(shù)據(jù)發(fā)送和接收模塊都工作于從模式,分別可以獨立工作,通過控制模塊的控制處于不同的狀態(tài)。 2、控制模塊的設(shè)計 2.1、控制部分主要是通過TX_RX_SEL和MA_SL_SEL信號來決定是自己產(chǎn)生 SCK和WS,還是接收總線上的SCK和WS。外部時鐘信號(CLK)、復(fù)位信號(RESET)用來控制整個系統(tǒng)所處狀態(tài)和實現(xiàn)系統(tǒng)復(fù)位。 2.2、從外部引入的系統(tǒng)時鐘信號(CLK)由晶振產(chǎn)生,本設(shè)計中使用的晶振頻率是18.432MHz,故系統(tǒng)時鐘頻率為18.432MHz 2.3、主模式中,系統(tǒng)時鐘經(jīng)過分頻處理后,生成I2S的內(nèi)部傳輸時鐘SCK和聲道選擇信號WS。 n本次設(shè)計中使用的聲音的采樣頻率為48kHz,則聲道選擇信號WS的頻率必須也為48kHz。由于傳輸左右2個聲道的數(shù)據(jù)為16 bit,故SCK的頻率為:48kHz×16×2=1.536MHz。 如果需要傳輸20 bit、24 bit或32 bit的左右聲道的數(shù)據(jù),可以提高SCK的頻率,由上式可以計算出需要的SCK的頻率。 根據(jù)WS、SCK與系統(tǒng)時鐘頻率的關(guān)系,可以得出由系統(tǒng)時鐘頻率產(chǎn)生WS和SCK的分頻系數(shù)。 3、控制模塊中雙向端口的設(shè)計 3.1、在控制模塊中SCK、WS、SD信號都是輸入輸出雙向端口,根據(jù)外部信號TX_RX_SEL 、MA_SL_SEL信號的控制,決定端口的輸入輸出方向。如圖所示: 3.2、當(dāng)TX_SD向外發(fā)送數(shù)據(jù)時,TX_RX_SEL為高電平,輸出緩沖打開,去驅(qū)動外部的SD,而另一端則關(guān)閉輸入緩沖,令緩沖輸入到內(nèi)部RX_SD上的電平為高阻態(tài)。 3.3、當(dāng)RX_SD接收外部數(shù)據(jù)時,TX_RX_SEL為低電平,輸入緩沖打開,接收外部SD的數(shù)據(jù),另一端則關(guān)閉輸出緩沖,令輸出到外部SD上的電平為高阻態(tài)。 3.4、通過上面的設(shè)計,就可以保證在某一時刻只有一端在驅(qū)動總線,而不會造成數(shù)據(jù)沖突。 4、數(shù)據(jù)發(fā)送模塊的設(shè)計 4.1、各信號的時序關(guān)系: ![]() 4.2、為了配合與控制模塊的連接,控制模塊中使用了使能信號(TX_EN和RX_EN) 對數(shù)據(jù)發(fā)送和數(shù)據(jù)接收模塊使能。 上圖中的WS、SCK、SD信號的引入都經(jīng)過一個三態(tài)門,通過TX_EN控制其與控制模塊的連接或斷開。 其Verilog代碼片斷為: assign WS = TX_EN ? TX_RX_WS:1'bz; assign SCK = TX_EN ? TX_RX_SCK:1'bz; assign TX_SD = TX_EN ? SD:1'bz; 5、數(shù)據(jù)接收模塊的設(shè)計 ![]() 5.1、WSP信號的產(chǎn)生方式與發(fā)送模塊一樣。計數(shù)模塊的計數(shù)值在本設(shè)計中為模16,當(dāng)計數(shù)達(dá)到16時,EN信號變成低電平,使計數(shù)器停止計數(shù),同時也使串并轉(zhuǎn)換模塊停止接收數(shù)據(jù)。WS、SCK、SD信號的進(jìn)入同樣需要經(jīng)過RX_EN信號的使能來決定與控制模塊的連接或斷開。 6、各個模塊的整合 ![]() 三、測試、仿真 首先必須編寫測試平臺,使用2個I2S結(jié)構(gòu)組成一個收發(fā)平臺,配置其中一個處于主模式發(fā)送狀態(tài),配置另一個出去從模式接收狀態(tài)。對發(fā)送部分輸入數(shù)據(jù),監(jiān)視接收部分接收到的數(shù)據(jù),對比發(fā)送和接收的數(shù)據(jù),驗證設(shè)計是否正確。 ![]() ![]() 對于有硬件平臺的可以進(jìn)行硬件驗證,本文在此省略。
|
|
|