<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于FPGA的JPEG解碼器設計與實(shí)現

基于FPGA的JPEG解碼器設計與實(shí)現

作者: 時(shí)間:2017-06-05 來(lái)源:網(wǎng)絡(luò ) 收藏

隨著(zhù)多媒體技術(shù)的蓬勃發(fā)展,視頻編解碼技術(shù)得到了長(cháng)足的進(jìn)步,人們先后制定了多個(gè)數字圖像視頻編解碼標準。其中仍然是目前最流行的靜止圖像壓縮格式,在手持設備和網(wǎng)絡(luò )中有廣泛的應用。

本論文工作是無(wú)線(xiàn)投影機控制器設計中的一部分,見(jiàn)圖1。該控制器以開(kāi)放源代碼處理器LEON3為核心,具有以太網(wǎng)、VGA、PCI等接口,PCI接口用來(lái)連接無(wú)線(xiàn)網(wǎng)卡,VGA接口用來(lái)連接投影機,這樣構成一個(gè)無(wú)線(xiàn)投影系統。PC機通過(guò)有線(xiàn)網(wǎng)絡(luò )或無(wú)線(xiàn)網(wǎng)絡(luò )向控制器傳輸壓縮圖像數據,經(jīng)過(guò)解碼器解碼后顯示在投影儀上,從而實(shí)現多臺電腦共享一臺投影機,并且避免了連線(xiàn)的麻煩,具有一定的市場(chǎng)前景??紤]到系統的靈活性,本控制器選用Altera FPGA作為實(shí)現平臺,設計可以無(wú)縫地轉移到Altera Hardcopy技術(shù),從而實(shí)現低成本。

本設計利用硬件描述語(yǔ)言(VHDL)設計了 Baseline的解碼系統。

本文引用地址:http://dyxdggzs.com/article/201706/349177.htm

1 JPEG解碼器原理

JPEG解碼器主要由四部分組成:圖像頭信息的讀取、熵解碼、反量化、IDCT(反離散余弦變換),其數據流圖見(jiàn)圖2。

從圖中可以看出,解碼器首先從JPEG圖像數據中讀取Header信息,得到與解碼相關(guān)的如哈夫曼表、量化表以及圖像大小等信息,并且將這些信息存儲在RAM或者寄存器中,供后面的步驟調用。

在圖像頭信息讀取完成后,解碼器進(jìn)一步讀取壓縮編碼的數據并對其進(jìn)行熵解碼。壓縮編碼的數據采用哈夫曼(Huffman)編碼。哈夫曼編碼是一種常用的壓縮編碼方法,是Huffman于1952年為壓縮文本文件建立的。它的基本原理是:將頻繁使用的數據用較短的代碼代替,而較少使用的數據用較長(cháng)的代碼代替,每個(gè)數據的代碼各不相同。這些代碼都是二進(jìn)制碼,且碼的長(cháng)度可變,因此哈夫曼編碼是可變長(cháng)編碼的一種。在JPEG中采用游程編碼與范式huffman編碼進(jìn)行數據的壓縮存儲,并且直流系數(DC)與交流系數(AC)分開(kāi)編碼,提高了壓縮效率。因而在熵解碼過(guò)程中需要分別對直流系數和交流系數分別解碼。當前直流系數為上一個(gè)直流系數加上當前熵解碼數據(即殘差)。

當解碼完一個(gè)MCU(Minimal Coded Unit)后,接下來(lái)就是進(jìn)行反量化的操作,即將解碼出來(lái)的數據乘以一個(gè)量化系數。

最后是IDCT(反離散余弦變換)操作,即DCT(離散余弦變換)的反變換。離散余弦變換(DCT)是N.Ahmed等人在1974年提出的正交變換方法,它常被認為是對語(yǔ)音和圖像信號進(jìn)行變換的最佳方法。通過(guò)DCT變換,將數據從一個(gè)域變換到另外一個(gè)域,其大多數高頻分量的系數變?yōu)?。人眼對低頻分量比較敏感,對高頻分量則不太敏感;因而量化的結果是去掉了不太重要的高頻分量,降低了碼率。在JPEG解碼過(guò)程中需要通過(guò)IDCT還原圖像原始數據。IDCT部分是計算量最大的單元,對此單元設計的好壞將直接影響到解碼速度。

2 JPEG解碼器設計與實(shí)現

針對JPEG解碼流程特點(diǎn),本JPEG解碼器硬件總體設計如圖3所示。JPEG CONTROLLER負責調度各個(gè)模塊的執行;Src_ram存儲著(zhù)JPEG原始圖像數據;Addr_gen模塊產(chǎn)生下一個(gè)需要讀取字節的地址;Read_markers模塊讀取JPEG圖像的圖像頭信息,并且將頭信息保存在Register files中,相應的量化表信息及huffman表將存儲在Dqt rams和Dht rams中;Huff_derived_tbl是由huffman表生成的用于熵解碼的表格;Decode MCU 模塊從Src_ram讀取JPEG圖像數據并解碼,解碼出來(lái)的數據將逆zig-zag順序存儲在Block ram中;IDCT模塊讀取Block ram中的哈夫曼解碼數據進(jìn)行反量化和IDCT變換,之后將數據輸出到Ram。下面將對各個(gè)模塊的設計作詳細的介紹。

2.1 Addr_gen模塊設計

此模塊用于產(chǎn)生讀取Src_ram的地址并生成下一個(gè)要讀取字節的地址。其硬件實(shí)現如圖4虛線(xiàn)右邊部分所示。在非跳轉情況下,當RD信號有效時(shí),Addr_gen計數器每次遞增1個(gè)單位。

跳轉情況下,即skip有效時(shí),其計數器工作如圖4虛線(xiàn)左邊部分所示,當讀入地址為Addr_n的數據后需要跳轉k個(gè)單位的字節(Skip_num=k),因為在讀取地址為Addr_n的數據Data_n后地址計數已經(jīng)增加了一個(gè)單位,因而在第三個(gè)時(shí)鐘周期能跳轉到地址為Addr_n+1+k的數據,而這第三個(gè)時(shí)鐘周期讀出來(lái)的數據Data_n+1將會(huì )被忽略。從第四個(gè)時(shí)鐘起此模塊將恢復正常的讀取數據功能。


2.2 Read_markers模塊設計

Read_markers讀取JPEG文件頭信息并且解釋?zhuān)梢韵伦幽K組成,見(jiàn)圖5虛線(xiàn)左邊部分。
(1)First_marker:判斷文件是否為JPEG文件,即判斷開(kāi)始的2B是否為FF D8;
(2)Next_marker:查找下一個(gè)標志;
(3)Get_sos:讀取sos(start of scan);
(4)Skip_var:跳過(guò)一些信息時(shí)被調用,給Addr_gen模塊傳送跳過(guò)信息標志;
(5)Get_sof:讀取sof(start of frame);
(6)Get_dht:讀取huffman表信息,存儲在Dht rams(見(jiàn)圖1);
(7)Get_dqt:讀取量化表信息,并存儲在Dqt rams(見(jiàn)圖1);
(8)Get_dri:讀取重起間隔,以MCU(Minimum Coded Unit)為單位。

硬件實(shí)現利用FSM(有限狀態(tài)機)來(lái)進(jìn)行控制。其模塊調度示意圖見(jiàn)圖5虛線(xiàn)右邊部分。

2.3 Decode_MCU模塊設計

Decode_MCU是jpeg解碼器設計中一個(gè)非常重要的單元,也是正式解碼的開(kāi)始。本設計中此模塊的設計見(jiàn)圖6虛線(xiàn)框中設計,主要由四個(gè)子模塊組成:Fill_buffer、Decode_blockIZZ、Process_restart和Controller。

(1)Fill_buffer:當32BITS_REG中的比特數不夠時(shí)控制器將啟動(dòng)此模塊讀取Src_ram中的數據并且加載到32bits_reg中,并且去掉碼流中的填充數據。
(2)Decode_blockIZZ:huffman解碼,并且將解碼數據逆zig_zag順序輸出。
(3)Process_restart:當JPEG圖像中有restart interval(Get_dri)標志,在解碼完由Get_dri規定的n個(gè)MCU后,控制器首先調用此模塊來(lái)進(jìn)行同步(在網(wǎng)絡(luò )傳輸中非常重要)。
(4)Controller:控制協(xié)調各模塊的執行。

核心模塊Decode_block硬件實(shí)現如圖6,虛線(xiàn)右邊是EXTEND[1]部分,采用查找表實(shí)現。Get_buffer即圖6中的32BITS_REG, Bits_left記錄32BITS_REG中剩余的比特數。Huff_D模塊每啟動(dòng)一次解碼一個(gè)熵編碼數據。由于DC編碼采用DPCM編碼,解碼直流(DC)時(shí)需要增加一個(gè)時(shí)鐘周期來(lái)加上上一個(gè)DC的值,從而得出如圖6所示的output,解碼交流系數(AC)時(shí)則在EXTEND后直接輸出。Sel_s_input為”00”時(shí),選通huffman解碼數據;為”01”時(shí),選通EXTEND后的數據;為”10”時(shí),選通加上了last_dc_val的數據。


2.4 IDCT模塊設計

IDCT(Inverse Discrete Consine Transform)是JPEG解碼器中最耗資源和計算量最大的單元。本設計為減少內存讀取,提高解碼速度,將反量化也放在IDCT模塊中實(shí)現。

離散余弦變換的公式和離散余弦逆變換的公式如下:

經(jīng)分析公式(1)可以做如下等效變換:

即通過(guò)兩次一維的IDCT變換即可實(shí)現二維的IDCT??紤]到數據的讀取,本設計IDCT模塊的設計如圖7虛線(xiàn)框中所示。

實(shí)現過(guò)程:首先讀取Block ram的一列,相應的反量化數據從Dqt ram中讀取,經(jīng)過(guò)IQ(反量化單元,即乘法器)后的8個(gè)數據存儲在regs中,之后控制器啟動(dòng)一維IDCT變換,并將反變換后的數據存儲在REG FILES的一列中。當一個(gè)Block ram中的8列數據全部反量化和IDCT變換后,控制器將切換成對REG FILES中一行的數據進(jìn)行一維IDCT變換,變換后的數據存儲在REG FILES中的一行中,之后再進(jìn)行下一行變換,直到8行數據全部IDCT 變換完?;趨⒖嘉墨I[2]的一維IDCT實(shí)現具有資源比較小和實(shí)現簡(jiǎn)單的特點(diǎn),通過(guò)對IDCT反變換矩陣系數分析,一維IDCT奇偶數據變換具有不同的結構化特點(diǎn),在此可以進(jìn)行單獨的設計,最后將兩部分的結果數據進(jìn)行碟形加減操作,得到一維IDCT的運算結果(見(jiàn)圖7)。這樣變換完的數據即可進(jìn)行輸出,送到顯示單元進(jìn)行色彩變換和其它后續處理后顯示。

2.5 測試與結果

本設計采用的硬件開(kāi)發(fā)平臺為ALTERA DE2,FPGA為EP2C35F672C6,在quartusii 5.0中進(jìn)行綜合,所耗資源和最大時(shí)鐘頻率見(jiàn)表1。2005年ACTEL[3]公司推出的JPEG-D IP的速度針對不同的平臺其速度變化從31M~69M,同年4I2I[4]公司推出的JPEG-D的最大速率為40M,從速度可以看出本設計達到了實(shí)時(shí)解碼的要求。

將VHDL與C語(yǔ)言實(shí)現的JPEG解碼器對圖像解碼產(chǎn)生的結果進(jìn)行對比,從而可以判斷解碼正確與錯誤。通過(guò)結果對比,本設計結果完全正確。

本設計嚴格按照VLSI自頂向下設計的一般流程,首先進(jìn)行C語(yǔ)言級建模[5],從而得到測試矢量和JPEG硬件解碼器的總體架構;之后完成了各個(gè)頂層模塊和子模塊的接口定義;最后進(jìn)行各個(gè)模塊的VHDL實(shí)現。從結果可知達到了實(shí)時(shí)解碼要求,并且節約了資源。



關(guān)鍵詞: 解壓縮 JPEG C語(yǔ)言建模

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>