彭晴晴,邸麗霞,張 輝,唐 杰,劉 輝
(北方自動(dòng)控制技術(shù)研究所,太原 030006)
基于NiosⅡ的SPIHT算法圖像壓縮卡的設(shè)計(jì)
彭晴晴,邸麗霞,張 輝,唐 杰,劉 輝
(北方自動(dòng)控制技術(shù)研究所,太原 030006)
針對(duì)高速傳輸系統(tǒng)中大批量數(shù)據(jù)不易傳輸?shù)膯?wèn)題,提出了一種基于片上系統(tǒng)圖像壓縮卡的設(shè)計(jì)方法,討論了采用軟核NiosⅡ處理器的配置方式、簡(jiǎn)化SPIHT算法的硬件實(shí)現(xiàn)原理和LVDS圖像數(shù)據(jù)接收轉(zhuǎn)存的操作流程。詳細(xì)論述了系統(tǒng)各模塊的設(shè)計(jì)原理及實(shí)現(xiàn)方法,并對(duì)各模塊進(jìn)行了實(shí)際的性能測(cè)試和分析,結(jié)果表明該壓縮卡性能穩(wěn)定,可以高效地完成圖像數(shù)據(jù)壓縮。
LVDS,軟核,SPIHT,圖像壓縮,DMA
半導(dǎo)體傳感技術(shù)的發(fā)展使得獲取采集大批量高速實(shí)時(shí)數(shù)據(jù)變得更加容易,這就需要比傳統(tǒng)方式更加穩(wěn)定有效的數(shù)據(jù)處理技術(shù)。在數(shù)據(jù)傳輸中,LVDS以其低功耗高速的特點(diǎn)正在被廣泛地采用;在數(shù)據(jù)處理中,當(dāng)不需要完全精確地保留數(shù)據(jù)時(shí),數(shù)據(jù)壓縮技術(shù)在大批量數(shù)據(jù)存儲(chǔ)方面的優(yōu)勢(shì)正變得越來(lái)越明顯[1]。本文是在應(yīng)用了Altera嵌入式軟核NiosⅡ處理器的基礎(chǔ)上,實(shí)現(xiàn)了一種以LVDS(低壓差分信號(hào))為傳輸總線的圖像壓縮卡的設(shè)計(jì),系統(tǒng)采用分級(jí)樹(shù)集合劃分的SPIHT(多級(jí)樹(shù)集合分裂)壓縮算法,將乒乓緩存技術(shù)和DMA(直接內(nèi)存存取)數(shù)據(jù)處理方法應(yīng)用于高速圖像數(shù)據(jù)的接收緩存中,并將壓縮后的數(shù)據(jù)通過(guò)LVDS總線傳送出去,簡(jiǎn)化了系統(tǒng)接口,增加了圖像傳輸?shù)膶?shí)時(shí)性。
LVDS總線是指采用低壓差分信號(hào)組成輸入輸出接口與外部通信的實(shí)現(xiàn)方式。LVDS信號(hào)的傳輸是通過(guò)發(fā)送端恒流源驅(qū)動(dòng)信號(hào)輸出,在接收端通過(guò)匹配電阻產(chǎn)生低電壓的擺幅來(lái)實(shí)現(xiàn)電平的高低變化,它具有抵抗外界串?dāng)_、功耗低等優(yōu)異性能,是能夠滿(mǎn)足高速數(shù)據(jù)傳輸?shù)目煽考夹g(shù)[2]。通過(guò)采用專(zhuān)用的線路驅(qū)動(dòng)器及接收器接口芯片組能夠簡(jiǎn)化電路設(shè)計(jì),為解決高速I(mǎi)/O接口問(wèn)題提供了新的選擇。專(zhuān)用接口芯片組在LVDS傳輸時(shí)能夠?qū)r(shí)鐘信號(hào)嵌入差分?jǐn)?shù)據(jù)流,同時(shí)在接收端恢復(fù)時(shí)鐘信號(hào)用于同步數(shù)據(jù)傳輸,便于接收同步,保證傳輸穩(wěn)定可靠。
依據(jù)信息的統(tǒng)計(jì)性和人眼識(shí)別的有限性,圖像信息現(xiàn)有描述中存在著一定的冗余信息,比如編碼冗余、像素冗余以及視差冗余,研究圖像數(shù)據(jù)壓縮實(shí)際上是探索高效的方法來(lái)消除這些冗余,便于大量數(shù)據(jù)的保存和傳輸。壓縮技術(shù)主要有無(wú)損壓縮和有損壓縮,其中有損壓縮又分為變換、分形以及矢量化等壓縮方法[3]。本文根據(jù)實(shí)際應(yīng)用情況選擇小波變換結(jié)合多級(jí)樹(shù)劃分(SPIHT)的壓縮算法。小波變換具有優(yōu)異的時(shí)頻局部特性和去相關(guān)特性,能夠?qū)D像信息按照不同的分辨率提取出來(lái)組合成一個(gè)由高到低的細(xì)節(jié)序列,然后依據(jù)一定的分辨率來(lái)取舍這個(gè)序列來(lái)實(shí)現(xiàn)圖像的壓縮[4]。小波變換是空間和頻率關(guān)系上的部分變換,它集中分析局部信息并提取重要信號(hào),提高壓縮效率。
可編程片上系統(tǒng)的嵌入式處理器按實(shí)現(xiàn)方式有軟核和硬核之分,其中軟核處理器是使用可編程器件內(nèi)部的邏輯資源構(gòu)建的,通過(guò)編寫(xiě)HDL語(yǔ)言或生成網(wǎng)表的方法應(yīng)用。本次設(shè)計(jì)的壓縮卡采用的是嵌入式軟核處理器構(gòu)成的SOPC。基于片上系統(tǒng)壓縮卡的總體結(jié)構(gòu)如圖1所示,主要由接口模塊LVDS總線、核心數(shù)據(jù)處理模塊NiosⅡ軟核及其配置IP以及用于整幅圖像緩存的乒乓DDR2存儲(chǔ)模塊組成。嵌入式處理器采用Altera公司的NiosⅡ軟核,主要負(fù)責(zé)圖像數(shù)據(jù)的調(diào)度、壓縮以及與LVDS總線的接口通信。圖像數(shù)據(jù)壓縮卡主要完成LVDS總線上圖像數(shù)據(jù)的壓縮以及壓縮后數(shù)據(jù)的輸出。首先,LVDS接收器在解串原始圖像數(shù)據(jù)后,在同步時(shí)鐘的控制下寫(xiě)入緩存FIFO;其次在DMA模式下將FIFO中的數(shù)據(jù)轉(zhuǎn)移至乒乓DDR2中等待核心處理器讀出壓縮,這時(shí)總是有一個(gè)DDR2處于接收?qǐng)D像數(shù)據(jù)過(guò)程,另一個(gè)DDR2處于對(duì)處理器輸出圖像數(shù)據(jù)等待壓縮的過(guò)程;最后在嵌入式處理器的控制下將壓縮生成的數(shù)據(jù)碼流存儲(chǔ)在輸出緩存中等待LVDS發(fā)送端的讀取傳輸至LVDS總線。
基于FPGA的嵌入式片上系統(tǒng)主要由不同的各類(lèi)型的處理器核、I/O端口、各種標(biāo)準(zhǔn)接口模塊以及將它們都連接起來(lái)的片上總線。設(shè)計(jì)者可以根據(jù)設(shè)計(jì)需要靈活地選擇各種不同的部件組合成可編程的軟核,還可以通過(guò)編程定制不同的組件類(lèi)型[5]。隨著大規(guī)模邏輯器件的普及,Altera的SOPC開(kāi)發(fā)平臺(tái)和NiosⅡ處理器以其優(yōu)異的性能和更低的資源占用得到了廣泛的使用。NiosⅡ的出現(xiàn)為設(shè)計(jì)高性能嵌入式系統(tǒng)和優(yōu)化系統(tǒng)提供了條件,使得設(shè)計(jì)以硬件描述(HDL)為中心的硬件設(shè)計(jì)轉(zhuǎn)到了以C語(yǔ)言為中心的功能描述,形成了以C語(yǔ)言描述NiosⅡ的功能,而用HDL描述硬件的具體實(shí)現(xiàn)方法,即實(shí)現(xiàn)了軟件和硬件的真正協(xié)同設(shè)計(jì)。NiosⅡ處理器是在SOPC Builder中按照任務(wù)需求選擇不同的處理器、IO中斷端口以及各種控制寄存器來(lái)配置生成的,最后在Quartus中調(diào)用的。SOPC Builder中含有各種開(kāi)發(fā)者已經(jīng)調(diào)試好的IP模塊,并且它為第三方預(yù)留了接口,支持設(shè)計(jì)者通過(guò)描述語(yǔ)言或者購(gòu)買(mǎi)專(zhuān)利IP定制外設(shè)和指令來(lái)完成設(shè)計(jì)需求功能[6]。
本設(shè)計(jì)NiosⅡ軟核外設(shè)組件主要有:LVDS總線接口,F(xiàn)IFO、SRAM、DMA控制器和乒乓DDR2控制轉(zhuǎn)換模塊。嵌入式處理器配置組件如下頁(yè)圖2。
圖像數(shù)據(jù)壓縮是整個(gè)壓縮卡設(shè)計(jì)的核心部分,基于小波變換的SPIHT壓縮算法性能突出,可操作性強(qiáng),便于硬件工程化實(shí)現(xiàn)。但是由于最初的SPIHT算法需要將小波變換后的數(shù)據(jù)分類(lèi)存放于不同的鏈表中,處理器通過(guò)不斷地掃描鏈表來(lái)獲得信息,這就需要消耗大量的硬件存儲(chǔ)資源和存儲(chǔ)時(shí)間,減緩了圖像處理的速度,不利于硬件壓縮的快速編碼。所以本文采用優(yōu)化的SPIHT算法,通過(guò)建立不同的查找表的方式代替原來(lái)的鏈表數(shù)據(jù)存儲(chǔ)轉(zhuǎn)移,并改變小波變換的零樹(shù)結(jié)構(gòu)和算法中排隊(duì)掃描的順序,簡(jiǎn)化了變換后的樹(shù)結(jié)構(gòu)子孫關(guān)系,縮短了壓縮結(jié)果產(chǎn)生的碼流。改進(jìn)后的SPIHT算法采用標(biāo)志位區(qū)分每個(gè)系數(shù)和集合的重要性,并且在小波變換后的顯著性處理和比特平面掃描中是以每4個(gè)像素點(diǎn)為一組進(jìn)行判斷,減少了掃描周期,有效改善了壓縮效率。改進(jìn)的SPIHT算法系數(shù)顯著性判斷流程如圖3所示。
首先,變換后的每個(gè)系數(shù)的重要性檢測(cè)是與其相鄰的4個(gè)系數(shù)一塊進(jìn)行的,如果已經(jīng)進(jìn)行了檢測(cè),則判斷這個(gè)系數(shù)是否屬于上一位平面,即是否大于2倍的閾值,然后才能進(jìn)行這個(gè)單個(gè)重要系數(shù)的精細(xì)化處理或者單個(gè)不重要系數(shù)的重要性測(cè)試;其次,如果這個(gè)系數(shù)沒(méi)有進(jìn)行過(guò)重要性檢測(cè),需要判斷是否處于不重要的集合中,然后決定跳過(guò)這個(gè)零樹(shù)集合或者進(jìn)行分類(lèi)型的集合編碼。
大量高速圖像數(shù)據(jù)的接收和轉(zhuǎn)存是影響壓縮效率的關(guān)鍵因素。本設(shè)計(jì)中原始圖像數(shù)據(jù)的接收和壓縮后碼流的輸出都是采用LVDS總線的形式,為了增加通信接口的可靠性和方便調(diào)試,LVDS接口采用硬件物理轉(zhuǎn)換的方式實(shí)現(xiàn),接口芯片選用的是SN65LV1023A和SN65LV1224B芯片組。SN65LV系列LVDS接口芯片是TI公司的一款10位支持串入同步時(shí)鐘的高速串行/解串芯片,最高通信速率可達(dá)660 Mbps。在壓縮卡的輸入端采用SN65LV1224B作為原始圖像數(shù)據(jù)的接收器,實(shí)現(xiàn)圖像數(shù)據(jù)的串行至并行的解串工作;同時(shí)在壓縮卡的輸出端采用SN65LV1023A作為壓縮后數(shù)據(jù)流的驅(qū)動(dòng)器,實(shí)現(xiàn)壓縮碼流的并行至串行的轉(zhuǎn)換輸出。
由于圖像壓縮是以整幅圖像為單位進(jìn)行的,這就導(dǎo)致大量圖像數(shù)據(jù)在接收后不能立即進(jìn)行壓縮處理,而是要以幀為單位寫(xiě)入緩存,待一幅圖像接收完整后讀出壓縮。本次設(shè)計(jì)中高速圖像的接收緩存由內(nèi)部FIFO和乒乓DDR2存儲(chǔ)器兩部分組成,首先在接收端口采用內(nèi)部FIFO來(lái)緩沖數(shù)據(jù),當(dāng)系統(tǒng)數(shù)據(jù)調(diào)度模塊判斷到FIFO中數(shù)據(jù)后會(huì)以幀為單位將圖像數(shù)據(jù)分別存入乒乓結(jié)構(gòu)的DDR2存儲(chǔ)器中,供壓縮模塊讀出壓縮。在這兩者的數(shù)據(jù)轉(zhuǎn)移之間采用了DMA的數(shù)據(jù)傳輸方法,DMA數(shù)據(jù)轉(zhuǎn)移不需要CPU的參與處理,直接在兩個(gè)緩存之間開(kāi)辟數(shù)據(jù)傳輸通道,節(jié)約數(shù)據(jù)轉(zhuǎn)移時(shí)間,提高了圖像壓縮效率。圖4為數(shù)據(jù)轉(zhuǎn)存流程圖。
對(duì)于有損圖像壓縮來(lái)說(shuō),重構(gòu)的圖像與原始圖像總會(huì)存在一定的差異,為了定量地衡量出壓縮前后圖像的品質(zhì)變化,相對(duì)于用眼睛觀察比較,通常會(huì)再壓縮后給出峰值信噪比(PSNR)定量的表示壓縮效果。峰值信噪比單位為dB,它的值越大,就代表壓縮后圖像相比于壓縮前失真越少,壓縮效果越好。PSNR的計(jì)算公式為[7]:
其中 MSE 指 Mean Square Error(均方誤差),I(角標(biāo)n)指原始影像第n個(gè)pixel(像素)值的平方,P(角標(biāo)n)指經(jīng)過(guò)還原后的圖像第n個(gè)pixel(像素點(diǎn))值的平方。Framesize指的是圖像所包含的所有像素點(diǎn)。
本設(shè)計(jì)中圖像選用320*256像素的8bit測(cè)試圖片,由試驗(yàn)測(cè)試可知設(shè)計(jì)中NiosⅡ處理器配合LVDS接口芯片的數(shù)據(jù)傳輸速度可以穩(wěn)定達(dá)到100 Mbps,壓縮速度大于一秒鐘15幀,滿(mǎn)足設(shè)計(jì)要求。圖5和圖6分別是8倍壓縮及16倍壓縮后重構(gòu)的圖像,圖7中的兩條曲線為算法改進(jìn)前后對(duì)同一張圖片在相同壓縮比例下的壓縮峰值信噪比PSNR對(duì)比圖,其中星形曲線為原始算法的PSNR值,圓形曲線為算法改進(jìn)后的PSNR值??梢钥闯鱿嗤瑝嚎s比例下,改進(jìn)算法的PSNR值要比原始算法的大,說(shuō)明改進(jìn)后的壓縮效果比較好,并且在壓縮比例處于2到20左右時(shí)改進(jìn)后算法的優(yōu)勢(shì)非常明顯;同時(shí)也可以看出當(dāng)壓縮比不斷變高時(shí),PSNR值在減小,也就意味著壓縮程度大圖像失真嚴(yán)重,壓縮效果優(yōu)勢(shì)不是特別明顯。
本文提出了一種基于片上系統(tǒng)的圖像壓縮卡的設(shè)計(jì)方法,圖像壓縮算法采用適合硬件實(shí)現(xiàn)的簡(jiǎn)化SPIHT算法,圖像數(shù)據(jù)的接收和壓縮后碼流的發(fā)送采用LVDS接口,在數(shù)據(jù)轉(zhuǎn)移過(guò)程中采用DMA技術(shù),整個(gè)壓縮卡的操作邏輯都是在片上處理器NiosⅡ的控制下實(shí)現(xiàn)的?;贜iosⅡ的圖像壓縮卡接口簡(jiǎn)單、功能升級(jí)方便靈活,測(cè)試結(jié)果表明該壓縮卡壓縮性能穩(wěn)定,在高速數(shù)據(jù)采集傳輸系統(tǒng)中具有廣闊的應(yīng)用前景。
[1]陳斯斯.智能視頻監(jiān)控中的圖像壓縮與傳輸技術(shù)研究[D].長(zhǎng)沙:湖南大學(xué),2008.
[2]孫春風(fēng).基于LVDS技術(shù)的高速圖像采集系統(tǒng)的設(shè)計(jì)[J].儀表技術(shù)與傳感器,2009,46(3):46-51.
[3]傅祖蕓.信息論:基礎(chǔ)理論與應(yīng)用[M].北京:電子工業(yè)出版社,2001.
[4]劉麗娟,鄒雪城,雷旭,等.基于小波變換的圖像壓縮芯片的實(shí)現(xiàn)[J].半導(dǎo)體技術(shù),2003,28(1):20-23.
[5]尚媛園.基于SOPC技術(shù)的高速圖像采集控制系統(tǒng)的設(shè)計(jì)與研究[J].傳感技術(shù)學(xué)報(bào),2011,24(6):864-869.
[6]蔡偉綱.NiosⅡ軟件架構(gòu)解析[M].1版.西安:西安電子科技大學(xué)出版社,2007.
[7]張春田,蘇玉挺,張靜.數(shù)字圖像壓縮編碼[M].北京:清華大學(xué)出版社,2006.
Design of Image Compression of SPIHT Algorithm Card Based on NiosⅡ
PENG Qing-qing,DI Li-xia,ZHANG Hui,TANG Jie,LIU Hui
(North Automatic Control Technology Institute,Taiyuan 030006,China)
Aiming at the transmission problem of large quantities of data in high speed transmission system,this paper puts forwards a design method of image compression card based on system-on-chip.The method discusses configuration mode of using soft-core Nios Ⅱ processor,hardware implementation principle of simplifying SPIHT algorithm and operation process of receiving and storing of LVDS image data.The paper discusses detailedly the design principle and realization method of each module in system and provides actual performance testing and analysis to each module.The results show that the compression card has stable performance and can efficiently complete the image data compression.
LVDS,soft-core,SPIHT,image compression,DMA
TP27
A
10.3969/j.issn.1002-0640.2017.11.37
1002-0640(2017)11-0174-04
2016-09-21
2016-10-28
彭晴晴(1984- ),男,江蘇邳州人,碩士。研究方向:通信與數(shù)據(jù)傳輸技術(shù)。