新聞中心

EEPW首頁 > 設(shè)計應(yīng)用 > 視頻壓縮IPcore設(shè)計

視頻壓縮IPcore設(shè)計

作者: 時間:2007-03-09 來源:網(wǎng)絡(luò) 收藏
摘要:介紹了一種基于FPCA技術(shù)的視頻壓縮IPcore(Intellectual Property core,智力產(chǎn)權(quán))設(shè)計。設(shè)計中綜合運用了分布式算法、并行運算和流水線單元,通過VerilogHDL(Veriog Hardware DescdPtionLanSuage)硬件描述語言描述運算單元及其結(jié)構(gòu)配置。整個系統(tǒng)能在27MHz系統(tǒng)時鐘下工作。關(guān)鍵詞:視頻壓縮 IPcore FPCA 現(xiàn)行的視頻壓縮標(biāo)準(zhǔn)有多種,但基本屬于以下兩大類:視頻會議標(biāo)準(zhǔn)和多媒體標(biāo)準(zhǔn)。視頻會議標(biāo)準(zhǔn)包括ITU(Intemational Telecommunication Union)的H.263/H.261等。這些標(biāo)準(zhǔn)主要采用了基于DCT(離散余弦變換)編碼、運動補(bǔ)償?shù)燃夹g(shù),使視頻流能以Nx64kbps(N=1~32)的速率傳輸。 多媒體壓縮標(biāo)準(zhǔn)主要包括:MPEG-1、MPEG-2、MPEG-4等,由CCITT和ISO的動態(tài)圖像專家組(MotionPicture Experts Group)制定。MPEG-1主要應(yīng)用在以CD-ROM為介質(zhì)的視頻上,比特率為1.5Mbps。MPEG-2應(yīng)用在NTSC/PAL和CCIR601中, 比特率為2~10Mbps。MPEG—1和MPEG—2的目的都是有效傳輸和存儲音視頻。而MPEG-4是為了提供更有效的視頻壓縮,基于內(nèi)容提供廣泛的接人方式。它既可以在5-64kbps的移動電話和公共交換網(wǎng)中應(yīng)用,也可以在4Mbps帶寬的電視中應(yīng)用。JPEG(Joint Photographic Experts Group)標(biāo)準(zhǔn)是一個適用范圍廣泛的通用標(biāo)準(zhǔn),由聯(lián)合圖像專家小組制定。它不僅適用于靜止圖像的壓縮,也適用于電視圖像序列的幀內(nèi)圖像的壓縮[1]。 近年來,隨著FPGA技術(shù)的日益成熟,愈來愈多的曾使用軟件或DSP實現(xiàn)的復(fù)雜數(shù)字算法開始使用PPCA完成。這當(dāng)然是由于FPGA的特殊結(jié)構(gòu)和特性,使它可以更加高速和高效地完成這些算法。IPcore技術(shù)可以把這些FPGA中的算法設(shè)計封裝成包(模塊)。這些包具有智力產(chǎn)權(quán),可以被繼承、共享或購買。 1 視頻壓縮原理和算法實現(xiàn) 視頻壓縮技術(shù)主要利用圖像信號的相關(guān)、冗余等特性,通過一些變換算法,保留對人眼視覺最重要的部分,進(jìn)行編碼傳輸。大部分視頻壓縮利用2D-DCT(二維離散余弦變換)和2D-IDCT(二維反離散余弦變換)變換得到圖像的頻譜,高精度保留對人眼重要的高頻部分,低精度保留低頻部分從而對視頻流進(jìn)行壓縮[1]。其過程如圖1所示。1.1 DCT變換算法 2D-DCT變換是視頻壓縮中的常用變換[2]。在壓縮過程中,將一幅圖像分成許多8x8的小塊進(jìn)行變換。 8x8的2D-DCT變換如公式(1)所示: 如果直接使用公式(1)進(jìn)行2D-DCT變換,運算量將會十分巨大,普通FPGA很難有效完成整個視頻壓縮運算。所以需要先把2D-DCT運算進(jìn)行一些變換,簡化計算,減少運算量。 2D-DCT具有正交可分解性悶,可以通過對輸入的矩陣先做一維行變換,再做一維列變換實現(xiàn)。即將8x8數(shù)據(jù)先按行方向進(jìn)行累加運算,產(chǎn)生中間矩陣,再對中間矩陣按列方向進(jìn)行累加運算,最后得到變換結(jié)果。2D-DCT可以分解成兩個1D-DCT運算,見公式(2)。 將公式(2)展開成矩陣形式,得到公式(3)。計算一個這樣的單元需要64個乘法器和56個加法器,運算量還是很大。利用公式(3)的對稱性進(jìn)行變換,可以得到公式(4),使乘法器減少到32個,加法器減少到8個。一個由公式(4)推演出的分布式乘法器如圖2所示。4個乘數(shù)(x0…x3)同時與各自的系數(shù)(c0…c3)相與,然后相加得到一個和數(shù),這個和數(shù)與除2器出來的數(shù)相加,得到一個新的累計數(shù)。這個新的累加數(shù)如果是最后的結(jié)果,則輸出;如果不是,送入除2器,進(jìn)行下一步累加。這樣,分布式乘法器就可以完成系數(shù)yj的運算。 由于DCT運算中的系數(shù)Cm是常數(shù),對于擁有RAM單元的FPGA,上述運算也可以使用查ROM表的方法實現(xiàn)。將圖2中的虛線內(nèi)部分,改換ROM單元,如圖3所示。這時,(x0…x3)作為ROM表的地址位,通過查表的方式輸出和數(shù),進(jìn)行累加運算。ROM表的地址位寬度為4,存儲單元數(shù)量DW=24=16。一些生產(chǎn)商提供的綜合軟件帶有IP庫,可以調(diào)用這些IP庫中的ROM模塊實現(xiàn)ROM表。例如ALTERA公司的Megafunction Library中的LPM_ROM可以用以下的語句調(diào)用(VerilogHDL)[4]。用VC或MATLAB生成一個.mif的ROM表文件。 LPM_ROM U1( .address(adr), .inclock(clk), .q(dat)); defparaln lpm_rom_component.lpm_width=16, lpm_rom_component.lpm_widthad=4, lpm_rom_component.1pm_address_control ="REGISTERED", lpm_rom_component.ipm_outdata ="UNREGISTERED", lpm_rom_component.1pm_file="romtable.mif"; 這樣,可以得到由這些基本單元構(gòu)成與矩陣公式(4)相對的1D-DCT的FPGA設(shè)計,如圖4所示。其中4RC單元表示圖3的結(jié)構(gòu)。如前所述,2D-DCT需要兩個1D-DCT共同完成,但是兩個1D-DCT運算的中間變量并不是直接傳遞的,而需要一個矩陣轉(zhuǎn)置模塊進(jìn)行耦合。 1.2 轉(zhuǎn)置RAM 2D-DCT單元由兩個相同的1D-DCT和轉(zhuǎn)置RAM等組成,如圖5所示。根據(jù)公式(2),可以知道1D-DCT先對8x8單元的行進(jìn)行累加操作,把得到的結(jié)果暫存到RAM中,直到8行都運算完成。RAM中的臨時8x8矩陣要先轉(zhuǎn)置,把列數(shù)據(jù)變成行數(shù)據(jù),經(jīng)并串轉(zhuǎn)換后輸入到第2個1D-DCT進(jìn)行行累加。 轉(zhuǎn)置RAM是一個8x8的RAM陣列。當(dāng)數(shù)據(jù)完成1D-DCT變換后,即由xij到zjl變換,按行順序輸入到轉(zhuǎn)置RAM,在讀出時按列順序讀出,這樣完成zil到zli的變換;然后將z9并串轉(zhuǎn)換,輸入到第二個1D-DCT,由zli運算得到y(tǒng)lk。這樣就完成了公式(1)的2D-DCT整個變換,如圖6所示。 1.3 2D-IDCT 2D-IDCT變換如公式(5)所示。可見公式(5)與公式(1)相同,所以2D-IDCT可以用與2D-DCT的同樣方法實現(xiàn)。 1.4 量化,編碼 量化算法包括一張量化表,它因人眼對各種空間頻率的靈敏度的不同而確定。在表中,較低空間頻率的精度要高于較高頻率的精度,這是由于人眼的低頻分量比較敏感,而對高頻分量不太敏感。 編碼可以采用游程編碼或熵編碼。單元模塊均可通過FPGA的片上RAM(滿足雙口RAM的特性)設(shè)計完成。圖62 結(jié)論 整個視頻壓縮IPcore設(shè)計可以在FPGA上實現(xiàn),在27MHz的系統(tǒng)時鐘下工作。根據(jù)具體芯片的不同,可以在更高的速率工作。壓縮速率可以達(dá)到108Mbps。 實際應(yīng)用中,數(shù)據(jù)字長對壓縮效果和比率有較大影響,一般情況下系數(shù)Cm取12位,可以滿足大部分的視頻壓縮要求。 整個視頻壓縮IPcore可以直接下載到FPGA上(例如EDIF格式),獨立實現(xiàn)視頻壓縮功能,也可以通過軟件設(shè)計與其他的IPcore協(xié)同工作。例如,在網(wǎng)絡(luò)攝像機(jī)的應(yīng)用上,可以把視頻壓縮IPcore、數(shù)字?jǐn)z像頭控制器、網(wǎng)絡(luò)接口一起編譯成新的核。這個核具有視頻采 集、壓縮、傳輸?shù)纫幌盗泄δ?。把核的EDIF文件通過生產(chǎn)廠商的下載軟件下載到FPGA上,就可以在一塊芯片上實現(xiàn)所有網(wǎng)絡(luò)攝像機(jī)的功能。實現(xiàn)了SoPC(System On a Programmable Chip)的目標(biāo)。

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉