摘 要: 以棒材計(jì)數(shù)系統(tǒng)中計(jì)數(shù)顯示系統(tǒng)為例,,介紹了一種以TMS320DM6437為控制內(nèi)核的OSD顯示技術(shù),。該方案將采集到的棒材圖像與棒材計(jì)數(shù)結(jié)果文字字符完成疊加,并通過(guò)VGA顯示器實(shí)時(shí)顯示,。本方案在實(shí)際項(xiàng)目的系統(tǒng)中工作穩(wěn)定,,字符顯示位置可靈活修改,能方便應(yīng)用于實(shí)時(shí)顯示,。
關(guān)鍵詞: TMS320DM6437,;OSD;VGA顯示
在工業(yè)生產(chǎn)和生活領(lǐng)域中,,嵌入式數(shù)字視頻監(jiān)控系統(tǒng)得到廣泛應(yīng)用,。而在屏顯示OSD(On Screen Display)技術(shù)可幫助工作人員方便檢測(cè)工業(yè)生產(chǎn)過(guò)程狀態(tài)變化。目前,,工業(yè)領(lǐng)域?qū)崿F(xiàn)OSD技術(shù)的方法可以利用專業(yè)用OSD芯片,,如FUJITSU公司的MB90092芯片,其電路設(shè)計(jì)簡(jiǎn)單,,但需專門設(shè)計(jì)軟件和硬件,;也可以利用附帶OSD功能的芯片,如SigmaDesigns公司的EM8511芯片,,其不需要專門的硬件設(shè)計(jì),,使用方便,只是這類芯片目前功能還不夠強(qiáng)大,,難以工作在信息處理量大和實(shí)時(shí)性要求高的平臺(tái),。TMS320DM6437及其系列芯片是當(dāng)前視頻處理系統(tǒng)主流處理器之一,,本文闡述了以軟件編程方式實(shí)現(xiàn)該芯片OSD技術(shù),簡(jiǎn)單實(shí)用,,效果優(yōu)良,,很好地拓展了TMS320DM6437的顯示模塊功能。
1 OSD架構(gòu)平臺(tái)
1.1 棒材計(jì)數(shù)硬件平臺(tái)
本文以棒材計(jì)數(shù)平臺(tái)上實(shí)現(xiàn)OSD技術(shù)為例,,在實(shí)現(xiàn)OSD模塊信息和視頻信息疊加時(shí),,要處理的數(shù)據(jù)量大,為了滿足實(shí)時(shí)性的要求,,需要選擇一款集成度高,,運(yùn)算速度快的芯片。TMS320DM6437是TI公司推出的定點(diǎn)Davinci DSP處理器,,工作主頻可達(dá)700 MHz,,處理性能最高達(dá)到5 600 MIPS,含有豐富的外設(shè)資源,,芯片本身具有OSD功能,,這樣就不需要增加額外的硬件設(shè)計(jì),可以通過(guò)靈活的軟件編程來(lái)實(shí)現(xiàn)視頻和嵌入的圖片疊加,,為用戶提供簡(jiǎn)便的觀測(cè)信息,。
棒材計(jì)數(shù)平臺(tái)主要由DSP圖像處理模塊、CMOS圖像傳感器模塊,、存儲(chǔ)模塊(DDR2)和視頻輸出顯示模塊組成,,硬件平臺(tái)如圖1所示。
1.2 TMS320DM6437的OSD內(nèi)部數(shù)據(jù)傳輸架構(gòu)
TMS320DM6437的OSD內(nèi)部數(shù)據(jù)傳輸架構(gòu)如圖2所示,。OSD模塊從外部?jī)?nèi)存中讀入視頻數(shù)據(jù),,外部?jī)?nèi)存通常是DDR2,數(shù)據(jù)經(jīng)處理轉(zhuǎn)化為YUV格式后送人VENC,。OSD模塊可處理兩個(gè)獨(dú)立的Video窗口和兩個(gè)獨(dú)立的OSD窗口,,OSD模塊的相關(guān)寄存器通過(guò)視頻解碼模塊產(chǎn)生的VD信號(hào)進(jìn)行嵌位,來(lái)控制顯示窗口使能,、窗口縮放以及窗口的顯示坐標(biāo),。
以下兩個(gè)條件滿足時(shí)VPBE驅(qū)動(dòng)程序有效。第一是在DSP/BIOS中創(chuàng)建一個(gè)VPBE驅(qū)動(dòng),。主程序利用函數(shù)VENCHandle=FVID_create("/VPBE0",,IOM_INOUT,NULL,,NULL,,&gioAttrs)打開(kāi)一個(gè)VPBE0設(shè)備,并創(chuàng)建VENC通道,。由于TI設(shè)計(jì)的GIO驅(qū)動(dòng)模塊在DSP/BIOS上使用過(guò)程中存在缺陷,,應(yīng)用程序在對(duì)驅(qū)動(dòng)程序的緩沖區(qū)進(jìn)行數(shù)據(jù)處理后不能釋放緩沖區(qū),,針對(duì)這個(gè)問(wèn)題可利用TI提出的FVID視頻處理模型,其能夠比較方便地分配緩沖區(qū),,因此,,通過(guò)直接調(diào)用FVID_allocBuffer()函數(shù)和FVID_exchangeBuffer()函數(shù)申請(qǐng)分配和交換緩沖區(qū),并在使用后利用FVID_deleteBuffer()函數(shù)重新釋放緩沖區(qū),。第二是設(shè)置DSP/BIOS中的硬件中斷,。VPBE驅(qū)動(dòng)程序的使用過(guò)程中,,在TCF文件中設(shè)置HWI_INT8為1,,配置參數(shù)為bios.HWI.instance("HWI_INT8").interruptSelectNumber=1,即VPBE驅(qū)動(dòng)優(yōu)先級(jí)為8,,對(duì)應(yīng)VENC每幀圖像處理結(jié)束后產(chǎn)生事件序列號(hào)為32~64之間的事件被中斷,,這時(shí)事件接收器檢測(cè)到哪里引起了中斷。
2.2 窗口顯示模式選擇
每個(gè)窗口可以設(shè)置為幀模式和場(chǎng)模式,。幀模式的特點(diǎn)是允許每幀圖像數(shù)據(jù)連續(xù)儲(chǔ)存在DDR2中,,圖像顯示時(shí)按照奇偶場(chǎng)進(jìn)行讀取。場(chǎng)模式特點(diǎn)是允許圖像數(shù)據(jù)單獨(dú)儲(chǔ)存在DDR2中,,圖像顯示是根據(jù)VENC的工作模式窗口高度,。處理芯片DM6437集成了DDR2內(nèi)存控制器,支持JESD79D-2A標(biāo)準(zhǔn),,并提供32 bit DDR2接口,。圖像數(shù)據(jù)存儲(chǔ)在DDR2中,當(dāng)需要VENC連續(xù)從DDR2中讀取數(shù)據(jù)時(shí),,將OSD窗口設(shè)置為連續(xù)場(chǎng)模式,,對(duì)應(yīng)的寄存器位VIDWINMD.VFFO和OSDWIN0MD.OFF0使能。連續(xù)場(chǎng)數(shù)據(jù)讀取模式如圖4所示,。
本文需要用到VIDWIN0和OSDWIN0將視頻圖像與文字字符疊加,,VIDWIN0用于實(shí)時(shí)顯示采集的棒材圖像,OSDWIN0將棒材計(jì)數(shù)結(jié)果疊加到VIDWIN0窗口畫面,。
?。?)VIDWIN0窗口設(shè)置
CMOS圖像傳感器采集到的圖像經(jīng)TVP5150轉(zhuǎn)化為YUV格式數(shù)字信號(hào),并存儲(chǔ)在DDR2中,,視頻后端處理子系統(tǒng)VPBE將數(shù)據(jù)從DDR2中讀出,,并通過(guò)VIDWIN0窗口顯示。由于VIDWIN0對(duì)應(yīng)寄存器配置參數(shù)的設(shè)置封裝在DM6437自帶的psp_vpbe.h頭文件中,,調(diào)用結(jié)構(gòu)體PSP_VPBEOsdConfigParams{}可以配置VIDWIN0窗口的工作模式,、圖像的格式以及圖像在窗口中顯示位置。例如:
staticPSP_VPBEOsdConfigParamsVid0HandleParams=
{
……
FVID_FIELD_MODE,,//連續(xù)場(chǎng)模式
FVID_BPP_BITS16,,//圖像像素為16位
FVID_YCbCr422_INTERLEAVED,,
//圖像存儲(chǔ)格式為YCbCr
(720*(16/8u)),,//每行像素個(gè)數(shù)
0,,//左邊界距離
0,//頂格邊界距離
720,,//顯示的圖像寬度
480,,//顯示的圖像高度
……
};
本文通過(guò)軟件編程的方式實(shí)現(xiàn)VIDWIN0窗口配置,,在對(duì)結(jié)構(gòu)體參數(shù)設(shè)置后,,通過(guò)調(diào)用FVID_create()函數(shù)創(chuàng)建vid0Handle通道,F(xiàn)VID_alloc()函數(shù)為通道分配存儲(chǔ)空間,,調(diào)用FVID_queue()函數(shù)將要顯示的數(shù)據(jù)從通道傳輸?shù)絍IDWIN0窗口顯示,。其具體軟件編寫流程圖如圖6所示。
?。?)OSDWIN0窗口設(shè)置
OSDWIN0用于顯示RGB565格式的字符和數(shù)字圖片,,對(duì)應(yīng)的寄存器配置參數(shù)的設(shè)置封裝在DM6437自帶的psp_vpbe.h頭文件中,配置參數(shù)的流程與配置VIDWIN0步驟一樣,,調(diào)用結(jié)構(gòu)體PSP_VPBEOsdConfigParams win0Params{}設(shè)置相應(yīng)寄存器值,,結(jié)構(gòu)體中包含的參數(shù)需包含疊加的圖片和文字的顯示屬性,如混合模式,、透明度和顏色等,。
(4)VGA顯示驅(qū)動(dòng)設(shè)計(jì)
本文通過(guò)修改PSP文件的相關(guān)參數(shù)設(shè)計(jì)VGA的顯示驅(qū)動(dòng),,基于PSP(Platform Support Package)上的驅(qū)動(dòng)程序可以直接實(shí)現(xiàn)S端子顯示和LCD屏幕顯示,,同時(shí)驅(qū)動(dòng)程序支持VENC編碼器的連續(xù)場(chǎng)輸出模式,但是程序存在缺陷不能直接用于VGA顯示,,因此需要在驅(qū)動(dòng)中增加VGA的顯示驅(qū)動(dòng)程序,。TI官方提供的基于PSP的視頻驅(qū)動(dòng)程序建立在實(shí)時(shí)操作系統(tǒng)DSP/BIOS上,總共分為IOM層,、DDC層和CSLR層3層,。
本文利用的OSD技術(shù)產(chǎn)生的疊加效果通過(guò)VGA顯示,VPBE模塊為VGA圖像顯示提供了接口,,VGA接口有3路基本輸出信號(hào),,分別用來(lái)顯示RGB 3個(gè)分量。VPBE模塊提供的模擬接口擁有4路的視頻DAC信號(hào),,通過(guò)設(shè)置寄存器DACSEL來(lái)選擇所需要的3路信號(hào),,寄存器DACSEL上的對(duì)應(yīng)關(guān)系為:DAC_A位控制輸出R模擬信號(hào),DAC_B位控制輸出G模擬信號(hào),,DAC_C位控制輸出B模擬信號(hào),,同時(shí)DM6437通過(guò)I2C總線接口輸出行同步信號(hào)HD和列同步信號(hào)VD,,這5路信號(hào)組成了VGA接口輸出信號(hào)。
在DDC層中修改一個(gè)PSP聲明,,并添加LLC_setVGAdisplay()顯示函數(shù)對(duì)5路信號(hào)使能,,LLC_setVGAdisplay()代碼如下:
VoidLLC_setVGAdisplay()
{
CSL_FINST(VENCRegs->DACSEL,
VENC_DACSEL_DA0S,,PR_R),;//R模擬信號(hào)輸出使能
CSL_FINST(VENCRegs->DACSEL,
VENC_DACSEL_DA1S,,PY_G),;//G模擬信號(hào)輸出使能
CSL_FINST(VENCRegs->DACSEL,
VENC_DACSEL_DA2S,,PB_B),;//B模擬信號(hào)輸出使能
CSL_FINST(VENCRegs->SYNCCTL,
VENC_SYNCCTL_SYEH,,ON);//HD同步信號(hào)使能
CSL_FINST(VENCRegs->SYNCCTL,,
VENC_SYNCCTL_SYEV,,ON);//VD同步信號(hào)使能
}
?。?)運(yùn)行效果
VGA 5路信號(hào)使能后,,程序運(yùn)行后OSD疊加技術(shù)的最終效果如圖9所示。
本文利用TMS320DM6437芯片自帶的OSD模塊,,通過(guò)軟件編程實(shí)現(xiàn)OSD疊加技術(shù),,并以在鋼鐵生產(chǎn)中的棒材計(jì)數(shù)結(jié)果與視頻疊加為例,OSD界面上的漢字,、數(shù)字或其他特殊字符可根據(jù)工作人員的要求修改,,并在窗口任意位置動(dòng)態(tài)顯示,其設(shè)計(jì)原理具有通用性,。OSD模塊實(shí)現(xiàn)的動(dòng)態(tài)棒材視頻圖像與棒材計(jì)數(shù)結(jié)果疊加,,方便了人機(jī)對(duì)話,可以應(yīng)用在工業(yè)生產(chǎn)實(shí)踐中,。
參考文獻(xiàn)
[1] TI. TMS320DM643x DMP video processing back end (VPBE)[Z].2007.
[2] 合眾達(dá).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.