視頻監控系統的設計方案有很多種,但是市場產品的主流一般選擇兩種方案:一是基于CPU和專用的視頻編解碼ASIC芯片。該方案選擇以ARM為核心的CPU和專用媒體處理芯片搭建。優點是開發時間相對較短,但由于采用ASIC,靈活性較差,產品一旦定型,很難更改。二是采用面向媒體處理的專用DSP。其開發時間不長,優點是由于算法是軟件代碼,所以可以不斷對產品性能進行升級,重復開發成本較低。由全球最大的DSP制造商德州儀器(TI)推出的TMS320DM642(以下簡稱DM642)作為一款高性價比、專用于多媒體應用的DSP,已被國內外視頻應用從業者廣泛接受和采用。本文較詳細地介紹DM642的主要特性和系統應用開發技術,并給出基于DM642的視頻監控應用實例。 DM642多媒體處理器 DM642是TI 公司專門為多媒體應用而開發的DSP,采用TI 的第二代高級超長指令字結構(VelociTI),使得在一個指令周期能夠并行處理多條指令。它可在600MHz時鐘頻率下工作,每個指令周期可并行8條32bit指令,因此,可達到4800MIPS的峰值計算速度。DM642采用兩級緩存結構:第一級包括相互獨立的LIP(16kB)和LID (16kB),只能作為高速緩存使用;第二級L2(256kB)是一個統一的程序/數據空間,可整體作為SRAM映射到存儲空間,也可整體作為第二級Cache,或是二者按比例的一種組合來使用。DM642具有64個獨立通道的EDMA(擴展的直接存儲器訪問)控制器,負責片內L2與其他外設之間的數據傳輸。容量較大的兩級緩存和EDMA 通道是DM642高性能的體現之一,若能合理使用和管理,將能大幅度提高程序的運行性能。其結構如圖1所示。 此外DM642具有豐富的外圍設備接口,包括3個可配置的雙通道視頻端口video port,其中每個videoport又分成A和B兩個通道,A/B通道可分別處理一路視頻采集,因此DM642最多可以處理6路視頻采集數據(不帶音頻)。如果將video port配置成用于視頻輸出,則只能在A通道輸出,B通道不可以,因此DM642最多可支持3路視頻輸出(不帶音頻)。如果同時處理音頻,每一個video port可以處理兩路立體聲。另外還包括64bit的外部存儲器接口(EMIF)、10/100Mbit/s以太網MAC和多通道音頻串行端口(McASP)以及66MHz32bit的PCI接口。 DM642的基本系統由DM642和外擴的存儲器以及外設組成,而外擴的存儲器和外設均通過DM642的外部存儲器接口(EMIF)進行擴展。DM642基本系統所必須的外擴資源包括: (1)SDRAM(4M64bit),用于存放程序和緩存數字視頻/ 音頻數據; (2)FLASH(4M8bit),用于存放固化程序,以便進行ROM引導; (3)UART(288bit),擴展2個異步串口(RS232/RS422/RS485); (4)板上寄存器(n×8bit),由若干個8位狀態/控制寄存器組成; (5)硬盤接口(2816bit),用于本地大容量存儲接口。 由此可見,DM642是一個功能強大的多媒體處理器,可用來實現高速完成大數據量的數字視頻/音頻編解碼處理,特別適合于開發多媒體通信設備。是目前構造數字多媒體應用的理想平臺。 DM642的應用開發技術 軟件開發工具 由TI 公司發布的DSP集成開發環境CCS(CodeComposer Studio),是一個基于Windows的DSP開發平臺,是目前最優秀、最流行的DSP開發軟件之一。CCS集成可視化的編輯界面可直接編寫C、匯編語言,除了擴展了基本的代碼產生工具,CCS還集成了C編譯器,C優化器、匯編器、匯編優化器和連接器等。并支持RTDX(Real Time Data Exchange)技術,可在不中斷目標系統運行的情況下,實現DSP與其他應用程序(OLE)的數據交換。此外,CCS的斷點工具、探針工具和分析工具使得開發者的一切開發過程都是在CCS這個集成環境下進行,包括項目的建立、源程序的編輯以及程序的編譯和調試。 CCS內部還包含了實時操作系統(RTOS)DSP/BIOS,主要是為多任務實時調度和同步以及主機/目標系統通信和實時監測的應用而設計的。DSP/BIOS具有實時操作系統的很多功能,如任務的調度管理、任務間的同步和通信、內存管理、實時時鐘管理、中斷服務管理、外設驅動管理等。使用DSP/BIOS工具可以幫助開發人員更加容易地控制DSP的硬件資源,更加靈活地協調各個軟件模塊的執行,加快軟件開發和調試速度。 DM642的片內內存 DM642有256kbit/s的片內內存,對于直接處理圖像數據還是很有限的。如MPEG-4算法一般至少要存儲當前待編碼幀數據和上一幀的重建幀數據,一幀YUV4∶2∶0格式CIF圖像的數據約有150kB,256kB,內存對于CIF 圖像就不夠了。對于DM642,數據如果放在板卡上的片外內存中, 數據的處理速度會大大降低,這是因為DSP對于片外數據的運算要慢得多。我們一般采取的方案是對圖像以宏塊為單位處理,只將運算時該宏塊需要的數據導入片內, 其他數據留在片外,這樣的數據量就足夠放在片內了。 充分利用DM642的DMA通道 DSP直接訪問內存會造成等待, 浪費大量不必要的時鐘周期。幸好DM642有強大的DMA能力,因此我們可以在處理當前宏塊數據時, 將下一個宏塊的數據通過DMA倒入片內,當處理完當前宏塊的時候,下一個宏塊的數據就已經準備好了,這樣可以極大提高DSP的利用率。但具體實現的時候需要對DMA啟動的時機進行仔細的考慮,在數據訪問不沖突的情況下盡量提前。 DM642的兩級Cache L1和L2組成了DM642的兩級緩存。L1距離DSP核最近,數據訪問速度最快,只能作為不能尋址的Cache使用,由相互獨立的LIP和LID組成;LIPCache大小為16kB,直接映射,每行大小為32B;LID Cache大小16kB,2路映射,每行大小為64B。L2是L1和外存儲器的中間層,容量較大,有256kbit/s,是統一的存儲空間,即可同時存儲程序和數據。L2可作為SRAM映射到存儲空間使用,也可整體作為第二級Cache,或是作為二者按比例的一種組合混合使用。L2作為SRAM使用時,即是DM642的片內內存,從整個系統地址空間的起始地址0x00000000開始編址,當作為Cache使用時,4路映射,每行大小為128B,容量在32-56kB 之間。在實際開發過程中要充分利用Cache,總的原則是將盡量多的關鍵數據分配在片內,Cache越大越好,對于不同的應用需要用不同的配置。最優配置需要在開發中根據經驗和實際的測試結果進行選擇。 視頻監控實例 下面介紹一個基于DM642的網絡視頻監控系統,如圖2所示。需要以下硬件:DM642、射像頭、Philips公司的視頻解碼芯片SA A 7115、Intel公司的LXT971ALC芯片(PHY)以及外圍的RJ45接口、SDRAM和Flash存儲器。由攝像頭采集的模擬視頻信號經SAA7115模數轉換后,形成YUV4∶2∶0格式的數字視頻信號,從DM642視頻端口輸入;由基于DM642的軟件編碼器編碼壓縮處理(軟件編碼器可采用H.263,H.264,MPEG-2,MPEG-4和M-JPEG等各種現有的或將來的視頻編碼標準),編碼壓縮生成的視頻碼流數據,打包后通過RJ45口經以太網傳送到遠端目的地,完成網絡視頻通信和監控。經DM642的MAC接口,在網絡傳輸的同時,視頻信號可由視頻端口2經視頻編碼芯片數模轉換后輸出模擬視頻信號到監視器進行本地回顯。 通過DM642的EMIF接口,可連接SDRAM和Flash存儲器(SDRAM擴展了系統的可用存儲空間,系統的初始化代碼和配置信息則存儲到Flash中)。此外DM642的視頻端口通過視頻解碼芯片SAA7115能很方便地實現和攝像頭的無縫連接,視頻端口0和1可分別獲取兩路視頻輸入,根據應用需要,可靈活地設置單路或多路視頻輸入。 結束語 由上述介紹可以看到,DM642是一個強大的多媒體處理器,是構成多媒體通信系統的良好的平臺。它的豐富的外圍接口使得它近乎是一個多媒體嵌入式系統的單芯片硬件平臺;它的完全可編程性, 又可以使得它能夠兼容正在發展的各種多媒體信號處理標準, 構成通用的軟件平臺。這些特性必將使得它得到廣泛的應用。 |