可变长度解码装置和可变长度解码方法以及再现系统的制作方法

文档序号:6512829阅读:131来源:国知局
专利名称:可变长度解码装置和可变长度解码方法以及再现系统的制作方法
技术领域
本发明涉及可变长度编码装置和可变长度编码方法,用于加速可变长度代码(variable length code)的加载过程(load process),尤其在处理可变长度代码的数据处理中,用于加速从存储器获得可变长度代码的加载过程,其中可变长度代码应用在广义的处理器技术领域中。
背景技术
在传统的可变解码装置中,专门有用于可变长度解码的装置以实现高速操作。而且,随着处理器性能的提高,目前经常通过软件来执行解码过程,其中通过提供同时更新数据参照(data reference)和数据参照位置的专用指令等来实现高速操作。
在提供有该专用装置并因此实现高速操作的现有方法中,当例如需要处理多个使用可变长度编码并用于图像编码和音频编码的数据时,需要提供有专用于每个数据的装置。而且,在处理器中利用软件过程的高速操作中,需要执行对消耗数据量(a volum of consumption data)的判决过程(judgementprocess)和多个因此产生的存储器访问,这就破坏了预期的高速操作的程度。在引用的专利文献1中,该发明中有缓冲寄存器内的数据的已参照数据数是否超出某阈值的判定和缓冲寄存器的移位处理的判定过程。而且,由于缓冲寄存器的值与装载在存储器上的数据源的数据配置(data layout)不同,需要诸如向存储器存储(saving)/恢复(returning)这样的过程,因此需要提供另外的存储器或者将缓冲寄存器作为可变长度解码的专用寄存器而安装以保持(retain)缓冲寄存器的值。相应的该发明另外还需要用于地址更新的特别监测和处理。
本发明的主要目的是提供一种可变长度解码装置和包括该装置的再现系统以及可变长度解码方法,以在解决上述问题中加速可变长度编码,并因此在软件处理过程中获得高速操作。

发明内容
根据本发明的第一可变长度解码装置,包括存储器,将与存储在任意地址的低位比特侧(lower-bit side)的数据相同的数据配置并存储在该任意地址的下一地址的高位比特侧(upper-bit side);缓冲寄存器,具有至少与该存储器的比特带宽相等的比特宽度,以存储从上述存储器装载的数据;地址寄存器,将访问该存储器的地址的值(地址值)存储到高位比特侧,将所述缓冲寄存器已参照的数据数(number of data which was referred)存储到低位比特侧,其特征在于通过对所述缓冲寄存器执行使用了所述已参照数据数和本次参照的数据数的数据移位操作,从该缓冲寄存器提取出用于可变长度解码的本次应参照的数据,响应于从所述缓冲寄存器提取出数据,将本次参照的数据数与该已参照数据数相加,以更新所述地址寄存器的低位比特侧的已参照数据数,当所述地址寄存器的低位比特侧的更新后的已参照数据数不进位时,维持存储到所述地址寄存器的高位比特侧的地址值不变,当更新后的已参照数据数有进位时,使用该进位将地址值更新为下一地址值。
另外,已参照数据数是指对于构成数据的比特中已参照的比特数(number of bits),本次参照的数据数是指对于构成数据的比特中本次参照的比特数,本次应参照数据是指对于构成数据的比特中本次应参照的比特。从上述的含义看,数据移位是指移位构成数据的比特。下面同样如此。
根据本发明的第一可变长度解码装置,从地址寄存器分离访问地址和已参照数据数,使用访问地址访问存储器,将从存储器装载的数据存储在缓冲寄存器中,从缓冲寄存器中提取出本次应参照数据。然后,在地址寄存器中加上在该访问时参照的数据数,更新已参照数据数和访问地址。这样,通过已参照数据数和本次参数数据数,可从缓冲寄存器提取出本次应参照数据。此外,为了提取应参照数据而在地址寄存器中设定的地址也应该自动更新。
因此,在本发明的第一可变长度解码装置的情况下,可以不再需要与缓冲寄存器的状态相关的存储(saving)/恢复(returning)过程,而这在通常的现有技术中却是必需的。
本发明的第一可变长度解码装置的情况下,与现有技术中更新过程分别需要已参照数据数和地址不同,本发明通过将已参照数据数更新时的进位(carry-up)用于地址更新,可在一次更新过程中实现已参照数据数和地址的更新运算,从而可以减少更新处理过程。通过该自动地址更新,在由于进位而进入下一地址以在存储器中访问更新后的地址时,在该地址的高位比特侧已经存储与前一个地址的低位比特侧的数据相同的数据,可以继续使用该数据。
在本发明的第一可变长度解码装置中,重要的是不再需要现有技术中所需的对缓冲寄存器内的数据的已参照数据数是否超出某阈值的判定、根据该判定改变处理的判定处理以及根据该判定结果的存储器访问。不再需要任何用于地址更新的特别监视和运算。也就是说,通过简化判定处理、地址运算和对存储器的访问,可以加速可变长度解码处理。
作为本发明的第一可变长度解码装置的最佳实施形式,还包括掩码上述已参照数据并进行移位的移位器,它作为在缓冲寄存器中提取本次应参照数据的单元。根据该实施形式,仅仅通过掩码已参照数据,可以对移位功能进行简单改进,并可以实现从缓冲寄存器提取出本次应参照数据,从而实现进一步加速可变长度解码处理。
根据本发明的第一可变长度解码方法是使用可变长度解码装置的可变长度解码方法,该装置包括存储器,将比特数A(至少为2的整数)为1个字存储数据;比特宽度B(至少为A的整数)的缓冲寄存器,存储从上述存储器装载的数据;地址寄存器,将对上述存储器的访问地址(地址的值)存储到高位比特侧,并且将在缓冲寄存器已参照的数据数M存储在低位比特侧,所述低位比特侧的比特宽度为C,M是至少为0的整数,C是至少为1的整数,其特征在于,包括步骤第一步骤,从上述地址寄存器分离访问地址值(地址值)和已参照的数据数M(至少为0的整数);第二步骤,在上述存储器中,将与任意地址的比特数D(A-2C表示的整数)的低位比特侧存储的数据相同的数据也配置在该任意地址的下一地址的比特数D的高位比特侧,并且使用上述访问地址对上述存储器进行访问,将该存储器中存储的数据装载到上述缓冲寄存器中;第三步骤,通过执行使用上述已参照数据数M和本次参照的数据数N(至少为1的整数)的数据移位操作,从上述缓冲寄存器提取出为了可变长度解码本次应参照的数据;第四步骤,响应于上述提取本次应参照数据,将本次参照的数据数N与已参照数据数M相加,以更新在地址寄存器的低位比特侧存储的已参照数据数M,并且,当所述地址寄存器的低位比特侧的更新后的已参照数据数不进位时,维持所述地址寄存器的高位比特侧存储的所述地址值不变,当有进位时,使用该进位更新所述地址值为下一地址值。
在本发明的第一可变长度解码方法中,从地址寄存器分离访问地址和已参照数据数,使用访问地址的值(地址值)访问存储器,将从存储器装载的数据存储在缓冲寄存器中,在缓冲寄存器中提取出本次应参照数据。然后,在地址寄存器中加上在该访问时参照的数据数,更新已参照数据数和地址值。这样,通过已参照数据数和本次参数的数据数,可从缓冲寄存器提取出本次应参照数据。接着,为了提取应参照数据而在地址寄存器中应设定的地址也自动更新。现有技术中需要的与缓冲寄存器的状态相关的(saving)/恢复(returning)处理就不再需要。与现有技术中需要执行已参照数据数的更新和地址更新二者不同,通过将已参照数据数更新时的进位用于地址更新,可以一次实现已参照数据数和地址的更新运算,从而可以减少更新处理。通过该自动地址更新,通过进位进入下一地址,在存储器中访问该更新后的地址时,在该地址的高位比特侧已经存储与前一个地址的低位比特侧的数据相同的数据,可原样继续使用该数据。
根据本发明的第二可变长度解码装置,包括存储器,以比特数A(至少为2的整数)为1个字存储数据;比特宽度B(至少为A的整数)的缓冲寄存器,存储从上述存储器装载的数据;地址寄存器,将对上述存储器的访问地址的值(地址值)存储到高位比特侧,并且将上述缓冲寄存器参照后的数据数M(至少为0的整数)存储在比特宽度C(至少为1的整数)的低位比特侧,其特征在于上述存储器将与任意地址中比特数D(A-2C表示的整数)的低位比特侧存储的数据相同的数据也配置在该任意地址的下一地址中比特数D的高位比特侧,通过进行使用上述已参照数据数M和本次参照的数据数N(至少为1的整数)的数据移位操作,从上述缓冲寄存器提取出为了可变长度解码本次应参照的数据,另一方面,响应于该提取,将E设为通过A-D运算得到的至少为1的整数、将F,G设为整数、将通过 的运算得到的商设为F、将余数设为G,通过将上述商F加到上述地址寄存器的高位比特侧进行该高位比特侧存储的上述地址值的更新,此外,通过在上述地址寄存器的低位比特侧设置上述余数G,更新该低位比特侧存储的已参照数据数M。
为了描述比特带宽,可以举例说明。例如,在地址寄存器的低位比特侧为4比特的结构中,地址寄存器的低位侧的比特宽度为4。
根据本发明的第二可变长度解码装置,具有与上述第一可变长度解码装置同样的处理过程和效果。而且,随着来自缓冲寄存器的上述提取,设E为通过A-D的运算得到的至少为1的整数、F,G为整数、通过 的运算得到的商为F、余数为G,通过将上述商F加到上述地址寄存器的高位比特侧进行该高位比特侧的更新,或者通过在上述地址寄存器的低位比特侧设置上述余数G进行该低位比特侧的更新,因此与上述第一可变长度解码装置一样可以一次实现已参照数据数的更新和地址更新,可以减少更新处理。


图1是本发明第一实施例的可变长度解码装置的示范性结构图;图2是本发明第一实施例的可变长度解码方法的处理流程图;图3是本发明第一实施例的数据提取处理流程图;图4是本发明第一实施例的数据提取的数据状态示意图;图5是本发明第一实施例的具体动作示例说明图;图6是本发明第一实施例的具体动作示例说明图;图7是本发明第一实施例的具体动作示例说明图;图8是本发明第一实施例的具体动作示例说明图;图9是本发明第二实施例的数据提取处理流程图;图10是本发明第二实施例的数据提取的数据状态示意图;图11是本发明第二实施例的移位器和缓冲寄存器的周边的电路结构示范性结构图;图12是本发明第二实施例的具体动作示例说明图;图13是本发明第三实施例的可变长度解码装置的示范性配置图;图14是本发明第三实施例的数据提取处理流程图;图15是本发明第三实施例的数据提取的数据状态示意图;图16是本发明第三实施例的具体动作示例说明图;图17是本发明第四实施例的可变长度解码装置的示范性结构图;图18是本发明第四实施例的具体动作示例1的说明图;图19是本发明第四实施例的具体动作示例2的说明图;图20是本发明第五实施例的可变长度解码装置的示范性结构图;图21是本发明第五实施例的具体动作示例的说明图;图22是本发明第六实施例的可变长度解码装置的示范性结构图;
图23是本发明第六实施例的具体动作示例1的说明图;图24是本发明的第六实施例的具体动作示例2的说明图;图25是本发明的第七实施例的再现系统的示意图。
具体实施例方式
下面参考附图详细说明本发明的最佳实施形式的可变长度解码装置和可变长度解码方法。从第一实施例到第七实施例中都涉及可变长度解码装置和可变长度解码方法。
第一实施例图1示出了根据本发明第一实施例的可变长度解码装置。参照图1,标号101表示存储器。存储器101用于存储数据,其中在存储的数据中比特数(bit number)A(A是大于或者等于2的整数,在第一实施例中A=32)组成一个字(word),并且与任意地址的比特数D(D大于或者等于1的整数,在第一实施例中D=16)的低位比特侧存储的数据相同的数据配置在该任意地址的下一地址的比特数D的高位比特侧。
标号102表示比特宽度为32的地址寄存器。地址寄存器102在高位比特侧(第一寄存器部分)具有访问地址(地址值)和在低位比特侧(第二寄存器部分)具有已参照数据数M(M是大于或者等于0的整数),低位比特侧具有比特宽度C(C为大于或者等于1的整数,在第一实施例中为C=4)已参照。
这里,A、C、D之间的关系为D=A-2c。在第一实施例中,A=32,C=4,因此D=16。在A和C之间,P=24=16,如果A=2×P和P=2C,那么,A=2×P=2×16=32。
标号103表示比特宽度为B(B是等于或者大于A的整数,第一实施例中B=32)的缓冲寄存器。缓冲寄存器103用于保持(retain)从存储器101装载入的数据,当通过访问地址(access address)从自存储器101装载入的数据中提取现在参照数据时,通过使用已参照数据数M和当前参照的数据数N(N是大于或者等于1的数据数)的数据移位操作提取出应参照数据。
如上所述,存储器101中的数据配置成存储在某地址的低16比特位处的数据也存储在该地址的下一地址的高16比特位处。
具体说,例如,在地址0×101的低16比特位处存储数据c,而下一地址0×102的高16比特位处也存储相同数据c。而且,地址0×102的低16比特位处存储数据d,下一地址0×103的高16比特位处也存储相同数据d。
图2表示使用图1的可变长度解码装置进行可变长度解码的处理流程。图3表示从缓冲寄存器103提取本次参照的数据的通常处理流程。图4表示随着图3所示的处理流程变化的数据的状态,表示出与图3的各步骤对应变化的情况。下文中的步骤对应图2、3的各处理步骤。为方便说明,以32比特的处理器为例子对本发明进行说明,但本发明不限定于此。作为初始状态,如图1所示,在存储器101中从0×100开始按a,b,c,...的顺序存储数据。在地址寄存器102中,地址值为0×101、已参照数据数为0×3,本次参照的数据数为N。
下面说明一个处理例子。
步骤1中,从地址寄存器102分离并提取出已参照数据数0×3和地址值0×101。
步骤2中,使用步骤1分离出的地址值0×101访问存储器101的地址0×101,从而装载并存储数据b,c,到缓冲寄存器103中。
步骤3中,使用步骤1分离的已参照数据数0×3和本次参照的数据数N从存储数据b,c的缓冲寄存器103中仅提取出本次参照的数据。用步骤3-1a到步骤3-3a来表示一个具体的提取方式的示例。
步骤3-1a中,将位于缓冲寄存器103的数据b,c左移位已参照数据数0×3。本次参照的数据D1的开头移位到缓冲寄存器103的最高位比特侧。在通常的处理器中,当移位数据时,没有数据的低位比特侧(右)的部分一般扩展“0”(参照图4)。
步骤3-2a中,算出从“32”减去本次参照的数据数N的值。
步骤3-3a中,将步骤3-1a移位的数据再向右移位步骤3-2a算出的值,本次参照的数据D1的末尾移位到缓冲寄存器103的最低位比特侧。此时,移位称为逻辑移位。逻辑移位一般是没有高位比特侧(左)的数据的部分扩展“0”(参照图4)。
步骤4中,地址寄存器102中加上本次参照的数据数N,从而更新地址寄存器102的值。此时,通过相加,已参照数据数更新为(0×3+N)。另外,通过从保持已参照数据数的低位比特侧向保持地址值的高位比特侧的进位还自动实现地址值的更新。
例如,在N=0×8的情况下,由于0×3+0×8=0×b,已参照数据数可用4比特表示,地址值仍为0×101,没有进位。当N=0×e时,已参照数据数为0×3+0×e=0×11,变为5比特,地址值从0×101更新为0×102,产生进位。
此外,上述例子中,“0×”表示16进制数。“0×b”表示10进制的“11”,其比10进制的“16”,即4比特小,因此可用4比特表现。“0×e”表示10进制的“14”。0×3+0×e的结果是10进制的3+14=17。因此,由于17-16=1,产生“0×11”,在16进制中有进位。
为帮助理解,举出更具体例子来说明。
图5A表示从存储器101的地址0×101装载并存储到缓冲寄存器103中的数据。16比特的数据b16,b15,b14,b13,b12,..b6,b5,..b1对应图1的数据b。此外,16比特的数据c16,c15,....c1对应图1的数据c。总计比特数为32比特。
假设在上次处理中数据b16,b15,b14的3比特已参照。因此,已参照数据数M=3。假设本次参照的数据数N=8,对应于b13,b12,..b6的数据D2。用粗框对其进行强调。
图5B是将32比特的数据行(data raw)b16,b15,..b1,c16,c15,...c1左移位已参照数据数M=3比特,从最高位开始存储数据行b13,b12,..b1,c16,c15,...c1,将低3比特位设为“0”。粗框的开头与第32比特一致。
图5C表示将32比特的数据行b13,b12,..b1,c16,c15,...c1,0,0,0右移位24比特,从最高位开始的24比特设置“0”的状态。从“32”中减去本次参照的数据数N=8,得到右移位量的24比特。粗框的末尾与第1比特一致。更具体地,从缓冲寄存器103的最低位开始的8比特存储数据D2的b13,b12,..b6,至此本次参照的数据D2被提取出来。
已参照数据数M上加上本次参照的数据数N后,M+N=3+8=11,地址寄存器102中将已参照数据数M从“3”更新为“11”。“11”小于24(4比特),因此不进行地址值的进位,维持原来的地址值0×101。
接着图5的处理的下一步处理用图6说明。
图6A表示存储器101的0×101的数据装载到缓冲寄存器103的状态(与图5A相同)。
到至此的处理中,数据b16,b15,b14,b13,b12,..b6的11比特为已参照的,已参照数据数M=11。设本次参照的数据数N=5。这相当于b5,b4,..b1的数据D3。用粗框对其进行强调。
图6B是将32比特的数据行b16,b15,..b1,c16,c15,...c1左移位已参照数据数M=11比特,从最高位开始存储数据行b5,b4,..b1,c16,c15,...c1,将低位11比特设为“0”。粗框的开头与第32比特一致。
图6C表示将32比特的数据行b5,b4,..b1,c16,c15,...c1,0,0,...,0右移位27比特,从最高位开始的27比特设置为“0”。从“32”中减去本次参照的数据数N=5,得到右移位量的27比特。粗框的末尾与第1比特一致。更具体地,从缓冲寄存器103的最低位开始的5比特中存储数据D3的b5,b4,..b1,至此本次参照的数据D3被提取出来。
已参照数据数M上加上本次参照的数据数N后,M+N=11+5=16,地址寄存器102中将已参照数据数M从“11”更新为“16”。由于“16”处于等于或者大于24(4比特)的范围以内,因此进行地址值的进位,更新为下一地址值0×102。更具体地,由于数据B的全部16比特的数据已参照完毕,因此进入下一地址。
另外,当图6的处理中假设本次参照的数据数N为等于或者小于4时,则重复与图5相同的逻辑处理。
参照图7说明接着图5的另外的处理。在该处理中,本次参照的数据数N为等于或者大于6。
图7A表示存储器101的0×101的数据装载到缓冲寄存器103中的状态(与图5A相同)。
到上次为止的处理中数据b16,b15,b14,b13,b12,..b6的11比特为已参照的,已参照数据数M=11。设本次参照的数据数N=7。这相当于b5,b4,..b1,c16,c15的数据D4。比图6(b)的情况增加2比特。不仅包括数据b,还包括数据c的一部分。用粗框对其进行强调。
图7B是将32比特的数据行b16,b15,..b1,c16,c15,...c1左移位已参照数据数M=11比特,从最高位开始存储数据行b5,b4,..b1,c16,c15,...c1,将低位11比特设为“0”的状态。这与图6(b)相同。粗框的开头与第32比特一致。
图7C表示将32比特的数据行b5,b4,..b1,c16,c15,...c1,0,0,...,0右移位25比特,从最高位开始的25比特设置“0”的状态。右移位量的25比特是从“32”中减去本次参照的数据数N=7。与图6(c)的情况相比少2比特。粗框的末尾与第1比特一致。也就是,从缓冲寄存器103的最低位开始的7比特中存储数据D4的b5,b4,..b1,c16,c15,至此本次参照的数据D4被提取出来。
已参照数据数M上加上本次参照的数据数N后,M+N=11+7=18,地址寄存器102中将已参照数据数M从“11”更新为“18”。“18”为24(4比特)以上,因此进行地址值的进位,更新为下一地址值0×102。数据B的全部16比特的数据已参照成,进入数据C的参照,因此进入下一地址。已参照数据数M的“18”是16进制中的“0×12”,是2进制中的“0b10010”,但除去进位的第5比特的从低位开始的4比特为“0b0010”,为16进制的“0×2”。这对应于数据C的高位2个比特C16,C15是已参照的。
如图8所示,从地址0×101进入下一地址0×102时,这里的高位16比特中已经存储与前一个的地址0×101的低位侧16比特的数据c(c16,c15,....,c1)相同的数据,可原样继续使用该数据。不再需要用于地址更新的特别监视处理和运算。
图1的地址寄存器102、缓冲寄存器103并不执行任何特别的操作,可以使用处理器通常使用的通用缓冲寄存器来实现,并不需要特别专用的寄存器。但是,和现有技术中的访问地址、已参照数据数一样,地址寄存器1 02的值需要与对存储器101的空白区域的存储(saving)/恢复(returning)相关。
在第一实施例所示例子中,低位16比特的数据也配置在其下一地址的高位16比特。因此可一次提取出至少16比特+1比特的17比特的数据。此外,与干扰数据(jamming data)的情况相比,需要2倍的存储器容量。
第二实施例下面参考

本发明第二实施例的可变长度解码装置和可变长度解码方法。
图9所示为本发明第二实施例的从缓冲寄存器103提取本次参照的数据的处理流程。图10所示为随着图9中处理流程变化的数据状态变化,其中变化对应图9的各步骤变化。图11是所示为在第二实施例中使用的移位器和缓冲寄存器的周边的电路的示范性结构图。
参照图11,标号701表示用于掩码缓冲寄存器103保持的一部分比特的掩码逻辑电路(mask logic circiut),标号702表示根据掩码逻辑电路701的输出对移位器的输入数据进行掩码的掩码电路(mask circiut),标号703表示进行移位的移位器(shifter)。
图1和图2也适用于本第二实施例。
下面使用图1、图2、图9、图10、图11说明。为方便说明,以32比特的处理器为例,但本发明不限定于此。作为初始状态,如图1所示,在存储器101中从0×100开始按a,b,c,..的顺序存储数据,地址寄存器102的地址值为0×101、已参照数据数为0×3,本次参照的数据数为N。
本实施例的基本操作如图2那样,并且与对第一实施例的描述相同。本实施例的特征在于图2的步骤3如图9所示记一步得到了改进。
下面说明处理的一个例子。
步骤1中,从地址寄存器102分离并提取出已参照数据数0×3和地址值0×101。
步骤2中,使用步骤1分离的地址值0×101访问存储器101的地址0×101,装载并存储数据b,c到缓冲寄存器103中。
步骤3中,使用步骤1分离的已参照数据数0×3和本次参照的数据数N从存储数据b,c的缓冲寄存器103仅提取出本次参照的数据。具体的提取流程用步骤3-1b到步骤3-2b表示。
步骤3-1b中,算出从“32”减去已参照数据数0×3和本次参照的数据数N的总和的值。在第一实施例中,从“32”减去的仅仅是本次参照的数据数N。并且,在这里不执行在第一实施例的步骤3-1a中描述的“将位于缓冲寄存器103的数据b,c左移位已参照数据数0×3”,因为掩码电路代替执行了该处理。
步骤3-2b中,使用图11所示的掩码逻辑电路701、掩码电路702和移位器703,用已参照数据数0×3进行掩码,并且向右移位步骤3-1b算出的值“32-(0×3+N)”。本次参照的数据D1的末尾直接移动到缓冲寄存器103的最低位比特侧。此时,移位称为逻辑移位。(参照图10)。
步骤4中,本次参照的数据数N,与地址寄存器102相加,以更新地址寄存器102的值。此时,与第一实施例的相同,相加后,已参照数据数更新为(0×3+N),另外,通过从保持已参照数据数的低位比特侧向保持地址值的高位比特侧的进位还自动实现地址值的更新。
除了作为步骤3的具体实施方式
的步骤3-1B、3-2B以外,其余步骤与第一实施例相同。
上述中,当4比特表示的已参照数据数为0×3时,掩码逻辑电路701对掩码电路702的3个高位与门A32,A31,A30输出掩码信号。只有3个与门A32,A31,A30为非导通,其他AND门A29~A1导通,缓冲寄存器103的32比特的数据在其中高位3比特被掩码的状态下(强制为“0”的状态)输送到移位器703。如图12所示,移位器703将高位3比特被掩码的32比特数据向右移位21比特。这里,从“32”减去“11”得到该21比特,而“11”是将已参照数据数M=3与本次参照的数据数N=8相加后得到的。
表示出图11为示例的掩码用逻辑电路701的变换逻辑表。
表1


另外,图11所示的掩码逻辑电路701和掩码电路702不特别规定电路安装方法,与电路安装的方式无关。掩码逻辑电路701和掩码电路702可以彼此分割也可集中组成逻辑电路。
第三实施例图13到图16表示本发明第三实施例的可变长度解码装置。
为方便说明,第三实施例的处理器将以基于24比特的处理器作为示例,但本发明不限定于此。
图13中,存储器101存储将24比特作为1个字的数据,各地址为高位8比特、中位8比特、低位8比特,与某地址的中位比特相同的数据也配置在下一地址的高位比特处,与某地址的低位比特相同的数据也配置在下一地址的中位比特处。这里,与高位8比特相对照,可将中位8比特和低位8比特统称为低位比特侧。
地址寄存器102是比特宽度为24的寄存器,由保持地址值的高位比特侧(第一寄存器部分)和保持已参照数据数M的比特宽度C(第三实施例中C=3)的低位比特侧(第二寄存器部分)构成。
缓冲寄存器103是保持从存储器101装载的数据的比特宽度为B(第三实施例中B=24)的缓冲寄存器。
这里,存储器101的比特宽度A为24,地址寄存器102的第二寄存器部分的比特宽度C为3,存储器101的低位比特侧的比特数D为8,A、C、D的之间有D=A-2C的关系。第二实施例中,A=24、C=3,因此D=16。A、C之间,在P=2C时,有A=3×P的关系。因为P=23=8,A=3×P=3×8=24。
参照图2和图14与图15,说明从缓冲寄存器103提取本次参照的数据的通常处理过程。图14表示其处理流程,图15表示伴随图14所示处理流程变化的数据状态。下文中的步骤对应图2、图14的各处理步骤。作为初始状态,如图所示,在存储器101中从0×100地址开始按a,b,c,..的顺序存储数据,地址寄存器102的地址值为0×101、已参照数据数为0×3,本次参照的数据数为N。
下面说明处理的一个例子。
步骤1中,从地址寄存器102分离并提取出已参照数据数0×3和地址值0×101。
步骤2中,使用步骤1分离的地址值0×101访问存储器101的0×101地址,装载数据b,c,d,存储到缓冲寄存器103中。
步骤3中,使用步骤1分离的已参照数据数0×3和本次参照的数据数N从存储数据b,c,d的缓冲寄存器103仅提取出本次参照的数据。用步骤3-1a到步骤3-3a表示具体提取方式的一个示例。
步骤3-1a中,将位于缓冲寄存器103的数据b,c,d左移位已参照数据数0×3。本次参照的数据D1的开头移位到缓冲寄存器103的最高位比特侧。在通常可利用的处理器中,当如上所述移位时,低位比特侧(右)的没有数据的部分一般扩展为“0”(参照图15)。
步骤3-2a中,算出从“24”减去本次参照的数据数N的值。
步骤3-3a中,将步骤3-1a移位的数据再向右移位步骤3-2a算出的值,本次参照的数据D1的末尾移位到缓冲寄存器103的最低位比特侧。此时,移位称为逻辑移位。当如上所述移位时,高位比特侧(左)没有数据的部分扩展为“0”(参照图15)。
步骤4中,地址寄存器102中加上本次参照的数据数N,更新地址寄存器102的值。此时,通过相加,已参照数据数更新为(0×3+N),另外,通过从保持已参照数据数的低位比特侧向保持地址值的高位比特侧的进位还自动实现地址值的更新。
例如N=0×2的情况下,已参照数据数为0×3+0×2=0×5,可用3比特表示,地址值仍为0×101,没有进位。N=0×8时,已参照数据数为0×3+0×8=0×b,变为4比特,产生进位,地址值从0×101更新为0×102。此外,N=0×f时,已参照数据数为0×3+0×f=0×12,变为5比特,产生2个进位,地址值从0×101更新为0×103。
为帮助理解,举出更具体例子来说明。
图16A表示从存储器101的0×101装载存储到缓冲寄存器103中的数据。对应图13的数据b的是8比特的数据b8,b7,b6,..b1。此外,对应图13的数据c的是8比特的数据c8,c7,....c1。此外,对应图13的数据d的是8比特的数据d8,d7,....d1。总计24比特。
假设上次处理中数据b8,b7,b6的3比特为已参照的。因此,已参照数据数M=3。设本次参照的数据数N=15。这相当于b5,..b1,cC8,c7,...,c1,d8,d7的数据D2。用粗框对其进行强调。
图16B是将24比特的数据行b8,b7,b6,..b1,c8,c7,...c1,d8,d7,...d1左移位已参照数据数M=3比特,从最高位开始存储数据行b5,..b1,c8,c7,...c1,d8,d7,...d1,将低位3比特设为“0”的状态。粗框的开头与第24比特一致。
在图16C中,包括b5,..b1,c8,c7,...c1,d8,d7,...d1,0,0,0的24比特的数据行右移位9比特,从最高位开始的9比特设置“0”。从“24”中减去本次参照的数据数N=15得到右移位量的9比特。粗框的末尾与第1比特一致。更具体地,从缓冲寄存器103的最高位开始的15比特中存储数据D2的b5,..b1,c8,c7,...c1,d8,d7,至此本次参照的数据D2被提取出来。
当已参照数据数M上加上本次参照的数据数N后,M+N=3+15=18,地址寄存器102中将已参照数据数M从“3”更新为“18”。“18”相当于2×23(4比特)以上,因此将地址值进行2个进位,更新为地址值0×103。由于数据b的全部8比特的数据参照和数据c的全部8比特的数据参照已经完成,并且进入数据d的参照,因此前进两个地址。已参照数据数M的“18”是16进制中的“0×12”,是2进制中的“0b10002”,但除去进位的第5比特的从低位开始的4比特为“0b0002”,为16进制的“0×2”。这对应于数据e的高位2个比特e16,e15已参照。
如图13所示,地址0×103的高位8比特中已经存储与前2个的地址0×101的低位侧8比特的数据d(d8,d7,....,d1)相同的数据,可继续使用该数据。不再需要用于地址更新的特别监视和运算。
在第三实施例所示例子中,低位16比特的数据也配置在其下一地址的高位16比特,因此可一次提取出至少16比特+1比特的17比特的数据。此外,与干扰数据的情况相比,需要3倍的存储器容量。
此外,图13的地址寄存器102、缓冲寄存器103并不执行任何特殊操作,可利用处理器通常使用的通用缓冲寄存器来实现,并不需要特别专用的寄存器。但是,和现有技术中的访问地址、已参照数据数一样,地址寄存器102的值需要与对存储器101的空白区域的存储(saving)/恢复(returning)相关。
第四实施例参照图17到图19说明第四实施例的可变长度解码装置。为方便说明,第四实施例的处理器将以基于24比特的处理器为示例,但本发明不限定于此。
图17中,存储器101存储将24比特作为1个字的数据,各地址为高位8比特、中位8比特、低位8比特,与某地址的低位比特侧相同的数据也配置在下一地址的高位比特侧。
地址寄存器102是比特宽度为32的寄存器,由保持地址值的高位比特侧(第一寄存器部分)和保持已参照数据数M的比特宽度C(第四实施例中C=4)的低位比特侧(第二寄存器部分)构成。
缓冲寄存器103是保持从存储器101装载的数据的比特宽度B(第四实施例中B=24)的缓冲寄存器。
这里,存储器101的比特宽度A为24,地址寄存器102的第二寄存器部分的比特宽度C为4,存储器101的低位比特侧的比特数D为8,A、C、D的之间有D=A-2C的关系。A、C之间,设P=2C时,有A=32×P]]>的关系。
即,P=24=16,A=32×16=24.]]>在第四实施例的可变长度解码装置中,进行可变长度解码的处理流程与第一实施例的处理流程(图2)相一致。
在根据本发明的第四实施例中,从缓冲寄存器103提取本次参照的数据的一般处理流程与第三实施例的处理流程(图14)相一致。
在第四实施例中,随着该处理流程变化的数据状态也与第三实施例相同(图15)。
第四实施例中,作为初始状态,如图17所示,在存储器101中从0×100地址开始按a,b,c,..的顺序存储数据,地址寄存器102中,地址值为0×101、已参照数据数为0×3,本次参照的数据数为N。
下面说明处理的一个例子。
步骤1中,从地址寄存器102分离并提取出已参照数据数0×3和地址值0×101。
步骤2中,使用步骤1分离的地址值0×101访问存储器101的0×101地址,装载数据c,d,e,存储到缓冲寄存器103中。
步骤3中,使用步骤1分离的已参照数据数0×3和本次参照的数据数N从存储数据c,d,e的缓冲寄存器103仅提取出本次参照的数据。用步骤3-1a到步骤3-3a表示具体提取方式的一个例子。
步骤3-1a中,将位于缓冲寄存器103的数据c,d,e左移位已参照数据数0×3。本次参照的数据D1的开头移位到缓冲寄存器103的最高位比特侧。在通常可利用的处理器中,当如上所述移位时,低位比特侧(右)的没有数据的部分一般扩展为“0”(参照图15)。
步骤3-2a中,算出从“24”减去本次参照的数据数N的值。
步骤3-3a中,将步骤3-1a移位的数据再向右移位步骤3-2a算出的值。本次参照的数据D1的末尾移位到缓冲寄存器103的最低位比特侧。此时,移位称为逻辑移位。在逻辑移位中,高位比特侧(左)没有数据的部分扩展为“0”(参照图15)。
步骤4中,地址寄存器102中加上本次参照的数据数N,更新地址寄存器102的值。此时,通过相加,已参照数据数更新为(0×3+N),另外,通过从保持已参照数据数的低位比特侧向保持地址值的高位比特侧的进位还自动实现地址值的更新。
例如N=0×2的情况下,已参照数据数为0×3+0×2=0×5,可用4比特表示,地址值仍为0×101,没有进位。N=0×8时,已参照数据数为0×3+0×8=0×b,变为4比特,产生进位,地址值从0×101更新为0×102。此外,N=0×f时,已参照数据数为0×3+0×f=0×12,变为5比特,产生进位,地址值从0×101更新为0×102。
为帮助理解,举出更具体例子来说明。
图18A表示从存储器101的0×101装载存储到缓冲寄存器103中的数据。对应图17的数据c的是8比特的数据c8,c7,c6,..c1。此外,对应图17的数据d的是8比特的数据d8,d7,....d1。此外,对应图17的数据e的是8比特的数据e8,e7,....e1。总计24比特。
假设上次处理中数据c8,c7,c6的3比特为已参照的。因此,已参照数据数M=3。设本次参照的数据数N=9。这相当于c5,c4,..c1,d8,...d5的数据D2,用粗框对其进行强调。
图18B是将24比特的数据行c8,c7,c6,..c1,c8,c7,...c1,d8,d7,...d1,e8,e7,...e1左移位已参照数据数M=3比特,从最高位开始存储数据行c5,..c1,d8,d7,...d1,e8,e7,...e1,将低位3比特设为“0”的状态。粗框的开头与第24比特一致。
图18C表示将24比特的数据行c5,..c1,d8,d7,...d1,e8,e7,...e1,0,0,0右移位9比特,从最高位开始的15比特设置“0”的状态。从“24”中减去本次参照的数据数N=9得到右移位量的15比特。粗框的末尾与第1比特一致。更具体地,从缓冲寄存器103的最低位开始的9比特中存储数据D2的c5,c4,..c1,d8,,...d5,至此本次参照的数据D2被提取出来。
已参照数据数M上加上本次参照的数据数N后,M+N=3+9=12,地址寄存器102中将已参照数据数M从“3”更新为“12”。“12”小于24(4比特),因此不进行地址值的进位,维持原来的地址值0×101不变。
通过图19说明接着图18的处理。
图19A表示存储器101的0×101的数据装载到缓冲寄存器103的状态(与图19A相同)。
到至今止的处理中,数据c8,c7,...,c1,d8,d7,...,d5的12比特为已参照的,已参照数据数M=12。设本次参照的数据数N=9。这相当于d4,...d1,e8,e7,...e4的数据D3。用粗框对其进行强调。
图19B是将24比特的数据行c8,c7,...,c1,d8,d7,...,d1,e8,e7,...,e1左移位已参照数据数M=12比特,从最高位开始存储数据行d4,d3,...,d1,e8,e7,...,e1,将低位12比特设为“0”。粗框的开头与第24比特一致。
图19C表示将24比特的数据行d4,d3,..,d1,e8,e7,..e1,0,0,...,0右移位15比特,从最高位开始的15比特设置“0”。从“24”中减去本次参照数N=9,得到15比特。得到15比特。粗框的末尾与第一位对应。更具体地,从缓冲寄存器103的最低位开始的9比特存储数据D3的d4,..,d1,e8,e7,...,e4,至此本次参照的数据D2被提取出来。
已参照数据数M上加上本次参照的数据数N后,M+N=12+9=21,地址寄存器102中将已参照数据数M从“12”更新为“21”。“21”相当于24(4比特)以上,因此进行地址值的进位,更新为下一地址值0×102。数据c和数据d的全部16比特的数据已参照成,进入数据e的参照,因此进入下一地址。已参照数据数M的“21”是16进制中的“0×15”,是2进制中的“0b10101”,但是,除去进位的第5比特的从低位开始的4比特为“0b0101”,为16进制的“0×5”。这对应于数据E的高位5个比特c8,c7,..e4已参照。
如图17所示,从地址0×101进入下一地址0×102时,这里的高位8比特中已经存储与前1个的地址0×101的低位侧8比特的数据e(e8,e7,....,e1)相同的数据,可以继续使用。不再需要用于地址更新的特别监视和运算。
在第四实施例所示例子中,低位8比特的数据也配置在其下一地址的高位8比特,因此可一次提取出至少8比特+1比特的9比特的数据。此外,与干扰数据的情况相比,需要4/3倍的存储器容量。
此外,图17的地址寄存器102、缓冲寄存器103并不执行任何特殊操作,可利用处理器通常使用的通用缓冲寄存器来实现,并不需要特别专用的寄存器。但是,和现有技术中的访问地址、已参照数据数一样,地址寄存器102的值需要与对存储器101的空白区域的存储(saving)/恢复(returning)相关。
第五实施例参照图20到图21说明第五实施例的可变长度解码装置。为方便说明,第五实施例的处理器将以基于32比特的处理器为示例,但本发明不限定于此。
图20中,存储器101存储将32比特作为1个字的数据,各地址为高位8比特、第一中位8比特、第二中位8比特、低位8比特,与某地址的第一中位比特侧相同的数据配置在下一地址的高位比特侧,与某地址的第二中位比特相同的数据也配置在下一地址的第一中位比特处,与某地址的低位比特侧相同的数据也配置在下一地址的第二中位比特处。
地址寄存器102是比特宽度为32的寄存器,由保持地址值的高位比特侧(第一寄存器部分)和保持已参照数据数M的比特宽度C(第四实施例中C=3)的低位比特侧(第二寄存器部分)构成。
缓冲寄存器103是保持从存储器101装载的数据的比特宽度B(第五实施例中B=32)的寄存器。
这里,存储器101的比特宽度A为32,地址寄存器102的第二寄存器部分的比特宽度C为3,存储器101的低位比特侧的比特数D为24,A、C、D的之间有D=A-2C的关系。A、C之间,设P=2C时,有A=4×P的关系。也就是,P=23=8,A=4×8=32。
在第五实施例的可变长度解码装置中,进行可变长度解码的处理流程与第一实施例的处理流程(图2)相同。
在根据本发明的第五实施例的可变长度解码装置中,从缓冲寄存器103提取本次参照的数据的一般处理流程与第一实施例的处理流程(图3)相同。
在根据本发明的第五实施例的可变长度解码装置中,在图4中示出随着图3所示的处理流程变化的数据状态变化。
第五实施例的可变长度解码装置中,作为初始状态,如图2所示,在存储器101中从0×100地址开始按a,b,c,..的顺序存储数据,地址寄存器102中,地址值为0×101、已参照数据数为0×3,本次参照的数据数为N。
下面说明处理的一个例子。
步骤1中,从地址寄存器102分离并提取出已参照数据数0×3和地址值0×101。
步骤2中,使用步骤1分离的地址值0×101访问存储器101的0×101地址,装载数据b,c,d,e,存储到缓冲寄存器103中。
步骤3中,使用步骤1分离的已参照数据数0×3和本次参照的数据数N从存储数据b,c,d,e的缓冲寄存器103仅提取出本次参照的数据。用步骤3-1a到步骤3-3a表示具体提取方式的一个例子。
步骤3-1a中,将位于缓冲寄存器103的数据b,c,d,e左移位已参照数据数0×3。本次参照的数据D2的开头移位到缓冲寄存器103的最高位比特侧。在在通常可利用的处理器中,当如上所述移位时,低位比特侧(右)的没有数据的部分一般扩展为“0”(参照图4)。
步骤3-2a中,算出从“32”减去本次参照的数据数N的值。
步骤3-3a中,将步骤3-1a移位的数据再向右移位步骤3-2a算出的值。本次参照的数据D1的末尾移位到缓冲寄存器103的最低位比特侧。此时,移位称为逻辑移位。在逻辑移位中,高位比特侧(左)没有数据的部分扩展为“0”(参照图4)。
步骤4中,地址寄存器102中加上本次参照的数据数N,更新地址寄存器102的值。此时,通过相加,已参照数据数更新为(0×3+N),另外,通过从保持已参照数据数的低位比特侧向保持地址值的高位比特侧的进位还自动实现地址值的更新。
例如N=0×2的情况下,已参照数据数为0×3+0×2=0×5,可用3比特表示,没有进位,地址值仍为0×101。N=0×8时,已参照数据数为0×3+0×8=0×b,变为4比特,产生进位,地址值从0×101更新为0×102。此外,N=0×f时,已参照数据数为0×3+0×f=0×12,变为5比特,产生进位,地址值从0×101更新为0×102。
为帮助理解,举出更具体例子来说明。
图21A表示从存储器101的0×101装载存储到缓冲寄存器103中的数据。对应图20的数据b的是8比特的数据b8,b7,b6,..,b1。对应图20的数据c的是8比特的数据c8,c7,c6,..c1。此外,对应图20的数据d的是8比特的数据d8,d7,....d1。此外,对应图20的数据e的是8比特的数据e8,e7,....e1。总计32比特。
假设上次处理中数据b8,b7,b6的3比特为已参照的。因此,已参照数据数M=3。设本次参照的数据数N=23。这相当于b5,b4,..b1,d8,...d1,e8,e7的数据D2,用粗框对其进行强调。
图21B是将32比特的数据行b8,..b1,c8,..c1,d8,...d1,e8,...e1左移位已参照数据数M=3比特,从最高位开始存储数据行b5,..b1,c8,..c1,d8,,...d1,e8,...e1,将低位3比特设为“0”。粗框的开头与第32比特一致。
图21C表示将32比特的数据行b5,..b1,c8,..c1,d8,...d1,e8,...e1,0,0,0右移位9比特,从最高位开始的9比特设置“0”。从“32”中减去本次参照的数据数N=23得到右移位量的9比特。粗框的末尾与第1比特一致。更具体地,从缓冲寄存器103的最低位开始的23比特中存储数据D2的b5,b4,..b1,,c8,..c1,d8,,...d1,e8,e7的状态,至此本次参照的数据D2被提取出来。
已参照数据数M上加上本次参照的数据数N后,M+N=3+23=26,地址寄存器102中将已参照数据数M从“3”更新为“26”。“26”位于等于或者大于3×23的范围之内,因此将地址值进行3个进位,更新为地址值0×104。由于数据b,c,d的全部24比特的数据已参照完成,并且进入数据E的参照,因此向前3个的地址。已参照数据数M的“26”是16进制中的“0×1a”,是2进制中的“0b11010”,但是,除去进位的第4,5比特的从低位开始的3比特为“0b010”,为16进制的“0×2”。这对应于数据e的高位2个比特e8,e7已参照。
如图20所示,地址0×104的高位8比特中已经存储与前3个的地址0×101的低位侧8比特的数据e(e8,e7,....,e1)相同的数据,可继续使用数据。不再需要用于地址更新的特别监视和运算。
在第五实施例5所示例子中,低位24比特的数据配置在其下一地址的高位24比特,因此可一次提取出至少24比特+1比特的25比特的数据。此外,与干扰数据的情况相比,需要4倍的存储器容量。
此外,图20的地址寄存器102、缓冲寄存器103并不执行任何特殊操作,可利用处理器通常使用的通用缓冲寄存器来实现,并不需要特别专用的寄存器。但是,和现有技术中的访问地址、已参照数据数一样,地址寄存器102的值需要与对存储器101的空白区域的存储(saving)/恢复(returning)相关。
第六实施例参照图22到图24说明第六实施例的可变长度解码装置。
为方便说明,第六实施例的处理器将以基于32比特的处理器为示例,但本发明不限定于此。
图22中,存储器101存储将A(第六实施例中A=32)比特作为1个字的数据,各地址由高位8比特、第一中位8比特、第二中位8比特、低位8比特构成。存储器101中,与某地址的低位比特侧相同的数据也配置在下一地址的高位比特侧。
地址寄存器102是比特宽度32的寄存器,由保持地址值的高位比特侧(第一寄存器部分)和保持已参照数据数M的比特宽度C(第六实施例中C=5)的低位比特侧(第二寄存器部分)构成。
缓冲寄存器103是保持从存储器101装载的数据的比特宽度B(第六实施例中B=32)的寄存器。
本第六实施例中,其特征是包括将地址寄存器102的值与本次参照的比特数N相加的特殊加法器104。
当已参照比特数为M、本次参照的比特数为N时,(E是A-D的至少为1的整数,第六实施例中为32-8=24),特殊加法器104将 的商(整数)加到地址寄存器101的高位侧(第一寄存器部分),将余数G(整数)设置在地址寄存器101的低位侧(第二寄存器部分)。
这里,上述E中有E=H×2L的关系。第六实施例中E=24=3×23,H=3。
关于存储器101的数据,配置成高位24比特的剩余的低位8比特的数据也存储在下一地址的高位侧。具体说,例如在地址0×101,高位8比特存储数据d、第一中位8比特存储数据e、第二中位8比特存储数据f、低位比特侧存储数据g,而下一地址0×102的高位比特侧存储数据g。地址0×102的低位比特侧存储数据j,而下一地址0×103的高位比特侧存储数据j。
在第六实施例的可变长度解码装置中,进行可变长度解码的处理流程与第一实施例的处理流程(图2)相同。
在第六实施例的可变长度解码装置中,从缓冲寄存器103提取本次参照的数据的一般处理流程与第一实施例的处理流程(图3)相同。
在第六实施例的可变长度解码装置中,与第一实施例同样,随着图3所示的处理流程变化的数据状态在图4中示出。
第六实施例的可变长度解码装置中,作为初始状态,如图所示,在存储器101中从0×100地址开始按a,b,c,..的顺序存储数据,地址寄存器102的地址值为0×101、已参照数据数为0×3,本次参照的数据数为N。
下面说明处理的一个例子。
步骤1中,从地址寄存器102分离并提取出已参照数据数0×3和地址值0×101。
步骤2中,使用步骤1分离的地址值0×101访问存储器101的0×101地址,装载数据d,e,f,g存储到缓冲寄存器103中。
步骤3中,使用步骤1分离的已参照数据数0×3和本次参照的数据数N从存储数据d,e,f,g的缓冲寄存器103仅提取出本次参照的数据。用步骤3-1a到步骤3-3a表示具体提取方式的一个例子。
步骤3-1a中,将位于缓冲寄存器103的数据d,e,f,g左移位已参照数据数0×3。本次参照的数据D2的开头移位到缓冲寄存器103的最高位比特侧。在通常可利用的处理器中,当如上所述移位时,低位比特侧(右)的没有数据的部分一般扩展为“0”(参照图4)。
步骤3-2a中,算出从“32”减去本次参照的数据数N的值。
步骤3-3a中,将步骤3-1a移位的数据再向右移位步骤3-2a算出的值。本次参照的数据D2的末尾移位到缓冲寄存器103的最低位比特侧。此时,移位称为逻辑移位。在逻辑移位中,高位比特侧(左)没有数据的部分扩展为“0”(参照图4)。
步骤4中,用特殊加法器104在地址寄存器102中加上本次参照的数据数N,更新地址寄存器102的值。此时,通过相加,已参照数据数更新为(0×3+N)/24的余数,另外,通过从保持已参照数据数的低位比特侧向保持地址值的高位比特侧的(0×3+N)/24的商的值的相加还自动实现地址值的更新。
例如N=0×8时,已参照数据数为0×3+0×8=0×a,为24以下,不产生进位,地址值仍为0×101。M=0×13、N=0×8时,已参照数据数为0×13+0×8=0×1b(27),27/24的商为0×1,余数为0×3,地址值为0×101+0×1,更新为0×102。
为帮助理解,举出更具体例子来说明。
图23A表示从存储器101的0×101装载存储到缓冲寄存器103中的数据。对应图22数据d的是8比特的数据d8,d7,...d1。此外,对应图22的数据e的是8比特的数据e8,e7,...e1。此外,对应图22的数据f的是8比特的数据f8,f7,f6,..f1。对应图22的数据g的是8比特的数据g8,g7,g6,..g1。总计32比特。
假设上次处理中数据d8,d7,d6的3比特为已参照的。因此,已参照数据数M=3。设本次参照的数据数N=8。这相当于d5,d4,..d1,e8,e7,e6的数据D2。用粗框对其进行强调。
图23B是将32比特的数据行d8,...d1,e8,...e1,f8,..,f1,g8,...,g1左移位已参照数据数M=3比特,从最高位开始存储数据行d5,..d1,e8,..e1,f8,,...f1,g8,...g1,将低位3比特设为“0”。粗框的开头与第32比特一致。
图23C表示将32比特的数据行d5,..d1,e8,..e1,f8,,...f1,g8,...g1,0,0,0右移位24比特,从最高位开始的24比特设置“0”。从“32”中减去本次参照的数据数N=8得到右移位量的24比特。粗框的末尾与第1比特一致。更具体地,从缓冲寄存器103的最低位开始的23比特中存储数据D2的d5,d4,..d1,e8,e7,e6,至此本次参照的数据D2被提取出来。
已参照数据数M上加上本次参照的数据数N后,M+N=3+9=11,地址寄存器102中将已参照数据数M从“3”更新为“12”。“12”在24以下,因此不进行地址值的相加,维持原来的地址值0×101。
通过图19说明接着图18的处理。
图19A表示存储器101的0×101的数据装载到缓冲寄存器103的状态(与图19A相同)。
到至今止的处理中,数据c8,c7,...,c1,d8,d7,...,d5的12比特为已参照的,已参照数据数M=12。设本次参照的数据数N=9。这相当于d4,...d1,e8,e7,...e4的数据D3。用粗框对其进行强调。
图19B是将24比特的数据行c8,c7,...,c1,d8,d7,...,d1,e8,e7,...,e1左移位已参照数据数M=12比特,从最高位开始存储数据行d4,d3,...,d1,e8,e7,...,e1,将低位12比特设为“0”。粗框的开头与第24比特一致。
图19C表示将24比特的数据行d4,d3,..,d1,e8,e7,..e1,0,0,...,0右移位15比特,从最高位开始的15比特设置“0”。从“24”中减去本次参照数N=9,得到15比特。得到15比特。粗框的末尾与第一位对应。更具体地,从缓冲寄存器103的最低位开始的9比特存储数据D3的d4,..,d1,e8,e7,...,e4,至此本次参照的数据D2被提取出来。
已参照数据数M上加上本次参照的数据数N后,M+N=3+8=11,地址寄存器102中将已参照数据数M从“3”更新为“11”。“11”位于等于或者低于24的范围内,因比增加地址值,保持地址值0×101。
接着,到现在为止的处理中,数据d8,...,d1,e8,...,e1,f8,f7,f6的19比特已参照成。因此已参照数据数M=19。本次参照的数据数N=8。这相当于f5,f4,..,f1,g8,g7,g6的数据D2。用粗框对其进行强调。
图24是将32比特的数据d8,..,d1,e8,...,e1,f8,...,f1,g8,...,g1向左移位已参照数据数M=19比特,从最高位开始存储数据行f5,..,f1,g8,...,g1,将低位19比特设置为“0”。粗框的开头与第32比特一致。
图24C是将32比特的数据f5,...,f1,g8,...,g1,0,...0向右移位24比特,从最高位开始的24比特设置“0”。从“32”中减去本次参照的数据数N=8得到右移位量24比特。粗框的末尾与第1比特一致。更具体地,从缓冲寄存器103的最低位开始的23比特中存储数据D2的f5,f4,..f1,g8,g7,g6,至此本次参照的数据D2被提取出来。
已参照数据数M上加上本次参照的数据数N后,M+N=19+8=27,27/24的商为1,余数为3。因此,地址寄存器102中将已参照数据数M设为“3”。地址值上加1更新为地址值0×102。由于数据d,e,f的全部24比特的数据已参照成,进入数据g的参照,因此前进一个地址。已参照数据数M的“3”对应于数据g的高位3个比特g8,g7,g6已参照的。
如图22所示,地址0×102的高位8比特中已经存储与前1个的地址0×101的低位侧8比特的数据e(g8,g7,....,g1)相同的数据,可原样继续使用。不再需要用于地址更新的特别监视和运算。
第六实施例所示例子中,低位8比特的数据也配置在其下一地址的高位8比特,因此可一次提取出至少8比特+1比特的9比特的数据。此外,与干扰数据的情况相比,需要1.25倍的存储器容量。
此外,图20的地址寄存器102、缓冲寄存器103并不执行任何特殊操作,可利用处理器通常使用的通用缓冲寄存器来实现,并不需要特别专用的寄存器。但是,和现有技术中的访问地址、已参照数据数一样,地址寄存器102的值需要与对存储器101的空白区域的存储(saving)/恢复(returning)相关。
第七实施例图25表示使用上述实施形式的可变长度装置的再现系统。
如图25所示,从DVD等的存储系统流的数据存储装置501和接口、广播等的流配送单元送来的系统流被多重分离单元502分离为视频的可变长度编码的流和音频的可变长度编码的流。
视频的可变长度编码的流被可变长度解码装置503进行可变长度解码,解码输出到视频信号处理单元504中。在视频信号处理单元504中,以可变长度解码的数据为基础再现视频信号,并输出视频信号到视频显示单元505上。
音频的可变长度编码的流被可变长度解码装置506进行可变长度解码,解码输出到音频信号处理单元507中。在音频信号处理单元507中,以可变长度解码的数据为基础再现音频信号,并输出音频信号到音频输出单元508上。
通过在可变长度解码装置503、506中使用本发明的可变长度解码装置,即便用处理性能低的处理器也可实现再现系统,也可以廉价地构建系统。
权利要求
1.一种可变长度解码装置,包括存储器,将与存储在任意地址的低位比特侧的数据相同的数据配置并存储在该任意地址的下一地址的高位比特侧;缓冲寄存器,具有至少与所述存储器的比特宽度相等的比特宽度,以存储从所述存储器装载的数据;地址寄存器,将访问所述存储器的地址的值存储到高位比特侧,将所述缓冲寄存器已参照的数据数存储到低位比特侧,其特征在于通过对所述缓冲寄存器执行使用了所述已参照数据数和本次参照的数据数的数据移位操作,从该缓冲寄存器提取出用于可变长度解码的本次应参照的数据,响应于从所述缓冲寄存器提取出数据,将本次参照的数据数与该已参照数据数相加,以更新所述地址寄存器的低位比特侧的已参照数据数,当所述地址寄存器的低位比特侧的更新后的已参照数据数不进位时,维持存储到所述地址寄存器的高位比特侧的地址值不变,当更新后的已参照数据数有进位时,使用该进位将地址值更新为下一地址值。
2.如权利要求1所述的可变长度解码装置,其特征在于,所述存储器以比特数A为1个字存储数据,A是至少为2的整数,所述比特数A为2×P,其中P=2C,C是至少为1的整数。
3.如权利要求1所述的可变长度解码装置,其特征在于,所述存储器以比特数A为1个字存储数据,A是至少为2的整数,所述比特数A为3×P,其中P=2C,C是至少为1的整数。
4.如权利要求1所述的可变长度解码装置,其特征在于,所述存储器以比特数A为1个字存储数据,A是至少为2的整数,所述比特数A为 其中P=2C,C是至少为1的整数。
5.如权利要求1所述的可变长度解码装置,其特征在于,所述存储器以比特数A为1个字存储数据,A是至少为2的整数,所述比特数A为4×P,其中P=2C,C是至少为1的整数。
6.一种可变长度解码装置,包括存储器,以比特数A为1个字存储数据,A是至少为2的整数;具有比特宽度B的缓冲寄存器,存储从所述存储器装载的数据,其中B为至少为A的整数;地址寄存器,将访问所述存储器的地址的值存储到高位比特侧,并且将在所述缓冲寄存器已参照的数据数M存储在低位比特侧,所述低位比特侧的比特宽度为C,M是至少为0的整数,C是至少为1的整数,其特征在于与任意地址中比特数为D的低位比特侧存储的数据相同的数据配置在存储器中该任意地址的下一地址中比特数为D的高位比特侧,其中D为A-2C的整数,通过进行使用了所述已参照数据数M和本次参照的数据数N的数据移位操作,从所述缓冲寄存器提取出为了可变长度解码本次应参照的数据,其中N为至少为1的整数,并且,响应于该提取,假设E为通过A-D运算得到的至少为1的整数,F,G都是整数, 运算得到的商为F,余数为G,将所述商F加到所述地址寄存器的高位比特侧,以更新该高位比特侧存储的所述地址值;并且,设置所述余数G在所述地址寄存器的低位比特侧,以更新该低位比特侧存储的已参照数据数M。
7.如权利要求6所述的可变长度解码装置,其特征在于,所述E等于H×2L,其中H、L都是至少为1的整数。
8.如权利要求7所述的可变长度解码装置,其特征在于,所述H等于3。
9.如权利要求1到8中任一权利要求所述的可变长度解码装置,其特征在于,进一步包括用于在掩码已参照数据时执行移位的移位器,以从缓冲寄存器中提取本次应参照数据。
10.一种使用可变长度解码装置的可变长度解码方法,该装置包括存储器,以比特数A为1个字存储数据,其中A为至少为2的整数;比特宽度为B的缓冲寄存器,存储从所述存储器装载的数据,B为至少为A的整数;地址寄存器,将对所述存储器的访问地址存储到高位比特侧,并且将所述缓冲寄存器已参照的数据数M存储在比特宽度C的低位比特侧,M为至少为0的整数,C为至少为1的整数,其特征在于,包括步骤第一步骤,从所述地址寄存器分离访问地址值和已参照的数据数M,M为至少为0的整数;第二步骤,在所述存储器中,将与任意地址的比特数D的低位比特侧存储的数据相同的数据配置在该任意地址的下一地址的比特数D的高位比特侧,并且使用所述访问地址对所述存储器进行,将该存储器中存储的数据装载到所述缓冲寄存器中,D为A-2C的整数;第三步骤,通过执行使用了所述已参照数据数M和本次参照的数据数N的数据移位操作,从所述缓冲寄存器提取出为了可变长度解码本次应参照的数据,N为至少为1的整数;第四步骤,响应于所述提取本次应参照数据,将本次参照的数据数N与已参照数据数M相加,以更新在地址寄存器的低位比特侧存储的已参照数据数M,并且,当所述地址寄存器的低位比特侧的更新后的已参照数据数不进位时,维持所述地址寄存器的高位比特侧存储的所述地址值不变,当有进位时,使用该进位更新所述地址值为下一地址值。
11.如权利要求10所述的可变长度解码方法,其特征在于,所述存储器以比特数A为1个字存储数据,A是至少为2的整数,所述比特数A为2×P,其中P=2C,C是至少为1的整数。
12.如权利要求10所述的可变长度解码方法,其特征在于,所述存储器以比特数A为1个字存储数据,A是至少为2的整数,所述比特数A为3×P,其中P=2C,C是至少为1的整数。
13.如权利要求10所述的可变长度解码方法,其特征在于,所述存储器以比特数A为1个字存储数据,A是至少为2的整数,所述比特数A为 其中P=2C,C是至少为1的整数。
14.如权利要求10所述的可变长度解码方法,其特征在于,所述存储器以比特数A为1个字存储数据,A是至少为2的整数,所述比特数A为4×P,其中P=2C,C是至少为1的整数。
15.如权利要求10到14中任一权利要求所述的可变长度解码方法,其特征在于,在第三步骤中,当从所述缓冲寄存器中提取出本次应参照数据时,掩码所述已参照数据并进行移位。
16.一种使用可变长度解码装置的可变长度解码方法,该装置包括存储器,以比特数A为1个字存储数据,并且将与任意地址的比特数D的低位比特侧存储的数据相同的数据配置在该任意地址的下一地址的比特数D的高位比特侧,A为至少为2的整数,D为A-2C的整数;比特宽度B的缓冲寄存器,存储从所述存储器装载的数据,B为至少为A的整数;地址寄存器,将访问所述存储器的访问地址的值存储到高位比特侧,并且将所述缓冲寄存器已参照的数据数M存储在比特宽度为C的低位比特侧,M为至少为0的整数,C为至少为1的整数,其特征在于,包括步骤第一步骤,使用所述地址寄存器中存储的访问地址的值访问所述存储器,以载入数据到所述缓冲寄存器中;第二步骤,执行使用了所述缓冲寄存器的低位比特侧存储的已参照数据数M和本次参照的数据数N的数据移位操作,从所述缓冲寄存器提取出为了可变长度解码的应参照的数据,M为至少为0的整数,N为至少为1的整数,第三步骤,假设E为通过A-D运算得到的至少为1的整数,F,G都是整数, 运算得到的商为F,余数为G,将所述商F加到高位比特侧,以响应于所述应参照数据的提取而更新在所述地址寄存器的高位比特侧存储的地址值,并且,设置所述余数G到该低位比特侧,以更新存储在所述地址寄存器的低位比特侧的已参照数据数M。
17.如权利要求16所述的可变长度解码方法,其特征在于,所述E等于H×2L,其中H、L都是至少为1的整数。
18.如权利要求17所述的可变长度解码方法,其特征在于,所述H等于3。
19.如权利要求10至16中任一权利要求所述的可变长度解码方法,其特征在于,在所述第二步骤中,当所述缓冲寄存器中提取出本次应参照数据时,掩码所述已参照数据并进行移位。
20.一种再现系统,其特征在于,包括权利要求1到9中任一权利要求所述的可变长度解码装置;输入单元,输入由所述可变长度解码装置解码的数据流,所述数据流包括可变长度解码后的数据;再现单元,将由所述可变长度解码装置解码的数据处理为信号,并且再现该信号。
全文摘要
本可变长度解码装置包括存储器,将与任意地址的低位比特侧存储的数据相同的数据配置并存储在该任意地址的下一地址的高位比特侧;至少具有存储器的比特宽度的缓冲寄存器,存储从存储器装载的数据;地址寄存器,将对存储器的访问地址的值(地址值)存储到高位比特侧,将缓冲寄存器已参照的数据数存储在低位比特侧,通过对缓冲寄存器执行使用已参照数据数和本次参照的数据数的数据移位操作,从缓冲寄存器提取出本次应参照的数据,随着提取出数据,将本次参照的数据数与已参照数据数相加以更新地址寄存器的低位比特侧的已参照数据数,当更新后已参照数据数不进位时,维持地址寄存器的高位比特侧存储的地址值,有进位则使用该进位更新到下一地址值。
文档编号G06F12/04GK1649274SQ20051000504
公开日2005年8月3日 申请日期2005年1月31日 优先权日2004年1月29日
发明者古贺义宏, 藤本正一, 松本道弘 申请人:松下电器产业株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1