摘要:介紹了一種高速視頻采集壓縮系統(tǒng)的實現(xiàn)。該方案能夠采集camera link 攝像機視頻信號或制式為PAL的視頻信號;對采樣后的數(shù)字視頻數(shù)據(jù)用四個DSP(TI C6416)進行實時壓縮處理并存儲記錄。數(shù)據(jù)壓縮采用視頻壓縮標準MPEG-2;處理速度達到75 fps(720×576灰度圖像)。
關鍵詞:MPEG-2; 數(shù)字信號處理器; cache優(yōu)化
中圖分類號:TP391文獻標志碼:A
文章編號:1001-3695(2007)08-0236-03
MPEG-2 標準制定于1994年,是建立在MPEG1之上的音視頻編/解碼標準。其設計目標是實現(xiàn)高級工業(yè)標準的圖像質(zhì)量以及更高的傳輸率。它主要應用在沒有色度、畸變要求場合的高質(zhì)量視頻,數(shù)據(jù)速率為1.1~20 Mbps。MPEG-2能夠提供廣播級的視像和CD級的音質(zhì)。它不僅能錄制電視節(jié)目,而且還是為錄制高清晰度、高質(zhì)量的動態(tài)圖像而開發(fā)的,能夠存儲比MPEG1清晰度更高的動態(tài)圖像。除了作為DVD的指定標準外,MPEG-2還可用于為數(shù)字有線電視分配、通過ATM的網(wǎng)絡數(shù)據(jù)庫業(yè)務、數(shù)字VTR應用以及衛(wèi)星和地面數(shù)字廣播分配等提供廣播級的數(shù)字視頻。
MPEG-2壓縮算法的運算量較大,一般的PC機每秒只能壓縮CIF圖像(352×288)40幀左右。在記錄高速運動物體(如子彈射出的瞬間)的運動軌跡時,需要每秒采集壓縮盡可能多的幀數(shù),顯然PC機難以滿足要求。TI的C6416 是目前運算速度最快的DSP,適合進行各種數(shù)字信號處理。在該系統(tǒng)中,采用了本文已經(jīng)研制成功的DSP板,該板上有四個TI C6416的DSP,每個DSP的工作頻率為600 MHz。經(jīng)過軟件算法和數(shù)據(jù)通路的優(yōu)化,能夠同時采集、壓縮和記錄分辨率為720×576的灰度圖像達75 fps。
1高速視頻采集壓縮系統(tǒng)設計
1.1系統(tǒng)組成
整個系統(tǒng)由CPCI工控機、視頻采集板和DSP處理板組成。系統(tǒng)框圖如圖1所示。
1)CPCI工控機它運行主控程序控制各個DSP的運行,讀取DSP板上壓縮后的數(shù)據(jù)存入硬盤。
2)視頻采集板它將采集到的視頻數(shù)據(jù)轉(zhuǎn)換成一定格式,通過CPCI的J4總線(注:J4在CPCI協(xié)議中是可以自定義的,在這里使用自定義的J4規(guī)范)發(fā)送到DSP處理板。
3)DSP處理板它接收J4總線上的數(shù)據(jù),將其壓縮成MPEG-2格式存入板上外存并通知主控程序讀取。
該系統(tǒng)具有良好的擴展性和靈活性,即接收不同格式的視頻數(shù)據(jù)時只需更換視頻采集板,其他部分不需改變。該系統(tǒng)實現(xiàn)了兩種視頻采集板:可以接收camera link 攝像機視頻信號;可以接收PAL制式的視頻信號。如果需要采用不同的視頻壓縮算法,只要修改DSP上的程序,無須改變硬件的體系結構。
1.2數(shù)據(jù)接收邏輯
由于視頻采集板上的緩存有限,不可能緩存一幀的數(shù)據(jù)再發(fā)送給DSP板。在采集板上每次只緩存16條線的圖像數(shù)據(jù),然后前面加上數(shù)據(jù)頭發(fā)往J4總線。數(shù)據(jù)頭用來作幀同步,表明這16條線是否為一幀的開始。
DSP板邏輯結構如圖2所示。CPLD負責控制J4總線與一級FIFO之間的數(shù)據(jù)傳輸。FPGA控制將數(shù)據(jù)輪發(fā)給四個二級FIFO中的一個。四個DSP分別從各自對應的二級FIFO取數(shù)進行計算,每個DSP各自有256 MB片外存儲器。
1)CPLD控制邏輯
a)CPLD檢測J4總線上的DATAENB#是否有效。如有效,表示J4總線上有數(shù)據(jù)包到來(1個數(shù)據(jù)包是數(shù)據(jù)頭加16條線圖像數(shù)據(jù));否則繼續(xù)查詢。
b)CPLD檢測數(shù)據(jù)頭,查看該數(shù)據(jù)包是否為一幀的開始。如果是,控制一級FIFO接收數(shù)據(jù);否則跳到a)。
c)接收完一個數(shù)據(jù)包,通知FPGA。
d)跳到a)接收下一個數(shù)據(jù)包。該幀以后的數(shù)據(jù)包不需要再執(zhí)行b)(即每幀第一個數(shù)據(jù)包才執(zhí)行b))。
2)FPGA控制邏輯
a)FPGA接收到CPLD傳來的觸發(fā)信號,控制一級FIFO輸出數(shù)據(jù),第一個二級FIFO接收數(shù)據(jù)。
b)傳完一個數(shù)據(jù)包時,F(xiàn)PGA往第一個DSP發(fā)送中斷(DSP程序能接收該中斷,并用DMA將二級FIFO中的數(shù)據(jù)傳輸?shù)皆揇SP的片外存儲器)。當接收數(shù)據(jù)量累計達到一個GOP時,執(zhí)行下一步;否則跳轉(zhuǎn)到a)。
c)FPGA切換狀態(tài),以后往第二個二級FIFO輸入數(shù)據(jù)。接下來的步驟同a)。第三、四個二級FIFO依此類推。
1.3DSP板處理流程
DSP板上有四個DSP芯片。為了充分利用四個DSP的處理能力,需要讓這四個DSP盡可能地并行工作。MPEG-2壓縮算法由于利用了運動補償,相鄰幀是相關的,但各個幀組(group of picture,GOP)之間是不相關的。因此,讓每個DSP壓縮一個GOP,即第一個DSP接收一個GOP數(shù)據(jù)后,第二個DSP開始接收下一個GOP數(shù)據(jù),此時第一個DSP已開始運行壓縮程序。依此類推可以讓四個DSP流水線工作,如圖3所示。每個DSP壓縮完一個GOP即可以準備接收下一輪GOP數(shù)據(jù)。主控程序則負責按順序讀取四個DSP產(chǎn)生的壓縮數(shù)據(jù)并寫入硬盤。
最理想的狀態(tài)是壓縮時間等于接收時間的三倍。這樣DSP壓縮完一個GOP無須等待,即可以馬上接收下一個GOP,從而避免流水級產(chǎn)生內(nèi)部碎片。但實際上,壓縮時間與視頻的運動大小和細節(jié)多少有關,所以不可能正好等于接收時間的三倍,此時需要插入等待進行同步。如圖3中虛線處所示,第一個DSP壓縮完第一個GOP后,需要等待第四個DSP接收完第四個GOP后,第一個DSP才能開始接收第五個GOP;其他DSP依此類推。
1.4主控程序流程
程序的控制流程如圖4所示。由于整個程序的控制需要主控程序與DSP程序的配合,這里將主控程序與DSP程序的控制流程列在一起。其中:DSP程序只列出了在第一個DSP上運行的;其他三個DSP上運行的程序均相同。
DSP板上四個DSP對各自的片外存儲器是獨立尋址的,與其他DSP的片外存儲器無關。控制流程用了兩個標志位,主控程序和DSP上的程序通過這兩個標志位進行同步, 其地址分別為0x80000000和0xFFE00。當0x800000處的值為0x55AA時表示該DSP已經(jīng)壓縮完一個GOP,主機可以開始接收壓縮數(shù)據(jù);否則主機等待該DSP壓縮完。當0xFFE00處的值為0x0時表示主機已經(jīng)接收完壓縮數(shù)據(jù),該DSP可以開始下一輪GOP壓縮;否則該DSP等待主機接收完上次壓縮數(shù)據(jù)。
2MPEG-2壓縮算法實現(xiàn)
2.1數(shù)據(jù)流優(yōu)化
DSP板上每個DSP芯片可用資源為一級程序cache和數(shù)據(jù)cache各128 KB,片上存儲器為 8 MB,每個DSP還帶有256 MB片外存儲器。由于DSP訪問片上存儲器和片外存儲器的速度差異很大,應該把經(jīng)常訪問的數(shù)據(jù)盡量放在片上存儲器中。在MPEG-2編碼中,首先要取得當前幀和參考幀,根據(jù)當前幀和參考幀作運動估計,得到預測幀;再對殘差作DCT變換、量化、編碼。同時還要進行反量化、反變換和運動補償?shù)玫街亟◣宰鳛橄乱粠幋a的參考幀。 由于DSP的片上存儲器只有8 MB,不可能將當前幀和參考幀整幀數(shù)據(jù)都取到DSP的片上存儲器中。結合MPEG-2壓縮的處理流程,每次只取當前幀的一個slice(切片)和相應運動范圍內(nèi)的參考幀存到片上存儲器中,對這個slice編碼輸出,再取下一個slice到片上存儲器進行編碼。這樣就大大減小了DSP訪存的代價。
MPEG-2編碼流程如圖5所示。在這里,用EDMA(enhanced DMA)在片上存儲器和片外存儲器之間傳送數(shù)據(jù)。EDMA只要DSP發(fā)出一條指令,外設即可自動傳送數(shù)據(jù),DSP無須干預。為了防止因數(shù)據(jù)還沒在片上存儲器準備好而導致DSP等待的情形,在編碼當前slice的同時,EDMA將下一個slice的數(shù)據(jù),需要用到的參考幀數(shù)據(jù)由片外存儲器傳送至片上存儲器。這樣DSP編碼完當前slice即可以馬上開始編碼下一個slice。另外,每編碼完一個slice,用EDMA將編碼數(shù)據(jù)和重建幀由片上存儲器傳送至片外存儲器。這樣使片上存儲器與片外存儲器之間的數(shù)據(jù)傳送不占用DSP的運行時間。
2.3算法改進探討
由于MPEG-2壓縮算法是以宏塊為單位進行的,解碼出來的圖像在宏塊邊界不可避免地會出現(xiàn)不平滑,即通常說的塊效應。為了消除塊效應,可以在解碼端對解碼出來的圖像每個宏塊邊界的像素進行平滑。在后來出現(xiàn)的視頻壓縮算法中(如H.264),大都加入了這種后處理以消除塊效應。
3結束語
整個系統(tǒng)經(jīng)過優(yōu)化后可以對720×576的灰度圖像進行高速壓縮,幀率可達75 fps。由于項目的需要,這次只進行了灰度圖像的壓縮,以后可以擴展到彩色圖像的壓縮。
新一代視頻壓縮標準H.264比MPEG-2有更高的壓縮比、更好的圖像質(zhì)量,但算法復雜度也提高了不少。進一步可以考慮在DSP上實現(xiàn)H.264算法,將視頻數(shù)據(jù)用H.264算法壓縮,使壓縮后的數(shù)據(jù)量更少,以適合網(wǎng)絡傳輸。
參考文獻:
[1]CHENG Peng. Video encoding optimization on TMS320DM64x/C64x[R].USA:Texas Instruments, 2004.
[2]RICHARDSON I E G . Video codec design[M]. UK: Wiley, 2002.
[3]李群迎,張曉林. 基于TMS320C64x DSPs的MPEG-4實時編碼器設計與實現(xiàn)[J]. 電子技術應用,2005,31(7):43-45.
[4]TMS320C6000 DSP enhanced direct memory access (EDMA) controller reference guide[K]. [S.l.]:TI Datasheet, 2005.
[5]ISO/IEC 13818-2,ITUTRecommendation H.262[S].1996.
[6]張雪松,倪國強,周立偉,等.帶有DSP芯片的新型實時數(shù)字圖像處理系統(tǒng)[J]. 光學技術,1997(4):16-18.
注:“本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文”