适用于jpeg2000标准的高速ebcot编码器的制作方法

文档序号:7531731阅读:240来源:国知局
专利名称:适用于jpeg2000标准的高速ebcot编码器的制作方法
技术领域
本发明提出了一种高速EBCOT编码器的VLSI结构,该EBCOT编码器符合JPEG2000标准。
JPEG2000标准中的EBCOT编码流程如下如

图1所示,将各个子带的小波系数分割成一个个矩形的码块(code block),每个码块独立编码。假设每个小波系数用“符号+绝对值”这种二进制数表示的话有Mb位,则每个码块也就相应地被逐层量化为Mb个位平面,如图2所示。编码过程是按照从最高位(MSB)的位平面到最低位(LSB)的位平面的顺序逐层编码。在这种逐层编码的过程中,如果一个小波系数从最高位起每个被编码的位都为0,则这个系数被认为是“不重要的”(insignificant)。一旦有出现了第一个非零比特,当它被编码后则该系数就变成“重要的”(significant)了,紧接着该系数的符号位也被编码。从此,该系数以后的比特位都成为“精炼”位。由于小波变换将图像的大部分能量都集中到低频子带,大部分小波系数的绝对值都很小,这导致初始的几个位平面全为“不重要的”,因此这几个初始平面几乎没有对整个tile的图像提供信息量。在JPEG2000标准中,在EBCOT编码之后紧接着就进行基于“内容”的自适应二进制算术编码(MQ编码),就是为了充分利用这种冗余来提高压缩效率的。
为产生嵌入式码流,各码块中的小波系数以位平面的方式独立编码。JPEG2000标准将一个比特平面的数据分成三组,采用了三个编码过程分别编码(如图3所示)。这样做的目的是为了在每个编码过程后都提供一个可能的截断点,“使图像失真下降最大而同时码流增加却最小”的信息得以最优先编码传输,从而达到“最优化截断”的效果。也就是说,若图像的压缩率固定,则可以获得最小的失真率;若失真率固定,则可以获得最小的压缩码流。
用一个状态变量来表示码块中的相应的一个系数是“重要”还是“不重要”。初始化时,每个系数都是“不重要”的。按照从最高位(MSB)的位平面到最低位(LSB)的位平面的顺序逐层编码,当幅度位中的第一个非零的位被发现后,该系数就由“不重要”转为“重要”了。
第一个编码过程被称为“重要性传播过程”。凡是“重要”系数四周的8个系数,若原来是“不重要”的,则成为“重要”的概率很高,因此在被安排在第一个编码过程。
第二个编码过程被称为“幅度精炼过程”。对所有“重要”系数在本位平面的比特进行编码。
第三个编码过程被称为“清除过程”。对本位平面剩下的所有还未编码的比特进行编码。由于这些比特成为“重要”的概率最小,所以把它们放在最后。
上下文(context)是由被编码系数的周围8个系数的重要性来决定的,如图4所示,h代表左右的比特,v代表上下的比特,d代表对角的四个比特。由于各码块独立编码,对于码块边界的系数,只考虑其在本码块内的相邻系数的“重要性”,而在本码块外的相邻系数则一律为“不重要的”。
最终的压缩码流可以在任意一个编码过程的终点被截断。
具体编码过程详见JPEG2000标准ISO/IEC 15444-1JPEG 2000 image coding system,2000,Final Committee Draft Version 1.0。
EBCOT编码器是JPEG2000编码器的核心,也是硬件实现最复杂的模块。由于是对每个位平面逐层编码,而且一个位平面需要三个编码过程,这样导致了编码效率非常低下。比如一个8×8的码块,小波系数深度为16,如果一个时钟周期编码一位,则需8×8×16×3=3072个周期,远远低于小波变换模块(DWT)和算术编码模块(MQ)的处理速度,成为整个JPEG2000编码系统的瓶颈。
为了提高EBCOT编码器的处理效率,目前采用的方法主要有(1)并行的幅度精练(Magnitude Refinement Paralleling)技术(2)列并行操作(Column Paralleling)技术采用这些方法的EBCOT电路设计有Kishore Andra,Tinku Acharya,and ChaitaliChakrabarti,“EFFICIENT VLSI IMPLEMENTATION OF BIT PLANE CODER OF JPEG2000”,IntelCorporation,2002;以及Chung-Jr Lian,Kuan-Fu Chen,“Analysis and Architecture Design of LiftingBased DWT and EBCOT for JPEG2000”,National Taiwan University。
这两种加速策略的实质是并行实现,但输出码流的组织会很复杂,为了和JPEG2000标准一致,需要很多缓存;而且编码的次序改变会影响到编码的结果,大大增加了硬件的复杂度。而且即使采用了以上的方法,EBCOT的处理速度仍然很低。鉴于以上缺点,对高速EBCOT编码器的设计方法仍需进行进一步研究。
本发明提出的适用于JPEG2000标准的EBCOT编码器是基于现有EBCOT编码器的改进,其内部采用了4组BIT平面作为缓存,分别代表被编码的位平面、符号平面和状态平面,以大大降低对外部MEMORY的存取频率;采用“探测—编码”的加速技术,将三个编码扫描过程合为一个扫描过程,以提高编码效率;同时运用2级流水时序,以进一步提高执行速度。
本发明为了提高EBCOT编码器的处理效率,采用的加速策略有(1)跳过无需编码的像素(Pixel Skipping)适用于整个位平面的三个编码过程(“重要性传播过程”、“幅度精炼过程”和“清除过程”)(2)跳过无需编码的列(Column Skipping)适用于整个位平面的三个编码过程(“重要性传播过程”、“幅度精炼过程”和“清除过程”)(3)跳过无需编码的层(Level Skipping)适用于整个码块由于对于大多数非低频子带的码块来说,系数的幅度值都很小,高位的头几个位平面往往全为0,所以并非码块的每一层都需要编码。因此,采用“跳过无需编码的层”的方法,以提高编码效率。
对于一个位平面来说,虽然需要三次编码过程,但每次只编码该位平面的一部分比特,无需逐位扫描,因此采用“跳过无需编码的像素”、“跳过无需编码的列”和“跳过无需编码的层”三种加速策略。本发明提出了一种“探测—编码”的方法,根据上述加速策略,即先找出下一个待编码的比特的位置,然后再对其进行编码。这样三次编码过程的扫描量实质上只相当于一次全扫描,编码效率提高了三倍。由于探测器的硬件复杂度较高,为了实现设计目标(主频100MHz),本发明采用了两级流水线结构,使“探测”和“编码”分两级,并行实现。
本发明根据上述三种加速策略提出了一种EBCOT编码器的VLSI结构,采用了“探测—编码”的方法,两级流水时序。本发明整体电路结构如图5所示,第一级主要包括两个8×8的位平面的缓存PLAN_A(502)、PLAN_B(503)和一个8×8的符号平面的缓存SIGN_PLAN(501);标志着每个位平面的层数的寄存器LEVEL_A(505)、LEVEL_B(506);表示两个位平面缓存PLAN_A(502)、PLAN_B(503)是满(1)还是空(0)的标志位BPSA(513)、BPSB(514);表示哪一个位平面被编码,哪一个LEVEL被输出的标志位coding_pla;一个4×4的可编程的“游动探测窗”(515)和相应的16位的探测器(516);“游动窗”的起始地址seg_addr(507)和探测器(516)探测到的待编码地址bit_addr(509)。第二级主要包括三合一的编码器(517)和输出结果寄存器CX(519)和D(520)。两组状态机cp_fsm0(511)和cp_fsm1(512)分别控制两级流水的运行。
本发明的具体编码过程如图6所示对于一个独立的码块,从最高层(MSB)位平面起,若该位平面全部比特为零,则该位平面不编码(只在码流中加个标记),直接进入MSB-1层位平面;若MSB-1层位平面仍为全零,则直接进入MSB-2层位平面;......直到有一层位平面不全为零,则对该位平面进行一次“清除过程”扫描和编码;然后从下一个平面起直到最后一个平面,分别进行“重要性传播过程”、“幅度精炼过程”和“清除过程”三次扫描和编码。
在本发明中,为了减少对外部存储器的访问次数,编码器包含了两个8×8的位平面的缓存PLAN_A(502)、PLAN_B(503)和一个8×8的符号平面的缓存SIGN_PLAN(501),以及标志着每个位平面的层数的寄存器LEVEL_A(505)和LEVEL_B(506)。标志位BPSA(513)和BPSB(514)分别表示了两个位平面缓存PLAN_A(502)、PLAN_B(503)是满(1)还是空(0),若二者只要有一个为空,DMA就可以往相应的缓存里写入新的位平面数据,并且往相应的寄存器写入该位平面的层次;写完后又重新置位。标志位BPSA(513)和BPSB(514)的状态图如图7所示。
本发明为了表示位平面的每个比特应该进行何种编码,采用了一个8×8×2的状态平面(STATE_PLAN)。在状态平面中,00表示应该对相应的比特在“清除过程”中被编码(CLEANUP);01表示应该对相应的比特在“重要性传播过程”中被编码(SC);10表示相应的系数在上一层刚刚成为“重要的”,应该在“幅度精炼过程”中被编码(SON);11表示相应的系数在上一层以前就已经成为“重要的”,应该在“幅度精炼过程”中被编码(GRANDSON)。
当EBCOT开始对一个新的码块进行编码时,整个状态平面恢复为CLEANUP状态。
在“重要性传播过程”中,若被编码系数被判为重要的,则它的下方、右上、右方、右下的比特若本来为CLEANUP状态,则现在转化为SC状态。
当“清除过程”编码结束后(即该位平面编码结束),整个状态平面将被更新。具体更新策略如下凡是原来状态为SON或GRANDSON的,一律变为GRANDSON;原来状态为SC或CLEANUP的,比特值为1的位的状态变为SON;否则若四周有SON或GRANDSON或比特值为1的位,则状态变为SC。
在本发明中,为了实现“跳过无需编码的层”,在小波变换结束后,就把每个子带的小波系数中绝对值最大的位数保存下来。当开始对新的位平面编码时,直接跳到“绝对值最大的位数”所表示的层,开始往PLAN_A和SIGN_PLAN里写数据和符号。
在本发明中,为了实现“跳过无需编码的像素”和“跳过无需编码的列”,采用了“探测—编码”两级流水,第一级负责“探测”到所需编码的像素,第二级负责对探测到的像素进行编码。
为了“探测”到所需编码的比特,本发明采用了一个可编程的“游动探测窗”(如图8所示)。
在“重要性传播过程”、“幅度精炼过程”和“清除过程”三个编码过程中,可以分别探测到“游动探测窗”(515)内的所需编码的比特。在“游动窗”内用1表示需要编码的比特,0表示无需编码的比特(在“游动窗”内已经完成编码的比特也用0表示)。本发明中“游动窗”大小取4×4。seg_addr(507)为“游动窗”的起始地址,“游动窗”探测到所需编码的比特后可以输出相对地址dtc_addr,则被探测到的待编码地址bit_addr(509)为seg_addr+dtc_addr;每探测到一个地址,“游动窗”在下一个上升沿移动到以被探测到的比特所在的列为起始地址的位置,即seg_addr取被探测到的比特所在的列的地址;若“游动窗”内没有探测到可以编码的比特,则“游动窗”直接跳到下一个4×4的位置,并输出EMPTY信号。
针对4×4的“游动探测窗”,16位的探测器(516)是实现将三个编码过程合一的跳跃式“探测—编码”的关键模块。探测的优先级是从0位到15位的,为了减小时延,并使设计归整化,本发明采用了一个两级的“四叉树”结构来实现16位的探测器(见图9)。A、B、C、D每个子探测器从“游动窗”的四个比特中判断出是全0还是全1,否则输出第一个1的相对地址。根探测器根据各个子探测器的结果,输出最终“游动窗”内的探测结果dtc_addr表示“游动窗”内所需编码的位的相对地址,RLC_condition表示符合游程编码的条件,four_zero表示需要游程编码的比特全为零,Empty表示在“游动窗”内没找到所需编码的比特。
图2显示各码块被逐层量化为Mb个位平面。
图3显示以三个编码过程对位平面进行编码的示意图。
图4显示待编码比特的四周8个相邻比特示意图。
图5显示EBCOT编码器的电路结构示意图。
图6显示EBOCT的编码流程。
图7显示标志位BPSA和BPSB的状态图。
图8显示游动的探测窗示意图。
图9显示两级的“四叉树”结构的16位的探测器电路图。
图10显示主状态机cp_fsm0的状态图。
图11显示第一个编码过程“重要性传播过程”和第二个编码过程“幅度精炼过程”的时序图。
图12显示第一个编码过程“重要性传播过程”和第二个编码过程“幅度精炼过程”的时序图。
图13显示本发明的EBCOT编码器处理速度是KishoreAndra同类设计的3倍。
整个EBCOT编码器的运行由两组状态机cp_fsm0和cp_fsm1组成。其中cp_fsm0是主状态机,主要控制“探测”过程;cp_fsm1是从状态机,它的状态即为cp_fsm0在上一时钟周期的状态(即cp_fsm1[t]=cp_fsm0[t-T]),主要控制“编码”过程。主状态机cp_fsm0的状态图见图10,主要由以下15个状态组成(1)ait状态完成一个位平面编码后,若位平面A、B都为空的,则进入wait状态;(2)tart状态若开始对新的码块的第一个位平面编码,则进入start状态;(3)R2_SC3状态这是第二个编码过程“幅度精炼过程”和第三个编码过程“清除过程”之间的过度状态,在此状态下进行的是“清除过程”编码;(4)NIFORM1状态第三个编码过程“清除过程”中游程编码时表示第一个1的位置(高位);(5)NIFORM0状态第三个编码过程“清除过程”中游程编码时表示第一个1的位置(低位);(6)LC0状态第三个编码过程“清除过程”中游程编码时表示一列四个比特的值全为0;(7)C3状态表示第三个编码过程“清除过程”中的零编码;(8)IGN3状态表示第三个编码过程“清除过程”中的符号位编码;(9)NVALID3状态表示第三个编码过程“清除过程”中在当前“游动窗”内未找到需编码的比特;(10)PDATE状态表示第三个编码过程“清除过程”中结束后,对状态平面进行升级;(11)C1状态表示第一个编码过程“重要性传播过程”中的零编码;(12)IGN1状态表示第一个编码过程“重要性传播过程”中的符号位编码;(13)NVALID1状态表示第一个编码过程“重要性传播过程”中在当前“游动窗”内未找到需编码的比特;(14)MR2状态表示第二个编码过程“幅度精炼过程”的状态;(15)SC1_MR2状态这是第一个编码过程“重要性传播过程”和第二个编码过程“幅度精炼过程”之间的过度状态,在此状态下进行的是“幅度精炼”编码。
本发明的改进算法通过MATLAB验证,相应的电路用Verilog语言进行RTL级的描述,并在Verilog-XL中仿真。
本发明采用了“探测—编码”两级流水时序。第一级“探测”出需要编码的比特的地址,第二级对该比特进行相应的编码。第一个编码过程“重要性传播过程”和第二个编码过程“幅度精炼过程”的时序图见图11;第三个编码过程“清除过程”的时序图见图12。
本发明采用了SMIC 0.18u CMOS1P4M工艺标准单元库,通过DESIGN-COMPILER综合后,由APOLLO工具完成布局布线。
用STAR-RC对该版图提取RC参数至.spef文件,再转换为.sdf文件,反标入综合后的网表进行版图后仿真,然后分别用PRIME-TIME和PRIME-POWER进行时序分析和功耗分析,结果如下(1)本发明的处理速度本发明的的主频最高可达100MHz,处理能力为1 Bit/cycle,即100M Bit/Sec;是Kishore Andra,Tinku Acharya,and Chaitali Chakrabarti,″EFFICIENT VLSI IMPLEMENTATION OF BIT PLANECODER OF JPEG2000″,Intel Corporation,2002同类设计处理能力的3倍,如图13所示。(2)本发明的芯片面积本发明的随机逻辑约为14822门,与Tinku Acharya,and Chaitali Chakrabarti,″EFFICIENTVLSI IMPLEMENTATION OF BIT PLANE CODER OF JPEG2000″,Intel Corporation,2002同类设计面积相当。(3)本发明的功耗本发明在电源电压为1.8v,主频为100MHz的情况下的平均功耗约为13.8mW。
权利要求
1.一种适用于JPEG2000标准的EBCOT编码器,是基于现有EBCOT编码器的改进,其特征在于其内部采用4组BIT平面作为缓存,分别代表被编码的位平面、符号平面和状态平面,以大大降低对外部MEMORY的存取频率;采用“探测—编码”的加速技术,将三个编码扫描过程合为一个扫描过程,以提高编码效率;同时运用2级流水时序,以进一步提高执行速度。
2.根据权利要求1所述的EBCOT编码器,其特征在于所述的“探测—编码”技术是(1)对于整个位平面的三个编码过程“重要性传播过程”、“幅度精炼过程”和“清除过程”,跳过无需编码的像素;(2)对于整个位平面的三个编码过程“重要性传播过程”、“幅度精炼过程”和“清除过程”,跳过无需编码的列;(3)对于一个码块的各个位平面之间,跳过无需编码的层(Level Skipping)。
3.根据权利要求1所述的EBCOT编码器,其特征在于采用的两级流水时序,其第一级电路包括两个8×8的位平面的缓存PLAN_A(502)、PLAN_B(503)和一个8×8的符号平面的缓存SIGN_PLAN(501);标志着每个位平面的层数的寄存器LEVELcA(505)、LEVEL_B(506);表示两个位平面缓存PLAN_A(502)、PLAN_B(503)是满还是空的标志位BPSA(513)、BPSB(514);表示哪一个位平面被编码,哪一个LEVEL被输出的标志位coding_pla;一个4×4的可编程的“游动探测窗”(515)和相应的16位的探测器(516);“游动窗”的起始地址seg_addr(507)和探测器(516)探测到的待编码地址bit_addr(509);第二级电路包括三合一的编码器(517)和输出结果寄存器CX(519)和D(520);两组状态机cp_fsm0(511)和cp_fsm1(512)分别控制两级流水的运行。
4.根据权利要求3所述的EBCOT编码器,其特征在于采用的一个可编程“游动探测窗”(515),分别用1和0表示需要编码的比特和无需编码的比特,“游动窗”大小为4×4BIT,“游动窗”的起始地址为seg_addr(507),“游动窗”探测到所需编码的比特后可以输出相对地址dtc_addr,则被探测到的待编码地址bit_addr(509)为seg_addr+dtc_addr;每探测到一个地址,“游动窗”在下一个上升沿移动到以被探测到的比特所在的列为起始地址的位置,即seg_addr取被探测到的比特所在的列的地址;若“游动窗”内没有探测到可以编码的比特,则“游动窗”直接跳到下一个4×4的位置,并输出EMPTY信号。
5.根据权利要求3所述的EBCOT编码器,其特征在于所述的16位探测器采用一个两级的“四叉树”结构来实现,A、B、C、D每个子探测器从“游动窗”的四个比特中判断出是全0还是全1,否则输出第一个1的相对地址;探测器根据各个子探测器的结果,输出最终“游动窗”内的探测结果dtc_addr表示“游动窗”内所需编码的位的相对地址,RLC_condition表示符合游程编码的条件,four_zero表示需要游程编码的比特全为零,Empty表示在“游动窗”内没找到所需编码的比特。
全文摘要
本发明提出一种适用于JPEG2000标准的,硬件消耗少、处理速度快的EBCOT编码器VLSI结构,以进一步提高JPEG2000编码系统的性能。本发明提出的EBCOT编码器内部采用了4组BIT平面作为缓存,分别代表两组被编码的位平面、符号平面和状态平面,以大大降低对外部MEMORY的存取频率;采用“探测-编码”的加速技术,将三个编码扫描过程合为一个扫描过程,以提高编码效率;同时运用2级流水时序,以进一步提高执行速度。本发明大大提高了JPEG2000数字图像压缩编码芯片的编码速度,可满足许多高端实时的多媒体应用领域。
文档编号H03M7/30GK1477878SQ03129689
公开日2004年2月25日 申请日期2003年7月3日 优先权日2003年7月3日
发明者华林, 朱珂, 周晓方, 章倩苓, 华 林 申请人:复旦大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1