BMC编码

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

在BMC编码中,时钟信号的频率是数据传输bitrate的两倍。
当数据信号是高电平1时,BMC跳变。当数据信号是低电平0时,BMC不跳变。然后两个数据信号间是会有一次跳变的。
在音频信号在硬件间传递时,是传递的BMC信号,接收端对BMC解码,解析出时钟信号与数据信号。


IEC60958

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

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的最前面,Preamble code总共是8bit,代表4bit(0~3bits)的时序。

信道状态位

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

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


IEC61937

相比IEC 60958只能传递2个channel的音频数据,IEC 61937可以传递更复杂的音频数据,如MPEG2那种多声道, AC3 或DTS。
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如下:


参考文章

  1. IEC 60958 && IEC 61937

IEC60958和IEC61937相关推荐

  1. 第一颗国产 TTL 转 HDMI 1.4,视频信号转换芯片LT8618EXB

    1. 一般说明 LT8618EX 是 Lontium 的低功耗版本 HDMI 发射器,它基于 ClearedEdge™ 技术.它支持 24 位色深 HDMI 1.4(高清多媒体接口)规范.它们与Lon ...

  2. LT8641UXE HDMI2.0 4进1出4K60Hz方案介绍

    1. Features   HDMI2.0 Receiver  Compliant with HDMI2.0b, HDMI1.4 and DVI1.0  Compliant with HDCP2 ...

  3. [经验] 4K HDMI 接收发送 FMC子板(图像处理LVDS to HDMI 转换立体声双通道 )

    4K HDMI 接收发送 FMC子板(图像处理LVDS to HDMI 转换立体声双通道 ) 4K HDMI FMC开发模块是明德扬公司自主研发的一款支持4K 60帧的HDMI 输入输出开发模块.该模 ...

  4. 龙迅LT2611UX—LVDS至HDMI2.0转换器概述资料分享

    1.描述 LT2611UX是一款适用于机顶盒,DVD应用的高性能LVDS至HDMI2.0转换器. LVDS输入可配置为具有1个高速时钟通道和3〜4个高速数据通道的单端口,双端口或四端口,最大速度为1. ...

  5. AC3/EAC3格式总结

    2019独角兽企业重金招聘Python工程师标准>>> 关于AC3.EAC3比特流的基本格式 1 AC3基本格式        Ac3比特流由一系列的synchronization ...

  6. XBMC源代码简析 5:视频播放器(dvdplayer)-解复用器(以ffmpeg为例)

    XBMC分析系列文章: XBMC源代码分析 1:整体结构以及编译方法 XBMC源代码分析 2:Addons(皮肤Skin) XBMC源代码分析 3:核心部分(core)-综述 XBMC源代码分析 4: ...

  7. MS8422/MS8413/MS8412/MS8416音频光纤同轴解码芯片样品技术支持

    授权代理杭州瑞盟MS8422/MS8413/MS8412/MS8416音频光纤同轴解码芯片! 深圳锦宏世纪科技 戴先生134 3046 4610 :2885293215 MS8422N是一款24位,高 ...

  8. Multimedia

    9.1 Video Graphics Sub System 芯片视频图形子系统由以下专用模块组成:                 1. 视频处理单元(VPU):多标准高性能视频/图像编解码器:    ...

  9. HDMI_CS4344调试说明

    1.目的 HDMI RX接收到音频数据包(Audio packet),FPGA将得到的音频数据包解析并通过I2S协议发送给DAC芯片(CS4344),DAC芯片驱动后端功放以带动喇叭发出正确声音. 2 ...

最新文章

  1. 043 hive数据同步到mysql
  2. 【ArcGIS遇上Python】ArcGIS Python实现长时间序列遥感影像批量处理--以裁剪为例
  3. 谷歌浏览器安卓_冷知识!你知道安卓系统开始收费了吗?
  4. linux系统函数 utime,utime函数
  5. rust模组服没了_[怎么看rust服务器人数]rust标准服务器和模组服务
  6. 计算机上电自检的作用,计算机上电自检的过程是什么
  7. 如何写好项目规划和方案设计文档
  8. php充值代码,基于php的加油卡充值接口调用代码实例
  9. ArcGIS Maps SDK for Unreal Engine通过UI方式显示地图教程
  10. 架构扫盲|四种常见的软件架构
  11. 学习笔记:Spring中default-autowire与autowire区别
  12. Python numpy实现二维数组和一维数组拼接
  13. AVA设计模式初探之组合模式
  14. CocosCreator 音效管理器
  15. Java 在线纸牌游戏
  16. java学习--基础知识进阶第十天--标准输入流 转换流 打印流、对象操作流 、Properties集合...
  17. java计算机毕业设计房产客户信息管理系统源码+系统+lw文档+mysql数据库+部署
  18. 3D模型SU模型CAD下载
  19. C语言编译时版本号自动加一,VC使用编译时间作为版本号标识的方法
  20. 我和silly的谈话心得

热门文章

  1. 输出三位数的个十百位数
  2. bind dlz mysql ptr_Bind+DLZ+MySQL智能DNS的正向解析和反向解析实现方法
  3. Mac设置命令行代理
  4. 唱作音乐人朱卫明新歌全网首发,当初恋遇到《龙仙街》
  5. 家庭备忘记事便签软件哪个实用?
  6. 百度在北京和深圳主攻腾讯 新浪等一些IM公司,大力挖人,甚至爆出15w-20w年薪,有人士对百度的行为做出以下分析:
  7. win7服务器如何还原系统教程,怎么快速处理win7系统架设本地服务器的还原技巧...
  8. Mapper method 'com.XXX.dao.XXXMapper.XXX' has an unsupported return type: class XXX
  9. manjaro i3wm社区版配置记录
  10. NOIp2017——追求那些我一直追求的