摘要: 在视频压缩系统中,视频解码器输出的BT.656数据流不便于TMS320C6416等通用DSP直接进行处理。本文介绍了一种基于FPGA + DSP构架的视频采集方案,通过对FPGA的灵活配置,对输入的BT.656格式视频信号进行预处理和缓冲。系统采用TI的TMS320C6416作为核心DSP,实现了高可靠性的视频压缩。
0 引言
视频采集压缩系统在科学研究、工业生产、通信等众多领域有着广泛的应用。用于视频采集压缩系统的硬件设计和压缩算法也在不断推陈出新。目前广泛使用的硬件结构一种是基于专门为视频算法设计的芯片,比如TI的DM642,达芬奇等DSP芯片; 另外一种采用通用的DSP芯片,例如TI的TMS320C6416等。专用的DSP芯片集成了专门针对视频信号的接口,硬件结构较为简单。对于通用的DSP 芯片,则需要设计视频信号进入 DSP 芯片的通路,对视频信号进行预处理以后再利用DSP对信号进行压缩运算。
在“实验卫星视频压缩系统”项目中,需要设计一套高可靠性,高效率的视频压缩系统。在科学实验卫星上,许多科学现象需要视频记录。如果视频信息不经压缩,信息量将非常大, 视频压缩是必须的。如果采用专用的DSP,目前市场上的 DSP 达不到航天应用的要求。在我们的应用中,核心DSP采用的是TI的TMS320C6416;视频解码器采用的是Analog Devices公司的ADV7181B;视频预处理模块采用Xilinx公司XC2v1000的FPGA实现。这些器件都有较高的可靠性,可以适应复杂的外部环境。
1 系统的硬件构架
1.1 视频解码器ADV7181B
本系统使用的是Analog Devices公司的ADV7181B芯片。它可以自动检测模拟电视信号,包括所有的 NSTC,PAL和SECAM 信号,并将检测到的模拟信号按4:2:2采样转换成为16位或8位的CCIR601/CCIR656数字视频数据。同时芯片也提供行同步信号、场同步信号的输出,这样可以根据需要选择是否使用这些信号,提高了芯片应用的灵活性。
ADV7181B具有六路模拟视频输入,可以接收不同的模拟视频输入,包括 CVBS、S-Video、YPrPb 输入以及它们的组合。芯片前端具有三个9位的模数转换单元( ADC ),它们的作用是把模拟的视频信号数字化,以便于在接下来的标准视频单元中进行进一步的处理。通过配置寄存器可以实现模数转换单元对六路输入模拟视频的选择。
在标准视频单元中可以对视频的各个参数进行设置,如亮度、对比度、饱和度等。这些设置都是通过对寄存器的读写来实现的。通过这些参数的设置可以把芯片灵活应用于各种场合,并且可以根据需求达到不同的视频采集效果。
对ADV7181B的读写控制是通过I2C总线来控制的。I2C总线是一种只采用两根数据线的串行总线协议。总线的两根数据线是SCLK和 SDA,分别用来传送时钟和数据。ADV7181B在I2C总线中的地址可以通过芯片的ALSB管脚来配置。在设计中,FPGA中的I2C模块是作为主设备来对ADV1781B进行配置;而ADV7181B作为从设备接收I2C总线传来的数据,实现芯片的初始化、寄存器的配置等一系列操作。
1.2 Xilinx XC2V1000 FPGA
XC2V1000是属于Xilinx公司Virtex-II 系列的一款FPGA,具有高性能、高速度和低功耗的特点, 能够为电信、无线电、网络、视频和数字信号处理领域的应用提供完整的解决方案。XC2V1000主要具有以下特点:
Ø 100万个系统门;
Ø 40×32个可配置逻辑单元(5120个slice);
Ø 40个18×18 bits乘法器,1个工作时钟内即可完成乘法运算;
Ø 720Kbits RAM,可灵活配置(单口、双口、有使能或无使能等);
Ø 8个DCM(Digital Clock Manager)模块;
Ø 456个用户I/O。
1.3 系统硬件构架
对于FPGA+DSP结构的视频处理系统,一般由三个模块组成, 如下图1中所示:

图1 系统硬件构架
视频信号转换模块(视频解码器ADV7181B):模块实现的功能是把由摄像头输入的模拟视频转换成为 BT.656标准的视频数据流。在本系统中,摄像头输出PAL制的模拟视频,通过CVBS接口输入到ADV7181B中。
视频信号采集模块( FPGA+SRAM):模块中加入SRAM 是为了提高系统的灵活性, 既可以在FPGA中通过FIFO来实现缓存,也可以通过对SRAM的读写来实现缓存,并且为BT.656视频数据的预处理提供硬件支持。
视频信号处理模块(TMS320C6416):TMS320C6416是TI公司推出的高性能定点数字信号处理器,最高时钟频率可以达到1GHz,具有支持常见视频压缩算法的运算能力。
2 视频信号采集模块设计
视频解码器输出的BT.656格式的视频并不直接输入到DSP中进行处理,而是需要先在FPGA中进行预处理。FPGA中主要有三个接口: 与视频解码器的接口,与DSP的接口以及与SRAM的接口。
与视频解码器的接口分为:数据接收部分和控制部分。数据接收部分的数据宽度为8位,D0到D7; 控制部分即I2C模块,接口为SCLK和SDA。FPGA与DSP的64位EMIF相连, 并向DSP输出中断信号。SRAM采用两片Cypress公司的CY7C1049B,它是512k× 8bit的SRAM。SRAM的19位地址信号、8位的数据信号和其他的控制信号由FPGA提供。
2.1 ADV7181B的控制模块
FPGA是通过I2C模块进行ADV7181B的初始化、寄存器的读写等操作。在初始化时,FPGA发出开始信号,接下来按照从最高位到最低位的顺序输出ADV7181B的地址(7位,当ALSB管脚接地时, 地址为0x40),最后加上读写位(R/W bit)。如果ADV7181B接收到信号,会将SDA拉低作为回应。FPGA收到回应后再输出从地址(Subaddress)。ADV7181B有249个从地址以便于读写内部各个寄存器,这样接下来就可以对由从地址开始的地址段进行读写了。ADV7181B的读写时序如图2中所示。

图2 ADV7181B的I2C控制时序
在图2中的数据部分,是将储存在FPGA中的寄存器配置列表写到ADV7181B中。通过对寄存器配置列表的修改,可以实现对ADV7181B的各个参数进行设置。
2.2 视频信号的预处理
ADV7181B输入到FPGA中的信号是BT.656格式数据流。 BT.656全称叫ITU-R BT.656, 是一个数字视频流的传输格式。它定义了在不同器件间传输4:2:2的YCbCr信号的接口,有效视频分辨率可以是720×486 (对525/60视频系统)或者720×576(对625/50视频系统)。BT.656的串行接口可以是8位或者是10位,在本系统中使用8位来传输YCbCr信号。
BT.656数据视频流中的每一行有效像素由两个时间参考代码标识。SAV(Start of Active Video)表示有效视频开始,EAV(End of Active Video)表示有效视频结束。它们的长度都是四个字节,以FF,00,00开头,在第四个字节中含有这行视频像素的其他信息,如场信号、垂直同步信号、水平同步信号等。对于有效视频数据,BT.656按照一定的顺序逐个传输,先传输第一个像素的Cb,Y,Cr,然后传输第二个像素的Y,接下来是第三个像素的Cb,Y,Cr,以此类推。BT.656视频数据流的组成如下图所示。

图3 BT.656视频数据格式
BT.656数据传输到FPGA以后,FPGA要对输入的数据进行预处理,再传送给DSP进行处理。预处理的目的是把BT.656数据流中的Y,Cb,Cr信号分别提取出来,用FIFO或SRAM作为缓存,再传送给DSP进行处理。
数据处理的流程如下:对输入的数据进行检测,当数据流中出现 FF,00,00时, 表示是时间参考代码。再对第四个字节进行判断,从中判断是EAV还是SAV。如果是SAV,表示接下来的是有效视频数据。根据有效视频数据的排列规则,分别提取Y,Cb,Cr数据。在提取的同时对得到的数据进行判断,如果出现 FF,00,00,判断是否是EAV。如果是EAV,则有效视频已经传完,接下来的是消隐数据,为重复的80,10。程序接着检测下一个SAV。从SAV和EAV中还可以知道有效视频的场信息,从而DSP在一帧或一场传完以后可以对FPGA进行相应的读写操作。处理流程如下图4:

图4 BT.656数据处理流程图
对于采集的数据,FPGA可以根据需要进行一些预处理,以便于DSP的计算。由于PAL 制电视信号是隔行扫描,分奇数场和偶数场,在数字化后也会保留奇数场和偶数场,因此在FPGA中可以将奇数场和偶数场的数据还原成一帧完整的图像。如果有需要也可以将YCbCr格式转化为RGB格式,以便于DSP处理。
对于采集的数据,可以采用以下的一种图像缓存方案:FPGA把获得的一帧图像的数据保存到SRAM中,同时DSP从另外一块SRAM中读取数据。这样, 在第一次采样时,FPGA将从ADV7181B中获得的数据保存到SRAM中,此时DSP处于等待状态。第一次采样结束后,DSP与FPGA进行总线切换,分别连接到与上次不同的SRAM上,此时DSP开始读数据,FPGA开始采数据。每当DSP与FPGA完成各自的任务时,DSP与FPGA进行总线切换,交换连接的SRAM,从而实现帧的连续采集。
3 结束语
本文针对视频压缩系统提出了一套基于FPGA的视频预处理方案。该方案采用ADV7181B作为视频解码芯片,并在FPGA中构造了一个视频预处理模块,实现了以通用DSP为核心的连续视频数据流处理。利用系统中FPGA的强大可编程功能,可以根据不同的需求而扩展系统的处理功能,使系统成为高集成度,高性能和高灵活性的视频处理系统。此外本系统的设计方案中也考虑到了系统的可靠性需求,所选用的芯片均能适应复杂环境状况,因此系统也可用于高可靠性要求的特殊应用环境。
参考文献:
[1] Analog Devices,Inc. ADV7181B Data Sheet,2004
[2] Xilinx,Inc. Virtex-II Complete Data Sheet,2005
[3] Texas Instruments,TMS320C6416 Fixed-Point Digital Signal Processors,2005
[4] Cypress Semiconductor Corporation,CY7C1049B Data Sheet,2002
[5] 尹德安,李欣.基于FPGA的视频采集控制设计[ J ].微计算机信息,2006,9-2:21-23
[6] 刘韬,楼兴华.数字电子系统设计与开发实例导航[M ].人民邮电出版社,2005
|