花魁,沈捷,2,周柱,张湜
(1.南京工业大学 自动化与电气工程学院,江苏 南京210009;
2.东南大学 复杂工程系统测量与控制教育部重点实验室,江苏 南京210096)
视频图形阵列(VGA)是一种视频传输标准,具有分辨率高、显示速率快、颜色丰富等优点.VGA技术在一些既要求显示高分辨率图像又无需使用计算机的设备上应用却很少见到.一个完整的图像处理系统不但要具备图像数据的采集功能,还应对图像进行实时显示,最重要的是完成对图像数据的算法研究.TMS320DM6437是美国德州仪器(TI)公司推出的一款图像处理方面的DSP芯片,它采用了C64+系列处理器,主频达到600MHz,能够快速地处理图像数据,广泛用于移动物体检测系统的设计[1].TI公司提出了基于DSP/BIOS的设备驱动模型,该模型分为两层:类驱动和微型驱动,两层之间使用通用接口[2].TI公司所有的DSP软件都可以在CCS中开发[3-5].应用程序只需调用类驱动的API函数操作微型驱动,以微型驱动控制外部设备.本文以DM6437为主控芯片,讨论了一种基于DSP/BIOS类/微型驱动模型的图像采集与VGA显示模块的实现方法.
图1为视频采集及显示系统 .系统主要包括图像采集和图像显示两个部分 .图像采集模块由CCD传感器、视频解码芯片TVP5146和DM6437的视频处理前端(VPFE)构成[6];图像显示模块由视频处理后端(VPBE)和视频图形阵列(VGA)显示器构成.
图1 视频采集及显示系统Fig.1 Video acquisition and display system
DM6437通过I2C总线对TVP5146芯片进行配置,例如输入时钟频率、视频制式及视频输入格式等.TVP5146芯片在同步信号的控制下,通过8位数据线将采集的图像数据,以YCbCr视频数据流的格式传输至VPFE;然后,由VPFE的CCDC模块对图像进行预处理,并存入DDR2中 .此外,DM6437的视频处理后端(VPBE)读取存储在DDR2中的视频图像信号,将数字信号转换成模拟信号在行同步和场同步信号下完成VGA的显示.
首先,通过FVID_create函数创建通道,函数返回的句柄作为下一步FVID_control的参数;然后,调用FVID_control函数向微型驱动发送控制命令,如发送采集图像的命令,并利用FVID_allocBuffer函数分配缓冲区,以及FVID_queue将空buffer加入buffer队列,等待驱动程序填入图像数据;接着,FVID_dequeue将存有图像数据的buffer从队列中取出.之所以用FVID_dequeue函数将队列中的首个buffer释放出来,是为了接下来作为FVID_exchange函数的起始参数,表示当前正在使用的buffer.最后进入无限循环While(1),利用FVID_exchange函数保证视频数据能够实时地供应用程序使用.图2为FVID APIs的操作流程图,图3为视频处理驱动程序流程映射图.
图2 FVID APIs流程图Fig.2 FVID APIs flow chart
图3 视频处理驱动程序流程映射图Fig.3 Mapping graph of video processing driver
图像采集模块由CCD传感器和DM6437的VPFE构成.由CCD传感器将图像光信号装换成电信号,在像素时钟和同步控制线的控制下,通过并行数据线传输给DM6437的VPFE模块的CCDC控制器,并存入DDR2内存中.为了实现视频数据的采集,需要在类驱动及微型驱动的DDC层设置CCDC模块的相关寄存器.部分类驱动及微型驱动代码设置如下:
VGA显示器的显示采取的是逐行扫描的方式,即扫描从屏幕的左上方开始,从左到右,从上到下逐行扫描.每扫完一行,电子束回到屏幕左边下一行的起始位置,期间对电子束进行行消隐.每行结束时,用行同步信号进行行同步,扫描完所有行,用场同步信号进行场同步,并使扫描回到屏幕的左上方,同时进行场消隐并预备进行下一次的扫描.
一幅图要想在VGA接口的显示器上显示,主要需要行同步信号、场同步信号和R,G,B信号.行、场同步信号必须按照VGA接口协议的时序标准.这部分由DM6437控制输出,模拟RGB信号由视频处理后端(VPBE)中的VENC模块控制输出.为了实现视频数据的VGA显示需要在类驱动以及微型驱动的DDC层设置VENC模块的相关寄存器.部分类驱动及微型驱动代码设置如下:
通过调用DDC层中自己编写的switch语句可以设置其他显示标准.switch语句如下:
系统采用PAL制式的CCD模拟摄像头,CETEK-DM6437-A评估板,以及XDS560U仿真器.视频图像的采集频率为25帧·s-1,图像大小为720px×480 px.在CCS3.3编译环境下将工程文件(.pjt)下载到DSP中.通过CCD摄像头采集到的实时视频图像,如图4所示.从图4可知:实时视频图像清晰,动态画面稳定并且流畅,达到预期效果.
图4 图像采集与显示Fig.4 Image acquisition and display
介绍一种基于DSP/BIOS类/微型驱动模型的视频图像采集及VGA显示方法,并详细介绍了驱动程序的开发过程.在应用程序中只需修改相应的参数,就可以实现不同格式视频数据的采集与显示,缩短了开发时间,提高代码的可移植性.
[1] YIN Zhi-jian,HE Yun-fei,XIONG Chun-ru,et al.The design of moving objects detection system based on DM6437[C]∥International Conference on Computer Science and Service System,Nanjing:IEEE,2011:27-29.
[2] 王军宁,何迪,马娟.TI DSP/BIOS用户手册与驱动开发[M].北京:清华大学出版社,2004.
[3] 李方慧,王飞,何佩琨.TMS320C6000系列DSPs原理和应用[M].2版 .北京:电子工业出版社,2003.
[4] 彭启琮,管庆.DSP集成开发环境:CCS及DSP/BIOS的原理与应用[M].北京:电子工业出版社,2004.
[5] 彭启琮.达芬奇技术:数字图像/视频信号处理新平台[M].北京:电子工业出版社,2008.
[6] 吕颖利.DSPC6000环境下视频处理驱动软件设计与研究[D].西安:西安科技大学,2009.