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如下:

IEC 60958 && IEC 61937的更多相关文章

  1. HDMI相关知识

    HDMI热插拔检测原理 HDMI(19Pin)/DVI(16 pin)的功能是热插拔检测(HPD),这个信号将作为主机系统是否对HDMI/DVI是否发送TMDS信号的依据.HPD是从显示器输出送往计算 ...

  2. 【转】HDMI控制与组态剖析

    HDMI能够称霸为王者之尊吗?目前消费者陷入的困境就是Audio/Video的连接线数量过度庞大,而HDMI最大卖点之一就是可使用单一的连接线完全取代众多的影音连接线,简洁又方便.缺点是技术版本变动太 ...

  3. DALI调色温

    DALI调色温模块使用手册 公  司: 深圳市万秀电子有限公司 网  站: http://www.wanxiucx.com 总  机: 0755-23215689 联系人: 张先生 手  机: 139 ...

  4. DALI 2.0解码模块

    DALI2.0调光解码模块使用手册 一.概述(联系人:张先生,电话:13923882807,QQ:813267849) 欢迎使用本公司的DALI 2.0解码模块,该模块支持"DALI第二套协 ...

  5. DALI解码模块

    DALI-MOD2接口模块使用手册 一.概述(联系人:张先生,电话:13923882807,QQ:813267849) 一.概述 欢迎使用本公司的DALI解码模块,该模块支持"DALI第一套 ...

  6. Linux课题实践五——字符集总结与分析

    Linux课题实践三——字符集总结与分析 20135318  刘浩晨 字符是各种文字和符号的总称,包括各国家文字.标点符号.图形符号.数字等.字符集是多个字符的集合,字符集种类较多,每个字符集包含的字 ...

  7. [No0000137]字符编码详解

    摘要 本文主要介绍了字符编码的基础知识,以及常见的字符编码类型,比如ASCII,Unicode,UTF-8,ISO 8859等,以及各种编码之间的关系,同时专门解释了中文字符相关的编码标准,包括GB2 ...

  8. C/C++标准有哪些?

                        1. C 时间 名称 标准制定组织 事件 1978 K&R标准 K&R <The C Programming Language>   ...

  9. Linux命令之ip

    ip [ OPTIONS ] OBJECT { COMMAND | help } 这一条命令几乎包含了所有使用方法,其中 对象OBJECT={ link | addr | addrlabel | ro ...

随机推荐

  1. python接口

    用正则表达式提取数据: https://www.cnblogs.com/dwdw/p/9553192.html python unittest TestCase间共享数据(全局变量的使用): http ...

  2. PP: Shallow RNNs: a method for accurate time-series classification on tiny devices

    Problem: time series classification shallow RNNs: the first layer splits the input sequence and runs ...

  3. Javascript数组与字符串常用api

    目录 javaScript(api学习) 数组有关的api 创建数组 数组的增删改查 indexOf(); push(),pop(),unshift(),shift() forEach() map() ...

  4. 关于wget安装mysql的过程

    鄙人才疏学浅,写此文章是为了帮助我那些刚入门的朋友一点心意 第一步  安装yum源 安装mysql的yum源:wget https://dev.mysql.com/get/mysql80-commun ...

  5. 油候插件grant的使用

    // ==UserScript== // @name Test Baidu // @namespace http://www.baidu.com/ // @version 0.1 // @descri ...

  6. python3练习100题——027

    又是一道迭代的题,没做好. 看了答案才试着写出来. 我一定要加油啊,为了尽快摆脱现在讨厌的生活! 原题链接:http://www.runoob.com/python/python-exercise-e ...

  7. IntelliJ IDEA 2017.3来自百度----idea原生快捷键

    常用 Ctrl+R  查找加替换 Ctrl+Alt+回车 从当前行,向上加一行 Shift+回车 从当前行,向下加下一行 Ctrl+Alt+L 格式化代码 Ctrl+/ // Ctrl+Shift+/ ...

  8. html5 游戏源码下载网站,你值得拥有!

    在游戏开发的学习或工作中,利用完好的游戏源码可以事半功倍,不仅可以逆向学习开拓思维,也可以大大减少设计周期. HTML5是构建Web内容的一种语言描述方式. HTML5是Web中核心语言HTML的规范 ...

  9. MySQL学习(四)死锁及死锁检测

    文章图片来自参考资料 MySQL 的锁     根据加锁的范围,MySQL里面的锁大致可以分成全局锁.表级锁和行锁三类.我们需要明白锁的服务是为了数据统一,或者说是事务,数据隔离. 全局锁     全 ...

  10. QT(mingw) 编译 boost

    参考链接 :https://www.cnblogs.com/zhangnianyong/p/6546712.html Qt为mingw 5.8.0.Boost为1.62.0. 1.安装qt-opens ...