<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > MPEG-4實(shí)時(shí)編碼器在A(yíng)DSP-BF533上的實(shí)現

MPEG-4實(shí)時(shí)編碼器在A(yíng)DSP-BF533上的實(shí)現

作者: 時(shí)間:2007-06-13 來(lái)源:網(wǎng)絡(luò ) 收藏
引言

  視頻編碼技術(shù)可以在較小的帶寬下傳輸高質(zhì)量的視頻數據,節省大量存儲空間,但編碼復雜度也較高,目前豐要有3種方案:在通用PC上編程;通過(guò)ASIC硬件以及使用通用DSP芯片實(shí)現。與前兩者相比,通用DSP芯片實(shí)現方案具有以下優(yōu)勢:運算性能強;可升級性好,與PC類(lèi)似,通用DSP芯片的功能仍是通過(guò)編程來(lái)實(shí)現的,能快速、方便地進(jìn)行軟件升級及添加新的功能,以適應技術(shù)發(fā)展和市場(chǎng)變化;成本低、功耗低、適應場(chǎng)合廣泛。

系統硬件設計

  編碼系統處理核心為(以下簡(jiǎn)稱(chēng)BF533),利用其多功能并行接口PPI采集視頻數據,該PPI具有DMA功能,無(wú)需內核干預便可進(jìn)行高速數據傳輸,傳輸完成后可自動(dòng)向內核發(fā)出DMA中斷。

  視頻采集部分選用0mniVision公司的CIF級彩色CMOS圖像傳感芯片OV6630,其最大分辨率為352288,采集速率最高可達60fps,且片內硬件實(shí)現了原始RGB數據到4:2:2YUV格式數據的轉換,用戶(hù)無(wú)需自行編寫(xiě)復雜的RGB轉YUV應用程序,大大減少了代碼量,很適合用作編碼。

  設置OV6630

輸出為4:2:2 YUV視頻數據格式,BF533的PPI即可直接接收該格式視頻數據。二者可實(shí)現無(wú)縫連接,無(wú)需中間電路。

  考慮到目前還有大量模擬制式的攝像機仍在廣泛應用,系統中還增加了視頻ADC ADV7183,該芯片可以把PAL制模擬電視信號轉為ITU-R656標準4:2:2格式數字視頻,同樣將ADV7183輸出端口與BF533的PPI相連。這樣,既可以采用系統自帶CMOS圖像傳感器采集視頻,也可以外接PAL制模擬攝像機,用戶(hù)可自由選擇。

  由于BF533片內存儲空間有限,而視頻采集、編碼數據量巨大,選用一片Hynix公司的4MBSDRAM HY57V56162(內含4個(gè)內部子集)作為BF533片外大容量動(dòng)態(tài)存儲器。同時(shí),為存放程序啟動(dòng)代碼,利用一片容量為1MB的閃存芯片PSD4256G6V構成BF533的片外非易失性存儲器。系統硬件構成如圖1所示。

系統硬件構成

設計實(shí)現

存儲器空間分配

  BF533采用統一的32位、共4GB可尋址空間,包括位于片內的L1高速SRAM,片外的同步存儲器空間SDRAMSpace,以及異步存儲器空間(A syn chronousMemory Space)。

  片內Ll SRAM包括:64KB指令SRAM、16KB指令Cache/SRAM、32KB數據SRAM、32KB數據Cache/SRAM,以及4KB便簽存儲器。

  L1 SRAM工作在內核時(shí)鐘頻率,內核可以對其進(jìn)行高速帶寬訪(fǎng)問(wèn)。它是所有存儲器中訪(fǎng)問(wèn)速度最快的,但容量有限,因此,只應將那些最關(guān)鍵的代碼和數據存放在L1SRAM里。同時(shí),指令Cache和數據Cache全部使能,這樣可以大大提高訪(fǎng)問(wèn)片外存儲器的效率。Cache設置是通過(guò)相應的I M E M_C O N T R O L、DMEM_CONTROL,以及CPLB寄存器配置實(shí)現的。

  由于BF533片內存儲空間有限,而原始視頻數據量較大:CIF級4:2:2格式每幀圖像占用的空間為202752字節,如果采用模擬PAL制式視頻輸入,每幀占用空間更是高達829440字節,只能將其放至SDRAM中。同樣,視頻編碼數據也應存放在SDRAM中。此外,系統啟動(dòng)完成Boot loader引導后,主要關(guān)鍵代碼放在片內L1程序SRAM中執行,但大部分程序代碼仍需從SDRAM中執行。由于SDRAM特殊的讀/寫(xiě)方式,如果下次訪(fǎng)問(wèn)內存頁(yè)與當前活動(dòng)頁(yè)(Active Page)不同,即出現了頁(yè)錯失(Page Miss),SDRAM就必須首先關(guān)閉當前頁(yè),再打開(kāi)新的頁(yè),大大降低了SDRAM讀寫(xiě)速率。而該系統中SDRAM又需存儲多種數據,內核、DMA均需要頻繁訪(fǎng)問(wèn)SDRAM,因此,應精心分配SDRAM空間,以使頁(yè)錯失現象盡量少發(fā)生。

  BF533的SDRAM控制器(SDC)可以支持SDRAM每個(gè)內部子集中的一個(gè)活動(dòng)頁(yè),且在這4個(gè)I-Bank中進(jìn)行切換時(shí)無(wú)需任何延遲。這樣,將不同的數據、代碼映射至不同的I-Bank,可使頁(yè)錯失現象降到最少,進(jìn)而改善訪(fǎng)問(wèn)SDRAM的效率。

  由于需要編碼,為保證視頻采集和壓縮可以同步執行,采用乒乓緩沖技術(shù):設置了兩塊視頻幀接收緩沖區BUF1和BUF2,采用BF533的DMA傳輸鏈方式進(jìn)行傳輸。當某一DMA緩沖區填滿(mǎn)后,內核對其作編碼(同時(shí)也在構建參考幀),此時(shí)DMA開(kāi)始對另一塊緩沖區進(jìn)行填充。由于BUF1、BUF2、程序代碼以及參考幀均位于不同的I-Bank,減少了SDRAM頁(yè)面切換的機會(huì ),實(shí)現了對SDRAM的高效訪(fǎng)問(wèn)。

MPEG-4
程序流程

  MPEG-4編碼是基于宏塊(Macro Block)進(jìn)行的,每個(gè)宏塊包含4個(gè)88亮度子塊和2個(gè)88色度子塊。MPEG-4編碼原理主要包括對I幀和P幀的編碼,P幀比I幀多出了運動(dòng)估計和補償模塊,二者編碼流程如圖2所示。

二者編碼流程

代碼編寫(xiě)及優(yōu)化

  BF533支持C/C++高級語(yǔ)言,但高級語(yǔ)言執行效率較低,為達到最大執行效率,采用全匯編語(yǔ)言實(shí)現MPEG-4編碼。

  對于I幀編碼,主要的運算量是前向離散余弦變換FDCT和反向離散余弦變換IDCT,這里采用了ADI提供的優(yōu)化代碼,它基于chen氏快速DCT算法,大量運用了BF533特有的并行指令,完成一次88 DCT僅需293個(gè)時(shí)鐘周期。

  與I幀相比,P幀編碼相對復雜,其中,運動(dòng)估計是P幀編碼最費時(shí)的部分,即在參考幀中搜索與當前編碼宏塊或子塊最匹配的位置。

  SAD(絕對誤差和)準則具有無(wú)需乘除運算、實(shí)現簡(jiǎn)單方便等優(yōu)點(diǎn),選用它作為運動(dòng)估計匹配準則。

  運動(dòng)估計搜索算法則采用菱形搜索法(又稱(chēng)鉆石搜索法),搜索精度為半像素,菱形搜索法具有簡(jiǎn)單、魯棒、高效的特點(diǎn)。

  Blackfin匯編指令集中有專(zhuān)門(mén)用于SAD計算的指令S

AA(src_reg_O,src_reg_1),一條該指令即可同時(shí)完成4個(gè)字節的SAD計算。此外,綜合使用其它一些視頻專(zhuān)用操作指令,如BYTEPACK(_將4個(gè)字節打包至一個(gè)3 2位寄存器中)、BYTEUNPACK(與BYTEPACK功能相反)、BYTEOPl6M(對4個(gè)字節作減法處理),可以使代碼運行效率得到顯著(zhù)改善。

  BF533集成開(kāi)發(fā)環(huán)境VisualDSP++中還提供了Profile功能,可以利用該功能對程序代碼性能進(jìn)行評估,發(fā)現程序執行的瓶頸,從而進(jìn)行有針對性的優(yōu)化。主要的優(yōu)化方法有:1.盡量減少分支、條件判斷指令,因為這些指令會(huì )破壞BF533流水線(xiàn),造成額外的時(shí)鐘延遲;同時(shí),對部分較簡(jiǎn)單的子程序用宏改寫(xiě),免去子程序調用過(guò)程中的堆棧操作和參數傳遞;

  2.采用并行執行指令,BF533并非超標量結構DSP,但仍能有限地支持最多3條指令并行執行,如:saa(r1:0,r3:2)Ⅱr0=[i0++]Ⅱr2=[i1++];使用該并行指令即可在一個(gè)時(shí)鐘周期內完成4個(gè)字節的SAD計算,同時(shí)完成r0、r2的數據更新,以便下次計算;

  3.在DCT/IDCT的量化過(guò)程及其它一些模塊中,要牽涉到除法,而B(niǎo)F533計算除法需要耗費大量時(shí)鐘周期,因此,這里將除法變?yōu)槌艘粤炕蜃拥牡箶?,求倒數可以通過(guò)查找表方式實(shí)現。再結合移位操作,即可在基本不損失精度的同時(shí)達到高效計算除法的目的。

  經(jīng)過(guò)前述的優(yōu)化過(guò)程后,成功地在BF533上實(shí)現了MPEG-4 SP的CIF級編碼。此外,對于CIF級CMOS傳感器OV6630,系統可以直接對其編碼。但如果是外接PAL制式模擬攝像頭,經(jīng)ADV7183作A/D轉換后,其分辨率為720576,受BF533的性能限制,尚無(wú)法對該級別分辨率做到實(shí)時(shí)編碼,因此,應先使其分辨率降為352288,然后再作:MPEG-4編碼。

實(shí)驗結果

  BF533內核時(shí)鐘(CLK)設為594MHz,系統時(shí)鐘(SLK)為118.8MHz。選取CIF級標準測試序列flower(幀速率為25fps,共75幀)對系統進(jìn)行驗證。

  圖3、圖4給出了分別采用I幀編碼和P幀編碼后的重建圖像。I幀編碼壓縮率為11.5:1,重建圖像信噪比為33.43dB。P幀編碼壓縮率則達到了65.7:1,重建圖像信噪比為32.65dB。經(jīng)采用BF533片內實(shí)時(shí)時(shí)鐘RTC精確計時(shí),整個(gè)視頻序列共75幀,編碼耗費2.27s,平均編碼率達到了33fps,滿(mǎn)足實(shí)時(shí)編碼要求。

分別采用I幀編碼和P幀編碼后的重建圖像

結語(yǔ)

  本文介紹了CIF級別的MPEG-4 SP實(shí)時(shí)編碼在BF533 DSP;DSP片上的實(shí)現,該可以靈活地選用系統自帶CMOS傳感器及用戶(hù)自選PAL制模擬攝像機兩種視頻采集源。該系統可以用在IP可視電話(huà)、交通檢測、超市監視、智能小區安保等領(lǐng)域,具有很強的實(shí)用價(jià)值。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>