一种快速游程长度编解码电路的实现方法

文档序号:6522761阅读:265来源:国知局
专利名称:一种快速游程长度编解码电路的实现方法
技术领域
本发明采用一种新颖的硬件架构,利用较少的硬件资源,实现了快速游程长度编解码(Run length code/Run length decode)硬件电路设计。该发明可直接应用于数字图形图像压缩解压硬件加速器(如JPEG硬件压缩解压、动态视频图像压缩解压)芯片的设计,它有效地降低了游程长度编解码(RLC/RLD)电路的实现规模,同时提高了游程长度编解码的硬件处理速度,从整体上提高了系统的性能。
背景技术
目前,比较通用的游程长度编码(RLC)硬件电路的实现方法是(1)首先将基于块处理(Block processing)的量化器(Quantizer)输出的量化系数存储到量化系数暂存器(quantized coefficients memory)中,每个块的大小通常是8×8(如JPEG编码),也可以是4×4或16×16;(2)在当前块量化完成后,按照扫描顺序(水平,垂直或zigzag扫描),扫描量化系数暂存器,并计算出0值的游程长度,得到当前块的游程编码(Run length code),并将其存储到相应的RLC暂存器中。
(3)将RLC暂存器中的游程长度编码(RLC编码)送至下一级处理单元,即硬件或软件霍夫曼(Huffman)编码。
通用的游程长度解码(RLD)的实现方法是(1)将霍夫曼解码得到的游程码写入RLC暂存器中。
(2)反扫描得恢复出每个量化系数,并将其写至量化系数暂存器的相应位置。
(3)将游程解码(RLD)得到的量化系数送至下一级处理单元,即反量化器(Dequantizer)。
通用的游程长度编解码硬件电路在电路功能上没有任何问题,但电路实现规模相对较大,每个系数的扫描都单独占用一个时钟周期,在整体性能上,增加了一个块处理的流水延迟。

发明内容
本发明采用一种新颖的硬件架构,利用较少的硬件资源(无需游程长度编码输出暂存器RLC暂存器),去除了通用游程长度编解码(RLC/RLD)硬件实现时块扫描占用的时钟周期,在具体硬件实现时做到了快速高效地实现游程长度编解码。
本发明解决其技术问题所采用的技术方案如下总体设计思想是在编码时将游程长度编码(RLC)拆分到量化和霍夫曼编码两个阶段完成即在量化输出的同时完成非零系数的标记,在霍夫曼编码时实时完成扫描(Scanning)和游程长度编码(RLC)。在解码时,将游程长度解码(RLD)拆分到霍夫曼解码和反量化两个阶段完成,即在霍夫曼解码时完成反扫描(Inverse Scanning),在反量化时实时完成量化系数的恢复。
本发明的具体方案是(1)游程长度编码(RLC)的实现采用本发明的实现方法,需要为每一个量化系数设一个标记位寄存器,标记位的缺省值为0,对于一个8×8的块,需要64个标记位寄存器。在量化输出时,如果当前系数为非0值,则将相应标记位设为1,否则仍保持为0。当量化完成后,接下来需要完成的是实时RLC编码,其具体实现原理是,将非零标记位按扫描顺序重新排列,即完成了当前非零系数的的扫描,这个过程不占用额外的时钟周期,标记位的重新排列,也仅需很少的组合电路(如果设计支持水平、垂直,zigzag三种扫描方式,则每一个系数的重新列最多只需一个三选一的选择,如果设计只支持zigzag扫描方式,则无须任何硬件资源,只是一个排列顺序的改变)。同时将对应的非零系数提前取出,计算出当前系数之前0的游程长度(按照扫描顺序两个相邻非零量化系数之间的持续0的个数),完成RLC编码,存储到RLC输出寄存器中。当对当前块进行霍夫曼编码来读取RLC编码时,立即将预先编好的一个RLC编码送出,并同时完成下一个非零系数的RLC编码,更新到RLC输出寄存器,这样可以确保霍夫曼编码在读取RLC编码时,没有任何等待周期,当当前块的最后一个RLC编码被取走,当前块的游程长度编码也结束。
(2)游程长度解码(RLD)的实现游程长度解码(RLD)的原理是在霍夫曼解码阶段,当解码电路接收RLC编码时,在接收每一个RLC编码的同一个时钟周期,根据当前RLC编码中的游程长度信息得到当前量化系数在当前处理块中的位置(quantized coefficients memory中的对应地址),并将从当前RLC编码中得到的非零系数写入到对应的地址中,同时将对应的系数标记位寄存器置1。在当前处理块的最后一个RLC编码接收完的同时,当前块的反扫描也同时结束。接下来启动当前块的反量化操作,对于8×8的块反量化时,需要依次读取从0到63个量化系数,根据对应的非零标记位状态,若当前读取的量化系数为零,则直接将当前送到反量化器的系数强置为0,若当前读取的量化系数为非零值,则从量化系数暂存器中读出相应的量化系数,并送到反量化器。当最后一个量化系数被送出,当前块的游程长度解码也即完成。
本发明的有益效果是(1)以较少的硬件资源实现游程长度编解码;(2)无需额外的专用时钟周期来完成游程长度编解码(RLC/RLD),减少了系统的流水线延迟;(3)在实现游程长度编解码(RLC/RLD)时,只存取非零量化系数,降低了访问量化数暂存器的功耗。


图18×8块处理(Block Processing)时64位非零标记位寄存器向量的置位流程图。QC[i]指当前量化系数,NZF[i]是其对应的非零标记寄存器。
图28×8块处理(Block Processing)时游程长度编码实时RLC编码流程图。Rrlc是RLC编码输出寄存器,Aprenz是指前一个非零系数的扫描坐标值,Acurnz指当前非零系数的扫描坐标值,NZF[63:0]指当前块的原始非零标记寄存器向量,NZFs[63:0]指扫描顺序转置后的非零标记向量,R指实时计算出的当前非零系数的0值游程长度,RLC[Acurnz]指当前非零系数的RLC编码。
图3RLD解码时的反扫描流程图。Aprenz是指前一个非零系数的反扫描坐标值,Acurnz指当前非零系数的反扫描坐标值,NZF[63:0]指当前块的原始非零标记寄存器向量,QCrlc是指当前RLD解码得到的当前非零系数值,QCmem[Acurnz]指当前非零系数对应在量化系数暂存器的的存储单元图4RLD解码时的量化系数实时恢复流程图。NZF[i]指当前块的原始非零标记寄存器向量,QC[i]指送到反量化器的量化系数,QCmem[i]指量化系数暂存器中的第i个存储单元。
具体实施例方式
图1是8×8块处理(Block Processing)时64位非零标记位寄存器向量的置位流程图。在当前块量化开始之前,NZF[63:0]初值为0。在量化开始后,一旦硬件电路检测到当前量化系数QC[i]不为零,则将相应的非零标记寄存器位置1,当量化器输出当前块的最后一个量化系数NZF[63]同时,当前块的非零标记完成。
图2是8×8块处理(Block Processing)时游程长度编码实时RLC编码流程图。实际电路工作时分两个时钟周期完成一个非零系数的RLC编码。第一个周期为预取编码周期,第二个周期为RLC编码读出周期,但同时也是下一个非零系数的预取编码周期,从而实现了预取编码和RLC编码读出的流水线操作,一个8×8的块最少的RLC编码时钟周期数为第一个预取周期加上当前块的RLC编码个数。预取编码的工作原理如下首先,将当前块的非零标记寄存器向量NZF[63:0]转置为按扫描顺序排列的非零零标记向量NZFs[63:0]。设扫描排列顺序为{b0,b1,b2,…b62,b63},则NZFs012345678······15········································5657····6263··=NZFb0b1b2b3b4b5b6b7b8······b15········································b56b57····b62b63]]>
转置过程完成了对当前非零系数的扫描。
然后,对NZFs进行优先权编码,得到当前非零系数的扫描坐标值Acurnz。NZFs
优先权最高,NZFs[63]优先权最低。NZFs
为1时,Acurnz=0,当只有NZFs[63]为1时,Acurnz=63。Acurnz在下一个时钟被送至Aprenz寄存器。当前非零系数的扫描坐标值Acurnz减去上一个非零系数的扫描坐标Aprenz即得到了当前非零系数的游程长度R,它和当前系数的值被编码得到当前系数的RLC编码RLC[Acurnz]并锁存至RLC输出寄存器Rrlc,在RLC读出周期被送出。当当前非零系数在预取周期完成编码后,其对应的非零标记寄存器在读出周期被清0,释放出优先编码权,开始了下一个非零系数的预取编码。当最后一个非零系数的RLC编码被读出,当前块的RLC编码结束。
图3是RLD解码时的反扫描流程图。当RLD解码电路接收到霍夫曼解码得到的RLC编码时,立即从的RLC码中的游程长度信息解出当前非零系数的反扫描坐标值,将相应的非零标记寄存器置1,同时将从RLC码中解出的系数写入到量化系数暂存器中。当当前块的最后一个RLC码被接收,当前块的RLD解码反扫描也即结束。
图4是RLD解码时的量化系数实时恢复流程图。RLD解码电路实现实时量化系数恢复时,首先判断反量化器送出的读信号是否有效,当有效时,若当前系数的非零标记为1,则从量化系数暂存器中读出该非零系数并送到反量化器,若当前系数的非零标记为0,则不读取量化系数暂存器,而直接将送到反量化器的量化系数强制为0。同时,量化系数暂存器的地址计数中加1,等待反量化器来读取下一个量化系数值,当最后一个量化系数被读出,当前块的反量化也结束。
权利要求
1.一种数字图形图像压缩解压硬件加速器中快速游程长度编解码电路的实现方法。具有电路实现规模小,游程编解码速度快和功耗低的特点。
2.根据权利要求1所述,利用此方法实现游程长度编解码时,仅需为每个系数设立一个1bit的非零标记寄存器位,无须RLC暂存器(RLC暂存器用来存储整个块的RLC编码,每个量化系数的RLC编码占用一个多bit位宽的存储单元,如MPEG4压缩解压时每个RLC编码位宽为19bit),电路实现规模小。
3.根据权利要求1所述,利用此方法实现游程长度编解码时,在游程长度编码(RLC)时,在量化的同时完成非零系数的标记,在系统做霍夫曼编码时实时扫描完成RLC编码。在游程长度解码(RLD)时,它在得到RLC编码的同时完成了反扫描,在反量化时实时完成量化系数的恢复。每个块的游程长度编解码不占用额外的处理时钟周期,从而达到了快速的目的。其中编码关键技术有以下几点(1)在量化输出的同时将非零系数的标记位置1;(2)RLC编码时的预取机制;(3)直接将标记位寄存器按扫描顺序转置完成当前非零系数的扫描,利用当前块非零标记寄存器的优先权编码,实时计算出当前非零值的游程长度,直接从量化系数暂存器中读出该系数,得到RLC编码。其中解码关键技术有以下2点(1)在得到RLC编码的同时,立即根据RLC码中流程长度信息,解出当前系数在扫描序列中的位置,将其作反扫描,可立即得到当前非零系数在量化系数暂存器中的地址,将相应的非零标记位置1,同时将从RLC码中解码得到的量化系数写入该地址;(2)在解码做反量化时,实时恢复出量化系数矩阵根据当前块系数的非零标记,只从量化系数存储器中读取非零系数值,对于0值量化系数,无须读量化系数暂存器,而直接将0值送至反量化器。
4.根据权利要求1、2、3所述,利用此方法实现游程长度编解码时,电路规模小,在扫描/反扫描时只须读出/写入非零系数值,减少了量化系数暂存器的存储次数。这些优点,都降低了实际电路实现时的功耗。
全文摘要
一种基于块处理数字图形图像压缩解压硬件加速器中快速游程长度编解码(RLC/RLD)电路的实现方法。具有电路实现规模小,快速编解码,功耗低的优点。在游程长度编码(RLC)时,在量化的同时标记非零系数,在系统做霍夫曼编码时实时扫描完成RLC编码。在游程长度解码(RLD)时,它在得到RLC编码的同时完成反扫描,在反量化时实时完成量化系数的恢复。
文档编号G06T9/00GK1779716SQ200510026218
公开日2006年5月31日 申请日期2005年5月26日 优先权日2005年5月26日
发明者唐宏斌 申请人:智多微电子(上海)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1