- 相關(guān)推薦
基于DM642的多路視頻采集系統(tǒng)
引言
隨著數(shù)字信號處理器 DPS 芯片集成度,運算速度,數(shù)據(jù)吞吐率等性能的不斷提高,己被廣泛應(yīng)用于許多實時視頻處理和傳輸領(lǐng)域。一般圖像處理系統(tǒng)由攝像機、圖像采集卡、計算機構(gòu)成,圖像理解和處理算法全部以軟件方式實現(xiàn)。這是因為實時數(shù)字圖像處理信息量和計算量大,而大多數(shù)圖像采集卡基于成本考慮沒有處理器和大容量的存儲器,絕大部分任務(wù)必須依靠計算機才能勝任。這種計算機參與的系統(tǒng)的應(yīng)用場合受到很大限制,在工業(yè)或軍事等復(fù)雜環(huán)境下應(yīng)用極為不便,因此許多專用圖像處理系統(tǒng)應(yīng)運而生。脫離計算機獨立運行的實時專用圖像處理系統(tǒng),由于集圖像采集、處理等功能于一體,并易于滿足圖像處理中數(shù)據(jù)量大、運算復(fù)雜、實時性強等要求而受到眾多研究人員的關(guān)注。
TI 公司推出的TMS320DM642 型數(shù)字信號處理器可實時處理4 路模擬視頻和音頻輸入、1 路模擬/數(shù)字視頻和1 路模擬音頻信號輸出[1-2]。適應(yīng)PAL/NTSC 標準復(fù)合視頻CVBS 或分量視頻Y/C 格式的模擬信號輸入,可適于PAL/NTSC 標準S 端子或數(shù)字RGB 模擬/數(shù)字信號輸出,也可適應(yīng)標準麥克風或立體聲音頻模擬輸入及標準立體聲音頻模擬輸出,并進采用EDMA 的數(shù)字視頻圖像信號的實時傳輸,具有對多路采集數(shù)據(jù)進行實時處理和分析的功能。
1 系統(tǒng)設(shè)計
TMS320DM642 是32 位定點高性能處理器,最高工作頻率可以達到720MHz,處理能力可以達到5760MIPS,因此可以實現(xiàn)對多路圖像的實時處理[3-5]。DM642 在TI 的C64x DSP內(nèi)核基礎(chǔ)上進一步集成了完備的視頻接口、音頻接口、以太網(wǎng)接口、PCI-66 總線等片上外設(shè)。用戶可以方便地對音頻、視頻等各種復(fù)雜的運算進行高速處理,因此DM642 已經(jīng)廣泛的應(yīng)用于數(shù)字視頻服務(wù)器、多通道數(shù)字視頻錄像機、多通道數(shù)字視頻監(jiān)控等領(lǐng)域。
本系統(tǒng)配置了 4M 的Flash 和32M 的SDRAM,可以滿足一般應(yīng)用的需要。DM642 有三個視頻口,分別為VP0、VP1 和VP2。其中VP2 為單一功能的視頻口。VP0 和VP1 是與McBSP、McASP 復(fù)用引腳。DM642 上集成了一條I2C 總線,本系統(tǒng)中一共有4 個視頻輸入口,而一個I2C 中線能只能接兩個SAA7113 視解編碼器,因此需要在I2C 總線上做總線切換,分成I2C0 和I2C1,這樣就可以接4 個SAA7113 視解編碼器。I2C 總線切換電路見圖1。
整個系統(tǒng)是DM642 為核心,主要包括視頻模塊、存儲模塊、通信模塊以及其他外圍電路部分。視頻模塊由四塊編碼器芯片和一塊解碼器芯片組成,采用切換方式以支持四路復(fù)合視頻輸入和一路視頻輸出顯示;以存儲模塊通過DM642 的EMIF 接口擴展片外存儲器SDRAM 和FLASH,并通過CPLD 控制FLASH 片內(nèi)分頁寄存器的讀寫;通信模塊部分利用CPLD 控制并口傳輸模式,實現(xiàn)時序邏輯以及數(shù)據(jù)傳輸,使整個系統(tǒng)作為從設(shè)備接受主設(shè)備控制以完成特定的圖像處理運算等。整個系統(tǒng)的框圖。
2 軟件設(shè)計
本設(shè)計的驅(qū)動程序是按照TI 公司的DDK 驅(qū)動模型設(shè)計的,具有很好的復(fù)用性、移植性和借鑒性。DDK 是TI 公司為簡化驅(qū)動開發(fā)復(fù)雜度,而定義的一個標準的驅(qū)動模型和一套API 函數(shù)[6-7]。該驅(qū)動模型主要分為兩層:類驅(qū)動和微型驅(qū)動。其中類驅(qū)動通過每個外部設(shè)備獨有的微型驅(qū)動對設(shè)備進行操作。微型驅(qū)動通過控制外設(shè)的寄存器、內(nèi)存和中斷資源對外部設(shè)備實現(xiàn)控制。微型驅(qū)動程序必須將特定的外部設(shè)備有效地表示給類驅(qū)動。
根據(jù) DDK 驅(qū)動模型,本驅(qū)動程序設(shè)計主要包括三個部分: I2C 總線控制部分,就是I2C總線讀寫操作的實現(xiàn)部分;類驅(qū)動部分,主要是為應(yīng)用程序提供API 接口,它的設(shè)計在DDK模型里是通用的,可以不修改地直接采用,所以這里就不作具體介紹了;微型驅(qū)動部分是與硬件有關(guān)的,是驅(qū)動程序設(shè)計的重點。
2.1 I2C 總線控制驅(qū)動程序設(shè)計
該部分是實現(xiàn) DM642 通過I2C 總線對SAA7113H 和SAA7121H 的控制,使用了底層函數(shù)。在TI 的CSL(Ship Support Library)中都有,只要包含相應(yīng)的頭文件即可直接調(diào)用。如I2C配置結(jié)構(gòu)體(I2C_config)、I2C 寫數(shù)據(jù)函數(shù)(I2C_writeByte)、I2C 配置操作函數(shù)(I2C_RSETH)等。
要是實現(xiàn)對SAA7113H 和SAA7121H 的控制,就要先對其進行配置。
對 SAA7113H 進行配置:
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 進行配置:
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 多路視頻采集的驅(qū)動程序設(shè)計
本驅(qū)動程序是基于 DDK 驅(qū)動模型設(shè)計的,通過 DSP/BIOS 配置工具在DSP/BIOS 應(yīng)用程序中注冊并使用一個微型驅(qū)動,配置應(yīng)用程序使用該微型驅(qū)動。創(chuàng)建一個新的設(shè)備對象后,對其屬性主要設(shè)置設(shè)備號、設(shè)備參數(shù)指針、設(shè)備實例的驅(qū)動函數(shù)表以及該驅(qū)動函數(shù)表的類型。
FVID 模型是建立在GIO 模型之上的,并對GIO 模型進行了改進。典型的有FVID_create()、FVID_control()、FVID_alloc()、FVID_exchange()、FVID_free()函數(shù)。FVID 函數(shù)會在設(shè)備表中查找已注冊的微型驅(qū)動,并調(diào)用微型驅(qū)動函數(shù)完成對外部設(shè)備的操作。然后創(chuàng)建FVID 采集、顯示通道,配置 SAA7121, SAA7113,分配相應(yīng)的緩沖區(qū),對得到的視頻幀進行處理等操作。
本設(shè)計是對兩路視頻信號同時采集,通過三個任務(wù)來完成:兩個視頻采集任務(wù)任務(wù)、一個視頻輸出任務(wù)。任務(wù)間是通過SCOM 模塊進行通信的,SCOM 模塊管理SCOM 隊列對象。
每一個SCOM 隊列內(nèi)部使用一個隊列對象(QUE)和一個旗語對象(SEM)。在SCOM 隊列的結(jié)構(gòu)在SCOM 模塊中是私有的。應(yīng)用程序不應(yīng)該涉及到SCOM 隊列的對象。
視頻采集任務(wù)的程序:
void tskVideoCaptureVp1(){FVID_Frame *capFrameBuf;SCOM_Handle fromInput1toDIS,fromDIStoInput1;fromInput1toDIS = SCOM_open("IN1TODIS"); /*打開SCOM 模塊*/fromDIStoInput1 = SCOM_open("DISTOIN1");FVID_alloc(capChan, &capFrameBuf); /*申請一個空間*/while(1){SCOM_putMsg(fromInput1toDIS, (FVID_Frame *)capFrameBuf);//向隊列中寫消息SCOM_getMsg(fromDIStoInput1, SYS_FOREVER); //重隊列中讀消息FVID_exchange(capChan, &capFrameBuf);}
}
這是其中的一路視頻采集程序,通過同樣的方法可以寫出第二路的采集程序。視頻輸出的任務(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 */}
整個軟件設(shè)計的流程圖見:
3 系統(tǒng)調(diào)試
本系統(tǒng)是一個多路視頻采集系統(tǒng),通過巧妙的硬件設(shè)計和精簡的軟件設(shè)計,可以實時輸出各路圖像。以兩路為例,通過兩個CCD 攝像頭,分別接到四個視頻采集口中的兩個,然后通過把視頻輸出端口接到VGA 顯示器上。顯示器分左半邊顯示攝像頭A 的圖像,右半邊顯示攝像頭B 的圖像。實際效果圖見。
4 結(jié)論
本系統(tǒng)通過 I2C 總線上切換的方法完成了多路視頻采集系統(tǒng)的硬件設(shè)計,以 DDK 驅(qū)動模型做視頻驅(qū)動開發(fā),可提高驅(qū)動程序的可重用性和可移植性,簡化視頻驅(qū)動程序的開發(fā),從而極大地提高驅(qū)動程序的開發(fā)效率。實踐證明:基于 DDK 的視頻驅(qū)動程序運行穩(wěn)定,與應(yīng)用程序?qū)崿F(xiàn)了無縫連接,是一種高效可靠的開發(fā)方法。多路視頻采集系統(tǒng)成功研制為多路視頻實時處理系統(tǒng)的實現(xiàn)提供了軟硬件支持。
中國碩士論文網(wǎng)提供大量免費碩士畢業(yè)論文,如有業(yè)務(wù)需求請咨詢網(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 視頻采集處理系統(tǒng)硬件設(shè)計[J].微計算機信息,2007,11—2.
[4] 徐婉瑩,劉建軍,黃新生.基于CPLD 和DSP 的高速圖像采集技術(shù)研究[J].電子工程師,2004,30(6):48-50.
[5] 薛長松,楊國勝,李志強.基于DM642 的的雙CCD 同步運動研究[J].計算技術(shù)與自動化,2006, 25(4):24-27.
[6] T1 DSP/BIOS 用戶手冊與驅(qū)動開發(fā)[M].北京:清華大學出版社, 2007.
[7] 吳江,遲學芬,劉娜等.基于DDK 的音視頻編碼器驅(qū)動的設(shè)計[J].吉林大學學報(信息科學版),2007,25(3):246-250.
【基于DM642的多路視頻采集系統(tǒng)】相關(guān)文章:
基于FPGA的多路模擬量、數(shù)字量采集與處理系統(tǒng)03-18
基于PCI總線的雷達視頻采集方案03-19
基于USB接口的數(shù)據(jù)采集系統(tǒng)設(shè)計03-18
基于USB總線的高速數(shù)據(jù)采集系統(tǒng)03-26
基于Verilog HDL設(shè)計的自動數(shù)據(jù)采集系統(tǒng)03-21
基于ADSL傳輸?shù)木W(wǎng)絡(luò)視頻應(yīng)用系統(tǒng)03-18
基于DSP的USB口數(shù)據(jù)采集分析系統(tǒng)03-18