- 相關(guān)推薦
基于DM642的多路視頻采集系統
引言
隨著(zhù)數字信號處理器 DPS 芯片集成度,運算速度,數據吞吐率等性能的不斷提高,己被廣泛應用于許多實(shí)時(shí)視頻處理和傳輸領(lǐng)域。一般圖像處理系統由攝像機、圖像采集卡、計算機構成,圖像理解和處理算法全部以軟件方式實(shí)現。這是因為實(shí)時(shí)數字圖像處理信息量和計算量大,而大多數圖像采集卡基于成本考慮沒(méi)有處理器和大容量的存儲器,絕大部分任務(wù)必須依靠計算機才能勝任。這種計算機參與的系統的應用場(chǎng)合受到很大限制,在工業(yè)或軍事等復雜環(huán)境下應用極為不便,因此許多專(zhuān)用圖像處理系統應運而生。脫離計算機獨立運行的實(shí)時(shí)專(zhuān)用圖像處理系統,由于集圖像采集、處理等功能于一體,并易于滿(mǎn)足圖像處理中數據量大、運算復雜、實(shí)時(shí)性強等要求而受到眾多研究人員的關(guān)注。
TI 公司推出的TMS320DM642 型數字信號處理器可實(shí)時(shí)處理4 路模擬視頻和音頻輸入、1 路模擬/數字視頻和1 路模擬音頻信號輸出[1-2]。適應PAL/NTSC 標準復合視頻CVBS 或分量視頻Y/C 格式的模擬信號輸入,可適于PAL/NTSC 標準S 端子或數字RGB 模擬/數字信號輸出,也可適應標準麥克風(fēng)或立體聲音頻模擬輸入及標準立體聲音頻模擬輸出,并進(jìn)采用EDMA 的數字視頻圖像信號的實(shí)時(shí)傳輸,具有對多路采集數據進(jìn)行實(shí)時(shí)處理和分析的功能。
1 系統設計
TMS320DM642 是32 位定點(diǎn)高性能處理器,最高工作頻率可以達到720MHz,處理能力可以達到5760MIPS,因此可以實(shí)現對多路圖像的實(shí)時(shí)處理[3-5]。DM642 在TI 的C64x DSP內核基礎上進(jìn)一步集成了完備的視頻接口、音頻接口、以太網(wǎng)接口、PCI-66 總線(xiàn)等片上外設。用戶(hù)可以方便地對音頻、視頻等各種復雜的運算進(jìn)行高速處理,因此DM642 已經(jīng)廣泛的應用于數字視頻服務(wù)器、多通道數字視頻錄像機、多通道數字視頻監控等領(lǐng)域。
本系統配置了 4M 的Flash 和32M 的SDRAM,可以滿(mǎn)足一般應用的需要。DM642 有三個(gè)視頻口,分別為VP0、VP1 和VP2。其中VP2 為單一功能的視頻口。VP0 和VP1 是與McBSP、McASP 復用引腳。DM642 上集成了一條I2C 總線(xiàn),本系統中一共有4 個(gè)視頻輸入口,而一個(gè)I2C 中線(xiàn)能只能接兩個(gè)SAA7113 視解編碼器,因此需要在I2C 總線(xiàn)上做總線(xiàn)切換,分成I2C0 和I2C1,這樣就可以接4 個(gè)SAA7113 視解編碼器。I2C 總線(xiàn)切換電路見(jiàn)圖1。
整個(gè)系統是DM642 為核心,主要包括視頻模塊、存儲模塊、通信模塊以及其他外圍電路部分。視頻模塊由四塊編碼器芯片和一塊解碼器芯片組成,采用切換方式以支持四路復合視頻輸入和一路視頻輸出顯示;以存儲模塊通過(guò)DM642 的EMIF 接口擴展片外存儲器SDRAM 和FLASH,并通過(guò)CPLD 控制FLASH 片內分頁(yè)寄存器的讀寫(xiě);通信模塊部分利用CPLD 控制并口傳輸模式,實(shí)現時(shí)序邏輯以及數據傳輸,使整個(gè)系統作為從設備接受主設備控制以完成特定的圖像處理運算等。整個(gè)系統的框圖。
2 軟件設計
本設計的驅動(dòng)程序是按照TI 公司的DDK 驅動(dòng)模型設計的,具有很好的復用性、移植性和借鑒性。DDK 是TI 公司為簡(jiǎn)化驅動(dòng)開(kāi)發(fā)復雜度,而定義的一個(gè)標準的驅動(dòng)模型和一套API 函數[6-7]。該驅動(dòng)模型主要分為兩層:類(lèi)驅動(dòng)和微型驅動(dòng)。其中類(lèi)驅動(dòng)通過(guò)每個(gè)外部設備獨有的微型驅動(dòng)對設備進(jìn)行操作。微型驅動(dòng)通過(guò)控制外設的寄存器、內存和中斷資源對外部設備實(shí)現控制。微型驅動(dòng)程序必須將特定的外部設備有效地表示給類(lèi)驅動(dòng)。
根據 DDK 驅動(dòng)模型,本驅動(dòng)程序設計主要包括三個(gè)部分: I2C 總線(xiàn)控制部分,就是I2C總線(xiàn)讀寫(xiě)操作的實(shí)現部分;類(lèi)驅動(dòng)部分,主要是為應用程序提供API 接口,它的設計在DDK模型里是通用的,可以不修改地直接采用,所以這里就不作具體介紹了;微型驅動(dòng)部分是與硬件有關(guān)的,是驅動(dòng)程序設計的重點(diǎn)。
2.1 I2C 總線(xiàn)控制驅動(dòng)程序設計
該部分是實(shí)現 DM642 通過(guò)I2C 總線(xiàn)對SAA7113H 和SAA7121H 的控制,使用了底層函數。在TI 的CSL(Ship Support Library)中都有,只要包含相應的頭文件即可直接調用。如I2C配置結構體(I2C_config)、I2C 寫(xiě)數據函數(I2C_writeByte)、I2C 配置操作函數(I2C_RSETH)等。
要是實(shí)現對SAA7113H 和SAA7121H 的控制,就要先對其進(jìn)行配置。
對 SAA7113H 進(jìn)行配置:
SA7113H_ConfParams sa7113hPAL[28] = {{0x01,0x08},{0x02,0xC3},{0x03,0x33},{0x04,0x00},{0x05,0x00},{0x06,0xE9},{0x07,0x0D},{0x08,0x00},{0x09,0x01},{0x0A,0x80},{0x0B,0x47},{0x0C,0x40},{0x0D,0x00},{0x0E,0x01},{0x0F,0x24},{0x10,0x08},{0x11,0x0C},{0x12,0x7E},{0x13,0x02},{0x15,0x17},{0x16,0x35},{0x17,0x02},{0x40,0x02},{0x58,0x00},{0x59,0x54},{0x5A,0x07},{0x5B,0x80},{0x5E,0x00}
};對SAA7121H 進(jìn)行配置:
SA7121H_ConfParams sa7121hPAL[45] = {{0x26,0x00},{0x27,0x00},{0x28,0x21},{0x29,0x1d},{0x3A,0x13},{0x5A,0x0c},{0x5B,0x21},{0x5c,0xAF},{0x5d,0x23},{0x5e,0x35},{0x5f,0x35},{0x60,0x00},{0x61,0x06},{0x62,0x2F},{0x63,0xcb},{0x64,0x8a},{0x65,0x09},{0x66,0x2a},{0x67,0x55},{0x68,0x56},{0x69,0x67},{0x6a,0x58},{0x6b,0x20},{0x6c,0x05},{0x6d,0x20},{0x6e,0xA0},{0x6f,0x14},{0x70,0x80},{0x71,0xe8},{0x72,0x10},{0x73,0x42},{0x74,0x03},{0x75,0x03},{0x76,0x05},{0x77,0x16},{0x78,0x04},{0x79,0x16},{0x7a,0x18},{0x7b,0x38},{0x7c,0x40},{0x7d,0x00},{0x7e,0x00},{0x7F,0x00}
};
2.2 多路視頻采集的驅動(dòng)程序設計
本驅動(dòng)程序是基于 DDK 驅動(dòng)模型設計的,通過(guò) DSP/BIOS 配置工具在DSP/BIOS 應用程序中注冊并使用一個(gè)微型驅動(dòng),配置應用程序使用該微型驅動(dòng)。創(chuàng )建一個(gè)新的設備對象后,對其屬性主要設置設備號、設備參數指針、設備實(shí)例的驅動(dòng)函數表以及該驅動(dòng)函數表的類(lèi)型。
FVID 模型是建立在GIO 模型之上的,并對GIO 模型進(jìn)行了改進(jìn)。典型的有FVID_create()、FVID_control()、FVID_alloc()、FVID_exchange()、FVID_free()函數。FVID 函數會(huì )在設備表中查找已注冊的微型驅動(dòng),并調用微型驅動(dòng)函數完成對外部設備的操作。然后創(chuàng )建FVID 采集、顯示通道,配置 SAA7121, SAA7113,分配相應的緩沖區,對得到的視頻幀進(jìn)行處理等操作。
本設計是對兩路視頻信號同時(shí)采集,通過(guò)三個(gè)任務(wù)來(lái)完成:兩個(gè)視頻采集任務(wù)任務(wù)、一個(gè)視頻輸出任務(wù)。任務(wù)間是通過(guò)SCOM 模塊進(jìn)行通信的,SCOM 模塊管理SCOM 隊列對象。
每一個(gè)SCOM 隊列內部使用一個(gè)隊列對象(QUE)和一個(gè)旗語(yǔ)對象(SEM)。在SCOM 隊列的結構在SCOM 模塊中是私有的。應用程序不應該涉及到SCOM 隊列的對象。
視頻采集任務(wù)的程序:
void tskVideoCaptureVp1(){FVID_Frame *capFrameBuf;SCOM_Handle fromInput1toDIS,fromDIStoInput1;fromInput1toDIS = SCOM_open("IN1TODIS"); /*打開(kāi)SCOM 模塊*/fromDIStoInput1 = SCOM_open("DISTOIN1");FVID_alloc(capChan, &capFrameBuf); /*申請一個(gè)空間*/while(1){SCOM_putMsg(fromInput1toDIS, (FVID_Frame *)capFrameBuf);//向隊列中寫(xiě)消息SCOM_getMsg(fromDIStoInput1, SYS_FOREVER); //重隊列中讀消息FVID_exchange(capChan, &capFrameBuf);}
}
這是其中的一路視頻采集程序,通過(guò)同樣的方法可以寫(xiě)出第二路的采集程序。視頻輸出的任務(wù)中完成了兩路視頻的輸出,主要在循環(huán)中完成,程序如下:
while(1){capFrameBuf=(FVID_Frame*)SCOM_getMsg(fromInput1toDIS,SYS_FOREVER);for(i = 0; i < numLines; i ++){DAT_copy(capFrameBuf->frame.iFrm.y1 + i * capLinePitch,disFrameBuf->frame.iFrm.y1 + i * disLinePitch, numPixels);}
capFrameBuf = (FVID_Frame *)SCOM_getMsg(fromInput1btoDIS, SYS_FOREVER);for(i = 0; i < numLines; i ++){DAT_copy(capFrameBuf->frame.iFrm.y1 + i * capLinePitch,disFrameBuf->frame.iFrm.y1 + i * disLinePitch+352, numPixels);}
DAT_wait(DAT_XFRID_WAITALL);CACHE_clean(CACHE_L2ALL,NULL,NULL);FVID_exchange(disChan, &disFrameBuf);SCOM_putMsg(fromDIStoInput1, NULL);/* loop forever */SCOM_putMsg(fromDIStoInput1b, NULL);/* loop forever */}
整個(gè)軟件設計的流程圖見(jiàn):
3 系統調試
本系統是一個(gè)多路視頻采集系統,通過(guò)巧妙的硬件設計和精簡(jiǎn)的軟件設計,可以實(shí)時(shí)輸出各路圖像。以?xún)陕窞槔,通過(guò)兩個(gè)CCD 攝像頭,分別接到四個(gè)視頻采集口中的兩個(gè),然后通過(guò)把視頻輸出端口接到VGA 顯示器上。顯示器分左半邊顯示攝像頭A 的圖像,右半邊顯示攝像頭B 的圖像。實(shí)際效果圖見(jiàn)。
4 結論
本系統通過(guò) I2C 總線(xiàn)上切換的方法完成了多路視頻采集系統的硬件設計,以 DDK 驅動(dòng)模型做視頻驅動(dòng)開(kāi)發(fā),可提高驅動(dòng)程序的可重用性和可移植性,簡(jiǎn)化視頻驅動(dòng)程序的開(kāi)發(fā),從而極大地提高驅動(dòng)程序的開(kāi)發(fā)效率。實(shí)踐證明:基于 DDK 的視頻驅動(dòng)程序運行穩定,與應用程序實(shí)現了無(wú)縫連接,是一種高效可靠的開(kāi)發(fā)方法。多路視頻采集系統成功研制為多路視頻實(shí)時(shí)處理系統的實(shí)現提供了軟硬件支持。
中國碩士論文網(wǎng)提供大量免費碩士畢業(yè)論文,如有業(yè)務(wù)需求請咨詢(xún)網(wǎng)站客服人員!
[參考文獻] (References)
[1] Texas Instruments Incorporated.The DSP/BIOS Driver Developer’s Guide[Z].2002.
[2] Texas Instruments Incorporated.TMS320DM64x DSP Video Port/VCXO Interpolated Control(VIC) Portreference Guide[Z].2003.
[3] 劉瓊,安濤,金鋼等.基于 DM642 視頻采集處理系統硬件設計[J].微計算機信息,2007,11—2.
[4] 徐婉瑩,劉建軍,黃新生.基于CPLD 和DSP 的高速圖像采集技術(shù)研究[J].電子工程師,2004,30(6):48-50.
[5] 薛長(cháng)松,楊國勝,李志強.基于DM642 的的雙CCD 同步運動(dòng)研究[J].計算技術(shù)與自動(dòng)化,2006, 25(4):24-27.
[6] T1 DSP/BIOS 用戶(hù)手冊與驅動(dòng)開(kāi)發(fā)[M].北京:清華大學(xué)出版社, 2007.
[7] 吳江,遲學(xué)芬,劉娜等.基于DDK 的音視頻編碼器驅動(dòng)的設計[J].吉林大學(xué)學(xué)報(信息科學(xué)版),2007,25(3):246-250.
【基于DM642的多路視頻采集系統】相關(guān)文章:
基于USB接口的數據采集系統設計03-18
基于Verilog HDL設計的自動(dòng)數據采集系統03-21
基于A(yíng)DSL傳輸的網(wǎng)絡(luò )視頻應用系統03-18
基于DSP的USB口數據采集分析系統03-18
基于用電采集系統的計量異常監測與分析03-16