基于TMS320DM6467的视频采集系统设计
2011-06-25文武,吴勇,张杰
文 武,吴 勇,张 杰
(1.重庆邮电大学 重庆信科设计有限公司,重庆 401121;2.重庆邮电大学 通信新技术应用研究所,重庆 400065)
0 引言
多媒体技术的飞速发展激发了人们对视频信息的需求,同时也推动了数字视频相关技术的进步[1]。目前,多媒体技术已广泛应用于安防监控、视频会议、数字电视等各方面。单路视频采集系统已越来越不能满足人们的要求,因此,设计一种多路实时视频采集及译码系统具有重要意义。传统设计在单路芯片上只能完成单路视频采集,要想实现多路视频采集,大多需要集成多片采集芯片,这样使得设计难度大,成本高,不利于推广应用。本文系统采用DM6467作为中央处理器,用TVP5158芯片作为采集译码芯片,可同时完成8路实时视频采集和H.264编解码,是目前单芯片可同时处理嵌入式视频路数最多的解决方案之一。此外,TVP5158高度灵活的视频输出与基于达芬奇技术的TI数字媒体处理器TMS320DM6467的无缝接口可取消对外部FPGA的需求,可大大降低系统成本[2]。
1 系统总体设计
1.1 TVP5158芯片及DM6467介绍
TVP5158是4路高清NTSC/PAL视频解码器,可将所有通用基带模拟视频解码成数字视频输出。包含4个独立视频解码通道,每个通道包含1个10 bit,27 Msample/s ADC。支持复合视频信号(Composite Video Broadcast Signal,CVBS)和伪差分视频输入,复合输入信号按照2X ITU-R BT.601的时钟频率进行抽样,CVBS信号解码采用5线自适应滤波器为色度和亮度过滤数据路径,以减少交叉亮度和跨色度环境。在CVBS输入端,用户可以通过I2C主机接口来控制对比度、亮度、饱和度和色度等视频特征,4路通道可独立控制。TVP5158具有降噪处理功能和自动对照功能,可提升在低光条件下的视频质量,通过I2C总线对相关寄存器进行配置。输出端口支持嵌入式同步的ITU-R BT.6568 bit 4∶2∶2和16 bit 4∶2∶2 YUV格式的数据流。
TMS320DM6467达芬奇处理器是一种基于DSP的片上系统(SoC),集成了ARM926EJ-S内核与TMS320C64x+DSP内核,可同时完成8路实时H.264编解码,其中ARM926EJ-S是一种32 bit RISC处理器,可执行32 bit或16 bit指令,处理32 bit,16 bit或8 bit数据,作为DM6467的主控制器。TMS320C64x+DSP是TMS320C6000系列DSP中具有最高处理速度的定点型数字信号处理器,在1 GHz时钟频率下,处理速度可达8000 MIPS(每秒处理的百万级指令数)。
1.2 系统工作原理
系统结构如图1所示,首先将8路CCD采集到的模拟视频信号输入到两片级联的TVP5158芯片,经过A/D转换、亮/色度分离、降噪滤波等处理后,转换为符合DM6467的VPIF接口传输的数字信号。再由DSP子系统和视频数据转换引擎VDCE处理后送入通信模块(网口或USB 2.0),经无线或有线网络传输到视频终端设备进行显示。从VPIF接口出来的视频数据也可直接通过Video OUT端口输出到DVI显示设备。在高清模式下,还需要启动高清协处理器HD VICP 0/1来辅助DSP进行数字信号处理工作[3]。模块中RS-232用来接PC机,RS-485控制云台。
2 采集接口设计
译码芯片TVP5158有4个8 bit的数字视频输出端口DVO_A_[7:0],DVO_B_[7:0],DVO_C_[7:0]和DVO_D_[7:0]。在级联模式下,主片的DVO_C_[7:0]或DVO_D_[7:0]两个端口作为从片的输入口,主片的DVO_A_[7:0]或DVO_B_[7:0]则作为整个系统的输出,可同时采集处理8路复合模拟视频。TVP5158具有NTSC/PAL制式检测和自动切换功能,其视频输出端口支持3种输出模式:非交叉模式、像素交叉模式和行交叉模式。将从片的DVO_A_[7:0]连接到主片的DVO_D_[7:0],主片的DVO_A_[7:0]作为级联系统的输出,并将此端口的视频输出模式配置为行交叉模式,输出格式配置为8 bit嵌入式同步的ITU-R BT.6564 :2:2格式,然后把DVO_A_[7:0]连接至VPIF接口的通道0[4]。VPIF接口有两个8 bit的视频输入通道和输出通道,通道0/1是输入口,有相同的硬件结构;通道2/3是输出口,有相同的硬件结构[4]。主机通过I2C总线对TVP5158进行控制,I2C总线标准包括两种信号:串行输入/输出数据线(SDA)和输入/输出时钟线,负责设备和总线间的数据传递。SDA和SCL须通过拉电阻连接到IOVDD,当总线空闲时,SDA和SCL都是高电位。在此过程的I2C编程中,单个I2C写操作可以传到4个解码器内核中的一个或多个上。I2C子地址FEH包含4 bit,每位对应一个解码器内核。当一个解码器的写/读使能位被设置,I2C的写/读操作将被送到对应的解码器内核,接口电路如图2所示。
3 采集驱动程序开发
3.1 Linux下MCVIP TVP5158驱动
MCVIP驱动主要完成视频帧采集、多通道视频信号行交叉复用、执行DMA传输等功能。多路视频信号经复用后成为一路BT656/BT1120数据流,送给后端VPIF存储。每帧图像都有一个通道标签(CH-ID)、行号等信息,提供给后端的解复用操作。整个驱动程序主要由内核空间驱动和用户空间驱动两部分组成,其中内核空间包括I2C驱动、EDMA驱动、视频端口采集驱动;用户空间主要为应用程序提供编程接口。驱动结构如图3所示。
MCVIP驱动需要调用VPIF采集驱动的注册函数vpif_register_decoder()将其注册到VPIF驱动中。主要过程为:分别将两片TVP5158译码器信息注册到VPIF驱动
若返回值err<0,则通过 vpif_unregister_decoder(&tvp5158_dev.decoder0)语句移除注册。
3.2 VPIF接口驱动
VPIF接口驱动按照V4L2标准编写。V4L2是V4L API的升级版本,它是Linux内核中专门为音视频设备驱动提供的标准的接口规范[5]。V4L2驱动是作为系统核心模块来实现的,作为client被插入到“videodev”模块里,其节点的主设备号是81,次设备号是0~255。当应用程序触发了一个驱动程序调用时,控制权首先传递给vid⁃eodev中的函数,videodev负责将应用程序传递的文件或节点结构指针转化为相应的V4L2结构指针,并调用V4L2驱动中的处理函数[6]。此驱动的设计主要实现了与MCVIP驱动的结合,包括以下几个部分:
1)实现MCVIP_v4l2Create()函数,在多通道视频端口MCVIP中打开V4L2设备,然后调用相关的ioctl命令获取设备功能、设置视频输入、视频标准、视频格式等。
2)请求帧缓冲区,并调用void*mmap()函数将内核空间缓冲区映射到用户空间,然后将这些缓冲区入队列,当输出队列已满时,读取缓冲区中的视频帧,再次将空缓冲区输入队列,如此进行循环采集。
3)实现 MCVIP_v4l2Start()和 MCVIP_v4l2Stop()函数,启动和停止视频流。
4 系统测试
根据需要重新编译Davinci linux-2.6.10_mvl401_LSP_01_30_00_082内核,将VPIF采集驱动直接编译进内核,MCVIP内核空间驱动编译为模块后动态加载,用户空间驱动编译为动态链接库。具体过程为:在PC机上进入root@wxspjk:cd/home/wy/linux-2.6.10_mvl401_LSP_01_30_00_082#目录,然后执行make命令出现信息如图4所示。
用类似的方法编译生成drv.ko,libdrv.so,libosa.so,libmcvip.so等文件。将生成的内核镜像烧写到DM6467开发板上,分别执行loadmodules.sh和start.sh脚本文件加载内核模块和动态链接库。在PC机上对8个视频通道逐一测试,均得到了清晰流畅的实时视频流,图5为其中一路视频的截图。以上测试结果表明,各接口驱动模块工作正常。
5 小结
本文给出了一种基于DM6467的8路实时视频采集设计方案,该方案具有稳定性好、采集图像清晰、成本低廉等优点,采集到的视频数据存储于SDRAM中,后期经H.264(或其他方式)编码后通过有线或无线网络传输,可广泛应用于视频监控、电视会议等领域,具有很好的经济效益。
[1]赵勇,袁誉乐,丁锐.DAVINCI技术原理与应用指南[M].南京:东南大学出版社,2008.
[2]周传磷,肖永军,苏贵坡,等.基于TMS320DM642的光电目标跟踪视频采集与处理系统设计[J].电视技术,2010,34(12):54-57.
[3]郭波,樊丁,彭凯.基于DaVinci技术的嵌入式视频监控系统设计[J].测控技术,2009,28(10):82-83.
[4]张海涛,蔡文寰,董有尔.基于DM642的图像处理系统设计及应用[J].现代电子技术,2008(12):125-127.
[5]DIRKS B,VERKUIL H,RUBLI M.Video for Linux two API specification revision 0.24[EB/OL].[2010-06-26].http://v4l2spec.bytesex.org/v4l2spec/v4l2.pdf.
[6]廖梦云,赵利,莫金旺.基于CMOS图像传感器的嵌入式视频采集系统设计[J].计算机系统应用,2009(5):196-197.