音视频接口标准(二)

接口基本概念

VGA XGA UXGA SVGA HDMI

CCIR 与 ITU-R

国际无线电咨询委员会(International Radio Consultative Committee),CCIR是国际无线电咨询委员会的简称。成立于1927年,主要职责是研究无线电通信和技术业务问题,并对这类问题通过建议书。从1993年3月1日起,与国际频率登记委员会(IFRB)合并,成为现今国际电信联盟(ITU)无线电通信部门,是国际电信联盟(ITU)的常设机构之一,简称ITU-R。

在CCIR与IFRB合并之前,CCIR已经就电视演播室数字编码提出了CCIR601号与CCIR656号建议,并深入市场。与IFRB合并之后,CCIR易名,成ITU-R。相应的建议书也就变成ITU-R BT601与ITU-R BT601。因为CCIR601(与CCIR656)都是已经广泛应用,所以你说CCIR601别人也会知道是指ITU-R BT601的

常用于芯片间的视频接口标准,有BT656、BT601,支持高清接口有BT1120。ITU-R BT656及BT601, 其实都只是推荐标准,所以厂商可以根据自身需要修改接口的时序(当然芯片厂商没事也不会去修改这些接口时序的)

ITU-R BT.601

BT601是比较早提出来的,用于SDTV。标准规定了:数字编码形式、每一数字有效行的样本数量、采样频率、码字的用法、采样结构等。但并没有详细地对pin、时序、处理时钟这些传输进行详细规定,只是建议支持并行接口、串行接口。所以这导致了芯片厂商的BT601接口经常模糊不清或者厂商间接口不兼容问题(这是一个坑,厂商有时不指出是BT601,直接自己取名字。如OmniVision的Sensor芯片,弄出个HSYNC mode。)

支持标准4:3和宽屏16:9显示宽高比,主要是为演播室数字电视编码参数(现在可不是,现在多用于芯片间的接口)。具体的内容,看看标准就可以知道。

BT601没有规定接口时序,但以我多年(小于一年)研究BT601和看过多款(小于三款)芯片接口的经验,我可以总结出目前市场上BT601的大致接口(至于你信不信,反正我是信了)。

  • vsync_field, hsync, data 三类pin。
  • hsync是一直有规律地出现,并不会因为处于场消隐而不出现。
  • 有hsync offset的东西,hsync并不与active data严格对齐。

我总结的BT601

注:此处的vsync在消隐时为高电平,href与hsync是同一管脚。(这图是参考OmniVision的DVP画的)

有些视频数据有分前后场,此时就有field信号,field与vsync是共用同一管脚。

ITU-R BT.656

BT656其实是BT601接口的一个补充,使用BT601中yuv422(OmniVision也使用BT656传输RawData)、比特串行传输的建议。BT656建议书的描述使用未压缩PAL或NTSC系统(目前也支持许多不同的分辨率,建议书只是以PAL、NTSC为例子)。在BT601建议书中,包含了模拟部分和数字部分,BT656是针对其数字部分的建议。BT656标准将串行接口细化,采用内嵌同步码的同步方式。BT656是最常用的接口,后来为支持高清,提出了BT1120。

数字描述

BT656及BT601的数字信号格式使用了8或10比特编码字的二进制信息,数字字的内容用十六进制形式的10比特表示法描述。

  • 10比特:1001000101比特模式表示为91.4h;(BT656-5则表示为245h)
  • 8比特:10010001比特模式表示为91h;

BT656-4推荐书的描述8比特字占据了10比特字中左边最重要的比特(也就是最高8位)。即从比特9至比特2。其中比特9是最为重要的比特。

数字格式

八个最重要比特全设为1或全设为0的数据字被保留用于数据辨别,因此可用的256个8比特字中仅有254个,或可用的1024个10比特字中的1016个可用于表述信号值。视频数据使用YUV422中的UYVY格式(即 Cb,Y,CRY ),其中UYV是共站亮度和色差抽样,而紧接着的Y字对应下一个亮度抽样。一个UYVY即为一个word,传输速率为27Mword/s。要知道,YUV422的UV是每两个像素传输一次,Y是每个像素都传输。

视频计时基准码(SAV,EAV)

现存在两个计时基准信号,一个位于各视频数据块的发端(活跃视频的起点,SAV),另一个则位于各视频数据块的末端(活跃视频的终点,EAV)。

... U Y V Y U Y V Y FF 00 00 XY 80 10 80 10 ... 80 10 80 10 FF 00 00 XY U Y V Y U Y V Y ...

每个计时基准信号包括一个四字序列,格式为:FF 00 00 XY。(数值用十六进制计数法表示。)前三个字是固定的前导码。第四个字包括的信息定义场2的标识,场消隐的状态和行消隐的状态。

| 数据比特编号 | 第一个字 | 第二个字 | 第三个字 | 第四个字(XY) |
|:——:+:—–:+:—-:+:—-:+:—–:|
| 9(MSB) | 1 | 0 | 0 | 1 |
| 8 | 1 | 0 | 0 | F |
| 7 | 1 | 0 | 0 | V |
| 6 | 1 | 0 | 0 | H |
| 5 | 1 | 0 | 0 | P3 |
| 4 | 1 | 0 | 0 | P2 |
| 3 | 1 | 0 | 0 | P1 |
| 2 | 1 | 0 | 0 | P0 |
| 1 | 1 | 0 | 0 | 0 |
| 0(LSB) | 1 | 0 | 0 | 0 |

F=0 场 0
F=1 场 1

V=0 非消隐期间
V=1 消隐期间

H=0 SAV
H=1 EAV

上图是10bit接口的数值,与现有的8比特接口匹配时。最低两位没有定义。同理,当是12bit接口时,计时基准信号XY占据12bit中最高8bit。

在接收机端,P3,P2,P1,P0是1位误码纠错和2位误码检错的功能(采用自动纠错码,即海明检验码),P的一些状态取决于比特F、V和H的状态。

P0=F^V^H
P1=F^V
P2=F^H
P3=V^H

关于纠错检错的推理,留给你们自己推算(或者查阅相关资料)吧。

注:发现OV9712芯片可以对BT656的计时基准码进行配置,具体怎么配置,作用是什么,就没有研究清楚

辅助数据

辅助信号应遵循ITU-R BT.1364建议书的规定。(没搞懂)

数字消隐

数字消隐间隔期间出现的,并未用作计时基准码或辅助数据的数据字使用80.0h、10.0h、80.0h、10.0h(八位数据时,即为80h、10h、80h、10h,刚好对应y#16,cb,cr#128)等序列填充,分别与C~b~,Y,C~R~,信号的消隐电平相对应,恰当地置于复用数据中。,

OmniVison输出的数字消隐,可使用80h、10h、80h、10h来填充,也可使用空白来填充。

其他一些常见标准

  • BT709 这是一个与BT601类似的标准,但其针对的是HDTV。(时代在进步,标准也要跟上嘛)
  • bt1120 这是与BT656类似的标准,也包含了SAV、EAV的计时基准。是BT709的接口细化,支持HDTV
  • BT1700(行编号)
  • BT1364(承载分组数据)

疑点重重

  • BT656所说的传输速率27Mword/s。一个word又是指“UYVY”。这个传输速率是指并行传输的吗?如果是串行传输,那么Pixel Clock岂不是要54MHz,而发送时的Clock岂不是要108MHz了??
  • 海思中指出:支持BT656、BT601、DC timings。同时又说支持SMPTE293M/ITU-R BT1358(480p/576p)、SMPTE296M timing(720p)
0%