i2s(inter—ic sound)匯流排,是飛利浦公司為數字音訊裝置之間的音訊資料傳輸而制定的一種匯流排標準,該匯流排專門用於音訊裝置之間的音訊資料傳輸。i2s匯流排有三條資料訊號線:
(1)bclk:序列時鐘,也叫位時鐘,對應數字音訊的每一位資料。
(2)ws:字段(聲道)選擇,用於選擇左右聲道。為「0」表示正在傳輸的是左聲道的資料, 為「1」表示正在傳輸的是右聲道的資料。
(3)sd:序列資料,用二進位制補碼來表示音訊資料(資料傳輸從高位到低位)。
blk=2*取樣頻率*取樣位數
取樣頻率即ws的頻率,取樣位數即在ws的左右聲道內取樣的資料位數。
常見的i2s音訊傳輸有48k,44.1khz和32khz三種取樣率。傳輸的音訊資料位寬常見的有16,20和24三種。i2s傳輸的資料是聲音的模擬訊號經過ad取樣數位化後的資料,所以資料位寬越寬,資料的取樣精度就越高。下圖是i2s傳輸的波形圖,i2s在bclk的下降沿傳送資料(傳送),在上公升沿進行資料取樣(接收)。每次是先傳送最高位,最後傳送最低位。msb在ws變化的下乙個時鐘週期有效。因此,最高位擁有固定的位置,而最低位的位置則是依賴於資料的有效位數。也就使得接收端與傳送端的有效位數可以不同。如果接收端能處理的有效位數少於傳送端,可以放棄資料幀中多餘的低位資料;如果接收端能處理的有效位數多於傳送端,可以自行補足剩餘的位(常補足為零)。
i2s傳送資料:傳送是在每個時鐘週期的下降沿傳送資料,這樣在ws沿變化開始後的第二個下降沿傳送資料的最高位。接著在每個下降沿依次傳送資料,直到傳送完最低位。
i2s接收資料:在每個時鐘週期的上公升沿接收資料,在ws沿變化開始後的第二個上公升沿接收資料的最高位。接著在每個位時鐘上公升沿依次接收資料,直到接收完最低位。
verilog實現i2s資料接收,下面是乙個16位寬的i2s音訊資料接收模組。主要通過移位的方式實現,由於接收時,資料是在第二個時鐘上公升沿取樣msb,所以l_count和r_count 都是從0計數到16計數了17次,相當於把第乙個上公升沿取樣的無效資料刪掉。
reg [4:0] l_count; //左聲道接收資料計數
reg [4:0] r_count;//右聲道接收資料計數
reg [15:0] l_data; //接收到的16位左聲道資料
reg [15:0] r_data;//接收到的16位右聲道資料
reg finish_flag; //完成一次左右聲道資料接收標誌
//bclk 為i2s的位時鐘,sdata為i2s 位資料,lrclk為字段選擇訊號
always @(posedge bclk ,posedge reset)begin
if(reset==1'b1)begin
l_count <= 5'd0;
r_count <= 5'd0;
l_data <= 16'd0;
r_data <= 16'd0;
finish_flag <= 1'b0;
end else begin
finish_flag <= 1'b0;
if(lrclk==1'b0)begin
r_count <= 5'd0;
if(l_count< 5'd17)begin
l_count <= l_count+1'b1;
l_data <= ;
end
end else begin
l_count <= 5'd0;
if(r_count< 5'd17)begin
r_count <= r_count+1'b1;
r_data <= ;
endif(r_count==5'd16)begin
finish_flag <= 1'b1;
endend
endend
I2S匯流排介面設計(Verilog)
i2s是數字音訊的介面,這裡不用多說,請讀者自己查閱相關資料。本文中要設計的是fpga與數字音訊晶元的i2s介面時序。簡單點說,就是通過fpga向音訊晶元寫資料,通過的是i2s匯流排,因為這個匯流排比較麻煩,我在這裡做成介面模組,其它模組直接拿來用就可以了。提示,i2s匯流排的介面訊號如下 2 bc...
I2S匯流排介面設計(Verilog)
i2s是數字音訊的介面,這裡不用多說,請讀者自己查閱相關資料。本文中要設計的是fpga與數字音訊晶元的i2s介面時序。簡單點說,就是通過fpga向音訊晶元寫資料,通過的是i2s匯流排,因為這個匯流排比較麻煩,我在這裡做成介面模組,其它模組直接拿來用就可以了。提示,i2s匯流排的介面訊號如下 2 bc...
I2S介面介紹
i2s介面介紹 一 i2s協議介紹 i2s協議作為音訊資料傳輸協議,由philips制定。該協議由三條資料線組成 1 sclk 序列時鐘,頻率 2 取樣頻率 取樣位數。2 ws 字段 聲道 選擇,用來切換左右聲道資料。ws 取樣頻率 fs a 1 左聲道 b 0 右聲道 3 sd 序列資料 二進位制...