當(dāng)前位置:首頁(yè) > 工業(yè)控制 > 電子設(shè)計(jì)自動(dòng)化

摘 要: 提出了一種基于FPGA的JPEG-LS的多路并行譯碼系統(tǒng),運(yùn)用VHDL語(yǔ)言實(shí)現(xiàn),以提高圖像的譯碼速度。系統(tǒng)主要分為檢測(cè)模塊、譯碼模塊和碼流分配模塊三部分。在檢測(cè)模塊中提取和去除頭文件的圖像信息,譯碼模塊則根據(jù)算法對(duì)圖像數(shù)據(jù)進(jìn)行恢復(fù),碼流分配模塊為多路并行算法的關(guān)鍵,利用流水線結(jié)構(gòu)的思路采用乒乓操作將碼流從檢測(cè)模塊傳送到外部RAM。在譯碼時(shí)采用同樣的方法將數(shù)據(jù)送入多個(gè)譯碼模塊進(jìn)行譯碼。
關(guān)鍵詞: 現(xiàn)場(chǎng)可編程邏輯門(mén)陣列;碼流分配;多路并行;流水線;乒乓操作

JPEG-LS無(wú)損和近無(wú)損壓縮算法已經(jīng)在醫(yī)療和遙感圖像領(lǐng)域得到了廣泛應(yīng)用。在現(xiàn)有的硬件譯碼中實(shí)現(xiàn)高性能的JPEG-LS譯碼大都采用流水線處理方式[1]。并行運(yùn)算在硬件譯碼中的應(yīng)用使得其相對(duì)于軟件譯碼更有明顯的優(yōu)勢(shì)。由于FPGA具有系統(tǒng)結(jié)構(gòu)和邏輯單元靈活、集成度高、開(kāi)發(fā)周期短、可適用于較大規(guī)模的電路等優(yōu)點(diǎn),因此本設(shè)計(jì)中采用FPGA作為硬件開(kāi)發(fā)平臺(tái),對(duì)圖片的譯碼采用多路并行的方式[2]來(lái)實(shí)現(xiàn)高速譯碼。為了節(jié)省系統(tǒng)資源,本設(shè)計(jì)采用四路并行譯碼。由于處理的圖像信息量比較大,在圖片處理過(guò)程中需要對(duì)數(shù)據(jù)進(jìn)行緩存,而在芯片內(nèi)部的RAM無(wú)法滿足要求的情況下,采用外掛RAM對(duì)從檢測(cè)模塊和解碼模塊出來(lái)的圖片信息進(jìn)行緩存[3]。本多路并行譯碼系統(tǒng)主要由檢測(cè)模塊、譯碼模塊和碼流分配模塊組成。
1 檢測(cè)模塊
 檢測(cè)模塊用來(lái)對(duì)圖片信息的頭文件進(jìn)行處理。對(duì)于每一種圖像壓縮算法,其頭文件都有固定的一種格式。在檢測(cè)模塊中,接收到頭文件信息后首先檢測(cè)標(biāo)識(shí)號(hào)是否正確。為了正確提取頭文件中的圖像信息,設(shè)計(jì)中設(shè)置一個(gè)計(jì)數(shù)器對(duì)輸入的時(shí)鐘進(jìn)行計(jì)數(shù)。如果標(biāo)識(shí)號(hào)正確,則進(jìn)入下一個(gè)狀態(tài)并且計(jì)數(shù)器開(kāi)始計(jì)數(shù);若錯(cuò)誤則停留在當(dāng)前狀態(tài)檢測(cè)下一個(gè)標(biāo)識(shí)號(hào),計(jì)數(shù)器保持為0。標(biāo)識(shí)好并正確后去除標(biāo)識(shí)號(hào)信息,從頭文件后面的信息中在不同的狀態(tài)根據(jù)計(jì)數(shù)器的不同分別提取出圖像的高、寬、精度等信息。頭文件信息提取完之后,根據(jù)碼流長(zhǎng)度的值判斷選擇對(duì)數(shù)據(jù)進(jìn)行緩存。當(dāng)碼流長(zhǎng)度依次遞減為0時(shí),狀態(tài)選擇跳轉(zhuǎn)為最初狀態(tài),等待下一幅圖片的輸入。
2 譯碼模塊
譯碼模塊是對(duì)壓縮后的圖片信息進(jìn)行恢復(fù)。JPEG-LS的編碼方法是一種利用Glomb編碼和上下文建模的編碼方法。
 建模建立在上下文的基礎(chǔ)上。在上下文建模時(shí),每個(gè)樣本值都是以周?chē)鷰讉€(gè)像素的值為條件的,要確定一個(gè)概率分布用來(lái)編碼當(dāng)前樣本值。若樣本為x,如圖1所示,上下文是由圖中a、b、c、d 4個(gè)位置的重建樣本值來(lái)確定的。圖像數(shù)據(jù)的掃描順序是按從左到右從上到下進(jìn)行。通過(guò)對(duì)4個(gè)重建樣本值計(jì)算出3個(gè)梯度值D1、D2、D3,然后根據(jù)3個(gè)梯度值決定對(duì)x位置的樣本值采用游長(zhǎng)編碼還是采用常規(guī)編碼。當(dāng)梯度值D1、D2、D3全為0時(shí)或者全部小于近無(wú)損壓縮控制的壓縮比控因子(NEAR)值時(shí)選擇游長(zhǎng)編碼,否則選擇常規(guī)編碼。
常規(guī)編碼主要是一個(gè)對(duì)預(yù)測(cè)值、預(yù)測(cè)誤差的編碼過(guò)程和一個(gè)變量更新過(guò)程。在上下文建模之后是預(yù)測(cè)過(guò)程。預(yù)測(cè)值是由如圖1所示的a、b、c、d位置的樣本重建值對(duì)x位置的樣本值的一個(gè)預(yù)測(cè)。預(yù)測(cè)誤差則是預(yù)測(cè)值與實(shí)際值之間的差值。預(yù)測(cè)誤差后則根據(jù)上下文對(duì)其修正補(bǔ)償在預(yù)測(cè)過(guò)程中的系統(tǒng)偏差。對(duì)近無(wú)損壓縮而言,要對(duì)預(yù)測(cè)誤差進(jìn)行量化。

在游長(zhǎng)編碼中,如果a、b、c、d位置的樣本重建值的梯度值均為0,或者樣本重建值之間梯度值在近無(wú)損壓縮控制因子的范圍之內(nèi),則上下文建模選擇游長(zhǎng)編碼。游長(zhǎng)編碼過(guò)程不需要對(duì)樣本預(yù)測(cè)值和預(yù)測(cè)誤差編碼,編碼器從x位置開(kāi)始對(duì)連續(xù)出現(xiàn)樣本值相同的樣本均用a位置的樣本值來(lái)重建,直到樣本值之間的梯度值不滿足要求,或者到本行結(jié)束時(shí),結(jié)束游長(zhǎng)編碼。
圖像的解碼過(guò)程和編碼過(guò)程大致相同,即根據(jù)上下文之間重建樣本值的關(guān)系來(lái)確定x位置的樣本值,采用同樣的方式選擇是常規(guī)譯碼還是游長(zhǎng)譯碼。
3 碼流分配模塊
3.1 碼流分配方案
   碼流分配模塊為多路并行算法的關(guān)鍵,也是本設(shè)計(jì)的頂層模塊,負(fù)責(zé)對(duì)輸入碼流[5]的走向進(jìn)行調(diào)配。在本設(shè)計(jì)中采用4個(gè)外掛的RAM存儲(chǔ)解碼過(guò)程中的碼流數(shù)據(jù)。為了節(jié)省FPGA系統(tǒng)資源,本設(shè)計(jì)采用4路并行的方式,如圖2所示。首先碼流通過(guò)檢測(cè)模塊對(duì)圖像的頭文件進(jìn)行處理,將處理后的結(jié)果順序緩存到RAM1和RAM2中。當(dāng)緩存RAM寫(xiě)滿之后,RAM中的數(shù)據(jù)送入4個(gè)譯碼模塊dec1、dec2、dec3、dec4開(kāi)始譯碼。譯碼后的數(shù)據(jù)順序緩存到RAM3和RAM4中,然后顯示器循環(huán)調(diào)用RAM3和RAM4中的數(shù)據(jù)進(jìn)行顯示。

設(shè)計(jì)中將每個(gè)RAM的地址空間劃分為四個(gè)部分,分別存放一幀數(shù)據(jù)中4幅圖像的數(shù)據(jù)。在譯碼部分提取數(shù)據(jù)時(shí)也可根據(jù)RAM中存放圖片的位置對(duì)應(yīng)提取出所要譯碼圖片的信息。為了提高設(shè)計(jì)的整體性能和效率,設(shè)計(jì)中對(duì)檢測(cè)模塊和譯碼模塊采用不同頻率的時(shí)鐘,在檢測(cè)模塊采用50 MHz的時(shí)鐘,譯碼模塊則采用90 MHz的時(shí)鐘。由于對(duì)RAM讀寫(xiě)時(shí)鐘采用不同的頻率,保證了時(shí)序控制上有嚴(yán)格的要求。在第一個(gè)緩存周期中,從檢測(cè)模塊出來(lái)的數(shù)據(jù)采用乒乓操作的方法[4]首先存儲(chǔ)到RAM1的4個(gè)空間中。在第二個(gè)緩存周期,如果RAM1存儲(chǔ)滿、RAM2為空,則檢測(cè)輸出選擇信號(hào)將切換到RAM2上,開(kāi)始對(duì)RAM2進(jìn)行寫(xiě)操作,同時(shí)譯碼模塊輸入選擇信號(hào)切換到RAM1并對(duì)RAM1中的4幅圖像的數(shù)據(jù)采用流水線方式4路并行譯碼。在第三個(gè)緩存周期中,如果RAM1譯碼完成、RAM2寫(xiě)滿,則先將RAM1復(fù)位,再將檢測(cè)輸出選擇信號(hào)選擇RAM1,并對(duì)RAM1進(jìn)行寫(xiě)操作,譯碼輸入選擇信號(hào)選擇RAM2,開(kāi)始對(duì)RAM2中的4幅圖像譯碼。對(duì)RAM3和RAM4的讀寫(xiě)也采用相同的乒乓操作方式。在第三個(gè)緩存周期,譯碼輸出選擇RAM3,并對(duì)RAM3開(kāi)始寫(xiě)操作,當(dāng)RAM3寫(xiě)滿、RAM4為空時(shí),進(jìn)入第四個(gè)緩存周期,譯碼輸出選擇對(duì)RAM4寫(xiě)操作,屏幕顯示調(diào)用RAM3中的數(shù)據(jù)。到下一個(gè)操作時(shí)序時(shí),RAM3中的數(shù)據(jù)讀完、RAM4存儲(chǔ)滿,則對(duì)RAM3復(fù)位,譯碼輸出選擇RAM3,屏幕顯示調(diào)用RAM4中的數(shù)據(jù)。如此實(shí)現(xiàn)圖片的不間斷輸出。
3.2 乒乓操作并行控制的VHDL實(shí)現(xiàn)及仿真
設(shè)計(jì)中的乒乓操作主要體現(xiàn)在對(duì)RAM1和RAM2的讀寫(xiě)時(shí)序控制上。對(duì)RAM1和RAM2的寫(xiě)操作采用50 MHz的時(shí)鐘,而讀操作則采用90 MHz的時(shí)鐘。本設(shè)計(jì)在Modeltech_6.3a仿真工具下做時(shí)序和功能仿真。測(cè)試文件采用10位精度壓縮后的碼流作為譯碼的輸入,選擇16數(shù)據(jù)線的RAM作為緩沖儲(chǔ)存器。
設(shè)計(jì)中,用來(lái)控制RAM1寫(xiě)信號(hào)的為碼流輸入判斷信號(hào)fram,當(dāng)fram信號(hào)為1時(shí)則為有碼流輸入;data_valid用來(lái)控制是否為有效數(shù)據(jù);fram_flag1作為判斷一幀數(shù)據(jù)的4幅圖像在RAM1中是否存儲(chǔ)完成的標(biāo)志;fram_flag2作為判斷一幀數(shù)據(jù)的4幅圖像在RAM2中是否存儲(chǔ)完成的標(biāo)志。如果一幀數(shù)據(jù)的4幅圖像在RAM1寫(xiě)完則fram_flag1為1。同樣如果在RAM2中存儲(chǔ)完成則fram_flag2為1;ram1_ready為判斷RAM1是否準(zhǔn)備好接收數(shù)據(jù)的標(biāo)志。當(dāng)ram1_ready為1時(shí)表示已經(jīng)復(fù)位完成,準(zhǔn)備接收數(shù)據(jù);ram2_ready則為判斷RAM2是否準(zhǔn)備好接收數(shù)據(jù)的標(biāo)志;read_empty1為RAM1讀空信號(hào);read_empty1_delay為read_empty1的一個(gè)時(shí)鐘的延遲信號(hào);ram1_2為RAM1和RAM2之間的切換信號(hào)。ram1_2為0時(shí)表示選擇RAM1,為1時(shí)表示選擇RAM2;ram1_strm、ram2_strm為RAM中的輸入碼流信息;cnt1為以8為碼流計(jì)數(shù),當(dāng)其為奇數(shù)時(shí)RAM地址+1,當(dāng)其為偶數(shù)時(shí)RAM地址不變。
在50 MHz時(shí)鐘的上升沿,如果read_empty1=1、read_empty1_delay=0,則ram1_ready=1。如圖3所示為RAM1寫(xiě)操作時(shí)各寫(xiě)操作控制信號(hào)的波形圖。

設(shè)計(jì)中用來(lái)控制RAM讀操作的信號(hào)有write_full1,它是判斷RAM1是否寫(xiě)滿的標(biāo)志。復(fù)位時(shí),write_full1為0,當(dāng)一幀輸入碼流存儲(chǔ)到RAM1中后,write_full1為1。RAM2的滿標(biāo)志用write_full2信號(hào)來(lái)判斷。dec_end1為RAM1中信息譯碼結(jié)束標(biāo)志,RAM1中信息譯碼結(jié)束時(shí)dec_end1為1,復(fù)位時(shí)dec_end1為0。dec_end1_delay為dec_end1的一個(gè)時(shí)鐘延遲信號(hào)。dec_end2和dec_end2_delay分別為RAM2譯碼結(jié)束標(biāo)志和對(duì)譯碼標(biāo)志的一個(gè)延時(shí)。dec_permit為RAM1、RAM2的譯碼允許標(biāo)志。ram1_rd、ram2_rd分別為RAM1、RAM2的讀信號(hào)。dec_start1、dec_start2分別為RAM1和RAM2開(kāi)始譯碼的標(biāo)志位。
當(dāng)dec_end1_delay=0、dec_end1=1時(shí),dec_permit=1。當(dāng)dec_end2_delay=0、dec_end2=1時(shí),dec_permit=0。
當(dāng)write_full1=1、dec_end1=0、dec_permit=0時(shí),RAM1的譯碼開(kāi)始標(biāo)志位為1,表示開(kāi)始對(duì)RAM1的譯碼。當(dāng)write_full2=1、dec_end2=1、dec_permit=1時(shí),RAM2的譯碼開(kāi)始標(biāo)志位為1,表示開(kāi)始對(duì)RAM2的譯碼。
圖4為RAM1讀操作控制波形圖。從圖中可以看出,4個(gè)譯碼模塊采用流水線的方式根據(jù)RAM的地址分別讀取4幅圖像的數(shù)據(jù)進(jìn)行解碼。

本設(shè)計(jì)采用4路并行譯碼的方式,芯片的面積利用率為90%,雖然占用的邏輯單元數(shù)量比較多,但是譯碼速度卻有很大提高,充分體現(xiàn)出面積和速度之間的關(guān)系。設(shè)計(jì)是在ISE7.1的軟件環(huán)境下進(jìn)行綜合的。譯碼部分使用邏輯單元數(shù)目為4 414個(gè),占所用邏輯單元總數(shù)的17%,使用片內(nèi)RAM為11個(gè),占片內(nèi)RAM總數(shù)的3%,綜合頻率達(dá)到了135.485 MHz。采用90 MHz的時(shí)鐘譯碼,使得譯碼圖像輸出幀之間相隔約9 ms,真正實(shí)現(xiàn)了圖片譯碼的實(shí)時(shí)傳輸。在測(cè)試階段采用多幅遙感圖像對(duì)多路譯碼器進(jìn)行了測(cè)試,實(shí)驗(yàn)結(jié)果表明,在采用多路并行譯碼的情況下,能夠?qū)崿F(xiàn)快速、準(zhǔn)確的傳輸。本設(shè)計(jì)具有很好的可移植性,能夠應(yīng)用到圖片處理的許多領(lǐng)域中。
參考文獻(xiàn)
[1] PAPADONIKOLAKIS M E, KAKAROUNTAS A P. Efficient high-performance implementation of JPEG2LS encoder[J]. Journal of Real-time Image, 2008(3):303-307.
[2] 王浩,劉文怡,韓志軍.多通道同步數(shù)據(jù)采集與處理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].通信技術(shù),2009,42(1):297-299.
[3] 莊懷宇,吳成柯,鄧家先,等.JPEG2000 T2編碼快速算法及硬件實(shí)現(xiàn)[J].系統(tǒng)工程與電子技術(shù),2004,26(12):1939-1942.
[4] 王智,羅新民.基于乒乓操作的異步FIFO設(shè)計(jì)及VHDL實(shí)現(xiàn)[J].電子工程師,2005,31(6):13-16.
[5] 鄧家先,肖江,吳成柯,等.JPEG2000的重要性編碼[J].電路與系統(tǒng)學(xué)報(bào),2003,8(5):145-148.

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車(chē)的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車(chē)技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車(chē)工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車(chē)。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車(chē) 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱(chēng),數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱(chēng)"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉