當(dāng)前位置:首頁 > 工業(yè)控制 > 工業(yè)控制
[導(dǎo)讀]摘要:介紹了基于靜止圖像壓縮標(biāo)準(zhǔn)JPEG解碼器IP核的設(shè)計與實現(xiàn)。設(shè)計采用適于硬件實現(xiàn)的IDCT算法結(jié)構(gòu),通過增加運(yùn)算并行度和流水線技術(shù)相結(jié)合的方法以提高處理速度。根據(jù)Huffman碼流特點,采用新的Huffman并行解碼硬

摘要:介紹了基于靜止圖像壓縮標(biāo)準(zhǔn)JPEG解碼器IP核的設(shè)計與實現(xiàn)。設(shè)計采用適于硬件實現(xiàn)的IDCT算法結(jié)構(gòu),通過增加運(yùn)算并行度和流水線技術(shù)相結(jié)合的方法以提高處理速度。根據(jù)Huffman碼流特點,采用新的Huffman并行解碼硬件實現(xiàn)結(jié)構(gòu),用簡單的算術(shù)運(yùn)算代替復(fù)雜的配對模式,解碼速度快,硬件成本低。該IP核可方便地集成到諸如數(shù)碼相機(jī)、手機(jī)以及掃描儀等各種應(yīng)用中。
關(guān)鍵詞:JPEG;IP核;Huffman;流水線設(shè)計

    基于IP(Intellectual Property)核的設(shè)計和可復(fù)用已成為SoC(System on a Chip)設(shè)計方法的主流設(shè)計方法。本設(shè)計實現(xiàn)了基于靜止圖像壓縮標(biāo)準(zhǔn)JPEG基本模式的解碼器軟IP核。JPEG(Joint Photograph ExpelsGroup)是1992年CCITT和ISO正式通過的連續(xù)色調(diào)靜止圖像壓縮標(biāo)準(zhǔn)。圖像的高數(shù)據(jù)量和廣泛應(yīng)用對圖像的存儲和傳輸提出了要求,有限的存儲容量和傳輸帶寬不能直接對圖像進(jìn)行存儲與傳輸,因此需要先對圖像進(jìn)行壓縮處理。JPEG壓縮算法因其優(yōu)異的壓縮性能成為目前最流行的圖像壓縮工具。

1 JPEG解碼IP核設(shè)計和實現(xiàn)
    在JPEG解碼器中,因為Huffman解碼是變長的,本次解碼結(jié)束后才能重新定位碼流,難以實現(xiàn)流水線設(shè)計,所以本設(shè)計中主要通過提高功能部件并行度和在功能模塊內(nèi)部實現(xiàn)流水線來提高解碼速度。因為解碼速度不定,所以各功能模塊間的握手信號很關(guān)鍵。每個模塊的數(shù)據(jù)輸出時也要考慮到后級模塊的數(shù)據(jù)輸入要求,這樣才能達(dá)到整個解碼過程的有序、高效進(jìn)行。JPEG解碼IP核總體架構(gòu),如圖1所示。


1.1 JPEG解碼IP核控制器設(shè)計
    JPEG解碼器控制器的作用是在不同解碼環(huán)節(jié)為各個單元模塊分配任務(wù),以控制中間運(yùn)算過程及最后輸出結(jié)果。采用了有限狀態(tài)機(jī)的設(shè)計方法,這是一種結(jié)構(gòu)清晰、設(shè)計靈活的方法,它易于建立、理解和維護(hù),特別是應(yīng)用于大量狀態(tài)轉(zhuǎn)移和復(fù)雜時序控制系統(tǒng)中更顯優(yōu)勢。控制器主要由一個Mealy型有限狀態(tài)機(jī)實現(xiàn),狀態(tài)轉(zhuǎn)移如圖2所示。


    初始化狀態(tài)(IDLE):復(fù)位或者一幅圖像解碼完成時進(jìn)入的狀態(tài),重新定位碼流,在解碼開始標(biāo)志有效時跳轉(zhuǎn)到標(biāo)志符解碼狀態(tài)(DeMar-ker)。
    標(biāo)志符解碼狀態(tài)(DeMarker):按JPEG碼流語法和JFIF文件格式解析標(biāo)記符,根據(jù)解析出的標(biāo)志符跳轉(zhuǎn)到相應(yīng)的標(biāo)志段解碼狀態(tài),如果解析到SOI標(biāo)志符或者是0xFFFF狀態(tài)不改變。
    解碼出錯狀態(tài)(False):若是在標(biāo)志段解碼出錯跳轉(zhuǎn)到False狀態(tài),通過輸出端口將出錯信號輸出,在得到外部反饋后跳轉(zhuǎn)到初始化狀態(tài)IDLE。
    應(yīng)用擴(kuò)展標(biāo)志段APPn、幀開始標(biāo)志段SOFO、量化表定義DQT標(biāo)志段、Huffman碼表定義DHT標(biāo)志段和掃描行開始SOS標(biāo)志段的解碼過程是相似的,在相應(yīng)標(biāo)志符后是標(biāo)志段的長度,可以根據(jù)這個長度值,結(jié)合JPEG碼流語法,進(jìn)行碼流解析,將所需的圖像信息如圖像尺寸、圖像格式、量化表、Huffman碼表等寫入相應(yīng)寄存器或者存儲器中,以便于后續(xù)壓縮數(shù)據(jù)的解碼。
    Huffman碼流解碼狀態(tài)(DeHuffman):在解析完掃描開始標(biāo)志段SOS后跳轉(zhuǎn)到Huffman碼流解碼狀態(tài),解碼圖像壓縮數(shù)據(jù),主要包括Huffman解碼、反量化、反Z字形重排、IDCT和輸出緩存等。
    控制器還負(fù)責(zé)外部輸入的調(diào)配工作,每個時鐘周期,都將本次解碼長度送至碼流緩存模塊,從而重新定位解碼碼流位置。因為有多種圖像格式,所以控制器還要負(fù)責(zé)各個模塊的亮度色度選擇信號的輸入。
1.2 碼流緩存模塊設(shè)計
    JPEG碼流是變長碼,數(shù)據(jù)量大,如果采用傳統(tǒng)的解碼方法對碼字的每個比特進(jìn)行處理,其輸出速率勢必不能滿足應(yīng)用要求。JPEG標(biāo)準(zhǔn)中數(shù)據(jù)編碼的最大碼長為26,而在標(biāo)志段解碼時要求碼長為8的整數(shù)倍,所以設(shè)計中采用兩個32位寄存器、一個32位桶形移位器、一個加法器和一個減法器的組合來實現(xiàn)該功能。其中,寄存器Rn負(fù)責(zé)從外部模塊讀取數(shù)據(jù),并和寄存器R1一起作為桶形移位器的輸入緩存。每個解碼周期,桶形移位器移出已解碼流的同時裝載新的待解碼流。減法器用于計算已處理碼長,傳送桶形移位器移位長度,判斷并控制R0的讀取和R1的更新。加法器用于碼流輸入時更新寄存器碼長和桶形移位器移位長度。這樣就為后續(xù)處理單元提供了連續(xù)不間斷的碼流,滿足了并行解碼處理的需求。
    桶形移位器的輸出是32位,因此每個時鐘周期R0、R1必須為其提供32位的有效碼流。圖3所示給出了桶形移位器輸入緩存的更新示例。


1.3 Huffman解碼模塊設(shè)計
    Huffman碼是變長編碼,若采用傳統(tǒng)的解碼方法逐位讀人碼流,先判斷碼字長度,再進(jìn)行解碼,效率較低,其解碼速率難以滿足應(yīng)用要求。本設(shè)計中提出了一種新的Huffman并行解碼硬件結(jié)構(gòu),Huffman符號表可配置,通用性強(qiáng)。用簡單的算術(shù)運(yùn)算代替復(fù)雜的配對模式,解碼速度快、硬件成本低。
1.3.1 Huffman解碼算法分析
    對于一組概率確定的符號,其最佳Huffman編碼有多種碼字分配方式。其中一種特殊的分配方式稱為單調(diào)編碼,這種編碼中長度相等的碼字在數(shù)值上是單調(diào)變化的,JPEG中Huffman編碼采用這種方式。單調(diào)編碼的單調(diào)性是指出現(xiàn)概率較大的符號其對應(yīng)的碼字的值一定小于概率小的符號對應(yīng)的碼字值。具體說來有兩個特性:
    (1)在某一特定長度對應(yīng)的碼字集當(dāng)中,碼字大小是連續(xù)變化的。
    (2)長度短的碼字Ck的值一定小于長度比它長的碼字Cm,且Ck一定小于Cm的前k位前綴。
    根據(jù)單調(diào)編碼的特性,可以證明:對于一個長為X的碼字,其長為K(1≤K<X)位前綴碼的值總是大于長度為K的最大碼字,同時其碼字總是小于長度為Y(Y>X)的最小碼字的K位前綴。這一結(jié)論表明當(dāng)把一串足夠長的碼流并行輸入碼長檢測器時,只可能得到惟一的有效碼長。
1.3.2 Huffman解碼模塊的硬件實現(xiàn)
    對于一個給定長度L的碼字,可以用碼長為L的最小碼字和該碼字相對于最小碼字的偏差offset來表示。如果解碼器將相同碼長的解碼符號順序存儲在RAM或者寄存器陣列中,則可以由最小碼字的地址和偏差offset得到解碼符號。解碼符號的地址可由式(1)得到
   
    在Huffman碼表定義DHT標(biāo)志段解碼時,可以得到各長度對應(yīng)的最小碼字Min Code、各最小碼字的地址Base Address和解碼符號Symbol,為了后續(xù)解碼需要,要將這些數(shù)據(jù)存入存儲器中。因為解碼包括了亮度DC系數(shù)、亮度AC系數(shù)、色度DC系數(shù)和色度AC系數(shù)4種情況,所以相應(yīng)地需要多個存儲器。
    表1所示給出了本算法和其他算法的實現(xiàn)比較??梢?,本算法的實現(xiàn)在速度和硬件成本綜合權(quán)衡之下比較有優(yōu)勢。


    因為Huffman編碼是無損壓縮,不存在誤差,所以Huffman解碼出來的數(shù)據(jù)也是沒有誤差的。本設(shè)計采用一個簡潔的Mealy型狀態(tài)機(jī)實現(xiàn),狀態(tài)轉(zhuǎn)移如圖4所示。圖5所示是相應(yīng)的Huffman解碼硬件結(jié)構(gòu)圖。


    接下來結(jié)合圖4和圖5介紹Huffman并行解碼流程。
    (1)初始化狀態(tài)(IDLE):復(fù)位或圖像壓縮數(shù)據(jù)解碼完成時進(jìn)入的狀態(tài),初始化相關(guān)寄存器。
    (2)解碼狀態(tài)1(S1):首先寄存從碼流緩沖模塊輸入26位圖像碼流,將高16位輸入碼長檢測單元,與Min Code Memory中存儲的各長度最小碼字并行比較,碼長檢測單元由選擇器、比較器和一個16選4的選擇器組成,得到碼字的長度L。接著由碼長為L的Huffman碼與相應(yīng)長度的最小碼字Min(L)計算出偏移量offset,從Base Address Memory中取出最小碼字Min(L)的地址Base Address,將兩者輸入8位加法器中,由式(1)可計算出該碼字對應(yīng)的解碼符號地址。然后根據(jù)這個地址從Symbol Memory中取出解碼符號,對DC來說是SSSS,對AC來說是RRRRSSSS。同時將移位寄存器中的碼字左移L位,將高11位編碼輸入到幅值寄存器中。
    (3)解碼狀態(tài)2(S2):將解析出的字長SSSS和碼長L輸入到5位加法器中,得出本次解碼總位長,輸出到碼流緩沖模塊,用于重新定位碼流,更新輸入數(shù)據(jù)。將幅值寄存器的高SSSS位選擇輸入一個12位中間寄存器的低位,該中間寄存器的高(12-SSSS)位移入幅值寄存器的最高位的相反值,若得到的中間寄存器的最高位為“1”,按.JPEG標(biāo)準(zhǔn),要再加1。這樣解析出來的就是頻率系數(shù),即DCT系數(shù),對于DC來說就是差值DIFF。解析完幅值后,進(jìn)行DC/AC系數(shù)解碼。
    DC/AC系數(shù)解碼:計數(shù)器用于計算解析系數(shù)在塊數(shù)據(jù)中的位置。若計數(shù)器值為零,表示解析出來的是DC系數(shù)的差值DIFF,要根據(jù)亮度色度選擇信號選擇相應(yīng)DCk-1,根據(jù)DCk=DIFF+DCk-1計算出DC值,并且更新DCk-1。若計數(shù)器值不為零,表示解析出來的是AC值,接下來對應(yīng)的有4個分支:1)若(RRRR,SSSS)=(0,0),表示此圖像塊解碼結(jié)束,輸出塊解碼結(jié)束標(biāo)志DecOneBlock,并清零計數(shù)器;2)若(RRRR,SSSS)=(15,0),表示連續(xù)16個零系數(shù),計數(shù)器加16,不輸出;3)若SSSS不為零,且計數(shù)器值+RRRR=62,表示解析出來的是圖像塊的最后一個系數(shù),計數(shù)器清零,并輸出塊解碼結(jié)束標(biāo)志DecOneBlock和DCT系數(shù)值;4)普通AC系數(shù),計數(shù)器加1,輸出計數(shù)器的值和DCT系數(shù)值。
1.4 反量化模塊設(shè)計
    本設(shè)計在Huffman解碼后沒有采用JPEG標(biāo)準(zhǔn)的先反Z字形重排再反量化的流程,而是先進(jìn)行反量化操作。如此只要Huffman解碼有DCT系數(shù)輸出時才需要進(jìn)行反量化運(yùn)算,能減少無效操作,降低功耗。
    反量化運(yùn)算時先將相應(yīng)的量化系數(shù)保存在寄存器陣列中,在Huffman解碼模塊有DCT系數(shù)輸入時,按其地址取出相應(yīng)的量化系數(shù),相乘后輸出到后級反Z字形重排模塊。
1.5 反Z字形重排模塊設(shè)計
    根據(jù)模塊輸入數(shù)據(jù)的特點,提出了一種優(yōu)化的硬件實現(xiàn)結(jié)構(gòu)。因為一個8×8圖像塊經(jīng)DCT變換后非零系數(shù)個數(shù)一般不超過總數(shù)據(jù)量的10%,所以設(shè)計中為寄存器陣列的每個寄存器都設(shè)定一個一位的使能標(biāo)志,在初始化時先將寄存器陣列中寄存器和相應(yīng)標(biāo)志位都賦零值,在輸入值為非零值時才寫入相應(yīng)地址,并置位對應(yīng)的使能標(biāo)志,這樣在寫入數(shù)據(jù)時不需要進(jìn)行零數(shù)據(jù)的存儲,而在輸出數(shù)據(jù)時只要根據(jù)使能標(biāo)志就能判斷是要讀寄存器陣列還是直接輸出零,所以可以減少對存儲器的讀寫操作,加快數(shù)據(jù)處理速度。
    反Z字形重排模塊不僅要接收反量化后的系數(shù),對其進(jìn)行反Z字形重排,同時要對圖像塊數(shù)據(jù)進(jìn)行一次行列轉(zhuǎn)置,這樣可以節(jié)省2個寄存器陣列,降低硬件成本。為了提高運(yùn)算并行度,提高解碼速率,滿足后級模塊數(shù)據(jù)要求,反Z字形重排模塊中采用了兩個64×14位雙端口寄存器陣列,進(jìn)行乒乓操作。
1.6 IDCT模塊設(shè)計
    2D-IDCT的實現(xiàn)選用行列分解法,所以主要功能模塊包括1D-IDCT模塊和行列轉(zhuǎn)置模塊。因為全流水線實現(xiàn)系統(tǒng)解碼硬件成本很高,所以設(shè)計中主要通過提高運(yùn)算并行度和在功能模塊內(nèi)部實現(xiàn)流水線運(yùn)算來提高解碼速度。IDCT模塊設(shè)計中采用了兩個1D-IDCT處理單元,并通過流水線技術(shù)實現(xiàn)高運(yùn)算速率。
1.6.1 1D-IDCT模塊設(shè)計
    本設(shè)計采用了一種運(yùn)算量少、數(shù)據(jù)流簡單且適于流水線實現(xiàn)的IDCT算法。通過對1D-IDCT數(shù)據(jù)流程的合理劃分,將其分4級,在每級中間插入寄存器,對每級流水線內(nèi)部運(yùn)算的時序進(jìn)行合理安排,在每級流水線內(nèi)共享算術(shù)單元,降低硬件成本。1D-IDCT快速算法的數(shù)據(jù)流程如圖6所示。


    通過對1D-IDCT數(shù)據(jù)流程的合理安排和資源共享,本設(shè)計共需4個加法器,4個減法器和4個乘法器,所用硬件資源比較少。而且本設(shè)計的處理速度快,每個時鐘周期輸入兩個像素,完成1D-IDCT的延遲時間是6個時鐘周期。在流水運(yùn)算時計算一個8點1D-IDCT只需要4個時鐘周期。
1.6.2 行列轉(zhuǎn)置模塊設(shè)計
    行列轉(zhuǎn)置矩陣的實現(xiàn)大部分設(shè)計采用雙RAM進(jìn)行乒乓操作完成,本設(shè)計采用一個8×8寄存器陣列和方向控制信號完成,可節(jié)省一半硬件資源,且控制簡單。當(dāng)有信號輸入時,方向控制信號值初始設(shè)為0,這時寄存器陣列的輸入輸出方向是從左到右,64個時鐘周期后方向控制信號反向變?yōu)?,這時寄存器陣列的輸入輸出方向是從下到上。如此循環(huán),即可實現(xiàn)行列轉(zhuǎn)置,如圖7所示。



2 綜合、仿真與性能分析
    設(shè)計時先用Matlab進(jìn)行算法級仿真與驗證,在RLT級設(shè)計時采用Verilog語言實現(xiàn),在Modelsim6.1中進(jìn)行功能仿真,選擇VIRTEX2系列xc2v250器件進(jìn)行FPGA驗證,從軟硬件方面都驗證了設(shè)計的正確性。
    使用Synopsys公司的Design Compiler工具在0.18μm的SMIC CMOS工藝條件下,對RTL代碼進(jìn)行綜合優(yōu)化。通過設(shè)置不同的面積、時序及功耗約束條件,縮短關(guān)鍵路徑的延時,時鐘頻率可達(dá)100 MHz的最優(yōu)設(shè)計,綜合出面積為721 695μm2,不包括存儲單元需要34.6 kB標(biāo)準(zhǔn)門。本設(shè)計能每秒能夠解碼1 920×1 080圖形25幀以上,所以也能用于一些有低成本需求的監(jiān)控、錄像系統(tǒng)。

3 結(jié)束語
    介紹了基于靜止圖像壓縮標(biāo)準(zhǔn)JPEG的解碼器IP核的設(shè)計,描述了硬件設(shè)計過程,提出了一種高效、低成本的JPEG解碼器架構(gòu)。設(shè)計通過VIRTEX2平臺進(jìn)行了FPGA驗證,并使用Synopsys公司的DC工具在SMIC 0.18 μmCMOS工藝條件下,對設(shè)計進(jìn)行面積和時間的優(yōu)化,在100 MHz時鐘頻率下工作時電路面積為721 695μm2,每秒能夠解碼1 920×1 080圖形25幀以上。本設(shè)計還支持多種圖像質(zhì)量和圖像格式,有較寬的壓縮比范圍,設(shè)計具有獨立性和完整性,也適用于數(shù)碼相機(jī)、手機(jī)和掃描儀等各種應(yīng)用。

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

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

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

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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