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