《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計應(yīng)用 > 基于Avalon總線的圖像解壓縮IP核設(shè)計
基于Avalon總線的圖像解壓縮IP核設(shè)計
來源:電子技術(shù)應(yīng)用2011年第7期
何 偉, 王 艷, 張 玲, 鄔麗娜
(重慶大學(xué) 通信工程學(xué)院, 重慶400044)
摘要: 介紹了基于Avalon總線的靜態(tài)圖像壓縮標準JPEG基本模式解碼器軟IP核的設(shè)計和實現(xiàn)。IP核采用流水線和模塊化的設(shè)計方法,分別設(shè)計各個模塊完成其獨立的功能,然后將這些模塊組成一個頂層模塊,采用Avalon總線接口,利用SOPC Builder工具將IP核集成到系統(tǒng)中。該IP核極大地提高了解碼速度,具有可移植性,可以方便地集成到手機、數(shù)碼相機等數(shù)字產(chǎn)品中。
關(guān)鍵詞: JPEG 解壓縮 IP Avalon
中圖分類號: TP751
文獻標識碼: A
文章編號: 0258-7998(2011)07-144-04
The design of image decompression IP core based on the standard of Avalon
He Wei, Wang Yan, Zhang Ling, Wu Lina
College of Communication Engineering, Chongqing University, Chongqing 400044, China
Abstract: The paper introduce the design and realization of JPEG image decompression IP core based on the standard of Avalon.Every module was designed respectively in the way of pipeline and modularization.Then these module were made up top-level module,used Avalon bus interface and SoPC Builder,intergrating the IP core in the system.The IP greatly improves the decoding speed and have expansibility,can be integrated into various digital application such as cell phone and camara.
Key words : JPEG; secompression; IP; avalon


    隨著我國物聯(lián)網(wǎng)籌備和建設(shè)的推進,高速圖像處理技術(shù)的應(yīng)用領(lǐng)域不斷擴大,對圖像處理的要求也越來越高。由于未經(jīng)壓縮圖像的數(shù)據(jù)量非常龐大,對存儲空間和通信帶寬的需求是無限的,這就要求對圖像進行壓縮處理。JPEG圖像壓縮標準憑著其高壓縮率和靈活的應(yīng)用形式得到了廣泛的應(yīng)用。
    Avalon總線是Altera公司開發(fā)的用于Nios嵌入式處理器的參數(shù)化接口總線,由一組預(yù)定義的信號組成,是一種相對簡單的總線結(jié)構(gòu),主要用于連接片內(nèi)存儲器和外設(shè),以構(gòu)成SOPC系統(tǒng)。本文在研究JPEG算法的基礎(chǔ)上,設(shè)計了一種基于Avalon總線的圖像解壓縮IP核,以提高圖像解碼的速度,滿足實時性要求。
1 JPEG解壓縮原理
    JPEG(Joint Photographic Expert Group)是第一個適用于連續(xù)色調(diào)、多灰度、彩色或黑白靜止圖像的國際標準[1]。JPEG解碼的目的是將編碼后的壓縮數(shù)據(jù)轉(zhuǎn)換成適合于顯示器顯示的RGB信號。其解碼流程如圖1所示。

    解碼流程的主要功能模塊包括:(1)頭文件解析;(2)熵解碼,包括直流系數(shù)解碼、交流系數(shù)解碼和差分解碼; (3)反量化與反Z變換(掃描);(4)IDCT變換;(5)顏色空間轉(zhuǎn)換。將每個模塊用Verilog HDL語言進行設(shè)計[2],編譯后,利用Modelsim軟件對其進行功能仿真和時序仿真,最終完成各個單元的設(shè)計和IP核的實現(xiàn)。
1.1 頭文件解析單元
    在JPEG解碼模塊啟動后,頭碼流解析單元首先讀入JPEG文件的包頭,根據(jù)JPEG文件數(shù)據(jù)的存儲方式依次檢測數(shù)據(jù)流中包含的各種段的標識符,把要解碼的文件信息從數(shù)據(jù)流中解析出來并存儲到相應(yīng)的存儲單元,為后面壓縮數(shù)據(jù)的解碼做準備。
    頭碼流解析單元由頭碼流解析狀態(tài)機和一系列存儲單元組成。狀態(tài)機主要有Idle空閑狀態(tài)、ReadMarker讀取標志位狀態(tài)和ReadSegment讀取段內(nèi)信息三個狀態(tài)。該單元模塊初始狀態(tài)為Idle狀態(tài),當外部發(fā)出解碼開始信號時,模塊跳轉(zhuǎn)到ReadMarker狀態(tài),讀完標識符后,模塊進入ReadSegment狀態(tài)。在這個狀態(tài)下,模塊對每個標志段內(nèi)的信息進行解析,并對其中的重要信息如當前圖像的寬度、高度以及解碼需要的量化表和解碼表存儲到相應(yīng)的存儲單元。當所有的標記段解碼完成后,模塊又跳轉(zhuǎn)到Idle(空閑)狀態(tài)。其狀態(tài)轉(zhuǎn)移圖如圖2所示。

    頭文件解析單元模塊的輸入輸出信號分別為:復(fù)位信號(rst)、系統(tǒng)時鐘(clk)、輸入數(shù)據(jù)有效(DataInEnabe),輸入數(shù)據(jù)(DataIn)、狀態(tài)機狀態(tài)(state),讀取段內(nèi)信息時的狀態(tài)(process)。該模塊在Modelsim仿真軟件下的頂層仿真如圖3所示。由仿真圖可知,該單元可以每2個時鐘處理1 B的數(shù)據(jù)。

 

 

1.2 熵解碼單元
    JPEG圖像熵解碼由Huffman編碼、行程編碼和變長編碼三部分組成。其解碼過程為:對輸入的數(shù)據(jù)流進行Huffman解碼,解碼成功后得到一個變長的碼字,根據(jù)解析的Huffman解碼表尋址得到該碼字對應(yīng)的解碼信息。該解碼信息為8 bit,高4 bit代表在該頻域系數(shù)之前0的個數(shù),而低4 bit表示該頻域系數(shù)的二進制bit長度。最后,根據(jù)系數(shù)所占用的二進制bit長度,確定該頻域系數(shù)的值。
    從解碼過程可知,Huffman解碼步驟比較耗時,這是因為Huffman算法為變長編碼,壓縮后產(chǎn)生的碼字長度不固定,需要逐個bit地讀入數(shù)據(jù)。根據(jù)范式哈夫曼編碼的一個很重要特性:長度為i的碼字的前j位的數(shù)值大于長度為j的碼字的數(shù)值,即i>j[3]。因此可以構(gòu)造出一種并行結(jié)構(gòu)的huffman快速解碼算法。將N(N=1,2,3&hellip;15)bit長度的最小碼字低位補0擴充到16 bit,得到f(N)。對輸入的16 bit JPEG碼流code與f(N)和f(N+1)進行比較,如果f(N)<code<f(N+1),則可以確定待解碼碼字長度為N。在確定碼字長度后,定義offset=code-f(N)。若f(N)對應(yīng)的解碼信息的存儲地址為addr(N),則code的解碼信息的地址為offset+addr(N)。以該地址作為Huffman解碼表的讀地址,就可以得到對應(yīng)的Run/szie解碼信息。快速Huffman解碼算法結(jié)構(gòu)如圖4所示。

    熵解碼單元包括Huffman解碼及變長解碼和行程解碼。Huffman解碼完成后,再進行變長解碼和行程解碼。在該部分中,主要根據(jù)解碼出來的Run/size進行幅值的確定和0行程的解碼,同時設(shè)置了計數(shù)器counter用來記錄當前解碼符號在8&times;8數(shù)據(jù)塊中的位置。如果Run/size為00,則表示該圖像塊已解碼完成;如果Run/size為F0,則將counter加上16。否則,將counter加上Run,從碼流中讀取size位,判斷最高位,如果為0,則表示當前系數(shù)為負數(shù),將該bit以及后面讀入的bit全部取反;為1表示當前系數(shù)為正數(shù),將當前系數(shù)的剩余bit讀出,輸出到外部模塊。
    熵解碼單元模塊的輸入輸出信號有:復(fù)位信號(rst)、系統(tǒng)時鐘(clk)、輸入數(shù)據(jù)有效(DataInEnabe)、輸入數(shù)據(jù)(DataIn)、解碼出來的哈夫曼碼字(TableCode)、Huffman解碼表的尋址地址(DhtNumber)、行程0的個數(shù)(DhtZero),該頻域系數(shù)的二進制bit數(shù)(DhtWidth)、頻域系數(shù)的幅值(OutCode)。該模塊在Modelsim仿真軟件下的仿真如圖5所示。由仿真圖可知,該單元可以每1個時鐘解碼出一個哈夫曼碼字,每5個時鐘完成一個頻域數(shù)據(jù)的熵解碼。

1.3 反量化與反Z變換單元
    量化是圖像壓縮中最重要的部分。DCT變換并沒有壓縮圖像數(shù)據(jù),而是將能量聚集在低頻系數(shù)部分。DCT 的低頻系數(shù)包含了圖像的主要信息, 而其高頻系數(shù)是反映圖像較次要的信息。因此,結(jié)合人類視覺系統(tǒng)的特點,采用特定的量化表,忽略部分高頻分量,從而達到壓縮的目的,故量化也就是進行除法操作。相應(yīng)地,反量化過程就是將Huffman解碼后的64個頻域數(shù)據(jù)分別與對應(yīng)的量化表中量化系數(shù)相乘。而對0系數(shù)進行相乘沒有任何意義,因此,在該單元的設(shè)計中,僅對非0頻域系數(shù)進行相乘。在Huffman解碼模塊中,counter用于記錄已經(jīng)解碼的頻域數(shù)據(jù)的個數(shù),Run記錄0行程的個數(shù),將兩個數(shù)值相加作為量化表存儲單元的尋址地址,查到當前非0頻域系數(shù)對應(yīng)的量化系數(shù)。反Z變換則按照對應(yīng)關(guān)系輸出反量化后的數(shù)據(jù),處理起來比較簡單,本文不作討論。
    反量化與反Z變換單元模塊的輸入輸出信號有:復(fù)位信號(rst)、系統(tǒng)時鐘(clk)、輸入數(shù)據(jù)有效(DataInEnabe)、解碼出來的哈夫曼碼字(NumberCode)、解碼出來的非0頻域系數(shù)(OutCode)、量化表尋址地址(DqtNumber)、量化系數(shù)(DqtData)、輸出使能(DecodeEnable)、反量化后的數(shù)據(jù)(DecodeCode)。該模塊在Modelsim仿真軟件下的仿真如圖6所示。由仿真圖可知,通過對量化單元尋址,每個時鐘就可以完成一個數(shù)據(jù)的反量化過程。

1.4 IDCT變換單元
  對量化過的像素進行反Z變換,得到8&times;8的數(shù)據(jù)塊。圖像數(shù)據(jù)是編碼時通過正向離散余弦變換得到的結(jié)果,解碼時必須將其反向余弦變換,將數(shù)值c向時域轉(zhuǎn)換。目前,用硬件實現(xiàn)的快速算法的普遍思想[4]是把2D-IDCT分解成兩個1D-IDCT,再在1D-DCT做快速算法,但是這種方法會占用過多的芯片資源。本文采用分時復(fù)用的方法,用一個1D-IDCT模塊實現(xiàn)二維余弦變換,其總體結(jié)構(gòu)如圖7所示。

    對于1D-IDCT,本文采用經(jīng)典的陳氏算法。由于其算法具有清楚的分級結(jié)構(gòu),可以采用流水線結(jié)構(gòu)的設(shè)計方法來提高解碼速度。對于陳氏算法,采用4級流水線可以實現(xiàn)1D-IDCT算法。每級都有兩組寄存器,一組用于存放中間結(jié)果,另一組用于寄存運算結(jié)果,同時也作為下一級的輸入。該設(shè)計利用狀態(tài)機產(chǎn)生變換矩陣,通過共用乘法器來減少乘法器的使用,由原來的22個減少到6個,大大節(jié)約了邏輯資源。
    IDCT模塊的輸入輸出信號有:復(fù)位信號(rst)、系統(tǒng)時鐘(clk)、輸入數(shù)據(jù)有效(DataInEnabe)、反量化后的頻域系數(shù)(Data00In)、輸出使能(DataOutEnable)、IDCT變換行數(shù)(DataOutPage)、IDCT變換流水線級數(shù)(DataOutCount)、IDCT變換完成后的時域系數(shù)(Data0Out, Data10Out)。該模塊在Modelsim仿真軟件下的仿真如圖8所示。

1.5 顏色空間轉(zhuǎn)換單元
       在JPEG圖像進行編碼時,為了便于壓縮,需要將圖像數(shù)據(jù)由RGB色彩空間轉(zhuǎn)換到Y(jié)CbCr色彩空間。而在解碼時,為了便于終端顯示,則需要將圖像數(shù)據(jù)由YCbCr色彩空間轉(zhuǎn)換到RGB色彩空間。其變換關(guān)系如下:
  
    顏色空間轉(zhuǎn)換單元的輸入輸出信號有:復(fù)位信號(rst)、系統(tǒng)時鐘(clk)、輸入數(shù)據(jù)有效(DataInEnabe)、色彩空間信號(DataY、DataCb、DataCr)、變換后的RGB信號(OutR、OutG、OutB)。該模塊在Modelsim仿真軟件下的仿真如圖9所示,由仿真圖可知,在輸入一組信號后,3個時鐘周期可以得到對應(yīng)的一組RGB信號,直至完成色彩空間轉(zhuǎn)換算法。

2 基于Avalon總線的JPEG IP核設(shè)計
    Avalon總線是一種協(xié)議較為簡單的片內(nèi)總線,Nios通過Avalon總線與外界進行數(shù)據(jù)交換。Avalon總線的特點有:(1)所有外設(shè)的接口與Avalon總線時鐘同步,不需要復(fù)雜的握手/應(yīng)答機制。(2)所有的信號都是高電平或低電平有效,便于信號在總線中高速傳輸。(3)為了方便外設(shè)的設(shè)計,地址、數(shù)據(jù)和控制信號使用分離的、專用的端口。
    JPEG解碼時,前一個模塊的輸出是下一個模塊的輸入。根據(jù)Avalon總線協(xié)議,該解碼模型需要設(shè)置一組Avalon接口,控制部分由Nios完成。Avalon接口設(shè)置如下:clk為全局同步時鐘,DataInRead是握手信號,當為高時,向外設(shè)發(fā)送數(shù)據(jù)請求;DataInEnable為輸入數(shù)據(jù)有效信號,有效時,表示當前傳送的是有效的數(shù)據(jù),IP核開始接收圖像碼流DataIn;為了提高圖像的解碼速度,數(shù)據(jù)寬度設(shè)計為32 bit;當頭文件分析完成后,IP發(fā)送ImageEnable信號,為1時,表示開始正式圖像解碼,接下來進行Huffman解碼、IQ和IDCT變換,最終輸出3個8 bit的RGB數(shù)據(jù)。輸出數(shù)據(jù)只有在OutEnable為高時有效,當最后一個碼流結(jié)束后,輸出JPEGIDLE信號。JPEG解碼IP核的輸入輸出時序仿真圖分別如圖10、圖11所示。

    完成設(shè)計和驗證后,該IP核可以通過SOPC Builder工具加入到系統(tǒng)中。基于SOPC的JPEG解碼系統(tǒng)如圖12所示。圖中,SDRAM控制器實現(xiàn)處理器、VGA控制器和SDRAM之間的圖像數(shù)據(jù)存取。由于VGA直接從SDRAM中讀取數(shù)據(jù),所以將VGA的avalon_master接口連接到SDRAM上, 當VGA控制器發(fā)出讀有效信號到SDRAM時,SDRAM直接將圖像數(shù)據(jù)傳送給VGA控制器,VGA控制器同時產(chǎn)生行場同步信號,與RGB數(shù)據(jù)一起傳送到顯示器。SDRAM采用ICSI公司的數(shù)據(jù)寬度為16 bit、存儲容量為64 MB的IS42S8800來存儲解碼后的圖像數(shù)據(jù)。

    針對軟件解碼圖片速度慢的問題,本文設(shè)計了一種基于Avalon總線的JPEG解碼IP核。系統(tǒng)時鐘設(shè)置為50 MHz,在Quartus下進行綜合和仿真,采用CycloneII EP2C8Q208C8硬件芯片驗證了IP的正確性,極大地提高了圖片解碼的速度。同時,利用IP核的可重用性,可以將其用于其他需要實時圖像解碼的系統(tǒng)中,可降低系統(tǒng)設(shè)計的復(fù)雜度。
參考文獻
[1] 何東健.數(shù)字圖像處理(第1版)[M].西安:西安電子科技大學(xué)出版社,2003.
[2] 夏宇聞.Veriong數(shù)字系統(tǒng)設(shè)計教程(第2版)[M].北京:北京航空航天大學(xué)出版社,2008.
[3] 邵天增,尚冬娟.哈夫曼編碼應(yīng)用的一種改進[J]. 科技創(chuàng)新導(dǎo)報,2008,21:29,31.
[4] 鐘文榮,陳建發(fā).二維DCT算法的高速芯片設(shè)計[J].廈門大學(xué)學(xué)報自然科學(xué)版,2005,43(3):198-201.


 

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
国产精品毛片一区二区三区| 尤物九九久久国产精品的特点 | 久久综合九色九九| 性欧美大战久久久久久久免费观看 | 亚洲电影免费在线观看| 国内激情久久| 激情六月婷婷久久| 狠狠做深爱婷婷久久综合一区| 国产日本亚洲高清| 国产麻豆91精品| 国产精品香蕉在线观看| 国产精品你懂的在线欣赏| 欧美性开放视频| 欧美午夜宅男影院| 国产精品久久久久久av下载红粉| 欧美午夜一区二区三区免费大片 | 亚洲国产精品日韩| 91久久亚洲| 亚洲精品网址在线观看| 亚洲精品一区二区网址 | 久久日韩精品| 麻豆国产精品一区二区三区| 老司机一区二区三区| 麻豆精品视频在线观看| 欧美成人精品1314www| 欧美精品三级| 国产精品久线观看视频| 国产精品日韩在线一区| 国产日韩免费| 在线成人免费观看| 亚洲人精品午夜| 亚洲午夜免费福利视频| 午夜久久tv| 亚洲国产小视频在线观看| 日韩午夜电影av| 亚洲女人天堂av| 久久久久.com| 欧美激情91| 国产精品久久国产精品99gif | 亚洲精品护士| 亚洲一级特黄| 久久国产精品一区二区| 99re6这里只有精品| 亚洲午夜一级| 久久性色av| 欧美日韩免费区域视频在线观看| 国产精品电影网站| 激情成人av| 99视频超级精品| 欧美亚洲一区三区| 99国产精品视频免费观看一公开| 亚洲在线免费| 老色批av在线精品| 欧美日韩一区在线观看视频| 国产日产亚洲精品系列| 亚洲国产国产亚洲一二三| 一区二区三区久久网| 欧美亚洲一区二区在线观看| 亚洲精品国产精品国产自| 亚洲资源在线观看| 久久午夜av| 国产精品成人av性教育| 在线播放中文字幕一区| 一区二区三区日韩欧美精品| 亚洲第一级黄色片| 亚洲无毛电影| 美女主播精品视频一二三四| 欧美特黄一级大片| 伊人激情综合| 亚洲一区二区三区777| 亚洲精品激情| 久久精品国产免费| 欧美日韩亚洲综合一区| 韩日欧美一区| 亚洲男女毛片无遮挡| 夜夜嗨av一区二区三区网页| 久久看片网站| 国产精品日韩在线| 亚洲人人精品| 亚洲高清视频一区| 欧美伊人久久久久久久久影院| 欧美精品在线免费观看| 激情视频一区二区三区| 亚洲男人第一网站| 在线亚洲成人| 欧美国产一区视频在线观看 | 一本大道久久a久久精品综合| 亚洲国产成人久久综合一区| 午夜精品一区二区三区在线视| 欧美黄色日本| 在线观看精品一区| 午夜精品电影| 亚洲欧美视频一区| 欧美日韩精品一区二区三区四区| 一区在线影院| 欧美一区二区三区在| 午夜精品一区二区三区在线视 | 国产精品一国产精品k频道56| 亚洲精品自在在线观看| 亚洲黄色影片| 久久久噜噜噜久噜久久| 国产欧美日本在线| 亚洲一区二区三区在线播放| 一区二区三区黄色| 欧美日本一区二区视频在线观看| 伊人夜夜躁av伊人久久| 欧美一二三区精品| 久久gogo国模啪啪人体图| 国产精品毛片在线| 亚洲视频一区二区免费在线观看| 一本色道久久加勒比精品| 欧美激情影音先锋| 亚洲精品国产系列| 一区二区国产日产| 欧美日韩三区| 一区二区三区国产| 亚洲欧美国产精品专区久久| 欧美三区在线视频| 一区二区三区日韩在线观看| 亚洲天堂成人在线观看| 欧美三级网页| 一区二区三区高清视频在线观看| 亚洲天天影视| 欧美性大战久久久久久久蜜臀| 99精品福利视频| 亚洲一区在线观看免费观看电影高清| 欧美日本在线| 一区二区欧美在线| 午夜电影亚洲| 国产视频一区三区| 欧美中文在线观看国产| 久久网站免费| 亚洲国产成人在线视频| 日韩午夜中文字幕| 欧美日韩视频在线| 亚洲视屏一区| 久久精品国产在热久久| 韩国美女久久| 亚洲精品1234| 欧美日韩视频在线观看一区二区三区 | 午夜精品久久久久99热蜜桃导演| 国产精品日本精品| 欧美一区二区大片| 美女脱光内衣内裤视频久久网站| 亚洲国产天堂久久国产91| av成人黄色| 国产精品美女主播| 欧美专区第一页| 欧美黄在线观看| 亚洲少妇中出一区| 欧美在线视频二区| 伊人春色精品| 亚洲无玛一区| 国产综合婷婷| 在线亚洲成人| 国产亚洲精品福利| 亚洲乱码精品一二三四区日韩在线| 欧美日韩国产色站一区二区三区| 一区二区免费看| 久久久久久久成人| 亚洲人成高清| 欧美一级片久久久久久久| 精品9999| 亚洲夜间福利| 国语精品中文字幕| 在线一区观看| 国产在线拍偷自揄拍精品| 亚洲精品国产欧美| 国产精品视频久久久| 亚洲国产91精品在线观看| 欧美日韩国产在线播放| 午夜精品久久久久久久久久久久| 免费短视频成人日韩| 一区二区三区你懂的| 久久综合色播五月| 亚洲视频自拍偷拍| 欧美.www| 亚洲自拍偷拍色片视频| 欧美韩国一区| 亚洲欧美精品在线观看| 欧美激情在线狂野欧美精品| 午夜老司机精品| 欧美另类综合| 久久精品免视看| 国产精品家庭影院| 亚洲精品乱码久久久久久按摩观 | 久久米奇亚洲| 亚洲视频成人| 欧美大片在线观看一区二区| 亚洲一区二三| 欧美日韩高清一区| 久久成人精品电影| 国产精品二区在线| 亚洲精品综合| 好吊色欧美一区二区三区四区| 亚洲一区二区四区| 亚洲黄色小视频| 久久综合九色综合网站| 亚洲欧美日韩精品在线| 欧美日韩综合视频网址|