专利名称:编码装置以及成像装置的制作方法
技术领域:
本发明涉及到一种可变长度编码技术。
背景技术:
随着数码照相机和数码摄像机的使用变得越来越广泛以及通信技术的提高,图像数据压缩技术的应用日益广泛。这种压缩技术的具有代表性的例子是ISO标准运动图像专家组(MPEG,Moving Picture Experts Group)格式。
MPEG技术通过以下方式实现图像数据压缩。基于帧内相关性,将帧分为多个块,各块由多个像素组成。在这之后,各块中的数据经过为正交变换一种的离散余弦变换(DCT)运算、量化、并随后进行可变长度编码。
下面将详细描述可变长度编码处理。基于由DCT运算结果获得的DCT系数,产生Level值、Last值和Run值。Level值表示非零DCT系数的大小,Last值表示该非零DCT系数是否为块中最后一个系数,并且Run值表示非零DCT系数前连续为零的系数的个数。这样,就对产生的Level值、Last值和Run值的组合指定了唯一的代码。在本说明书中,Level值、Last值和Run值的组合表示为组合(Last,Run,Level),并且称Level值的绝对值为Level绝对值。
在这里,MPEG-4格式规定了可变长度代码(VLC)表,该表对每一组合(Last,Run,Level绝对值)定义了唯一的代码。在下文中,称各定义在VLC表中的唯一代码为VLC。通过与组合(Last,Run,Level绝对值)相对应的VLC以及表示Level值符号的值,产生指定给组合(Last,Run,Level)的代码。
如果在所述VLC表中没有与组合(Last,Run,Level绝对值)相对应的VLC,则利用下述三种换码模式(escape mode)之一产生指定给组合(Last,Run,Level)的代码。
根据第一换码模式,从VLC表中检索用于组合(Last,Run,Level绝对值)的LMAX。该LMAX是与成对的Last值和Run值相对应的Level绝对值的最大值。随后,从Level绝对值中减去该检索的LMAX,从而计算出New Level(=Level绝对值-LMAX)。在这之后,再次查找VLC表中与组合(Last,Run,New Level)相对应的VLC。如果在VLC表中存在相对应的VLC,则基于该相应的VLC,产生要指定给组合(Last,Run,Level)的代码。
根据第二换码模式,从VLC表中检索用于组合(Last,Run,Level绝对值)的RMAX。RMAX是与成对的Last值和Level绝对值相对应的Run值的最大值。随后,通过从Run值中减去该检索的RMAX加1所得到的值,计算出New Run(=Run值-(RMAX+1))。在这之后,再次查找VLC表以检索与组合(Last,New Run,Level绝对值)相对应的VLC。如果在VLC表中存在相对应的VLC,则基于该相应的VLC产生代码,并指定给组合(Last,Run,Level)。
根据第三换码模式,基于组合(Last,Run,Level)产生具有固定长度的代码,并且指定给组合(Last,Run,Level)。
按照惯例,首先查找VLC表用于检索与组合(Last,Run,Level绝对值)相对应的VLC。如果查找到,则利用该检索到的VLC以及表示Level值符号的值产生指定给组合(Last,Run,Level)的代码。
如果在VLC表中没有与组合(Last,Run,Level绝对值)相对应的VLC,则根据上述第一换码模式进行代码产生运算。如果在VLC表中没有与组合(Last,Run,New Level)相对应的VLC,则根据第二换码模式进行代码产生运算。如果在VLC表中没有与组合(Last,New Run,Level绝对值)相对应的VLC,则根据第三换码模式进行代码产生运算。
在执行由MPEG-4通过这种方式定义的可变长度编码处理的情况下,需要多次查找VLC表,直到获得了作为最后手段的固定长度代码。由于数据经常需要第三换码模式获得,因此这就产生了数据的低处理速度问题。
为了解决这个问题,专利文件1(日本专利申请公开号为No.2001-586928)公开了一种可变长度编码方法,该方法使用三个VLC表,以基于与组合(Last,Run,Level绝对值)相对应的VLC并根据第一到第三换码模式,并行地进行上述四类代码产生运算。从而产生四类代码。根据产生出的四个代码中预置的优先级,选择并输出适当的代码。通过这样做,可以缩短可变长度编码所需的时间。
发明内容
虽然缩短了处理周期,然而,在专利文件1中公开的可变长度编码方法具有如下问题,由于需要三个VLC检索电路并行运行而需要大规模电路。为了解决这个问题,本发明的目的在于提供一种编码装置以及成像装置,该装置能够无须增加电路规模而缩短处理周期。
该目的通过一种编码装置实现,该编码装置输出与输入数据相对应的代码,并包括有存储单元,用于存储与组相对应的边界值,该组由大量具有相同特性的备选输入数据构成,该组被分成(i)代码存在子组,由一个或多个在代码表中具有相应的可变长度代码的备选输入数据构成,以及(ii)代码不存在子组,由一个或多个在代码表中不具有相应的可变长度代码的备选输入数据构成,所述边界值表示代码存在子组和代码不存在子组之间的边界;获得单元,用于获得输入数据;第一判断单元,用于判断所获得的输入数据是否属于所述组;读出单元,如果所述第一判断单元判断为肯定,用于从所述存储单元读取所述边界值;第二判断单元,用于利用所读取的边界值判断所获得的输入数据是否包括在所述代码存在子组中;以及产生单元,如果所述第二判断单元判断为否定,用于产生并输出替代代码,用于替代与所获得的输入数据相对应的可变长度代码。
根据这种结构,所述第二判断单元利用预先存储在所述存储单元的所述边界值判断所获得的输入数据是否包括在所述代码存在子组中,并且如果所述第二判断单元判断为否定,则所述产生单元产生所述替代代码。假设所获得的输入数据在所述代码表中不具有相对应的代码。利用上述结构,在产生替代代码前,所述产生单元不需要进行读取与所获得的输入数据相对应的可变长度代码的不必要的尝试。结果是,可以缩短编码装置产生代码所需的处理周期。
这里,所获得的输入数据以及所述多个备选输入数据均至少包括第一系数和第二系数,构成所述组的所述多个备选输入数据具有绝对值相同的第一系数,所述边界值为构成所述代码存在子组的备选输入数据的第二系数的绝对值中的最大值,并且所述第二判断单元将所获得的输入数据的第二系数的绝对值与所述边界值比较,以判断所获得的输入数据是否包括在所述代码存在子组中。
根据这种结构,存储在所述存储单元的所述边界值为构成所述代码存在子组的备选输入数据的第二系数的绝对值中的最大值。因此,仅仅通过将所获得的输入数据的第二系数的绝对值与存储在所述存储单元的最大值进行比较,所述第二判断单元就能够在较短的时间周期内判断所获得的输入数据是否包括在所述代码存在子组中。
这里,当所述第二判断单元判断所获得的输入数据不包括在所述代码存在子组中时,所述产生单元(i)利用所述边界值对所获得的输入数据执行第一减法以产生第一减法数据,并且利用所述边界值判断所述第一减法数据是否包括在所述代码存在子组中,并且(ii)如果判断为肯定,则从所述代码表中提取与所述第一减法数据相对应的可变长度代码,并且产生所述替代代码,该代码包括提取出的可变长度代码、表示所述第一减法已经执行的第一减法定义代码、以及表示所获得的输入数据的第一系数和第二系数之一为正或者为负的符号代码。
根据这种结构,当所述第二判断单元判断所获得的输入数据在所述代码表中不具有相对应的可变长度代码时,所述产生单元判断所述第一减法数据是否包括在所述代码存在子组中,以产生所述替代代码。如上所述,构成所述代码存在子组的所述备选输入数据在所述代码表中具有相对应的可变长度代码。假设所述第一减法数据在所述代码表中不具有相对应的可变长度代码。利用上述结构,所述产生单元不需要进行从所述代码表中读取与所述第一减法数据相对应的可变长度代码的不必要的尝试。结果是,可以进一步缩短编码装置输出代码所需的处理周期。
这里,所述产生单元对所获得的输入数据的第二系数的绝对值执行所述第一减法,以计算减得的第二系数,所产生的第一减法数据包括所获得的输入数据的第一系数和减得的第二系数,并且所述产生单元对减得的第二系数和所述边界值进行比较,并且如果减得的第二系数小于或等于所述边界值,则判断所述第一减法数据包括在所述代码存在子组中。
根据这种结构,通过判断所减得的第二系数和所述边界值中哪个大,所述产生单元能够容易地判断所述第一减法数据在所述代码表中是否具有相对应的可变长度代码。
这里,所述产生单元对所获得的输入数据的第二系数的绝对值执行所述第一减法以计算减得的第二系数,所产生的第一减法数据包括所获得的输入数据的第一系数和减得的第二系数,所述产生单元通过将所述边界值加倍,并且从所获得的输入数据的第二系数的绝对值中减去加倍的边界值而产生中间值,并且如果产生的中间值小于或等于零,则判断所述第一减法数据包括在所述代码存在子组中。
根据这种结构,所述产生单元利用所述中间数据判断所述第一减法数据是否包括在所述代码存在子组中。在这种方法中,所述产生单元能够并行地执行所述第一减法数据的产生,以及通过利用所述中间值进行判断。换句话说,通过利用所述中间值进行判断的机构和产生所述第一减法数据的机构可以并行设置。结果是,所述编码装置能够在所获得的输入数据的输入和与所获得的输入数据相对应的代码的输出之间获得缩短的步骤。
这里,所述产生单元通过将所述边界值移位1位将所述边界值加倍。
根据这种结构,所述产生单元可以容易地产生所述中间值。
同样,所述存储单元还在其上存储有备用边界值,用于由大量具有绝对值相同的第二系数的备选输入数据构成的备用组,所述备用组分成(i)备用代码存在子组,由一个或多个在所述代码表中具有相应的可变长度代码的备选输入数据构成,以及(ii)备用代码不存在子组,由一个或多个在所述代码表中不具有相应的可变长度代码的备选输入数据构成,并且所述备用边界值表示所述备用代码存在子组和所述备用代码不存在子组之间的边界,当所述第二判断单元判断所获得的输入数据不包括在所述代码存在子组中,并且所述产生单元判断所述第一减法数据不包括在所述代码存在子组中时,所述产生单元(i)利用所获得的输入数据的第二系数判断所获得的输入数据是否属于所述备用组,(ii)如果判断为肯定,则从所述存储单元中读取所述备用边界值,利用读取的备用边界值对所获得的输入数据执行第二减法以产生第二减法数据,并且利用所述备用边界值判断产生的第二减法数据是否包括在所述备用代码存在子组中,并且(iii)如果判断为肯定,则从所述代码表中提取与所述第二减法数据相对应的可变长度代码,并且产生所述替代代码,该替代代码包括提取的可变长度代码、表示所述第二减法已经执行的第二减法定义代码、以及表示所获得的输入数据的第一系数和第二系数之一为正或者为负的符号代码。
根据这种结构,构成所述备用代码存在子组的备选输入数据在所述代码表中具有相对应的可变长度代码,并且所述存储单元在其上预先存储所述备用边界值。为了产生替代代码,所述产生单元判断所述第二减法数据是否包括在所述备用代码存在子组中。这里,假设所述第二减法数据在所述代码表中不具有相对应的可变长度代码。通过上述结构,所述产生单元不进行读取与所述第二减法数据相对应的可变长度代码的不必要的尝试。结果是,能够进一步缩短编码装置输出所述代码所需的处理周期。
在这里,在所述第二判断单元判断所获得的输入数据不包括在所述代码存在子组中,并且所述产生单元判断所述第一减法数据不包括在所述代码存在子组中,并且所述第二减法数据不包括在所述备用代码存在子组中的情况下,所述产生单元产生所述替代代码,该替代代码包括所获得的输入数据以及表示所获得的输入数据包括在内的输入数据定义代码。
根据这种结构,当判断所述第二减法数据在所述代码表中不具有相对应的可变长度代码时,所述产生单元产生所述替代代码,该替代代码包括所获得的输入数据以及表示所获得的输入数据包括在内的输入数据定义代码。按照这种方式,不论所获得的输入数据、所述第一减法数据、以及所述第二减法数据中的一个或多个是否在所述代码表中具有相对应的可变长度代码,为了输出与所获得的输入数据相对应的所述代码,所述编码装置仅查找所述代码表一次。这意味着,编码装置仅需要一个代码表。
在这里,由预定数量的像素组成的块图像经过正交变换,由此产生由预定数量的排列成矩阵形式的系数所形成的块,并且所获得的输入数据以及所述多个备选输入数据中的每一个均包括(i)Run值,表示预定数量的系数中连续为零的系数的个数,(ii)Level值,表示连续为零的系数之后的非零系数的大小,以及(iii)Last值,表示该非零系数是否为所述块中最后一个系数。
根据这种结构,所述编码装置处理包括Run值、Last值和Level值的数据。因此,本发明在压缩图像数据的电子装置中具有广泛应用。
这里,所获得的输入数据和所述多个备选输入数据中的每一个均包括作为第一系数的Run值,以及作为第二系数的Level值,构成所述组的所述多个备选输入数据具有相同的Last值和Run值的对,所述边界值为LMAX,该值为构成所述代码存在子组的所述备选输入数据的Level值的绝对值中的最大值,并且所述第二判断单元将所获得的输入数据的Level值的绝对值和LMAX比较,如果所获得的输入数据的Level值的绝对值大于LMAX,则判断所获得的输入数据不包括在所述代码存在子组中。
根据这种结构,所述LMAX为构成所述代码存在子组的所述备选输入数据的Level值的绝对值中的最大值。通过将所获得的输入数据的Level值的绝对值和LMAX比较,所述第二判断单元能够很容易地判断所获得的输入数据是否在所述代码表中具有相对应的可变长度代码。
同样,当所述第二判断单元判断所获得的输入数据不包括在所述代码存在子组中时,所述产生单元(i)从所获得的输入数据的Level值的绝对值中减去LMAX,以计算New Level,并且产生第一减法数据,该数据包括所获得的输入数据的Last值和Run值以及计算出的New Level,(ii)将New Level和LMAX比较,以判断所述第一减法数据是否包括在所述代码存在子组中,并且(iii)如果判断为肯定,则从所述代码表中提取与所述第一减法数据相对应的可变长度代码,并且产生所述替代代码,该代码包括提取出的可变长度代码、表示所述减法已经执行的第一减法定义代码、以及表示所获得的输入数据的Level值为正或为负的符号代码。
根据这种结构,当判断所述第一减法数据包括在所述代码存在子组中时,所述产生单元从所述代码表中读取与所述第一减法数据相对应的可变长度代码。假设所述第一减法数据在所述代码表中不具有相对应的可变长度代码。通过上述结构,所述编码装置不进行读取与所述第一减法数据相对应的可变长度代码的不必要的尝试。
此外,当判断包括New Level的所述第一减法数据在代码表中具有相对应的可变长度代码时,所述编码装置能够断定,能够根据所述第一换码模式,产生与诸如Last值、Run值和Level值的组合的所述获得的输入数据相对应的代码。
在这里,当所述第二判断单元判断所获得的输入数据不包括在所述代码存在子组中时,所述产生单元(i)从所获得的输入数据的Level值的绝对值中减去所述LMAX,以计算New Level,并且产生第一减法数据,该数据包括所获得的输入数据的Last值和Run值以及计算出的New Level,(ii)将所述LMAX加倍,并且将所获得的输入数据的Level值的绝对值和加倍的LMAX比较,以判断所述第一减法数据是否包括在所述代码存在子组中,以及(iii)如果判断为肯定,则从所述代码表中提取与所述第一减法数据相对应的可变长度代码,并且产生所述替代代码,该代码包括提取出的可变长度代码、表示所述减法已经执行的第一减法定义代码、以及表示所获得的输入数据的Level值为正或为负的符号代码。
根据这种结构,所述产生单元通过将Level值的绝对值和加倍的LMAX比较,判断所述第一减法数据是否在所述代码表中具有相对应的可变长度代码。由此,所述产生单元能够并行地执行判断以及产生所述第一减法数据。换句话说,进行所述判断的机构和产生所述第一减法数据的机构能够并行地设置。结果是,所述编码装置在输入所获得的输入数据和产生与所获得的输入数据相对应的代码之间获得缩短的步骤。
这里,所获得的输入数据以及所述多个备选输入数据中的每一个均包括作为第一系数的Level值,以及作为第二系数的Run值,构成所述组的所述多个备选输入数据具有相同的Last值和Level值的绝对值的对,所述边界值为RMAX,该值为构成所述代码存在子组的所述备选输入数据的Run值中的最大值,并且所述第二判断单元将所获得的输入数据的Run值和RMAX比较,如果所获得的输入数据的Run值大于所述RMAX,则判断所获得的输入数据不包括在所述代码存在子组中。
根据这种结构,所述RMAX为构成所述代码存在子组的所述备选输入数据的Run值中的最大值。通过将所获得的输入数据的Run值和所述RMAX比较,所述第二判断单元能够容易地判断所获得的输入数据在所述代码表中是否具有相对应的可变长度代码。
这里,当所述第二判断单元判断所获得的输入数据不包括在所述代码存在子组中时,所述产生单元(i)从所获得的输入数据的Run值中减去由RMAX加1得到的值,以计算New Run,并且产生第二减法数据,该数据包括所获得的输入数据的Last值和Level值的绝对值,以及计算出的New Run,(ii)将所述New Run和所述RMAX比较以判断所述第二减法数据是否包括在所述代码存在子组中,并且(iii)如果判断为肯定,则从所述代码表中提取与所述第二减法数据相对应的可变长度代码,并且产生所述替代代码,该代码包括提取出的可变长度代码、表示所述减法已经执行的第二减法定义代码、以及表示所获得的输入数据的Level值为正或为负的符号代码。
根据这种结构,当判断所述第二减法数据包括在所述代码存在子组中时,所述产生单元从所述代码表中读取与所述第二减法数据相对应的可变长度代码。假设所述第二减法数据在所述代码表中不具有相对应的可变长度代码。通过上述结构,所述编码装置无须进行不必要的读取与所述第二减法数据相对应的可变长度代码的尝试。此外,当判断所述第二减法数据在所述代码表中具有相对应的可变长度代码时,所述编码装置能够断定,能够根据所述第二换码模式产生与诸如Last值、Run值和Level值的组合的所述输入数据相对应的代码。
根据上述结构,所述编码装置为了做出所述判断并且产生所述第二减法数据,利用RMAX作为所述边界值。在这种方法中,在根据所述第一换码模式产生的代码以及根据所述第二换码模式产生的代码都有可能指定给所获得的输入数据的情况下,所述编码装置优先输出根据所述第二换码模式产生的代码。
这里,当所述第二判断单元判断所获得的输入数据不包括在所述代码存在子组中时,所述产生单元(i)从所获得的输入数据的Run值中减去由RMAX加1得到的值,以计算New Run,并且产生第二减法数据,该数据包括所获得的输入数据的Last值和Level值的绝对值,以及计算出的New Run,(ii)将RMAX加倍,并且将Run值和由加倍的RMAX加1得到的值比较,以判断所述第二减法数据是否包括在所述代码存在子组中,以及(iii)如果判断为肯定,则从所述代码表中提取与所述第二减法数据相对应的可变长度代码,并且产生所述替代代码,该代码包括提取出的可变长度代码、表示所述减法已经执行的第二减法定义代码、以及表示所获得的输入数据的Level值为正或为负的符号代码。
根据这种结构,所述产生单元通过将所述Run值和由加倍的RMAX加1得到的值比较,判断所述第二减法数据是否在所述代码表中具有相对应的可变长度代码。这样,所述产生单元能够并行地进行所述判断以及产生所述第二减法数据。换句话说,进行所述判断的机构和产生所述第二减法数据的机构能够并行设置。结果是,所述编码装置能够在所获得的输入数据的输入和与所获得的输入数据相对应的代码的产生之间实现缩短的步骤。
这里,所述第二判断单元在其上存储有指定的阈值,并且当判断所获得的输入数据的Run值小于或者等于所述指定阈值时,所述第二判断单元进行所述判断。
所述编码装置被认为用在成像装置中,例如数码相机。这种成像装置产生图像数据,并且对图像进行量化、运动补偿以及正交变换,以在固定时间间隔产生系数。这里,计算连续为零的系数的个数,以获得输入数据的Run值。因此,看起来产生所述输入数据所需的时间取决于计算所述输入数据的Run值。
根据上述结构,当所获得的输入数据的Run值大于所述阈值时,所述第二判断单元不进行判断。在这种情况下,在所述编码装置仅具有一个代码表的假设下,所述编码装置运行在与传统编码装置相同的方式下。具体的说,所述编码装置首先查找用于与组合(Last,Run,Level)相对应的可变长度代码的代码表。如果其中没有相对应的可变长度代码,所述编码装置依次根据所述第一到第三换码模式试图产生所述替代代码。因此,当所述判断单元不进行判断时,通常需要比当所述判断单元进行判断时更长的时间周期,以产生与所获得的输入数据相对应的代码。
考虑到这点,通过适当设置所述阈值,所述编码装置能够在产生输入数据段所需的时间周期和产生相应代码所需的时间周期之间达到较好的平衡。
这里,所述编码装置还包括接收单元,用于接收预定阈值的输入,并且所述第二判断单元在其上存储通过所述接收单元接收的所述预定阈值。
根据这种结构,所述编码装置能够通过所述接收单元接收阈值的输入。这样,所述编码装置的操作者能够自由地更改阈值,使得在产生输入数据段所需的时间周期和产生相应代码所需的时间周期之间达到最佳平衡。
这里,所获得的输入数据和所述多个备选输入数据中的每一个均至少包括第一系数和第二系数,所述第二判断单元在其上存储预定的固定长度代码阈值,并且当所获得的输入数据的第一系数的绝对值超过固定长度代码阈值时,所述第二判断单元不进行判断,并且所述产生单元产生替代代码,该代码包括所获得的输入数据以及表示所获得的输入数据包括在内的输入数据定义代码。
这里,由预定数量的像素组成的块图像进行正交变换,由此产生由所述排列成矩阵的预定数量的系数所形成的块,并且所获得的输入数据以及所述多个备选输入数据中的每一个均包括(i)Run值,表示所述预定数量的系数中连续为零的系数的个数,(ii)Level值,表示所述连续为零的系数之后的非零系数的大小,以及(iii)Last值,用于表示所述非零系数是否为所述块中最后一个系数。
这里,所获得的输入数据以及所述多个备选输入数据中的每一个均包括作为所述第一系数的Level值,并且当所获得的输入数据的Level值的绝对值超过所述固定长度代码阈值时,所述第二判断单元不进行判断。
在这里,所获得的输入数据以及所述多个备选输入数据中的每一个均包括作为所述第一系数的Run值,并且当所获得的输入数据的Run值超过所述固定长度代码阈值时,所述第二判断单元不进行判断。
根据这些结构,当所获得的输入数据的第一系数的绝对值超过所述固定长度代码阈值时,所述第二判断单元不进行判断,并且所述产生单元产生所述替代代码,该代码包括所获得的输入数据以及所述输入数据定义代码。当所获得的输入数据的第一系数的绝对值超过在所述代码表中具有相对应的可变长度代码的备选输入数据的第一系数的绝对值中的最大值时,所述编码装置不能利用所述代码表产生代码。
假设不能利用所述代码表产生与所获得的输入数据相对应的代码。利用上述结构,通过适当设置所述固定长度代码阈值,所述编码装置无须查找所述代码表,无须进行判断,因而能够在较短的时间周期内产生替代代码,该代码包括所获得的输入数据和所述输入数据定义代码。
这里,同样通过一种输出与输入数据相对应的代码的编码装置实现上述目的,该装置包括获得单元,用于获得输入数据,该数据至少包括第一系数和第二系数;第一存储单元,用于存储与第一组相对应的第一边界值,所述第一组由多个备选输入数据组成,该备选输入数据中的每一个均至少具有第一系数和第二系数并且具有绝对值相同的第一系数,所述第一组分为(i)由一个或多个备选输入数据构成的第一代码存在子组,该备选输入数据在代码表中具有相应的可变长度代码,以及(ii)由一个或多个备选输入数据构成的第一代码不存在子组,该备选输入数据在所述代码表中不具有相应的可变长度代码,所述第一边界值表示所述第一代码存在子组和所述第一代码不存在子组之间的边界;第一判断单元,用于判断所获得的输入数据是否属于所述第一组中,并且如果判断为肯定,则从所述第一存储单元读取所述第一边界值;第二判断单元,用于利用所述第一边界值,判断所获得的输入数据以及等效于所获得的输入数据的第一等同数据(equivalent data)是否包括在所述第一代码存在子组中;第二存储单元,用于存储与第二组相对应的第二边界值,所述第二组由所述多个备选输入数据构成,该备选输入数据中的每一个均至少具有第一系数和第二系数并且具有绝对值相同的第二系数,所述第二组分为(a)由一个或多个备选输入数据构成的第二代码存在子组,该备选输入数据在所述代码表中具有相应的可变长度代码,以及(b)由一个或多个备选输入数据构成的第二代码不存在子组,该备选输入数据在所述代码表中不具有相应的可变长度代码,所述第二边界值表示所述第二代码存在子组和所述第二代码不存在子组之间的边界;第三判断单元,用于判断所获得的输入数据是否属于第二组,并且如果判断为肯定,则从所述第二存储单元读取所述第二边界值;第四判断单元,用于利用所述第二边界值,判断所获得的输入数据以及等效于所获得的输入数据的第二等同数据是否包括在所述第二代码存在子组中;判断控制单元,用于从通过所述第二判断单元和通过所述第四判断单元获得的判断结果中选择一个;以及产生单元,用于(I)如果所选出的判断结果为肯定,则产生并输出基于所选出的判断结果的代码,(II)如果所选出的判断结果为否定,则参照未被选出的判断结果,(III)如果未被选出的判断结果为肯定,则产生并输出基于未被选出的判断结果的代码,并且(IV)如果所述未被选出的判断结果为否定,则输出所获得的输入数据以及表示所获得的输入数据包括在内的输入数据定义代码。
这里,当判断所获得的输入数据不包括在所述第一代码存在子组中时,所述第二判断单元(i)利用所述第一边界值对所获得的输入数据执行第一减法,以产生第一减法数据,作为所述第一等同数据,并且(ii)利用所述第一边界值判断所产生的第一减法数据是否包括在所述第一代码存在子组中,以及当判断所获得的输入数据不包括在所述第二代码存在子组中时,所述第四判断单元(a)利用所述第二边界值对所获得的输入数据执行第二减法,以产生第二减法数据,作为所述第二等同数据,并且(b)利用所述第二边界值判断所产生的第二减法数据是否包括在所述第二代码存在子组中。
这里,当从所述第二判断单元获得的判断结果为肯定时,所获得的输入数据和所述第一等同数据中的至少一个包括在所述第一代码存在子组中。当从所述第二判断单元获得的判断结果为否定时,所获得的输入数据和所述第一等同数据均不包括在所述第一代码存在子组中。当从所述第四判断单元获得的判断结果为肯定时,所获得的输入数据和所述第二等同数据中的至少一个包括在所述第二代码存在子组中。当从所述第四判断单元获得的判断结果为否定时,所获得的输入数据和所述第二等同数据均不包括在所述第二代码存在子组中。
根据这些结构,所述产生单元参照从所述第二判断单元和所述第四判断单元中获得的判断结果中的一个或者两个判断结构。当所述判断结果均为否定时,所述产生单元输出所获得的输入数据和所述输入数据定义代码。如上所述,构成所述第一代码存在子组和所述第二代码存在子组的备选输入数据在所述代码表中具有相对应的可变长度代码。假设获得的输入数据、所述第一等同数据以及所述第二等同数据在所述代码表中均不具有相对应的可变长度代码。利用上述结构,所述编码装置无须进行不必要的代码表查找。
这里,所述第二判断单元在所述第四判断单元进行判断之前进行判断,并且所述判断控制单元选择由所述第二判断单元获得的判断结果。
这里,当所述第二判断单元判断所述第一减法数据包括在所述第一代码存在子组中时,所述第四判断单元不判断所述第二减法数据是否包括在所述第二代码存在子组中。
根据这些结构,当所述第二判断单元判断所述第一减法数据包括在所述第一代码存在子组中时,所述第四判断单元不进行判断。因而,当判断所述第一减法数据包括在所述第一代码存在子组中时,所述第四判断单元无须执行不必要的判断处理。假设这种结构通过彼此串联的所述第二判断单元和所述第四判断单元实现。所述第二判断单元向所述第四判断单元输出所述判断结果以及所获得的输入数据和所述第一减法数据之一,并且所述第四判断单元根据由所述第二判断单元输出的所获得的输入数据和所述第一减法数据之一进行判断。当判断所述第一减法数据包括在所述第一代码存在子组中时,所述第二判断单元向所述第四判断单元输出判断结果以及所述第一减法数据。在这种情况下,所述第四判断单元不进行判断,并且所述编码装置由此避免了错误的对所述第一减法数据执行所述第二减法。结果是,所述编码装置能够产生正确的替代代码。
这里,所述第二判断单元和所述第四判断单元并行地进行独立的判断。
根据这种结构,能够在很短的时间内完成由所述第二判断单元和所述第四判断单元进行的判断操作。而且,当通过并行配置所述第二判断单元和所述第四判断单元来实现这种结构时,所述编码装置能够在所获得的输入数据的输入和与所获得的输入数据相对应的代码的输出之间获得更短的步骤。
这里,所述判断控制单元优先选择从所述第二判断单元获得的判断结果。
根据这种结构,所述判断控制单元优先选择从所述第二判断单元获得的判断结果。假设,从所述第二判断单元获得的判断结果以及从所述第四判断单元获得的判断结果均为肯定。通过这种结构,所述编码装置能够优先产生基于从所述第二判断单元获得的判断结果的代码。特别是,假设所述第二判断单元判断所述第一减法数据包括在所述第一代码存在子组中,并且所述第四判断单元判断所述第二减法数据包括在所述第二代码存在子组中。利用上述结构,所述编码装置能够优先选择并输出与所述第一减法数据相对应的代码。
这里,所述的编码装置还进一步包括接收单元,用于接收优先级指令,该指令表示从由所述第二判断单元获得的判断结果和由所述第四判断单元获得的判断结果中优先选择哪一个,其中所述判断控制单元根据所述优先级指令,从由所述第二判断单元获得的判断结果和由所述第四判断单元获得的判断结果中优先选择一个。
根据这种结构,对所述编码装置提供所述接收单元。从而,所述编码装置的操作者能够自由的优先选择由所述第二判断单元获得的判断结果和由所述第四判断单元获得的判断结果中应该优选选择的那一个。
这里,由预定数量的像素组成的块图像进行正交变换,由此产生了由排列成矩阵形式的预定数量的系数所形成的块,并且所获得的输入数据以及所述多个备选输入数据中的每一个均包括(i)Run值,表示预定数量的系数中连续为零的系数的个数,作为所述第一系数,(ii)Level值,表示连续为零的系数之后的非零系数的大小,作为所述第二系数,以及(iii)Last值,表示该非零系数是否为所述块中的最后一个系数。
根据这种结构,所述编码装置为包括Run值、Last值和Level值的输入数据输出代码。因此,所述编码装置在具有成像功能的多种电子装置中有应用,如数码照相机和数码摄像机,以及具有成像功能的移动电话。
这里,构成所述第一组的多个备选输入数据具有相同的Last值和Run值的对,所述第一边界值为LMAX,该值为构成所述第一代码存在子组的备选输入数据的Level值的绝对值中的最大值,如果获得的输入数据的Level值的绝对值大于所述LMAX,则所述第二判断单元判断获得的输入数据不包括在所述第一代码存在子组中,构成所述第二组的所述多个备选输入数据具有相同的Last值和Level绝对值的对,所述第二边界值为RMAX,该值为构成所述第二代码存在子组的所述备选输入数据的Run值中的最大值,如果获得的输入数据的Run值大于所述RMAX,则所述第四判断单元判断获得的输入数据不包括在所述第二代码存在子组中。
根据这种结构,所述第二判断单元能够仅通过将所述Level值的绝对值和所述LMAX比较进行判断,并且所述第四判断单元能够仅通过将所述Run值和所述RMAX比较进行判断。
这里,当判断所获得的输入数据不包括在所述第一代码存在子组中时,所述第二判断单元(i)利用所述LMAX对所获得的输入数据的Level值的绝对值执行所述第一减法以计算New Level,(ii)产生作为所述第一等同数据的第一减法数据,该数据包括计算出的New Level以及所获得的输入数据的Run值和Last值,并且(iii)将所述New Level和所述LMAX比较,以判断产生的第一减法数据是否包括在所述第一代码存在子组中,以及当判断所获得的输入数据不包括在所述第二代码存在子组中时,所述第四判断单元(a)利用所述RMAX对所获得的输入数据的Run值执行所述第二减法以计算New Run,(b)产生作为所述第二等同数据的第二减法数据,该数据包括计算出的NewRun以及所获得的输入数据的Level值的绝对值和Last值,并且(c)将所述New Run和所述RMAX比较,以判断产生出的第二减法数据是否包括在所述第二代码存在子组中。
这里,所述第二判断单元在所述第四判断单元进行判断之前进行判断,并且所述判断控制单元选择从所述第二判断单元获得的判断结果。
根据这些结构,所述第二判断单元在所述第四判断单元进行判断之前进行判断,并且所述判断控制单元选择从所述第二判断单元获得的判断结果。因此,当和与所述第二减法数据相对应的可变长度代码相比,所述产生单元优先输出与所述第一减法数据相对应的可变长度代码。
这里,所述第二判断单元和所述第四判断单元并行进行独立的判断。
根据这中结构,所述第二判断单元和所述第四判断单元并行设置。结果是,所述编码装置能够获得缩短的步骤。
这里,所述第二判断单元在其上存储预定的第一阈值,并且仅当所获得的输入数据的Run值小于或等于所述第一阈值时进行判断,以及所述第四判断单元在其上存储预定的第二阈值,并且仅当所获得的输入数据的Run值小于或等于所述第二阈值时进行判断。
所述编码装置被认为用于成像装置中,例如数码相机。这种成像装置产生图像数据,并对所述图像数据进行量化、运动补偿以及正交变换,以在固定时间周期里产生系数。这里,计算连续为零的系数的个数,以获得输入数据的Run值。因此,看起来产生所述输入数据所需的时间取决于计算所述输入数据的Run值。
根据上述结构,仅当所获得的输入数据的Run值小于或等于所述第一阈值时,所述第二判断单元进行判断,并且仅当所获得的输入数据的Run值小于或等于所述第二阈值时,所述第四判断单元进行判断。如果所述Run值比所述第一阈值和所述第二阈值都大,则在所述编码装置仅具有一个代码表的假设下,所述编码装置运行在和传统编码装置相同的方式下。具体的说,所述编码装置首先查找用于与组合(Last,Run,Level)相对应的可变长度代码的代码表。如果所述代码表中没有相对应的可变长度代码,则所述编码装置依次根据所述第一到第三换码模式试图产生所述替代代码。因此,当所述第二判断单元和所述第四判断单元不进行判断时,通常需要比当所述第二判断单元和所述第四判断单元进行判断时更长的时间周期,以产生与所获得的输入数据相对应的代码。因此,通过适当的设置所述第一阈值和所述第二阈值,所述编码装置能够在产生输入数据段所需的时间周期和产生相应代码所需的时间周期之间达到良好的平衡。
这里,作为判断结果,所述第二判断单元输出,(i)常规判断信号,当判断所获得的输入数据包括在所述第一代码存在子组中时,(ii)等同判断信号,当判断所获得的输入数据不包括在所述第一代码存在子组中,但是所述第一等同数据包括在所述第一代码存在子组中时,以及(iii)未判断信号,当没有进行判断时或者当判断所获得的输入数据和所述第一等同数据均不包括在所述第一代码存在子组中时。并且作为判断结果,所述第四判断单元输出,(a)常规判断信号,当判断所获得的输入数据包括在所述第二代码存在子组中时,(b)等同判断信号,当判断所获得的输入数据不包括在所述第二代码存在子组中,但是所述第二等同数据包括在所述第二代码存在子组中时,以及(c)未判断信号,当没有进行判断时或者当判断所获得的输入数据和所述第二等同数据均不包括在所述第二代码存在子组中时。
根据这种结构,作为判断结果,所述第二判断单元和所述第四判断单元输出常规判断信号、等同判断信号以及未判断信号中的一个。因此,当检测出由所述判断控制单元所选的判断结果为未判断信号时,所述产生单元能够很容易地知道所述第二判断单元和所述第四判断单元没有进行各自的判断。
这里,作为判断结果,所述第二判断单元输出,(i)未判断信号,当所获得的输入数据的Run值大于所述第一阈值时,(ii)常规判断信号,当判断所获得的输入数据包括在所述第一代码存在子组中时,(iii)等同判断信号,当判断所获得的输入数据不包括在所述第一代码存在子组中,但是所述第一等同数据包括在所述第一代码存在子组中时,以及(iv)不同代码信号,当判断所述第一代码存在子组中既不包括所获得的输入数据也不包括所述第一等同数据时。以及作为判断结果,所述第四判断单元输出,(a)未判断信号,当所获得的输入数据的Run值大于所述第二阈值时,(b)常规判断信号,当判断所获得的输入数据包括在所述第二代码存在子组中时,(c)等同判断信号,当判断所获得的输入数据不包括在所述第二代码存在子组中,但是所述第二等同数据包括在所述第二代码存在子组中时,以及(d)不同代码信号,当判断所述第二代码存在子组中既不包括所获得的输入数据也不包括所述第二等同数据时。
根据这种结构,所述第二判断单元和所述第四判断单元输出未判断信号、常规判断信号、等同判断信号以及不同代码信号中的一个。
因此,所述产生单元能够容易地判断出所述第二判断单元是否进行了判断,所获得的输入数据是否在所述代码表中具有相对应的可变长度代码,以及所述第一等同数据是否在所述代码表中具有相对应的可变长度代码。类似的,所述产生单元能够容易的判断出所述第四判断单元是否进行了判断,所获得的输入数据是否在所述代码表中具有相对应的可变长度代码,以及所述第二等同数据是否在所述代码表中具有相对应的可变长度代码。
这里,所述编码装置还进一步包括接收单元,用于接收所述第一阈值和所述第二阈值的输入,其中所述第二判断单元在其上存储由所述接收单元接收到的所述第一阈值,并且所述第四判断单元在其上存储由所述接收单元接收到的所述第二阈值。
根据这种结构,所述编码装置的操作者能够自由地设置所述第一阈值和所述第二阈值。
这里,所述第二判断单元在其上存储预定的第一固定长度代码阈值,并且当所获得的输入数据的第一系数的绝对值超出所述第一固定长度代码阈值时,所述第二判断单元不进行判断,并且所述产生单元不考虑从所述第四判断单元获得的判断结果,输出所获得的输入数据以及表示所获得的输入数据包括在内的所述输入数据定义代码。
当所获得的输入数据具有超过在所述代码表中具有相对应的可变长度代码的备选输入数据的第一系数的最大值的值时,所述编码装置不利用所述代码表产生与所获得的输入数据相对应的代码。假设不能利用所述代码表产生与所获得的输入数据相对应的代码。利用上述结构,通过适当地设置所述第一固定长度代码阈值,所述编码装置无须进行不必要的判断,无须对所述代码表进行不必要的查找,从而在较短的时间周期内产生与所获得的输入数据相对应的代码。
这里,还可以通过一种编码装置实现上述目的,该编码装置输出与至少包括第一系数和第二系数的输入数据相对应的代码,所述编码装置包括存储单元,用于存储与第一组相对应的第一边界值,以及与第二组相对应的第二边界值,所述第一组由多个备选输入数据构成,该数据中的每一个均至少具有第一系数和第二系数并且具有绝对值相同的第一系数,所述第一组分为(i)第一代码存在子组,由一个或多个备选输入数据构成,该备选输入数据在代码表中具有相应的可变长度代码,以及(ii)第一代码不存在子组,由一个或多个备选输入数据构成,该备选输入数据在所述代码表中不具有相应的可变长度代码,所述第一边界值表示所述第一代码存在子组和所述第一代码不存在子组之间的边界;第二组,由多个备选输入数据构成,该数据均至少具有第一系数和第二系数并且具有绝对值相同的第二系数,所述第二组分为(a)第二代码存在子组,由一个或多个备选输入数据构成,该备选输入数据在所述代码表中具有相应的可变长度代码,以及(b)第二代码不存在子组,由一个或多个备选输入数据构成,该备选输入数据在所述代码表中不具有相应的可变长度代码,所述第二边界值表示所述第二代码存在子组和所述第二代码不存在子组之间的边界;获得单元,用于获得输入数据;第一判断单元,用于(I)判断所获得的输入数据是否属于所述第一组,并且如果判断为肯定,则从所述存储单元读取所述第一边界值,并且(II)判断所获得的输入数据是否属于所述第二组,并且如果判断为肯定,则从所述存储单元读取所述第二边界值;选择单元,用于从所述第一边界值和所述第二边界值中选择一个,并输出所选的边界值;第二判断单元,用于利用所选的边界值,判断所获得的输入数据和等效于所获得的输入数据的等同数据中的一个是否包括在与所选的边界值相对应的所述第一代码存在子组和所述第二代码存在子组中的一个中;选择控制单元,用于指示所述选择单元首先选择所述第一边界值,然后选择所述第二边界值;判断单元,用于选择由所述第二判断单元分别参照所述第一边界值和所述第二边界值做出的判断结果之一;以及产生单元,用于(A)当所选出的判断结果为肯定时,产生并输出基于所选出的判断结果的代码,(B)当所选出的判断结果为否定时,参照未被选出的判断结果,(C)当未被选出的判断结果为肯定时,产生并输出基于未被选出的判断结果的代码,并且(D)当未被选出的判断结果为否定时,输出所获得的输入数据以及表示所获得的输入数据包括在内的输入数据定义代码。
这里,当参照所述第一边界值所做出的判断结果为肯定时,所获得的输入数据和所述等同数据中至少一个包括在所述第一代码存在子组中。当参照所述第一边界值所做出的判断结果为否定时,所获得的输入数据和所述等同数据均不包括在所述第一代码存在子组中。当参照所述第二边界值所做出的判断结果为肯定时,所获得的输入数据和所述等同数据中至少一个包括在所述第二代码存在子组中。当参照所述第二边界值所做出的判断结果为否定时,所获得的输入数据和所述等同数据均不包括在所述第二代码存在子组中。
根据这种结构,所述存储单元在其上存储所述第一边界值和所述第二边界值。所述选择控制单元指示所述选择单元首先选择所述第一边界值,然后选择所述第二边界值。根据由所述选择控制单元发出的指令,所述选择单元首先选择并输出所述第一边界值,然后选择并输出所述第二边界值。所述第二判断单元首先参照所述第一边界值做出判断,然后参照所述第二边界值做出判断。因此,所述单个第二判断单元既能够参照所述第一边界值做出判断,也能够参照所述第二边界值做出判断。这使得所述编码装置能够减小电路规模。
这里,当所述选择单元选择所述第一边界值,并且所述第二判断单元判断所获得的输入数据不包括在所述第一代码存在子组中时,所述第二判断单元利用所述第一边界值对所获得的输入数据执行第一减法,以产生作为所述等同数据的第一减法数据,并利用所述第一边界值判断产生的第一减法数据是否包括在所述第一代码存在子组中,并且当所述选择单元选择所述第二边界值,并且所述第二判断单元判断所获得的输入数据不包括在所述第二代码存在子组中时,所述第二判断单元利用所述第二边界值对所获得的输入数据执行第二减法,以产生作为所述等同数据的第二减法数据,并利用所述第二边界值判断产生的第二减法数据是否包括在所述第二代码存在子组中。
这里,所述判断控制单元选择参照所述第一边界值所做出的判断结果。
根据这些结构,所述判断控制单元首先选择参照所述第一边界值所做出的判断结果。如果参照所述第一边界值所做出的判断结果为否定,所述产生单元选择参照所述第二边界值所做出的判断结果。假设分别参照所述第一边界值和所述第二边界值所做出的判断结果均为肯定。利用上述结构,所述编码装置优先选择参照所述第一边界值所做出的判断结果。特别是,假设参照所述第一边界值所做出的判断结果表示所述第一减法数据在所述代码表中具有相对应的可变长度代码,并且参照所述第二边界值所做出的判断结果指示所述第二减法数据在所述代码表中具有相对应的可变长度代码。利用上述结构,所述编码装置能够优先输出与所述第一减法数据相对应的可变长度代码。
这里,所述编码装置还进一步包括接收单元,用于接收优先级指令,该指令表示优先选择参照所述第一边界值所做出的判断结果和参照所述第二边界值所做出的判断结果中的哪一个,其中根据所述优先级指令,所述判断控制单元优先选择参照所述第一边界值所做出的判断结果和参照所述第二边界值所做出的判断结果中的一个。
根据这种结构,对所述编码装置提供所述接收单元。这样,所述编码装置的操作者能够自由选择参照所述第一边界值所做出的判断结果和参照所述第二边界值所做出的判断结果中优先选择的那一个。
这里,所述编码装置还进一步包括时钟控制单元,用于暂停和恢复输入时钟信号到所获得单元。
组成所述编码装置的电路在固定时间周期接收时钟信号,并且在从所述获得单元获得所述输入数据到输出与所获得的输入数据相对应的代码的周期里接收多于一个的时钟信号。这里,当在上述周期接收每一时钟信号时,构成所获得单元的电路执行预定的步骤,以将所获得的输入数据输出到构成所述第二判断单元和类似单元的电路。然而,在所述编码装置中,所述获得单元从所述编码装置获得所述输入数据时到所述编码装置输出与所获得的输入数据相对应的代码时,只需连续输出所获得的输入数据。因此,在这期间,所获得单元无需在每次接收到时钟信号时都执行预定的步骤,以将所获得的输入数据输出到构成所述第二判断单元和类似单元的电路。考虑到这点,所述时钟控制单元在所述获得单元获得所述输入数据到输出与所获得的输入数据相对应的代码的期间,停止向所获得单元输入时钟信号。用这种方法,能够降低所述获得单元的能耗。
这里,所述代码表由MPEG-4格式定义。
根据这种结构,所述编码装置在使用MPEG-4格式的多种电子装置中具有广泛应用。
结合附图,本发明的这些和其它目的、优点和特征将变得很清楚,其中附图示出了本发明的具体实施方式
。
图1示出了成像装置100的结构方框图;图2示出了可变长度编码电路200的工作流程图;图3示出了可变长度编码电路200的结构方框图;图4A、4B和4C分别详细示出了VLC表251、LMAX表261和RMAX表266;图5A和5B分别详细示出了通过按照Last和Run对的组合分组而基于VLC表251产生的VLC表351a以及通过按照Last和Level对的组合分组而基于VLC表251产生的VLC表351b;图6A和6B分别示出了LMAX判断电路202结构的示例性框图;图7示出了组成可变长度编码电路200的电路工作时序的时序图;图8示出了第二实施方式的可变长度编码电路200b的工作流程图;图9示出了第二实施方式的可变长度编码电路200b结构的方框图;
图10A和10B分别示出了RMAX判断电路216结构的示例性方框图;图11示出了说明组成可变长度编码电路200b的电路的工作时序的顺序(chronological)的时序图;图12示出了第三实施方式的可变长度编码电路200c的工作流程图;图13示出了可变长度编码电路200c结构的方框图;图14示出了在可变长度编码电路200c中的第一模式信号、第二模式信号以及输出到选择电路215c的选择指令之间的关系图;图15示出了组成可变长度编码电路200c的电路的工作时序的时序图;图16示出了可变长度编码电路200d结构的方框图;图17示出了换码模式判断电路218d结构的方框图;图18示出了在可变长度编码电路200d中第一模式信号、第二模式信号、输出到寄存器208d的选择指令以及输出到的选择电路215c的选择指令之间的关系图;图19示出了说明组成可变长度编码电路200d的电路工作时序的顺序的时序图;图20示出了第四实施方式的可变长度编码电路200e的工作流程图;图21示出了可变长度编码电路200e结构的方框图;图22示出了在可变长度编码电路200e中的第一模式信号、第二模式信号以及输出到的选择电路215e的选择指令之间的关系图;图23示出了说明组成可变长度编码电路200e的电路工作时序的顺序的时序图;图24示出了第五实施方式的可变长度编码电路200f的工作流程图;图25示出了可变长度编码电路200f结构的方框图;图26示出了在可变长度编码电路200f中第一模式信号、第二模式信号、输出到第一选择电路205f的选择指令以及输出到第二选择电路215的选择指令之间的关系图;图27示出了说明组成可变长度编码电路200f的电路工作时序的顺序的时序图;图28示出了记录和发送系统105结构的方框图;图29示出了第六实施方式的可变长度编码电路200g的工作流程图;
图30示出了可变长度编码电路200g结构的方框图;图31A和31B分别示出了LMAX判断单元202g和RMAX判断单元216g的结构方框图;图32示出了在可变长度编码电路200g中第一模式信号、第二模式信号、输出到第一选择电路205g的选择指令以及输出到第二选择电路215的选择指令之间的关系图;图33示出了说明组成可变长度编码电路200g的电路工作时序的顺序的时序图;图34示出了在第六实施方式的变型实施例中第一模式信号、第二模式信号、输出到第一选择电路205g的选择指令以及输出到第二选择电路215的选择指令之间的关系图;图35示出了第七实施方式的可变长度编码电路的工作流程图;图36示出了第八实施方式的可变长度编码电路的工作流程图;图37示出了变型实施例(6)的可变长度编码电路的结构方框图;图38示出了按照变型实施例(1)改进后的可变长度编码电路200结构的方框图;以及图39示出了说明组成按照变型实施例(1)改进后的可变长度编码电路200的电路工作时序的顺序的时序图。
具体实施例方式
1.第一实施方式下面描述涉及本发明第一实施方式的成像系统100。
如图1所示,涉及本发明第一实施方式的成像系统100由光学系统101、传感器102、转换电路103、图像处理电路104、记录和发送系统105、回放系统106、时序控制电路108、以及系统控制电路107构成。
光学系统101包括透镜、滤色器等。光学系统101收集进入成像系统100的光。通过使用例如电荷耦合器件(CCD)的成像元件形成传感器102。传感器102将通过光学系统101进入成像系统100的光量转换为电荷,并存储该电荷。而且,传感器102与从时序控制电路108输出的时钟信号同步地将存储的电荷输出到转换电路103。转换电路103将从传感器102接收到的电荷转换为数字信号,并将该数字信号输出到图像处理电路104。图像处理电路104包括量化电路、DCT电路、动态补偿电路等。图像处理电路104基于帧内相关性和帧间相关性执行图像压缩操作。图像处理电路104将压缩的图像数据输出到记录和发送系统105。记录和发送系统105包括数据产生电路、可变长度编码电路200、缓冲器等。记录和发送电路105基于由图像处理电路104获得的压缩的图像数据产生组合(Last,Run,Level)。记录和发送系统105从产生的组合(Last,Run,Level)中产生可变长度编码,并将产生的可变长度编码暂存在缓冲器中。记录和发送系统105将存储在缓冲器中的数据输出到回放系统106或记忆卡。后面将详细描述可变长度编码电路200。
回放系统106包括反可变长度编码电路、反DCT电路、反量化电路、动态补偿电路、显示器等。根据由系统控制电路107进行的控制,回放系统106读取来自记录和发送系统105的编码和压缩的数据,通过解码和解压缩读取的数据来产生图像数据,并在显示器上显示图像数据。
时序控制单元108产生时钟信号,并将产生的时钟信号输出到电路。虽然图1中未具体示出,系统控制电路107接收由用户做出的许多按钮操作,并基于接收到的按钮操作控制电路。
1.1可变长度编码电路200首先,可变长度编码电路200判断要指定给组合(Last,Run,Level)的代码的类型,并基于判断结果产生代码。下面具体描述可变长度编码电路200的代码产生操作,以及实现代码产生功能的结构。
(可变长度编码电路200的操作)下面参照图2所示的流程图描述可变长度编码电路200的操作。
可变长度编码电路200开始代码产生操作,同时向包含在可变长度编码电路200中的电路输出包括组合(Last,Run,Level)的数据(步骤S101)。首先,可变长度编码电路200通过比较Level绝对值和LMAX来判断要指定给组合(Last,Run,Level)的代码是否为常规VLC(步骤S102)。在本说明书中,常规VLC表示基于对于VLC表(后面详细描述)上的组合(Last,Run,Level绝对值)唯一定义的VLC产生的代码,如果该VLC定义在VLC表上。
当判断代码为常规VLC(步骤S102是)时,可变长度编码电路200读取对应于组合(Last,Run,Level绝对值)的VLC(步骤S106),并基于读取的VLC(步骤S107)产生常规VLC。之后,可变长度编码电路200输出产生的常规VLC作为指定给组合(Last,Run,Level)的代码(步骤S117)。
当判断代码不是常规VLC(步骤S102否)时,可变长度编码电路200通过从Level绝对值减去LMAX来计算New Level(步骤S103)。然后,可变长度编码电路200通过将计算出的New Level与LMAX进行比较,判断要指定给组合(Last,Run,Level)的代码是否为LMAX VLC(步骤S104)。在本说明书中,LMAX VLC表示根据第一换码模式,基于对于VLC表上的组合(Last,Run,New Level)唯一定义的VLC产生的代码,如果该VLC定义在VLC表上。
当在步骤S104中判断代码为LMAX VLC时,可变长度编码电路200读取对应于组合(Last,Run,Level)的VLC(步骤S108)。可变长度编码电路200基于读取的VLC产生LMAX VLC(步骤S109),并输出产生的LMAX VLC(步骤S117)。
当在步骤S104中判断代码不是LMAX VLC时,可变长度编码电路200计算New Run=Run值-(RMAX+1)(步骤S111)。可变长度编码电路200试图在VLC表上读取对于组合(Last,New Run,Level绝对值)定义的VLC(步骤S112)。如果在VLC表上有对于组合(Last,New Run,Level绝对值)定义的VLC(步骤S113是),可变长度编码电路200基于读取的VLC产生RMAX VLC(步骤S114)。在本说明书中,RMAX VLC表示根据第二换码模式(escape mode),基于对于VLC表上的组合(Last,New Run,Level绝对值)唯一定义的VLC产生的代码,如果该VLC定义在VLC表上。可变长度编码电路200输出产生的RMAX VLC(步骤S117)。
当在步骤S113中判断没有相应的VLC(步骤S113否)时,可变长度编码电路200基于组合(Last,Run,Level)产生28比特固定长度代码(步骤S116),并输出该固定长度代码(步骤S117)。在本说明书中,固定长度代码(FLC)表示根据第三换码模式,基于组合(Last,Run,Level)产生的代码。
(可变长度编码电路200的结构)如图3所示,可变长度编码电路200由数据获得单元201、LMAX判断电路202、RMAX检索单元(retrieving unit)203、减法输出电路204、第一选择电路205、控制电路206、VLC检索单元207、寄存器208、FLC产生电路211、RMAX VLC产生电路212、LMAX VLC产生电路213、常规VLC产生电路214、以及第二选择电路215构成。
(1)数据获得单元201数据获得单元201从数据产生电路接收数据,该数据包括一组Run值、Level值、Last值、Sign值、以及Level绝对值,并暂存接收到的数据。
Level值表示从图像处理电路104连续输出的DCT系数当中的非零DCT系数。Level值被输出为12比特信号。Run值表示非零DCT系数之前的零DCT系数的个数。Run值被输出为6比特信号。Last值表示当确定Level值时所提及的非零DCT系数是否是八像素×八行的块中的最后一个信号,该块是图像数据的处理单元。当非零DCT系数是块中的最后一个信号时,Last值为一。当非零DCT系数不是块中的最后一个信号时,Last值为零。Last值被输出为1比特信号。Sign值表示Level值的符号。当Level值为正时,Sign值为零。当Level值为负时,Sign值为一。Sign值被输出为1比特信号。Level绝对值是Level值的绝对值。Level绝对值被输出为12比特信号。
另外,数据获得单元201以固定时间间隔从时序控制电路108接收时钟信号。而且,数据获得单元201从控制电路206接收数据输出指令。
每次接收数据输出指令时,数据获得单元201与下一时钟信号同步地将包括Run值、Level值、Last值、Sign值以及Level绝对值的数据输出到构成可变长度编码电路200的电路。
具体地说,数据获得单元201将Last值、Run值以及Level值输出到FLC产生电路211,并将Last值、Run值以及Level绝对值输出到LMAX判断电路202。而且,数据获得单元201将Last值、Run值以及Level绝对值输出到RMAX检索单元203,并将Run值输出到减法输出电路204。
(2)LMAX判断电路202如图6A所示,LMAX判断电路202由LMAX检索单元231、第一比较电路232、减法电路233、第二比较电路234、选择电路236、判断控制电路237、以及输出电路238构成。
(2-1)LMAX检索单元231LMAX检索单元231其上存储有LMAX表261和LMAX错误值“0”。如图4B所示,LMAX表261包括多条LMAX信息262、263、…,并且各条LMAX信息包括Last值、Run值、以及LMAX(图4B中,Last和Run分别表示Last值和Run值。)。
基于VLC表251来产生LMAX表261。如图4A所示,VLC表251包括多条VLC信息252、253、…,并且各条VLC信息包括Last值、Run值、Level绝对值和VLC(图4A和图5A中,Last和Run分别表示Last值和Run值。)。在此,VLC表示唯一对应于包括在各条VLC信息中的Last值、Run值以及Level绝对值的组合的代码。VLC表示的代码包括“s”,其被称为符号位。表示Level值的符号的Sign值指定给符号位。在此,使用通过重新排列包括在VLC表251中的多条VLC信息而产生的VLC表351a,以便将多条VLC信息按照Last值和Run值的对(pair)集合到一起。
在图5A所示的VLC表351a中,包括Last值=0和Run值=0的对的多条VLC信息352、353、354、…356连续排列,并且包括Last值=0和Run值=1的对的多条VLC信息357、358、…359连续排列。
在包括Last值=0和Run值=0的对的多条VLC信息352、353、354、…356的组中,各条VLC信息中的Level绝对值表示从1至27的连续数之一。在这个组中最大的Level绝对值是27,并且因此对应于Last值=0和Run值=0的对的LMAX是27。基于这点,形成包括Last值=0、Run值=0以及LMAX=27的LMAX信息262。
相似地在包括Last值=0和Run值=1的对的多条VLC信息357、358、…359的组中,各条VLC信息中的Level绝对值表示从1至10的连续数之一。在这个组中最大的Level绝对值是10,并且因此对应于Last值=0和Run值=1的对的LMAX是10。基于这点,形成包括Last值=0、Run值=1以及LMAX=10的LMAX信息263。
在上述方法中,为包括相同的Last值和Run值的对的各组VLC信息,提取表示最大Level绝对值的LMAX。因而,为各组产生一条LMAX信息。所以,产生多条LMAX信息262、263、…以构成LMAX表261。
在此,LMAX信息264表示对于Last值=0和Run值≥15的对不定义LMAX,并且LMAX信息265表示对于Last值=1和Run值≥21的对不定义LMAX。
如上所述,在VLC表251,在具有相同的Last值和Run值的对的各条VLC信息中的Level绝对值表示从1至LMAX的连续数之一。换句话说,在VLC表251上对于各组合(Last,Run,1)、(Last,Run,2)、(Last,Run,3)、…(Last,Run,LMAX)定义VLC。考虑到这点,如果LMAX≥Level绝对值,可以判断在VLC表251上有对应于组合(Last,Run,Level绝对值)的VLC。
LMAX检索单元231可以存储表,例如图4B所示的LMAX表261,或在基于(Last,Run)的各对计算出的地址存储LMAX。
LMAX错误值“0”是当在LMAX表261上没有定义相应的LMAX时要被输出来代替LMAX的数据。
LMAX检索单元231从数据获得单元201接收Last值和Run值。当接收Last值和Run值时,LMAX检索单元231试图从LMAX表261中读取对应于接收到的(Last,Run)对的LMAX。然后,如果有相应的LMAX,LMAX检索单元231将读取的LMAX输出到第一比较电路232、减法电路233、以及第二比较电路234。
在此,如果在LMAX表261上没有对于接收到的(Last,Run)的对定义的LMAX,LMAX检索单元231将LMAX错误值“0”输出来代替LMAX。
(2-2)第一比较电路232第一比较电路232从数据获得单元201接收Level绝对值,并从LMAX检索单元231接收LMAX。当接收Level绝对值和LMAX时,第一比较电路232比较接收到的Level绝对值和LMAX,并将比较结果发送到判断控制电路237。
(2-3)减法电路233减法电路233从数据获得单元201接收Level绝对值,并从LMAX检索单元231接收LMAX。当接收Level绝对值和LMAX时,减法电路233从Level绝对值减去LMAX,以计算New Level。减法电路233将计算出的New Level输出到第二比较电路234和选择电路236。
(2-4)第二比较电路234第二比较电路234从LMAX检索单元231接收LMAX,并从减法电路233接收New Level。当接收LMAX和New Level时,第二比较电路234比较接收到的LMAX和New Level,并将比较结果发送到判断控制电路237。
(2-5)判断控制电路237判断控制电路237从第一比较电路232接收Level绝对值和LMAX的比较结果,并从第二比较电路234接收LMAX和New Level的比较结果。
当从第一比较电路232接收的比较结果表示LMAX≥Level绝对值时,如上所述,根据LMAX表261和VLC表251的构造,可以判断在VLC表251上有对应于组合(Last,Run,Level绝对值)的VLC。因此,判断控制电路237忽略从第二比较电路234接收的比较结果。随后,判断控制电路237产生模式信号“00”,其表示在VLC表251上有对应于组合(Last,Run,Level绝对值)的VLC并且要指定给组合(Last,Run,Level)的代码是常规VLC。判断控制电路237将产生的模式信号“00”输出到选择电路236和控制电路206。
当从第一比较电路232接收的比较结果表示LMAX<Level绝对值,并且从第二比较电路234接收的比较结果表示LMAX≥New Level时,判断控制电路237产生模式信号“01”。模式信号“01”表示在VLC表251上没有对应于组合(Last,Run,Level绝对值)的VLC,但是在VLC表251上有对应于组合(Last,Run,New Level)的VLC,并且表示要指定给组合(Last,Run,Level)的代码是根据第一换码模式产生的LMAX VLC。判断控制电路237将产生的模式信号“01”输出到控制电路206和选择电路236。
当从第一比较电路232接收的比较结果表示LMAX<Level绝对值,并且从第二比较电路234接收的比较结果表示LMAX<New Level时,在VLC表251上既没有对应于组合(Last,Run,Level绝对值)的VLC,也没有对应于组合(Last,Run,New Level)的VLC。因此,判断控制电路237产生模式信号“10”,其表示要指定给组合(Last,Run,Level)的代码既不是常规VLC也不是LMAXVLC。判断控制电路237将产生的模式信号“10”输出到控制电路206和选择电路236。
(2-6)选择电路236选择电路236从数据获得单元201接收Level绝对值,并从减法电路233接收New Level。而且,选择电路236从判断控制电路237接收模式信号。
当接收到的模式信号为00”或“10”时,选择电路236将从数据获得单元201接收的Level绝对值输出到输出电路238作为选出的Level。
当接收到的模式信号为“01”时,选择电路236将从减法电路233接收的New Level输出到输出电路238作为选出的Level。
(2-7)输出电路238
输出电路238从数据获得单元201接收Run值和Last值,并从选择电路236接收选出的Level。而且,输出电路238将组合(Last,Run,选出的Level)输出到第一选择电路205。
(3)RMAX检索单元203和减法输出电路204RMAX检索单元203上存储有RMAX表266和RMAX错误值“-1”。如图4C所示,RMAX表266包括多条RMAX信息267、268、…,并且各条RMAX信息包括Last值、Level绝对值、以及RMAX(图4C中,Last表示Last值)。
基于VLC表251产生RMAX表266。上面已经描述了VLC表251。在此,使用通过重新排列包括在VLC表251中的多条VLC信息而产生的VLC表351b,以便将多条VLC信息按照Last值和Level绝对值的对集中在一起。在图5B所示的VLC表351b中,包括相同的Last值=0和Level绝对值=1的对的VLC信息条371、372、373、…374连续排列,并且包括相同的Last值=0和Level绝对值=2的对的VLC信息条376、377、…378连续排列。
在包括相同的Last值=0和Level绝对值=1的对的VLC信息条371、372、373、…374的组中,各条VLC信息中的Run值为从1至14的连续数之一。在这个组中最大的Run值是14,并且因此对应于Last值=0和Level绝对值=1的对的RMAX是14。基于这点,形成包括Last值=0、Level绝对值=1以及RMAX=14的RMAX信息267。
相似地,在包括相同的Last值=0和Level绝对值=2的对的VLC信息条376、377、…378的组中,在这个组中最大的Run值是9,并且因此对应于Last值=0和Level绝对值=2的对的RMAX是9。基于这点,形成包括Last值=0、Level绝对值=2以及RMAX=9的RMAX信息268。
在上述方法中,表示最大Run值的RMAX为包括相同对的Last值和Level绝对值的各组VLC信息条被提取出来。因而,为各组产生一条包括提取的RMAX的RMAX信息。所以,产生多条LMAX信息267、268、…以构成RMAX表266。
在此,RMAX信息269表示对于Last值=0和Level绝对值≥28的对不定义RMAX,并且RMAX信息270表示对于Last值=1和Level绝对值≥9的对不定义RMAX。
RMAX检索单元203可以存储表,例如图4C所示的RMAX表266,或在基于Last值和Level绝对值的对计算出的地址存储RMAX。
RMAX错误值“-1”是当在RMAX表266上没有相应的RMAX时代替RMAX输出的数据。
RMAX检索单元203从数据获得单元201接收Last值、Run值、以及Level绝对值。RMAX检索单元203试图读取对应于接收到的Last值和Level绝对值的RMAX。然后,RMAX检索单元203将接收到的Last值、Level绝对值、以及读取的RMAX输出到减法输出电路204。
在此,如果在RMAX表266上没有对于接收到的Last值和Level绝对值的对定义的RMAX,RMAX检索单元203将RMAX错误值“-1”代替RMAX输出。
减法输出电路204从RMAX检索单元203接收Last值、Level绝对值、以及RMAX,并从数据获得单元201接收Run值。
之后,减法输出电路204计算New Run=Run值-(RMAX+1),并将包括计算出的New Run的组合(Last,New Run,Level绝对值)输出到第一选择电路205。
(4)第一选择电路205第一选择电路205从减法输出电路204接收组合(Last,New Run,Level绝对值),并从LMAX判断电路202接收组合(Last,Run,选出的Level)。而且,第一选择电路205从控制电路206接收选择指令。在此,选择指令表示选择在从减法输出电路204输出的组合(Last,New Run,Level绝对值)与从LMAX判断电路202输出的组合(Last,Run,选出的Level)之间其中之一。
基于接收到的选择指令,第一选择电路205选择从减法输出电路204输出的组合(Last,New Run,Level绝对值)和从LMAX判断电路202输出的组合(Last,Run,选出的Level)其中之一,并将选出的组合输出到VLC检索单元207。
(5)VLC检索单元207VLC检索单元207上有存储图4A所示的VLC表251,该表按照MPEG-4定义。VLC表251已经在节(2)LMAX判断电路202中描述,因此这里不再说明。VLC检索单元207可以存储表,例如图4A所示的表,或在基于组合(Last,Run,Level绝对值)计算出的地址存储VLC。
VLC检索单元207从第一选择电路205接收组合(Last,New Run,Level绝对值)和组合(Last,Run,选出的Level)其中之一。
VLC检索单元207随后试图从VLC表251读取对应于接收到的组合(Last,New Run,Level绝对值)和组合(Last,Run,选出的Level)其中之一的VLC。如果在VLC表251上有对应于接收到的组合(Last,New Run,Level绝对值)和组合(Last,Run,选出的Level)其中之一的VLC,VLC检索单元207读取VLC并将其输出到寄存器208,并将OK信号输出到控制电路206。OK信号表示已成功读取VLC。
如果在VLC表251上没有对应于接收到的组合(Last,New Run,Level绝对值)和组合(Last,Run,选出的Level)其中之一的VLC,VLC检索单元207将VLC错误信号输出到控制电路206和寄存器208。VLC错误信号表示在VLC表251上没有相应的VLC。
(6)寄存器208寄存器208以固定时间间隔从时序控制电路108接收时钟信号。而且,寄存器208从VLC检索单元207接收VLC或VLC错误信号。
当接收VLC时,寄存器208暂存接收到的VLC。当随后检测到时钟信号时,寄存器208将接收到的VLC输出到RMAX VLC产生电路212、LMAX VLC产生电路213、以及常规VLC产生电路214。当接收VLC错误信号时,寄存器208不工作。
(7)控制电路206控制电路206以固定时间间隔从时序控制电路108接收时钟信号,并从LMAX判断电路202接收模式信号。
当从LMAX判断电路202接收的模式信号表示代表常规VLC的“00”时,控制电路206将选择指令输出到第一选择电路205,该选择指令表示选择从LMAX判断电路202输出的组合(Last,Run,选出的Level)。之后,控制电路206从VLC检索单元207接收表示已成功读取VLC的OK信号。当在接收到OK信号后检测到时钟信号时,控制电路206将选择指令输出到第二选择电路215,该选择指令表示选择从常规VLC产生电路214输出的常规VLC。之后,控制电路206将数据输出指令输出到数据获得单元201,该数据输出指令请求输出新数据。
当从LMAX判断电路202接收的模式信号表示代表LMAX VLC的“01”时,控制电路206将选择指令输出到第一选择电路205,该选择指令表示选择从LMAX判断电路202输出的组合(Last,Run,选出的Level)。之后,控制电路206从VLC检索单元207接收表示已成功读取VLC的OK信号。当在接收到OK信号后检测到时钟信号时,控制电路206将选择指令输出到第二选择电路215,该选择指令表示选择从LMAX VLC产生电路213输出的LMAX VLC。之后,控制电路206将数据输出指令输出到数据获得单元201,该数据输出指令请求输出新数据。
当从LMAX判断电路202接收的模式信号为代表除常规VLC和LMAX VLC之外的代码的“10”时,控制电路206将选择指令输出到第一选择电路205,该选择指令表示选择从减法输出电路204输出的组合(Last,New Run,Level绝对值)。之后,控制电路206从VLC检索单元207接收表示已成功读取VLC的OK信号,或表示没有相应的VLC的VLC错误信号。
当在接收OK信号时,控制电路206与时钟信号的检测同步地将选择指令输出到第二选择电路215,该选择指令表示选择从RMAX VLC产生电路212输出的RMAX VLC。之后,控制电路206与下一时钟信号的检测同步地将数据输出指令输出到数据获得单元201,该数据输出指令请求输出新数据。
当在接收VLC错误信号时,控制电路206与时钟信号的检测同步地将选择指令输出到第二选择电路215,该选择指令表示选择从FLC产生电路211输出的FLC输出。之后,控制电路206将数据输出指令输出到数据获得单元201,该数据输出指令请求输出新数据。
(8)FLC产生电路211FLC产生电路211上存储有扩充ID和FLC扩充代码。扩充ID是7比特数据“0000011”,其表示指定给组合(Last,Run,Level)的代码不是常规VLC。FLC扩充代码是2比特数据“11”,其表示指定给组合(Last,Run,Level)的代码是根据第三换码模式产生的。
FLC产生电路211从数据获得单元201接收Level值、Run值、以及Last值。
FLC产生电路211通过将存储的扩充ID“0000011”和FLC扩充代码“11”与接收到的Level值、Run值和Last值组合起来以产生28比特FLC。FLC产生电路211将产生的FLC输出到第二选择电路215。
(9)RMAX VLC产生电路212
RMAX VLC产生电路212上存储有扩充ID和RMAX扩充代码。扩充ID是7比特数据“0000011”,其表示指定给组合(Last,Run,Level)的代码不是常规VLC。RMAX扩充代码是2比特数据“10”,其表示指定给组合(Last,Run,Level)的代码是根据第二换码模式产生的。
RMAX VLC产生电路212从寄存器208接收VLC,并从数据获得单元201接收Sign值。
RMAX VLC产生电路212将Sign值指定给包括在接收到的VLC中的符号位“s”。然后,RMAX VLC产生电路212通过将存储的扩充ID“0000011”和RMAX扩充代码“10”与该VLC值组合起来以产生RMAX VLC。RMAX VLC产生电路212将产生的RMAX VLC输出到第二选择电路215。
(10)LMAX VLC产生电路213LMAX VLC产生电路213上存储有扩充ID和LMAX扩充代码。扩充ID是7比特数据“0000011”,其表示指定给组合(Last,Run,Level)的代码不是常规VLC。LMAX扩充代码是1比特数据“1”,其表示指定给组合(Last,Run,Level)的代码是根据第一换码模式产生的。
LMAX VLC产生电路213从寄存器208接收VLC,并从数据获得单元201接收Sign值。
LMAX VLC产生电路213将Sign值指定给包括在接收到的VLC中的符号位“s”。然后,LMAX VLC产生电路213通过将存储的扩充ID“0000011”和LMAX扩充代码“1”与该VLC值组合起来以产生LMAX VLC。
LMAX VLC产生电路213将产生的LMAX VLC输出到第二选择电路215。
(11)常规VLC产生电路214常规VLC产生电路214从寄存器208接收VLC,并从数据获得单元201接收Sign值。
常规VLC产生电路214将Sign值指定给包括在接收到的VLC中的符号位“s”以产生常规VLC。常规VLC产生电路214将产生的常规VLC输出到第二选择电路215。
(12)第二选择电路215第二选择电路215从FLC产生电路211接收FLC,从RMAX VLC产生电路212接收RMAX VLC,从LMAX VLC产生电路213接收LMAX VLC,并从常规VLC产生电路214接收常规VLC。而且,第二选择电路215从控制电路206接收选择指令。第二选择电路215根据接收到的选择指令,选择FLC、RMAX VLC、LMAXVLC、以及常规VLC其中之一作为指定给组合(Last,Run,Level)的代码。第二选择电路215将选出的代码输出到包括在记录和发送系统105中的缓冲器。
(13)可变长度编码电路200的工作周期下面参照图7所示的时序图描述可变长度编码电路200的工作周期。
在图7中所示的时序图中,构成可变长度编码电路200的电路名按垂直方向排列,而时间按水平方向标出。这个时序图示出了按照时间如何顺序处理数据段(piece of data)。
时钟信号401、402、403、404和405以固定时间间隔,在时刻T110、T120、T130、T140和T150施加到数据获得单元201、控制电路206和寄存器208。应当注意,时钟信号之间的预定时间间隔被称为时钟周期。
图7中所示的箭头表示在特定时刻由箭头的起点表示的电路执行的操作使得在特定时刻由箭头的终点表示的不同电路执行的操作开始。例如,数据获得单元201在时刻T110输出数据。因此,LMAX判断电路202在时刻T111开始操作,以判断要指定给包括在从数据获得单元201输出的数据中的组合(Last,Run,Level)的代码类型。
在时刻T110,数据获得单元201检测到时钟信号401,并将存储在其上的Sign值、Level值、Level绝对值、Run值和Last值输出到LMAX判断电路202、RMAX检索单元203、减法输出电路204、FLC产生电路211、RMAX VLC产生电路212、LMAX VLC产生电路213、以及常规VLC产生电路214。这一输出持续到时刻T130。输出的Sign值、Level值、Level绝对值、Run值和Last值被合称为数据A。
在时刻T111,LMAX判断电路202接收包括在数据A中的组合(Last,Run,Level绝对值)。LMAX判断电路202基于接收到的组合(Last,Run,Level绝对值),判断要指定给包括在数据A中的组合(Last,Run,Level)的代码类型。LMAX判断电路202产生作为判断结果的模式信号和组合(Last,Run,选出的Level)。LMAX判断电路202将产生的模式信号输出到控制电路206,并将产生的组合(Last,Run,选出的Level)输出到第一选择电路205。这一输出执行到时刻T131。
在时刻T112,控制电路206接收模式信号,并根据接收到的模式信号将选择指令输出到第一选择电路205。这一输出持续到时刻T132。
在时刻T115,RMAX检索单元203从数据获得单元201接收包括在数据A中的组合(Last,Run,Level绝对值)。RMAX检索单元203读取RMAX,并将读取的RMAX输出到减法输出电路204。这一输出持续到时刻T135。
在时刻T116,减法输出电路204从RMAX检索单元203接收RMAX。减法输出电路204基于接收到的RMAX计算New Run,并将包括计算出的New Run的组合(Last,Run,Level绝对值)输出到第一选择电路205。这一输出持续到时刻T136。
在时刻T113,第一选择电路205从控制电路206接收选择指令。根据接收到的选择指令,第一选择电路205选择组合(Last,New Run,Level绝对值)和组合(Last,Run,选出的Level)其中之一并将其输出到VLC检索单元207。这一输出持续到时刻T133。
在时刻T114,VLC检索单元207从第一选择电路205接收组合(Last,NewRun,Level绝对值)和组合(Last,Run,选出的Level)其中之一,并试图从VLC表251读取相应的VLC。如果在VLC表251上有相应的VLC,VLC检索单元207将读取的VLC输出到寄存器208,并将OK信号输出到控制电路206。这一输出持续到时刻T134。如果在VLC表251上没有相应的VLC,VLC检索单元207将VLC错误信号输出到控制电路206和寄存器208。这一输出也持续到时刻T134。
在时刻T117,FLC产生电路211从数据获得单元201接收包括在数据A中的组合(Last,Run,Level)。FLC产生电路211基于接收到的组合(Last,Run,Level)产生FLC,并将产生的FLC输出到第二选择电路215。这一输出持续到时刻T137。
寄存器208从VLC检索单元207接收VLC,并在其上暂存接收到的VLC。在时刻T120,寄存器208检测到时钟信号402。然后,寄存器208将存储的VLC输出到常规VLC产生电路214、LMAX VLC产生电路213、以及RMAX VLC产生电路212。这一输出持续到时刻T140。
在时刻T122,常规VLC产生电路214、LMAX VLC产生电路213和RMAX VLC产生电路212从寄存器208接收VLC。常规VLC产生电路214、LMAX VLC产生电路213和RMAX VLC产生电路212使用接收到的VLC分别产生常规VLC、LMAXVLC和RMAX VLC,并将产生的常规VLC、LMAX VLC和RMAX VLC输出到第二选择电路215。这一输出持续到时刻T142。
在时刻T120,控制电路206检测到时钟信号402,并将选择指令输出到第二选择电路215。这一输出持续到T140。控制电路基于从VLC检索单元207接收的OK信号或VLC错误信号,以及从LMAX判断电路202接收的模式信号产生选择指令。在将选择指令输出到第二选择电路215后,控制电路206在时刻T121将请求输出新数据的数据输出指令输出到数据获得单元201。这一输出持续到时刻T138。
在时刻T123,第二选择电路215从控制电路206接收选择指令。根据选择指令,第二选择电路215选择常规VLC、LMAX VLC、RMAX VLC和FLC其中之一,并将其输出到包括在记录和发送系统105中的缓冲器。这一输出持续到时刻T143。
在时刻T130,数据获得单元201检测到时钟信号403,并从控制电路206接收数据输出指令。因此,数据获得单元201将新的一组Sign值、Level值、Level绝对值、Run值和Last值输出到LMAX判断电路202、RMAX检索单元203、减法输出电路204、FLC产生电路211、RMAX VLC产生电路212、LMAX VLC产生电路213和常规VLC产生电路214。这一输出持续到时刻T150。输出的Sign值、Level值、Level绝对值、Run值和Last值被合称为数据B。
LMAX判断电路202、控制电路206、…第二选择电路215对数据B执行与对数据A相同的过程。因此,可变长度编码电路200在两个时钟周期内产生并输出对应于包括在数据B中的组合(Last,Run,Level)的代码。
1.2总结根据涉及本发明第一实施方式的构成成像系统100的可变长度编码电路200,LMAX判断电路202判断要指定给组合(Last,Run,Level)的代码是否是常规VLC、LMAX VLC或其他的内容。当LMAX判断电路202判断代码是常规VLC时,可变长度编码电路200从VLC表251读取对应于组合(Last,Run,Level绝对值)的VLC,基于读取的VLC产生常规VLC,并将产生的常规VLC作为指定给组合(Last,Run,Level)的代码而输出。
当LMAX判断电路202判断代码是LMAX VLC时,可变长度编码电路200从VLC表251读取对应于组合(Last,Run,New Level)的VLC,基于读取的VLC产生LMAX VLC,并将产生的LMAX VLC作为指定给组合(Last,Run,Level)的代码而输出。
与由LMAX判断电路202执行的该判断操作并行,RMAX检索单元203读取RMAX,并且减法输出电路204计算New Run。
当LMAX判断电路202判断要指定给组合(Last,Run,Level)的代码既不是常规VLC也不是LMAX VLC时,可变长度编码电路200试图从VLC表251读取对应于组合(Last,New Run,Level绝对值)的VLC。如果在VLC表251上有对应于组合(Last,New Run,Level绝对值)的VLC,可变长度编码电路200产生RMAX VLC,并将产生的RMAX VLC作为指定给组合(Last,Run,Level)的代码而输出。
如果在VLC表251上没有对应于组合(Last,New Run,Level绝对值)的VLC,可变长度编码电路200将由FLC产生电路211产生的FLC作为指定给组合(Last,Run,Level)的代码而输出。
在上述方法中,可变长度编码电路200可以不管代码是常规VLC、LMAXVLC、RMAX VLC或FLC,而在两个时钟周期内产生并输出指定给组合(Last,Run,Level)的代码。
此外,在从VLC表251读取VLC之前,LMAX判断电路202判断要指定给组合(Last,Run,Level)的代码类型。对于该结构来说,可变长度编码电路200仅需要一个VLC表。这样可以减少电路规模的增加。
1.3第一实施方式的变型实施例涉及第一实施方式的LMAX判断电路202可以变型为具有如图6B所示的LMAX判断电路202b的结构。
LMAX判断电路202b由LMAX检索单元231、第一比较电路232、减法电路233b、第二比较电路234b、移位单元235、选择电路236、判断控制电路237b和输出电路238所构成。
LMAX检索单元231、第一比较电路232、选择电路236和输出电路238执行与第一实施方式相同的操作。
(1)移位单元235移位单元235从LMAX检索单元231接收LMAX。
当接收LMAX时,移位单元235将接收到的LMAX左移一位,换句话说,使接收到的LMAX加倍。以下,加倍的LMAX被表示为2×LMAX。
随后,移位单元235将2×LMAX输出到第二比较电路234b。
(2)第二比较电路234第二比较电路234b从数据获得单元201接收Level绝对值,并从移位单元235接收2×LMAX。
第二比较电路234b比较接收到的Level绝对值和2×LMAX,并将比较结构输出到判断控制电路237b。
(3)减法电路233b减法电路233b从数据获得单元201接收Level绝对值,并从LMAX检索单元231接收LMAX。当接收到Level绝对值和LMAX时,减法电路233b计算NewLevel=Level绝对值-LMAX。减法电路233b将计算出的New Level输出到选择电路236。
(4)判断控制电路237b判断控制电路237b从第一比较电路232接收Level绝对值和LMAX的比较结果,并从第二比较电路234b接收Level绝对值和2×LMAX的比较结果。
当从第一比较电路232接收的比较结果表示LMAX≥Level绝对值时,判断控制电路237b忽略从第二比较电路234b接收的比较结果,并且产生模式信号“00”并将其输出到选择电路236和控制电路206。
当从第一比较电路232接收的比较结果表示LMAX<Level绝对值,并且从第二比较电路234b接收的比较结果表示2×LMAX≥Level绝对值时,判断控制电路237b产生模式信号“01”并将其输出到选择电路236和控制电路206。
当从第一比较电路232接收的比较结果表示LMAX<Level绝对值,并且从第二比较电路234b接收的比较结果表示2×LMAX<Level绝对值时,判断控制电路237b产生模式信号“10”并将其输出到选择电路236和控制电路206。
(5)总结因为如上所述,减法电路233b和第二比较电路234b并联设置,LMAX判断电路202b在数据输入与输出之间可以实现更短路径。所以,LMAX判断电路202b可以实现更高速处理。
2.第二实施方式下面描述涉及本发明第二实施方式的成像系统。
与涉及第一实施方式的成像系统100相似,涉及第二实施方式的成像系统由光学系统、传感器、转换电路、图像处理电路、记录和发送系统、回放系统、时序控制电路、以及系统控制电路构成。除了包括在记录和发送系统中的可变长度编码电路200b之外,涉及第二实施方式的成像系统具有与涉及第一实施方式的成像系统100相同的结构。因此,下面仅描述代表第二实施方式特点的可变长度编码电路200b。
2.1可变长度编码电路200b首先,可变长度编码电路200b判断要指定给组合(Last,Run,Level)的代码类型是否常规VLC、RMAX VLC或其他内容。然后,可变长度编码电路200b基于判断结果产生代码。下面具体描述可变长度编码电路200的代码产生操作,以及实现代码产生功能的结构。
(可变长度编码电路200b的操作)下面参照图8所示的流程图描述可变长度编码电路200b的操作。
可变长度编码电路200b开始代码产生操作,同时将包括组合(Last,Run,Level)的数据输出到包括在可变长度编码电路200b中的电路(步骤S121)。首先,可变长度编码电路200b通过比较(Last,Level绝对值)对的RMAX和Run值来判断要指定给组合(Last,Run,Level)的代码是否为常规VLC(步骤S122)。当判断代码为常规VLC(步骤S122是)时,可变长度编码电路200b从VLC表读取对应于组合(Last,Run,Level绝对值)的VLC(步骤S125),并基于读取的VLC(步骤S126)产生常规VLC。之后,可变长度编码电路200b将产生的常规VLC作为指定给组合(Last,Run,Level)的代码输出(步骤S137)。
当判断代码不是常规VLC(步骤S122否)时,可变长度编码电路200b计算New Run=Run值-(RMAX+1)(步骤S123)。然后,可变长度编码电路200b通过将计算出的New Run与RMAX进行比较,判断要指定给组合(Last,Run,Level)的代码是否为RMAX VLC(步骤S124)。
当判断代码为RMAX VLC(步骤S124是)时,可变长度编码电路200b从VLC表读取对应于组合(Last,New Run,Level绝对值)的VLC(步骤S127)。可变长度编码电路200b基于读取的VLC产生RMAX VLC(步骤S128),并将产生的RMAX VLC作为指定给组合(Last,Run,Level)的代码输出(步骤S137)。
当在步骤S124中判断代码不是RMAX VLC时,可变长度编码电路200b计算New Level=Level绝对值-LMAX(步骤S131)。可变长度编码电路200b试图从VLC表读取对于组合(Last,Run,New Level)定义的VLC(步骤S132)。如果在VLC表上有对于组合(Last,Run,New Level)定义的VLC(步骤S133是),可变长度编码电路200b基于读取的VLC产生LMAX VLC(步骤S134)。然后,可变长度编码电路200b将产生的LMAX VLC作为指定给组合(Last,Run,Level)的代码输出(步骤S137)。
当判断在VLC表上没有对应于组合(Last,Run,New Level)的VLC(步骤S133否)时,可变长度编码电路200b产生FLC(步骤S136),并将产生的FLC作为指定给组合(Last,Run,Level)的代码输出(步骤S137)。
(可变长度编码电路200b的结构)如图9所示,可变长度编码电路200b由数据获得单元201、减法输出电路204b、第一选择电路205b、控制电路206b、VLC检索单元207b、寄存器208、FLC产生电路211、RMAX VLC产生电路212、LMAX VLC产生电路213、常规VLC产生电路214、第二选择电路215、RMAX判断电路216、以及LMAX检索单元217构成。数据获得单元201、寄存器208、FLC产生电路211、RMAX VLC产生电路212、LMAX VLC产生电路213、常规VLC产生电路214和第二选择电路215具有与第一实施方式相同的结构并执行相同的操作。因此,这里不再描述这些部件。
(1)RMAX判断电路216如图10A所示,RMAX判断电路216由RMAX检索单元281、第一比较电路282、减法电路283、第二比较电路284、选择电路286、判断控制电路287、以及输出电路288构成。
(1-1)RMAX检索单元281
RMAX检索单元281上存储有图4C所示的RMAX表266和RMAX错误值“-1”。RMAX表266和RMAX错误值“-1”与存储在涉及第一实施方式的RMAX检索单元203中的RMAX表266和RMAX错误值“-1”相同。
如上所述,在VLC表251上具有相同的Last值和Level绝对值的对的VLC信息条的各组中,各条VLC信息中的Run值表示从1至RMAX的连续数之一。换句话说,在VLC表251上为各组合(Last,1,Level绝对值)、(Last,2,Level绝对值)、(Last,3,Level绝对值)、…(Last,RMAX,Level绝对值)定义VLC。考虑到这点,如果RMAX≥Run值,可以判断在VLC表251上有对应于组合(Last,Run,Level绝对值)的VLC。
RMAX检索单元281从数据获得单元201接收Last值和Level绝对值。当接收Last值和Level绝对值时,RMAX检索单元281从RMAX表266中读取对应于接收到的(Last,Level绝对值)的对的RMAX。然后,RMAX检索单元281将读取的RMAX输出到第一比较电路282、减法电路283、以及第二比较电路284。在此,如果在RMAX表266上没有对于接收到的(Last,Level绝对值)的对定义的RMAX,RMAX检索单元281将RMAX错误值“-1”作为RMAX的代替来输出。
(1-2)第一比较电路282第一比较电路282从数据获得单元201接收Run值,并从RMAX检索单元281接收RMAX。第一比较电路282比较接收到的Run值和RMAX,并将比较结果发送到判断控制电路287。
(1-3)减法电路283减法电路283从数据获得单元201接收Run值,并从RMAX检索单元281接收RMAX。当接收Run值和RMAX时,减法电路283基于接收到的Run值和RMAX,计算New Run=Run值-(RMAX+1)。减法电路283将计算出的New Run输出到第二比较电路284和选择电路286。
(1-4)第二比较电路284第二比较电路284从RMAX检索单元281接收RMAX,并从减法电路283接收New Run。当接收RMAX和New Run时,第二比较电路284比较接收到的RMAX和New Run,并将比较结果发送到判断控制电路287。
(1-5)判断控制电路287
判断控制电路287从第一比较电路282接收Run值和RMAX的比较结果,并从第二比较电路284接收RMAX和New Run的比较结果。
如上所述,当从第一比较电路282接收的比较结果表示RMAX≥Run值时,根据RMAX表266和VLC表251的构造,可以判断在VLC表251上有对应于组合(Last,Run,Level绝对值)的VLC。因此,判断控制电路287忽略从第二比较电路284接收的比较结果。随后,判断控制电路287产生模式信号“00”,其表示要指定给组合(Last,Run,Level)的代码是常规VLC。判断控制电路287将产生的模式信号“00”输出到选择电路286和控制电路206b。
当从第一比较电路282接收的比较结果表示RMAX<Run值,并且从第二比较电路284接收的比较结果表示RMAX≥New Run时,在VLC表251上没有对应于组合(Last,Run,Level绝对值)的VLC,但是在VLC表251上有对应于组合(Last,New Run,Level绝对值)的VLC。因此,判断控制电路287产生模式信号“01”。模式信号“01”表示要指定给组合(Last,Run,Level)的代码是RMAX VLC。判断控制电路287将产生的模式信号“01”输出到控制电路206b和选择电路286。
当从第一比较电路282接收的比较结果表示RMAX<Run值,并且从第二比较电路284接收的比较结果表示RMAX<New Run时,判断控制电路287判断在VLC表251上既没有对应于组合(Last,Run,Level绝对值)的VLC,也没有对应于组合(Last,New Run,Level绝对值)的VLC。判断控制电路287产生模式信号“10”,其表示要指定给组合(Last,Run,Level)的代码既不是常规VLC也不是RMAX VLC。判断控制电路287将产生的模式信号“10”输出到控制电路206b和选择电路286。
(1-6)选择电路286选择电路286从数据获得单元201接收Run值,并从减法电路283接收New Run。而且,选择电路286从判断控制电路287接收模式信号。
当接收到的模式信号为“00”或“10”时,选择电路286将从数据获得单元201接收的Run值作为选出的Run输出到输出电路288。
当接收到的模式信号为“01”时,选择电路286将从减法电路283接收的New Run作为选出的Run输出到输出电路288。
(1-7)输出电路288
输出电路288从数据获得单元201接收Last值和Level绝对值,并从选择电路286接收选出的Run。之后,输出电路288将组合(Last,选出的Run,Level绝对值)输出到第一选择电路205b。
(2)LMAX检索单元217和减法输出电路204bLMAX检索单元217上存储有LMAX表261和LMAX错误值“0”。在第一实施方式中已经描述了LMAX表261。
LMAX错误值“0”是当在LMAX表261上没有定义LMAX时作为代替LMAX被输出的数据。
LMAX检索单元217从数据获得单元201接收Last值、Run值、以及Level绝对值。LMAX检索单元217从LMAX表261读取对应于接收到的Last值和Run值的对的LMAX。然后,LMAX检索单元217将接收到的Last值和Run值、以及读取的LMAX输出到减法输出电路204b。
在此,如果在LMAX表261上没有对于接收到的Last值和Run值的对定义的LMAX,LMAX检索单元217将LMAX错误值“0”作为LMAX的替代输出。
减法输出电路204b从LMAX检索单元217接收Last值、Run值和LMAX,并从数据获得单元201接收Level绝对值。
之后,减法输出电路204b计算New Level=Level绝对值-LMAX,并将包括计算出的New Level的组合(Last,Run,New Level)输出到第一选择电路205b。
(3)第一选择电路205b第一选择电路205b从减法输出电路204b接收组合(Last,Run,NewLevel),并从RMAX判断电路216接收组合(Last,选出的Run,Level绝对值)。而且,第一选择电路205b从控制电路206b接收选择指令。在此,选择指令表示选择在从减法输出电路204b输出的组合(Last,Run,New Level)与从RMAX判断电路216输出的组合(Last,选出的Run,Level绝对值)其中之一。
基于接收到的选择指令,第一选择电路205b选择从减法输出电路204b输出的组合(Last,Run,New Level)和从RMAX判断电路216输出的组合(Last,选出的Run,Level绝对值)其中之一,并将选出的组合输出到VLC检索单元207b。
(4)VLC检索单元207bVLC检索单元207b上存储有VLC表251。在第一实施方式中已经描述了VLC表251。
VLC检索单元207b从第一选择电路205b接收组合(Last,Run,New Level)或组合(Last,选出的Run,Level绝对值)。
随后,VLC检索单元207b试图从VLC表251读取对应于接收到的组合(Last,Run,New Level)和组合(Last,选出的Run,Level绝对值)的其中之一的VLC。如果在VLC表251上有对应于接收到的组合(Last,Run,New Level)和组合(Last,选出的Run,Level绝对值)的其中之一的VLC,VLC检索单元207b读取VLC并将其输出到寄存器208,并且将OK信号输出到控制电路206b。OK信号表示已成功读取VLC。
如果在VLC表251上没有对应于接收到的组合(Last,Run,New Level)和组合(Last,选出的Run,Level绝对值)的其中之一的VLC,VLC检索单元207b将VLC错误信号输出到控制电路206b和寄存器208。VLC错误信号表示在VLC表251上没有相应的VLC。
(5)控制电路206b控制电路206b以固定时间间隔从时序控制电路接收时钟信号,并从RMAX判断电路216接收模式信号。
当从RMAX判断电路216接收的模式信号表示为代表常规VLC的“00”时,控制电路206b将选择指令输出到第一选择电路205b,该选择指令表示选择从RMAX判断电路216输出的组合(Last,选出的Run,Level绝对值)。之后,控制电路206b从VLC检索单元207b接收表示已成功读取VLC的OK信号。当在接收到OK信号之后检测到时钟信号时,控制电路206b将选择指令输出到第二选择电路215,该选择指令表示选择从常规VLC产生电路214输出的常规VLC。之后,控制电路206b将数据输出指令输出到数据获得单元201,该数据输出指令请求输出新数据。
当从RMAX判断电路216接收的模式信号为代表RMAX VLC的“01”时,控制电路206b将选择指令输出到第一选择电路205b,该选择指令表示选择从RMAX判断电路216输出的组合(Last,选出的Run,Level绝对值)。之后,控制电路206b从VLC检索单元207b接收表示已成功读取VLC的OK信号。当在接收到OK信号之后检测到时钟信号时,控制电路206b将选择指令输出到第二选择电路215,该选择指令表示选择从RMAX VLC产生电路212输出的RMAXVLC。之后,控制电路206b将数据输出指令输出到数据获得单元201,该数据输出指令请求输出新数据。
当从RMAX判断电路216接收的模式信号为代表除常规VLC和RMAX VLC之外的代码的“10”时,控制电路206b将选择指令输出到第一选择电路205b,该选择指令表示选择从减法输出电路204b输出的组合(Last,Run,NewLevel)。之后,控制电路206b从VLC检索单元207b接收表示已成功读取VLC的OK信号,或表示没有相应的VLC的VLC错误信号。
当接收OK信号时,控制电路206b与下一时钟信号的检测同步地将选择指令输出到第二选择电路215,该选择指令表示选择从LMAX VLC产生电路213输出的LMAX VLC。之后,控制电路206b将数据输出指令输出到数据获得单元201,该数据输出指令请求输出新数据。
当接收到VLC错误信号时,控制电路206b与下一时钟信号的检测同步地将选择指令输出到第二选择电路215,该选择指令表示选择从FLC产生电路211输出的FLC。之后,控制电路206b将数据输出指令输出到数据获得单元201,该数据输出指令请求输出新数据。
(6)可变长度编码电路200b的工作周期下面参照图11所示的时序图描述可变长度编码电路200b的工作周期。
在图11中所示的时序图中,构成可变长度编码电路200b的电路名称按垂直方向排列,并且时间按水平方向标出。这个时序图示出了按照时间如何顺序处理数据段。
时钟信号411、412、413、414和415以固定时间间隔,即在时刻T210、T220、T230、T240和T250被提供到数据获得单元201、控制电路206b和寄存器208。应当注意,时钟信号之间的预定时间间隔被称为时钟周期。
图11中所示的箭头表示在特定时刻由箭头的起点所指的电路执行的操作使得在特定时刻由箭头的终点所指的不同电路执行的操作开始。
在时刻T210,数据获得单元201检测到时钟信号411,并将其上存储的Sign值、Level值、Level绝对值、Run值和Last值输出到RMAX判断电路216、LMAX检索单元217、减法输出电路204b、FLC产生电路211。这一输出持续到时刻T230。输出的Sign值、Level值、Level绝对值、Run值和Last值被和称为数据C。
在时刻T211,RMAX判断电路216接收包括在数据C中的组合(Last,Run,Level绝对值)。RMAX判断电路216基于接收到的组合(Last,Run,Level绝对值),判断要指定给组合(Last,Run,Level)的代码类型。RMAX判断电路216产生模式信号和组合(Last,选出的Run,Level绝对值)作为判断结果。RMAX判断电路216将产生的模式信号输出到控制电路206b,并将产生的组合(Last,选出的Run,Level绝对值)输出到第一选择电路205b。这一输出持续到时刻T231。
在时刻T212,控制电路206b接收模式信号,并根据接收到的模式信号将选择指令输出到第一选择电路205b。这一输出持续到时刻T232。
在时刻T215,LMAX检索单元217从数据获得单元201接收包括在数据C中的组合(Last,Run,Level绝对值)。LMAX检索单元217读取LMAX,并将读取的LMAX输出到减法输出电路204b。这一输出持续到时刻T235。
在时刻T216,减法输出电路204b从LMAX检索单元217接收LMAX。减法输出电路204b基于接收到的LMAX计算New Level,并将包括计算出的NewLevel的组合(Last,Run,New Level)输出到第一选择电路205b。这一输出持续到时刻T236。
在时刻T213,第一选择电路205b从控制电路206b接收选择指令。根据接收到的选择指令,第一选择电路205b选择组合(Last,Run,New Level)和组合(Last,选出的Run,Level绝对值)其中之一并将其输出到VLC检索单元207b。这一输出持续到时刻T233。
在时刻T214,VLC检索单元207b从第一选择电路205b接收组合(Last,Run,New Level)和组合(Last,选出的Run,Level绝对值)其中之一,并试图从VLC表251读取相应的VLC。如果在VLC表251上有相应的VLC,VLC检索单元207b将读取的VLC输出到寄存器208,并将OK信号输出到控制电路206b。这一输出持续到时刻T234。如果在VLC表251上没有相应的VLC,VLC检索单元207b将VLC错误信号输出到控制电路206b和寄存器208。这一输出也持续到时刻T234。
在时刻T217,FLC产生电路211从数据获得单元201接收包括在数据C中的组合(Last,Run,Level)。FLC产生电路211基于接收到的组合(Last,Run,Level)产生FLC,并将产生的FLC输出到第二选择电路215。这一输出持续到时刻T237。
寄存器208从VLC检索单元207b接收VLC,并在其上暂存接收到的VLC。在时刻T220,寄存器208检测到时钟信号412。然后,寄存器208将存储的VLC输出到常规VLC产生电路214、LMAX VLC产生电路213、以及RMAX VLC产生电路212。这一输出持续到时刻T240。
在时刻T222,常规VLC产生电路214、LMAX VLC产生电路213和RMAX VLC产生电路212从寄存器208接收VLC。常规VLC产生电路214、LMAX VLC产生电路213和RMAX VLC产生电路212使用接收到的VLC分别产生常规VLC、LMAXVLC和RMAX VLC,并将产生的常规VLC、LMAX VLC和RMAX VLC输出到第二选择电路215。这一输出持续到时刻T242。
在时刻T220,控制电路206b检测到时钟信号412,并将选择指令输出到第二选择电路215。这一输出持续到T240。控制电路206b基于从VLC检索单元207b接收的OK信号或VLC错误信号,以及从RMAX判断电路216接收的模式信号产生选择指令。在将选择指令输出到第二选择电路215之后,控制电路206b在时刻T221将请求输出新数据的数据输出指令输出到数据获得单元201。这一输出持续到时刻T238。
在时刻T223,第二选择电路215从控制电路206b接收选择指令。根据选择指令,第二选择电路215将常规VLC、LMAX VLC、RMAX VLC和FLC其中之一输出到包括在记录和发送系统中的缓冲器。这一输出持续到时刻T243。
在时刻T230,数据获得单元201检测到时钟信号413,并从控制电路206b接收数据输出指令。因此,数据获得单元201将新的一组Sign值、Level值、Level绝对值、Run值和Last值输出到RMAX判断电路216、LMAX检索单元217、减法输出电路204b和FLC产生电路211。这一输出持续到时刻T250。输出的Sign值、Level值、Level绝对值、Run值和Last值被和称为数据D。
数据获得单元201、RMAX判断电路216、控制电路206b、…第二选择电路215对数据D执行与对数据C相同的过程。因此,可变长度编码电路200b在两个时钟周期内产生并输出对应于包括在数据D中的组合(Last,Run,Level)的代码。
2.2总结根据涉及第二实施方式的可变长度编码电路200b,RMAX判断电路216判断要指定给组合(Last,Run,Level)的代码是常规VLC、RMAX VLC或其他的内容。
当RMAX判断电路216判断代码是常规VLC时,可变长度编码电路200b从VLC表251读取对应于组合(Last,Run,Level绝对值)的VLC,基于读取的VLC产生常规VLC,并输出产生的常规VLC。
当RMAX判断电路216判断代码是RMAX VLC时,可变长度编码电路200b从VLC表251读取对应于组合(Last,New Run,Level绝对值)的VLC,基于读取的VLC产生RMAX VLC,并将产生的RMAX VLC作为指定给组合(Last,Run,Level)的代码而输出。
与由RMAX判断电路216执行的上述判断操作并行,LMAX检索单元217读取LMAX,并且减法输出电路204b计算New Level。
当RMAX判断电路216判断要指定给组合(Last,Run,Level)的代码既不是常规VLC也不是RMAX VLC时,可变长度编码电路200b试图从VLC表251读取对应于组合(Last,Run,New Level)的VLC。如果在VLC表251上有对应于组合(Last,Run,New Level)的VLC,可变长度编码电路200b产生LMAXVLC,并将产生的LMAX VLC作为指定给组合(Last,Run,Level)的代码而输出。
如果在VLC表251上没有对应于组合(Last,Run,New Level)的VLC,可变长度编码电路200b将由FLC产生电路211产生的FLC作为指定给组合(Last,Run,Level)的代码而输出。
在上述方法中,可变长度编码电路200b可以不管代码是否是常规VLC、LMAX VLC、RMAX VLC或FLC,而在两个时钟周期内产生并输出指定给组合(Last,Run,Level)的代码。
此外,可变长度编码电路200b从VLC表251中仅搜索一次VLC。因此,可变长度编码电路200b仅需要一个VLC表。这样可以减少电路规模。
2.3第二实施方式的变型实施例涉及第二实施方式的RMAX判断电路216可以变型为具有如图10B所示的RMAX判断电路216b的结构。
RMAX判断电路216b由RMAX检索单元281、第一比较电路282、减法电路283b、第二比较电路284b、移位单元285、选择电路286、判断控制电路287b和输出电路288所构成。
RMAX检索单元281、第一比较电路282、选择电路286和输出电路288执行与RMAX判断电路216中的RMAX检索单元281、第一比较电路282、选择电路286和输出电路288相同的操作,因此这里不再说明。
(1)移位单元285移位单元285从RMAX检索单元281接收RMAX。当接收RMAX时,移位单元285将接收到的RMAX左移一位,并对结果加一。以下,得出的RMAX被表示为2×RMAX+1。随后,移位单元285将2×RMAX+1输出到第二比较电路284b。
(2)第二比较电路284b第二比较电路284b从数据获得单元201接收Run值,并从移位单元285接收2×RMAX+1。第二比较电路284b比较接收到的Run值和2×RMAX+1,并将比较结构输出到判断控制电路287b。
(3)减法电路283b与减法电路283相似,减法电路283b计算New Run=Run值-(RMAX+1)。减法电路283b将计算出的New Run输出到选择电路286。
(4)判断控制电路287b判断控制电路287b从第一比较电路282接收Run值和RMAX的比较结果,并从第二比较电路284b接收Run值和2×RMAX+1的比较结果。
当从第一比较电路282接收的比较结果表示RMAX≥Run值时,判断控制电路287b忽略从第二比较电路284b接收的比较结果,并且产生模式信号“00”并将其输出到选择电路286和控制电路206b。
当从第一比较电路282接收的比较结果表示RMAX<Run值,并且从第二比较电路284b接收的比较结果表示2×RMAX+1≥Run值时,判断控制电路287b产生模式信号“01”并将其输出到选择电路286和控制电路206b。
当从第一比较电路282接收的比较结果表示RMAX<Run值,并且从第二比较电路284b接收的比较结果表示2×RMAX+1<Run值时,判断控制电路287b产生模式信号“10”并将其输出到选择电路286和控制电路206b。
如图10B所示,减法电路283b和第二比较电路284b并联设置。通过这样设置,RMAX判断电路216b可以实现数据输入与输出之间更短的路径。所以,RMAX判断电路216b可以实现更高速处理。
3.第三实施方式下面描述涉及本发明第三实施方式的成像系统。
与涉及第一实施方式的成像系统100相似,涉及第三实施方式的成像系统由光学系统、传感器、转换电路、图像处理电路、记录和发送系统、回放系统、时序控制电路、以及系统控制电路构成。除了包括在记录和发送系统中的可变长度编码电路200c之外,第三实施方式与第一实施方式相同。因此,下面仅描述可变长度编码电路200c。
3.1可变长度编码电路200c可变长度编码电路200c判断常规VLC、LMAX VLC、RMAX VLC和FLC中的哪一个要指定给组合(Last,Run,Level),并基于判断结果产生代码。下面描述可变长度编码电路200c的代码产生操作,以及实现代码产生功能的结构。
(可变长度编码电路200c的操作)下面参照图12所示的流程图描述可变长度编码电路200c的操作。
可变长度编码电路200c开始代码产生操作,同时将包括组合(Last,Run,Level)的数据输出到包括在可变长度编码电路200c中的电路(步骤S151)。首先,可变长度编码电路200c通过比较Level绝对值和LMAX来判断要指定给组合(Last,Run,Level)的代码是否为常规VLC(步骤S152)。当判断代码为常规VLC(步骤S152是)时,可变长度编码电路200c从VLC表读取对应于组合(Last,Run,Level绝对值)的VLC(步骤S153),并且基于读取的VLC产生常规VLC(步骤S154)。之后,可变长度编码电路200c输出产生的常规VLC(步骤S166)。
当判断代码不是常规VLC(步骤S152否)时,可变长度编码电路200c计算New Level=Level绝对值-LMAX(步骤S155)。然后,可变长度编码电路200c通过将计算出的New Level与LMAX进行比较,判断要指定给组合(Last,Run,Level)的代码是否为LMAX VLC(步骤S156)。当判断代码为LMAX VLC(步骤S156是)时,可变长度编码电路200c从VLC表读取对应于组合(Last,Run,New Level)的VLC(步骤S157)。可变长度编码电路200c基于读取的VLC产生LMAX VLC(步骤S158),并输出产生的LMAX VLC(步骤S166)。
当在步骤S156中判断代码不是LMAX VLC时,可变长度编码电路200c计算New Run=Run绝对值-(RMAX+1)(步骤S159)。可变长度编码电路200c通过将计算出的New Run与RMAX进行比较,判断要指定给组合(Last,Run,Level)的代码是否是RMAX VLC(步骤S161)。当判断代码是RMAX VLC(步骤S161是)时,可变长度编码对呀200c从VLC表读取对应于组合(Last,NewRun,Level绝对值)的VLC(步骤S162)。可变长度编码电路200c基于读取的VLC产生RMAX VLC(步骤S163),并输出产生的RMAX VLC(步骤S166)。
当判断在步骤S161中判断代码不是RMAX VLC时,可变长度编码电路200c基于组合(Last,Run,Level)产生FLC(步骤S164),输出产生的FLC(步骤S166)。
(可变长度编码电路200c的结构)如图13所示,可变长度编码电路200c由数据获得单元201、控制电路206c、VLC检索单元207c、寄存器208、FLC产生电路211、RMAX VLC产生电路212、LMAX VLC产生电路213、常规VLC产生电路214、选择电路215c、以及换码模式判断电路218构成。换码模式判断电路218包括LMAX判断电路202c和RMAX判断电路216c。
数据获得单元201、寄存器208、FLC产生电路211、RMAX VLC产生电路212、LMAX VLC产生电路213和常规VLC产生电路214具有与第一实施方式相同的结构并执行相同的操作。而且,选择电路215c具有与涉及第一实施方式的第二选择电路215相同的结构并执行相同的操作。因此,下面不再描述这些部件。
(1)换码模式判断电路218如图13所示,换码模式判断电路218由LMAX判断电路202c和RMAX判断电路216c构成。
在结构和操作方面,LMAX判断电路202c与涉及第一实施方式的LMAX判断电路202相同。具体地说,LMAX判断电路202c从数据获得单元201接收Last值、Run值和Level绝对值,并输出模式信号和组合(Last,Run,选出的Level)。在此,LMAX判断电路202c将模式信号和组合(Last,Run,选出的Level)输出到RMAX判断电路216c,并将模式信号输出到控制电路206c。为了更好的理解,由LMAX判断电路202c输出的模式信号被称为第一模式信号,并且由RMAX判断电路216c输出的模式信号被称为第二模式信号。
与涉及第二实施方式的RMAX判断电路216相似,RMAX判断电路216c由RMAX检索单元、第一比较电路、减法电路、第二比较电路、选择电路、判断控制电路和输出电路构成。
RMAX检索单元、第一比较电路、减法电路、第二比较电路、选择电路和输出电路分别对从LMAX判断电路202c输出的组合(Last,Run,选出的Level)执行与包括在涉及第二实施方式的RMAX判断电路216中的RMAX检索单元281、第一比较电路282、减法电路283、第二比较电路284、选择电路286和输出电路288相同的操作。因而,RMAX判断电路216c将组合(Last,选出的Run,选出的Level)输出到VLC检索单元207c。
判断控制电路从LMAX判断电路202c接收第一模式信号。当接收到的第一模式信号表示“01”时,判断控制电路忽略从第一比较电路和第二比较电路接收的比较结果。判断控制电路产生第二模式信号“00”,并将产生的第二模式信号“00”输出到RMAX判断电路216c中的控制电路206c和选择电路。
当从LMAX判断电路202c接收的第一模式信号为“00”或“10”时,判断控制电路执行与包括在涉及第二实施方式的RMAX判断电路216中的判断控制电路287相同的操作。因而,判断控制电路将第二模式信号输出到包括在RMAX判断电路216c中的控制电路206c和选择电路。
(2)VLC检索单元207cVLC检索单元207c上存储有如图4A所示的VLC表251。在第一实施方式中已经描述了VLC表251。
VLC检索单元207c从换码模式判断电路218接收组合(Last,选出的Run,选出的Level)。当接收到组合(Last,选出的Run,选出的Level)时,VLC检索单元207c随后试图从VLC表251读取对应于接收到的组合(Last,选出的Run,选出的Level)的VLC。VLC检索单元207c将读取的VLC输出到寄存器208c。
如果在VLC表251上没有对应于接收到的组合(Last,选出的Run,选出的Level)的VLC,VLC检索单元207c将VLC错误信号输出到寄存器208。
(3)控制电路206c控制电路206c以固定时间间隔从时序控制电路接收时钟信号,并从换码模式判断判断电路218接收第一模式信号和第二模式信号。
当接收第一和第二模式信号时,控制电路206c与下一时钟信号的检测同步地将选择指令输出到选择电路215c。选择指令表示选择从常规VLC产生电路214输出的常规VLC、从LMAX VLC产生电路213输出的LMAX VLC、从RMAXVLC产生电路212输出的RMAX VLC和从FLC产生电路211输出的FLC其中之一。下面参照图14详细描述从控制电路206c输出的选择指令,以及在输出选择指令之后由控制电路206c执行的操作。
图14示出了第一和第二模式信号的组合与从控制电路206c输出到选择电路215c的选择指令之间的对应关系。“选择指令”项中字母“N”表示选择输出到选择电路215c的选择指令指示从常规VLC产生电路214输出的常规VLC。字母“L”表示选择输出到选择电路215c的选择指令指示从LMAX VLC产生电路213输出的LMAX VLC。字母“R”表示选择输出到选择电路215c的选择指令指示选择从RMAX VLC产生电路212输出的RMAX VLC。字母“F”表示输出到选择电路215c的选择指令指示从FLC产生电路211输出的FLC。
应当注意到,考虑到VLC表251、LMAX表261和RMAX表266的结构,不会出现第一模式信号为“00”并且第二模式信号为“01”或“10”这样的情况。相似地,不会出现第一模式信号为“10”并且第二模式信号为“00”这样的情况。
当接收到的第一模式信号和第二模式信号分别为“00”和“00”时,控制电路206c输出指示从常规VLC产生电路214输出的常规VLC的选择的选择指令。
当接收到的第一模式信号和第二模式信号分别为“01”和“00”时,控制电路206c输出指示从LMAX VLC产生电路213输出的LMAX VLC的选择的选择指令。
当接收到的第一模式信号和第二模式信号分别为“10”和“01”时,控制电路206c输出指示从RMAX VLC产生电路212输出的RMAX VLC的选择的选择指令。
当接收到的第一模式信号和第二模式信号分别为“10”和“10”时,控制电路206c输出指示从FLC产生电路211输出的FLC的选择的选择指令。
在将用上述方法确定的选择指令输出到选择电路215c之后,控制电路206c将请求输出新数据的数据输出指令输出到数据获得单元201。
(4)可变长度编码电路200c的工作周期下面参照图15所示的时序图描述可变长度编码电路200c的工作周期。
在图15中所示的时序图中,构成可变长度编码电路200c的电路名称按垂直方向排列,并且时间按水平方向标出。这个时序图示出了按照时间如何顺序处理数据段。
时钟信号421、422、423、424和425以固定时间间隔,即在时刻T310、T320、T330、T340和T350被提供到数据获得单元201、控制电路206c和寄存器208。
图15中所示的箭头表示在特定时刻由箭头的起点所指的电路执行的操作使得在特定时刻由箭头的终点所指的不同电路执行的操作开始。
在时刻T310,数据获得单元201检测时钟信号421,并将其上存储的Sign值、Level值、Level绝对值、Run值和Last值输出到换码模式判断电路218和FLC产生电路211。这一输出持续到时刻T330。输出的Sign值、Level值、Level绝对值、Run值和Last值统称为数据E。
在时刻T311,换码模式判断电路218中的LMAX判断电路202c接收包括在数据E中的组合(Last,Run,Level绝对值)。LMAX判断电路202c基于接收到的组合(Last,Run,Level绝对值),判断要指定给组合(Last,Run,Level)的代码类型。LMAX判断电路202c产生第一模式信号和组合(Last,Run,选择的Level)作为判断结果。LMAX判断电路202c将产生的第一模式信号输出到控制电路206c,并将产生的第一模式信号和组合(Last,Run,选出的Level)输出到RMAX判断电路216c。这一输出持续到时刻T331。
在时刻T312,RMAX判断电路216c从LMAX判断电路202c接收第一模式信号和组合(Last,Run,选出的Level)。RMAX判断电路216c基于接收到的第一模式信号和组合(Last,Run,选出的Level),判断要指定给组合Last,Run,Level)的代码类型。RMAX判断电路216c产生第二模式信号和组合(Last,选出的Run,选出的Level)作为判断结果。RMAX判断电路216c将产生的第二模式信号输出到控制电路206c,并将产生的组合(Last,选出的Run,选出的Level)输出到VLC检索单元207c。这一输出持续到时刻T332。
在时刻T313,VLC检索单元207c从换码模式判断电路218接收组合(Last,选出的Run,选出的Level),并试图从VLC表251读取对应于接收到的组合(Last,选出的Run,选出的Level)的VLC。如果在VLC表251上有相应的VLC,VLC检索单元207c将读取的VLC输出到寄存器208。如果在VLC表251上没有相应的VLC,VLC检索单元207c将VLC错误信号输出到寄存器208。这一输出也持续到时刻T333。
在时刻T314,FLC产生电路211从数据获得单元201接收包括在数据E中的组合(Last,Run,Level)。FLC产生电路211基于接收到的组合(Last,Run,Level)产生FLC,并将产生的FLC输出到选择电路215c。这一输出持续到时刻T334。
寄存器208从VLC检索单元207c接收VLC,并在其上暂存接收到的VLC。在时刻T320,寄存器208检测到时钟信号422。然后,寄存器208将存储的VLC输出到常规VLC产生电路214、LMAX VLC产生电路213、以及RMAX VLC产生电路212。这一输出持续到时刻T340。
在时刻T322,常规VLC产生电路214、LMAX VLC产生电路213和RMAX VLC产生电路212从寄存器208接收VLC。常规VLC产生电路214、LMAX VLC产生电路213和RMAX VLC产生电路212使用接收到的VLC分别产生常规VLC、LMAXVLC和RMAX VLC,并将产生的常规VLC、LMAX VLC和RMAX VLC输出到选择电路215c。这一输出持续到时刻T342。
在时刻T320,控制电路206c检测到时钟信号422,并将选择指令输出到选择电路215c。这一输出持续到时刻T340。控制电路206c基于从换码模式判断电路218接收的第一和第二模式信号产生选择指令。在将选择指令输出到选择电路215c之后,控制电路206c在时刻T321将请求输出新数据的数据输出指令输出到数据获得单元201。这一输出持续到时刻T335。
在时刻T323,选择电路215c从控制电路206c接收选择指令。根据接收到的选择指令,选择电路215c从常规VLC、LMAX VLC、RMAX VLC和FLC中选择其中之一并输出到包括在记录和发送系统中的缓冲器。这一输出持续到时刻T343。
在时刻T330,数据获得单元201检测时钟信号423,并从控制电路206c接收数据输出指令。当接收数据输出指令时,数据获得单元201将新的一组Sign值、Level值、Level绝对值、Run值和Last值输出到换码模式判断电路218和FLC产生电路211。这一输出持续到时刻T350。输出的Sign值、Level值、Level绝对值、Run值和Last值统称为数据F。
可变长度编码电路200c中,数据获得单元201、换码模式判断电路218、控制电路206c、…选择电路215c对数据F执行与对数据E相同的过程。因此,可变长度编码电路200c在两个时钟周期内产生并输出对应于包括在数据F中的组合(Last,Run,Level)的代码。
3.3总结根据涉及第三实施方式的可变长度编码电路200c,包括在换码模式判断电路218中的LMAX判断电路202c和RMAX判断电路216c判断常规VLC、LMAXVLC、RMAX VLC和FLC中的哪一个要指定给组合(Last,Run,Level)。换码模式判断电路218基于判断适当地选择组合(Last,选出的Run,选出的Level)。可变长度编码电路200c从VLC表251读取对应于选出的组合(Last,选出的Run,选出的Level)的VLC,并产生代码。
在上述方法中,可变长度编码电路200c可以不管代码是常规VLC、LMAXVLC、RMAX VLC或FLC,而在两个时钟周期内产生并输出指定给组合(Last,Run,Level)的代码。
此外,换码模式判断电路218在从VLC表251读取VLC之前,判断要指定给组合(Last,Run,Level)的代码类型。对于该结构来说,对于一个VLC,仅在VLC表251中搜索一次。因此,可变长度编码电路200c仅需要一个VLC表。这样可以减少电路规模。
3.4第三实施方式的第一变型实施例根据第三实施方式,可变长度编码电路200c包括由LMAX判断电路202c和RMAX判断电路216c构成的换码模式判断电路218。然而,第三实施方式可以变型,并且可以实现图16所示的包括换码模式判断电路218d的可变长度编码电路200d的结构。
如图16所示,可变长度编码电路200d由数据获得单元201、控制电路206d、VLC检索单元207d、寄存器208d、FLC产生电路211、RMAX VLC产生电路212、LMAX VLC产生电路213、常规VLC产生电路214、选择电路215d和换码模式判断电路218d构成。数据获得单元201、VLC检索单元207d、FLC产生电路211、RMAX VLC产生电路212、LMAX VLC产生电路213、常规VLC产生电路214和选择电路215d具有与第三实施方式相同的结构并执行相同的操作。因此,下面不再描述这些部件。
(1)换码模式判断电路218d如图17所示,换码模式判断电路218d由第三选择电路301、第二选择电路302、LMAX检索单元303、RMAX检索单元304、第一选择电路306、控制寄存器307、第一共享比较电路308、共享减法电路309、第二共享比较电路311、共享控制电路312、共享选择电路313和共享输出电路314构成。
(第一选择电路306、第二选择电路302和第三选择电路301)第一选择电路306从LMAX检索单元303接收LMAX,并从RMAX检索单元304接收RMAX。而且,第一选择电路306从控制寄存器307接收表示LMAX检索单元303和RMAX检索单元304其中之一的选择指令。当接收该选择指令时,第一选择电路306选择从LMAX检索单元303输出的LMAX和从RMAX检索单元304输出的RMAX其中之一并将其输出到第一共享比较电路308、共享减法电路309和第二共享比较电路311。
第二选择电路302从数据获得单元201接收Run值和Level绝对值,并从控制寄存器307接收表示选择Run值和Level绝对值其中之一的选择指令。当接收选择指令时,第二选择电路302根据接收到的选择指令,将Run值和Level绝对值其中之一输出到共享选择电路313、第一共享比较电路308和共享减法电路309。
第三选择电路301从数据获得单元201接收Run值和Level绝对值,并从控制寄存器307接收表示选择Run值和Level绝对值其中之一的选择指令。当接收选择指令时,第三选择电路301根据接收到的选择指令将Run值和Level绝对值其中之一输出到共享输出电路314。
(LMAX检索单元303和RMAX检索单元304)与涉及第一实施方式的LMAX检索单元231相似的,LMAX检索单元303上存储有LMAX表261和LMAX错误值“0”。LMAX检索单元303试图读取对应于从数据获得单元201接收的Last值和Run值的对的LMAX,并将读取的LMAX输出到第一选择电路306。如果在LMAX表261上没有相应的LMAX,LMAX检索单元303将LMAX错误值“0”为LMAX的替代输出。
与涉及第二实施方式的RMAX检索单元281相似,RMAX检索单元304上存储有RMAX表266和RMAX错误值“-1”。RMAX检索单元304试图读取对应于从数据获得单元201接收的Last值和Level绝对值的对的RMAX,并将读取的RMAX输出到第一选择电路306。如果在RMAX表266上没有相应的RMAX,RMAX检索单元304将RMAX错误值“-1”作为LMAX的替代输出到第一选择电路306。
(第一共享比较电路308)第一共享比较电路308从第二选择电路302接收Level绝对值和Run值其中之一。而且,第一共享比较电路308从第一选择电路306接收LMAX和RMAX其中之一。在此,当从第二选择电路302接收到Level绝对值时,第一共享比较电路308从第一选择电路306接收LMAX。当从第二选择电路302接收到Run值时,第一共享比较电路308从第一选择电路306接收RMAX。
当接收到Level绝对值和LMAX时,第一共享比较电路308比较接收到的Level绝对值和LMAX,并将比较结果输出到共享控制电路312。当接收到Run值和RMAX时,第一共享比较电路308比较接收到的Run值和RMAX,并将比较结果输出到共享控制电路312。
(共享减法电路309)共享减法电路309从第一选择电路306接收LMAX和RMAX其中之一。而且,共享减法电路309从第二选择电路302接收Level绝对值和Run值其中之一。在此,当从第一选择电路306接收到LMAX时,共享减法电路309从第二选择电路302接收Level绝对值。当从第一选择电路306接收到RMAX时,共享减法电路309从第二选择电路302接收到Run值。
当接收到Level绝对值和LMAX时,共享减法电路309计算NewLevel=Level绝对值-LMAX,并且将计算出的New Level输出到共享选择电路313和第二共享比较电路311。
当接收到Run值和RMAX时,共享减法电路309计算New Run=Run值-(RMAX+1),并将计算出的New Run输出到共享选择电路313和第二共享比较电路311。
(第二共享比较电路311)
第二共享比较电路311从第一选择电路306接收LMAX和RMAX其中之一。而且第二共享比较电路311从共享减法电路309接收New Level和New Run其中之一。
当接收到LMAX和New Level时,第二共享比较电路311比较接收到的LMAX和New Level,并将比较结果输出到共享控制电路312。
当接收到RMAX和New Run时,第二共享比较电路311比较接收到的RMAX和New Run,并将比较结果输出到共享控制电路312。
(共享选择电路313)共享选择电路313从第二选择电路302接收Level绝对值和Run值其中之一,并从共享减法电路309接收New Level和New Run其中之一。此外,共享选择电路313从共享控制电路312接收模式信号。
假定共享选择电路313接收Level绝对值、New Level和模式信号。当接收到的模式信号为“00”或“10”时,共享选择电路313选择从第二选择电路302接收的Level绝对值并将其作为选出的Level输出到共享输出电路314。当接收到的模式信号为“01”时,共享选择电路313选择从共享减法电路309接收的New Level并将其作为选出的Level输出到共享输出电路314。
假定共享选择电路313接收Run值、New Run和模式信号。当接收到的模式信号为“00”或“10”时,共享选择电路313选择从第二选择电路302接收的Run值并将其作为选出的Run输出到共享输出电路314。当接收到的模式信号为“01”时,共享选择电路313选择从共享减法电路309接收的New Run并将其作为选出的Run输出到共享输出电路314。
(控制寄存器307)控制寄存器307存储包括选择指令的许多指令。
此外,控制寄存器307包括计算接收时钟信号的次数的从零到二时钟计数器。时钟计数器最初设置为零。
控制寄存器以固定时间间隔从时序控制电路接收时钟信号。
假定当时钟计数器为零时,控制寄存器307接收到时钟信号。在这种情况下,控制寄存器307对时钟计数器表示的值加一。之后,控制寄存器307将表示选择从LMAX检索单元303输出的LMAX的选择指令输出到第一选择电路306,将表示选择Level绝对值的选择指令输出到第二选择电路302,并将表示选择Run值的选择指令输出到第三选择电路301。随后,控制寄存器307从共享控制电路312接收模式信号,并将接收到的模式信号作为第一模式信号输出到控制电路206d。
假定当时钟计数器为一时,控制寄存器307接收到时钟信号。在这种情况下,控制寄存器307对时钟计数器表示的值加一。之后,控制寄存器307将表示选择从RMAX检索单元304输出的RMAX的选择指令输出到第一选择电路306,将表示选择Run值的选择指令输出到第二选择电路302,并将表示选择Level绝对值的选择指令输出到第三选择电路301。随后,控制寄存器307从共享控制电路312接收模式信号,并将接收到的模式信号作为第二模式信号输出到控制电路206d。
假定当时钟计数器为二时,控制寄存器307接收到时钟信号。在这种情况下,控制寄存器307初始化时钟计数器为零。
(共享控制电路312)共享控制电路312从第一共享比较电路308接收Level绝对值和LMAX的比较结果或Run值和RMAX的比较结果。而且,共享控制电路312从第二共享比较电路311接收New Level和LMAX的比较结果或New Run和RMAX的比较结果。
假定共享控制电路312从第一共享比较电路308接收Level绝对值和LMAX的比较结果,并从第二共享比较电路311接收LMAX和New Level的比较结果。如果从第一共享比较电路308接收的比较结果表示LMAX≥Level绝对值,共享控制电路312忽略从第二共享比较电路311接收的比较结果,产生模式信号“00”,并将产生的模式信号“00”输出到共享选择电路313和控制寄存器307。
如果从第一共享比较电路308接收的比较结果表示LMAX<Level绝对值,并且从第二共享比较电路311接收的比较结果表示LMAX≥New Level,共享控制电路312产生模式信号“01”,并将产生的模式信号“01”输出到共享选择电路313和控制寄存器307。
如果从第一共享比较电路308接收的比较结果表示LMAX<Level绝对值,并且从第二共享比较电路311接收的比较结果表示LMAX<New Level,共享控制电路312产生模式信号“10”,并将产生的模式信号“10”输出到共享选择电路313和控制寄存器307。
假定共享控制电路312从第一共享比较电路308接收Run值和RMAX的比较结果,并从第二共享比较电路311接收RMAX和New Run的比较结果。如果从第一共享比较电路308接收的比较结果表示RMAX≥Run值,共享控制电路312忽略从第二共享比较电路311接收的比较结果,产生模式信号“00”,并将产生的模式信号“00”输出到共享选择电路313和控制寄存器307。
如果从第一共享比较电路308接收的比较结果表示RMAX<Run值,并且从第二共享比较电路311接收的比较结果表示RMAX≥New Run,共享控制电路312产生模式信号“01”,并将产生的模式信号“01”输出到共享选择电路313和控制寄存器307。
如果从第一共享比较电路308接收的比较结果表示RMAX<Run值,并且从第二共享比较电路311接收的比较结果表示RMAX<New Run,共享控制电路312产生模式信号“10”,并将产生的模式信号“10”输出到共享选择电路313和控制寄存器307。
(共享输出电路314)共享输出电路314从数据获得单元201接收Last值,从共享选择电路313接收选出的Level,并从第三选择电路301接收Run值。共享输出电路314将接收到的组合(Last,Run,选出的Level)输出到VLC检索单元207d。
而且,共享输出电路314从数据获得单元201接收Last值,从共享选择电路313接收选出的Run,并从第三选择电路301接收Level绝对值。共享输出电路314将接收到的组合(Last,选出的Run,Level绝对值)输出到VLC检索单元207d。
(2)寄存器208d寄存器208d由记录电路、第一存储单元、第二存储单元和读出电路构成。记录电路包括从零至二的时钟计数器,其可以计算接收时钟信号的次数。时钟计数器最初设置为零。
注意,由寄存器208d中的时钟计数器的值总是与由换码模式判断电路218d中的控制寄存器307中的时钟计数器的值相等。
记录电路以固定时间间隔从时序控制电路接收到时钟信号。
假定当时钟计数器为零时记录电路接收到时钟信号。记录电路对由时钟计数器表示的值加一。之后,记录电路从VLC检索单元207d接收VLC或VLC错误信号。在接收到VLC的情况下,记录电路将接收到的VLC记录到第一存储单元。在接收到VLC错误信号的情况下,记录电路不工作。
假定当时钟计数器为一时记录电路接收到时钟信号。记录电路对由时钟计数器的值加一。之后,记录电路从VLC检索单元207d接收VLC或VLC错误信号。在接收到VLC的情况下,记录电路将接收到的VLC记录到第二存储单元。在接收VLC错误信号的情况下,记录电路不工作。
假定当时钟计数器为二时记录电路接收到时钟信号。在这种情况下,记录电路初始化时钟计数器以为零。
为了更好的理解,存储在第一存储单元中的VLC被称为第一VLC,并且存储在第二存储单元中的VLC被称为第二VLC。
读出电路以固定时间间隔从时序控制电路接收时钟信号。而且,读出电路从控制电路206d接收选择指令,该选择指令表示选择第一VLC和第二VLC其中之一。
当接收到选择指令时,读出电路根据接收到的选择指令读取第一VLC和第二VLC的其中之一。随后当检测到时钟信号时,读出电路将读取的第一VLC和第二VLC的其中之一输出到常规VLC产生电路214、LMAX VLC产生电路213和RMAX VLC产生电路212。
(3)控制电路206d控制电路206d以固定时间间隔从时序控制电路接收时钟信号。
控制电路206d从换码模式判断电路218d接收第一模式信号,并在其上暂存接收到的第一模式信号。之后,控制电路206d从换码模式判断电路218d接收第二模式信号。
当接收到第一和第二模式信号时,控制电路206d将表示选择第一VLC和第二VLC其中之一的选择指令输出到寄存器208d,并将表示选择常规VLC、LMAXVLC和RMAX VLC其中之一的选择指令输出到选择电路215d。下面参照图18详细描述从控制电路206d输出的选择指令,以及在输出选择指令之后由控制电路206执行的操作。
图18所示为由第一模式信号和第二模式信号的组合共同决定从控制电路206d输出的选择指令的一个例子。在选择指令(寄存器)部分中的数字“1”表示输出给寄存器208d的选择指令指示选择第一VLC。数字“2”表示输出给寄存器208d的选择指令指示选择第二VLC。在选择指令(选择电路)部分中的字母“N”表示输出给选择电路215d的选择指令指示选择从常规VLC产生电路214输出的常规VLC。字母“L”表示输出给选择电路215d的选择指令指示选择从LMAX VLC产生单元213输出的LMAX VLC。字母“R”表示输出给选择电路215d的选择指令指示选择从RMAX VLC产生单元212输出的RMAX VLC。字母“F”表示输出给选择电路215d的选择指令指示选择从FLC产生电路211输出的FLC。
考虑到VLC表251、LMAX表以及RMAX表的结构,不会存在第一模式信号为“00”,而第二模式信号为“01”或“10”的情况。同样,不会存在第一模式信号为“01”,而第二模式信号为“00”的情况,而且不会存在第一模式信号为“10”,而第二模式信号为“00”的情况。
当接收到的第一和第二模式信号均为“00”时,控制电路206d向寄存器208d输出指示选择第一VLC的选择指令。随后检测到时钟信号,该控制电路206d向选择电路215d输出指示选择常规VLC产生电路214的选择指令。
当接收到的第一和第二模式信号均为“01”时,该控制电路206d向寄存器208d输出指示选择第一VLC的选择指令。当随后检测到时钟信号时,该控制电路206d向选择电路215d输出指示选择LMAX VLC产生电路213的选择指令。
当接收到的第一模式信号为“01”并且接收到的第二模式信号为“10”时,该控制电路206d向寄存器208d输出指示选择第一VLC的选择指令。当随后检测到时钟信号时,该控制电路206d向选择电路215d输出指示选择LMAXVLC产生电路213的选择指令。
当接收到的第一模式信号为“10”并且接收到的第二模式信号为“01”时,该控制电路206d向寄存器208d输出指示选择第二VLC的选择指令。当随后检测到时钟信号时,该控制电路206d向选择电路215d输出指示选择RMAXVLC产生电路212的选择指令。
当接收到的第一和第二模式信号均为“10”时,该控制电路206d不向寄存器208d输出选择指令。当检测到下一时钟信号时,该控制电路206d向选择电路215d输出指示选择FLC产生电路211的选择指令。
在向选择电路215d输出选择指令后,控制电路206d向数据获得单元201输出数据输出指令。
(4)可变长度编码电路200d的工作周期以下参考图19所示的时序图说明可变长度编码电路200d的工作周期。在图19所示的时序图中,构成可变长度编码电路200d的电路名称垂直排列,并且时间水平绘制于图上。该时序图示出按照时间如何顺序处理数据段。
以固定时间间隔即T410、T420、T430、…,T470,时钟信号431、432、433、…437施加给数据获得单元201、换码模式判断电路218d、控制电路206d以及寄存器电路208d。注意在时钟信号之间的预定时间间隔称为时钟周期。
图19中的箭头表示在特定时刻由箭头起始点所指的电路执行的操作使在特定时刻由箭头终点所指的不同电路执行的操作开始。
在时刻T410,数据获得单元201检测到时钟信号431,并向换码模式判断电路218d和FLC产生电路211输出其上存储的Sigh值,Level值,Level绝对值,Run值,和Last值。该输出持续到时刻T440。输出Sigh值,Level值,Level绝对值,Run值,和Last值一起称为数据G。
在时刻T411,换码模式判断电路218d接收包括在数据G中的组合(Last,Run,Level绝对值)。换码模式判断电路218d判断指定给包括在数据G中的组合(Last,Run,Level)的编码类型是常规VLC、LMAX VLC或者其他。该换码模式判断电路218d产生作为判断的结果的第一模式信号和组合(Last,Run,选出的Level)。换码模式判断电路218d向控制电路206d输出产生的第一模式信号,并向VLC检索单元207d输出组合(Last,Run,选出的Level)。该输出持续到时刻T420。
在时刻T412,VLC检索单元207d从换码模式判断电路218d接收组合(Last,Run,选出的Level),并试图从VLC表251读取对应于组合(Last,Run,选出的Level)的VLC。如果在VLC表251中存在相应的VLC,VLC检索单元207d向寄存器208d输出读取的VLC。如果在VLC表251中不存在相应的VLC,VLC检索单元207d向寄存器208d输出VLC错误信号。该输出持续到时刻T422。该VLC称为第一VLC,并且寄存器208d在第一存储单元存储该第一VLC。
在时刻T413,FLC产生电路211从数据获得电路201接收组合(Last,Run,Level)。FLC产生电路211基于接收的组合(Last,Run,Level)产生FLC,并向选择电路215d输出产生的FLC。该输出持续到T443。
在时刻T420,换码模式判断电路218d检测到时钟信号432。该换码模式判断电路218d判断指定给包括在数据G中的组合(Last,Run,Level)的编码类型是标准VLC、RMAX VLC或者其它。作为判断的结果,该换码模式判断电路218d产生施加给控制电路206d的第二模式信号和施加给VLC寻回207d的组合(Last,Run,选出的Level)。该输出持续到时刻T441。
在时刻T421,控制电路206d接收第二模式信号,并向寄存器208d输出基于第一模式信号和第二模式信号确定的选择指令,该输出持续到时刻T451。
在时刻T422,VLC检索单元207d从换码模式判断电路218d接收组合(Last,选出的Run,Level绝对值),并试图从VLC表251读取对应于接收到组合(Last,选出的Run,Level绝对值)的VLC。如果在VLC表251上存在相应的VLC,VLC检索单元207d将读取的VLC输出到寄存器208d。如果在VLC表251上不存在相应的VLC,VLC检索单元207d将VLC错误信号输出到寄存器208d。这一输出持续到时刻T442。该VLC称为第二VLC,并且寄存器208d在第二存储单元存储该第二VLC。
在时刻T430,寄存器208d检测到时钟信号433,并从控制电路206d接收选择指令。基于接收到的选择指令,寄存器208d读取其上存储的第一VLC和第二VLC其中之一,并向常规VLC产生电路214、LMAX VLC产生电路213、以及RMAX VLC产生电路212输出读取的第一VLC和第二VLC其中之一。这一输出持续到时刻T460。
在时刻T432,常规VLC产生电路214、LMAX VLC产生电路213和RMAX VLC产生电路212从寄存器208d接收VLC。常规VLC产生电路214、LMAX VLC产生电路213和RMAX VLC产生电路212使用接收到的VLC分别产生常规VLC、LMAX VLC和RMAX VLC,并将产生的常规VLC、LMAX VLC和RMAX VLC输出到第选择电路215d。这一输出持续到时刻T462。
在时刻T430,控制电路206b检测到时钟信号433,并将选择指令输出到第二选择电路215d。这一输出持续到时刻T460。控制电路206d基于从换码模式判断电路218d接收的第一模式信号和第二模式信号产生选择指令。在将选择指令输出到选择电路215d之后,在时刻T431,控制电路206d将数据输出指令输出到数据获得单元201。这一输出持续到时刻T444。
在时刻T433,选择电路215d从控制电路206d接收选择指令。根据接收到的选择指令,选择电路215d选择常规VLC、LMAX VLC、RMAX VLC和FLC其中之一作为指定给组合(Last,Run,Level)的代码。然后选择电路215d向包括在记录和发送系统中的缓冲器输出选出的代码。这一输出持续到时刻T463。
在时刻T440,数据获得单元201检测到时钟信号434,并从控制电路206d接收数据输出指令。因此,数据获得单元201将新的一组Sign值、Level值、Level绝对值、Run值和Last值输出到换码模式判断电路218d和FLC产生电路211。这一输出持续到时刻T470。输出的Sign值、Level值、Level绝对值、Run值和Last值统称为数据H。
在可变长度编码电路200d中的数据获得单元201、换码模式判断电路218d、…选择电路215d对数据H执行与对数据G相同的过程。因此,可变长度编码电路200d在三个时钟周期内产生并输出对应于包括在数据H中的组合(Last,Run,Level)的代码。
(5)总结如上所述,为了判断指定给组合(Last,Run,Level)的代码是常规VLC、LMAX VLC或者其他,并且为了判断指定给组合(Last,Run,Level)的代码是常规VLC、RMAX VLC或者其他,该换码模式判断电路218d使用控制寄存器307、第一共享比较电路308、共享减法电路312、第二共享比较电路311、共享控制电路312、共享选择电路313、和共享输出电路314。通过该结构,第三实施方式的第一变型实施例可以获得比第三实施方式更小的电路规模,其中换码模式判断电路218包括LMAX判断电路202c和RMAX判断电路216c。
3.5第三实施方式的第二变型实施例根据第三实施方式的第一变型实施例,在LMAX VLC和RMAX VLC均可能的情况,控制电路206d将LMAX VLC优先指定给组合(Last,Run,Level)。然而,该控制电路206d也可以优先指定RMAX VLC。
具体的说,当第一模式信号和第二模式信号均为“01”时,该控制电路206d向寄存器电路208d输出指示第二VLC的选择指令,并向选择电路215d输出指示RMAX VLC产生电路212的选择指令。
而且,在可变长度编码电路200d的制造过程中将表示LMAX VLC和RMAXVLC其中之一具有优先地位的信息可以存储在控制电路206d中。此外,在可变长度编码电路200d完成后,可以由用户决定LMAX VLC和RMAX VLC的优先级。
4.第四实施方式以下说明关于本发明第四实施方式的成像系统。
和第一实施方式的成像系统100相似,第四实施方式的成像系统100由光学系统、传感器、转换电路、图像处理电路、记录和发送系统、回放系统、时序控制电路、以及系统控制电路构成。除了包括在记录和发送系统的可变长度编码电路200e以外,第四实施方式和第一实施方式一样。因此,下面仅说明可变长度编码电路200e。
4.1可变长度编码电路200e可变长度编码电路200e判断将常规VLC、RMAX VLC、LMAX VLC和FLC中的哪一个指定给组合(Last,Run,Level),并基于判断结果产生代码。下面具体描述可变长度编码电路200e的代码产生操作,以及实现代码产生功能的结构。
(可变长度编码电路200e的操作)下面参照图20所示的流程图描述可变长度编码电路200的操作。
可变长度编码电路200e开始代码产生操作,同时将包括组合(Last,Run,Level)的数据输出到包含在可变长度编码电路200e中的电路(步骤S181)。首先,可变长度编码电路200通过比较Run值和RMAX来判断要指定给组合(Last,Run,Level)的代码是否为常规VLC(步骤S182)。当判断代码为常规VLC时(步骤S182是),可变长度编码电路200e从VLC表中读取对应于组合(Last,Run,Level绝对值)的VLC(步骤S183),并基于读取的VLC产生常规VLC(步骤S184)。之后,可变长度编码电路200输出产生的常规VLC(步骤S196)。
当判断代码不是常规VLC时(步骤S182否),可变长度编码电路200e通过计算New Run=Run值-(RMAX+1)(步骤S185)。然后,可变长度编码电路200e通过将计算出的New Run与RMAX进行比较,判断要指定给组合(Last,Run,Level)的代码是否为RMAX VLC(步骤S186)。当判断代码为RMAX VLC时(步骤S186是),可变长度编码电路200e从VLC表读取对应于组合(Last,New Run,Level绝对值)的VLC(步骤S187)。可变长度编码电路200e基于读取的VLC产生RMAX VLC(步骤S188),并输出产生的RMAX VLC(步骤S196)。
当在步骤S186中判断代码不是RMAX VLC时,可变长度编码电路200e计算New Level=Level绝对值-LMAX(步骤S189)。可变长度编码电路200e通过将计算的New Level和LMAX进行比较判断要指定给组合(Last,Run,Level)的代码是否为LMAX VLC(步骤S191)。当判断代码为LMAX VLC时(步骤S191是),可变长度编码电路200e从VLC表读取对应于组合(Last,Run,New Level)的VLC(步骤S192)。可变长度编码电路200e基于读取的VLC产生LMAX VLC(步骤S193),并输出产生的LMAX VLC(步骤S196)。
当在步骤S191中判断代码不是LMAX VLC时,可变长度编码电路200e产生FLC(步骤S194),并输出产生的FLC(步骤S196)。
(可变长度编码电路200e的结构)如图21所示,可变长度编码电路200由数据获得单元201、控制电路206e、VLC检索单元207e、寄存器208、FLC产生电路211、RMAX VLC产生电路212、LMAX VLC产生电路213、常规VLC产生电路214、选择电路215e以及换码模式判断电路218e构成。该换码模式判断电路218e包括LMAX判断电路202e和RMAX判断电路216e。
数据获得单元201、寄存器208、FLC产生电路211、RMAX VLC产生电路212、LMAX VLC产生电路213、常规VLC产生电路214与第一实施方式具有相同的结构并执行相同的操作。因此,这些结构在以下不作说明。同样,VLC检索单元207e和选择电路215e与第三实施方式的VLC检索单元207c和选择电路215c相同。
(1)换码模式判断电路218e如图21所示,换码模式判断电路218e由RMAX判断电路216e和LMAX判断电路202e构成。
在结构和操作方面,RMAX判断电路216e与第二实施方式的RMAX判断电路216相同。具体地说,RMAX判断电路216e从数据获得单元201接收Last值、Run值和Level绝对值,并输出模式信号和组合(Last,选出的Run,Level绝对值)。在此,RMAX判断电路216e将模式信号和组合(Last,选出的Run,Level绝对值)输出到LMAX判断电路202e,并将模式信号输出到控制电路206e。为了更好的理解,由RMAX判断电路216e输出的模式信号称为第一模式信号,而由LMAX判断电路202e输出的模式信号称为第二模式信号。
与第一实施方式的LMAX判断电路202相似,LMAX判断电路202e由LMAX检索单元、第一比较电路、减法电路、第二比较电路、选择电路、判断控制电路和输出电路构成。
LMAX检索单元、第一比较电路、减法电路、第二比较电路、选择电路和输出电路对从RMAX判断电路216e输出的组合(Last,选出的Run,Level绝对值)上分别执行与包括在涉及第一实施方式的LMAX判断电路202中的RMAX检索单元231、第一比较电路232、减法电路233、第二比较电路234、选择电路236和输出电路288相同的操作。因而,LMAX判断电路202e将组合(Last,选出的Run,选出的Level)输出到VLC检索单元207e。
判断控制电路从RMAX判断电路216e接收第一模式信号。同样,判断控制电路接收从第一比较电路Level绝对值和LMAX比较的结果,并从第二比较电路接收LMAX和New Level的比较结果。
当接收到的第一模式信号为“01”时,判断控制电路忽略从第一比较电路和第二比较电路接收的比较结果。判断控制电路产生第二模式信号为“00”,并将产生的第二模式信号“00”输出到LMAX判断电路202e中的控制电路206e和选择电路。
当从RMAX判断电路216e接收的第一模式信号为“00”或“10”时,判断控制电路执行与包括在第一实施方式的LMAX判断电路202中的判断控制电路237相同的操作。具体的,判断控制电路基于从第一比较电路和第二比较电路接收到的比较结果产生第二模式信号,并将产生的第二模式信号输出到包括在LMAX判断电路202e中的控制电路206e和选择电路。
(2)控制电路206e
控制电路206e以固定时间间隔从时序控制电路接收时钟信号,并从换码模式判断判断电路218e接收第一模式信号和第二模式信号。
当接收到第一模式信号和第二模式信号时,控制电路206e与下一时钟信号的检测同步地将选择指令输出到选择电路215e。选择指令由基于图22所示接收的第一和第二模式信号的组合确定。图22示出第一模式信号和第二模式信号的组合与输出到选择电路215e的选择指令之间的对应关系。
当第一模式信号为“00”且第二模式信号为“00”时,控制电路206e输出指示选择从常规VLC产生电路214输出的信号的选择指令。
当第一模式信号为“01”且第二模式信号为“00”时,控制电路206e输出指示选择从RMAX VLC产生电路212输出的信号的选择指令。
当第一模式信号为“10”且第二模式信号为“01”时,控制电路206e输出指示选择从LMAX VLC产生电路213输出的信号的选择指令。
当第一模式信号为“10”和第二模式信号为“10”时,控制电路206e输出指示选择从FLC产生电路211输出的信号的选择指令。
应当注意到,考虑到VLC表251、LMAX表261和RMAX表266的结构,不会出现第一模式信号为“00”并且第二模式信号为“01”或“10”的情况。相似地,不会出现第一模式信号为“10”并且第二模式信号为“00”的情况。
在将用上述方法确定的选择指令输出到选择电路215e之后,控制电路206e将数据输出指令输出到数据获得单元201。
(3)可变长度编码电路200e的工作周期下面参照图23所示的时序图描述可变长度编码电路200e的工作周期。
在图23中所示的时序图中,构成可变长度编码电路200e的电路名称按垂直方向排列,并且时间按水平方向标出。该时序图示出了按照时间如何顺序处理数据段。
时钟信号441、442、443、444和445以固定时间间隔,即在时刻T510、T520、T530、T540和T550提供给数据获得单元201、控制电路206e和寄存器208。在此,时钟信号之间的预定时间间隔称为时钟周期。
图23中的箭头表示在特定时刻由箭头起始点所指的电路执行的操作使在特定时刻由箭头终点所指的不同电路执行的操作开始。
在时刻T510,数据获得单元201检测到时钟信号441,并将其上存储的Sign值、Level值、Level绝对值、Run值和Last值输出到换码模式判断电路218和FLC产生电路211。这一输出持续到时刻T530。输出的Sign值、Level值、Level绝对值、Run值和Last值一起称为数据I。
在时刻T511,换码模式判断电路218e中的RMAX判断电路216e接收数据I。RMAX判断电路216e判断要指定给组合(Last,Run,Level)的代码类型。RMAX判断电路216e产生第一模式信号和组合(Last,选出的Run,Level绝对值)作为判断结果。RMAX判断电路216e将产生的第一模式信号输出到控制电路206e,并将产生的第一模式信号和组合(Last,选出的Run,Level绝对值)输出到换码模式判断电路218e的LMAX判断电路202e。这一输出执行到时刻T531。
在时刻T512,LMAX判断电路202e从RMAX判断电路216e接收第一模式信号和组合(Last,选出的Run,Level绝对值)。LMAX判断电路202e基于接收到的第一模式信号和组合(Last,选出的Run,Level绝对值),判断要指定给组合Last,Run,Level)的代码类型。LMAX判断电路202e产生第二模式信号和组合(Last,选出的Run,选出的Level)作为判断结果。LMAX判断电路202e将产生的第二模式信号输出到控制电路206e,并将产生的组合(Last,选出的Run,选出的Level)输出到VLC检索单元207e。这一输出持续到时刻T532。
在时刻T513,VLC检索单元207e从换码模式判断电路218e接收组合(Last,选出的Run,选出的Level),并试图从VLC表251读取对应于接收到的组合(Last,选出的Run,选出的Level)的VLC。如果在VLC表251中有相应的VLC,VLC检索单元207e将读取的VLC输出到寄存器208。如果在VLC表251中没有相应的VLC,VLC检索单元207e将VLC错误信号输出到寄存器208。这一输出持续到时刻T533。
在时刻T514,FLC产生电路211从数据获得单元201接收数据I。FLC产生电路211基于包括在数据I中的组合(Last,Run,Level)产生FLC,并将产生的FLC输出到选择电路215e。这一输出持续到时刻T534。
寄存器208从VLC检索单元207e接收VLC,并在其上暂存接收到的VLC。在时刻T520,寄存器208检测到时钟信号422。然后,寄存器208将存储的VLC输出到常规VLC产生电路214、LMAX VLC产生电路213、以及RMAX VLC产生电路212。这一输出持续到时刻T540。
在时刻T522,常规VLC产生电路214、LMAX VLC产生电路213和RMAX VLC产生电路212从寄存器208接收VLC。常规VLC产生电路214、LMAX VLC产生电路213和RMAX VLC产生电路212使用接收到的VLC分别产生常规VLC、LMAXVLC和RMAX VLC,并将产生的常规VLC、LMAX VLC和RMAX VLC输出到选择电路215e。这一输出持续到时刻T542。
在时刻T520,控制电路206e检测到时钟信号442,并将基于从换码模式判断电路218e接收的第一模式信号和第二模式信号的选择指令输出到选择电路215e。这一输出持续到时刻T540。在将选择指令输出到选择电路215e之后,控制电路206e在时刻T521将数据输出指令输出到数据获得单元201。这一输出持续到时刻T535。
在时刻T523,选择电路215e从控制电路206e接收选择指令。根据接收到的选择指令,选择电路215e选择常规VLC、LMAX VLC、RMAX VLC和FLC其中之一并将其输出到包括在记录和发送系统中的缓冲器。这一输出持续到时刻T543。
在时刻T530,数据获得单元201检测到时钟信号443,并从控制电路206e接收数据输出指令。当接收到数据输出指令时,数据获得单元201将新的一组Sign值、Level值、Level绝对值、Run值和Last值输出到换码模式判断电路218e和FLC产生电路211。这一输出持续到时刻T550。输出的Sign值、Level值、Level绝对值、Run值和Last值统称为数据J。
换码模式判断电路218e、控制电路206e、…选择电路215e对数据J执行与对数据I相同的过程。因此,可变长度编码电路200e在两个时钟周期内产生并输出对应于包括在数据J中的组合(Last,Run,Level)的代码。
4.2总结根据本发明第四实施方式的可变长度编码电路200e,包括在换码模式判断电路218e中的RMAX判断电路216e和LMAX判断电路202e判断要指定给组合(Last,Run,Level)的代码是常规VLC、LMAX VLC或RMAX VLC以及FLC的哪一个。换码模式判断电路218e基于判断恰当地选择组合(Last,选出的Run,选出的Level)。可变长度编码电路200e从VLC表251读取对应于选出的组合(Last,选出的Run,选出的Level)的VLC,并产生代码。
如上所述,RMAX判断电路216e位于LMAX判断电路202e之前。这样,当RMAX VLC和LMAX VLC都处于可能状态时,RMAX VLC优先被指定给组合(Last,Run,Level)。
5.第五实施方式以下说明本发明第五实施方式的成像系统。
和第一实施方式的成像系统100相似,第五实施方式的成像系统100由光学系统、传感器、转换电路、图像处理电路、记录和发送系统、回放系统、时序控制电路、以及系统控制电路构成。除了包括在记录和发送系统的可变长度编码电路200f以外,第五实施方式的成像系统和第一实施方式的成像系统具有相同的结构。因此,下面仅说明体现第五实施方式特征的可变长度编码电路200f。
5.1可变长度编码电路200f根据第五实施方式的可变长度编码电路200f,LMAX判断电路和RMAX判断电路并行操作。可变长度编码电路200f判断要将常规VLC、RMAX VLC、LMAX VLC和FLC中的哪一个指定给组合(Last,Run,Level),并基于判断结果可变长度编码电路200f产生指定给组合(Last,Run,Level)的代码。下面具体描述可变长度编码电路200f的代码产生操作,以及实现代码产生功能的结构。
(可变长度编码电路200f的操作)下面参照图24所示的流程图描述可变长度编码电路200f的操作。
可变长度编码电路200f开始代码产生操作,同时将包括组合(Last,Run,Level)的数据输出到包含在可变长度编码电路200f中的电路(步骤S201)。首先,LMAX判断电路(后面描述)判断要指定给组合(Last,Run,Level)的代码类型(步骤S202)。与步骤S202并行,RMAX判断电路(后面描述)也判断要指定给组合(Last,Run,Level)的代码类型(步骤S209)。
详细地,在步骤S202,LMAX判断电路通过比较Level绝对值和对应于(Last,Run)对的LMAX来判断要指定给组合(Last,Run,Level)的代码是否为常规VLC(步骤S204)。当判断代码不是常规VLC时(步骤S204否),LMAX判断电路计算New Level=Level绝对值-LMAX(步骤S206)。然后,LMAX判断电路通过将计算出的New Level与LMAX进行比较,判断要指定给组合(Last,Run,Level)的代码是否为根据第一换码模式产生的LMAX VLC(步骤S207)。
详细地,在步骤S209,RMAX判断电路通过比较Run值和对应于(Last,Level绝对值)对的RMAX来判断要指定给组合(Last,Run,Level)的代码是否为常规VLC(步骤S211)。当判断代码不是常规VLC时(步骤S211否),RMAX判断电路计算New Run=Run值-(RMAX+1)(步骤S212)。然后,RMAX判断电路通过将计算出的New Run与RMAX进行比较,判断要指定给组合(Last,Run,Level)的代码是否为根据第二换码模式产生的RMAX VLC(步骤S213)。
可变长度编码电路200f通过基于LMAX判断电路得到的判断结果(步骤S202)和通过RMAX判断电路得到的判断结果(步骤S209)选择要指定给组合(Last,Run,Level)的代码类型(步骤S214)。
当选择常规VLC时,可变长度编码电路200f读取对应于(Last,Run,Level绝对值)的VLC(步骤S216)。可变长度编码电路200f基于读取的VLC产生常规VLC(步骤S217),并将产生的常规VLC作为指定给组合(Last,Run,Level)的代码输出(步骤S225)。
当选择LMAX VLC时,可变长度编码电路200f读取对应于(Last,Run,NewLevel)的VLC(步骤S219)。可变长度编码电路200f基于该读取的VLC产生LMAX VLC(步骤S221),并将产生的LMAX VLC作为指定给组合(Last,Run,Level)的代码输出(步骤S225)。
当选择RMAX VLC时,可变长度编码电路200f读取对应于组合(Last,NewRun,Level绝对值)的VLC(步骤S222)。可变长度编码电路200f基于读取的VLC产生RMAX VLC(步骤S223),并将产生的RMAX VLC作为指定给组合(Last,Run,Level)的代码输出(步骤S225)。
当选择FLC时,可变长度编码电路200f基于组合(Last,Run,Level)产生FLC(步骤S224),并将产生的FLC作为指定给组合(Last,Run,Level)的代码输出(步骤S225)。
(可变长度编码电路200f的结构)如图25所示,可变长度编码电路200f由数据获得单元201、LMAX判断电路202f、第一选择电路205f、控制电路206f、VLC检索单元207f、寄存器208、FLC产生电路211、RMAX VLC产生电路212、LMAX VLC产生电路213、常规VLC产生电路214、第二选择电路215和RMAX判断电路216f构成。
寄存器208、FLC产生电路211、RMAX VLC产生电路212、LMAX VLC产生电路213、常规VLC产生电路214、以及第二选择电路215和第一实施方式具有同样的结构并执行同样的操作。因此,这些结构在以下不作说明。同样,VLC检索单元207f与第三实施方式的VLC检索单元207c在结构和操作方面相同,因此这里不作说明。
(1)LMAX判断电路202f和RMAX判断电路216fLMAX判断电路202f具有和第一实施方式的LMAX判断电路202相同的结构。和LMAX判断电路202相似,LMAX判断电路202f从数据获取单元201接收组合(Last,Run,Level绝对值),向第一选择电路205f输出组合(Last,Run,选出的Level),并向控制电路206f输出模式信号。
RMAX判断电路216f具有和第二实施方式的RMAX判断电路216相同的结构。和RMAX判断电路216相似,RMAX判断电路216f从数据获取单元201接收组合(Last,Run,Level绝对值),向第一选择电路205f输出组合(Last,选出的Run,Level绝对值),并向控制电路206f输出模式信号。
为了更好的理解,由LMAX判断电路202f输出的模式信号称为第一模式信号,并且由RMAX判断电路216f输出的模式信号称为第二模式信号。
第一模式信号为“00”表示要指定给组合(Last,Run,Level)的代码为常规VLC。第一模式信号为“01”表示要指定给组合(Last,Run,Level)的代码为LMAX VLC。第一模式信号为“10”表示要指定给组合(Last,Run,Level)的代码既不是常规VLC也不是LMAX VLC。
第二模式信号为“00”表示要指定给组合(Last,Run,Level)的代码为常规VLC。第二模式信号为“01”表示要指定给组合(Last,Run,Level)的代码为RMAX VLC。第二模式信号为“10”表示要指定给组合(Last,Run,Level)的代码既不是常规VLC也不是RMAX VLC。
(2)第一选择电路205f第一选择电路205f从LMAX判断电路202f接收组合(Last,Run,选出的Level),并从RMAX判断电路216f接收组合(Last,Run,选出的Level)。而且,第一选择电路205f从控制电路206f接收表示LMAX判断电路202f和RMAX判断电路216f其中之一的选择指令。
当接收到选择指令时,首先,第一选择电路205f根据接收的选择指令选择从LMAX判断电路202f接收到的组合(Last,Run,选出的Level)和从RMAX判断电路216f接收到的组合(Last,Run,选出的Level)其中之一,并将选出的组合输出到VLC检索单元207f。
(3)控制电路206f控制电路206f上存储有诸如选择指令和数据输出指令的多种指令。
控制电路206f以固定时间间隔从时序控制电路接收时钟信号。同样,该控制电路206f从LMAX判断电路202f接收第一模式信号以及从RMAX判断电路216f接收第二模式信号。根据所接收到的第一和第二模式信号(如图26),控制电路206f向第一选择电路205f和第二选择电路215输出选择指令。
图26示出从控制电路206f输出到第一选择电路205f和第二选择电路215的选择指令,该选择指令由第一模式信号和第二模式信号的组合决定。在选择指令(第一选择电路)部分中的“LMAX”表示输出给第一选择电路205f的选择指令指示选择从LMAX判断电路202f输出的组合(Last,Run,选出的Level)。“RMAX”表示输出给第一选择电路205f的选择指令指示选择从RMAX判断电路216f输出的组合(Last,选出的Run,Level绝对值)。
选择指令(第二选择电路)部分中的字母“N”表示输出到第二选择电路215的选择指令指示选择从常规VLC产生电路214输出的常规VLC。字母“L”表示输出到选择电路215的选择指令指示选择从LMAX VLC产生电路213输出的LMAX VLC。字母“R”表示输出到选择电路215的选择指令指示选择从RMAXVLC产生电路212输出的RMAX VLC。
考虑到VLC表251、LMAX表261和RMAX表266的结构,不会出现第一模式信号为“00”并且第二模式信号为“01”或“10”的情况。同样,不会出现第一模式信号为“01”并且第二模式信号为“00”的情况,而且也不会出现第一模式信号为“10”并且第二模式信号为“00”的情况。
当接收到的第一模式信号和第二模式信号均为“00”时,控制电路206f向第一选择电路205f输出指示选择从LMAX判断电路202f输出的组合(Last,Run,选出的Level)的选择指令。当随后检测到时钟信号时,控制电路206f向第二选择电路215输出指示选择从常规VLC产生电路214输出的常规VLC的选择指令。
当接收到的第一模式信号和第二模式信号均为“01”,并且当第一模式信号和第二模式信号分别为“01”和“10”时,控制电路206f向第一选择电路205f输出指示选择从LMAX判断电路202f输出的组合(Last,Run,选出的Level)的选择指令。当随后检测到时钟信号时,控制电路206f向第二选择电路215输出指示选择从LMAX VLC产生电路213输出的LMAX VLC的选择指令。
当接收到的第一模式信号和第二模式信号分别为“10”和“01”时,控制电路206f向第一选择电路205f输出指示选择从RMAX判断电路216f输出的组合(Last,选出的Run,Level绝对值)的选择指令。当随后检测到时钟信号时,控制电路206f向第二选择电路215输出指示选择从RMAX VLC产生电路212输出的RMAX VLC的选择指令。
当接收到的第一模式信号和第二模式信号均为“10”时,控制电路206f不会向第一选择电路205f输出选择指令。在检测到下一时钟信号时,控制电路206f向第二选择电路215输出指示从FLC产生电路211输出的信号的输出指令。
在向第二选择电路215输出根据图26确定的选择指令后,控制电路206f将指示新数据输出的数据输出指令输出到数据获得单元201。
(4)可变长度编码电路200f的工作周期下面参照图27所示的时序图描述可变长度编码电路200f的工作周期。
在图27中所示的时序图中,构成可变长度编码电路200f的电路名称按垂直方向排列,并且时间按水平方向标出。这个时序图示出了按照时间如何顺序处理数据段。
时钟信号451、452、453、和454以固定时间间隔,即在时刻T610、T620、T630和T640提供给数据获得单元201、控制电路206f和寄存器208。注意时钟信号之间的预定时间间隔称为时钟周期。
图27中的箭头表示在特定时刻由箭头起始点所指的电路执行的操作使在特定时刻由箭头终点所指的不同电路执行的操作开始。
在时刻T610,数据获得单元201检测到时钟信号451,并将其上存储的Sign值、Level值、Level绝对值、Run值和Last值输出到LMAX判断电路202f、RMAX判断电路216f和FLC产生电路211。这一输出持续到时刻T630。输出的Sign值、Level值、Level绝对值、Run值和Last值一起称为数据K。
在时刻T611,LMAX判断电路202f接收包括在数据K中的组合(Last,Run,Level绝对值)。LMAX判断电路202f判断要指定给包括在数据K中的组合(Last,Run,Level)的代码类型。LMAX判断电路202f产生第一模式信号和组合(Last,Run,选出的Level)作为判断结果。LMAX判断电路202f将产生的第一模式信号输出到控制电路206f,并将产生的组合(Last,Run,选出的Level)输出到第一选择电路205f。这一输出持续到时刻T631。
在时刻T611,RMAX判断电路216f也接收包括在数据K中的组合(Last,Run,Level绝对值)。RMAX判断电路216f判断要指定给包括在数据K中的组合(Last,Run,Level)的代码类型。RMAX判断电路216f产生第二模式信号和组合(Last,选出的Run,Level绝对值)作为判断结果。RMAX判断电路216f将产生的第二模式信号输出到控制电路206f,并将产生的组合(Last,选出的Run,Level绝对值)输出到第一选择电路205f。这一输出持续到时刻T631。
在时刻T612,控制电路206f接收第一模式信号和第二模式信号。控制电路206f向第一选择电路205f输出根据接收的第一和第二模式信号组合确定的选择指令。这一输出持续到时刻T632。注意当第一模式信号和第二模式信号均为“10”时控制电路206f不向第一选择电路205f输出选择指令。
在时刻T613,第一选择电路205f从控制电路206f接收选择指令。根据接收到的选择指令,第一选择电路205f选择由LMAX判断电路202f输出的组合(Last,Run,选出的Level)和由RMAX判断电路216f输出的组合(Last,选出的Run,Level绝对值)的其中之一,并向VLC检索单元207f输出选出的组合。该输出持续到时刻T633。
在时刻T614,VLC检索单元207f从第一选择电路205f接收从组合(Last,Run,选出的Level)和组合(Last,选出的Run,Level绝对值)中选出的一个。VLC检索单元207f在VLC表251中读取应于接收到的组合(Last,Run,选出的Level)和组合(Last,选出的Run,Level绝对值)其中之一的VLC。VLC检索单元207f将读取的VLC输出到寄存器208。该输出持续到时刻T634。
在时刻T615,FLC产生电路211接收包括在数据K中的组合(Last,Run,Level)。FLC产生电路211基于接收到的组合(Last,Run,Level)产生FLC,并将产生的FLC输出到第二选择电路215。这一输出持续到时刻T635。
在时刻T620,寄存器208检测到时钟信号452。寄存器208从VLC检索单元207f接收VLC,并在其上暂存接收到的VLC。然后,寄存器208将存储的VLC输出到常规VLC产生电路214、LMAX VLC产生电路213、以及RMAX VLC产生电路212。这一输出持续到时刻T640。
在时刻T622,常规VLC产生电路214、LMAX VLC产生电路213和RMAX VLC产生电路212从寄存器208接收VLC。常规VLC产生电路214、LMAX VLC产生电路213和RMAX VLC产生电路212使用接收到的VLC分别产生常规VLC、LMAXVLC和RMAX VLC,并将产生的常规VLC、LMAX VLC和RMAX VLC输出到第二选择电路215。这一输出持续到时刻T642。
在时刻T620,控制电路206f检测到时钟信号452,并向第二选择电路215输出根据第一模式信号和第二模式信号确定的选择指令。该输出持续到时刻T640。在将选择指令输出到第二选择电路215之后,控制电路206f在时刻T621将数据输出指令输出到数据获得单元201。这一输出持续到时刻T636。
在时刻T623,第二选择电路215从控制电路206f接收选择指令。根据接收到的选择指令,第二选择电路215选择常规VLC、LMAX VLC、RMAX VLC和FLC其中之一作为指定给组合(Last,Run,Level)的代码。然后第二选择电路215输出该选出的代码。这一输出持续到时刻T643。
在时刻T630,数据获得单元201检测到时钟信号453,并接收数据输出指令。因此,数据获得单元201将新的一组Sign值、Level值、Level绝对值、Run值和Last值输出到LMAX判断电路202f、RMAX判断电路216f以及FLC产生电路211。输出的Sign值、Level值、Level绝对值、Run值和Last值一起称为数据L。
可变长度编码电路200f中的数据获得单元201、LMAX判断电路202f、RMAX判断电路216f、…第二选择电路215对数据L执行与对数据K相同的过程。因此,可变长度编码电路200f在两个时钟周期内产生并输出对应于包括在数据L中的组合(Last,Run,Level)的代码。
5.2总结根据本发明第五实施方式的可变长度编码电路200f,LMAX判断电路202f和RMAX判断电路216f并行工作。控制电路206f基于从LMAX判断电路202f和RMAX判断电路216f接收到的第一模式信号和第二模式信号判断要指定给组合(Last,Run,Level)的代码类型,并基于该判断确定向第一选择电路205f和第二选择电路215f输出的选择指令。
由于LMAX判断电路202f和RMAX判断电路216f平行设置,可变长度编码电路200f可以在数据获得单元201和第二选择电路215之间获得较短路径。此外,当判断指定给组合(Last,Run,Level)的代码为FLC时,可变长度编码电路200f不向第一选择电路205f输出选择指令。这样,VLC检索单元207f不必执行不必要的操作,从而降低功耗。
5.3第五实施方式的变型实施例根据上述的第五实施方式,在LMAX VLC和RMAX VLC均可以指定给组合(Last,Run,Level)的情况,控制电路206f优先选择LMAX VLC。然而,该控制电路206f也可以优先选择RMAX VLC。
具体的说,当接收的第一模式信号和第二模式信号均为“01”时,该控制电路206f向第一选择电路205f输出指示选择从RMAX判断电路216f输出的组合(Last,选出的Run,Level绝对值)的选择指令,并向第二选择电路215输出指示选择从RMAX VLC产生电路212输出的RMAX的选择指令。
另外,用户可以通过键盘操作等确定LMAX VLC和RMAX VLC之间的优先级。
6.第六实施方式以下说明本发明第六实施方式的成像系统。
和第一实施方式的成像系统100相似,第六实施方式的成像系统100由光学系统、传感器、转换电路、图像处理电路、记录和发送系统105、回放系统、时序控制电路、以及系统控制电路构成。光学系统、传感器、转换电路、图像处理电路、记录和发送系统105、回放系统、时序控制电路、以及系统控制电路和第一实施方式一样,以下不作解释。
如图28所示,记录和发送系统105由信号产生单元810、缓冲器820、可变长度编码电路200g、缓冲器825构成。记录和发送系统105接收由图像处理电路产生的DCT系数,基于该接收的DCT系数产生可变长度代码,并存储该产生的可变长度代码。以下参考图28具体说明记录和发送系统105的构成。
6.1缓冲器820和825缓冲器820由RAM形成,并且其上暂存从信号产生单元810输出的信号。
缓冲器825由SRAM形成。并且其上暂存由可变长度编码电路200g产生的代码,并向诸如存储卡和重放系统的外部存储媒介输出该存储的代码。
6.2信号产生单元810信号产生单元810具有计算零DCT系数数目的计数器。
信号产生单元810以固定的时间间隔从时序控制电路接收时钟信号。和时钟信号的时序同步,信号产生单元810接收由图像处理电路产生的DCT系数。当接收到一个DCT系数时,信号产生单元810判断接收到的DCT系数值是否为0。如果接收到的DCT系数值为0,则信号产生单元810对计数器中的值加1。
如果接收到的DCT系数值不为0,该信号产生单元810判断接收到的DCT系数值是否为块中最后一个DCT系数。如果接收到的DCT系数是块中的最后一个DCT系数,则信号产生单元810产生为1的Last值。如果接收到的DCT系数值不是块中的最后一个DCT系数,信号产生单元810产生为0的Last值。这里,块为图像处理的单元,由8个像素和8条线形成。该图像处理电路在该块单元中执行量化操作以及DCT操作。
此后,信号产生单元810判断该接收的DCT系数为正值还是负值。在正值的情况,信号产生单元810产生为0的Sign值,并指定接收到的DCT系数值为Level值。同样,信号产生单元810将接收到的DCT系数值指定为Level绝对值。在负值的情况,信号产生单元810产生为1的Sign值,并指定接收到的DCT系数值为Level值。此外,信号产生单元810将接收的DCT系数绝对值指定为Level绝对值。
另外,信号产生单元810指定计数器中的值为Run值。随后,信号产生单元810将产生的Sign值、Last值、Run值、Level值以及Level绝对值写入缓冲器820。
6.3可变长度编码电路200g可变长度编码电路200g上存储有阈值n和阈值m。如果判断Run值小于和等于阈值n和m至少其中之一,可变长度编码电路200g判断要指定给组合(Last,Run,Level)的代码类型,并基于该判断结果产生代码。
如果判断的Run值超过阈值n和m二者,可变长度编码电路200g采用常规的方法产生指定给组合(Last,Run,Level)的代码。具体的说,可变长度编码电路200g试图读取对应于组合(Last,Run,Level绝对值)的VLC。如果存在相应的VLC,可变长度编码电路200g基于读取的VLC产生常规VLC。如果不存在相应的VLC,可变长度编码电路200g根据第一到第三换码模式顺序尝试代码产生操作。以下描述可变长度编码电路200g的代码产生操作,以及实现该代码产生操作的结构。
(可变长度编码电路200g的操作)下面参照图29所示的流程图描述可变长度编码电路200g的操作。
可变长度编码电路200g开始代码产生操作,同时将包括组合(Last,Run,Level)的数据输出到包含在可变长度编码电路200g中的电路(步骤S241)。然后,LMAX判断电路202g(后面描述)判断要指定给组合(Last,Run,Level)的代码类型(步骤S242)。与步骤S242并行,RMAX判断电路216g(后面描述)也判断要指定给组合(Last,Run,Level)的代码类型(步骤S249)。
在步骤S242,LMAX判断电路202g通过比较Run值和阈值n来确定是否判断要指定给组合(Last,Run,Level)的代码类型(步骤S243)。当Run值>n时(步骤S243否),LMAX判断电路202g不执行以下从步骤S244到步骤S247的操作。当Run值≤阈值n(步骤S243是),LMAX判断电路202g通过比较LMAX和Level绝对值判断要指定给组合(Last,Run,Level)的代码是否为常规VLC(步骤S244)。当判断代码不是常规VLC时(步骤S244否),LMAX判断电路202g计算New Level=Level绝对值-LMAX(步骤S246)。LMAX判断电路202g通过比较计算后的New Level和LMAX判断要指定给组合(Last,Run,Level)的代码是否为LMAX(步骤S247)。
在步骤S249,RMAX判断电路216g通过比较Run值和阈值m确定是否判断要指定给组合(Last,Run,Level)的代码类型(步骤S243)。当Run值>m时(步骤S251否),RMAX判断电路216g不执行以下从步骤S252到步骤S254的操作。
当Run值≤m(步骤S251是),RMAX判断电路216g通过比较RMAX和Run值判断指定给组合(Last,Run,Level)的代码是否为常规VLC(步骤S252)。当判断代码不是常规VLC时(步骤S252否),RMAX判断电路216g计算NewRun=Run值-(RMAX+1)(步骤S253)。RMAX判断电路216g通过比较计算后的New Run和RMAX判断要指定给组合(Last,Run,Level)的代码是否为RMAX(步骤S254)。
接着,可变长度编码电路200g通过基于步骤S242和步骤S249的判断结果选择指定给组合(Last,Run,Level)的代码类型(步骤S256)。
当选择常规VLC时,可变长度编码电路200g读取对应于组合(Last,Run,Level绝对值)的VLC(步骤S257)。可变长度编码电路200g基于该读取的VLC产生常规VLC(步骤S258),并将产生的常规VLC作为指定给组合(Last,Run,Level)的代码输出(步骤S264)。
当选择LMAX VLC时,可变长度编码电路200g读取对应于组合(Last,Run,New Level)的VLC(步骤S259)。可变长度编码电路200g基于该读取的VLC产生LMAX VLC(步骤S261),并将产生的LMAX VLC作为指定给组合(Last,Run,Level)的代码输出(步骤S264)。
当选择RMAX VLC时,可变长度编码电路200g读取对应于组合(Last,NewRun,Level绝对值)的VLC(步骤S262)。可变长度编码电路200g基于该读取的VLC产生RMAX VLC(步骤S263),并将产生的RMAX VLC作为指定给组合(Last,Run,Level)的代码输出(步骤S264)。
当基于通过LMAX判断电路202g和RMAX判断电路216g得到的判断结果不能判断选项时,可变长度编码电路200g试图从VLC表读取对应于组合(Last,Run,Level绝对值)VLC(步骤S266)。如果在VLC表中存在相应的VLC(步骤S267是),该可变长度编码电路200g执行下一步骤S258。
如果在VLC表中不存在相应的VLC(步骤S267否),可变长度编码电路200g计算New Level=Level绝对值-LMAX,并试图读取对应于组合(Last,Run,New Level)的VLC(步骤S268)。如果在VLC表中存在对应的VLC(步骤S269是),该可变长度编码电路200g接着执行步骤S261。
如果在VLC表中不存在相应的VLC(步骤S269否),可变长度编码电路200g计算New Run=Run值-(RMAX+1),并试图读取对应于组合(Last,NewRun,Level绝对值)的VLC(步骤S271)。如果在VLC表中存在相应的VLC(步骤S272是),该可变长度编码电路200g接着执行步骤S263。
如果在VLC表中不存在对应的VLC(步骤S272否),可变长度编码电路200g基于组合(Last,Run,Level)产生FLC(步骤S273),并将产生的FLC作为指定给组合(Last,Run,Level)的代码而输出(步骤S264)。
(可变长度编码电路200g的结构)如图30所示,可变长度编码电路200g由数据获得单元201g、LMAX判断电路202g、RMAX检索单元203、第二减法输出电路204g、第一选择电路205g、控制电路206g、VLC检索单元207、寄存器208、第一减法输出电路209、FLC产生电路211、RMAX VLC产生电路212、LMAX VLC产生电路213、常规VLC产生电路214、第二选择电路215和RMAX判断单元216g以及LMAX检索单元217构成。
RMAX检索单元203、VLC检索单元207、寄存器208、FLC产生电路211、RMAX VLC产生电路212、LMAX VLC产生电路213、常规VLC产生电路214、第二选择电路215和第一实施方式具有同样的结构并执行同样的操作。因此,这些结构在以下不作说明。LMAX检索单元217和第二实施方式一样。同样第二减法输出电路204g与第一实施方式的减法输出电路204一样,并且第一减法输出电路209与第二实施方式的减法输出电路204b一样。因此,以下对第一和第二减法输出电路209和204g不作解释。
(1)数据获得单元201g数据获得单元201g从时序控制电路以固定时间间隔接收时钟信号。而且,该数据获得单元201g从控制电路206g接收数据输出指令。
当检测到时钟信号并接收数据输出指令时,该数据获得单元201g从缓冲器820读取Sign值、Last值、Run值、Level值、以及Level绝对值。数据获得单元201g向LMAX判断电路202g、RMAX判断单元216g、LMAX检索单元217、第一减法输出电路209、RMAX检索单元203、第二减法输出电路204g、以及FLC产生电路211输出该读取的Sign值、Last值、Run值、Level值、以及Level绝对值。
(2)LMAX判断单元202g如图31A所示,LMAX判断单元202g由LMAX判断电路2026、比较电路405、固定值存储电路410构成。
(i)固定值存储电路410
该固定值存储电路410上存储有阈值n,该阈值n为在0≤n<63之间的预定整数。该阈值n由通过成像系统处理的图像数据的特性决定。
这里,在可变长度编码电路200g的制造过程中阈值n可以存储在固定值存储电路410中。另外,该阈值n可以在变长度编码电路200g完成后通过用户操作写入。
(ii)比较电路405比较电路405从数据获得单元201g接收Run值。当接收Run值时,比较电路405从固定值存储电路410读取阈值n。比较电路405对读取的阈值n和Run值进行比较,并向LMAX判断电路202G输出比较结果。
(iii)LMAX判断电路202G和第一实施方式的LMAX判断电路202相似,LMAX判断电路202G由LMAX检索单元、第一比较电路、减法电路、第二比较电路、选择电路、判断控制电路、以及输出电路构成。LMAX检索单元、第一比较电路、减法电路、第二比较电路、选择电路和输出电路分别执行和包括在LMAX判断电路202中的LMAX检索单元231、第一比较电路232、减法电路233、第二比较电路234、选择电路236和输出电路238一样的操作。
判断控制电路从比较电路405接收阈值n和Run值的比较结果。
和第一实施方式的判断控制电路237相似,当接收到的比较结果指示为Run值≤n时,判断控制电路基于从第一比较电路和第二比较电路接收的比较结果产生模式信号,并向选择电路和控制电路206g输出产生的模式信号。
当接收到的比较结果指示为Run值>n时,该判断控制电路忽略从第一比较电路和第二比较电路接收的比较结果,产生模式信号“10”并向选择电路和控制电路206g输出产生的模式信号“10”。为了更好的理解,从LMAX 202g输出的模式信号称为第一模式信号。
这里,第一模式信号为“00”表示要指定给组合(Last,Run,Level)的代码为常规VLC。第一模式信号为“01”表示可以产生LMAX VLC以指定给组合(Last,Run,Level)。第一模式信号为“10”表示由于LMAX判断单元202g没有判断指定给组合(Last,Run,Level)的代码类型,因此指定给组合(Last,Run,Level)的代码类型未知。
(3)RMAX判断单元216g
如图31B所示,RMAX判断单元216g由RMAX判断单元216G、比较电路415以及固定值存储电路420构成。
(i)固定值存储电路420该固定值存储电路420上存储有阈值m,该阈值m为在0≤n<63之间的预定整数。该阈值m由通过成像系统处理的图像数据的特性决定。
这里,在可变长度编码电路200g的制造过程中阈值m可以存储在固定值存储电路420中。另外,该阈值m可以在变长度编码电路200g完成后通过用户操作写入。
(ii)比较电路415比较电路415从数据获得单元201g接收Run值。当接收Run值时,比较电路415从固定值存储电路420读取阈值m。该比较电路415对读取的阈值m和Run值进行比较,并向RMAX判断电路216G输出比较结果。
(iii)RMAX判断电路216G和第二实施方式的RMAX判断电路216相似,RMAX判断电路216G由RMAX检索单元、第一比较电路、减法电路、第二比较电路、选择电路、判断控制电路、以及输出电路构成。该RMAX检索单元、第一比较电路、减法电路、第二比较电路、选择电路和输出电路分别执行和包括在RMAX判断电路216中的RMAX检索单元281、第一比较电路282、减法电路283、第二比较电路284、选择电路286和输出电路288一样的操作。因此,以下对这些结构不作说明。
判断控制电路从比较电路415接收阈值m和Run值的比较结果。
和第二实施方式的判断控制电路287相似,当接收到的比较结果指示为Run值≤m时,该判断控制电路基于从第一比较电路和第二比较电路接收的比较结果产生模式信号,并向选择电路和控制电路206g输出产生的模式信号。
当接收到的比较结果指示为Run值>m时,该判断控制电路忽略从从第一比较电路和第二比较电路接收的比较结果,产生模式信号“10”并向选择电路和控制电路206g输出该产生的模式信号“10”。为了更好的理解,从RMAX 216g输出的模式信号称为第二模式信号。
这里,第二模式信号为“00”表示要指定给组合(Last,Run,Level)的代码为常规VLC。第二模式信号为“01”表示可以产生RMAX VLC以指定给组合(Last,Run,Level)。第二模式信号为“10”表示由于RMAX判断单元216g没有判断指定给组合(Last,Run,Level)的代码类型,因此要指定给组合(Last,Run,Level)的代码类型未知。
(4)第一选择电路205g第一选择电路205g从LMAX判断电路202g接收组合(Last,Run,选出的Level),并从RMAX判断电路216g接收组合(Last,选出的Run,Level绝对值),从第一减法输出电路209接收组合(Last,Run,New Level),从第二减法输出电路204g接收组合(Last,New Run,Level绝对值)。而且,第一选择电路205g从控制电路206g接收指示选择组合(Last,Run,选出的Level)、组合(Last,选出的Run,Level绝对值)、组合(Last,Run,NewLevel)以及组合(Last,New Run,Level绝对值)其中之一的选择指令。
当接收到选择指令时,基于接收到的选择指令,第一选择电路205g选择组合(Last,Run,选出的Level)、组合(Last,选出的Run,Level绝对值)、组合(Last,Run,New Level)以及组合(Last,New Run,Level绝对值)其中之一,并向VLC检索单元207输出选出的组合。
(5)控制电路206g控制电路206g上存储有诸如选择指令和数据输出指令的许多指令。
控制电路206g以固定时间间隔从时序控制电路接收时钟信号。此外,控制电路206g从LMAX判断单元202g接收第一模式信号,并且从RMAX判断单元216g接收第二模式信号。而且,控制电路206g从VLC检索单元207接收OK信号或者VLC错误信号。
控制电路206g输出按照图32所示的第一和第二模式信号的组合所决定的选择指令。
图32示出了按照第一和第二模式信号的组合决定的从控制电路206g向第一选择电路205g和第二选择电路215输出的选择指令。在图32中的选择指令(第一选择电路)部分中的“LMAX”表示输出到第一选择电路205g的选择指令指示选择从LMAX判断单元202g输出的组合(Last,Run,选出的Level)。“RMAX”表示输出到第一选择电路205g的选择指令指示选择从RMAX判断单元216g输出的组合(Last,选出的Run,Level绝对值)。
选择指令(第二选择电路)部分中的字母“N”表示输出到第二选择电路215的选择指令指示选择从常规VLC产生电路214输出的常规VLC。字母“L”表示输出到第二选择电路215的选择指令指示选择从LMAX VLC产生电路213输出的LMAX VLC。字母“R”表示输出到第二选择电路215的选择指令指示选择从RMAX VLC产生电路212输出的RMAX VLC。
下面参照图32描述控制电路206g的工作。
(i)第一模式信号为“00”并且第二模式信号为“00”或者“10”当第一和第二模式信号均为“00”时,并且当第一模式信号为“00”而第二模式信号为“10”时,控制电路206g向第一选择电路205g输出表示选择从LMAX判断单元202g输出的组合(Last,Run,选出的Level)的选择指令。之后,控制电路206g从VLC检索单元207接收表示成功读取VLC的OK信号。
当在接收到OK信号后检测到时钟信号时,控制电路206g向第二选择电路215输出表示选择从常规VLC产生电路214输出的常规VLC的选择指令。
之后,控制电路206g向数据获得单元201g输出请求输出新数据的数据输出指令。
(ii)第一模式信号为“01”并且第二模式信号为“01”或者“10”当第一和第二模式信号均为“01”,并且当第一模式信号为“01”而第二模式信号为“10”时,控制电路206g向第一选择电路205g输出表示选择从LMAX判断单元202g输出的组合(Last,Run,选出的Level)的选择指令。之后,控制电路206g从VLC检索单元207接收表示成功读取VLC的OK信号。
当在接收到OK信号后检测到时钟信号时,控制电路206g向第二选择电路215输出表示选择从LMAX VLC产生电路213输出的LMAX VLC的选择指令。
之后,控制电路206g向数据获得单元201g输出数据输出指令。
(iii)第一模式信号为“10”并且第二模式信号为“00”当第一模式信号为“10”而第二模式信号为“00”时,控制电路206g向第一选择电路205g输出表示选择从RMAX判断单元216g输出的组合(Last,选出的Run,Level绝对值)的选择指令。之后,控制电路206g从VLC检索单元207接收表示成功读取VLC的OK信号。
当接收到OK信号后检测到时钟信号时,控制电路206g向第二选择电路215输出表示选择从常规VLC产生电路214输出的常规VLC的选择指令。
之后,控制电路206g向数据获得单元201g输出数据输出指令。
(iv)第一模式信号为“10”并且第二模式信号为“01”
当第一模式信号为“10”而第二模式信号为“01”时,控制电路206g向第一选择电路205g输出表示选择从RMAX判断单元216g输出的组合(Last,选出的Run,Level绝对值)的选择指令。之后,控制电路206g从VLC检索单元207接收表示成功读取VLC的OK信号。
当接收到OK信号后检测到时钟信号时,控制电路206g向第二选择电路215输出表示选择从RMAX VLC产生电路212输出的RMAX VLC的选择指令。
之后,控制电路206g向数据获得单元201g输出数据输出指令。
(v)第一模式信号为“10”并且第二模式信号为“10”当第一和第二模式信号均为“10”时,控制电路206g向第一选择电路205g输出表示选择从LMAX VLC判断单元202g输出的组合(Last,Run,选出的Level)的选择指令。之后,控制电路206g从VLC检索单元207接收表示成功读取VLC的OK信号,或者表示没有相应VLC的VLC错误信号。
当接收到OK信号时,控制电路206g向第二选择电路215输出表示选择从常规VLC产生电路214输出的常规VLC的选择指令。之后,控制电路206g向数据获得单元201g输出数据输出指令。
当接收到VLC错误信号时,控制电路206g进行控制以使得可变长度编码电路200g根据如下部分(v-1)所描述的第一换码模式执行操作。
(v-1)第一换码模式当接收到VLC错误信号时,控制电路206g进行控制以使得可变长度编码电路206g按照第一换码模式进行代码产生操作。具体的,控制电路206g向第一选择电路205g输出表示选择从第一减法输出电路209输出的组合(Last,Run,New Level)的选择指令。
之后,控制电路206g从VLC检索单元207接收OK信号或者VLC错误信号。当接收到OK信号时,与检测新的时钟信号同步,控制电路206g向第二选择电路215输出表示选择从LMAX VLC产生电路213输出的LMAX VLC的选择指令。之后,控制电路206g向数据获得单元201g输出数据输出指令。
当从VLC检索单元207接收VLC错误信号时,控制电路206g进行控制以使得可变长度编码电路200g按照如下部分(v-2)描述的第二换码模式执行代码产生操作。
(v-2)第二换码模式当按照第一换码模式在代码产生操作中接收到VLC错误信号时,控制电路206g进行控制以使得可变长度编码电路200g按照第二换码模式执行代码产生操作。具体的,与检测新的时钟信号同步,控制电路206g向第一选择电路205g输出表示选择从第二减法输出电路204g输出的组合(Last,New Run,Level绝对值)的选择指令。之后,控制电路206g从VLC检索单元207接收OK信号或者VLC错误信号。
当接收到OK信号时,与检测新的时钟信号同步,控制电路206g向第二选择电路215输出表示选择从RMAX VLC产生电路212输出的RMAX VLC的选择指令。之后,控制电路206g向数据获得单元201g输出数据输出指令。
当从VLC检索单元207接收到VLC错误信号时,控制电路206g进行控制以使得可变长度编码电路200g按照下述部分(v-3)描述的第三换码模式执行代码产生操作。
(v-3)第三换码模式当按照第二换码模式在代码产生操作中接收到VLC错误信号时,控制电路206g进行控制以使得可变长度编码电路200g按照第三换码模式进行代码产生操作。具体的,与检测新的时钟信号同步,控制电路206g向第二选择电路215输出表示选择从FLC产生电路211输出的FLC的选择指令。
之后,控制电路206g向数据获得单元201g输出数据输出指令。
(6)可变长度编码电路200g的工作周期下面参照图33所示的时序图描述可变长度编码电路200g的工作周期。
在图33所示的时序图中,构成可变长度编码电路200g的电路名称按垂直方向排列,而时间按水平方向绘制。该时序图表示出了按照时间如何顺序处理数据段。
以固定时间间隔,即,在时刻T710、T720、T730、…、T780向数据获得单元201g、控制电路206g和寄存器208提供时钟信号461、462、463、…、467。注意,时钟信号之间的预定时间间隔是指时钟周期。
图33中的箭头表示在特定时刻由箭头起始点所指的电路执行的操作使在特定时刻由箭头终点所指的不同电路执行的操作开始。
在时刻T710,数据获得单元201g检测到时钟信号461,并且从缓冲器820读取Sign值、Level值、Level绝对值、Run值和Last值。数据获得单元201g将读取的Sign值、Level值、Level绝对值、Run值和Last值输出到LMAX判断单元202g、RMAX判断单元216g、LMAX检索单元217、第一减法输出电路209、RMAX检索单元203、第二减法输出电路204g和FLC产生电路211。该输出一直持续到时刻T730。将输出的Sign值、Level值、Level绝对值、Run值和Last值和称为数据M。这里,假设包括在数据M中的Run值满足下面的条件Run值≤n并且Run值≤m,并且要指定给组合(Last,Run,Level)的代码不是FLC。
在时刻T711,LMAX判断单元202g接收包括在数据M中的组合(Last,Run,Level绝对值)。由于Run值≤n,LMAX判断单元202g判断要指定给组合(Last,Run,Level)的代码类型。作为判断结果,LMAX判断单元202g产生第一模式信号和组合(Last,Run,选出的Level)。LMAX判断单元202g向控制电路206g输出产生的第一模式信号,并且向第一选择电路205g输出产生的组合(Last,Run,选出的Level)。该输出一直持续到时刻T731。
在时刻T711,RMAX判断单元216g接收包括在数据M中的组合(Last,Run,Level绝对值)。由于Run值≤m,RMAX判断单元216g判断要指定给组合(Last,Run,Level)的代码类型。作为判断结果,RMAX判断单元216g产生第二模式信号和组合(Last,选出的Run,Level绝对值)。RMAX判断单元216g向控制电路206g输出产生的第二模式信号,并且向第一选择电路205g输出产生的组合(Last,选出的Run,Level绝对值)。该输出一直持续到时刻T731。
由于要指定给包括在数据M中的组合(Last,Run,Level)的代码不是FLC,因此,第一和第二模式信号的至少其中之一为非“10”值。
在时刻T712,控制电路206g接收第一和第二模式信号,并且按照接收到的第一和第二模式信号向第一选择电路205g输出选择指令。该输出一直持续到时刻T732。
在时刻T715,LMAX检索单元217从数据获得单元201g接收包括在数据M中的Last值、Run值以及Level绝对值。LMAX检索单元217读取与接收到的Last值和Run值的对相对应的LMAX,并且将读取的LMAX以及Last和Run值输出到第一减法输出电路209。该输出一直持续到时刻T735。
在时刻T716,第一减法输出电路209从LMAX检索单元217接收LMAX、Last值和Run值,从数据获得单元207接收Level绝对值,并且计算New Level=Level绝对值-LMAX。之后,第一减法输出电路209向第一选择电路205g输出组合(Last,Run,New Level)。该输出一直持续到时刻T736。
在时刻T717,RMAX检索单元203从数据获得单元201g接收包括在数据M中的Last值、Run值和Level绝对值。RMAX检索单元203读取与接收到的Last值和Level绝对值的对相对应的RMAX,并且将读取的RMAX以及Last值和Level绝对值输出到第二减法输出电路204g。该输出一直持续到时刻T737。
在时刻T718,第二减法输出电路204g从RMAX检索单元203接收RMAX、Last值以及Level绝对值,从数据获得单元201g接收Run值,并且计算New Run=Run值-(RMAX+1)。之后,第二减法输出电路204g向第一选择电路205g输出组合(Last,New Run,Level绝对值)。该输出一直持续到时刻T738。
在时刻T713,第一选择电路205g从控制电路206g接收选择指令。按照接收到的选择指令,第一选择电路205g选择组合(Last,Run,选出的Level)、组合(Last,选出的Run,Level绝对值)、组合(Last,Run,New Level)以及组合(Last,New Run,Level绝对值)其中之一,并且向VLC检索单元207输出选出的组合。该输出一直持续到时刻T733。
在时刻T714,VLC检索单元207从第一选择电路205g接收组合(Last,Run,选出的Level)、组合(Last,选出的Run,Level绝对值)、组合(Last,Run,New Level)以及组合(Last,New Run,Level绝对值)其中之一。VLC检索单元207从VLC表251读取与接收到的组合相对应的VLC,并且向寄存器208输出读取的VLC。该输出一直持续到时刻T734。
在时刻T719,FLC产生电路211从数据获得单元201g接收包括在数据M中的组合(Last,Run,Level)。基于接收到的组合(Last,Run,Level),FLC产生电路211产生FLC,并且将产生的FLC输出到第二选择电路215。该输出一直持续到时刻T739。
在时刻T720,寄存器208检测到时钟信号462、从VLC检索单元207接收VLC,并且在其上暂存接收到的VLC。然后,寄存器208将存储的VLC输出到常规VLC产生电路214、LMAX VLC产生电路213以及RMAX VLC产生电路212。该输出一直持续到时刻T770。
在时刻T722,常规VLC产生电路214、LMAX VLC产生电路213以及RMAX VLC产生电路212从寄存器208接收VLC。常规VLC产生电路214、LMAX VLC产生电路213以及RMAX VLC产生电路212使用接收到的VLC分别产生常规VLC、LMAX VLC以及RMAX VLC,并且向第二选择电路215输出产生的常规VLC、LMAXVLC以及RMAX VLC。该输出一直持续到时刻T772。
在时刻T720,控制电路206g检测到时钟信号462,并且向第二选择电路215输出基于第一和第二模式信号决定的选择指令。该输出一直持续到时刻T770。
在向第二选择电路215输出选择指令后,控制电路206g在时刻T721向数据获得单元201g输出数据输出指令。该输出一直持续到时刻T741。
在时刻T723,第二选择电路215从控制电路206g接收选择指令。按照接收到的选择指令,第二选择电路215选择常规VLC、LMAX VLC、RMAX VLC以及FLC其中之一,并且向缓冲器825输出所选出的代码。该输出一直持续到时刻T773。
在时刻T730,数据获得单元201g检测到时钟信号463,并且从控制电路206g接收数据输出指令。当接收到数据输出指令时,数据获得单元201g从缓冲器820读取下一组Sign值、Last值、Run值、Level值以及Level绝对值。数据获得单元201g输出读取的Sign值、Last值、Run值、Level值以及Level绝对值。该输出一直持续到时刻T780。将输出的Sign值、Last值、Run值、Level值以及Level绝对值一起称为数据N。这里,假设包括在数据N中的Run值大于阈值n和m,并且指定给包括在数据N中的组合(Last,Run,Level)的代码为RMAX VLC。
在时刻T731,LMAX判断单元202g接收包括在数据N中的组合(Last,Run,Level绝对值)。由于Run值>n,LMAX判断单元202g不判断要指定给组合(Last,Run,Level)的代码类型。之后,LMAX判断单元202g将Level绝对值指定为选出的Level,并且产生第一模式信号“10”和组合(Last,Run,选出的Level)。LMAX判断单元202g向控制电路206g输出产生的第一模式信号“10”,并且向第一选择电路205g输出产生的组合(Last,Run,选出的Level)。该输出一直持续到时刻T781。
在时刻T731,RMAX判断单元216g接收包括在数据N中的组合(Last,Run,Level绝对值)。由于Run值>m,RMAX判断单元216g不判断要指定给组合(Last,Run,Level)的代码类型。之后,RMAX判断单元216g将接收到的Run值指定为选出的Run,并且产生第二模式信号“10”和组合(Last,选出的Run,Level绝对值)。RMAX判断单元216g向控制电路206g输出产生的第二模式信号,并且向第一选择电路205g输出产生的组合(Last,选出的Run,Level绝对值)。该输出一直持续到时刻T781。
在时刻T732,控制电路206g接收均为“10”的第一和第二模式信号,并且向第一选择电路205g输出按照接收到的第一和第二模式信号决定的选择指令。该输出一直持续到时刻T750。该选择指令表示选择从LMAX判断单元202g输出的组合(Last,Run,选出的Level)。
在时刻T735,LMAX检索单元217从数据获得单元201g接收包括在数据N中的Last值、Run值以及Level绝对值。LMAX检索单元217读取与接收到的Last值和Run值的对相对应的LMAX,并且向第一减法输出电路209输出读取的LMAX、Last值以及Run值。该输出一直持续到时刻T785。
在时刻T736,第一减法输出电路209从LMAX检索单元217接收LMAX、Last值和Run值,从数据获得单元201g接收Level绝对值,并且计算New Level=Level绝对值-LMAX。之后,第一减法输出电路209向第一选择电路205g输出组合(Last,Run,New Level)。该输出一直持续到时刻T786。
在时刻T737,RMAX检索单元203从数据获得单元201g接收包括在数据N中的Last值、Run值以及Level绝对值。RMAX检索单元203读取与接收到的Last和Level绝对值的对相对应的RMAX,并且向第二减法输出电路204g输出读取的RMAX、Last值以及Level绝对值。该输出一直持续到时刻T787。
在时刻T738,第二减法输出电路204g从RMAX检索单元203接收RMAX、Last值以及Level绝对值,从数据获得单元201g接收Run值,并且计算New Run=Run值-(RMAX+1)。之后,第二减法输出电路204g向第一选择电路205g输出组合(Last,New Run,Level绝对值)。该输出一直持续到时刻T788。
在时刻T733,第一选择电路205g从控制电路206g接收选择指令。按照接收到的选择指令,第一选择电路205g从组合(Last,Run,选出的Level)、组合(Last,选出的Run,Level绝对值)、组合(Last,Run,New Level)和组合(Last,New Run,Level绝对值)中选择组合(Last,Run,选出的Level),并且向VLC检索单元207输出选出的组合(Last,Run,选出的Level)。该输出一直持续到时刻T751。
在时刻T734,VLC检索单元207从第一选择电路205g接收组合(Last,Run,选出的Level)。VLC检索单元207试图从VLC表251中读取与接收到的组合(Last,Run,选出的Level)相对应的VLC。由于数据N的上述条件,在VLC表251中不存在相对应的VLC。因此,VLC检索单元207向控制电路206g和寄存器208输出VLC错误信号。该输出一直持续到时刻T752。
在时刻T739,FLC产生电路211从数据获得单元201g接收包括在数据N中的组合(Last,Run,Level)。基于接收到的组合(Last,Run,Level),FLC产生电路211产生FLC,并且向第二选择电路215输出产生的FLC。该输出一直持续到时刻T789。
在时刻T750,控制电路206g检测到时钟信号464,并且从VLC检索单元207接收VLC错误信号。当接收到时钟信号464和VLC错误信号时,控制电路206g向第一选择电路205g输出表示选择从第一减法输出电路209输出的组合(Last,Run,New Level)的选择指令。该输出一直持续到时刻T760。
在时刻T751,第一选择电路205g从控制电路206g接收选择指令。按照接收到的选择指令,第一选择电路205g向VLC检索单元207输出从第一减法输出电路209输出的组合(Last,Run,New Level)。该输出一直持续到时刻T761。
在时刻T752,VLC检索单元207从第一选择电路205g接收组合(Last,Run,New Level)。VLC检索单元207试图从VLC表251中读取与接收到的组合(Last,Run,New Level)相对应的VLC。由于数据N的上述条件,在VLC表251中没有相对应的VLC。因此,VLC检索单元207向控制电路206g和寄存器208输出VLC错误信号。该输出一直持续到时刻T762。
在时刻T760,控制电路206g检测到时钟信号465,并且从VLC检索单元207接收VLC错误信号。当接收到时钟信号465和VLC错误信号时,控制电路206g向第一选择电路205g输出表示选择从第二减法输出电路204g输出的组合(Last,New Run,Level绝对值)的选择指令。该输出一直持续到时刻T782。
在时刻T761,第一选择电路205g从控制电路206g接收选择指令。按照接收到的选择指令,第一选择电路205g向VLC检索单元207输出从第二减法输出电路204g输出的组合(Last,New Run,Level绝对值)。该输出一直持续到时刻T783。
在时刻T762,VLC检索单元207从第一选择电路205g接收组合(Last,New Run,Level绝对值)。VLC检索单元207从VLC表251中读取与接收到的组合(Last,New Run,Level绝对值)相对应的VLC。VLC检索单元207向寄存器208输出读取的VLC,并且向控制电路206g输出表示成功读取VLC的OK信号。该输出一直持续到时刻T784。
在时刻T770,寄存器208检测到时钟信号466,并且从VLC检索单元207接收VLC。寄存器208在其上暂存接收到的VLC。之后,寄存器208向常规VLC产生电路214、LMAX VLC产生电路213以及RMAX VLC产生电路212连续输出存储的VLC。
在时刻T772,常规VLC产生电路214、LMAX VLC产生电路213以及RMAX VLC产生电路212从寄存器208接收VLC。常规VLC产生电路214、LMAX VLC产生电路213以及RMAX VLC产生电路212使用接收到的VLC分别产生常规VLC、LMAX VLC和RMAX VLC,并且将产生的常规VLC、LMAX VLC和RMAX VLC输出到第二选择电路215。该输出一直持续到接收下一VLC。
在时刻T770,控制电路206g检测到时钟信号466,并且从VLC检索单元207接收OK信号。之后,控制电路206g向第二选择电路215连续输出表示RMAXVLC产生电路212的选择指令。在向第二选择电路215输出选择指令后,在时刻T771,控制电路206g向数据获得单元201g输出请求输出新数据的数据输出指令。该输出一直持续到时刻T791。
在时刻T780,数据获得单元201g检测到时钟信号467,并且接收数据输出指令。当接收到数据输出指令时,数据获得单元201g从缓冲器820读取下一组Sgin值、Last值、Run值、Level值以及Level绝对值。数据获得单元201g输出读取的Sgin值、Last值、Run值、Level值以及Level绝对值。将输出的Sgin值、Last值、Run值、Level值以及Level绝对值一起称为数据P。
如果包括在数据P中的Run值满足Run值≤n并且Run值≤m的条件,并且要指定给包括在数据P中的组合(Last,Run,Level)的代码类型不是FLC,则可变长度编码电路200g对数据P执行与对数据M相同的操作,以在两个时钟周期内产生并且输出代码。
如果要指定给包括在数据P中的组合(Last,Run,Level)的代码类型为FLC,或者如果Run值>n并且Run值>m,则可变长度编码电路200g按照下面的顺序搜索VLC表251对应于组合(Last,Run,Level绝对值)的VLC、对应于组合(Last,Run,New Level)的VLC以及对应于组合(Last,New Run,Level绝对值)的VLC。这是对于数据N执行的程序。在这种情况下,可变长度编码电路200g在两个到四个时钟周期内产生并且输出代码。
6.4总结按照第六实施方式的成像系统中的记录和发送系统105,信号产生单元810逐时钟信号连续接收一个DCT系数。如果接收到的DCT系数具有零值,则信号产生单元810对连续为零的DCT系数的数目加一。如果接收到的DCT系数具有非零值,则信号产生单元810产生并且向缓冲器820写入Sign值、Last值、Run值、Level值以及Level绝对值。
可变长度编码电路200g中的数据获得单元201g从缓冲器820中逐一读取一组Sign值、Last值、Run值、Level值以及Level绝对值,并且将读取的该组值输出到可变长度编码电路200g的组成部分。
可变长度编码电路200g上存储有阈值n和阈值m。如果Run值≤n或者Run值≤m,则可变长度编码电路200g判断要指定给从数据获得单元201g输出的组合(Last,Run,Level)的代码类型。基于判断的结果,可变长度编码电路200g在两个时钟周期内产生并且输出代码。
如果Run值>n并且Run值>m,则可变长度编码电路200g不判断代码的类型。而是,可变长度编码电路200g试图按照传统方法读取与组合(Last,Run,Level绝对值)相对应的VLC。如果在VLC表251中存在相应的VLC,则可变长度编码电路200g基于读取的VLC产生并且输出常规VLC。如果在VLC表251中不存在相应的VLC,则可变长度编码电路200g按照第一到第三换码模式的顺序试着执行代码产生操作。在这种情况下,需要花费两个(最短)到四个(最长)时钟周期来产生代码。
如上所述,Run值表示连续为零的DCT系数的数目。因此,Run值越大,产生一组Sign值、Last值、Run值、Level值以及Level绝对值所需的时间就越长。
按照第六实施方式,可变长度编码电路200g产生代码所需的平均时间在Run值大于阈值n和m的情况下比较长,而在Run值小于阈值n和m之一的情况下比较短。基于此,通过适当地确定阈值n和m,可以在信号产生单元810产生数据所需的时间和可变长度编码电路200g产生代码所需的时间之间获得较好的平衡。
如上所述,LMAX判断单元202g只有在Run值等于或者小于阈值n时才判断要指定给组合(Last,Run,Level)的代码类型。这意味着,LMAX判断电路202G中的LMAX检索单元只需存储包括在LMAX表261中的多条LMAX信息中具有等于或者小于阈值n的Run的LMAX信息条。这样,可以实现具有更小电路规模的LMAX检测单元。
6.5第六实施方式的变型实施例按照上述的可变长度编码电路200g,LMAX判断单元202g对Run值和阈值n进行比较,并且RMAX判断单元216g对Run值和阈值m进行比较。
在第六实施方式中,当Run值>n时,LMAX判断单元202g无条件地输出第一模式信号“10”。尽管Run值≤n,但是在从LMAX判断电路202G中的第一比较电路输出的比较结果为LMAX<Level绝对值,并且在从LMAX判断电路202G中的第二比较电路输出的比较结果为LMAX<New Level的情况下,LMAX判断单元202g输出第一模式信号为“10”。然而,当Run值>n时,LMAX判断单元202g可以输出第一模式信号为“11”。
按照这种方式,第一模式信号为“10”表示要指定给组合(Last,Run,Level)的代码既不是常规VLC也不是LMAX VLC,并且由于LMAX判断单元202g不判断要指定给组合(Last,Run,Level)的代码类型,所以第一模式信号为“11”表示要指定给组合(Last,Run,Level)的代码类型不确定。
在第六实施方式中,当Run值>m时,RMAX判断单元216g无条件地输出第二模式信号“10”。尽管Run值≤m,但是在从RMAX判断电路216G中的第一比较电路输出的比较结果为RMAX<Run值,并且在从RMAX判断电路216G中的第二比较电路输出的比较结果为RMAX<New Run的情况下,RMAX判断单元216g输出第二模式信号为“10”。然而,当Run值>m时,RMAX判断单元216g可以输出第二模式信号为“11”。
按照这种方式,第二模式信号为“10”表示要指定给组合(Last,Run,Level)的代码既不是常规VLC也不是RMAX VLC,并且由于RMAX判断单元216g不判断要指定给组合(Last,Run,Level)的代码类型,因此第二模式信号为“11”表示要指定给组合(Last,Run,Level)的代码类型不确定。
(1)控制电路206g在上述可选结构中,控制电路206g向第一选择电路205g和第二选择电路215输出基于图34所示的第一模式信号和第二模式信号所确定的选择指令。
图34示出了从控制电路206g向第一选择电路205g和第二选择电路215输出的根据第一和第二模式信号的组合确定的选择指令。在图34的选择指令(第一选择电路)部分中的“LMAX”表示输出到第一选择电路205g的选择指令指示选择从LMAX判断单元202g输出的组合(Last,Run,选出的Level)。“RMAX”表示输出到第一选择电路205g的选择指令指示选择从RMAX判断单元216g输出的组合(Last,选出的Run,Level绝对值)。
选择指令(第二选择电路)部分中的字母“N”表示输出到第二选择电路215的选择指令指示选择从常规VLC产生电路214输出的常规VLC。字母“L”表示输出到第二选择电路215的选择指令指示选择从LMAX VLC产生电路213输出的LMAX VLC。字母“R”表示输出到第二选择电路215的选择指令指示选择从RMAX VLC产生电路212输出的RMAX VLC。字母“F”表示输出到第二选择电路215的选择指令指示选择从FLC产生电路211输出的FLC。
考虑到VLC表251、LMAX表261和RMAX表266的结构,不存在第一模式信号为“00”,而第二模式信号为“01”或者“10”的情况。而且,不存在第一模式信号为“01”,而第二模式信号为“00”的情况,并且不存在第一模式信号为“10”,而第二模式信号为“00”的情况。
下面参照图34描述控制电路206g的工作。
(i)在第一模式信号为“00”而第二模式信号为“00”或者“11”时,控制电路206g向第一选择电路205g输出表示选择从LMAX判断单元202g输出的组合(Last,Run,选出的Level)的选择指令。之后,控制电路206g从VLC检索单元207接收表示成功读取VLC的OK信号。
当接收OK信号之后检测到时钟信号时,控制电路206g向第二选择电路215输出表示选择从常规VLC产生电路214输出的常规VLC的选择指令。
之后,控制电路206g向数据获得单元201g输出请求输出新数据的数据输出指令。
(ii)在第一模式信号为“01”,而第二模式信号为“01”、“10”或者“11”的情况下,控制电路206g向第一选择电路205g输出表示选择从LMAX判断单元202g输出的组合(Last,Run,选出的Level)的选择指令。之后,控制电路206g从VLC检索单元207接收表示成功读取VLC的OK信号。
当在接收OK信号之后检测到时钟信号时,控制电路206g向第二选择电路215输出表示选择从LMAX VLC产生电路213输出的LMAX VLC的选择指令。
之后,控制电路206g向数据获得单元201g输出数据输出指令。
(iii)在第一模式信号为“10”或者“11”,而第二模式信号为“01”的情况下,控制电路206g向第一选择电路205g输出表示选择从RMAX判断单元216g输出的组合(Last,选出的Run,Level绝对值)的选择指令。之后,控制电路206g从VLC检索单元207接收表示成功读取VLC的OK信号。
当在接收OK信号之后检测到时钟信号时,控制电路206g向第二选择电路215输出表示选择从RMAX VLC产生电路212输出的RMAX VLC的选择指令。
之后,控制电路206g向数据获得单元201g输出数据输出指令。
(iv)在第一和第二模式信号均为“10”的情况下,控制电路206g决定不向第一选择电路205g输出选择指令。之后,控制电路206g从时序控制电路接收新的时钟信号。当接收到新的时钟信号时,控制电路206g向第二选择电路215输出表示选择从FLC产生电路输出的FLC的选择指令。之后,控制电路206g向数据获得单元201g输出数据输出指令。
(v)在第一模式信号为“10”,而第二模式信号为“11”的情况下,以及第一模式信号为“11”,而第二模式信号为“10”或者“11”的情况下,控制电路206g执行在6.3(5)的部分(v)描述的操作。
(vi)在第一模式信号为“11”,而第二模式信号为“00”的情况下,控制电路206g向第一选择电路205g输出表示选择从RMAX判断单元216g输出的组合(Last,选出的Run,Level绝对值)的选择指令。之后,控制电路206g从VLC检索单元207接收表示成功读取VLC的OK信号。
当在接收OK信号后检测到时钟信号时,控制电路206g向第二选择电路215输出表示选择从常规VLC产生电路214输出的常规VLC的选择指令。
之后,控制电路206g向数据获得单元201g输出数据输出指令。
(2)总结按照上述的可选结构,当Run值≤n或者Run值≤m时,可变长度编码电路200g判断要指定给组合(Last,Run,Level)的代码是否为常规VLC、LMAXVLC、RMAX VLC或者FLC,并且从而在两个时钟周期内产生代码。换句话说,本变型实施例不同于第六实施方式,这是因为,只要Run值≤n或者Run值≤m,要指定给组合(Last,Run,Level)的代码即便是FLC,也可以在两个时钟周期内产生。
按照变型实施例,只有在Run值既大于阈值n又大于阈值m时,产生代码需要长的时间周期。因此,本变型实施例可以更有效地控制信号产生单元810产生数据所需的时间周期以及可变长度编码电路200g产生代码所需的时间周期之间的平衡。
此外,当要指定给组合(Last,Run,Level)的代码判断为FLC时,控制电路206g不向第一选择电路205g输出选择指令,并且简单地指示第二选择电路215选择FLC。该结构能够缩短产生FLC所需的时间周期并且减少能耗。
7、第七实施方式下面描述本发明第七实施方式的成像系统。
与第一实施方式的成像系统100相似,第七实施方式的成像系统由光学系统、传感器、转换电路、图像处理电路、记录和发送系统、回放系统、时序控制电路以及系统控制电路组成。第七实施方式除了包括在记录和发送系统中的可变长度编码电路外,与第六实施方式相同。因此,下面只描述作为第七实施方式特征的可变长度编码电路。
7.1可变长度编码电路可变长度编码电路上除了存储有第六实施方式中所述的阈值n和m外,还存储有与Level绝对值相关的阈值K。当Level绝对值超过阈值K时,可变长度编码电路跳过对Run值与阈值n和m的比较,以及对要指定给组合(Last,Run,Level)的代码类型的判断。另外,可变长度编码电路基于组合(Last,Run,Level)产生FLC并且将产生的FLC作为指定给组合(Last,Run,Level)的代码输出。下面描述可变长度编码电路的代码产生操作,以及实现代码产生功能的结构。
(可变长度编码电路的工作)下面参照图35所示的流程图描述第七实施方式的可变长度编码电路的工作。
可变长度编码电路开始代码产生操作,同时将包括在可变长度编码电路中的电路输出到包括组合(Last,Run,Level)的数据(步骤S281)。然后,可变长度编码电路中的LMAX判断单元(后面将要描述)判断要指定给组合(Last,Run,Level)的代码类型(步骤S282)。与步骤S282并行,可变长度编码电路中的RMAX判断单元(后面将要描述)也判断要指定给组合(Last,Run,Level)的代码类型(步骤S291)。
在步骤S282,LMAX判断单元首先对Level绝对值和阈值K进行比较,以判断是否跳过从步骤S284开始的程序并且执行产生FLC(步骤S283)。当Level绝对值大于K时(步骤S283否),LMAX判断单元不判断代码类型,并且可变长度编码电路忽略由RMAX判断单元进行的判断结果,以执行步骤S313。当Level绝对值≤K时(步骤S283是),LMAX判断单元对Run值和阈值n进行比较,以决定是否判断代码类型(步骤S284)。当Run值>n时(步骤S284否),LMAX判断单元不判断代码类型。当Run值≤n时(步骤S284是),LMAX判断单元通过对LMAX和Level绝对值进行比较来判断要指定给组合(Last,Run,Level)的代码是否为常规VLC。当判断代码不是常规VLC时(步骤S286否),LMAX判断单元计算New Level=Level绝对值-LMAX(步骤S287)。然后,LAMX判断单元通过对计算的New Level与LMAX进行比较来判断要指定给组合(Last,Run,Level)的代码是否为LMAX VLC(步骤S288)。
在步骤S291,RMAX判断单元首先通过对Run值和阈值m进行比较来决定是否判断要指定给组合(Last,Run,Level)的代码类型。当Run值>m时(步骤S292否),RMAX判断单元不判断代码类型。
当Run值≤m时(步骤S292是),RMAX判断单元通过对RMAX和Run值进行比较米判断要指定给组合(Last,Run,Level)的代码是否为常规VLC。当判断代码不是常规VLC时(步骤S293否),RMAX判断单元计算New Run=Run值-(RMAX+1)(步骤S294)。然后,RMAX判断单元通过对计算的New Run与RMAX进行比较来判断要指定给组合(Last,Run,Level)的代码是否为RMAXVLC(步骤S296)。
如果在步骤S283中Level绝对值≤K,则可变长度编码电路基于在步骤S282和S291的判断结果来选择要指定给组合(Last,Run,Level)的代码类型(步骤S298)。
当选择常规VLC时,可变长度编码电路读取对应于组合(Last,Run,Level绝对值)的VLC(步骤S299)。可变长度编码电路基于读取的VLC产生常规VLC(步骤S300),并且将产生的常规VLC作为指定给组合(Last,Run,Level)的代码输出(步骤S314)。
当选择LMAX VLC时,可变长度编码电路读取与组合(Last,Run,New Level)相对应的VLC(步骤S301)。可变长度编码电路基于读取的VLC产生LMAX VLC(步骤S302),并且将产生的LMAX VLC作为指定给组合(Last,Run,Level)的代码输出(步骤S314)。
当选择RMAX VLC时,可变长度编码电路读取与组合(Last,Run,Level绝对值)相对应的VLC(步骤S303)。可变长度编码电路基于读取的VLC产生RMAX VLC(步骤S304),并且将产生的RMAX VLC作为指定给组合(Last,Run,Level)的代码输出(步骤S314)。
当由于Run值>n并且Run值>m而使LMAX判断单元和RMAX判断单元不进行判断,从而选择不可能判断时,可变长度编码电路试图从VLC表中读取与组合(Last,Run,Level绝对值)相对应的VLC(步骤S306)。如果在VLC表中存在相应的VLC(步骤S307是),则可变长度编码电路接下来执行步骤S300。
如果在VLC表中不存在相应的VLC(步骤S307否),则可变长度编码电路计算New Level=Level绝对值-LMAX,并且试图读取与组合(Last,Run,New Level)相对应的VLC。如果在VLC表中存在相应的VLC(步骤S309是),则可变长度编码电路接下来执行步骤S302。
如果在VLC表中不存在相应的VLC(步骤S309否),则可变长度编码电路计算New Run=Run值-(RMAX+1),并且试图读取与组合(Last,New Run,Level绝对值)相对应的VLC(步骤S310)。如果在VLC表中存在相应的VLC(步骤S312是),则可变长度编码电路接下来执行步骤S304。
如果在VLC表中不存在相应的VLC(步骤S312否),则可变长度编码电路基于组合(Last,Run,Level)产生FLC(步骤S313),并且将产生的FLC作为指定给组合(Last,Run,Level)的代码输出(步骤S314)。
(可变长度编码电路的结构)与第六实施方式的可变长度编码电路200g相似,第七实施方式的可变长度编码电路由数据获得单元、LMAX判断单元、RMAX检索单元、第二减法输出电路、第一选择电路、控制电路、VLC检索单元、寄存器、第一减法输出电路、FLC产生电路、RMAX VLC产生电路、LMAX VLC产生电路、常规VLC产生电路、第二选择电路、RMAX判断单元以及LMAX检索单元组成。
数据获得单元、RMAX检索单元、第二减法输出电路、第一选择电路、VLC检索单元、寄存器、第一减法输出电路、FLC产生电路、RMAX VLC产生电路、LMAX VLC产生电路、常规VLC产生电路、第二选择电路、RMAX判断单元以及LMAX检索单元分别与数据获得单元201g、RMAX检索单元203、第二减法输出电路204g、第一选择电路205g、VLC检索单元207、寄存器208、第一减法输出电路209、FLC产生电路211、RMAX VLC产生电路212、LMAX VLC产生电路213、常规VLC产生电路214、第二选择电路215、RMAX判断单元216g以及LMAX检索单元217具有相同的结构并且执行相同的操作。因此,下面不再描述这些组成部分,而只解释作为第七实施方式特征的控制电路和LMAX判断单元。
(LMAX判断单元)与第六实施方式的LMAX判断单元202g相似,该LMAX判断单元由LMAX判断电路、比较电路和固定值存储电路组成。
(i)固定值存储电路固定值存储电路上存储有阈值n和阈值K。阈值K为0<K<256的整数。
在第六实施方式中已经解释了阈值n。
(ii)比较电路比较电路从数据获得单元接收Level绝对值和Run值。
当接收到Level绝对值和Run值时,比较电路从固定值存储电路读取阈值K和n。比较电路对读取的阈值n和Run值进行比较,并且对阈值K和Level绝对值进行比较。然后,比较电路向LMAX判断电路输出该比较结果。
(iii)LMAX判断电路与第一实施方式的LMAX判断电路202相似,该LMAX判断电路由LMAX检索单元、第一比较电路、减法电路、第二比较电路、选择电路、判断控制电路以及输出电路组成。
判断控制电路从比较电路接收阈值n和Run值的比较结果以及阈值K和Level绝对值的比较结果。此外,判断控制电路从第一比较电路接收LMAX和Level绝对值的比较结果,并且从第二比较电路接收LMAX和New Level的比较结果。
当接收到的Level绝对值和阈值K之间的比较结果为Level绝对值>K时,判断控制电路忽略从比较电路接收的Run值和阈值n之间的比较结果以及从LMAX判断电路中的第一和第二比较电路接收的比较结果,并且产生模式信号“11”。判断控制电路向LMAX判断电路中的选择电路以及控制电路输出产生的模式信号“11”。
当接收到的Level绝对值和阈值K之间的比较结果为Level绝对值≤K时,判断控制电路执行与第六实施方式相同的操作。具体的,判断控制电路基于Run值和阈值n之间的比较结果以及LMAX判断电路中第一和第二比较电路输出的比较结果而产生表示为“00”、“01”和“10”其中之一的模式信号。然后,判断控制电路将产生的模式信号输出到LMAX判断电路中的选择电路以及控制电路。
选择电路从数据获得单元接收Level绝对值、从减法电路接收New Level以及从判断控制电路接收模式信号。
当接收到的模式信号为“00”、“10”和“11”其中之一时,选择电路将从数据获得单元接收的Level绝对值作为选出的Level输出到输出电路。当接收到的模式信号为“01”时,选择电路将从减法电路接收到的New Level作为选出的Level输出到输出电路。
为了更好的理解,将从LMAX判断单元输出的模式信号称为第一模式信号,并且将从RMAX判断单元输出的模式信号称为第二模式信号。
这里,第一模式信号为“00”表示要指定给组合(Last,Run,Level)的代码为常规VLC。第一模式信号为“01”表示可以产生LMAX VLC以指定给组合(Last,Run,Level)。由于LMAX判断单元不对要指定给组合(Last,Run,Level)的代码类型进行判断,因此第一模式信号为“10”表示要指定给组合(Last,Run,Level)的代码类型不确定。第一模式信号为“11”表示要指定给组合(Last,Run,Level)的代码为FLC。
(2)控制电路控制电路以固定时间间隔从时序控制电路接收时钟信号。而且,控制电路从LMAX判断单元接收第一模式信号,并且从RMAX判断单元接收第二模式信号。
当接收到的第一模式信号为“11”时,控制电路忽略第二模式信号,并且向第二选择电路输出表示选择从FLC产生电路输出的FLC的选择指令。在向第二选择电路输出选择指令之后,控制电路向数据获得单元输出请求输出新数据的数据输出指令。
当接收到的第一模式信号不是“11”时,与第六实施方式相同,控制电路向第一和第二选择电路输出由第一和第二模式信号的组合确定的选择指令。在这种情况下,控制电路执行与第六实施方式中的控制电路206g相同的操作。因此,这里不再对该操作进行解释。
7.2总结如上所述,第七实施方式的可变长度编码电路上存储有阈值K。当从数据获得单元输出的Level绝对值大于阈值K时,可变长度编码电路无条件地选择基于组合(Last,Run,Level)产生的FLC并且将其作为指定给组合(Last,Run,Level)的代码输出。
按照图4所示的VLC表251、LMAX表261和RMAX表266,在VLC表251中Level绝对值的最大值为27,并且在RMAX表266中不存在与大于27的Level绝对值相对应的RMAX。因此,当Level绝对值大于54时,要指定给组合(Last,Run,Level)的代码一直是FLC。
因此,通过将阈值K设置为大于54的值,可变长度编码电路能够在较短的时间周期内为不可避免地要指定为FLC的组合(Last,Run,Level)产生并且输出FLC。这是因为,LMAX判断单元和RMAX判断单元不判断要指定给组合(Last,Run,Level)的代码类型,并且VLC检索单元不试图读取与组合(Last,Run,Level绝对值)相对应的VLC、与组合(Last,Run,New Level)相对应的VLC以及与组合(Last,New Run,Level绝对值)相对应的VLC。结果,可变长度编码电路能够减少能耗。
8.第八实施方式下面描述本发明第八实施方式的成像系统。
第八实施方式的成像系统除了包括在记录和发送系统中的可变长度编码电路以外,与第七实施方式的成像系统具有相同的结构并执行相同的操作。因此,下面只描述作为第八实施方式特征的可变长度编码电路,而不再解释其它组成部分。
8.1可变长度编码电路可变长度编码电路除了在其上存储有第七实施方式中描述的阈值n、m和K外,还存储有与Run值相关的阈值L。当Run值超过阈值L时,可变长度编码电路跳过对Run值与阈值n和m的比较,以及要指定给组合(Last、Run、Level)的代码类型的判断。可选的,可变长度编码电路基于组合(Last、Run、Level)产生FLC,并且将产生的FLC作为指定给组合(Last、Run、Level)的代码输出。下面描述可变长度编码电路的代码产生操作,以及实现代码产生功能的结构。
(可变长度编码电路的工作)下面参照图36所示的流程图描述第八实施方式的可变长度编码电路的工作。
可变长度编码电路开始代码产生操作,同时将包括在可变长度编码电路中的电路输出到包括组合(Last、Run、Level)的数据(步骤S321)。然后,可变长度编码电路中的LMAX判断单元判断要指定给组合(Last、Run、Level)的代码类型(步骤S322)。与步骤S322并行,可变长度编码电路中的RMAX判断单元也判断要指定给组合(Last、Run、Level)的代码类型(步骤S331)。
在步骤S322中,LMAX判断单元首先对Level绝对值和阈值K进行比较,以判断是否跳过从步骤S326开始的程序而执行产生FLC(步骤S324)。当Level绝对值>K时(步骤S324否),LMAX判断单元不判断代码类型,并且可变长度编码电路忽略由RMAX判断单元进行的判断结果,以执行步骤S356。当Level绝对值≤K时(步骤S324是),LMAX判断单元对Run值和阈值n进行比较,以决定是否进行代码类型的判断(步骤S326)。当Run值>n时(步骤S326否),LMAX判断单元不判断代码类型。当Run值≤n时(步骤S326是),LMAX判断单元通过对LMAX和Level绝对值进行比较而判断要指定给组合(Last、Run、Level)的代码是否为常规VLC(步骤S327)。当判断该代码不是常规VLC时(步骤S327否),LMAX判断单元计算New Level=Level绝对值-LMAX(步骤S328)。然后,LMAX判断单元通过对计算的New Level与LMAX进行比较,判断要指定给组合(Last、Run、Level)的代码是否是LMAX VLC(步骤S329)。
在步骤S331中,RMAX判断单元首先通过对Run值和阈值L进行比较,判断是否跳过代码类型的判断并且执行产生FLC(步骤S333)。当Run值>L时(步骤S333否),RMAX判断单元跳过从步骤S334开始的代码类型判断操作,并且忽略由LMAX判断单元进行的判断结果,以执行步骤S356。
当Run值≤L时(步骤S333是),RMAX判断单元对Run值和阈值m进行比较,以决定是否进行代码类型的判断(步骤S334)。当Run值>m时(步骤S334否),RMAX判断单元不判断代码类型。
当Run值≤m时(步骤S334是),RMAX判断单元通过对RMAX和Run值进行比较,判断要指定给组合(Last、Run、Level)的代码是否为常规VLC(步骤S336)。当判断代码不是常规VLC时(步骤S336否),RMAX判断单元计算New Run=Run值-(RMAX+1)(步骤S337)。然后,RMAX判断单元通过对计算的New Run与RMAX进行比较,判断要指定给组合(Last、Run、Level)的代码是否为RMAX VLC(步骤S338)。
如果在步骤S324中Level绝对值≤K,并且在步骤S333中Run值≤L,则可变长度编码电路根据在步骤S322和S331的判断结果选择要指定给组合(Last、Run、Level)的代码类型(步骤S339)。
当选择常规VLC时,可变长度编码电路读取对应于组合(Last、Run、Level绝对值)的VLC(步骤S341)。可变长度编码电路基于读取的VLC产生常规VLC(步骤S342),并且将产生的常规VLC作为指定给组合(Last、Run、Level)的代码输出(步骤S357)。
当选择LMAX VLC时,可变长度编码电路读取对应于组合(Last、Run、NewLevel)的VLC(步骤S343)。可变长度编码电路基于读取的VLC产生LMAX VLC(步骤S344),并且将产生的LMAX VLC作为指定给组合(Last、Run、Level)的代码输出(步骤S357)。
当选择RMAX VLC时,可变长度编码电路读取对应于组合(Last、New Run、Level绝对值)的VLC(步骤S345)。可变长度编码电路基于读取的VLC产生RMAX VLC(步骤S346),并且将产生的RMAX VLC作为指定给组合(Last、Run、Level)的代码输出(步骤S357)。
当由于Run值>n并且Run值>m而使LMAX判断单元和RMAX判断单元不进行判断,从而使选择不可能时,可变长度编码电路试图从VLC表中读取对应于组合(Last、Run、Level绝对值)的VLC(步骤S348)。如果在VLC表中存在相应的VLC(步骤S349是),则可变长度编码电路接下来执行步骤S342。
如果在VLC表中不存在相应的VLC(步骤S349否),则可变长度编码电路计算New Level=Level绝对值-LMAX,并且试图读取对应于组合(Last、Run、New Level)的VLC(步骤S351)。如果在VLC表中存在相应的VLC(步骤S352是),则可变长度编码电路接下来执行步骤S344。
如果在VLC表中不存在相应的VLC(步骤S352否),则可变长度编码电路计算New Run=Run值-(RMAX+1),并且试图读取对应于组合(Last、Run、Level绝对值)的VLC(步骤S353)。如果在VLC表中存在相应的VLC(步骤S354是),则可变长度编码电路接下来执行步骤S346。
如果在VLC表中不存在相应的VLC(步骤S354否),则可变长度编码电路基于组合(Last、Run、Level)产生FLC(步骤S356),并且将产生的FLC作为指定给组合(Last、Run、Level)的代码输出(步骤S357)。
(可变长度编码电路的结构)第八实施方式的可变长度编码电路除了控制电路和RMAX判断单元外,与第七实施方式的可变长度编码电路具有相同的结构并且执行相同的操作。因此,下面只描述控制电路和RMAX判断单元。
(1)RMAX判断单元与第六实施方式的RMAX判断单元216g相似,所述RMAX判断单元由RMAX判断电路、比较电路和固定值存储电路组成。
(i)固定值存储电路固定值存储电路上存储有阈值m和阈值L。在第六实施方式中已经解释了阈值m。
阈值L为0≤L<640范围内的整数。
(ii)比较电路比较电路接收Run值。
当接收Run值时,比较电路从固定值存储电路读取阈值L和m。比较电路对读取的阈值m与Run值进行比较,并且对阈值L与Run值进行比较。然后,比较电路向RMAX判断电路输出比较结果。
(iii)RMAX判断电路与第六实施方式的RMAX判断电路相似,该RMAX判断电路由RMAX检索单元、第一比较电路、减法电路、第二比较电路、选择电路、判断控制电路和输出电路组成。RMAX检索单元、第一比较电路、减法电路、第二比较电路和输出电路分别与第六实施方式中的RMAX判断电路216G的相应组成部分具有相同的结构并且执行相同的操作。
所述RMAX判断电路中的判断控制电路从比较电路接收阈值m与Run的比较结果以及阈值L与Run的比较结果。此外,判断控制电路从RMAX判断电路的第一比较电路接收RMAX与Run的比较结果,并且从第二比较电路接收RMAX与New Run的比较结果。
当接收到的Run与阈值L的比较结果为Run值>L时,判断控制电路无条件地产生第二模式信号为“11”,并且将产生的第二模式信号“11”输出到RMAX判断电路中的选择电路以及控制电路。
当接收到的Run值与阈值L的比较结果为Run值≤L时,判断控制电路与第六实施方式中RMAX判断电路216G中的判断控制电路执行相同的操作。具体的,判断控制电路基于Run值与阈值m的比较结果以及从RMAX判断电路中的第一和第二比较电路中输出的比较结果而产生第二模式信号。然后,判断控制电路将产生的第二模式信号输出到RMAX判断电路中的选择电路以及控制电路。
(2)控制电路如果从LMAX判断单元接收的第一模式信号和从RMAX判断单元接收的第二模式信号中至少一个为“11”,则控制电路无条件地向第二选择电路输出表示选择从FLC产生电路中输出的FLC的选择指令。
当第一和第二模式信号均不为“11”时,控制电路以与第六实施方式中控制电路206g相同的方式根据接收到的第一和第二模式信号而操作。
8.2总结根据图4所示的VLC表251、LMAX表261以及RMAX表266,在VLC表251中最大的Run值为20,并且在LMAX表261中没有与大于20的Run值相对应的LMAX。因此,当Run值大于40时,要指定给组合(Last、Run、Level)的代码一直为FLC。
因此,通过将阈值L设置为大于40的值,可变长度编码电路能够在较短时间周期内为不可避免地要指定为FLC的组合(Last、Run、Level)产生并输出FLC。这是因为,RMAX判断单元和LMAX判断单元不对要指定给组合(Last、Run、Level)的代码类型进行判断,并且VLC检索单元不试图读取与组合(Last、Run、Level绝对值)相对应的VLC、与组合(Last、Run、New Level)相对应的VLC以及与组合(Last、New Run、Level绝对值)相对应的VLC。
9.其它变型实施例尽管通过参照附图详细描述本发明的实施例已经充分描述了本发明,但是应该注意,很明显,本领域的技术人员可以对本发明做出各种各样的改进和变型。因此,除非所做的改进和变型超出了本发明的范围,否则他们应该都包括在本发明中。
(1)上述第一到第八实施方式及其变型实施例可以按照下面方式进行变型。将FLC寄存器设置在数据获得单元和FLC产生电路之间,以在其上暂存组合(Last、Run、Level)。而且,在数据获得单元和RMAX VLC产生电路、LMAX产生电路以及常规VLC产生电路之间设置Sign寄存器,以在其上暂存Sign值。通过该结构,要指定给组合(Last、Run、Level)的代码在比上述实施方式以及其变型实施例中提到的时间周期短一个时钟周期的更短时间周期内产生并且输出。
下面以第一实施方式作为例子来具体解释这种变型实施例。
(1-a)可变长度编码电路200的结构当所述变型实施例用于第一实施方式时,如图38所示,可变长度编码电路200还进一步包括FLC寄存器292和Sign寄存器291。
FLC寄存器292按照固定时间间隔从时序控制电路108接收时钟信号。而且,FLC寄存器292从数据获得单元201接收组合(Last、Run、Level)。
当接收组合(Last、Run、Level)时,FLC寄存器292在其上暂存接收到的组合(Last、Run、Level)。当在此后接收到新的时钟信号时,FLC寄存器292向FLC产生电路211输出存储的组合(Last、Run、Level)。
Sign寄存器291以固定时间间隔从时序控制电路108接收时钟信号。而且,Sign寄存器291从数据获得单元201接收Sign值。
当接收Sign值时,Sign寄存器291在其上暂存接收到的Sign值。当在此后接收到新的时钟信号时,Sign寄存器291向RMAX VLC产生电路212、LMAXVLC产生电路213以及常规VLC产生电路214输出存储的Sign值。
按照第一实施方式,控制电路206在向第二选择电路215输出选择指令后,向数据获得单元201输出数据输出指令。然而,按照本变型实施例,控制电路206在从VLC检索单元207接收OK信号或者VLC错误信号之后,向数据获得单元201输出数据输出指令。
其它电路没有做修改,因此这里不再解释。
(1-b)可变长度编码电路200的工作周期下面参照图39所示的时序图描述增加有FLC寄存器292和Sign寄存器291的可变长度编码电路200的工作周期。
在图39所示的时序图中,组成可变长度编码电路200的电路名称按垂直方向排列,并且时间按水平方向绘制。该时序图示出了按照时间如何顺序处理数据段。
以固定时间间隔,即,在时刻T810、T830和T850向数据获得单元201、控制电路206、寄存器208、Sign寄存器291和FLC寄存器292施加时钟信号471、472和473。
在时刻T810,数据获得单元201检测到时钟信号471,并且向LMAX判断电路202、RMAX检索单元203、减法输出电路204、FLC寄存器292以及Sign寄存器291输出存储的一组Sign值、Level值、Level绝对值、Run值以及Last值。该输出一直持续到时刻T830。将输出的Sign值、Level值、Level绝对值、Run值以及Last值一起称为数据P。
在时刻T811,LMAX判断电路202接收包括在数据P中的组合(Last、Run、Level绝对值)。LMAX判断电路202基于接收到的组合(Last、Run、Level绝对值)判断要指定给包括在数据P中的组合(Last、Run、Level)的代码类型。LMAX判断电路202产生作为判断结果的模式信号以及组合(Last、Run、选出的Level)。LMAX判断电路202向控制电路206输出产生的模式信号,并且向第一选择电路205输出产生的组合(Last、Run、选出的Level)。该输出一直持续到时刻T831。
在时刻T812,控制电路206接收模式信号,并且根据接收到的模式信号向第一选择电路205输出选择指令。该输出一直持续到时刻T832。
在时刻T816,RMAX检索单元203从数据获得单元201接收包括在数据P中的组合(Last、Run、Level绝对值)。RMAX检索单元203读取RMAX,并且向减法输出电路204输出该读取的RMAX。该输出一直持续到时刻T836。
在时刻T817,减法输出电路204从RMAX检索单元203接收RMAX。减法输出电路204基于接收到的RMAX计算New Run,并向第一选择电路205输出包括计算的New Run的组合(Last、New Run、Level绝对值)。该输出一种持续到时刻T837。
在时刻T813,第一选择电路205接收来自控制电路206的选择指令。根据接收到的选择指令,第一选择电路205选择组合(Last、New Run、Level绝对值)和组合(Last、Run、选出的Level)其中之一并且将其输出到VLC检索单元207。该输出一直持续到时刻T833。
在时刻T814,VLC检索单元207从第一选择电路205接收组合(Last、NewRun、Level绝对值)和组合(Last、Run、选出的Level)其中之一,并且试图从VLC表251中读取相应的VLC。如果在VLC表251中存在相应的VLC,则VLC检索单元207向寄存器208输出该读取的VLC,并向控制电路206输出OK信号。该输出一直持续到时刻T834。如果在VLC表251中不存在相应的VLC,VLC检索单元207向控制电路206和寄存器208输出VLC错误信号。该输出一直持续到时刻T834。
在时刻T815,控制电路206从VLC检索单元207接收OK信号和VLC错误信号其中之一。当接收到OK信号和VLC错误信号其中之一时,控制电路206向数据获得单元201输出数据输出指令。该输出一直持续到时刻T842。
寄存器208从VLC检索单元207接收VLC,并且在其上暂存接收到的VLC。在时刻T830,寄存器208检测到时钟信号472,并且向常规VLC产生电路214、LMAX VLC产生电路213以及RMAX VLC产生电路212输出存储的VLC。该输出一直持续到时刻T850。
Sign寄存器291从数据获得单元201接收包括在数据P中的Sign值,并在其上暂存接收到的Sign值。在时刻T830,Sign寄存器291检测到时钟信号472,并且向常规VLC产生电路214、LMAX VLC产生电路213以及RMAX VLC产生电路212输出存储的Sign值。该输出一直持续到时刻T850。
在时刻T838,常规VLC产生电路214、LMAX VLC产生电路213以及RMAX VLC产生电路212从寄存器208接收VLC,并且从Sign寄存器291接收Sign值。通过使用接收到的VLC和Sign值,常规VLC产生电路214、LMAX VLC产生电路213以及RMAX VLC产生电路212分别产生常规VLC、LMAX VLC和RMAX VLC,并且将产生的常规VLC、LMAX VLC和RMAX VLC分别输出到第二选择电路215。该输出一直持续到时刻T858。
FLC寄存器292从数据获得单元201接收包括在数据P中的组合(Last、Run、Level),并且在其上暂存接收到的组合(Last、Run、Level)。在时刻T830,FLC寄存器292检测到时钟信号472,并且向FLC产生电路211输出存储的组合(Last、Run、Level)。该输出一直持续到时刻T850。
在时刻T839,FLC产生电路211从FLC寄存器292接收包括在数据P中的组合(Last、Run、Level)。FLC产生电路211基于接收到的组合(Last、Run、Level)产生FLC,并且向第二选择电路215输出产生的FLC。该输出一直持续到时刻T859。
在时刻T830,控制电路206检测到时钟信号472,并且基于从VLC检索单元207接收的OK信号或者VLC错误信号以及从LMAX判断电路202接收的模式信号向第二选择电路215输出选择指令。该输出一直持续到时刻T850。
在时刻T841,第二选择电路215从控制电路206接收选择指令。按照该选择指令,第二选择电路215选择常规VLC、LMAX VLC、RMAX VLC和FLC其中之一并且将其输出到包括在记录和发送系统105中的缓冲器。该输出一直持续到时刻T861。
在时刻T830,数据获得单元201检测时钟信号472,并且接收来自控制电路206的数据输出指令。因此,数据获得单元201向LMAX判断电路202、RMAX检索单元203、减法输出电路204、FLC寄存器292以及Sign寄存器291输出新一组的Sign值、Level值、Level绝对值、Run值以及Last值。该输出一直持续到时刻T850。将该输出的Sign值、Level值、Level绝对值、Run值以及Last值一起称为数据Q。
LMAX判断电路202、控制电路206、……、第二选择电路215对数据Q执行与数据P相同的操作。结果,可变长度编码电路200在两个时钟周期内产生并且输出与包括在数据Q中的组合(Last、Run、Level)相对应的代码。
(1-c)效果按照上述的可变长度编码电路200,在初始时钟周期,寄存器208、FLC寄存器292以及Sign寄存器291分别在其上存储VLC、包括在数据P中的组合(Last、Run、Level)以及包括在数据P中的Sign值。在第二时钟周期,FLC产生电路211、RMAX VLC产生电路212、LMAX VLC产生电路213以及常规VLC产生电路214通过使用存储在寄存器208中的数据、存储在FLC寄存器292中的数据以及存储在Sign寄存器291中的数据分别产生并且输出FLC、RMAXVLC、LMAX VLC以及常规VLC。按照这种方式,在时刻T830和时刻T850之间,可变长度编码电路200能够与对数据P的第二时钟周期操作并行地进行对新数据Q的初始时钟周期操作。
通过并行地执行对数据P的第二时钟周期操作以及对紧跟数据P的数据Q的初始时钟周期操作,本变型实施例的可变长度编码电路200与没有FLC寄存器292和Sign寄存器291的可变长度编码电路200相比,能够将产生并且输出代码所需的时间周期缩短大约一个时钟周期。
当该变型实施例应用于第二到第八实施方式时,使用存储在寄存器中的数据、存储在FLC寄存器中的数据以及存储在Sign寄存器中的数据产生FLC、RMAX VLC、LMAX VLC以及常规VLC。因此,与从数据获得单元连续输出的数据P和数据Q相对应的代码产生操作可以部分地并行进行。这样,产生并且输出代码所需的时间周期也能够缩短大约一个时钟周期。
(2)下面描述变型实施例(1)应用到第三到第五实施方式的情况。VLC检索单元向控制电路输出VLC错误信号或者OK信号。当从VLC检索单元接收到VLC错误信号或者OK信号时,控制电路向数据获得单元输出数据输出指令。
通过该结构,数据获得单元每时钟周期输出数据(在第三实施方式的变型实施例中为每两个时钟周期)。结果,与没有FLC寄存器和Sign寄存器的情况相比,产生并且输出代码所需的时间周期会缩短大约一个时钟周期。
(3)下面描述该变型实施例(1)应用到第六实施方式的情况。数据获得单元输出组合(Last、Run、Level)。当Run值-n或者Run值≤m时,控制电路206g在接收到VLC错误信号或者OK信号时,向数据获得单元201g输出数据输出指令。响应该数据输出指令,数据获得单元201g输出下一组合(Last、Run、Level)。这使得对组合的第二时钟周期操作与对下一组合的初始时钟周期操作并行进行。这样,可以实现高速处理。
当Run值>n并且Run值>m时,与第六实施方式相同,控制电路206g在向第二选择电路215输出选择指令后,输出数据输出指令。这样,实现了长时间输出代码。
(4)下面描述变型实施例(1)用于第七实施方式的情况。当Level绝对值>K,或者当Run值>m并且Run值>n时,与第七实施方式相同,控制电路在向第二选择电路输出选择指令后输出数据输出指令。
当Level绝对值≤K、Run值≤m以及Run值≤n时,控制电路在接收VLC错误信号或者OK信号时向数据获得单元输出数据输出指令。这样,可以部分并行执行对连续数据段的代码产生操作,从而实现高速处理。
(5)下面描述变型实施例(1)用于第八实施方式的情况。当Level绝对值>K、Run值>L,或者当Run值>m并且Run值>n时,与第八实施方式相同,控制电路在向第二选择电路输出选择指令后,输出数据输出指令。
当Level绝对值≤K、Run值≤L、Run值≤m以及Run值≤n时,在接收到VLC错误信号或者OK信号时,控制电路向数据获得单元输出数据输出指令。这样,可以部分并行执行对连续数据段的代码产生操作,从而实现高速处理。
(6)根据上述第一到第八实施方式及其变型实施例,数据获得单元以固定时间间隔从时序控制电路接收时钟信号。然而,此外,数据获得单元也可以只是在需要输出新数据时接收时钟信号。
下面通过以第六实施方式作为例子具体解释该变型实施例。这里,可变长度编码电路200g包括数据获得单元201G以及控制电路206G,而不是数据获得单元201g和控制电路206g,并且还包括如图37所示的时钟控制电路210。
控制电路206G通过与第六实施方式的控制电路206g执行相同的操作而向第二选择电路215输出选择指令。在向第二选择电路215输出选择指令后,控制电路206G向时钟控制电路210输出指示时钟信号输出的信号输出指令。
时钟控制电路210以固定时间间隔从时序控制电路接收时钟信号。并且,时钟控制电路210从控制电路206G接收信号输出指令。当接收到信号输出指令时,时钟控制电路210向数据获得单元201G输出时钟控制电路210后来接收到的一个时钟信号。
每次数据获得单元210G从时钟控制电路210接收时钟信号时,数据获得单元201G从缓冲器820读取新一组的Sign值、Last值、Run值、Level值和Level绝对值,并且向可变长度编码电路200g中的电路输出读取的Sign值、Last值、Run值、Level值和Level绝对值。
数据获得单元201G通过使用触发器和其它电路形成。当接收到时钟信号时,这些电路执行预定的操作,并且因此消耗能量。
如第六实施方式所述,可变长度编码电路200g在两个到四个时钟周期产生并且输出要指定给组合(Last、Run、Level)的代码。然而,数据获得单元201G在初始时钟周期从缓冲器820读取新的数据,并且只是向可变长度编码电路200g中的电路连续输出读取的数据,直到可变长度编码电路200g产生代码完成。因此,通过提供能够尽量减少输入到数据获得单元210G中的时钟信号数目的时钟控制电路210,数据获得单元201G能够比数据获得单元201g实现更低的能耗。
(7)按照上述描述,第三实施方式的LMAX判断电路202c、第四实施方式的LMAX判断电路202e、第五实施方式的LMAX判断电路202f以及第六实施方式的LMAX判断电路202G与第一实施方式的LMAX判断电路202具有相同的结构。然而,与图6B所示的LMAX判断电路202b相似,可以设计LMAX判断电路202c、202e、202f和202G以包括移位单元235。
此外,第三实施方式的RMAX判断电路216c、第四实施方式的RMAX判断电路216e、第五实施方式的RMAX判断电路216f以及第六实施方式的RMAX判断电路216G与第二实施方式的RMAX判断电路216具有相同的结构。然而,与图10B所示的RMAX判断电路216b相似,可以设计RMAX判断电路216c、216e、216f和216G以包括移位单元285。
(8)按照第七实施方式,与第六实施方式的LMAX判断单元202g相似,LMAX判断单元由同定值存储电路、比较电路和LMAX判断电路组成,并且比较电路对Run值和阈值n进行比较,并且对Level绝对值和阈值K进行比较。然而,LMAX判断单元可以设置附加的比较电路。
在这种情况下,两比较电路并行设置。这样,其中的一个比较电路从数据获得单元接收Run值,并且从同定值存储电路读取阈值n,从而对读取的阈值n和Run值进行比较,并且向LMAX判断电路输出该比较结果。
另一比较电路从数据获得单元接收Level绝对值,并且从固定值存储电路读取阈值K,从而对读取的阈值K和Level绝对值进行比较。
(9)并且,第八实施方式的RMAX判断单元可以包括并行设置的两个比较电路。这样,其中的一个比较电路对Run值和阈值m进行比较,而另一比较电路对Run值和阈值L进行比较。
如上所述,通过上述并行设置的两个比较电路以同时执行两个比较操作,LMAX判断单元和RMAX判断单元能够实现高速处理。
(10)按照第三到第八实施方式,LMAX判断电路基于第一比较电路的比较结果,判断要指定给组合(Last、Run、Level)的代码是否为常规VLC,并且基于第二比较电路的比较结果,判断要指定给组合(Last、Run、Level)的代码是否为LMAX VLC。
类似的,RMAX判断电路基于第一比较电路的比较结果,判断要指定给组合(Last、Run、Level)的代码是否为常规VLC,并且基于第二比较电路的比较结果,判断要指定给组合(Last、Run、Level)的代码是否为RMAX VLC。
按照第三到第八实施方式,可变长度编码电路既包括LMAX判断电路又包括RMAX判断电路,并且通过LMAX判断电路和RMAX判断电路判断要指定给组合(Last、Run、Level)的代码是否为常规VLC。因此,可以省去LMAX判断电路和RMAX判断电路其中之一的第一比较电路。
下面以省去包括在第五实施方式的RMAX判断电路216f中的第一比较电路为例,描述该变型实施例。
包括在RMAX判断电路216f中的RMAX检索单元、减法电路、第二比较电路、选择电路以及输出电路分别与第五实施方式中的各电路执行相同的操作。
RMAX判断电路216f中的判断控制电路从第二比较电路接收RMAX和NewRun的比较结果。当接收的比较结果为RMAX≥New Run时,判断控制电路向选择电路和控制电路206f输出表示要指定给组合(Last、Run、Level)的代码可以是RMAX VLC的第二模式信号为“01”。
当接收到的比较结果为RMAX<New Run时,判断控制电路向选择电路和控制电路206f输出表示要指定给组合(Last、Run、Level)的代码不是RMAX VLC的第二模式信号为“10”。
当从LMAX判断电路202f接收的第一模式信号为“00”时,控制电路206f忽略第二模式信号,向第一选择电路205f输出指示选择从LMAX判断电路202f输出的组合(Last、Run、Level)的选择指令,并且向第二选择电路215输出指示选择从常规VLC产生电路214输出的常规VLC的选择指令。
当接收到的第一模式信号为“01”时,控制电路206f忽略第二模式信号,向第一选择电路205f输出指示选择从LMAX判断电路202f输出的组合(Last、Run、Level)的选择指令,并且向第二选择电路215输出指示选择从LMAX VLC产生电路213输出的LMAX VLC的选择指令。
当接收的第一模式信号为“10”并且接收的第二模式信号为“01”时,或者当第一模式信号为“10”并且第二模式信号为“10”时,控制电路206f执行与第五实施方式相同的操作。
(11)按照第三到第八实施方式及其变型实施例,可变长度编码电路中的LMAX判断电路与第一实施方式的LMAX判断电路202具有相同的结构。然而,该LMAX判断电路可以与第一实施方式变型实施例的LMAX判断电路202b具有相同的结构。
类似的,该RMAX判断电路与第二实施方式的RMAX判断电路216具有相同的结构。然而,此外,该RMAX判断电路可以与第二实施方式变型实施例的RMAX判断电路216b具有相同的结构。
(12)本发明可以提供一种执行上述各第一到第八实施方式及其变型实施例的方法。
(13)可以自由组合上述实施方式及其变型实施例。
工业实用性本发明可以在诸如包括图像和声音的数字数据的产品和销售行业、具有数字数据压缩和编码功能的电子设备的产品和销售行业、例如广播行业等使用数字数据的行业以及通过网络提供内容的行业等各种行业中得到商业化,并且可以连续和循环使用。
权利要求
1.一种编码装置,用于输出与输入数据相对应的代码,该装置包括存储单元,用于存储与组相对应的边界值,该组由多个具有相同特性的备选输入数据构成,该组被分成(i)代码存在子组,由一个或多个在代码表中具有相应的可变长度代码的备选输入数据构成,以及(ii)代码不存在子组,由一个或多个在代码表中不具有相应的可变长度代码的备选输入数据构成,所述边界值表示在所述代码存在子组和代码不存在子组之间的边界;获得单元,用于获得输入数据;第一判断单元,用于判断所获得的输入数据是否属于所述组;读取单元,用于当所述第一判断单元判断为肯定,则从所述存储单元读取所述边界值;第二判断单元,用于利用所读取的边界值判断所获得的输入数据是否包括在所述代码存在子组中;以及产生单元,用于当所述第二判断单元判断为否定,则产生并输出替代代码,所述替代代码用于替代与所获得的输入数据相对应的可变长度代码。
2.根据权利要求1所述的编码装置,其特征在于,所获得的输入数据以及所述多个备选输入数据中的每一个均至少包括第一系数和第二系数,构成所述组的所述多个备选输入数据具有绝对值相同的第一系数,所述边界值为构成所述代码存在子组的备选输入数据的第二系数的绝对值中的最大值,并且所述第二判断单元将所获得的输入数据的第二系数的绝对值与所述边界值比较,以判断所获得的输入数据是否包括在所述代码存在子组中。
3.根据权利要求2所述的编码装置,其特征在于,当所述第二判断单元判断所获得的输入数据不包括在所述代码存在子组中时,所述产生单元,用于(i)利用所述边界值对所获得的输入数据执行第一减法运算以产生第一减法数据,并且利用所述边界值判断所述第一减法数据是否包括在所述代码存在子组中,并且(ii)如果判断为肯定,则从所述代码表中提取与所述第一减法数据相对应的可变长度代码,并且产生所述替代代码,该代码包括提取的可变长度代码、表示所述第一减法已经执行的第一减法定义代码、以及表示所获得的输入数据的第一系数和第二系数之一为正或者为负的符号代码。
4.根据权利要求3所述的编码装置,其特征在于,所述产生单元用于对所获得的输入数据的第二系数的绝对值执行所述第一减法,以计算减得的第二系数,所述产生的第一减法数据包括所获得的输入数据的第一系数和减得的第二系数,并且所述产生单元用于将减得的第二系数和所述边界值比较,并且如果减得的第二系数小于或等于所述边界值,则判断所述第一减法数据包括在所述代码存在子组中。
5.根据权利要求3所述的编码装置,其特征在于,所述产生单元,用于对所获得的输入数据的第二系数的绝对值执行所述第一减法以计算减得的第二系数,所述产生的第一减法数据包括所获得的输入数据的第一系数和减得的第二系数,并且所述产生单元还用于通过将所述边界值加倍并且从所获得的输入数据的第二系数的绝对值中减去加倍的边界值而获得中间值,并且用于如果产生的中间值小于或等于零,则判断所述第一减法数据包括在所述代码存在子组中。
6.根据权利要求5所述得编码装置,其特征在于,所述产生单元用于通过将所述边界值移位1位而使所述边界值加倍。
7.根据权利要求3所述的编码装置,其特征在于,所述存储单元上还存储有由多个具有相同绝对值的第二系数的备选输入数据构成的备用组的备用边界值,所述备用组分成(i)备用代码存在子组,由一个或多个在所述代码表中具有相应的可变长度代码的备选输入数据构成,以及(ii)备用代码不存在子组,由一个或多个在所述代码表中不具有相应的可变长度代码的备选输入数据构成,并且所述备用边界值表示所述备用代码存在子组和所述备用代码不存在子组之间的边界,当所述第二判断单元判断所获得的输入数据不包括在所述代码存在子组中,并且所述产生单元判断所述第一减法数据不包括在所述代码存在子组中时,所述产生单元,用于(i)判断所获得的输入数据是否属于所述备用组,(ii)如果判断为肯定,则从所述存储单元读取所述备用边界值,利用读取的备用边界值对所获得的输入数据执行第二减法以产生第二减法数据,试图从所述代码表中读取与所述第二减法数据相对应的可变长度代码,以及(iii)如果所述读取尝试成功,则产生所述替代代码,该代码包括读取的可变长度代码、表示所述第二减法已经执行的第二减法定义代码、以及表示所获得的输入数据的第一系数和第二系数之一为正或者为负的符号代码。
8.根据权利要求3所述的编码装置,其特征在于,所述存储单元上还存储有由多个具有绝对值相同的第二系数的备选输入数据构成的备用组的备用边界值,所述备用组分成(i)备用代码存在子组,由一个或多个在所述代码表中具有相应的可变长度代码的备选输入数据构成,以及(ii)备用代码不存在子组,由一个或多个在所述代码表中不具有相应的可变长度代码的备选输入数据构成,并且所述备用边界值表示在所述备用代码存在子组和所述备用代码不存在子组之间的边界,当所述第二判断单元判断所获得的输入数据不包括在所述代码存在子组中,并且所述产生单元判断所述第一减法数据不包括在所述代码存在子组中时,所述产生单元,用于(i)利用所获得的输入数据的第二系数判断所获得的输入数据是否属于所述备用组,(ii)如果判断为肯定,则从所述存储单元中读取所述备用边界值,利用读取的备用边界值对所获得的输入数据执行第二减法以产生第二减法数据,并且利用所述备用边界值判断所产生的第二减法数据是否包括在所述备用代码存在子组中,并且(iii)如果判断为肯定,则从所述代码表中提取与所述第二减法数据相对应的可变长度代码,并且产生所述替代代码,该替代代码包括提取的可变长度代码、表示所述第二减法已经执行的第二减法定义代码、以及表示所获得的输入数据的第一系数和第二系数之一为正或者为负的符号代码。
9.根据权利要求8所述的编码装置,其特征在于,所述备用边界值为构成所述备用代码存在子组的备选输入数据的第一系数的绝对值中的最大值,所述产生单元用于对所获得的输入数据的第一系数的绝对值执行所述第二减法以计算减得的第一系数,所述产生的第二减法数据包括所获得的输入数据的减得的第一系数以及第二系数,以及所述产生单元还用于将减得的第一系数和所述备用边界值比较以判断所述第二减法数据是否包括在所述备用代码存在子组中。
10.根据权利要求8所述的编码装置,其特征在于,所述产生单元用于在所述第二判断单元判断所获得的输入数据不包括在所述代码存在子组中,并且所述产生单元判断该所述第一减法数据不包括在所述代码存在子组中,并且所述第二减法数据不包括在所述备用代码存在子组中的情况下,产生所述替代代码,该替代代码包括所获得的输入数据以及表示所获得的输入数据包括在内的输入数据定义代码。
11.根据权利要求2所述的编码装置,其特征在于对由预定数量的像素组成的块图像进行正交变换,由此产生由排列成矩阵形式的预定数量的系数所形成的块,并且所获得的输入数据以及所述多个备选输入数据中的每一个均包括(i)Run值,表示预定数量的系数中连续为零的系数的个数,(ii)Level值,表示连续为零的系数之后的非零系数的大小,以及(iii)Last值,表示该非零系数是否为所述块中最后一个系数。
12.根据权利要求11所述的编码装置,其特征在于所述获得的输入数据和所述多个备选输入数据的每一个均包括作为第一系数的Run值,以及作为第二系数的Level值,构成所述组的所述多个备选输入数据具有相同的Last值和Run值的对,所述边界值为LMAX,该值为构成所述代码存在子组的所述备选输入数据的Level值的绝对值中的最大值,并且所述第二判断单元用于将所获得的输入数据的Level值的绝对值和LMAX比较,并且如果所获得的输入数据的Level值的绝对值大于LMAX,则判断所获得的输入数据不包括在所述代码存在子组中。
13.根据权利要求12所述的编码装置,其特征在于当所述第二判断单元判断所获得的输入数据不包括在所述代码存在子组中时,所述产生单元,用于(i)从所获得的输入数据的Level值的绝对值中减去LMAX,以计算NewLevel,并且产生第一减法数据,该数据包括所获得的输入数据的Last值和Run值以及计算出的New Level,(ii)将New Level和LMAX比较,以判断所述第一减法数据是否包括在所述代码存在子组中,并且(iii)如果判断为肯定,则从所述代码表中提取与所述第一减法数据相对应的可变长度代码,并且产生所述替代代码,该代码包括提取出的可变长度代码、表示所述减法已经执行的第一减法定义代码、以及表示所获得的输入数据的Level值为正或为负的符号代码。
14.根据权利要求12所述的编码装置,其特征在于当所述第二判断单元判断所获得的输入数据不包括在所述代码存在子组中时,所述产生单元,用于(i)从所获得的输入数据的Level值的绝对值中减去所述LMAX,以计算New Level,并且产生第一减法数据,所述第一减法数据包括所获得的输入数据的Last值和Run值以及计算出的New Level,(ii)将所述LMAX加倍,并且将所获得的输入数据的Level值的绝对值和加倍的LMAX比较,以判断所述第一减法数据是否包括在所述代码存在子组中,以及(iii)如果判断为肯定,则从所述代码表中提取与所述第一减法数据相对应的可变长度代码,并且产生所述替代代码,该代码包括提取的可变长度代码、表示所述减法已经执行的第一减法定义代码、以及表示所获得的输入数据的Level值为正或为负的符号代码。
15.根据权利要求11所述的编码装置,其特征在于所述获得的输入数据以及所述多个备选输入数据中的每一个均包括作为第一系数的Level值,以及作为第二系数的Run值,构成所述组的所述多个备选输入数据具有相同的Last值和Level值的绝对值的对,所述边界值为RMAX,该值为构成所述代码存在子组的所述备选输入数据的Run值中的最大值,以及所述第二判断单元用于将所获得的输入数据的Run值和RMAX比较,并且如果所获得的输入数据的Run值大于所述RMAX,则判断所获得的输入数据不包括在所述代码存在子组中。
16.根据权利要求15所述的编码装置,其特征在于当所述第二判断单元判断所获得的输入数据不包括在所述代码存在子组中时,所述产生单元,用于(i)从所获得的输入数据的Run值中减去由RMAX加1得到的值,以计算New Run,并且产生第二减法数据,所述第二减法数据包括所获得的输入数据的Last值和Level值的绝对值,以及计算出的New Run,(ii)将所述New Run和所述RMAX比较以判断所述第二减法数据是否包括在所述代码存在子组中,并且(iii)如果判断为肯定,则从所述代码表中提取与所述第二减法数据相对应的可变长度代码,并且产生所述替代代码,所述替代代码包括提取的可变长度代码、表示所述减法已经执行的第二减法定义代码、以及表示所获得的输入数据的Level值为正或为负的符号代码。
17.根据权利要求15所述的编码装置,其特征在于当所述第二判断单元判断所获得的输入数据不包括在所述代码存在子组中时,所述产生单元,用于(i)从所获得的输入数据的Run值中减去由RMAX加1得到的值,以计算New Run,并且产生第二减法数据,所述第二减法数据包括所获得的输入数据的Last值和Level值的绝对值,以及计算出的New Run,(ii)将RMAX加倍,并且将所述Run值和由加倍的RMAX加1得到的值比较,以判断所述第二减法数据是否包括在所述代码存在子组中,以及(iii)如果判断为肯定,则从所述代码表中提取与所述第二减法数据相对应的可变长度代码,并且产生所述替代代码,所述替代代码包括提取的可变长度代码、表示所述减法已经执行的第二减法定义代码、以及表示所获得的输入数据的Level值为正或为负的符号代码。
18.根据权利要求11所述的编码装置,其特征在于所述第二判断单元上存储有预定的阈值,并且所述第二判断单元,用于当判断所获得的输入数据的Run值小于或者等于所述预定阈值时,做出所述判断。
19.根据权利要求18所述的编码装置,其特征在于,还进一步包括接收单元,用于接收预定阈值的输入,其中所述第二判断单元上存储有通过所述接收单元接收的所述预定阈值。
20.根据权利要求1所述的编码装置,其特征在于所述获得的输入数据和所述多个备选输入数据中的每一个均至少包括第一系数和第二系数,所述第二判断单元上存储有预定的固定长度代码阈值,并且当所获得的输入数据的第一系数的绝对值超过固定长度代码阈值时,所述第二判断单元不进行判断,并且所述产生单元用于产生替代代码,该代码包括所获得的输入数据以及表示所获得的输入数据包括在内的输入数据定义代码。
21.根据权利要求20所述的编码装置,其特征在于对由预定数量的像素组成的块图像进行正交变换,由此产生由所述排列成矩阵形式的预定数量的系数所形成的块,并且所述获得的输入数据以及所述多个备选输入数据中的每一个均包括(i)Run值,表示所述预定数量的系数中连续为零的系数的个数,(ii)Level值,表示所述连续为零的系数之后的非零系数的大小,以及(iii)Last值,用于表示所述非零系数是否为所述块中最后一个系数。
22.根据权利要求21所述的编码装置,其特征在于所述获得的输入数据以及所述多个备选输入数据中的每一个均包括作为所述第一系数的Level值,并且当所获得的输入数据的Level值的绝对值超过所述固定长度代码阈值时,所述第二判断单元不进行判断。
23.根据权利要求21所述的编码装置,其特征在于所述获得的输入数据以及所述多个备选输入数据中的每一个均包括作为所述第一系数的Run值,并且当所获得的输入数据的Run值超过所述固定长度代码阈值时,所述第二判断单元不进行判断。
24.根据权利要求1所述的编码装置,其特征在于,还进一步包括时钟控制单元,用于暂停和恢复输入时钟信号到所述获得单元。
25.根据权利要求1所述的编码装置,其特征在于所述代码表由运动图像专家组-4格式定义。
26.一种输出与输入数据相对应的代码的编码装置,包括获得单元,用于获得输入数据,该数据至少包括第一系数和第二系数;第一存储单元,用于存储与第一组相对应的第一边界值,所述第一组由多个备选输入数据组成,该备选输入数据中的每一个均至少具有第一系数和第二系数并且具有绝对值相同的第一系数,所述第一组分为(i)由一个或多个备选输入数据构成的第一代码存在子组,该备选输入数据在代码表中具有相应的可变长度代码,以及(ii)由一个或多个备选输入数据构成的第一代码不存在子组,该备选输入数据在所述代码表中不具有相应的可变长度代码,所述第一边界值表示在所述第一代码存在子组和所述第一代码不存在子组之间的边界;第一判断单元,用于判断所获得的输入数据是否属于所述第一组中,并且如果判断为肯定,则从所述第一存储单元读取所述第一边界值;第二判断单元,用于利用所述第一边界值,判断所获得的输入数据以及等效于所获得的输入数据的第一等同数据是否包括在所述第一代码存在子组中;第二存储单元,用于存储与第二组相对应的第二边界值,所述第二组由所述多个备选输入数据构成,该备选输入数据中的每一个均至少具有第一系数和第二系数并且具有绝对值相同的第二系数,所述第二组分为(a)由一个或多个备选输入数据构成的第二代码存在子组,该备选输入数据在所述代码表中具有相应的可变长度代码,以及(b)由一个或多个备选输入数据构成的第二代码不存在子组,该备选输入数据在所述代码表中不具有相应的可变长度代码,所述第二边界值表示在所述第二代码存在子组和所述第二代码不存在于组之间的边界;第三判断单元,用于判断所获得的输入数据是否属于第二组,并且如果判断为肯定,则从所述第二存储单元读取所述第二边界值;第四判断单元,用于利用所述第二边界值,判断所获得的输入数据以及等效于所获得的输入数据的第二等同数据是否包括在所述第二代码存在子组中;判断控制单元,用于从通过所述第二判断单元和通过所述第四判断单元获得的判断结果中选择一个;以及产生单元,用于(I)如果所选出的判断结果为肯定,则产生并输出基于所选出的判断结果的代码,(II)如果所选出的判断结果为否定,则参照未被选出的判断结果,(III)如果未被选出的判断结果为肯定,则产生并输出基于未被选出的判断结果的代码,并且(IV)如果所述未被选出的判断结果为否定,则输出所获得的输入数据以及表示所获得的输入数据包括在内的输入数据定义代码。
27.根据权利要求26所述的编码装置,其特征在于当判断所获得的输入数据不包括在所述第一代码存在子组中时,所述第二判断单元,用于(i)利用所述第一边界值对所获得的输入数据执行第一减法,以产生作为所述第一等同数据的第一减法数据,并且(ii)利用所述第一边界值判断所产生的第一减法数据是否包括在所述第一代码存在子组中,以及当判断所获得的输入数据不包括在所述第二代码存在子组中时,所述第四判断单元,用于(a)利用所述第二边界值对所获得的输入数据执行第二减法,以产生作为所述第二等同数据的第二减法数据,并且(b)利用所述第二边界值判断所产生的第二减法数据是否包括在所述第二代码存在子组中。
28.根据权利要求27所述的编码装置,其特征在于所述第二判断单元用于在所述第四判断单元进行判断之前进行判断,并且所述判断控制单元用于选择由所述第二判断单元获得的判断结果。
29.根据权利要求28所述的编码装置,其特征在于当所述第二判断单元判断所述第一减法数据包括在所述第一代码存在子组中时,所述第四判断单元不判断所述第二减法数据是否包括在所述第二代码存在子组中。
30.根据权利要求27所述的编码装置,其特征在于所述第二判断单元和所述第四判断单元并行地进行独立的判断。
31.根据权利要求30所述的编码装置,其特征在于所述判断控制单元优先选择从所述第二判断单元获得的判断结果。
32.根据权利要求30所述的编码装置,其特征在于,还进一步包括接收单元,用于接收优先级指令,该指令表示从由所述第二判断单元获得的判断结果和由所述第四判断单元获得的判断结果中优先选择哪一个,其中所述判断控制单元,用于根据所述优先级指令,从由所述第二判断单元获得的判断结果和由所述第四判断单元获得的判断结果中优先选择一个。
33.根据权利要求30所述的编码装置,其特征在于当所述判断控制单元选择由所述第二判断单元获得的判断结果时,如果所选的从所述第二判断单元获得的判断结果表示所获得的输入数据不包括在所述第一代码存在子组中,但是所述第一减法数据包括在所述第一代码存在子组中,则所述产生单元用于(i)从所述代码表中提取与所述第一减法数据相对应的可变长度代码,并且(ii)输出提取的可变长度代码、表示所述第一减法已经执行的第一减法定义代码、以及表示所获得的输入数据的第一系数和第二系数之一为正或者为负的符号代码。
34.根据要求26所述的编码装置,其特征在于对由预定数量的像素组成的块图像进行正交变换,由此产生由排列成矩阵形式的预定数量的系数所形成的块,并且所获得的输入数据以及所述多个备选输入数据中的每一个均包括(i)Run值,表示预定数量的系数中连续为零的系数的个数,作为所述第一系数,(ii)Level值,表示连续为零的系数之后的非零系数的大小,作为所述第二系数,以及(iii)Last值,表示该非零系数是否为所述块中的最后一个系数。
35.根据权利要求34所述的编码装置,其特征在于构成所述第一组的多个备选输入数据具有相同的Last值和Run值的对,所述第一边界值为LMAX,该值为构成所述第一代码存在子组的备选输入数据的Level值的绝对值中的最大值,如果所述获得的输入数据的Level值的绝对值大于所述LMAX,则所述第二判断单元判断所获得的输入数据不包括在所述第一代码存在子组中,构成所述第二组的所述多个备选输入数据具有相同对的Last值和Level绝对值,所述第二边界值为RMAX,该值为构成所述第二代码存在子组的所述备选输入数据的Run值中的最大值,如果获得的输入数据的Run值大于所述RMAX,则所述第四判断单元判断所获得的输入数据不包括在所述第二代码存在子组中。
36.根据权利要求35所述的编码装置,其特征在于当判断所获得的输入数据不包括在所述第一代码存在子组中时,所述第二判断单元,用于(i)利用所述LMAX对所获得的输入数据的Level值的绝对值执行所述第一减法以计算New Level,(ii)产生作为所述第一等同数据的第一减法数据,所述第一减法数据包括计算的New Level以及所获得的输入数据的Run值和Last值,并且(iii)将所述New Level和所述LMAX比较,以判断产生的第一减法数据是否包括在所述第一代码存在子组中,以及当判断所获得的输入数据不包括在所述第二代码存在子组中时,所述第四判断单元,用于(a)利用所述RMAX对所获得的输入数据的Run值执行所述第二减法以计算New Run,(b)产生作为所述第二等同数据的第二减法数据,该数据包括计算的NewRun以及所获得的输入数据的Level值的绝对值和Last值,并且(c)将所述New Run和所述RMAX比较,以判断产生的第二减法数据是否包括在所述第二代码存在子组中。
37.根据权利要求36所述的编码装置,其特征在于所述第二判断单元在所述第四判断单元进行判断之前进行判断,并且所述判断控制单元用于选择从所述第二判断单元获得的判断结果。
38.根据权利要求36所述的编码装置,其特征在于所述第四判断单元在所述第二判断单元进行判断之前进行判断,以及所述判断控制单元用于选择从所述第四判断单元获得的判断结果。
39.根据权利要求36所述的编码装置,其特征在于所述第二判断单元和所述第四判断单元并行进行独立的判断。
40.根据权利要求34所述的编码装置,其特征在于所述第二判断单元在其上存储预定的第一阈值,并且仅当所获得的输入数据的Run值小于或等于所述第一阈值时进行判断,以及所述第四判断单元在其上存储预定的第二阈值,并且仅当所获得的输入数据的Run值小于或等于所述第二阈值时进行判断。
41.根据权利要求40所述的编码装置,其特征在于作为判断结果,所述第二判断单元输出,(i)常规判断信号,当判断所获得的输入数据包括在所述第一代码存在子组中时,(ii)等同判断信号,当判断所获得的输入数据不包括在所述第一代码存在子组中,但是所述第一等同数据包括在所述第一代码存在子组中时,以及(iii)未判断信号,当没有进行判断时或者当判断所获得的输入数据和所述第一等同数据均不包括在所述第一代码存在子组中时,并且作为判断结果,所述第四判断单元输出,(a)常规判断信号,当判断所获得的输入数据包括在所述第二代码存在子组中时,(b)等同判断信号,当判断所获得的输入数据不包括在所述第二代码存在子组中,但是所述第二等同数据包括在所述第二代码存在子组中时,以及(c)未判断信号,当没有进行判断时或者当判断所获得的输入数据和所述第二等同数据均不包括在所述第二代码存在子组中时。
42.根据权利要求40所述的编码装置,其特征在于作为判断结果,所述第二判断单元输出,(i)未判断信号,当所获得的输入数据的Run值大于所述第一阈值时,(ii)常规判断信号,当判断所获得的输入数据包括在所述第一代码存在子组中时,(iii)等同判断信号,当判断所获得的输入数据不包括在所述第一代码存在子组中,但是所述第一等同数据包括在所述第一代码存在子组中时,以及(iv)不同代码信号,当判断所述第一代码存在子组中既不包括所获得的输入数据也不包括所述第一等同数据时,以及作为判断结果,所述第四判断单元输出,(a)未判断信号,当所获得的输入数据的Run值大于所述第二阈值时,(b)常规判断信号,当判断所获得的输入数据包括在所述第二代码存在子组中时,(c)等同判断信号,当判断所获得的输入数据不包括在所述第二代码存在子组中,但是所述第二等同数据包括在所述第二代码存在子组中时,以及(d)不同代码信号,当判断所述第二代码存在子组中既不包括所获得的输入数据也不包括所述第二等同数据时。
43.根据权利要求40所述的编码装置,其特征在于,还进一步包括接收单元,用于接收所述第一阈值和所述第二阈值的输入,其中所述第二判断单元上存储有由所述接收单元接收到的所述第一阈值,并且所述第四判断单元上存储有由所述接收单元接收到的所述第二阈值。
44.根据权利要求26所述的编码装置,其特征在于所述第二判断单元上存储有预定的第一固定长度代码阈值,并且当所获得的输入数据的第一系数的绝对值超出所述第一固定长度代码阈值时,所述第二判断单元不进行判断,并且所述产生单元不考虑从所述第四判断单元获得的判断结果,输出所获得的输入数据以及表示所获得的输入数据包括在内的所述输入数据定义代码。
45.根据权利要求44所述的编码装置,其特征在于所述第四判断单元上存储预定的第二固定长度代码阈值,并且当所获得的输入数据的第二系数的绝对值超出所述第二固定长度代码阈值时,所述第四判断单元不进行判断,并且所述产生单元不考虑由所述第二判断单元获得的判断结果,输出所获得的输入数据以及表示该获得的输入数据包括在内的所述输入数据定义代码。
46.根据权利要求44所述的编码装置,其特征在于对由预定数量的像素组成的块图像进行正交变换,由此产生了由预定数量的排列成矩阵形式的系数所形成的块,以及所获得的输入数据以及所述多个备选输入数据中的每一个均包括(i)Run值,用于表示预定数量的系数中连续为零的系数的个数,(ii)Level值,用于表示连续为零的系数之后的非零系数的大小,以及(iii)Last值,用于表示该非零系数是否为块中最后一个系数。
47.根据权利要求46所述的编码装置,其特征在于所获得的输入数据以及所述多个备选输入数据中的每一个均包括作为第一系数的Level值,以及作为第二系数的Run值,当所获得的输入数据的Level值的绝对值超过所述第一固定长度代码阈值时,所述第二判断单元不进行判断。
48.根据权利要求46所述的编码装置,其特征在于所获得的输入数据以及所述多个备选输入数据中的每一个均包括作为第一系数的Run值,以及作为第二系数的Level值,当所获得的输入数据的Run值超过所述第一固定长度代码阈值,所述第二判断单元不进行判断。
49.根据权利要求26所述的编码装置,其特征在于,还进一步包括时钟控制单元,用于暂停和恢复输入时钟信号到所述获得单元。
50.根据权利要求26所述的编码装置,其特征在于所述代码表由运动图像专家组-4格式定义。
51.一种编码装置,该编码装置输出与至少包括第一系数和第二系数的输入数据相对应的代码,所述编码装置包括存储单元,用于存储与第一组相对应的第一边界值,以及与第二组相对应的第二边界值,第一组,由多个备选输入数据构成,该数据中的每一个均至少具有第一系数和第二系数并且具有绝对值相同的第一系数,所述第一组分为(i)第一代码存在子组,由一个或多个备选输入数据构成,该备选输入数据在代码表中具有相应的可变长度代码,以及(ii)第一代码不存在子组,由一个或多个备选输入数据构成,该备选输入数据在所述代码表中不具有相应的可变长度代码,所述第一边界值表示在所述第一代码存在子组和所述第一代码不存在子组之间的边界;第二组,由多个备选输入数据构成,该数据中的每一个均至少具有第一系数和第二系数并且具有绝对值相同的第二系数,所述第二组分为(a)第二代码存在子组,由一个或多个备选输入数据构成,该备选输入数据在所述代码表中具有相应的可变长度代码,以及(b)第二代码不存在子组,由一个或多个备选输入数据构成,该备选输入数据在所述代码表中不具有相应的可变长度代码,所述第二边界值表示在所述第二代码存在子组和所述第二代码不存在子组之间的边界;获得单元,用于获得输入数据;第一判断单元,用于(I)判断所获得的输入数据是否属于所述第一组,并且如果判断为肯定,则从所述存储单元读取所述第一边界值,并且(II)判断所获得的输入数据是否属于所述第二组,并且如果判断为肯定,则从所述存储单元读取所述第二边界值;选择单元,用于从所述第一边界值和所述第二边界值中选择一个,并输出所选的边界值;第二判断单元,用于利用所选的边界值,判断所获得的输入数据和等效于所获得的输入数据的等同数据中的一个是否包括在与所选的边界值相对应的所述第一代码存在子组和所述第二代码存在子组中的一个中;选择控制单元,用于指示所述选择单元首先选择所述第一边界值,然后选择所述第二边界值;判断单元,用于选择由所述第二判断单元分别参照所述第一边界值和所述第二边界值做出的判断结果之一;以及产生单元,用于(A)当所选出的判断结果为肯定时,产生并输出基于所选出的判断结果的代码, (B)当所选出的判断结果为否定时,参照未被选出的判断结果,(C)当未被选出的判断结果为肯定时,产生并输出基于未被选出的判断结果的代码,并且(D)当未被选出的判断结果为否定时,输出所获得的输入数据以及表示所获得的输入数据包括在内的输入数据定义代码。
52.根据权利要求51所述的编码装置,其特征在于当所述选择单元选择所述第一边界值,并且所述第二判断单元判断所获得的输入数据不包括在所述第一代码存在子组中时,所述第二判断单元利用所述第一边界值对所获得的输入数据执行第一减法,以产生作为所述等同数据的第一减法数据,并利用所述第一边界值判断所产生的第一减法数据是否包括在所述第一代码存在子组中,并且当所述选择单元选择所述第二边界值,并且所述第二判断单元判断所获得的输入数据不包括在所述第二代码存在子组中时,所述第二判断单元利用所述第二边界值对所获得的输入数据执行第二减法,以产生作为所述等同数据的第二减法数据,并利用所述第二边界值判断所产生的第二减法数据是否包括在所述第二代码存在子组中。
53.根据权利要求52所述的编码装置,其特征在于所述判断控制单元选择参照所述第一边界值所做出的判断结果。
54.根据权利要求52所述的编码装置,其特征在于,还进一步包括接收单元,用于接收优先级指令,该指令表示优先选择参照所述第一边界值所做出的判断结果和参照所述第二边界值所做出的判断结果中的哪一个,其中所述判断控制单元,用于根据所述优先级指令,优先选择参照所述第一边界值所做出的判断结果和参照所述第二边界值所做出的判断结果中的一个。
55.根据权利要求51所述的编码装置,其特征在于,还进一步包括时钟控制单元,用于暂停和恢复输入时钟信号到所述获得单元。
56.根据权利要求51所述的编码装置,其特征在于所述代码表由运动图像专家组-4格式定义。
57.一种用在编码装置中的编码方法,该编码装置输出与输入数据相对应的代码,所述编码装置包括存储与组相对应的边界值的存储单元,所述组由多个具有相同特性的备选输入数据构成,所述组分为(i)代码存在子组,由一个或多个备选输入数据构成,该备选输入数据在代码表中具有相应的可变长度代码,以及(ii)代码不存在子组,由一个或多个备选输入数据构成,该备选输入数据在所述代码表中不具有相应的可变长度代码,所述边界值表示在所述代码存在子组和所述代码不存在子组之间的边界,所述编码方法包括以下步骤获得输入数据;判断所获得的输入数据是否属于所述组;如果判断所获得的输入数据属于所述组,则从所述存储单元读取所述边界值;利用读取的边界值,判断所获得的输入数据是否包括在所述代码存在子组中以及如果判断所获得的输入数据不包括在所述代码存在子组中,则产生并输出替代代码用于替代与所获得的输入数据相对应的可变长度代码。
58.一种成像装置,包括图像产生单元,用于检测入射光,并且产生基于所检测的入射光的图像数据;数据产生单元,用于(a)对所产生的图像数据中的由预定数量的像素组成的每个块图像执行正交变换,以产生预定数量的系数,(b)通过将产生的预定数量的系数排列成矩阵形式而产生块,以及(c)基于产生的块,产生输入数据,该数据包括(i)Run值,表示预定数量的系数中连续为零的系数的个数,(ii)Level值,表示连续为零的系数之后的非零系数的大小,以及(iii)Last值,表示该非零系数是否为块中最后一个系数;编码装置,由权利要求1、权利要求26和权利要求51之一所定义;以及记录单元,用于在其上记录从所述编码装置输出的代码。
全文摘要
本发明涉及一种不增加电路规格可以实现短处理周期的可变长度编码装置。这种可变长度编码装置通过使用对于组合(Last,Run,Level)的LMAX和RMAX判断VLC表是否具有对应于组合(Last,Run,Level)的可变长度编码(VLC)。基于判断结果,可变长度编码装置产生并输出指定给组合(Last,Run,Level)的代码。
文档编号H04N7/50GK1758761SQ20051009337
公开日2006年4月12日 申请日期2005年8月26日 优先权日2004年8月27日
发明者永田太一, 北村臣二, 田中康晴 申请人:松下电器产业株式会社