BT.656支持不同位数和分辨率的视频,本文以标准分辨率为720*576i 8bit BT.656(4:2:2)YCbCr SDTV 数字视频信号格式讲解协议和解码方法;采集图像的时候使用隔行扫描,每一帧有2个场,一个叫顶场,一个叫底场(有时又称为偶场和奇场),那么顶场就包含其中所有的偶数行,而底场则包含其中所有的奇数行,传输时其完整的帧结构如图所示;奇场和偶场有效行都为288行,每行有1440个字节(包含720个Y亮度字节,360个Cb色度字节,360个Cr色度字节),Y的取值范围为16-235,色度为16-240; 水平消隐区间为280个字节;
每一行有如下几个部分组成,行 = 结束码(EAV) + 水平消隐(Horizontal Vertical Blanking) + 起始码(SAV) + 有效数据(Active Video),BT.656有效数据帧如图1所示,blankIng区间通常填充80h/10h;
图1 BT.656 576i有效数据帧格式
EAV和SAV为嵌入控制字,分别表示视频的终点和起点,均由四个字节构成,前三个字节为固定的帧头FF,00,00,而第4个字节(XY)是根据场、消隐信息而定的,其8个bit含义如下: 1 F V H P3 P2 P1 P0,其中,
F:标记场信息,传输顶场时为0,传输底场时为1;
V:标记消隐信息,传输消隐数据时为1,传输有效视频数据时为0;
H:标记EAV还是SAV,SAV为0,EAV为1;
而 P0~P3为保护比特,其值取决于F、H、V,起到校验的作用 ,P3=V XOR H,P2=F XOR H,P1=F XOR V,P0=F XOR V XOR H;
EAV和SAV的详细定义如表1所示,
表1 EAV与SAV定义
接下来讨论工程应用中FPGA如何解码
通过对EAV和SAV包含的行、场信息进行检测,可以分离出有效数据,EAV和SAV都包含4个字节,设计时使用4个移位寄存器,称为shift_d1,shift_d2,shift_d3和shift_d4,数据先缓存至shift_d1,然后d1的数据移位到d2,依次循环执行,另外同时对四个移位寄存器的值进行判定,当前三个字符为0xff,0x00和0x00,而第四个字符为定义表上的值,认为有具体的执行操作开始,理论上控制流是按照图2方向运行;在设计时,只需要关注shift_d1为0xab,0x80,0xec和0xc7时的情况,通过设计一个状态机来进行控制,状态控制如图
图2 数据流运行方式
图3 解码状态转移图
在状态EDATA和ODATA时进行数据输出,产生输出所需要的使能信号,另外也可把奇偶场信息传递给下一级模块,方便后续模块去隔行或其它操作;
————————————————
版权声明:本文为CSDN博主「学飞的鸟」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/fangxuenan/article/details/105319583