基于TMS320 DM642的多路視頻處理
引言
但是隨著視頻監(jiān)控市場的飛速擴(kuò)大,目前市面上的一些視頻監(jiān)控系統(tǒng)缺點逐漸顯現(xiàn),包括成本高昂、路數(shù)少、實時性差以及畫質(zhì)不佳,且由于不同場合監(jiān)控需求不一樣使得用戶對監(jiān)控產(chǎn)品的靈活性和針對性提出了更高的要求。本設(shè)計采用TI公司的TMS320DM642多媒體處理芯片作為主控芯片,將成本控制在可行范圍內(nèi),并且充分利用芯片內(nèi)核的高速處理能力保證監(jiān)控系統(tǒng)實時性,是一種兼顧成本及監(jiān)控質(zhì)量的好方法。
TMS320DM642(以下簡稱DM642)是TI公司的一款專門為數(shù)字媒體應(yīng)用設(shè)計開發(fā)的32-bit定點DSP芯片,具備高性能的C64x數(shù)字信號處理器內(nèi)核外且集成了豐富的外設(shè)資源,如可配置的音視頻接口、以太網(wǎng)MAC控制器、JATG仿真器接口等。
圖1為整個系統(tǒng)的結(jié)構(gòu)框圖。以DM642為核心,主要包括視頻模塊、存儲模塊、通信模塊以及其他外圍電路部分。視頻模塊由四塊編碼器芯片和一塊解碼器芯片組成,采用切換方式以支持四路復(fù)合視頻輸入和一路視頻輸出顯示;存儲模塊通過DM642的EMIF接口擴(kuò)展片外存儲器SDRAM和FLASH,并通過CPLD控制FLASH片內(nèi)分頁寄存器的讀寫;通信模塊部分利用CPLD控制并口傳輸模式,實現(xiàn)時序邏輯以及數(shù)據(jù)傳輸,使整個系統(tǒng)作為從設(shè)備接受主設(shè)備控制以完成特定的圖像處理運算等。
系統(tǒng)硬件架構(gòu)
電源管理模塊
DM642采取雙電源供電方式:CPU內(nèi)核電壓+1.4V,電流793mA;外圍I/O電壓+3.3V,電流165mA。這兩個獨立電壓在供電時需要嚴(yán)格按照順序進(jìn)行,保證內(nèi)核電源先上電,最晚也應(yīng)當(dāng)與I/O電源同時上電,避免對芯片造成危害。
電源芯片,采用TI公司的TPS54310,它利用電路板上5V電源驅(qū)動兩個線性穩(wěn)壓模塊,經(jīng)過兩路電壓轉(zhuǎn)換生成所需的+1.4V及+3.3V電壓。
上電過程中,在內(nèi)核電壓和I/O電源達(dá)到要求的電壓之前需確保系統(tǒng)時鐘處于復(fù)位狀態(tài),以避免產(chǎn)生不受控制的狀態(tài)。因此采用TI公司的電源檢測芯片TPS3823-33,它能夠?qū)ο到y(tǒng)使用最多 的+3.3V電壓進(jìn)行監(jiān)測,并且允許系統(tǒng)中各芯片在任意時刻通過復(fù)位來調(diào)整工作狀態(tài)。
時鐘電路
為了降低片外時鐘頻率,提高系統(tǒng)穩(wěn)定性,在設(shè)計DSP系統(tǒng)時應(yīng)盡量使用DSP片內(nèi)鎖相環(huán)(PLL)。在本設(shè)計中選用外部50MHz的時鐘源,經(jīng)過PLL進(jìn)行12倍頻后得到CPU所需的600MHz主頻。在本設(shè)計中,采用1/4CPU時鐘為ECLKIN提供150MHz的時鐘,并通過ECLKOUT1引腳將時鐘提供給SDRAM的CLK引腳。
整個系統(tǒng)中使用到的時鐘頻率還有視頻編解碼芯片的14.31818MHz時鐘,它與DSP主時鐘一樣都采用外部晶振。
外部存儲器
本系統(tǒng)主要用于視頻圖像處理,在處理過程中會產(chǎn)生海量數(shù)據(jù),而DM642片內(nèi)僅有256KB的RAM,所以必須擴(kuò)展大容量的外部存儲器才能夠滿足數(shù)據(jù)處理的需要。
本設(shè)計采用兩片Hynix公司的HY57V283220T(4M×32bit)SDRAM芯片構(gòu)成64bit外部RAM空間;采用一片AM29LV033C(4M×8bit)FLASH芯片構(gòu)成外部ROM空間。將上述兩片SDRAM芯片并聯(lián)構(gòu)成64-bit位寬、32MB大小的存儲空間映射到配置為同步動態(tài)存儲器接口、64bit位寬的CE0子空間。
[!--empirenews.page--]
視頻通路模塊
本設(shè)計中將DM642的3個視頻端口VP0VP1VP2均設(shè)置為8-bit BT.656模式,其中VP0和VP1采用單通道方式,將通道A用于視頻采集;VP2采用雙通道方式,通道A和B均用于視頻采集。因此,最多可以同時采集4路模擬視頻信號。在BT.656視頻捕獲模式下,F(xiàn)IFO空間總共為2560KB且如下分配:1個1280Byte的FIFO專用于存儲Y采樣數(shù)據(jù);2個640Byte的FIFO分別用于存儲Cb和Cr數(shù)據(jù)。
采用4片飛利浦公司的SAA7113解碼芯片來實現(xiàn)4路模擬視頻輸入的轉(zhuǎn)換。SAA7113支持6路復(fù)合視頻信號CVBS或1路S端子(S-Video)輸入,輸出為帶離散同步信號的8bit4:2:2YCbCr格式或者帶內(nèi)嵌同步信號的8bitBT.656格式的數(shù)字視頻信號。
在視頻回放部分,編碼器選用1片飛利浦公司的SAA7121,其可將數(shù)字亮色信號(YUV)或數(shù)字RGB信號等數(shù)據(jù)轉(zhuǎn)換成CVBS,S-VIDEO,RGB等模擬信號輸出,支持PAL/NTSC制式,并且支持VGA及高清晰HDTV輸出。編解碼器與DM642的引腳連接圖如圖2所示。
DM642中的I2C接口不支持高速模塊,因此在本設(shè)計中所使用的I2C總線速率最高為400kbit/s。本設(shè)計中采用了TI的4bit 2選1切換器SN74CBT3257使DM642可以每次選擇接收一組I2C數(shù)據(jù)。由于SAA7113只能配置兩個不同的設(shè)備地址,一條I2C總線中不能同時連接4個SAA7113,因此須將I2C總線切分成IIC0和IIC1。具體連接方式見圖3。
軟件設(shè)計
設(shè)置DM642內(nèi)部模塊的配置參數(shù),包括VPort視頻端口參數(shù)配置,SDRAM及FLASH寄存器配置;I2C總線參數(shù)配置;編解碼芯片內(nèi)部寄存器配置等。
系統(tǒng)上電初始化,DM642通過內(nèi)部軟件模擬I2C總線時序,配置好SAA7113內(nèi)部寄存器,設(shè)置其工作方式;之后DM642向CPLD發(fā)送采集指令,雙方通過HOLD、HOLDA握手信號,實現(xiàn)總線控制交接,此時CPLD獲得總線控制權(quán),然后打開SAA7113的輸出,對采集到的視頻數(shù)據(jù)進(jìn)行寫控制;當(dāng)一幀視頻數(shù)據(jù)寫入SDRAM幀緩存器后,CPLD關(guān)閉SAA7113視頻輸出,放棄總線控制權(quán),并發(fā)送中斷信號給DM642;DM642重新獲得控制權(quán)后,對采集到的視頻數(shù)據(jù)使用特定算法進(jìn)行圖像處理,并將處理后的視頻數(shù)據(jù)緩存在SDRAM中,同時配置SAA7121內(nèi)部寄存器,設(shè)置其工作方式,此時將SDRAM中緩存的圖像數(shù)據(jù)送入SAA7121進(jìn)行D/A轉(zhuǎn)換,并經(jīng)過并口送VGA顯示器進(jìn)行圖像顯示;DM642在圖像處理完畢后即重新發(fā)出開始采集命令,進(jìn)行下一幀數(shù)據(jù)的采集。