《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于Avalon總線的圖像解壓縮IP核設計
基于Avalon總線的圖像解壓縮IP核設計
來源:電子技術應用2011年第7期
何 偉, 王 艷, 張 玲, 鄔麗娜
(重慶大學 通信工程學院, 重慶400044)
摘要: 介紹了基于Avalon總線的靜態圖像壓縮標準JPEG基本模式解碼器軟IP核的設計和實現。IP核采用流水線和模塊化的設計方法,分別設計各個模塊完成其獨立的功能,然后將這些模塊組成一個頂層模塊,采用Avalon總線接口,利用SOPC Builder工具將IP核集成到系統中。該IP核極大地提高了解碼速度,具有可移植性,可以方便地集成到手機、數碼相機等數字產品中。
關鍵詞: 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


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

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

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

 

 

1.2 熵解碼單元
    JPEG圖像熵解碼由Huffman編碼、行程編碼和變長編碼三部分組成。其解碼過程為:對輸入的數據流進行Huffman解碼,解碼成功后得到一個變長的碼字,根據解析的Huffman解碼表尋址得到該碼字對應的解碼信息。該解碼信息為8 bit,高4 bit代表在該頻域系數之前0的個數,而低4 bit表示該頻域系數的二進制bit長度。最后,根據系數所占用的二進制bit長度,確定該頻域系數的值。
    從解碼過程可知,Huffman解碼步驟比較耗時,這是因為Huffman算法為變長編碼,壓縮后產生的碼字長度不固定,需要逐個bit地讀入數據。根據范式哈夫曼編碼的一個很重要特性:長度為i的碼字的前j位的數值大于長度為j的碼字的數值,即i>j[3]。因此可以構造出一種并行結構的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)對應的解碼信息的存儲地址為addr(N),則code的解碼信息的地址為offset+addr(N)。以該地址作為Huffman解碼表的讀地址,就可以得到對應的Run/szie解碼信息。快速Huffman解碼算法結構如圖4所示。

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

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

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

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

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

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

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

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


 

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 99久久做夜夜爱天天做精品 | 国产亚洲欧美视频 | 亚洲精品免费日日日夜夜夜夜 | 日日综合网 | 婷婷综合五月中文字幕欧美 | 国产精品综合视频 | 成人区精品一区二区不卡亚洲 | 99精品欧美一区二区三区综合在线 | 久久最近最新中文字幕大全 | 男人天堂社区 | 日本国产精品 | 国产精品99久久99久久久看片 | 婷婷激情小说网 | 久草成人网 | 国产成人系列 | 五月激情丁香婷婷综合第九 | 国产精品免费一区二区三区 | 精品视频入口 | 超大乳首授乳一区二区 | 激情网在线 | 久久久久这里只有精品 | 国产人成午夜免视频网站 | 极品美女一级毛片 | 国产精品视频永久免费播放 | 久久久久久免费精品视频 | 日韩欧美一及在线播放 | 日日射日日干 | 五月天婷婷视频在线观看 | 毛片在线视频 | 广东东莞一级毛片免费 | 国产在线观看福利 | 不卡一区二区三区四区 | 天使萌一区二区三区免费观看 | 国产精品午夜免费观看网站 | 亚洲六月丁香色婷婷综合久久 | 久久精品久久久久观看99水蜜桃 | 五月婷婷色 | 精品成人毛片一区二区视 | 九九久久亚洲综合久久久 | 免费人成毛片动漫在线播放 | 国产成版人视频网站免费下 |