《電子技術應用》
您所在的位置:首頁 > 模擬設計 > 設計應用 > JPEG2000中位平面編碼的存儲優(yōu)化方案設計
JPEG2000中位平面編碼的存儲優(yōu)化方案設計
摘要: JPEG2000的兩大核心模塊(見圖1),,小波變換和EBCOT[2](基于優(yōu)化截斷點的嵌入式塊編碼)其運算開銷很大,,占據(jù)了整個編碼器處理時間的一半以上。因此,,有必要研究合理的實現(xiàn)方式,,一般來說采取軟件實現(xiàn)方式相對比較簡單,比如JPEG2000的參考代碼jasper[3],,但實時處理的能力較差,,即使采用嵌入式系統(tǒng)的方案,如使用DSP或ARM等通用處理器,,基本上也是通過軟件的方式來實現(xiàn),,速度提升不大,必須針對塊編碼本身的特點設計高效的硬件結構單元,。只有這樣,,才能使JPEG2000在實時處理的應用中發(fā)揮其作用。
Abstract:
Key words :
  1引言

  JPEG2000的兩大核心模塊(見圖1),,小波變換和EBCOT[2](基于優(yōu)化截斷點的嵌入式塊編碼)其運算開銷很大,,占據(jù)了整個編碼器處理時間的一半以上。因此,有必要研究合理的實現(xiàn)方式,,一般來說采取軟件實現(xiàn)方式相對比較簡單,,比如JPEG2000的參考代碼jasper[3],但實時處理的能力較差,,即使采用嵌入式系統(tǒng)的方案,如使用DSP或ARM等通用處理器,,基本上也是通過軟件的方式來實現(xiàn),,速度提升不大,必須針對塊編碼本身的特點設計高效的硬件結構單元,。只有這樣,,才能使JPEG2000在實時處理的應用中發(fā)揮其作用。 

JPEG2000編碼器框圖

  2.存儲優(yōu)化的實現(xiàn)方案

  JPEG2000的嵌入式塊編碼是基于位平面的編碼,,其對象是小波變換后頻域系數(shù)組成的相對較小的碼塊,,大小一般是32×32或64×64。碼塊中的系數(shù)包含符號信息和許多個不同權值的幅度信息,。位平面編碼的思想就是將最重要的信息先進行編碼,,也就是權值較大的幅度信息先編碼,這樣配合后續(xù)的碼流組織(見圖1)即可使最終的碼流獲得漸進傳輸?shù)奶匦浴?/p>

  根據(jù)標準[1],,編碼過程中除了用到符號和幅度信息外,,還需要每個比特位的顯著信息,細化信息和訪問信息,。因此,,對于一個32×32的碼塊,編碼一個位平面時,,總共需要存儲5×1024位的信息,。另外,由于編碼是以一列中的4位為單位,,所以通常將每塊編碼信息存儲為256×4的形式(見表1),。

  但是事實上這種存儲結構是低效的,因為根據(jù)標準[1],,編碼一個比特位包括兩個步驟,,即判斷通道歸屬和編碼原操作。在這兩個步驟中,,需要訪問的信息包括當前位的顯著,、符號、幅度,、細化和訪問信息,,以及當前位的周圍8個比特位的顯著和符號信息。對于基于列的編碼方式,如果按照上面的方案存儲信息,,即將符號和顯著信息以字長為4存儲,,則實際上每次編碼一列,需要讀入前一編碼帶(通常將每4行稱為一個編碼帶),、當前編碼帶和后一編碼帶的共12位顯著和符號信息,,但是事實上只有其中的6位是有用的,其余6位是冗余信息,。由于編碼是基于比特位的操作,,因此會頻繁地訪問存儲區(qū)域,每次編碼一列必須讀出相應的各信息位,,編碼完成一列數(shù)據(jù)還要將相應的編碼信息再次寫回存儲區(qū)域,,以達到更新編碼信息的目的??梢?,采取上述4位字長的方案是非常低效的。

  所以,,本文設計了一種相對合理的存儲方案,,即在碼塊的最上面一行和最下面一行各添加一行全0數(shù)據(jù)(這是對顯著和符號平面而言),構成34×32的塊,,然后以兩行為一組,,并按交錯存儲的方式,即A,,B,,C,B,,A,,。,。,。,C,,B,,A,將信息分配至三塊存儲區(qū)域MEMA,,MEMB和MEMC(見表2),。

  另外,從顯著和符號信息緩存寫數(shù)據(jù)至相應的寄存器(6×3bit)時,,也要根據(jù)相應的編碼帶進行切換,,對于奇數(shù)編碼帶(假設第一個編碼帶記為零),,順序為ABC,對于偶數(shù)的編碼帶,,順序為CBA(見表3),。而且,從表三可以看出,,用于訪問MEMA,、MEMB、MEMC的地址信號的變化也不盡相同,,其中訪問MEMB的地址順序增長,,而MEMA的地址在從奇編碼帶過渡到偶編碼帶的過程中保持不變,從偶編碼帶過渡到奇編碼帶的過程中增長,,對于MEMC的情況正好和MEMA相反。

  因此,,必須設計相應的控制電路和地址產(chǎn)生電路來配合這個存儲方案,。

  3.硬件架構

  根據(jù)上面的分析,提出相應的位平面編碼器的硬件架構,,如圖2所示,,本架構針對32×32的碼塊。

內(nèi)存優(yōu)化的位平面編碼器的硬件架構

圖2.基于內(nèi)存優(yōu)化方案的位平面編碼器的硬件架構

  圖2中的位平面編碼器主要包括幾個部分,,即內(nèi)部緩存,,寄存器組,地址產(chǎn)生模塊,,判斷通道歸屬模塊,,編碼原操作模塊,狀態(tài)機模塊,,計數(shù)器模塊,。

  地址產(chǎn)生模塊包括兩個,地址產(chǎn)生模塊1負責產(chǎn)生讀取外部DWT系數(shù)緩存的地址信號;地址產(chǎn)生模塊2負責產(chǎn)生讀取內(nèi)部5塊緩存區(qū)域的相應地址,。

  判斷通道歸屬模塊,,根據(jù)當前寄存器組中相應的編碼信息,判斷比特位是否屬于當前的編碼通道,,如果屬于當前的編碼通道,,則進行相應的編碼原操作,否則跳過該比特位,,繼續(xù)編碼下一個比特位,。

  編碼原操作模塊包括4部分,即零值編碼,、符號編碼,、細化編碼和游程編碼,。一般的實現(xiàn)方式采用查找表來實現(xiàn)編碼原操作,而本設計中均采用組合電路的形式來實現(xiàn),,這樣可以提高產(chǎn)生CX(編碼模式)和D(編碼比特位)的速度,。

  狀態(tài)機模塊決定了整個編碼器的編碼流程,編碼主要分為兩個階段,,即預處理階段和模式產(chǎn)生階段,。預處理階段主要用于完成5塊緩存區(qū)域內(nèi)容的初始化,模式產(chǎn)生階段則按照顯著,、細化和清除通道的順序依次進行編碼,,輸出編碼模式給后續(xù)的算術編碼模塊。狀態(tài)機模塊還接收來自計數(shù)器的輸出,,決定當前處于什么狀態(tài),,在每個位平面編碼完成后必須轉(zhuǎn)到預處理階段,更新下一位位平面的幅度信息,,并清零訪問緩存的內(nèi)容,。

  4.Verilog設計

  本文建議的硬件架構采用VERILOG[4]語言描述,主模塊是bpc.v,,包括ram_block.v,,addr_generator.v,fill_ram.v,,pass_judge.v,,coding_primitive.v和state_machine.v共6 個子模塊。編碼流程的實現(xiàn)通過主狀態(tài)機產(chǎn)生相應的使能信號,,激活當前的模塊操作,,當操作完成后,由該模塊產(chǎn)生操作中止信號給主狀態(tài)機,,從而使編碼流程進入下一步驟,。下面列出了部分用于模塊間握手的代碼,代碼中以省略號代表其它一些控制信號和其它一些狀態(tài),。

  case (cstate)

  ,。。,。

  gene_layer:begin

  ,。。,。gene_layer_en = 1;fill_ram_en = 0;pass_judge_en = 0; ,。。,。

  if (gene_layer_fin) nstate = fill_ram;else nstate = gene_layer;end

  fill_ram:begin

  ,。,。。gene_layer_en = 0;fill_ram_en = 1;pass_judge_en = 0; ,。,。。

  if (fill_ram_fin) nstate = pass_judge;else nstate = fill_ram;end

  ,。,。。

  endcase

  5.實驗結果

  本設計采用modelsim工具進行了功能仿真,,使用quartus[6]工具進行了邏輯綜合,,得到的綜合結果如表3所示。

  下面是使用jasper軟件和本硬件實現(xiàn)對幾幅標準圖像(大小512×512的灰度圖像)編碼的時間比較,。

  6.結論

  本文通過對JPEG2000中的位平面編碼器的存儲方案進行了分析,,設計了一個高效的存儲結構以及相應的控制電路,設計采用verilog[4]語言描述,,通過quartus[6]軟件邏輯綜合后,,能夠在0.1s內(nèi)完成一幅512×512灰度圖像的編碼,編碼時間僅為jasper[3]軟件實現(xiàn)方案的30%左右,。由于塊編碼器的特點,,每個碼塊的編碼本身是獨立的,,可以并行進行,,而且根據(jù)綜合結果,使用EP1C12Q240C8完全可以在一塊芯片內(nèi)集成多個位平面編碼器的IP核,,每個塊編碼器核可以并行執(zhí)行,,因此,可以進一步提高編碼器的速度,,從而使實時處理圖像成為可能,。另外,還可以將設計定制為ASIC,,將最終產(chǎn)品應用到數(shù)碼相機,、圖像監(jiān)控中,其市場前景是十分廣闊的,。



 

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權禁止轉(zhuǎn)載。