BMC编码

IEC 60958在传输数据时使用双相符号编码(Biphase Mark Code),简称BMC,属于一种相位调制(phase modulation)的编码方法,是将时钟讯号和数据讯号混合在一起传输的编码方法。下图是BMC的示意图:

IEC60958和IEC61937_数据信号


在BMC编码中,时钟信号的频率是数据传输bitrate的两倍。

当数据信号是高电平1时,BMC跳变。当数据信号是低电平0时,BMC不跳变。然后两个数据信号间是会有一次跳变的。

在音频信号在硬件间传递时,是传递的BMC信号,接收端对BMC解码,解析出时钟信号与数据信号。


IEC60958

IEC 60958是一种传递数字音频的接口规范,相比I2S,IEC60958通过一根线同时传递时钟信号和数据信号。

IEC 60958标准传递两channel音频数据的报文格式如下图所示,

IEC60958和IEC61937_编码方法_02


由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

Preamble是一个Sub Frame的开头,主要有X,Y,Z三种,X代表此时是传送A通道的Sub Frame、Y代表是传此时是传送B通道、而Z比较特别,是代表此时是传送A通道,并且是一个Block的起始Sub Frame,如下图所示。

IEC60958和IEC61937_编码方法_03

由于BMC编码中不可能出现三个bit相同的情况,IEC 60958正是利用这一特性来区分Preamble与正常的数据。Preamble code数值是Sub Frame中的其他数据经过BMC编码之后再加到整个Sub Frame的最前面,Preamble code总共是8bit,代表4bit(0~3bits)的时序。

IEC60958和IEC61937_数据_04

信道状态位

每组Sub Frame中有一位的信道状态位,在一个Block有192组Frame,可以构成192位的信道状态结构(Channel Status Structure),而两声道各自有一组192位的使用者信息。这这个192位的信道状态结构主要有两种不同的结构,由第一个位来决定,当第一个位为0时代表一般家用(Consumer)结构,第一个位为1时代表专业用(Professional)结构,分别为下面这两张结构图表。

IEC60958和IEC61937_编码方法_05

IEC60958和IEC61937_数据信号_06


而实际使用上,上面这两个图表只能当做参考使用,因为信道状态结构有许多种不同的版本,到目前为止世面上许多不同器材所遵循的版本也不尽相同,甚至有一些器材会忽略不处理信道状态。


IEC61937

相比IEC 60958只能传递2个channel的音频数据,IEC 61937可以传递更复杂的音频数据,如MPEG2那种多声道, AC3 或DTS。

IEC 61937报文格式如下:

IEC60958和IEC61937_数据信号_07

Pa,Pb,Pc,Pd均为16bit数据,是IEC 61937的Preamble word,分别封装在IEC 60958 标准的1个Sub Frame中。

Pa,Pb是sync word,其值是固定的。Pc包含数据类型、和传递给接受者的信息。Pd为Burst-payload的长度。

IEC60958和IEC61937_数据信号_08

Pc的信息如下表:

IEC60958和IEC61937_编码方法_09

Data type如下:

IEC60958和IEC61937_数据信号_10


参考文章

  1. ​IEC 60958 && IEC 61937​