天天看點

I2S音頻總線

I2S音頻總線學習 (一)數字音頻技術 一、聲音的基本概念     聲音是通過一定媒體傳播的連續的波。
I2S音頻總線

圖1 聲波

重要名額:

  • 振幅:音量的大小
  • 周期:重複出現的時間間隔
  • 頻率:指信号每秒鐘變化的次數
聲音按頻率分類:
I2S音頻總線

圖2 聲音的頻率(語音信号頻率範圍:300Hz-3kHz)

聲音的傳播攜帶了資訊,它是人類傳播資訊的一種主要媒體。 聲音的三種類型:

  • 波形聲音:包含了所有聲音形式
  • 語音:不僅是波形聲音,而且還有豐富的語言内涵(抽象→提取特征→意義了解)
  • 音樂:與語音相比,形式更規範。音樂是符号化的聲音。
二、聲音的數字化 1.聲音信号的類型
  • 模拟信号(自然界、實體)
  • 數字信号(計算機)
2.聲音數字化過程 
I2S音頻總線

圖3 聲音數字化過程

3.聲音數字化過程示意圖 

I2S音頻總線

圖4 聲音數字化過程示意圖

4.聲音數字化三要素

采樣頻率 量化位數 聲道數
每秒鐘抽取聲波幅度樣本的次數 每個采樣點用多少二進制位表示資料範圍 使用聲音通道的個數

采樣頻率越高

聲音品質越好

資料量也越大

量化位數越多

音質越好

資料量也越大

立體聲比單聲道的表現力豐富,但資料量翻倍

11.025kHz

22.05 kHz

44.1  kHz

8位=256

16位=65536

單聲道

立體聲

5.聲音數字化的資料量 音頻資料量=采樣頻率×量化位數×聲道數/8(位元組/秒)

采樣頻率

(kHz)

量化位數

(bit)

資料量(KB/s)
單聲道 立體聲
11.025 8 10.77 21.35
16 21.53 43.07
22.05 8 21.53 43.07
16 43.07 86.13
44.1 8 43.07 86.13
16 86.13 172.27

三、音頻的檔案格式 1.WAV檔案 WAV是Microsoft/IBM共同開發的PC波形檔案。因未經壓縮,檔案資料量很大。

特點:聲音層次豐富,還原音質好

2.MP3檔案 MP3(MPEG Audio layer3)是一種按MPEG标準的音頻壓縮技術制作的音頻檔案。

特點:高壓縮比(11:1),優美音質

3.WMA檔案 WMA(Windows Media Audio)是Windows Media格式中的一個子集(音頻格式)。

特點:壓縮到MP3一半

4.MIDI檔案 MIDI(樂器數字接口)是由一組聲音或樂器符号的集合。

特點:資料量很小,缺乏重制自然音

四、數字音頻壓縮标準 1.音頻壓縮方法概述 [img=734,71][/img]

圖5

壓縮編碼技術是指用某種方法使數字化資訊的編碼率降低的技術

音頻信号能壓縮的基本依據: ①聲音信号中存在大量的備援度;

②人的聽覺具有強音能抑制同時存在的弱音現象。

音頻信号壓縮編碼的分類: ①無損壓縮(熵編碼)

霍夫曼編碼、算術編碼、行程編碼

②有損壓縮

波形編碼--PCM、DPCM、ADPCM 、子帶編碼、矢量量化

參數編碼--LPC

混合編碼--MPLPC、CELP

2.音頻壓縮技術标準

分類 标準 說明

電話語

音品質

G.711 采樣8kHz,量化8bit,碼率64kbps
G.721 采用ADPCM編碼,碼率32kbps
G.723 采用ADPCM有損壓縮,碼率24kbps
G.728 采用LD-CELP壓縮技術,碼率16kbps

調幅廣

播品質

G.722 采樣16kHz,量化14bit,碼率224(64)kbps

高保真

立體聲

MPEG

音頻

采樣44.1kHz,量化16bit,碼率705kbps (MPEG三個壓縮層次,384-64kbps)

五、聲霸卡 1.聲霸卡的主要功能 聲霸卡是負責錄音、播音和聲音合成的一種多媒體闆卡。其功能包括:

①錄制、編輯和回放數字音頻檔案

②控制和混合各聲源的音量

③記錄和回放時進行壓縮和解壓縮

④語音合成技術(朗讀文本)

⑤具有MIDI接口(樂器數字接口) 2.晶片類型

  • CODEC晶片(依賴CPU,價格便宜)
  • 數字信号處理器DSP(不依賴CPU)

(二)I2S總線協定 一、I2S總線概述          音響資料的采集、處理和傳輸是多媒體技術的重要組成部分。衆多的數字音頻系統已經進入消費市場,例如數字音頻錄音帶、數字聲音處理器。對于裝置和生産廠家 來說,标準化的資訊傳輸結構可以提高系統的适應性。I2S(Inter—IC  Sound)總線是飛利浦公司為數字音頻裝置之間的音頻資料傳輸而制定的一種總線标準,該總線專責于音頻裝置之間的資料傳輸,廣泛應用于各種多媒體系統。

二、I2S總線規範 I2S總線擁有三條資料信号線:

1、SCK: (continuous serial clock)  串行時鐘          對應數字音頻的每一位資料,SCK都有1個脈沖。SCK的頻率=2×采樣頻率×采樣位數。

2、WS: (word select)  字段(聲道)選擇          用于切換左右聲道的資料。WS的頻率=采樣頻率。

         指令選擇線表明了正在被傳輸的聲道。

         WS為“1”表示正在傳輸的是左聲道的資料。

         WS為“0”表示正在傳輸的是右聲道的資料。

         WS可以在串行時鐘的上升沿或者下降沿發生改變,并且WS信号不需要一定是對稱的。在從屬裝置端,WS在時鐘信号的上升沿發生改變。WS總是在最高位傳輸 前的一個時鐘周期發生改變,這樣可以使從屬裝置得到與被傳輸的串行資料同步的時間,并且使接收端存儲目前的指令以及為下次的指令清除空間。

3、SD: (serial data)  串行資料          用二進制補碼表示的音頻資料。 I2S 格式的信号無論有多少位有效資料,資料的最高位總是被最先傳輸(在WS變化(也就是一幀開始)後的第2個SCK脈沖處),是以最高位擁有固定的位置,而最 低位的位置則是依賴于資料的有效位數。也就使得接收端與發送端的有效位數可以不同。如果接收端能處理的有效位數少于發送端,可以放棄資料幀中多餘的低位數 據;如果接收端能處理的有效位數多于發送端,可以自行補足剩餘的位(常補足為零)。這種同步機制使得數字音頻裝置的互連更加友善,而且不會造成資料錯位。 為了保證數字音頻信号的正确傳輸,發送端和接收端應該采用相同的資料格式和長度。當然,對I2S格式來說資料長度可以不同。

對于系統而言,産生SCK和WS的信号端就是主裝置,用MASTER表示,簡單系統示意圖如圖1所示:      

I2S音頻總線

圖1 簡單系統配置和基本接口時序

另一個基本的接口時序圖可以參看圖2所示:  

I2S音頻總線

圖2 I2S典型的接口時序

4、時序要求         在IIS總線中,任何裝置都可以通過提供必需的時鐘信号成為系統的主裝置置,而從屬裝置通過外部時鐘信号來得到它的内部時鐘信号,這就意味着必須重視主裝置和資料以及指令選擇信号之間的傳播延遲,總的延遲主要由兩部分組成:

1.外部時鐘和從裝置的内部時鐘之間的延遲

2.内部時鐘和資料信号以及指令選擇信号之間的延遲

        對于資料和指令信号的輸入,外部時鐘和内部時的延遲不占據主導的地位,它隻是延長了有效的建立時間(set-up time)。延遲的主要部分是發送端的傳輸延遲和設定接收端所需的時間。見圖3和圖4:

I2S音頻總線
圖3 Timing for IIS Transmitter
I2S音頻總線

圖4  Timing for IIS Receiver

其中:

I2S音頻總線

T是時鐘周期,Tr是最小允許時鐘周期,T>Tr這樣發送端和接收端才能滿足資料傳輸速率的要求。

對于所有的資料速率,發送端和接收端均發出一個具有固定的傳号空号比(mark—space ratio)的時鐘信号,是以t LC和tHC是由T所定義的。 t LC和tHC必須大于0.35T,這樣信号在從屬裝置端就可以被檢測到。

延遲(tdtr)和最快的傳輸速度(由Ttr定義)是相關的,快的發送端信号在慢的時鐘上升沿可能導緻tdtr不能超過tRC而使thtr為零或者負。隻有tRC不大于tRCmax的時候(tRCmax>:0.15T),發送端才能保證thtr大于等于0。

為了允許資料在下降沿被記錄,時鐘信号上升沿及T相關的時間延遲應該給予接收端充分的建立時間(set-up time)。

資料建立時間(set-up time)和保持時間(hold time)不能小于指定接收端的建立時間和保持時間。

5、電氣特性 輸出電壓:

        VL <0.4V     

            VH>2.4V

輸入電壓

         VIL=0.8V   

             VIH=2.0V

注:目前使用的TTL電平标準,随着其他IC(LSI)的流行,其他電平也會支援。  

I2S(InterIC Sound Bus)是飛利浦公司針對數字音頻裝置之間的音頻資料傳輸而制定的一種總線标準,采用沿獨立的導線傳輸時鐘與資料信号的設計,通過分離資料和時鐘信号,避免了時差誘發的失真。I2S總線簡單有效,可以有效提升輸出資料的品質,在各種嵌入式音頻系統中有廣泛應用。但是在嵌入式音頻系統設計中,并不是所有的MCU都支援I2S總線格式,再加上I2S還沒有統一的接口标準,不同的廠家生産的裝置接口也是五花八門,采用軟體模拟實作I2S總線可有效解決在不支援其的MCU和裝置之間通過I2S總線實作資料傳輸時出現的問題。

本文通過在以太網數字語音廣播系統中軟體模拟I2S總線實作語音資料傳輸,給出了軟體模拟實作I2S總線的方法。

1 I2S總線規範

I2S為三線總線,3個信号分别為:

① 串行時鐘SCK,也叫位時鐘(BCK)。即每發送1位數字音頻資料,SCK上都有1個脈沖。SCK的頻率=2×采樣頻率×采樣位數。在資料傳輸過程中,I2S總線的發送器和接收器都可以作為系統的主機來提供系統的時鐘頻率。

② 幀時鐘WS,即指令(聲道)選擇,用于切換左右聲道的資料。WS的頻率等于采樣頻率,由系統主機提供。WS為“1”表示傳輸的是左聲道的資料,WS為“0”表示傳輸的是右聲道的資料。

③ 串行資料信号SD,用于傳輸二進制補碼表示的音頻資料。

I2S格式的信号無論有多少位有效資料,資料位的最高位(MSB)總是被最先傳輸,1次能夠發送的資料決定于I2S格式的有效位數。

1個典型的I2S信号時序如圖1所示

I2S音頻總線

圖1 I2S總線典型時序圖

随着技術的發展,在統一的I2S接口下出現了多種不同的資料格式。根據SD信号相對于SCK和WS位置的不同,分為左對齊和右對齊2種格式,如圖2和圖3所示。

I2S音頻總線
圖2 16位有效位數的左對齊格式
I2S音頻總線

圖3 16位有效位數的右對齊格式

在上面2種資料傳輸格式中,當WS為“1”時傳輸的是左聲道的資料,當WS為“0”時傳輸的是右聲道的資料。為了保證數字音頻信号的正确傳輸,發送端和接收端必須采用相同的資料格式。

2 軟體模拟I2S

以太網數字語音廣播系統主要是指以以太網為傳播媒體提供音頻服務的廣播系統,将語音信号以标準IP包的形式在以太網上進行傳送,以實作語音廣播功能。該系統在PC機端通過麥克風采集語音資料,然後将采集到的語音資料通過以太網發送給嵌入式終端,嵌入式終端将接收到的語音資料進行數/模轉換後進行播放。系統實作框圖如圖4所示[5]。

I2S音頻總線
圖4 以太網數字語音廣播系統框圖
I2S音頻總線

圖5 LM3S8962與MS6336的連接配接圖

廣播系統終端的MCU LM3S8962将接收到的語音資料通過I2S總線發送給語音解碼晶片MS6336進行數/模轉換并播放,

LM3S8962和MS6336的連接配接如圖5所示。為了完整還原出語音信号,需要保證軟體模拟I2S信号時序嚴格精确,高低電平的轉換采用延時程式實作。MS6336為16位D/A晶片,其I2S時序如圖6所示。

I2S音頻總線

圖6 MS6336的典型I2S時序圖

該系統中的語音資料雙聲道,16位采樣,1個采樣點的資料為4位元組,1個采樣點資料通過MCU發送給MS6336,資料發送流程如圖7所示。

I2S音頻總線

圖7 1個采樣點資料發送流程

軟體模拟I2S引腳的定義如下:

#define I2S_WS GPIO_PIN_5//模拟I2S聲道選擇時鐘控制位

#define I2S_BCK GPIO_PIN_6//模拟I2S位時鐘控制位

#define I2S_DATA GPIO_PIN_7//模拟I2S資料傳送位

根據MS6336的I2S總線格式以及資料發送流程,軟體模拟I2S總線的步驟如下:

① 根據語音資料采樣率及采樣位數計算得到SCK的值和WS的值(WS的值等于采樣頻率)。

系統采樣率為44.1 kHz,則SCK=2×44.1 kHz×103×16=1 411 200 Hz,WS=44 100 Hz。1個SCK時鐘周期T=1/SCK=07 μs。采用延時程式模拟SCK時鐘周期需要應用示波器來精确延時時間。本系統中一個SCK周期的延時為delayI2S(2)。

② 将WS、BCK和DATA均置為高電平。

③ 選擇左右聲道。首先發送左聲道資料,将WS置低(若發送右聲道資料則将WS置高)。

for(ChannelCnt=0;ChannelCnt<2;ChannelCnt++){//雙聲道選擇播放

if(ChannelCnt==0){//右聲道選擇信号為高電平

HWREG(GPIO_PORTA_BASE + (GPIO_O_DATA + (I2S_WS << 2))) = ~I2S_WS;

}

else{//左聲道選擇信号為低電平

HWREG(GPIO_PORTA_BASE + (GPIO_O_DATA + (I2S_WS << 2))) = I2S_WS;

}

……

}

④ 選擇高低位元組。将左聲道資料以高低位元組的順序發送,在發送高位元組第1位資料之前先發送1個周期的串行時鐘。

for(HorLCnt=0;HorLCnt<2;HorLCnt++){//聲道資料高低位元組選擇

if(ChannelCnt==1){//左聲道

if(HorLCnt==0){//低位元組

c=*(SampleData+1);//SampleData指向音頻資料緩沖區首位址,即左聲道低位元組

delayI2S(2);//發送第一個資料位之前需要延遲一個位時鐘周期

}

else{//低位元組

c=*SampleData;

}

}

……

}

⑤ 開始傳輸音頻資料(音頻資料的傳輸在SCK下降沿準備資料,在SCK的上升沿發

送給資料接收端)。将采樣點左聲道資料的高位元組最高位送給SD,設定SCK為低電平,此時為SCK的下降沿,資料準備好。延時半個SCK周期以後将 SCK置為高電平,此時SD線上的資料發送給資料接收端,延時半個SCK周期。依次将左聲道剩餘位資料按照最高位的方式發送出去。

for(BitCnt=0;BitCnt<8;BitCnt++){//1次傳送的資料長度為8位,先傳送高位元組再傳送低位元組置時鐘線SCK為低,開始準備資料位

HWREG(GPIO_PORTA_BASE + (GPIO_O_DATA + (I2S_BCK << 2))) = ~I2S_BCK;

if((c<<bitcnt)&0x80) {

HWREG(GPIO_PORTA_BASE + (GPIO_O_DATA + (I2S_DATA << 2))) = I2S_DATA;

}

else{

HWREG(GPIO_PORTA_BASE + (GPIO_O_DATA + (I2S_DATA << 2))) = ~I2S_DATA;

}

delayI2S(1); //延時半個SCK時鐘周期置時鐘線為高,開始傳輸資料位

HWREG(GPIO_PORTA_BASE + (GPIO_O_DATA + (I2S_BCK << 2))) = I2S_BCK;

delayI2S(1);//延時半個時鐘周期

}

⑥ 當将1個采樣點的左聲道的資料發送完以後,延時2個SCK周期,然後發送右聲道的資料(同左聲道資料的發送過程)。

根據以上的過程對每個采樣點的資料進行處理,就可以實作通過軟體模拟I2S總線傳輸音頻資料了。以上實作的是典型I2S時序模拟,而左對齊和右對齊2種格式隻是時序稍有差異,模拟實作過程同典型I2S總線模拟實作過程基本相同。

結語

在以太網數字語音廣播系統中應用軟體模拟實作I2S總線時序,能夠成功地實作語音信号的資料傳輸,實作語音信号的實時廣播,表明了軟體模拟實作 I2S總線的可行性,為解決不支援I2S總線的MCU和各種I2S總線裝置間的通信提供了一種可行的方法。但是,在應用軟體模拟實作I2S的以太網數字語 音廣播系統實時播放語音信号時,存在一些噪聲,表明在采用軟體模拟實作I2S的時序精确性上存在一些欠缺。

I2S總線和格式  I2S(Inter-IC Sound Bus)是飛利浦公司為數字音頻裝置之間的音頻資料傳輸而制定的一種總線标準。在飛利浦公司的I2S标準中,既規定了硬體接口規範,也規定了數字音頻資料的格式。I2S有3個主要信号:

1、串行時鐘SCLK,也叫位時鐘BCLK,即對應數字音頻的每一位資料,SCLK有1個脈沖。SCLK的頻率=2×采樣頻率×采樣位數。

2、幀時鐘LRCK,用于切換左右聲道的資料。LRCK為“0”表示正在傳輸的是左聲道的資料,為“1”則表示正在傳輸的是右聲道的資料。LRCK的頻率等于采樣頻率。

3、串行資料SDATA,就是用二進制補碼表示的音頻資料。

有時為了使系統間能夠更好地同步,還需要另外傳輸一個信号MCLK,稱為主時鐘,也叫系統時鐘(Sys Clock),是采樣頻率的256倍或384倍。

I2S 格式的信号無論有多少位有效資料,資料的最高位總是出現在LRCK變化(也就是一幀開始)後的第2個SCLK脈沖處,見下面I2S格式圖。這就使得接收端 與發送端的有效位數可以不同。如果接收端能處理的有效位數少于發送端,可以放棄資料幀中多餘的低位資料;如果接收端能處理的有效位數多于發送端,可以自行 補足剩餘的位。這種同步機制使得數字音頻裝置的互連更加友善,而且不會造成資料錯位。

随着技術的發展,在統一的 I2S接口下,出現了多種不同的資料格式。根據SDATA資料相對于LRCK和SCLK的位置不同,分為左對齊(較少使用)、I2S格式(即飛利浦規定的格式)和右對齊(也叫日本格式、普通格式)。

非I2S格式如圖:

I2S音頻總線
I2S格式如圖:
I2S音頻總線

對非I2S格式而言,為了保證數字音頻信号的正确傳輸,發送端和接收端應該采用相同的資料格式和長度。對I2S格式來說資料長度可以不同。而且幀時鐘LRCK高低電平對應左右聲道的意義也不同?

注意I2S總線和I2S格式的差別,I2S總線是一種總線标準,I2S格式是飛利浦制定的資料格式。在統一的I2S總線接口下,出現了左對齊和右對齊等非I2S格式。

在 我們系統Android中,設定sample_rate=44.1Khz,sample_length=16,channel=2;那麼BCLK應該為 2×44.1Khz×16=32xsample_rate,而實際上 MCLK=11.289Mhz,BCLK=MCLK/4,sample_rate=LRCK=BLK/64=44.1Khz,BCLK和理論計算的值不 符。引用“如果接收端能處理的有效位數少于發送端,可以放棄資料幀中多餘的低位資料;如果接收端能處理的有效位數多于發送端,可以自行補足剩餘的位”,因 此這是可以解釋的。

         PCM協定

PCM(PCM-clock、PCM-sync、PCM-in、PCM-out)脈沖編碼調制,模拟語音信号經過采樣量化以及一定資料排列就是PCM了。理論上可以傳輸單聲道,雙聲道立體聲和多聲道。是數字音頻的raw data.

I2S音頻總線
從時序圖可以看出,I2S左右聲道分别為高低電平,PCM隻有一個起始信号,左聲道資料緊跟右聲道.

繼續閱讀