http://www.mcuol.com/Solution/192/28717.htm
引言
随着便携式多媒体终端需求量迅速增加,在视频解码等方面对芯片低功耗的要求也越来越高。
因此,只有将模拟视频信号转换成为符合ITU-R BT.656标准的数字信号,才可方便地利用FPGA或者DSP甚至PC机来进行信号处理。本模块就是利用TI公司的超低功耗TVP5150芯片对视频信号A/D解码,由单片机通过I2C总线控制,预留地址数据等接口,作为模块验证以及后续数字信号处理之用。
1模块硬件构成
1.1系统基本构成
系统总体构成框图如图1所示。
TVP5150是超低功耗、支持NTSC/PAL/SECAM等格式的高性能视频解码器,在正常工作时,它的功耗仅115 mW,并且具有超小封装(32脚的TQFP),因此非常适用于便携、批量大、高质量和高性能的视频产品。它可以接收2路复合视频信号(CVBS)或1路S-Video信号。通过单片机I2C总线设置内部寄存器,可以输出8位4:2:2的ITU-R BT.656信号(同步信号内嵌),以及8位4:2:2的ITU-R BT.601信号(同步信号分离,单独引脚输出)。
单片机选用TI公司的MSP430F2013,超低功耗,有2 kB+256 B Flash存储器和128 B RAM,14脚超小封装(TSSOP)。其功耗是一般单片机的1/5,特别适合于手持设备,在1.8 V~3.6 V电压、1 MHz的时钟条件下,耗电电流在0.1 μA~400 μA之间(因工作模式不同而不同)。单片机通过MAX3232与串口连接,由PC机通过串口对单片机在线编程,方便对单片机程序及时修改。由PC设置并且随时调整TVP5150的内部寄存器,控制其工作状态,输出信号等。单片机预留控制口,以增加本模块的可扩展性。
74HC16245总线控制器用来提高本模块输出信号的负载驱动能力,它是可选部分,视需要可将信号直通以降低模块功耗。如果有多个模块组合工作,由单片机对74HC16245使能控制,协调各模块信号输出。
验证模块主要由SAA7121视频编码芯片构成,可将8位4:2:2的ITU-R BT.656或者ITU-R BT.601输入信号编码成CVBS信号或S-Video信号输出。如果TVP5150解码模块工作正常,利用此验证模块可以得到模拟视频信号,接人显示设备可得到输入图像。
1.2系统硬件设计
TVP5150芯片应用原理图如图2所示。芯片采用14.318 18 MHz晶振,数字和模拟输入电压为1.8 V,IO口电压为3.3 V;信号输入有CH1和CH2两路,并且都进行阻抗匹配设计,防止对输入信号的反射;YOUT[0:7]输出8路YCbCr信号,消隐信号可选择单独引脚HSYNC和VSYNC输出,或者内嵌于这8路信号中。PCLK/SCLK脚时钟信号可输出13.5 MHz和27 MHz两种频率。
2模块程序构成
本模块主要由PC机与单片机串口通信程序和单片机与TVP5150的I2C控制程序两部分软件组成。
2.1 PC机与单片机串口通信程序
PC机与单片机通信协议见表1。
注:带引号部分为传输数据头,供单片机识别处理;Addr为地址;Data为数据。
本程序在dephi7.0开发环境下完成设计,配置文件为txt格式,能读取和保存配置文件,在配置表格中能对配置文件进行简单处理,能选取配置文件中的寄存器信息通过串口发送给单片机,并且能读取单片机发送来的寄存器信息。
程序分为前台的界面处理与后台数据和功能处理两层。前台只负责界面的设置与动作,对表格中一切数据的处理都在后台。通过SPcomm串口通信控件进行串口通信操作。定义Sendlist和Revlist两个类,将所有允许发送项存入Sendlist,然后通过串口发送,而接收到的单片机发送来的数据存入Revlist。然后,将Sendlist和Revlist两者进行对比。如果相同,则存储,并在表格中显示;否则,报错处理。每发送一个寄存器项有一定的延时用于单片机处理。软件有超时设置,如果发送5 s后无法接收到单片机回复数据,则判断为超时出错。
本程序流程如图3所示。
2.2 单片机程序
单片机程序完成串口通信和I2C总线控制两个功能。
图4为I2C时序图。I2C总线是由数据线SDA和时钟线SCL构成的串行总线,可发送和接收数据。I2C总线在传送数据过程中有以下3种类型信号:
a)开始信号(Start)。SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。
b)结束信号(Stop)。SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。
c)应答信号(AcK)。接收数据的IC在接收到8 bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。
I2C总线在传送数据时,必须保证在SCL高电平时SDA上数据稳定,否则就判断为开始或结束信号。
单片机内程序按照通信协议与PC机进行数据传输,然后识别数据头,按协议分别处理,经由I2C总线,对TVP5150内部寄存器进行读写操作。单片机通信收发主程序由C语言编写,通过串口中断接收PC机数据,判断接收的是数据头还是有效数据。当接收数据头R时,回发PC机r,然后将后面的1个字节地址,由I2C总线操作读出TVP5150该地址寄存器中的数据,并通过串口回发给PC机。如果帧头是W,回发PC机w,并且缓存它后面2个字节的数据,第1个字节为TVP5150寄存器地址,第2个为写入该寄存器的数据。通过I2C总线完成此写操作,并读出写入数据后寄存器中数据,通过串口回发给PC机,以备PC机端软件校验。
3主要视频信号
3.1输出信号
模块将模拟视频信号解码成符合ITU-R BT.656标准的数字视频信号,输出8位Y:Cb:Cr=4:2:2的数字信号。同步信号内嵌于数据流中串行输出,也可以单独引脚与数据流并行输出。 图5所示为完整一帧数据,分奇偶两场,23~311行是偶数场数据,366~624行是奇数场数据,其余为场控制信号或者无效数据。FID为奇偶场指示信号,在场同步信号(VSYNC)下降沿跳变。VBLK为场消隐信号,高电平有效,可以通过设置TVP5150寄存器来改变其长短,控制有效图像数据输出,因为在VBLK信号低电平期间对应输出视频有效数据。
每一行的数据结构如图6所示。每行开始的288字节为行控制信号,开始的4字节为EAV(有效视频结束)信号,紧接着280个固定填充数据,最后4个字节是SAV(有效视频起始)信号。SAV信号和EAV信号有3字节的前导:FF、FF、00;最后1字节XY表示该行位于整个数据帧的位置以及如何区分SAV、EAV信号。
XY各位的含义如图7所示。图中最高位是固定数据1,F=0表示偶数场,F=1表示奇数场;V=0表示该行为有效视频数据,V=1表示该行没有有效视频数据;H=0表示为SAV信号,H=1表示为EAV信号;P3~P0为保护信号,由F、V、H信号计算生成。
3.2 AVID截取
AVID信号是TVP5150产生的专有信号,是有效视频数据指示信号,AVID低电平时输出数据无效,高电平有效。这样就提供了一种控制TVP5150输出视频数据带宽的方法。通过寄存器设置,控制AVID的开始和结束时机,同时对VBLK信号起始时机进行控制,那么就能从一帧图像中截取某些部分输出,如图8所示。
4结束语
本模块的调试结合了SAA7121视频编码模块。由视频信号发生器输出模拟视频信号经过本模块解码,转换为数字视频信号,再由SAA7121模块转换成模拟视频信号接入显示设备,如果模块运行正常,就可以看到显示设备上对应的输入画面。第1步将RGB各单色视频信号输入,通过示波器观察输出视频及各同步信号,时序正常后,经SAAT121模块接入显示设备。得到正确图像后,模块由DVD机输入CVBS信号,显示设备得到正常影像则调试基本完成。调试的主要工作在于TVP5150的内部寄存器正确设置及其改变对输出各信号的影响。如果开启74HC16245,那么本实验模块总功耗在200 mW左右;关闭则功耗可控制在130 mW左右。可见,本视频解码模块的功耗参数非常低,如果优化单片机程序,还可进一步降低功耗。本模块将模拟复合视频信号解码成符合ITU-RBT.656标准的数字视频信号输出。方便利用FPGA、DSP等进行数字视频信号输出,方便利用FPGA、DSP等进行数字视频图像去隔行,方便利用FPGA等进行数字视频力图像去隔行,分辨率转换甚至MPEG编码等处理。