摘 要:以棒材计数系统中计数显示系统为例,介绍了一种以TMS320DM6437为控制内核的OSD显示技术。该方案将采集到的棒材图像与棒材计数结果文字字符完成叠加,并通过VGA显示器实时显示。本方案在实际项目的系统中工作稳定,字符显示位置可灵活修改,能方便应用于实时显示。
关键词:TMS320DM6437;OSD;VGA显示
在工业生产和生活领域中,嵌入式数字视频监控系统得到广泛应用。而在屏显示OSD(On Screen Display)技术可帮助工作人员方便检测工业生产过程状态变化。目前,工业领域实现OSD技术的方法可以利用专业用OSD芯片,如FUJITSU公司的MB90092芯片,其电路设计简单,但需专门设计软件和硬件;也可以利用附带OSD功能的芯片,如SigmaDesigns公司的EM8511芯片,其不需要专门的硬件设计,使用方便,只是这类芯片目前功能还不够强大,难以工作在信息处理量大和实时性要求高的平台。TMS320DM6437及其系列芯片是当前视频处理系统主流处理器之一,本文阐述了以软件编程方式实现该芯片OSD技术,简单实用,效果优良,很好地拓展了TMS320DM6437的显示模块功能。
1 OSD架构平台
1.1 棒材计数硬件平台
本文以棒材计数平台上实现OSD技术为例,在实现OSD模块信息和视频信息叠加时,要处理的数据量大,为了满足实时性的要求,需要选择一款集成度高,运算速度快的芯片。TMS320DM6437是TI公司推出的定点DavinciDSP处理器,工作主频可达700 MHz,处理性能最高达到5 600 MIPS,含有丰富的外设资源,芯片本身具有OSD功能,这样就不需要增加额外的硬件设计,可以通过灵活的软件编程来实现视频和嵌入的图片叠加,为用户提供简便的观测信息。
棒材计数平台主要由DSP图像处理模块、CMOS图像传感器模块、存储模块(DDR2)和视频输出显示模块组成,硬件平台如图1所示。
1.2 TMS320DM6437的OSD内部数据传输架构
TMS320DM6437的OSD内部数据传输架构如图2所示。OSD模块从外部内存中读入视频数据,外部内存通常是DDR2,数据经处理转化为YUV格式后送人VENC。OSD模块可处理两个独立的Video窗口和两个独立的OSD窗口,OSD模块的相关寄存器通过视频解码模块产生的VD信号进行嵌位,来控制显示窗口使能、窗口缩放以及窗口的显示坐标。
以下两个条件满足时VPBE驱动程序有效。第一是在DSP/BIOS中创建一个VPBE驱动。主程序利用函数VENCHandle=FVID_create("/VPBE0",IOM_INOUT,NULL,NULL,&gioAttrs)打开一个VPBE0设备,并创建VENC通道。由于TI设计的GIO驱动模块在DSP/BIOS上使用过程中存在缺陷,应用程序在对驱动程序的缓冲区进行数据处理后不能释放缓冲区,针对这个问题可利用TI提出的FVID视频处理模型,其能够比较方便地分配缓冲区,因此,通过直接调用FVID_allocBuffer()函数和FVID_exchangeBuffer()函数申请分配和交换缓冲区,并在使用后利用FVID_deleteBuffer()函数重新释放缓冲区。第二是设置DSP/BIOS中的硬件中断。VPBE驱动程序的使用过程中,在TCF文件中设置HWI_INT8为1,配置参数为bios.HWI.instance("HWI_INT8").interruptSelectNumber=1,即VPBE驱动优先级为8,对应VENC每帧图像处理结束后产生事件序列号为32~64之间的事件被中断,这时事件接收器检测到哪里引起了中断。
2.2 窗口显示模式选择
每个窗口可以设置为帧模式和场模式。帧模式的特点是允许每帧图像数据连续储存在DDR2中,图像显示时按照奇偶场进行读取。场模式特点是允许图像数据单独储存在DDR2中,图像显示是根据VENC的工作模式窗口高度。处理芯片DM6437集成了DDR2内存控制器,支持JESD79D-2A标准,并提供32 bit DDR2接口。图像数据存储在DDR2中,当需要VENC连续从DDR2中读取数据时,将OSD窗口设置为连续场模式,对应的寄存器位VIDWINMD.VFFO和OSDWIN0MD.OFF0使能。连续场数据读取模式如图4所示。
本文需要用到VIDWIN0和OSDWIN0将视频图像与文字字符叠加,VIDWIN0用于实时显示采集的棒材图像,OSDWIN0将棒材计数结果叠加到VIDWIN0窗口画面。
(1)VIDWIN0窗口设置
CMOS图像传感器采集到的图像经TVP5150转化为YUV格式数字信号,并存储在DDR2中,视频后端处理子系统VPBE将数据从DDR2中读出,并通过VIDWIN0窗口显示。由于VIDWIN0对应寄存器配置参数的设置封装在DM6437自带的psp_vpbe.h头文件中,调用结构体PSP_VPBEOsdConfigParams{}可以配置VIDWIN0窗口的工作模式、图像的格式以及图像在窗口中显示位置。例如:
staticPSP_VPBEOsdConfigParamsVid0HandleParams=
{
……
FVID_FIELD_MODE,//连续场模式
FVID_BPP_BITS16,//图像像素为16位
FVID_YCbCr422_INTERLEAVED,
//图像存储格式为YCbCr
(720*(16/8u)),//每行像素个数
0,//左边界距离
0,//顶格边界距离
720,//显示的图像宽度
480,//显示的图像高度
……
};
本文通过软件编程的方式实现VIDWIN0窗口配置,在对结构体参数设置后,通过调用FVID_create()函数创建vid0Handle通道,FVID_alloc()函数为通道分配存储空间,调用FVID_queue()函数将要显示的数据从通道传输到VIDWIN0窗口显示。其具体软件编写流程图如图6所示。
(3)OSDWIN0窗口设置
OSDWIN0用于显示RGB565格式的字符和数字图片,对应的寄存器配置参数的设置封装在DM6437自带的psp_vpbe.h头文件中,配置参数的流程与配置VIDWIN0步骤一样,调用结构体PSP_VPBEOsdConfigParams win0Params{}设置相应寄存器值,结构体中包含的参数需包含叠加的图片和文字的显示属性,如混合模式、透明度和颜色等。
(4)VGA显示驱动设计
本文通过修改PSP文件的相关参数设计VGA的显示驱动,基于PSP(Platform Support Package)上的驱动程序可以直接实现S端子显示和LCD屏幕显示,同时驱动程序支持VENC编码器的连续场输出模式,但是程序存在缺陷不能直接用于VGA显示,因此需要在驱动中增加VGA的显示驱动程序。TI官方提供的基于PSP的视频驱动程序建立在实时操作系统DSP/BIOS上,总共分为IOM层、DDC层和CSLR层3层。
本文利用的OSD技术产生的叠加效果通过VGA显示,VPBE模块为VGA图像显示提供了接口,VGA接口有3路基本输出信号,分别用来显示RGB 3个分量。VPBE模块提供的模拟接口拥有4路的视频DAC信号,通过设置寄存器DACSEL来选择所需要的3路信号,寄存器DACSEL上的对应关系为:DAC_A位控制输出R模拟信号,DAC_B位控制输出G模拟信号,DAC_C位控制输出B模拟信号,同时DM6437通过I2C总线接口输出行同步信号HD和列同步信号VD,这5路信号组成了VGA接口输出信号。
在DDC层中修改一个PSP声明,并添加LLC_setVGAdisplay()显示函数对5路信号使能,LLC_setVGAdisplay()代码如下:
VoidLLC_setVGAdisplay()
{
CSL_FINST(VENCRegs->DACSEL,
VENC_DACSEL_DA0S,PR_R);//R模拟信号输出使能
CSL_FINST(VENCRegs->DACSEL,
VENC_DACSEL_DA1S,PY_G);//G模拟信号输出使能
CSL_FINST(VENCRegs->DACSEL,
VENC_DACSEL_DA2S,PB_B);//B模拟信号输出使能
CSL_FINST(VENCRegs->SYNCCTL,
VENC_SYNCCTL_SYEH,ON);//HD同步信号使能
CSL_FINST(VENCRegs->SYNCCTL,
VENC_SYNCCTL_SYEV,ON);//VD同步信号使能
}
(5)运行效果
VGA 5路信号使能后,程序运行后OSD叠加技术的最终效果如图9所示。
本文利用TMS320DM6437芯片自带的OSD模块,通过软件编程实现OSD叠加技术,并以在钢铁生产中的棒材计数结果与视频叠加为例,OSD界面上的汉字、数字或其他特殊字符可根据工作人员的要求修改,并在窗口任意位置动态显示,其设计原理具有通用性。OSD模块实现的动态棒材视频图像与棒材计数结果叠加,方便了人机对话,可以应用在工业生产实践中。
参考文献
[1] TI. TMS320DM643x DMP video processing back end (VPBE)[Z].2007.
[2] 合众达.SEED-DEC6437用户指南[Z].2008.
[3] TI. How to use the VPBE and VPFE Driver on TMS320DM643x devices [Z].2007.
[4] TI. TMS320DM643x DMP inter-integrated circuit(I2C) module user′s guide (Rev. A)[Z].2007.
[5] TI. TMS320DM643x DMP DDR2 memory controller user′s guide (Rev. B)[Z].2007.
[6] TI. TMS320C64x+ image-video processing library programmer′s reference[Z]. 2007.