嵌入式 FPGA 的I2S接口,應用於A

嵌入式 FPGA 的I2S接口,應用於A/D、D\\A,數字信號處器,音頻

FPGA Xilinx或altera平臺

一、I2S 接口介紹

1.1、l2S 是 Inter-IC Sound bus 的簡稱

1.2、l2S 總線接口是立體聲音頻信號和系統之間傳遞的接口,主要應用於:

1)、A/D和D/A轉換器

2)、數字信號處理器(DSP)

3)、數字濾波器

1.3、數字輸入/輸出接口 lPHILIPS 公司是I2S的發明者

2、I2S的基本架構

在I2S傳輸協議中,其數據信號、時鐘信號以及控制信號是分開傳輸的。

2.1、使用三條傳輸線:

1)、SD串行數據線

2)、WS 左右聲道選擇線

3)、SCK 同步時鐘信號線

2.2、基本的傳輸時序如圖

嵌入式 FPGA 的I2S接口,應用於A/D、D\\A,數字信號處器,音頻

1)、SCK是模塊內的同步信號,從模式時由外部提供,主模式時由模塊內部自己產生。

2)、WS是聲道選擇信號,表明了數據發送端所選擇的聲道,當

● WS=0,表示選擇左聲道

● WS=1,表示選擇右聲道

3)、SD是串行數據,在I2S中以二進制補碼的形式在數據線中傳輸,首先傳輸最高位(MSB)

嵌入式 FPGA 的I2S接口,應用於A/D、D\\A,數字信號處器,音頻

4)、當系統字長比數據發送端字長長的時候,數據傳輸的時候就會出現截取現象,即如果數據接收端接收的數據位比它規定的字長長的話,那麼規定字長最低位(LSB)以後的所有位將會被忽略。

5)、另一方面,如果接收的字長比它規定的字長短的話,那麼空餘出來的位將會以0填補。

6)、通過這種方式可以使音頻信號的最有效位得到傳輸從而保證正確的聽覺效果。

3、I2S的幾種工作模式

從數據的接收和發送的角度來說,它可以分為數據接收端(Transmitter)和數據發送端(Receiver)。從時鐘信號和聲道選擇信號的產生的角度來說,它又可以分為主機(Master)和從機(Slaver)。

3.1、I2S就存在以下三種不同的模式,其中產生時鐘信號和聲道選擇信號的是主機

3.1.1、數據傳輸端產生SCK,WS信號,為主機,從而數據接收端成為從機,如圖所示

嵌入式 FPGA 的I2S接口,應用於A/D、D\\A,數字信號處器,音頻

3.1.2、數據接收端產生SCK,WS信號,為主機,從而數據傳輸端成為從機,如圖所示:

嵌入式 FPGA 的I2S接口,應用於A/D、D\\A,數字信號處器,音頻

3.1.3、當有多個數據接收端和多個數據傳輸端的時候,很難確定誰作為主機,因此就出現了另一種模式,即一個控制器專門負責產生時鐘和聲道選擇信號,如圖所示:

嵌入式 FPGA 的I2S接口,應用於A/D、D\\A,數字信號處器,音頻

二、I2S IP Core 的設計

1、在此次設計中,把整個設計分成3個模塊

1)、控制模塊

2)、數據發送模塊

3)、數據接收模塊

數據發送和接收模塊都工作於從模式,分別可以獨立工作,通過控制模塊的控制處於不同的狀態。

嵌入式 FPGA 的I2S接口,應用於A/D、D\\A,數字信號處器,音頻

2、控制模塊的設計

2.1、控制部分主要是通過TX_RX_SEL和MA_SL_SEL信號來決定是自己產生 SCK和WS,還是接收總線上的SCK和WS。外部時鐘信號(CLK)、復位信號(RESET)用來控制整個系統所處狀態和實現系統復位。

2.2、從外部引入的系統時鐘信號(CLK)由晶振產生,本設計中使用的晶振頻率是18.432MHz,故系統時鐘頻率為18.432MHz

2.3、主模式中,系統時鐘經過分頻處理後,生成I2S的內部傳輸時鐘SCK和聲道選擇信號WS。 n本次設計中使用的聲音的採樣頻率為48kHz,則聲道選擇信號WS的頻率必須也為48kHz。由於傳輸左右2個聲道的數據為16 bit,故SCK的頻率為:48kHz×16×2=1.536MHz。

如果需要傳輸20 bit、24 bit或32 bit的左右聲道的數據,可以提高SCK的頻率,由上式可以計算出需要的SCK的頻率。

根據WS、SCK與系統時鐘頻率的關係,可以得出由系統時鐘頻率產生WS和SCK的分頻係數。

3、控制模塊中雙向端口的設計

3.1、在控制模塊中SCK、WS、SD信號都是輸入輸出雙向端口,根據外部信號TX_RX_SEL 、MA_SL_SEL信號的控制,決定端口的輸入輸出方向。如圖所示:

嵌入式 FPGA 的I2S接口,應用於A/D、D\\A,數字信號處器,音頻

3.2、當TX_SD向外發送數據時,TX_RX_SEL為高電平,輸出緩衝打開,去驅動外部的SD,而另一端則關閉輸入緩衝,令緩衝輸入到內部RX_SD上的電平為高阻態。

嵌入式 FPGA 的I2S接口,應用於A/D、D\\A,數字信號處器,音頻

3.3、當RX_SD接收外部數據時,TX_RX_SEL為低電平,輸入緩衝打開,接收外部SD的數據,另一端則關閉輸出緩衝,令輸出到外部SD上的電平為高阻態。

3.4、通過上面的設計,就可以保證在某一時刻只有一端在驅動總線,而不會造成數據衝突。

4、數據發送模塊的設計

嵌入式 FPGA 的I2S接口,應用於A/D、D\\A,數字信號處器,音頻

4.1、各信號的時序關係:

嵌入式 FPGA 的I2S接口,應用於A/D、D\\A,數字信號處器,音頻

4.2、為了配合與控制模塊的連接,控制模塊中使用了使能信號(TX_EN和RX_EN) 對數據發送和數據接收模塊使能。 上圖中的WS、SCK、SD信號的引入都經過一個三態門,通過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、數據接收模塊的設計

嵌入式 FPGA 的I2S接口,應用於A/D、D\\A,數字信號處器,音頻

5.1、WSP信號的產生方式與發送模塊一樣。計數模塊的計數值在本設計中為模16,當計數達到16時,EN信號變成低電平,使計數器停止計數,同時也使串並轉換模塊停止接收數據。WS、SCK、SD信號的進入同樣需要經過RX_EN信號的使能來決定與控制模塊的連接或斷開。

6、各個模塊的整合

嵌入式 FPGA 的I2S接口,應用於A/D、D\\A,數字信號處器,音頻

三、測試、仿真

首先必須編寫測試平臺,使用2個I2S結構組成一個收發平臺,配置其中一個處於主模式發送狀態,配置另一個出去從模式接收狀態。對發送部分輸入數據,監視接收部分接收到的數據,對比發送和接收的數據,驗證設計是否正確。

嵌入式 FPGA 的I2S接口,應用於A/D、D\\A,數字信號處器,音頻

嵌入式 FPGA 的I2S接口,應用於A/D、D\\A,數字信號處器,音頻

對於有硬件平臺的可以進行硬件驗證,本文在此省略。


分享到:


相關文章: