一種視頻處理系統設計與實現
1 引言
本文引用地址:http://www.104case.com/article/149853.htm在視頻處理領域,由于處理的數據量大,算法復雜度高,使得處理的實時性成為難題。如果使用專門的視頻算法器件,在保證實時性的同時卻使系統的靈活性大大降低。tms320dm642是TI公司C6000系列DSP總最新的定點DSP,其核心是C6416型高性能數字信號處理器,具有極強的處理性能,高度的靈活性和可編程性,同時外圍集成了非常完整的音頻、視頻和網絡通信等設備及接口,特別適用于機器視覺、醫學成像、網絡視頻監控、數字廣播以及基于數字視頻/圖像處理的消費類電子產品等高速DSP應用領域。筆者針對市場客戶的需求,設計并實現了一款以TVP5150為視頻輸入解碼器,以PCM1801為音頻輸入采集電路,以TMS320DM642型DSP為核心處理器的多路視頻采集兼壓縮處理PCI板卡,并將其應用于構建高穩定性、高魯棒性和多媒體數字監控系統,取得了較好的社會效益和經濟效益。
2 系統設計方案
2.1 系統的硬件結構
圖1給出系統的結構框圖。以DM642為核心,DM642的最高時鐘頻率為720MHz,最大處理能力為5760MIPS。DM642基于C64x內核,采用了增強型超長指令字結構,集成了8個獨立的功能單元(6個32位的算術邏輯單元和2個32位的乘法單元)和64個32位的通用寄存器,在一個周期內可以完成4個16位的乘累加運算或者8個8位的乘累加運算。該芯片的片上外設也是相當的豐富,包括時鐘高達133MB可與SDRAM、FLASH等外部存儲芯片實現無縫鏈接的外圍存儲器接口(EMIF總線);三個可配置的視頻接口,同時支持三路視頻輸入或者輸出,非常適合數字圖像和視頻處理;一個10/100Mit/s的以太網接口;十六個通用輸入輸出口GPIO,以及I2C、PCI和HPI等眾多協議接口。
2.2 系統電源設計
DSP(digital signal processor)是一種獨特的微處理器,是以數字信號來處理大量信息的器件。其工作原理是接收模擬信號,轉換為0或1的數字信號。再對數字信號進行修改、刪除、強化,并在其他系統芯片中把數字數據解譯回模擬數據或實際環境格式。它不僅具有可編程性,而且其實時運行速度可達每秒數以千萬條復雜指令程序,遠遠超過通用微處理器,是數字化電子世界中日益重要的電腦芯片。它的強大數據處理能力和高運行速度,是最值得稱道的兩大特色。
DSP系統電源設計模塊是關鍵,高精度的供電才能保證系統正常工作。系統采用5 V電源驅動2個MOSFET的DC—DC調整器(TPS54310)分別供給DSP的核心電壓CVDD(1.4V)和外圍電壓DVDD(3.3 V)。在3.3 V和1.4 V電源之間連接肖特基二極管,保證DM642內核和外部端口同時供電。TI公司的TPS543lO的輸出精度是1%,完全滿足DSP工作要求。
2.3 視頻輸入與輸出
DM642集成有3個視頻(Video Port,VP)口,每個視頻口是由20 bit數據線、2個時鐘信號VPxCLK0(輸入)和VPx-CLKl(輸入/輸出)、3個控制信號VPxCTL0、VPxCTLl和VPx-CTL2組成。時鐘信號作為視頻源的時鐘信號輸入/輸出,控制信號作為視頻源的同步信號輸入/輸出(行同步、幀同步、場標志,視頻采集使能等)。每個視頻口被分為上(B)、下(A)2個通道,VP0的A通道與McBSPO復用,VPl的A通道與McB—SPl復用,VP0和VPl的B通道與McASP復用,VP2則為單功能引腳。每個視頻口可被配置為視頻輸入口或視頻輸出口,但是上(B)、下(A)2個通道只能同時被配置為輸入口,或同時被配置為輸出口,不能一個通道配置為輸入口,另一個通道配置為輸出口。
系統將VP0和VPl配置成為單通道視頻輸入和McASP口,VP2配置成為單通路的視頻輸出口。VPO與VPl配置為單通道視頻輸入口時,VPxCLK0作為視頻源的輸入時鐘,VPxCLK1未用。而VPxCTL0、VPxCTLl和VPxCTL2則分別作為視頻源中的時基碼控制。當CAPEN信號無效或在EAV和SAV時基碼之間時,將不對視頻數據流進行采樣。BT.656視頻數據流采集的起始、水平同步、垂直同步等,受輸入信號CAPEN和視頻通道控制寄存器VCxCTL(x=A、B)中的VCEN、EXC、HRST、VRST、FLDD等控制位組合控制。當配置為單通道視頻輸出口時,VPxCLK1作為視頻源輸出時鐘,VPxCLK0作為輸入時鐘。而VPxCTL0、VPxCTLl和VPxCTL2分別作為輸出視頻的HSYNC/HBLNK/AVID/FLD、VSYNC/VBLNK/CSYNC/FLD、CBLKN/FLD。3個VP口均作為8位視頻接口,使用lO位數據總線中的高8位,即VPxD[9:2]。系統的視頻解碼和視頻編碼器分別選用Philips公司的SAA7l13H和SAA7105H,圖2給出視頻解碼和DM642的連接圖。圖3給出視頻編碼和DM642的連接圖。
當SAA7105H工作在VGA輸出時,其工作時鐘的上升沿和下降沿都要接收數據,圖3中VP2與SAA7105H的連接方式,只用到VP2的8位數據線,因此VP2在每個時鐘周期只有在上升沿輸出8位數據,無法滿足SAA7105H的工作要求。
2.4 地址空間映射
DM642的程序/數據空間以字節為單位進行統一編址,整個尋址空間為4 G字節。其片上存儲器,片上外設及外部存儲器接口(EMIF)均映射到此4 G字節空間中。
DM642的CEO空間被配置為64 bit SDRAM接口,分配給外擴的SDRAM使用。SDRAM的工作時鐘由DM642的ECLKOUTl提供,其可由軟件配置為EMIF的ECLKIN或CPU時鐘/4、或CPU時鐘/6,最高為133 MHz。一般情況下,配置為ECLKIN,即100 MHz。SDRAM在子空間的具體定位為:Ox8000 0000~Ox81FF FFFF。
DM642的CEl空間被配置為8Mx8 bit的Flash,在CEl子空間占據的具體空間定位為0x9000 0000~0x9007 FFFF。
DM642外部地址總線只有A[22:3],總共20根,所以CEl子空間最大的尋址范圍為lMx8 bit。系統中CEl子空間除了分配給Flash以外,還分配給狀態,控制寄存器、UARTA、UARTB等資源使用,其中Flash只占據CEl子空間的前一半的尋址空間,即最大的可尋址范圍為512Kx8 bit,而Flash的設計容量為8 Mx8 bit,所以為尋址到Flash所有的地址空間,采用分頁技術來實現對Flash的訪問。
2.5 I2C總線
I2C(Inter-Integrated Circuit)總線是由PHILIPS公司開發的兩線式串行總線,用于連接微控制器及其外圍設備。是微電子通信控制領域廣泛采用的一種總線標準。它是同步通信的一種特殊形式,具有接口線少,控制方式簡單,器件封裝形式小,通信速率較高等優點。由于連接到I2C 總線的器件有不同種類的工藝(CMOS、NMOS、雙極性),邏輯0(低)和邏輯1(高)的電平不是固定的,它由電源VCC的相關電平決定,每傳輸一個數據位就產生一個時鐘脈沖。
I2C總線由數據線SDA和時鐘SCL構成串行總線,可發送和接收數據,在CPU與被控IC之間、IC與IC之間雙向傳送。在數據傳送過程中共有3種信號,分別是開始信號、結束信號和應答信號。其中,開始信號:SCL為高電平時,SDA由高電平向低電平跳變,開始傳送數據;結束信號:SCL為低電平時,SDA由低電平向高電平跳變,結束傳送數據;應答信號:接收數據的IC在接收到8 bit數據后,向發送數據的IC發出特定的低電平脈沖。
DM642集成有一條I2C總線。DM642為總線的主設備。系統用I2C總線連接了以下從設備:2路視頻解碼器SAA7113H的控制口、1路視頻編碼器SAA7105H的控制口和1路實時時鐘RTC。每個I2C總線的從設備均對應一個從設備地址,I2C總線以此從設備地址區分所訪問的是哪個從設備。DM642通過I2C總線配置上述器件的寄存器。
2.6 網絡接口
DM642的網絡接口由EMAC與MDIO兩部分組成的。其主要功能有:符合IEEE802.3協議;支持傳媒無關接口(MII);8個獨立的發送與接收通路;同步的10/100 Mbit的數據操作;廣播及多幀的傳送。
系統選用LXT971ALC作為10/100Base一TX以太網收發器。LXT971ALC的MII接口與DM642的MII接口對接。DM642的MII不支持TXER,它通過求反發送幀CRC來指出網絡錯誤,所以LXT971ALC上的TXER引腳直接接為無效。系統只采用10/lOOBase-TX方式,信號經Hll02 1:1變壓器變換成TX+、TX一、RX+和RX一信號,連接到RJ45連接器上。RJ45連接器選用406549一l,其上帶2個LED指示燈,綠色LED,用作指示連接狀態;黃色LED正常情況下用于指示數據傳輸。
3 系統調試
3.1 視頻通道的驅動
系統中視頻解碼通道使用SAA7113,編碼通道使用SAA7105H。這2個器件需要經過寄存器配置才能正常工作,因為寄存器數量眾多,直接逐個配置寄存器相當復雜。系統開發了基于DSP/BIOS的應用程序,可以調用FWID API函數,實現對視頻通道的驅動。以下是幾個接口函數的使用說明:
(1)初始化工作 FVID_croat(name,mode,*status,
optArgs,*attm)參數說明:String name:device driver的名字,該device driver在DSP/BIOS中定義;Int mode:指定設備的打開模式為輸入/輸出;Int*status:該參數是application送給mini—driver的一個狀態指針,由mini—dIiver來返回狀態的;PtroptArgs:用于初始化FVID channel的具體參數,用結構體的形式打包,并將指向該結構體的指針傳送給mini—driver進行處理;FVID_Attrs *attrs:FVID_Attrs結構參數為空,表示FVID_alloc,FVID_free,FVID_exchange calls為非block形式,無論成功與否,立刻返回。
(2)發送控制命令到mini—driver FVID_control(disChan,VPORT_CMD_START, NULL)參數說明:FVID_HandlevidChan:fvid通道句柄;Int cmd:cmd命令;Ptr args:cmd命令附帶的信息。該函數發送一個控制命令給mini—dTiver,將由mini—driver做相應的響應,在這里通知vport端口開始工作。
(3)給VP口分配緩沖區FVID_alloc(fvidChan,bufp)參數說明:FVID_handle fvidChan:fvid通道句柄;Ptr bafp:分配的緩沖區指針。該函數從mini—ditver獲取緩沖區指針。
(4)FVID_exchange(fvidChan,bufp) 參數說明:FVID_handle fvidChan:fvid通道句柄;Ptr butp:交換的緩沖區指針。該函數將轉換好的圖像數據發送給mini—driver處理,并傳回空緩沖區指針,FVID_exchange函數相當于順序執行FVID_free和FVID_alloc函數。利用FVID的API函數可方便配置和驅動視頻通道,實現視頻的采集和輸出。
3.2 VGA輸出
VGA(VideoGraphic Array)接口,即視頻圖形陣列,也叫DSub接口。VGA接口采用非對稱分布的15針連接方式,其工作原理是將顯存內以數字格式存儲的圖像信號在RAMDAC里經過模擬調制成模擬高頻信號,然后再輸出到顯示設備成像。視頻編碼器SAA7105H支持VGA輸出,SAA7105H被配置為VGA輸出時,送輸出緩沖區的數據必須為RGB格式,而非YUV4:2:2。用戶可以自行編寫相應的轉換函數,或者調用TI img64.lib庫中的IMG_ycbcr422p_rgb565函數實現視頻格式的轉換。
3.3 程序從Flash的引導
在系統上調試程序時,利用仿真器把程序下載到SDRAM內執行。當程序調試完畢應用時,應該把程序燒寫到外部Flash里,實現系統每次上電后程序從Flash引導加載自動運行,省去每次利用仿真器下載程序。
DM642是以ROM方式引導系統的,當DSP上電或復位時,內核處于復位狀態,并自動以ROM的讀寫時序從Flash的第0頁起始地址開始復制lK字節的代碼到DSP的片內內存起始地址為O的地址空間。然后釋放CPU,使其從0地址開始運行程序。
Flash燒寫根據不同的硬件設計,燒寫步驟略有不同,但基本過程相同。系統Flash的燒寫過程:①把引導程序文件boot.asm添加到要燒寫的工程中,在BIOS中添加BOOT段,修改相應的CMD文件,編譯原工程生成新的。out文件;②使用hex6x工具把生成的COFF格式的。out文件轉化為。hex文件;③用FlashBurn建立。ccd文件;④用FlashBurn打開建立的。ccd文件,先擦除Flash,然后燒寫Flash。
按照上述步驟燒寫程序到Flash,在系統上電后程序將自動執行。應該注意的是,燒寫程序后的系統仿真環境將難以進去,解決的辦法是一邊反復按復位鍵,一邊打開仿真環境則可進去。
4 結語
系統研究并實現了一個通用的基于DM642的視頻處理系統。采用了針對多媒體應用開發的專用媒體處理芯片DM642,該芯片配有豐富的外設接口,減小了系統硬件設計的復雜度,提高了系統的性價比;通過外接的SDRAM編程實現MPEG一2、MPEG-4、H.264等多種視頻壓縮編解碼算法,靈活性大,實用性強,優于專用的視頻編解碼系統;由于DM642的高速運算能力,實時性強也是系統的一大優點。
評論