自适应实时视频采集处理系统的设计与实现

时间:2007-04-17

在信息技术和计算机互联网飞速发展的大背景下,数字视频的需求与日俱增。视频监控、视频会议及各类便携式、手持式PDA等都需要实时的视频采集和处理,与此同时,也伴随着海量数据的产生,这就对视频采集系统的处理能力、并行速度提出了更高的要求。而DSP以其高、快速度、小功耗、高并行性、易于集成等优点很好的满足了这一要求,同时也越来越广泛地应用于各类实时视频和嵌入式系统。

本文给出了一个基于TI高端DSP芯片TMS320C6211的自适应实时视频采集处理系统的设计及实现方法,利用该方法可自适应接收NTSC或PAL视频,并自动进行50/60Hz场频的检测,以将其解码为数字视频,然后通过软件设置所需的输出格式与分辨率,来完成实时的视频采集与处理。

本视频采集处理系统的总体结构如所示。该系统主要由摄像头、专用视频A/D转换器SAA7114H、视频缓存单元、处理器TMS320C6211单元和输出接口构成。其中摄像头采集的NTSC/PAL模拟视频信号通过SAA7114H视频专用解码芯片来实时接收且完成A/D和格式转换,并送入同步FIFO芯片SN74V215进行缓冲存储。FIFO半满时,可向TMS320C6211申请中断以请求读入数据。TMS320C6211启动EDMA以完成数字视频的转存,DSP外围SDRAM和FLASH用来存储对数字视频所做的后期处理的(例如MPEG-4、H.264压缩)数据与程序。CPLD ispLSI1032E用来产生系统中所需的逻辑控制信号、读写控制信号、同步信号和DSP中断请求信号,输出接口依据应用场合可以选择10 MB/l00MB自适应以太网接口或PCI接口来完成处理后数字视频信号的输出。


◇电路设计

视频采集处理系统以TMS320C6211 DSP和视频解码芯片SAA7114H为。TMS320C6211是TI定点DSP家族的高端产品,采用的VLIW硬件结构,在167 MHz在时钟下,可达133MIPS,本文采用的TMS320C6211的外部输入时钟频率为25 MHz,倍频后处理器主频为150 MHz。视频解码芯片SAA7114H是PHILIPS公司的主流视频处理芯片,具有6个模拟信号输入端,2个模拟信号处理通道和2个模拟反混叠滤波器,可采样支持4:2:2、4:2:0、4:1:1和4:1:0格式,A/D采样转换可达到9bit。该芯片的控制接口是I2C接口。SAA7114H与同步FIFO及TMS320C6211的连接电路见所示(CPLD及其它部分略去)。

SAA7114H的工作主频为24.576MHz,DSP可通过I2C总线与其接口,视频图像经SAA7114H第20管脚AI11输人采样后,可从I port和H port以16位宽度的数字图像格式输出,同时输出同步信号IGPV、IGPH、IDQ、FID,ICLK以分别表示行、场同步、有效标志、输出帧同步和像素同步信号,其时序见所示。这些同步信号接入CPLD后,结合DSP便可完成对视频采集和同步的控制。

SAA7114H输出的16位数字视频信号会先后进入两片512×18 bit(2 bit未使用)同步FIFO SN74V215进行缓存,再经控制逻辑将FIFO输出的两个16位数据合并为32位数据,DSP通过EDMA从数据总线ED0~ED31读取。FIF0由DSP McBSP1接口输出使能信号FEN,而复位信号RS则结合CPLD产生的读写使能nWEN、nREN等信号进行控制。

◇系统工作原理

DSP配置McBSP1接口的4个管脚CLKR1、CLKX1、FSR1、FSX1均为通用I\O信号,可分别用来模拟I2C总线以完成对SA7114H的配置,同时完成对FIFO的控制。数字视频数据的传输是通过EDMA完成的。此视频系统包括视频同步采集和差错控制两个过程,其采集过程如下:

1)系统复位后,McBSP1接口FEN和RS均保持低电平,即FIFO处于复位态,不允许写入。

2)采集开始时,DSP将RS置1,FIFO脱离复位态,然后置FEN为1,并通过CPLD从SAA7114H输出的视频帧同步信号FID来锁存FEN,同时开始视频采集。

3)FIFO采集1行视频数据后,控制逻辑将产生信号EXT_INT4以通知DSP,DSP通过EDMA响应EXT_INT4中断,同时将FIFO中的1行视频数据读入片内SRAM中。EDMA传输完1行数据后,再次提出中断请求,DSP响应此中断后,启动2个EDMA传输,并分离视频数据中的Y、Ch、Cr分量。此后,DSP读出整行数据后清除EXT_INT4中断。

如将数字图像以Y-Cr-Cb表示,Y表示图像亮度分量,Cr,Cb分别为色差分量。那么,本系统中的设计数字视频输出或存贮格式如下:

1)视频解码器SAA7114H输出的视频格式为:(Cb0 Y0)、(Cr0 Y1)、(Cb2 Y3)……

2)同步FIFO中存储的视频格式为:(CbO YO CrO Y1)、(Cb2 Y2 Cr2 Y3)……

3)片内SRAM中的存储格式为:(Cb0 Y0 Cr0 Y1)、(Cb2 Y2 Cr2 Y3)……

4)片外SDRAM中的存储格式为:Y0 Y1 Y2 Y3…、CbO Cb2……、Cr0 Cr2……

SAA7114视频数据采用隔行方式输出,终的SDRAM视频数据则以逐行方式存储,以便于直接对视频序列进行MPEG、H.264压缩或进行其它处理。系统差错控制通过检测FIFO满标志位来实现。每当采集完1行数字视频数据后,DSP便自动取走此行数据,当视频扫描到下1行时,硬件逻辑将继续向FIFO写入数据,若DSP读FIFO的速率小于硬件逻辑写速率,则FIFO将出现写溢出,从而导致数字视频行数据丢失,此时CPLD将启动EXT_INT5中断,以表示FIFO溢出错误。而此时DSP将复位FIFO,只有FRS信号置1后才能撤销EXT_INT5,以重新开始视频图像的采集。

◇软件流程

自适应实时视频采集处理系统软件主要包括DSP系统配置、SAA7114H配置和EDMA视频处理程序,本文主要介绍SAA7114H配置及视频数据的读取处理程序,其系统软件流程见所示。

◇控制软件设计

中,系统的初始化包括以下操作:

1)初试化CSL库,CSL_init();

2)初试化中断,包括中断向量重定位、开全局中断、使能NMI(非屏蔽中断)、中断事件映射、使能可屏蔽中断等。

IRQ_resetAll();

EDMA_resetAll();

Init_interrupts();

3)初始化McBSP1,nit_mcbsp1();

4)初始化SAA7114H,并通过主函数调用子函数saa7114_init()。

SAA7114H的配置是通过DSP模拟I2C总线来配置芯片内部各寄存器的,主要配置代码如下:

For(i=0;saa7114_defRegs[i].nSubAddr!=0xFF;i++)

Err|=IIC_writeReg(slaveAddr,saa7114_defRegs[i].nSubAddr,

Saa7114_defRegs[i].nValue);/*向SAA7114H所用寄存器写入配置信息*/

SAA7114H的配置包括对输入输出视频分辨率、饱和度、色度、输出视频格式等相关信息的设置,其重要寄存器的设置代码如下:

{AHorzInputStart, OxOO},

{AHorzInputStartMSB, 0xOO},

/*0xOOOO=输入水平起始于0象素*/

{AHorzInputLength, OxDO},

{AHorzInputLengthMSB,Ox02},

/*0x02D0=输入水平长度720象素*/

{AVertInputStart,0x15},

/*0x0015=输入垂直起始于23行(PAL制)*/

{AVertInputLength,0x22},

{AVertInputLengthMSB,0x01},

/*0x0122=输入垂直长度288+2行PAL制)*/

{AHorzOutputLength,0x60},

{AHorzOutputLengthMSB,0x01},/*0x0160=输出水平长度352象素*/

{AVertOutputLength,0x90},

/*0x0090=输出垂直长度144行(单场)*/

{ChromaControl1,Ox09},/*饱和度控制01H:for PAL;O9H:for NTSC*/

{LuminanceBrightness,0x80},

/*亮度设置ITU level*/

完成系统初始化和SAA7114H配置后,即可打开视频采集通道,以开始视频采集,包括初始化视频捕捉EMDA通道和使能视频捕捉EDMA传输,其代码如下:

Init_edma_ext_int4(); Init_edma_tcc8();

Init_edma_tcc9();

EDMA_enable Channel(hEdma_EXT_INT4);

EDMA_enable Chaining(hEdma_TCC8);

EDMA_enable Chaining(hEdma_TCC9);

使能视频捕捉代码如下:

MCBSP_setPin(hMcbsp1,RS);/*RS="1"撤销FIFO复位信号*/

MCBSP_setPin(hMcbsp1,FEN);/*FEN="1"使能FIFO数据采集*/

当采集到1行数据后,便可产生EXT_INT4中断,以将FIFO中的这行视频数据读入片内SRAM,同时从片内SRAM缓冲区的1行视频数据中分别提取Y、Cb、Cr分量。存入片外SDRAM缓冲区中的操作可采用EDMA设计,其EDMA操作如下:

hEdma_EXT_INT4=EDMA_open(EDMA_CHA_EXTINT4,

EDMA_OPEN_REST);/*EDMA通道链接到EXT_INT4事件上*/

(hEdma_EXT_INT4,EDMA_OPT_RMK(EDMA_OPT_PRI_HIGH,/*EDMA优先权设为"高"*/

EDMA_OPT_ESIZE_32BIT,/*32bits数据*/

EDMA_OPT_2DS_NO,/*源一维传输*/

EDMA_OPT_SUM_NONE,/*源地址保护不变*/

EDMA_OPT_2DD_YES,/*目的二维传输*/

EDMA_OPT_DUM_INC,/*目的地址根据索引值修改*/

EDMA_OPT_TCINT_YES,/*使能传输完成中断*/

EDMA_OPT_TCC_OF(EDMA_CHA_EXTINT4),/*设置传输结束码*/

EDMA_OPT_LINK_NO,/*禁止重新装载*/

EDMA_OPT_FS_NO,)/*每次EXT_INT4,EDMA传输1行视频数据*/

EDMA_SRC_RMK(VIDEO_PORT),/*源地址为视频数据端口*/

EDMA_CNT_RMK(EDMA_CNT_FRMCNT_OF(0xO),/*块中数组长度为1行视频数据*/

EDMA_CNT_ELECNT_OF(xd.para/2)),/*数据元长度为1行视频象素÷ 2*/

EEDMA_DST_RMK(line_buff),/*目的地址为片内视频缓冲器line_buff*/

EDMA_IDX_RMK(EDMA_IDX_FRMIDX_OF(0x0),/*EDMA传输完成后目的地址不变*/EEDMA_RLD_RMK

(EDMA_RLD_ELERLD_OF(xd.para/2),

0));}/*结束*/

本文给出了基于TMS320C6211的自适应实时视频采集处理系统的设计方法,该系统可自适应接受NTSC或PAL视频,并以标准YUV格式存贮。同时,本系统还自带FLASH及10M以太网接口,可与MPEG-4、H.264等视频压缩算法接口,可广泛应用于实时视频采集、视频监控或其他嵌入式视频处理系统之中。


  
上一篇:如何应对新型大功率LED的设计挑战
下一篇:REMEZ交换算法在声表面波滤波器设计中的应用

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料