新闻中心

EEPW首页>嵌入式系统>设计应用> 自适应实时视频采集处理系统的设计与实现

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

——
作者:王琦 王永生 王珺 西北工业大学电子信息学院 时间:2007-01-26 来源:《电子元器件应用》 收藏

引言

本文引用地址://m.amcfsurvey.com/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便可完成对视频采集和同步的控制。

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配置及视频数据的读取处理程序,其系统软件流程见图4所示。

◇核心控制软件设计

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

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事件上*/

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




关键词:

评论


相关推荐

技术专区

关闭