基于FPGA的JPEG2000位平面编码器研究及实现

时间:2022-08-31 05:25:10

基于FPGA的JPEG2000位平面编码器研究及实现

【摘要】在JPEG2000编码系统中,EBCOT tire-1的位平面编码器的复杂编码运算是整个系统的瓶颈,为了加快位平面编码器运算的速度,我们提出并行VLSI架构,用来处理编码器中的并行程序预估和程序编码。我们以Verilog HDL编写硬件代码,并以Altera QuartusⅡ进行模拟硬件仿真。

【关键词】JPEG2000位平面编码并行fpga

jpeg2000是由国际标准化组织ISO和国际电信标准化联盟ITU-T于2001年联合颁布的新一代图像压缩国际标准[1],对于图像设备的应用,快速、低成本的JPEG2000图像压缩电路是决定其应用前景、范围的关键因素。现已有多种JPEG2000图像压缩电路设计方案[2~4],它们的主要分歧集中在位平面(bit-plane)编码器的设计上。其原因在于,位平面编码时间占全部编码时间的50%以上[4],是影响JPEG2000编码速度的最关键部分。

本文介绍在FPGA电路平台上一种高效的位平面、过程并行的位平面编码器电路设计。首先简要介绍位平面、过程并行的位平面编码算法和局部并行电路结构。然后给出具体的电路设计,最后给出实验结果和总结。

一、位平面、过程并行的位平面编码器

位平面编码是将小波系数从幅度的高位平面向低位平面渐进编码。每个位平面编码又分为3个编码过程:重要性传播过程(significance propagation pass,SP)、幅度细化过程(magnitude refinement pass,MP)和清除过程(cleanup pass,CP)。这3个过程按照SP,MP,CP顺序进行,系数的重要性状态随着编码的进行而变化。各编码过程的具体编码工作由4个编码模块执行,分别是零编码模块(zero coding,ZC)、符号编码模块(sign coding,SC)、幅度细化模块(magnitude refinementprimitive,MRC)和行程编码模块(run length coding,RLC)。SP过程使用ZC模块和SC模块执行编码;MP过程使用MRC模块执行编码;CP过程使用RLC模块、ZC模块和SC模块联合执行编码。

在Tsai[5]的编码结构中,程序编码电路需等待程序预估电路完成建立预估表后才开始编码动作,这样程序编码电路会有一段时间无动作,因此我们设计了并行编码结构电路,将程序预估电路和程序编码电路以并行方式进行各自的动作,可以减少建立预估表所耗的时间,图1给出了总体结构概念图。数据存储器中的小波系数,经过编码信息产生器和程序预估处理器后送到编码信息寄存器中,控制器控制移位寄存器将合适的数据送到数据线上,每个位平面的编码模块从数据线上读取输入信号,输出相应的上下文和数据对,算术编码器利用这些上下文和数据对进行后续编码。

二、并行结构的位平面编码器的实现

我们所设计的位平面编码硬件电路结构图如图二所示,包含(A)地址产生模块、(B)存储器模块、(C)移位寄存器模块、(D)更新和预估模块、(E)编码信息产生器、(F)编码信息寄存器模块、(G)控制电路模块、(H)程序编码处理模块。具体介绍如下:

A、地址产生模块:包含两种电路:存储器地址产生电路、位平面计数器电路,存储器地址产生电路用于产生读

写内部或外部存储器地址,包含外部存储器、存储器、寄存器地址产生器,而位平面计数器电路用于对预测电路和编码电路所处理的位平面进行计数。

B、存储器模块:包含编码块、符号、重要状态、预估和数值增量存储器。

C、移位寄存器模块:包含编码块、符号、重要状态、预估和数值增量移位寄存器。

D、更新和预估模块:包含重要状态更新模块、数值增量更新模块和程序预估模块,重要状态更新模块从编码块移位寄存器和重要状态移位寄存器读取资料,用来判断目前行是否有新的重要状态出现;数值增量更新模块读取数值增量移位寄存器和重要状态更新模块所送出的sig_update_en信号,来判断是否要更新数值增量移位寄存器模块,程序预估模块读取重要状态更新模块所送出sig_update_en信号和预估移位寄存器中所有寄存器资料,来预估目前行的程序状态并更新预估移位寄存器。

E、编码信息产生器模块:为了让程序预估电路与程序编码电路并行动作且互不干扰,因此加入此模块读取程序预估移位寄存器和各移位寄存器的资料,来产生目前行的4个预编码位元的编码信息。

F、编码信息寄存器模块:在编码信息产生器电路中,一次针对一行产生4组编码信息,并写入编码信息寄存器,且程序电路在一个周期内由编码信息产生器读出一行的编码信息进行编码。

G、控制电路模块:包含控制单元和编码处理器,以有限状态机设计方式来产生控制信号,控制电路中存储器读写、预估电路和编码电路的动作,控制单元和编码处理器功能分述如下:

a、控制单元:电路开始于一个新的编码块,需先从外部数据存储器中载入编码块数据到编码块数据存储器和符号存储器。由控制单元送出控制信号到位置产生器(Address Generator)产生读取和写入的位置,完成数据存储器载入之后,开始电路的编码动作。从最重要位平面开始,控制单元送出控制信号使能程序预估电路和编码信息产生电路,并由编码块、符号、重要状态等存储器读出行资料,产生程序预估和编码信息。完成一行之后再继续处理下一行,并送出控制信号将更新模块、预估模块和编码信息产生器电路产生的数据写入符号存储器、预估存储器、数值增量存储器和编码信息寄存器中,直到完成一个位平面的处理。接着判断目前位平面是否是最不重要位平面,如果是的话,就完成编码块的编码,否则从下一位平面开始编码。

b、编码处理器:用来控制程序编码处理电路和编码信息寄存器的读取,当开始一个编码块的编码时,编码处理器送出控制信号到编码信息寄存器中,一次读出4组编码数据,并先判断这4组编码数据的rlc状态。若rlc状态皆为“01”,代表这4个编码位由程序3的Run-Length Coding编码,便送出pass_select信号为“001”至程序编码处理电路中,否则代表4个编码位是由不同程序所编码,将一次送出一位pass_select信号。而psaa_select信号时每组编码信息中的程序状态,当完成一个位平面,接着判断目前位平面是否为最不重要位平面,如果是,即完成编码块的编码,否则从下一位平面所对应到的寄存器读取编码数据,继续下一个位平面的编码。

H、程序编码处理模块:包含4中编码电路,分别为零编码模块(zero coding,ZC)、符号编码模块(sign coding,SC)、幅度细化模块(magnitude refinementprimitive,MRC)和行程编码模块(run length coding,RLC),由编码处理器从编码信息寄存器中读出编码数据送到各编码电路中,并由编码处理器送出的pass_select信号来选择由哪一编码电路输出,如图3所示。

三、试验结果及结论

针对本文提出的位平面编码器结构,我们以Verilog-HDL语言描述硬件电路,并以Altera QuartusⅡ7.0软件进行硬件仿真及验证,电路效率如图4所示。

经过硬件电路的实现和验证,在并行程序预估部分对于nxn的编码块只需n个周期即可完成程序预估,并可减少编码判断的周期,且程序编码在每个周期都会产生Context(CX)和Decision(D),使电路没有闲置时间,加快编码速度,与现今已提出的编码结构相比,可节省3倍编码时间以达到快速编码的需求。

参考文献

[1] JPEG 2000 Part 1 020719 (Final Publication Draft). ISO/IEC JTC1/SC29/WGI N2678, 2002-07

[2] Xu Chao, Han Yanju, Zhang Yizhen. Bit-plane and Pass Dual Parallel Architecture for Coefficient Bit Modeling in JPEG2000. IEEE Int.Conf. on Acoustics, Speech and Signal Processing (ICASSP 2004),Montreal, Canada, 200-05

[3] Andra K, Charkrabarti C, Acharya T. A High-performance JPEG2000 Architechture. IEEE Trans. Circuits Syst. Video Technol., 2003-03:209-218

[4] Lian C J, Chen K F, Chen H H, et al. Analysis and Architecture Design of Block-coding Engine for EBCOT in JPEG2000. IEEE Trans.Circuits Syst. Video Technol., 2003-05: 219-230

[5] T.H.Tsai and L.T.Tsai,“JPEG2000 Encoder Architecture Design with Fast EBCOT algorithm,”IEEE VLSI-TSA International Symposium.pp.279-282,April 2005

上一篇:光纤通信的技术优势与应用弊端分析 下一篇:平安变电站改造项目管理改善研究