IEC 60958
IEC 60958是一種傳遞數字音頻的接口規范,相比I2S,IEC60958通過一根線同時傳遞時鍾信號和數據信號。IEC 60958用來傳遞兩channel,16/20/24bits采樣深度的PCM數據。
IEC 60958在傳輸數據時使用雙相符號編碼(Biphase Mark Code),簡稱BMC,屬於一種相位調制(phase modulation)的編碼方法,是將時鍾訊號和數據訊號混合在一起傳輸的編碼方法。下圖是BMC的示意圖

在BMC編碼中,時鍾信號的頻率是數據傳輸bitrate的兩倍。BMC信號在時鍾信號的上升沿跳變。在時鍾下降沿,BMC是否跳邊取決於數據信號,當數據信號是高電平時,BMC跳變。當數據信號是低電平時,BMC不跳變。
在音頻信號在硬件間傳遞時,是傳遞的BMC信號,接收端對BMC解碼,解析出時鍾信號與數據信號。
IEC 60958標准傳遞兩channel音頻數據的報文格式如下圖所示,

由192個Frame構成的Block,而每個Frame儲存了兩個channel的一組采樣信號(Sample),分為Channel A與Channel B兩個聲道。而每組Sample由Sub Frame構成,也就是一個Frame里有兩個Sub Frame。Sub Frame的數據長度為32 Bits,里頭內含了頭碼(Preamble)、輔助數據(Aux. Data)、音頻數據(Audio Data)、以及四個位的信息與檢查碼。也就是說,一個Sub Frame為32 Bits,也就4 Bytes,而一個Frame為8 Bytes,而一個Block為192 x 8 = 1536 Bytes,而每個Block總共可以傳遞192個雙聲道Sample。
Sub Frame各個bit組成如下:
0-3 bits 頭碼(Preamble) 用來表示一個Sub Frame的開頭,有三種型態,分別表示該Sub Frame為Channel A、Channel B或着是一個Block的起始Sub Frame(為Channel A)。
4-7bits 輔助數據(Aux. Data) 原始此區塊的設計是用來傳遞一些使用者自行添加的信息,不過目前比較常見的用途是當音訊數據超過20Bit取樣時,這四個Bit用來儲存多出的取樣Bit,比如說當要傳送24Bit取樣的數據時,用來存放末四個Bit的音訊數據。
8-27bits 音頻數據(Audio Data) 存放實際的取樣數據,長度為20 Bit,以LSB優先的方式傳送,當取樣低於20 Bit時,沒有用到的LSB Bits要設定為零,舉例來說,當我們要傳送16 Bit的數據時,只會用到12-27 Bit的位置(LSB在12 Bit),而8-11 Bit為零。
28 bit 有效位(Validity Bit) 此位設定了這一個Sub Frame內的數據是不是正確,如果設定為0,代表此Sub Frame內的數據是正確可被接收的,反之如果此Bit為1,則代表接收端應該忽略此組Sub Frame。比如說CD轉盤讀取CD數據時若是有某一個Sample讀不到就會將代表該組Sample的Sub Frame中的有效位設為1。
29 bit 使用者位(User Bit) 此位為使用者自行定義的位,每組Sample傳送一位,直到192組Sample傳完后組成成192位的信息,兩聲道各自有一組192位的使用者信息。
30bit 信道狀態位(Channel Status Bit) 此位與使用者位一樣,每組Sample傳送一位,最后組成兩聲道各自一組192位的信道狀態信息(Channel Status)。這個192位信道狀態信息分為專業(Professional)與一般家用(Consumer)兩種不同的結構,以第一個位決定,設為1的時后為Professional模式,設為0的時后為Consumer模式。
31bit 同位檢查位(Parity Bit) 同位檢查是用來判別是否有奇數個位是發生錯誤,是一種簡便錯誤檢查方法,這邊是使用偶位同位檢查(Even Parity Check)。
頭碼(Preamble)是用來表示一個Sub Frame的開頭,主要有X、Y、Z三種組態代表不同的意義,X代表此時是傳送A通道的Sub Frame、Y代表是傳此時是傳送B通道、而Z比較特別,是代表此時是傳送A通道,並且是一個Block的起始Sub Frame,如下圖所示。


由於BMC編碼中不可能出現三個bit相同的情況,IEC 60958正是利用這一特性來區分Preamble與正常的數據。表格里的Preamble code數值是Sub Frame中其它的數據經過BMC編碼之后再加到整個Sub Frame前頭的數據數值,所以總共是8bit,代表4bit(0~3bits)的時序。此外比較特別的是除了有X、Y、Z三種組態之外,上面的表格還列出了另外一組與原本數據向位相反的數值,要使用哪一組數值是依照前一組Sub Frame中最尾端的電平而定,當前一組Sub Frame為最尾端的電平0時用左邊那一列數值,為1的時后用右邊那一列,這樣一樣接收端才能正確處理。
每組Sub Frame中有一位的信道狀態位,在一個Block有192組Frame,可以構成192位的信道狀態結構(Channel Status Structure),而兩聲道各自有一組192位的使用者信息。這這個192位的信道狀態結構主要有兩種不同的結構,由第一個位來決定,當第一個位為0時代表一般家用(Consumer)結構,第一個位為1時代表專業用(Professional)結構,分別為下面這兩張結構圖表。
- 一般家用信道狀態結構圖(Consumer Channel Status Structure)。PCM的采用頻率為下圖channel status中的Fs(24~27bit)

- 專業用信道狀態結構圖(Professional Channel Status Structure)

而實際使用上,上面這兩個圖表只能當做參考使用,因為信道狀態結構有許多種不同的版本,到目前為止世面上許多不同器材所遵循的版本也不盡相同,甚至有一些器材會忽略不處理信道狀態。
IEC 61937
相比IEC 60958只能傳遞2個channel的PCM音頻數據,IEC 61937可以傳遞更復雜的壓縮的音頻數據,如MPEG2那種多聲道, AC3 或DTS。在壓縮的音頻數據中,可以解析出channel,sample rate等信息。
IEC 61937報文格式如下:

Pa,Pb,Pc,Pd均為16bit數據,是IEC 61937的Preamble word,分別封裝在IEC 60958 標准的1個Sub Frame中。
Pa,Pb是sync word,其值是固定的。Pc包含數據類型、和傳遞給接受者的信息。Pd為Burst-payload的長度。

Pc的信息如下表:

Data type如下:


