基于ADV7183B的视频解码系统的设计
扫描二维码
随时随地手机看文章
当前,数字影像设备种类繁多,视音频处理硬件与软件技术高度发达[2],为数字视频的流行起到了推波助澜的作用。在很长的一段时间内,图像处理将成为信息技术的前沿领域和热门课题。图像处理技术的应用取得了良好的社会效益和经济效益,其原因主要在于计算机技术以及大规模集成电路技术的发展与成熟,使得利用嵌入式系统作为视频图像的输入输出处理正逐渐成为主流,硬件解决方案也从专用处理芯片、DSP发展至FPGA,极大地提高了系统的灵活性、小型化。
1 系统设计
利用单片机MSP430F169与解码芯片ADV7183B的配置,使得整个视频解码系统可以灵活地根据输入视频源进行相应的配置以输出不同的数字视频数据。MSP430F169的最高运算速度达到8 MIPS,具有易操作、低功耗等特点[3-4],特别是其可通过I2C接口与解码器进行数据传输,以实现对不同格式视频输入源的解码。而ADV7183B是一款综合的视频解码芯片[5-6],它能够自动将一种兼容国际标准NTSC或PAL的模拟视频基带信号转换成另一种兼容8 bit/16 bit CCIR656的YCrCb型4:2:2的数字视频数据,其灵活的数字式输出接口能够在基于缓存器结构和行锁时钟的系统中完成视频解码和转换功能。视频解码系统的硬件框图如图1所示。MSP430F169是主控芯片,针对不同的模拟视频源,利用C语言编程,对解码芯片ADV7183B的寄存器进行相应的配置,产生符合要求的数字视频数据及行、场信号,以便于视频后处理系统进行滤波、显示。
数字视频数据是把模拟视频信号解码为Y、U、V分量后,将其分别进行A/D量化采样,转换为数字视频流,时间上也按上面的顺序依次输出。这里,采用的是成立于1927年的国际无线电咨询委员会CCIR656(Consultative Committee of International Radio)标准[7-8],也称为ITU-R BT.656。该标准规定:Y、U、V 3个分量的抽样频率分别为13.5 MHz、6.75 MHz、6.75 MHz。采用线性量化,每个样点的量化比特用于演播室为10 bit,用于传输则为8 bit。Y、U、V 3个分量样点之间比例为4:2:2,数据格式如图2所示。
图2中,T为采样时钟37 ns(27 MHz);SAV为有效视频开始的定时基准标志码;EAV为有效视频结束的定时基准标志码;每个基准信号由4个周期的数据组成,格式为FF,00,00,XY,以16进制表示,前3个为固定的前缀,第4个字用来定义奇偶场、场消隐和行消隐信息。在消隐期间,传输80 H,10 H,80 H,10 H;在有效期间,按Cb,Y,Cr,Y,Cb,Y顺序传送。
2 ADV7183B的设置
根据实际需要,这里采用了Analog Device公司的ADV7183B芯片作为系统的解码芯片。它是一款综合的视频解码芯片,能够处理NTSC或PAL制式下的CVBS、S-Video、YPrPb 3种格式的输入视频源,从而广泛地应用于放映机、数字电视、DVD、游戏机等电子产品。ADV7183B的主要特点[9]如下:
(1)内部带有行锁定系统时钟(LLC)和自适应数字线长跟踪(ADLLT)电路,可以提供双重视频锁定功能;
(2)具有实时时钟、信息输出功能以及3行色度梳状滤波器;
(3)具有完整的AGC和箝位控制功能,可对色度、亮度、饱和度和对比度进行编程视频调节;
(4)可自动进行NTSC或PAL检测,且有12个模拟视频输入信道;
(5)可设置为二线连续双向端口模式,并与I2C兼容;
(6)支持不同模式的视频输入和16 bit宽度总线数字输出;
(7)输入峰峰值为0.5 V~2 V。
通过不同的配置,ADV7183B的6个模拟视频输入信道可支持6个CVBS输入信号、3个S-video输入信号和2个YPrPb构成的模拟视频输入信号,可由寄存器INSEL控制输入源的类型和信道。此外,ADV7183B支持3种输出接口模式:兼容LLC的同步像素接口、CAPI接口和SCAPI接口,默认模式为兼容LLC的8 bit CCIR656数据。
在电路设计时,ADV7183B的工作晶振为27 MHz,ALSB为地址片选端口,由于软件程序的设计需要,将其接地,置为低电平。CVBS接入AIN5脚,S-Video接入AIN1和AIN4脚,YPrPb则接入AIN2、AIN3和AIN6脚;P0~P15为数据输出端;LLC1、LLC2为时钟输出端口,当为8 bit数据输出时,LLC1为27 MHz,LLC2为13.5 MHz。而当为16 bit数据输出时,LLC1和LLC2均为13.5 MHz;HS为行同步信号输出,VS为场同步信号输出,FIELD为奇偶场信号输出。当系统通电后,板上的2个LED灯会交替闪烁10次,提示用户可通过按键进行输入源信道的选择操作:SW1键选择S-Video视频源输入,SW2键选择YPrPb视频源输入,若不操作则默认CVBS视频源输入。
由于MSP430F169和ADV7183B均有自带的I2C模块,利用I2C总线协议,系统通过中断程序进行解码芯片的各种寄存器配置,从而产生YCrCb型4:2:2的数字视频数据,软件流程图如图3所示。[!--empirenews.page--]
首先,初始化时钟和传输模式,使MSP430F169工作在所需的模式下;其次,初始化I2C功能,使其准备将从机地址发送到I2C总线上,等待总线上的从机应答,若无应答则重复发送,若有应答则通信初始化并开中断,发送所需配置的寄存器地址和数据[10-11]。需要注意的是,在每次发送数据前都要初始化主机模式和传输模式的设置,因为每次发送完数据后,这两个标志位都会被自动清零。
为了使ADV7183B正常工作,几个主要寄存器的配置内容如下:
(1)输入选择寄存器INSEL,地址为0x00。根据外部接口情况,用户可通过设置这个寄存器选择模拟视频源的输入通道和输入模式,即选择通过CVBS、S-Video或YPrPb输入。在该系统中,CVBS信号由AIN5输入,则寄存器内容设置为0x04;S-Video信号的Y接入AIN1,C接入AIN4,则寄存器内容设置为0x06;YPrPb信号的Y接入AIN2,Pb接入AIN3,Pr接入AIN6,则寄存器内容设置为0x0A。同时,未连接的其他输入通道管脚必须接地。
(2)输出模式选择寄存器OF_SEL,地址0x03。通过设置此寄存器,用户可控制输出数据为8 bit或16 bit。不过,此寄存器必须和像素时钟寄存器(LLC_PAD_SEL,地址0x8F)一起设置。当输出16 bit数据时,像素时钟为13.5 MHz;而当输出8 bit数据时,像素时钟则为27 MHz(默认设置)。所以程序中,8 bit输出时,0x03设置为0x0C,0x8F设置为0x00;16 bit输出时,0x03设置为0x00,0x8F设置为0x50。
(3)ADC低功耗控制寄存器,地址0x3A。这个寄存器可以选择ADC的工作个数。在CVBS模式下,ADC1和ADC2低功耗,即不工作;在S-Video模式下,ADC2低功耗;而在YPbPr模式下,3个ADC全部工作。同时,还需要配置相应的寄存器地址是0xC3和0xC4,这2个寄存器设置了3个ADC所连接到的管脚。根据外部的模拟输入源,CVBS模式时,ADC0连接AIN5,则0xC3设置为0x05,0xC4设置为0x80;S-Video模式时,ADC0连接AIN1,ADC1连接AIN4,则0xC3设置为0x41,0xC4设置为0x80;YPrPb模式时,ADC0连接AIN2,ADC1连接AIN3,ADC2连接AIN6,则0xC3设置为0x32,0xC4设置为0x86。
(4)行、场同步信号的相关寄存器,一般采用默认设置即可。
3 实验结果
在系统调试时,采用了一个彩色数字摄像头作为视频输入源,即输入CVBS格式的模拟视频信号,通过逻辑分析仪捕获输出管脚的波形,观测相应的信号和输出数据。通过不断修改程序,最终实现视频图像的采集、显示。图4是通过MSP430F169设置ADV7183B的输出模式选择寄存器的波形。可见,时序满足标准的I2C总线协议的传输时序:起始—从器件地址(0x40)—应答—从器件的寄存器地址(0x03)—应答—写数据(0x0C)—应答—结束。图5和图6是解码后的视频数据。在图5中,根据固定前缀FF 00 00 F1可知,F1(1111 0001)所包含的信息是表示行由0跳变为1,场由0跳变为1,传输数据进入的是行和场的消隐期。而图6中,由固定前缀FF 00 00 80可知,80(1000 0000)所包含的信息是表示行由1跳变为0,场由1跳变为0,传输数据进入的是行和场的有效期。由此表明,视频解码系统输出的视频数据符合CCIR656标准,达到了设计要求。
综上所述,本视频解码系统利用MSP430F169进行解码芯片ADV7183B的设置,具有低功耗、小巧灵活等特点。同时,作为视频输入前端,将彩色摄像头的模拟视频源转换成16 bit的YCrCb型4:2:2数字视频数据,并进行格式转换、滤波等处理后,通过DVI接口在CRT上清晰显示,达到了设计要求,能够为相应的视频后处理设备(如DSP、FPGA等)提供良好的数字视频数据。