自适应实时视频采集处理系统的设计与实现
引言
本文引用地址:https://www.eepw.com.cn/article/21007.htm在信息技术和计算机互联网飞速发展的大背景下,数字视频的需求与日俱增。视频监控、视频会议及各类便携式、手持式pda等都需要实时的视频采集和处理,与此同时,也伴随着海量数据的产生,这就对视频采集系统的处理能力、并行速度提出了更高的要求。而dsp以其高精度、快速度、小功耗、高并行性、易于集成等优点很好的满足了这一要求,同时也越来越广泛地应用于各类实时视频和嵌入式系统。
本文给出了一个基于ti高端dsp芯片tms320c6211的自适应实时视频采集处理系统的设计及实现方法,利用该方法可自适应接收ntsc或pal视频,并自动进行50/60hz场频的检测,以将其解码为数字视频,然后通过软件设置所需的输出格式与分辨率,来完成实时的视频采集与处理。
系统概述
本视频采集处理系统的总体结构如图1所示。该系统主要由摄像头、专用视频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的连接电路见图2所示(cpld及其它部分略去)。

saa7114h的工作主频为24.576mhz,dsp可通过i2c总线与其接口,视频图像经saa7114h第20管脚ai11输人采样后,可从i port和h port以16位宽度的数字图像格式输出,同时输出同步信号igpv、igph、idq、fid,iclk以分别表示行、场同步、有效标志、输出帧同步和像素同步信号,其时序见图3所示。这些同步信号接入cpld后,结合dsp便可完成对视频采集和同步的控制。

◇系统工作原理
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配置及视频数据的读取处理程序,其系统软件流程见图4所示。
◇核心控制软件设计
图4中,系统的初始化包括以下操作:

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事件上*/
edma_configargs
(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等视频压缩算法接口,可广泛应用于实时视频采集、视频监控或其他嵌入式视频处理系统之中。
评论