王 珺, 張 靚, 郭冬梅, 翁孚達(dá)
(上海無(wú)線電設(shè)備研究所,上海200090)
原始的視覺圖像信息形式上是連續(xù)的模擬量,隨著現(xiàn)代計(jì)算機(jī)技術(shù)和電子技術(shù)的發(fā)展,將圖像信息投影在二維平面上,并進(jìn)行離散采樣,得到以數(shù)字形式存儲(chǔ)和傳輸?shù)臄?shù)字圖像。由于圖像信息是高維信息(二維或二維以上),圖像信號(hào)的內(nèi)容復(fù)雜,數(shù)字化后的數(shù)據(jù)量非常大,這成為圖像信息采集、存儲(chǔ)和信息處理的主要障礙[1]。例如,一幅分辨率為1 024×768的24位真彩色圖像的數(shù)據(jù)量約為2 MB,一張容量為4.7 GB的DVD光盤,僅能存放約2 400幅這樣的靜止圖像。那么,當(dāng)水平和垂直分辨率都達(dá)到65 535的時(shí)候,一幅圖像的數(shù)據(jù)量就將達(dá)到12.9 GB,按每次處理30幅計(jì)算,需要處理的數(shù)據(jù)量達(dá)到387 GB,如果需要按照周期處理,其數(shù)據(jù)量之巨大難以想象。如此龐大的數(shù)據(jù)量對(duì)圖像的存儲(chǔ)和傳輸都是非常大的困難,在存儲(chǔ)容量和通信帶寬一定的情況下,必須對(duì)圖像進(jìn)行壓縮編碼。
在圖像編碼領(lǐng)域,高性能的壓縮算法一直是人們不懈追求的目標(biāo),特別是在低比特率壓縮時(shí)具有低存儲(chǔ)量、低功耗、實(shí)時(shí)的高性能編碼算法是近幾年的研究熱點(diǎn)。高效圖像壓縮方法的硬件實(shí)現(xiàn)是圖像壓縮編碼走向應(yīng)用領(lǐng)域的關(guān)鍵一步,其中的JPEG 2000標(biāo)準(zhǔn)是目前靜止圖像壓縮的標(biāo)準(zhǔn)中最新的也是性能最為優(yōu)越的算法之一。本文基于Xilinx高性能FPGA開發(fā)平臺(tái),實(shí)現(xiàn)了一種嵌入式靜態(tài)高清圖像編碼系統(tǒng),以滿足大分辨率以及超大分辨率靜態(tài)高清圖像壓縮的需求。
JPEG 2000技術(shù)是開發(fā)靜態(tài)圖像壓縮技術(shù)的首選。JPEG 2000壓縮算法采用離散小波變換,自適應(yīng)算術(shù)編碼和優(yōu)化截?cái)嗟那度胧骄幋a方式,具有高壓縮比、有損壓縮和無(wú)損壓縮、感興趣區(qū)域壓縮等特點(diǎn)[2]。數(shù)字圖像編碼系統(tǒng)的硬件平臺(tái)結(jié)構(gòu)如圖1所示。硬件系統(tǒng)主要由兩部分組成,DVI接口的FMC子卡以及Xilinx公司的VC707評(píng)估板。
DVI接口的FMC子卡具備兩路DVI接口,一路接收,一路發(fā)送,子卡采用TI公司的DVI接口芯片TFP401 A,實(shí)現(xiàn)解碼和編碼功能,完成并行的圖像數(shù)據(jù)和DVI接口之間的轉(zhuǎn)換,并將輸入和輸出的并行圖像數(shù)據(jù)通過(guò)FMC接口和VC707評(píng)估板相連接。
VC707評(píng)估板是Xilinx公司基于V7系列高性能FPGA的評(píng)估板,板卡采用PCIE全長(zhǎng)板型設(shè)計(jì),具備8x PCIE總線能力,能夠和主機(jī)通過(guò)PCIE總線完成高性能數(shù)據(jù)交互。評(píng)估板板載1 GB,64bits位寬的高性能DDR3動(dòng)態(tài)存儲(chǔ)器模組,同時(shí)具備千兆以太網(wǎng)和HDMI視頻輸出接口,性能強(qiáng)大,適合進(jìn)行各種基于FPGA的算法和接口邏輯開發(fā)驗(yàn)證。圖像壓縮編碼的主要功能是在VC707評(píng)估板的FPGA上通過(guò)邏輯編程實(shí)現(xiàn)。除了JPEG 2000編碼模塊外,還需要其他配套的IP,比如DDR3模塊、圖像處理模塊、千兆以太網(wǎng)模塊等,以及相關(guān)的驅(qū)動(dòng)開發(fā),將這些模塊整合在一起,成為一個(gè)完整的圖像壓縮編碼系統(tǒng)。根據(jù)功能劃分,F(xiàn)PGA內(nèi)部邏輯設(shè)計(jì)框圖如圖2所示。
FPGA是系統(tǒng)實(shí)現(xiàn)對(duì)高對(duì)比度圖像進(jìn)行編碼的運(yùn)算核心,F(xiàn)PGA內(nèi)部邏輯主要包含DVI輸入模塊、數(shù)據(jù)編碼IP核模塊、DDR3 IP核模塊和千兆以太網(wǎng)IP核模塊。
嵌入式數(shù)據(jù)編碼處理系統(tǒng)把外部的圖像信號(hào)經(jīng)由子板采集后,由DVI接口模塊處理后傳送給數(shù)據(jù)編碼IP核模塊進(jìn)行符合JPEG 2000標(biāo)準(zhǔn)的數(shù)據(jù)壓縮處理,并通過(guò)DDR3外部存儲(chǔ)空間寄存處理數(shù)據(jù),然后將壓縮后的圖像數(shù)據(jù)通過(guò)千兆以太網(wǎng)傳輸?shù)街鳈C(jī)指定位置存儲(chǔ),并通過(guò)千兆以太網(wǎng)主機(jī)調(diào)試程序?qū)σ蕴W(wǎng)進(jìn)行配置,用戶可以使用相關(guān)開源軟件查看壓縮結(jié)果。嵌入式數(shù)據(jù)編碼處理系統(tǒng)的處理流程圖,如圖3所示。
(1)輸入原始圖像數(shù)據(jù)
通過(guò)DVI圖像轉(zhuǎn)換芯片TFP401A實(shí)現(xiàn)原始圖像采集,得到原始圖像的數(shù)字RGB信號(hào),將數(shù)字化后的圖像數(shù)據(jù)按照期望的尺寸進(jìn)行預(yù)處理,以標(biāo)準(zhǔn)格式的圖像數(shù)據(jù)流傳輸至下一級(jí)處理模塊,用于后續(xù)壓縮處理。數(shù)字RGB信號(hào)并不適用于圖像信號(hào)處理領(lǐng)域,需要先將RGB信號(hào)轉(zhuǎn)換為另一種圖像信號(hào)YCrCb格式,以滿足壓縮核對(duì)圖像輸入數(shù)據(jù)的格式要求。
(2)圖像數(shù)據(jù)壓縮編碼
圖像數(shù)據(jù)壓縮是整個(gè)靜態(tài)高清圖像編碼系統(tǒng)的核心,采用ALMA公司商用的JPEG2000壓縮核JPEG2K-E完成圖像數(shù)據(jù)壓縮編碼。在邏輯系統(tǒng)完成時(shí)鐘和復(fù)位邏輯后,對(duì)IP核進(jìn)行相應(yīng)的配置,配置內(nèi)容存儲(chǔ)在FPGA的RAM配置文件中,通過(guò)修改這個(gè)文件可以修改相應(yīng)的配置信息,完成IP核配置后就可以將圖像數(shù)據(jù)流接入壓縮核進(jìn)行計(jì)算。
(3)圖像數(shù)據(jù)緩存處理
緩存數(shù)據(jù)可以集中數(shù)據(jù)進(jìn)行計(jì)算,也可以避免計(jì)算產(chǎn)生的延時(shí)而導(dǎo)致數(shù)據(jù)的丟失。先將接收?qǐng)D像數(shù)據(jù)信號(hào)緩存到DDR3存儲(chǔ)器中,從DDR3存儲(chǔ)器中將圖像數(shù)據(jù)順序的讀出,再以圖像數(shù)據(jù)流的形式傳遞給后級(jí)模塊。JPEG2K-E內(nèi)核具備獨(dú)立數(shù)據(jù)讀取和寫入通道的外部?jī)?nèi)存接口,這使得JPEG2K-E能夠不受內(nèi)存類型的局限,內(nèi)存接口簡(jiǎn)單靈活。采用Xilinx公司的MIG 7 Series IP核,進(jìn)行模塊化設(shè)計(jì),實(shí)現(xiàn)DDR3的數(shù)據(jù)存儲(chǔ)和讀取。
(4)圖像數(shù)據(jù)結(jié)果輸出
圖像數(shù)據(jù)壓縮結(jié)果通過(guò)千兆以太網(wǎng)輸出,采用Xilinx的IP核Tri Mode Ethernet MAC和1G/2.5G Ethernet PCS/PMA or SGMII實(shí)現(xiàn)千兆以太網(wǎng)的邏輯接口設(shè)計(jì)。針對(duì)千兆以太網(wǎng)的邏輯接口設(shè)計(jì)有寄存器模塊和數(shù)據(jù)傳輸模塊,其中寄存器模塊用來(lái)完成千兆以太網(wǎng)的配置,主要是配置源地址、目的地址以及傳輸數(shù)據(jù)長(zhǎng)度等工作參數(shù),最終完成將壓縮結(jié)果通過(guò)千兆以太網(wǎng)傳輸?shù)街鳈C(jī)的功能。通過(guò)主機(jī)調(diào)試程序,將壓縮后的圖像數(shù)據(jù)通過(guò)千兆以太網(wǎng)傳輸?shù)街鳈C(jī)指定位置存儲(chǔ),并生成圖像文件,用戶可以使用相關(guān)開源軟件查看壓縮結(jié)果。
圖像編碼處理以FPGA作為系統(tǒng)主處理器,完成圖像轉(zhuǎn)換的各種處理工作。主要負(fù)責(zé)接收主機(jī)傳送的圖像數(shù)據(jù),解析主機(jī)傳送的控制命令,并實(shí)現(xiàn)相關(guān)的圖像處理和轉(zhuǎn)換工作。
圖像數(shù)據(jù)采集模塊從DVI接口采集圖像信號(hào),將采集到的信號(hào)由圖像轉(zhuǎn)換芯片轉(zhuǎn)換為數(shù)字RGB信號(hào)后送給后續(xù)模塊進(jìn)行預(yù)處理。TFP401A是TI公司PanelBus平板顯示產(chǎn)品系列中的一種TDMS信號(hào)接收芯片,應(yīng)用于高速數(shù)字圖像應(yīng)用場(chǎng)合。
TFP401A支持SXGA(1280×1024,80 Hz),像素時(shí)鐘可達(dá)112 MHz;支持24位(224=16.7 M)真彩色(1pixel/clock或2pixel/clock);采用4倍過(guò)采樣技術(shù),抖動(dòng)抑制可以達(dá)到1 pixel/clock;有同步信號(hào)抖動(dòng)抑制功能[3]。
TFP401A輸出的數(shù)字RGB信號(hào)不能直接用于圖像信號(hào)處理領(lǐng)域,需要先將其轉(zhuǎn)換為另一種圖像信號(hào)YCr Cb格式。從RGB到Y(jié)UV的色度空間的轉(zhuǎn)換為浮點(diǎn)運(yùn)算,Xilinx公司的XC7VX485T內(nèi)嵌DSP Slice,可以實(shí)現(xiàn)乘/除法運(yùn)算,在軟件開發(fā)環(huán)境VIVADO@2016.4中,提供了RGB2YCbCr色度空間轉(zhuǎn)換的IP核,大大減少了開發(fā)時(shí)間。
數(shù)據(jù)編碼IP核模塊整個(gè)是整個(gè)嵌入式數(shù)據(jù)編碼處理系統(tǒng)的核心處理模塊,是完整、高性能、符合JPEG 2000(ISO/IEC 15444-1)標(biāo)準(zhǔn)的圖像編碼IP核,應(yīng)用于圖像和高帶寬圖像壓縮。在外接內(nèi)存控制器及內(nèi)存芯片后,即可獨(dú)立完成的圖像的無(wú)損壓縮編碼功能。具體來(lái)說(shuō),其內(nèi)核具有如下功能:層級(jí)移位、離散小波變換、熵編碼、失真度量與截?cái)嚅L(zhǎng)度計(jì)算、碼率控制等。該模塊接收有效像素?cái)?shù)據(jù)后,根據(jù)設(shè)定的壓縮率,輸出符合標(biāo)準(zhǔn)協(xié)議的輸出流,完成圖像壓縮編碼,輸入圖像分辨率最大支持65 535*65 535。
該模塊通過(guò)訪問(wèn)112個(gè)16位寄存器控制IP核的操作,這些寄存器配置所有的編碼選項(xiàng)。通過(guò)“命令寄存器”可以用來(lái)復(fù)位該IP核模塊,或者進(jìn)入低功耗狀態(tài)。在編碼過(guò)程中,首先對(duì)輸入圖像進(jìn)行預(yù)處理,分成小塊的圖像分量和基本的編碼單元塊。然后對(duì)每個(gè)編碼單元塊進(jìn)行小波變換,將變換后的結(jié)果進(jìn)行熵編碼處理。最后按照一定的碼流格式封裝數(shù)據(jù),輸出壓縮結(jié)果。
在高速圖像處理領(lǐng)域,存在對(duì)數(shù)據(jù)進(jìn)行高速大容量、實(shí)時(shí)性強(qiáng)和高帶寬的處理要求,對(duì)數(shù)據(jù)處理的速度、實(shí)時(shí)性、穩(wěn)定性以及功耗等要求都越來(lái)越高。目前,在能夠同時(shí)滿足高帶寬和大容量要求的存儲(chǔ)器方案中,比較成熟的有DDR,DDR2以及DDR3等,其中DDR3具有更高的帶寬和更低的功耗。DDR3控制儲(chǔ)存模塊完成圖像數(shù)據(jù)與DDR3通信前的緩存工作,以便根據(jù)圖像在處理過(guò)程的需要,完成數(shù)據(jù)編碼IP核模塊與DDR3存儲(chǔ)器的讀寫工作,配合系統(tǒng)完成圖像編碼功能。
DDR3控制器的設(shè)計(jì)采用了Xilinx公司的IP核MIG_v2.4和用戶接口模塊的設(shè)計(jì)方法。設(shè)計(jì)中采用的內(nèi)存核心頻率為200 MHz,DDR3的內(nèi)存總線位數(shù)為64位,DDR3一次可以預(yù)讀取8位,根據(jù)內(nèi)存帶寬=內(nèi)存核心頻率×內(nèi)存總線位數(shù)×倍增系數(shù)/8[4],在不考慮刷新和激活等操作所占用的帶寬下,DDR3的內(nèi)存帶寬為12.8 GB/s,傳輸速率為1 600 MB/s,可以滿足數(shù)據(jù)壓縮編碼IP核對(duì)內(nèi)存的存儲(chǔ)帶寬、存儲(chǔ)容量和存儲(chǔ)速率的要求。
Xilinx公司的VC707評(píng)估板已經(jīng)嵌入了PHY層芯片,型號(hào)為Marvell公司的M88E1111,MAC層以及MAC層與PHY層的SGMII接口均可以直接調(diào)用IP核來(lái)完成,開發(fā)周期短,正確性高。
采用Xilinx的IP核Tri Mode Ethernet MAC和1G/2.5G Ethernet PCS/PMA or SGMII實(shí)現(xiàn)千兆以太網(wǎng)的邏輯接口設(shè)計(jì)。針對(duì)千兆以太網(wǎng)的邏輯接口設(shè)計(jì)有寄存器配置模塊和數(shù)據(jù)輸出控制模塊,其中寄存器配置模塊用來(lái)配置源地址、目的地址以及傳輸長(zhǎng)度等工作參數(shù)。數(shù)據(jù)輸出控制模塊主要是緩存獲取的圖像壓縮數(shù)據(jù),按照UDP協(xié)議封裝數(shù)據(jù)包,完成數(shù)據(jù)發(fā)送。
在FPGA端發(fā)送數(shù)據(jù)時(shí),采用乒乓FIFO可以明顯減小幀間隔。利用Wireshark觀測(cè),當(dāng)使用乒乓FIFO的情況下系統(tǒng)在連續(xù)發(fā)送數(shù)據(jù)時(shí),主機(jī)每秒接收的有效數(shù)據(jù)吞吐量為812Mbps。測(cè)試結(jié)果表明,基于千兆以太網(wǎng)的數(shù)據(jù)傳輸可以滿足靜態(tài)高清圖像編碼系統(tǒng)的要求。
本文中實(shí)現(xiàn)的編碼系統(tǒng)以Xilinx公司的VC707評(píng)估板為硬件驗(yàn)證平臺(tái),系統(tǒng)綜合后的資源使用情況如表1所示。其中FF(觸發(fā)器)的使用率為18.2%,4-LUTs(四輸入查找表)的使用率為30.1%,從邏輯資源利用率來(lái)看,XC7VX485T完全能夠滿足本文所設(shè)計(jì)系統(tǒng)的資源消耗,并為后續(xù)升級(jí)留有資源空間。
在對(duì)整個(gè)系統(tǒng)進(jìn)行測(cè)試時(shí),原始圖像的分辨率為1 920×1 080,首先將經(jīng)DVI采集模塊轉(zhuǎn)換后的RGB格式數(shù)據(jù)加載到圖像編碼系統(tǒng);進(jìn)行圖像壓縮編碼,最后將圖像壓縮結(jié)果通過(guò)千兆以太網(wǎng)上傳至計(jì)算機(jī),保存為JPEG 2000格式的文件。通過(guò)實(shí)驗(yàn)測(cè)試,本系統(tǒng)能夠?qū)崿F(xiàn)圖像的壓縮比達(dá)到50∶1,編碼功能正確,圖像無(wú)失真。
表1 系統(tǒng)資源占用情況表
本文提出了一種基于高性能FPGA的嵌入式靜態(tài)高清圖像編碼系統(tǒng)的設(shè)計(jì)方案,采用美國(guó)Alma公司商用JPEG2K-E IP壓縮處理技術(shù),可實(shí)現(xiàn)分辨率1 920×1 080@30fps的靜態(tài)高清圖像實(shí)時(shí)壓縮編碼,采用DDR3實(shí)現(xiàn)數(shù)據(jù)的緩存功能,通過(guò)千兆以太網(wǎng)與主機(jī)完成結(jié)果數(shù)據(jù)的傳輸和存儲(chǔ)。實(shí)際測(cè)試結(jié)果表明,各項(xiàng)技術(shù)指標(biāo)可以滿足靜態(tài)高清圖像壓縮編碼、傳輸和存儲(chǔ)的技術(shù)要求。