数据压缩技术中,为减少数据量,常行将各样值数据的毕特(位)幅宽,亦即位长作成可变的。而且也有进行了频段分割和对数压缩等的特征的处理的。关于这些处理,以及为对被压缩数据进行译码的译码器的操作,下面以MPEG中的数字音频信号的处理作为举例来加以说明。
MPEG是为高密度地记录或传送动画信号和音频信号近年所开发的一种数字压缩技术。现今对这种MPEG中的音频信号的处理已制订有被称之为MPEG1的标准。在此MPEG1标准中,按照所要求的音质和电路规模,准备有层I、层II、和层III三种方式。
在MPEG音频标准中,作为声音信号的通道方式规定有单声道、双声道、立体声、结合式立体声等各种方式。另外, MPGE音频标准中,还规定有各种在各层的每一通道方式可能采用的传送速率(位速率)种再现后的声音信号的输出速率(采样频率)。
例如,在立体声方式中,音频数据被分割成32个子频段,对每一子频段进行样值编码,各子频段中均包含二个通道。经这样编码所得到的音频压缩数据,主要由分配信息、换算因子和样值数据组成。
而在译码时,由按照上述分配信息和换算因子对样值数据进行加工来对音频压缩数据进行译码,生成PCM数据。
亦即,首先利用上述分配信息、换算因子和样值数据进行逆量化和逆换算处理,求取各个子频段的子频段样值数据。然后利用这一子频段样值数据进行合成子频段滤波处理,依此来生PCM数据。
例如,在立体声方式中,音频数据被分割成层I中32个、层II中最大30个的子频段,各子频段中包含二个通道。
图22为表示按MPEG1的层II压缩的音频数据的位流的图形。如图22所示,音频压缩数据的一帧由标题、CRC(CyclicRedundancy Check,循环冗余码校验)、分配信息、scfsi(Scalefactor selection information,换算因子选择信息)、换算因子和样值或样值代码(样值和样值代码一齐总称为样值数据)组成,并按这一顺序被输入进MPEG音频译码器。
这里,上述标题为由位速率和采样频率,或者立体声/单声道的通道方式等这样的基本的信息构成。而CRC则用于检查位流中是否存在差错。
分配信息、换算因子和样值数据是构成音频压缩数据主体的信息。借助按上述分配信息和换算因子对样值数据加工来进行音频压缩数据的译码,从而就生成PCM数据。
也就是说,分配信息是在译码时求取各样值数据的位幅宽以进行再现各样值数据的逆量化运算中所应用的信息,包含有后面输入的样值数据的位幅宽大小的信息和表明该样值数据是样值还是样值代码的信息。这些信息可参照根据ISO/IEC11172 MPEG1音频层II的标准,以分配信息和子频段号作成的图23所示的表来了解。
图23中,标名nbal的项表示分配信息的位幅宽,在分配信息为L1位宽时(子频段sb0-sb10)分配信息取0-15的16个值。而在分配信息为了位宽时(子频段sb11-sb22)分配信息取0-7的8个值。而当分配信息为2位宽时(子频段sb23-sb29)分配信息取0-3的4个值。
在层II的标准中,样值数据的全部毕特位成为“1”是不允许的。因此,例如在字频段号sb为2、分配信息的值为5的情况下,可看到样值数据能取的值有63种,样值数据的位数为6毕特。而在子频段号为20、分配信息的值为5的情况下、可知样值数据的所能取的值为15种,而样值数据的位数为4毕特。
而在样值数据所能取的值为3种、5种或9种的情况下,样值数据以样值代码形式输入。因而由参照图23判断样值数据可能取的种数,就能了解该样值数据为样值还是样值代码。
这里,作为样值代码的是,以各子频段为单位将在时间轴方向上连续存在的3个样值汇集成一个代码。例如在一个样值可能取值3种(2毕特)时,虽然通常3个样值成为6毕特,但如汇集成为一个代码时5毕特就足够。这是因为下面的理由。如将各个的样值分别作为A、B、C,样值代码的值X为
X=32A+3B+C
由于A、B、C的最大值为2,X的最大值就成为26,所以用5毕特来表示就可以了。而在一个样值的可能取值为5种(3毕特)或9种(4毕特)的情况下,虽然通常3个样值分别成为9毕特或12毕特,但在汇集成1个代码时,各自用7毕特或10毕特就足够了。
换算因子为在上述逆量化运算后对经过对数压缩的数据进行扩展的逆换算运算中所用的信息,用于表示给予大概的输出电平的换算系数值。在此,上述的样值在层II的场合中如以一帧为单位来看,各子频段的每一通道在时间轴方向上存在有36个。从而,上述36个样值每连续12个就能取不同的换算因子。
亦即,如从时间轴方向看将针对0-11号、12-23号、24-35号的样值的换算因子分别作为换算因子0、换算因子1和换算因子3的话,就如图24中所示那样,对换算因子0-2分别赋与a、b、c中的某一个换算因子值。
scfsi为表示上述换算因子在各子频段的各通道中存在哪一个(1-3个)的参数,这仅用于层II中。亦即上述scfsi表示图24中所示的4种格式中适用哪一种格式。
对具有上述这样的位流的音频压缩数据的译码处理,如下面这样来进行。亦即,首先由上述的逆量化处理和逆换算处理来求取子频段样值数据。然后进行将此子频段样值数据加以合成的合成子频段滤波处理,由此来生成PCM数据。
通常在历来的MPEG音频译码器中,设置有用于暂时存放被输入的图22中的那样的位流和由上述那样的一系列处理过程中所得到的数据的数个缓冲存贮器。例如有,用于暂时存放上述位流中的各种信息的缓冲存贮器,和为在上述合成子频段滤波处理的过程中暂时存放由子频段样值数据求得的被称之为V向量的称之为V向量RAM缓冲存贮器。
上述的子频段样值数据S按下式计算。
S=factor×C×(S”+D) (1)
这里,式(1)中的“factor”是按照换算因子特定的运算值,如将上述换算因子的值以“index”来表示,则得到
factor=21-index/3 (2)
图25中表明换算因子的值(index)与上述因子(factor)的值的关系。上述指数运算是为对在编码时经对数压缩的数据进行扩展。
上式(1)中的值S”为样值最高位毕特(MSB)的反相值。同样,式(1)中的C、D为规定的逆量化系数,采用图26中所示的值。如由图26可看到的,系数C、D按照样值可能取值的种类采用不同的值。亦即按照分配信息值来选用图26中所示的哪一个系数值。
在求取上式(1)中所示的子频段样值数据S的运算中,首先进行最初的以C×(S”+D)表示的逆量化运算,而后进行乘以因子值的逆换算运算。而上述因子的值和C、D的值是分别被预先存贮作成图25和26中所示那样的表而加以利用的。
然而,为进行由按上述那样求得的子频段样值数S求取PCM数据的合成子频段滤波处理,必然会因32个子频段并行处理音频信号而带来庞大的运算量。于是,为解决这一问题,出现了采用被称之为多相滤波存贮的技术。上述多相滤波存贮中,被设计得以巧妙的数学方法同时处理32个频段,由此来消除区域同步,从而能进行非常有效的计算。
但是在这样利用多相滤波存贮方法同时生成32个PCM数据时,为连续输出上述生成的PCM数据在译码器的输出级必须要有用于PCM数据的存贮器,因而就存在有必须设置的存贮器容量成为很大的问题。
为此提出了使得能不设置输出用存贮器亦可的合成子频段滤波处理的方案。
图27为表明层I、II中的合成子频段滤波处理内容的流程图。在图27中,开始在步骤21将各子频段中所求得的32个子频段样值数据S输入到图中未表示出的内部存贮器中。
而后在步骤22中,将上述的V向量RAM的地址作64字移位。从而如图28中所示那样,由V向量RAM的0号地址开始直至63号地址就成为空的,而保证了为在此计算出的V向量的存贮空间。
接着在步骤23中,由上述步骤21中所输入的32个子频段样值数据S计算出64个V向量。这些V向量按下面式(3)中的计算式进行计算。这样求得的V向量被暂时存放到V向量RAM的新近得出的存贮空间中。
上述步骤P23中求得的V向量在下面的步骤24中被变换成U向量。此由V向量至U向量变换的处理按照下面式(4)和式(5)进行。
U(i×64+j)=V(i×128+j) (4)
U(i×64+32+j)=V(i×128+98+j) (5)
而i=0-7,j=0-31。
由式(4)和(5)可看到,在进行合成子频段滤波处理中,需要包含上述步骤P23中求得的64个V向量的全部1024个V向量。1024个V向量是由不同的子频段样值数据S的组(1组32个)中每64个所计算出的,被存贮在图28所示的V向量RAM的0地址到1023地址中。
接着在步骤P25中,将上述步骤P24中变换得的U向量乘以规定的窗系数D计算出512个W向量。亦即,按下面式(6)求出此W向量。而上述窗系数则按MPEG标准确定。
W(i)=U(i)×D(i) (6)
其中i=0-511
然后在步骤P26中利用上述步骤P25中求得的W向量按下面式(7)计算出32个PCM数据。这样求得的32个PCM数据在下面的步骤P27中被向外部输出。
此后在步骤P28中判定译码处理是否结束,在译码处理未结束时,返回到步骤P21的处理,开始下一32个PCM的运算处理。这种直到步骤P28的处理在层I时重复12次,而在层II时重复36次,完成一帧的译码处理。
如上述那样,在历来的MPEG音频译码器中,在其输入级设置有用于暂时存贮由图22那样的位流组成的音频压缩数据的缓冲存贮器。而且此缓冲存贮器,为存放位流中的各个信息,分别地设置有各自专用的存贮器。
为此,为存放这些各种信息的缓冲存贮器,就必须具有符合于各种信息的全部数据量的存贮容量,也就存在着这种总的存贮容量成为极大的问题。
而且,上述音频压缩数据中所包含的各个样值是上述那种各自的位幅宽互相不同的。具体说,样值的位幅宽2-16毕特中各种各样的。因此,用于存放样值的缓冲存贮器,为了能在一个地址上存贮位幅宽最大的样值,就成为一字为16毕特宽。
可是,历来的MPEG音频译码器,为了使样值数据能以地址为单位读出,在存贮样值时尽管各样值的位幅宽各自不同,仍然是一个地址一个地存贮各样值的。
因此,虽然在存放16毕特宽的样值时很理想,但在存贮具于低于此位幅宽的样值时就成为一个地址内仅有一部分存贮有样值的情况。由此就出现了在用于存放样值的缓冲存贮器的整个存贮区中产生许多未存放样值而被浪费掉的区域的问题。
而且由上述式(1)可看到,在历来的MPEG音频译码器中为求得子频段样值数据S必须进行逆量化和逆换算两种处理,必须在各自的处理中进行乘法运算处理。
通常因为乘法处理运算量很大,在进行二次的乘法处理的现有方式中,就存在着整体运算负荷很重、处理时间很长的问题。
而且如上述那样,为生成PCM数据在一通道中必须有1024个V向量。因此,上述的V向量RAM在一通道中必须具有至少1024字的存贮器容量。这就是图28中所示的情况。
由于V向量为信息量大的数据,因而也存在着用于存放这样量很大的V向量的V向量RAM其存贮容量也就要很大的问题。
另外,在进行图27中所示的处理的MPEG音频译码器中,首先由开始一组子频段样值数据S中计算出64个V向量。而后利用由此64个V向量变换得的U向量计算出W向量,再利用此W向量生成32个PCM数据。亦即,历来如不进行图27的步骤P21-P25的处理的话,无法生成32个PCM数据。
为此,在这种情况下虽然不设置PCM数据输出用的存贮器也可以,但为使生成的PCM数据能作为音频数据连续地向外部输出,必须至少在运算部分设置保存为在一个通道中生成32个PCM数据的数据的存贮器。而通常为保留这种程度的空间,采用具有100个字存贮容量的存贮器的情况就很多。
因此,现有的MPEG音频译码器为将PCM数据作为音频数据连续向外部输出,就不得不设置大容量的存贮器。
下面根据附图对应用于MPEG音频译码器的本发明第一实施例进行说明。
图1为说明按照本实例的译码器的整体结构的方框图。首先利用此图1简单说明各部分的结构和操作。
图1中,1为数据输入部,输入由图22中所示的位流构成的MPEG标准的音频压缩数据。如先前所述那样,上述音频压缩数据以图22中所示的位流顺序被输入到该数据输入部1。在数据输入部1的内部设置有标题寄存器1a,存放上述位流中的开头所包含的标题信息。
2为CRC检测部,根据CRC(CRC检测字)检测出位流中的差错。亦即,CRC检测部2将16位的CRC检测字的值与对在其前面输入的标题和在上述CRC检测字后输入的分配信息、scfsi、换算因子的各个值施加原先规定的运算所得到的结果的16位的值加以比较。从而按照检验此两个值的是否一致来进行差错检测。
3为AS-RAM(Allocation.Scale Factor-RAM,分配信息和换算因子RAM)块,用于暂时存贮由上述数据输入部1送来的分配信息、scifsi和换算因子。在本实施例中,在此AS-RAM块3内的某一存贮区中一次存贮的scfsi为其后所输入的换算因子重写入那样来构成。因而,此AS-RAM块3中最后成为仅仅存贮有分配信息和换算因子。
4为样值RAM块,暂时存放由上述数据输入部送来的样值(如后述那样,在能被送入样值代码时将其变换为样值),同时,在读出该样值时,就成为要得到上述的(1)式中所示的(S”+D)的值。
这样,在本实施例中,在音频压缩数据所包含的各种信息中,另外设置有用于暂时存贮作为可变长数据的样值的样值RAM块4和用于暂时存贮表征该样值的数据(分配信息、scfsi、换算因子)的AS-RAM块3。这一点,与各个地设置用于存贮各种信息的存贮器的历来的方式是不同的。
5为运算部,利用分别由上述AS-RAM块3和样值RAM块4读出的分配信息、换算因子和样值进行前述的逆量化处理、逆换向处理和合成子频段滤波处理,由此生成PCM数据。
6为系数ROM块,预先存贮上述运算部5中进行逆量化处理、逆换算处理和合成子频段滤波处理时所用的各种系数。
7为V向量RAM块,用于暂时存贮由上述运算部5中的逆量化处理和逆换算处理求得的子频段样值数据S,和合成子频段滤波处理的过程中由子频段样值数据S求得的V向量。
8为作为输出手段的输出接口部,用于输出由上述运算部求得的数字PCM数据。该PCM数据由图中未表示的D/A变换器变换成模拟信号。
9为音频视频同步用定时器,被用于取得由上面所示结构的音频译码器再现的PCM音频数据,与由图中未作出的视频译码器再现的视频数据之间的同步。
10为数据母线,在运算部5和V向量RAM块7和输出接口部8之间相互传送上述运算部5中所求得的子频段样值数据S、V向量和PCM数据。
下面对上述那样构成的本实施例的译码器的各组成块,参照以下附图作更详细的结构和操作上的说明。
图2为表示上述AS-RAM块3的结构的图形。由此图2可看出,AS-RAM块3由第一串行/并行变换部(S/P变换部)11、分配信息变换部12、作为scfsi和换算因子写入手段的第一写入部13、SA-RAM14、和第一读出部15构成。
上述第一S/P变换部11将由数据输入部1以串行数据形式送来的分配信息、scfsi和换算因子分别变换成并行数据形式。上述分配信息变换部12,在分配信息被输入的情况下将其变换成后述那样的规定数据。
而上述AS-RAM14用于暂时存贮经并行变换后的分配信息、scfsi和换算因子。对AS-RAM14进行这些各种信息的读写,由上述第一写入部13和第一读出部15进行。
如图2中所示那样,第一写入部13设置有重写手段13a。此重写手段13a,如后述那样,使得在已被写入有scfsi的AS-RAM14的存贮区中重写入在其后输入的换算因子加以存贮。
由上述第一读出部15从AS-RAM14读出的分配信息、scfsi和换算因子被在上述第一写入部13和样值RAM块4内的样值变换部22(图5中后面叙述)以及图1中所示运算部5中的处理加以利用或参照。
下面说明上述那样构成的AS-RAM块3的操作。如上述,在图1的数据输入部1中被按各图的顺序输入图22那样的位流中所含的各个信息。因而,在分配信息被传送到AS-RAM块3之前,已经对被输入到数据输入部1的标题和CRC进行了以下的处理。
亦即,开始由数据输入部1输入标题,它被存贮在数据输入部内的标题寄存器1a中。然后由数据输入部输入CRC,它被传送到CRC检测部2。接着由CRC检测部2检查该帧内是否存在位差错。
然后在数据输入部1输入分配信息后,即以串行数据形式将其传送到图2中所示的第一S/P变换部11。在第一S/P变换部11中分配信息每次一字地由串行数据变换成并行数据。而后,经这样被作并行变换的分配信息通过分配变换部被给予第一写入部13,被存贮进AS-RAM14内的分配信息用字段。
由图2所示的AS-RAM14可清楚看到,在本实例中,将一个RAM分成为分配信息用字段(图中表示为分配)和scfsi用字段(图中表示为“scfsi”)和换算因子用字段(图中表示为换算因子0,换算因子1,换算因子2)。
如上述那样,音频数据被分割成32个子频段(子频段号sb=0-31),在每一子频段被编码中,各子频段中包含二个通道(通道号ch=0或1)。因此,在上述的各信息用字段中,准备有用于存贮有关各子频段的各个通道的信息的地址0-63。
上述分配信息为各子频段的每一通道一个地被准备,按图2中所示的〔sb0,ch0〕、〔sb0,ch1〕、〔sb1,ch0〕、……的顺序存贮到AS-RAM14的专用字段中。而在层II中,对于子频段sb30、sb31不存在有分配信息,分配信息被存贮在最大到子频段sb29(到地址29为止)。
可是分配信息是在其后输入的scfsi、换算因子和样值数据的要素分割处理和为生成PCM数据的译码处理等的种种处理中所要利用的数据。因此,每次进行这些处理均要参照图23那样复杂的表就很不方便。
为此,在本实施例中,为消除这种不便,采用分配信息变换部12将分配信息予先变换成例如图3中所示那样的分配信息代码并使之存贮在AS-RAM15中。
图3中所示的分配信息代码,以其最高位(MSB)表示是样值还是样值代码,低位4毕特表示样值的位幅宽。亦即,在最高位为“0”的情况下表示该样值数据是样值,而在为“1”的情况下表示是样值代码。而低位4毕特所代表的二进数的值表示样值的位幅宽。
如由图23可看出的那样,由于样值的位幅宽不会是1毕特,所以在低位4毕特的二进制0001中,样值的位幅宽分配作为16位的信息。而在分配信息代码为二进制00000的情况,表示对应的子频段、通道中不存在任何的scfsi、换算因子和样值。
下面,在当scfsi由数据输入部输入后,即被以串行数据形式传送到图2中所示的第一S/P变换部11。在第一S/P变换部11中,scfsi以每一元素单位(2毕特)由串行数据形式变换成并行数据形式。然后经这样作并行变换的scfsi被送至第一写入部存放在AS-RAM14中。
在写入这一scfsi中,第一读出部15由小地址开始顺次读出AS-RAM中已存贮的分配信息,在其被确认非“0”即被写入。如上述这样,在分配信息为“0”的情况下,是因为对应的子频段、通道中不存在有scfsi。
亦就是说,首先读出含有子频段sb0、通道ch0的分配信息的地址0的数据。然后在当此读出的分配信息不是“0”时,再次将此分配信息、上述以元素单位作并行变换的scfsi写入地址0。而在分配信息为“0”的情况下,仅将此分配信息再次写入地址0。
下面重复同样处理直至地址63(而在层II的情况下为直至地址59为止)。这样,在AS-RAM中分配信息和scfsi被分别存放在各自专用的字段中(图2中以分配信息、“scfsi”所示的区域)。
接着在数据输入部1输入换算因子时,将其以串行数据形式传送到第一S/P变换部11。在第一S/P变换部11中,换算因子被由串行形成变换为并行数据。然后经这样作并行变换的换算因子被送到第一写入部13存放在AS-RAM14中。
在写入这一比例因子时,第一读出部15由小地址开始顺序读出AS-RAM14中已存贮着的分配信息和scfsi,这些内容在确认后被写入。亦即,首先一开始读出含有子频段sb0、通道ch0的分配信息和scfsi的地址0的数据。然后,认定此所读出的分配信息是否是“0”。
这里,如果读出的分配信息是“0”的话,因为对应子频段sb0、通道ch0中不存在比例因子,所以不在该地址0中写入换算因子。另一方面,如果分配信息不为“0”,接着就认定scfsi的值,判断该子频段sb0、通道ch0中存在什么样的换算因子。
而在进行这样的判断之后,以串行数据形式输入的换算因子由第一S/P变换部11作并行变换,并将此经过并行变换的换算因子和上述第一读出部15所读出的分配信息再次写入地址0。
此时的换算因子被写入到AS-RAM中的换算因子0、换算因子1、换算因子2的所有字段中。例如由图24中可看到,在scfsi的值为二进制10时,虽只存在一个换算因子、此一个的值a则被写进换算因子0-2的所有字段中。
可是,scfsi仅仅表示其后输入的换算因子在各子频段的各个通道中哪一个存在的情况。因而,如果读出一次scfsi确认换算因子的个数,以后就不再需要了。
因此,在本实施例中,当写入换算因子时,与上述分配信息同时读出的scfsi就不再被写入地址0。而后如图2中所示那样,使换算因子0的字段的一部分与上述scfsi的字段重复来写入换算因子。亦即,在本实施例中,是在已写入有scfsi的字段中重写换算因子并加以存贮。
下面重复进行同样的处理直到地址63为止(而在层II的情况下则到地址59为止)。据此,AS-RAM14中,分配信息和换算因子即被分别存放在各自专用的字段中(在图2中以分配信息、换算因子0、换算因子1、换算因子2所示区域)。
由此,在本实施例中,将一个AS-RAM分成为分配信息用字段和scfsi用字段和换算因子用字段(使其一部分与上述scfsi的字段重复)加以利用,在一次读出scfsi之后,即由其后输入的换算因子重写。
因此,如按照本实施例,AS-RAM的整个存贮区域中的一部分就可能为用于暂时存贮scfsi的存贮区和用于暂时存贮换算因子的一部分的存贮区所共用。因而,由于即使不准备scfsi专用的缓冲存贮器也可,所以比之另外设置scfsi专用的缓冲存贮器的历来技术,能够减少整体的存贮容量。
而且在上述实施例中,是使得分配信息、scfsi和换算因子被存贮在一个的AS-RAM14中。不过本发明中,也可使得在一个RA M中至少存贮scfsi和换算因子,不一定必须将分配信息存贮在同一RAM内。
接着由图1中所示数据输入部1输入样值数据,将其传送到样值RAM块4。上述样值数据是按照图4的箭头所示顺序被输入到数据输入部1的。
亦即,如以sp(ch,sb,GR)定义各样值数据〔以GR(=0-2)表示一帧中在时间轴方向上存在的36个样值数据中3个一组地汇集成的各组0-11中的序号〕,即以sp(0,0,0)、sp(0,0,1)、sp(0,0,2)、sp(1,0,0)、sp(1,0,1)、sp(1,0,2)、sp(0,1,0)……sp(1,31,2)的顺序输入到数据输入部1,并传送至样值RAM块4。
此样值RAM块4,如图5所示那样,由第二S/P变换部21、样值变换部22、作为样值写入手段的第二写入部23、样值RAM24、和作为样值读出手段的第二读出部25构成。
这里,上述第二S/P变换部21将由数据输入部1以串行形式送来的样值或样值代码变换成并行数据形式。所述样值变换部22在输入样值代码的情况下对其进行分解变换成3个的样值信息。
上述样值RAM24暂时存放经过并行变换的样值,利用上述第二写入部23和第二读出部25进行读写。该样值RAM24的一个字被设计得合并成作为样值最大位幅宽的16毕特位(2字节)。
由上述数据输入部1以串行数据形式向样值RAM块4传送的样值数据,首先被输入到第2S/P变换部21。在第二S/P变换部21中,上述样值数据由串行数据形式每2字节地被变换成并行数据形式。然后此经过并行变换的样值数据通过样值变换部22被送至第二写入部23,存贮在样值RAM24中。
在写入这种样值数据时,在对由数据输入部1传送来的样值数据的毕特数加以计数的同时,由图2的AS-RAM14中从小地址开始顺序读出各子频段、通道的分配信息。由此来不断地监视能传送对应于哪一个子频段、通道的样值数据。
亦就是说,在样值数据写入时,由AS-RAM14读出的分配信息为原始样值数据的位幅宽,确认该样值数据为样值还是样值代码。
然后,在当所输入的样值数据为样值代码时,将该样值代码由样值变换部22分解成3个样值,然后存贮到上述样值RAM24中。而在由样值代码析取3个样值时进行下述这样的处理。
for(i=0;i<3;i++){
s〔i〕=c%nelvels
c=c div nelvels
}
其中,s〔i〕(i=0-2):3个样值
C:初始值样值代码
nelvels:3或5或9
%:余项
div:商
如由图5可了解的那样,按本实施例的第二写入部23对位幅宽不同的多个样值,不是一个一个地写入样值RAM24的一个字,而是接着前面写入的样值作装填式写入。
由此,在样值RAM24的一个地址内就存贮有数个样值。而如斜线部分所示,在一个地址内的剩余存贮区不足时即使用下一地址的存贮区存放一个样值,也就是,会经常发生一个样值跨越2个地址被加以存贮的情况。
也就是说,在样值RAM24中,按照sp(0,0,0)、sp(0,0,1)、sp(0,0,2)、sp(1,0,0)、sp(1,0,1)、sp(1,0,2)、sp(0,1,0)……sp(1,31,2)的顺序。由小地址开始依次连续存贮多个样值。这样,在本实施例中,由于样值RAM24中所存贮的样值的边界与各个地址的边界不一致,即可以说是不进行对准的。下面称这一状态为不对准状态。
按上述这样,分配信息、换算因子和样值被顺序存贮进AS-RAM14和样值RAM24中,在存贮到某种程度的量时,即由第一和第二读出部15、25将其读出,送至运算部5。
上述第二读出部25逐个地读出样值RAM24中以不对准状态存贮的多个样值,同时将该读出的样值与规定的逆量化系数D相加后输出。
亦即,此第二读出部25,在样值被存放在样值RAM24的一个地址内时,即由该地址取出一个样值的信息。而在样值跨越二个地址存贮时,即由此二个地址取出一个样值的信息。此时,将取出的样值的最高位(MSB)反相。
然后,将这样以MSB反相后的状态取出的样值S”与规定的逆量化系数D相加。而被加在由样值RAM24读出的样值上的逆量化系数D则根据上述分配信息的值来确定。
图6为表示上述第二读出部25的构成的方框图。如图6中所示,第二读出部25由样值指定手段31、第一和第二锁存手段32,33、第一和第二样值取出手段34、35、判别手段36、转换手段37转换手段38、和逆量化系数存贮手39组成。
上述样值指定手段31指定要由样值RAM24读出的样值的地址和在该地址内的位置。第一锁存手段32用于依次锁存由按上述样值指定手段31指定的地址读出的数据(含有不定数个的样值),在本实施例中由16毕特组成。第二锁存手段33顺次锁存上述第一锁存手段32的输出,同样由16毕特组成。
第一样值取出手段34由锁存在上述第二锁存手段33中的16毕特数据中取出一个样值。此第一样值取出手段34,在当一个样值被存贮在一个地址内时,利用该地址的16位数据,仅取出要读出的一个样值。
具体说,如图7A和7B中所示,第二锁存手段33中锁存的16位数据中所含的一个样值(图7A中斜线表示的部分)向右移位达到1字的最前面所需的毕特位,同时将被作移位样值(图7B的斜线部分)以外的一个字中的毕特全部置“0”,由此来仅取出要读出的一个样值。此时,将所得到的样值的MSB作毕特位反相。
第二样值取出手段35由上述第一和第二锁存手段32、33中锁存的各16毕特数据中取出一个样值。此第二样值取出手段35,在当一个样值跨越两个地址被存贮时,利用该二个地址的各个16毕特数据,仅仅取出一个要读取的样值。
具体说,如图7C-7E中所示那样,第二锁存手段33中锁存的16毕特数据中所含的一个样值的一部分(图7D的斜线部分)作右移位以达到一个字的最前面所需的毕特位。而第一锁存手段32中锁存的16毕特数据中所含的上述一个样值的剩余部分(图7C的斜线部分)作左移位以达到上述右移位的样值的后续地点所需的毕特位,由此来生成一要读出的样值。
然后,将这样生成的样值以外的一个字中的毕特位全都置“0”,同时将所得到的样值的MSB作毕特位反相,由此来从二个地址的各16毕特数据中取出要读取的一个样值。
图6所示的判别手段36判断要由样值RAM24中读出的一个样值是被存贮在样值RAM24的一个地址内,还是跨越二个地址被存贮的。转换手段37根据上述判别手段36的判断结果来对上述第一样值取出手段34或第二样值取出手段35的一个进行转换,将由某一个取出手段所取出的样值S”输出给下一级的加法手段38。
逆量化系数存贮手段39为存放逆量化系数的R0M,将与AS-RAM块3所提供的分配信息相对应的逆量化系数D输出到加法手段38。
加法手段38将以MSB反相状态取出的样值S”与逆量化系数D相加。其加法结果(S”+D)被送至图1的运算部5,供逆量化处理和逆换算处理中应用。
图8为表示具体实现图6中所示的第二读出部25时的构成的电路。
图8中,40为第一地址发生器,包含图6的样值指定手段31和判别手段36。41、42为第一、第二分配信息寄存器,锁存由图2中所示AS-RAM14输入的分配信息。
这里,上述第一分配信息寄存器41锁存对应于通道ch0的分配信息,上述第二分配信息寄存器42锁存对应于通道ch1的分配信息。在下面将以a10表示第一分配信息寄存器41中锁存的分配信息值,以a11表示第二分配信息寄存器42中锁存的分配信息值。
如上述所示,在层II的情况下,分配信息,参照根据图3中所示那样的MPEG1标准规定的分配信息表,予先被变换成表示对应的样值的位幅宽的值,将其存贮进上述AS-RAM14中。因此,上述分配信息的值a10、a11分别表示对应的样值的位幅宽。
43为分配信息译码器,由上述第一和第二分配信息寄存器41、42顺次输入分配信息,按照图9中所示的处理内容输出表示规定值的数据。
例如,在对应于所输入的分配信息的通道号为ch=0、组内号为GR=0时,输出作为表示上述规定值的数据“0”。而在对应于所输入的分配信息的通道号为ch=0、组内号为GR=1时,输出作为上述规定值的对应于该分配信息的样值的位幅宽值。在输入具有其他通道号、组内号的分配信息时,按照图9的相应算式计算规定,并将其输出。
图8中,44为第一加法器,利用上述第一和第二分配信息寄存器41、42中锁存的分配信息值a10、a11进行
(a10+a11)×3的运算。45为第一选择器,由上述第一和第二分配信息寄存器41、42中锁存的分配信息中选择输出一方。
46为第二加法器,将上述第一加法器44所输出的数据与由第二寄存器49输出的数据相加。这里,上述第二寄存器49用于锁存由第二选择器47输出的数据,上述第二选择器47在由上述第二加法器46输出的数据与由第一寄存器48输出的数据中选择一个。
上述第一寄存器48用于锁存由上述第二寄存器49输出的数据。在译码处理的初期阶段中,表示样值sp(0,0,0)的MSB的位置的值被存贮在该第一寄存器48中。
50为第三加法器,将由上述分配信息译码器43输出的数据与由上述第二寄存器49输出的数据相加。51为第三选择器,用于选择由上述第三加法器50输出的数据与由第四加法器53输出的数据中的一个。这里,上述第四加法器53在地址寄存器52所输出的数据上加以十进制数16,即二进制1000,再予输出。
上述地址寄存器52用于锁存上述第三选择器51所输出的数据。此地址寄存器52中锁存的数据表示要由样值RAM24读取的样值的地址和该地址内MSB的位置。
54为译码器,将由上述第一选择器45输出的数据与由上述第三加法器50输出的数据的低位4毕特相加,判断此加法结果是否成为大于十进制17。而后,在此加法结果成为十进制17以上时和在小于十进制17时,在下一机器周期分别输出使输出成为“Hi”和成为“Lo”的控制信号OF-P。此译码器S4与图6中所示的判别手段36相对应。
55为第一样值寄存器,用于顺次锁存按样值RAM24的各地址读出的16毕特数据。56为第二样值寄存器,用于顺次锁存由上述第一样值寄存器55输出的数据。这些第一和第二样值寄存器55、56分别与图6中所示的第一和第二锁存手段32、33相对应。
57为数据发生器,由上述第一和第二样值寄存器55、56中各自锁存的16毕特数据中仅仅取出应读取的一个样值S”,同时在此被取出的样值S”上加以逆量化系数D。此数据发生器57具备有图6中所示的第一和第二样值取出手段34、35,转换手段37以及加法手段38。
下面对如图8那样构成的样值存贮块的操作进行说明。这里以周期划分来说明一连串的操作。首先对图8中以点线围绕的第一地址发生器40的操作进行说明。
(1)第一周期
首先开始由图2中所示的AS-RAM14输入对应于子频段sb0、通道ch0的分配信息和对应于子频段sb0、通道ch1的分配信息,分别在第一和第二分配信息寄存器41、42中加以锁存。
与此同时,由第二选择器47选择端接A值输入的数据。由此将第一寄存器48中所存贮的数据锁存到第二寄存器49中。译码开始时,由于第一寄存器48中被置为初始值“0”,所以第二寄存器49中锁存“0”。
在分配信息译码器43中,根据上述第一和第二分配信息寄存器41、42中锁存的分配信息计算规定的值,并将其输出到第三加法器50。例如,在通道号为ch=0、组内号为GR=0的情况下,按照前面所示的图9的处理内容输出规定值“0”。
第一选择器45选择端接A侧。由此将上述第一分配信号寄存器41中锁存的分配信息输出至译码器54。
译码器54将上述第一选择器45所输出的数据与第三加法器50所输出的数据的低位4毕特相加,判断此加法结果是否成为大于十进制17。
上述第三加法器50输出的数据的低位4毕特表示要由样值RA M24读取的样值信息的MSB的字内的位置。而第一选择器45输出的数据则表示该样值的位幅宽。从而,译码器54中的上述加法结果即表明要读出的样值的最低位毕特(LSB)的位置。
因此,在这一加法结果成为十进制17以上时,即可判断该要读取的样值是被跨越样值RAM24的二个地址加以存贮的。
译码器54根据这样的判断结果在下一个第二周期输出持有“Hi”或“Lo”值的控制信号OF-P,将其提供到第三选择器51的控制端。而在第一周期中,第三选择器51选择端接A侧。由此选择第三加法器50所输出的数据,输出给下一级的地址寄存器52。
(2)第二周期
接着,由上述第三选择器51输出的数据被锁存在地址寄存器52中。此时,除去地址寄存器52的低位4毕特的高位毕特数据,表示存贮着要由样值RAM24读取的样值的MSB的地址。
此高位毕特数据被送往样值RAM24的未加图示的地址输入部。由此将在该被指定的地址上存贮着的16毕特数据读出,在后面第三周期被锁存到第一样值寄存器55。
在此第二周期中,根据上述第一周期中被输入到译码器54的数据确定控制信号OF-P的值。如果控制信号OF-P的值为“Hi”,第三选择器51即选择被输入到端接B侧的数据。由此使得在地址寄存器52中锁存的数据上加以十进制16的值后的数据由第三选择器51输出。另一方面,如果控制信号OF-P的值为“Lo”,第三选择器51即选择输入到端接A侧的数据。由此,第三选择器51输出与上述第一周期相同的值。
(3)第三周期
由上述第三选择器51输出的数据被锁存到地址寄存器52。此时,除去地址寄存器52的低位4毕特的高位毕特数据,表示要读取的样值的LSB被存贮的地址。此高位毕特数据,与上述的第二周期同样地被送到样值RAM24的图中未表示的地址输入部。
由此读出在该指定的地址上存贮的16毕特数据,并将其在下面第四周期锁存进第一样值寄存器55。此时,在上述第二周期被锁存到第一样值寄存器55中的16毕特数据,同样在下面第四周期锁存到第二样值寄存器56。
与此同时,下面的分配信息被锁存到第一和第二分配信息寄存器41、42。而第二选择器47选择被输入到端接B侧的数据,亦即第二加法器46所得的加法结果。
在上述第一周期中第一和第二分配信息寄存器41、42中被锁存的分配信息的值分别为a100、a110时,由上述第二加法器46输出的数据的值,由于第二寄存器49中的数据为“0”,所以成为
(a100+a110)×3。
因而,在第二寄存器49中重新锁存这一值。
第一选择器45选择端接A侧,因而在此第三周期锁存到第一分配信息寄存器41中的分配信息A101被输出给译码器54。译码器54将由上述第一选择器45输出的数据与由第三加法器50输出的数据的低位4毕特进行相加,并判断其加法结果是否超过十进制17。由此来判断下一应读出的样值在样值RAM24中是否是被跨越二个地址存贮的。
译码器54根据这样的判断结果在下面第四周期输出持有“Hi”或“Lo”值的控制信号OF-P,并将其提供给第三选择器51的控制端。在此第三周期中,第三选择器51选择端接A侧。由此选择第三加法器50所输出的数据并输出给下一级的地址寄存器52。
(4)第四周期
上述第三选择器51所输出的数据被锁存到地址寄存器52中。此时,除去地址寄存器52的低位4毕特的高位毕特数据,表示存贮着下一应读取的样值的MSB的地址。此高位毕特数据与上述的第二周期相同地被送往样值RAM24的图中未表示的地址输入部。
从而将该被指定的地址上存贮的16毕特数据读出,并将其在下面第五周期锁存到第一样值寄存器55中。此时,上述第三周期中被锁存在第一样值寄存器55中的16毕特数据同样在下面第五周期被锁存到第二样值寄存器56。
(5)第五周期
进行与上述第三周期相同的处理。
依靠重复进行以上这样的处理,首先读出对应于由图4中时间轴方向上看的样值No.0、通道ch0、各个子频段sb0-31的样值。在下一步骤读出对应于由时间轴方向看的样值No.0、通道ch1、各个子频段sb0-31的样值。
而在读出对应于子频段sb0、通道ch1的样值时,由第二选择器47开始时选择端接A侧的数据,将第二寄存器49中锁存着的数据锁存进第一寄存器48。
下面对由时间轴方向看的样值No.1、2进行同样的读出处理。而后在完成组0的样值的读出后开始进行下一个组1的样值读出时,起初更新第一寄存器48的值。亦即,在对组0的运算之后,在第二寄存器49中保存下面式(8)中所示的值,由将此值锁存进第一寄存器48来进行值的更新。
然后,进行与上面所述同样的处理直至组0-11,从而结束一帧的样值读出处理。
下面,参照图7A-7E和8来说明并行进行上述的第一~第五周期的处理的数据发生器57中的处理内容。
如上述那样,此数据发生器57由分别被锁存在第一和第二样值寄存器55、56的16毕特数据中仅取出应该取的一个样值S”,同时进行对该取出的样值S”加以层II中的逆量化系数D的加法处理。
如图8中所示,数据发生器57分别输入地址寄存器52中锁存的数据的低位4毕特i、由第一选择器45输出的分配信息j、由译码器54输出的控制信号OF-P。然后数据发生器57将这些数据值作为控制输入取出一个样值。
在这里,地址寄存器52中锁存的数据的低位4毕特i的值表示要由样值RAM24读出的样值字内位置。而上述分配信息j的值表示上述要读出的样值的位幅宽。由译码器54输出的控制信号OF-P的值则表明上述要读取的样值在样值RAM24中是否是被跨越二个地址存贮的。
在上述控制信号OF-P的值为“Lo”时,如图7A和7B中所示,使第二样值寄存器56中锁存的16毕特数据右移位i毕特,以使该16毕特数据中所包含的一个样值到达一个字的开始部分。
与此同时,将该被移位的样值以外的一个字内的(16-j)毕特全部置“0”,由此来仅只取出要读取的一个样值。此时再将所得到的样值MSB作毕特位反相来获得目标样值S”。
而在控制信号OF-P的值为“Hi”时,如图7C-7E中所示,使第二样值寄存器56中锁存的16毕特数据作右移位i毕特,以此来使得该16毕特数据中所包含的一个样值的一部分达到一个字的起头部分。
与此同时,使第一样值寄存器55中锁存的16毕特数据作左移位(16-i)毕特,以使得该16毕特数据中所含的上述一个样值的剩余部分接续在上述作i毕特右移位的样值之后。这样来生成要读出的一个样值。
然后,将这样生成的样值以外的剩余的(16-j)毕特全部置“0”,同时将所得到的样值的MSB作毕特位反相,从而能由二个地址的各16毕特数据中仅只取出要读取的一个样值S”。
接着,将上面这样取出的样值S”上加以持有对应于分配信息j的值的逆量化系数D,由此来得到式(1)中的(S”+D)的值。
这样,在本实施例中,由于设置成能够逐个地读出样值RAM24中以不对准状态存贮的样值这样的结构(第二读出部25),就可能由第二写入部23将位幅宽不相同的多个样值顺次装填地写入样值RAM26的存贮区中,而使得能够在一个地址内存贮数个样值。
由此,就可能在整个的样值RAM24存贮区中免除未存放样值的无用区间,从而能有效利用样值RAM24的存贮区间。并由于也可以不必准备存贮的样值数量的地址,也就能尽量减少用于存贮一整个帧的样值的样值RAM24的存贮容量。
在本实施例中,由于存在着一个样值在样值RAM24内跨越二个地址存贮的情况,所以在取出一个样值S”时,连续进行二次对存贮器地址的访问,将由此得到的各个数据锁存在第一和第二样值寄存器55、56中。然后由该各个数据中取出一个样值。
为此,在作流水线处理时,在进行这一锁存处理之间得到充分的进行S”+D的加法的时间。因此,采用本实施例就可能以一个机器周期进行样值S”的读出处理和S”+D的加法处理。
与此相反,历来的处理是,在读取一个样值S”时不进行锁存处理,而且S”+D的加法处理是由准备用于进行逆量化处理和逆换算处理的另外的乘法加法器来进行的。因而,已经为进行样值S”的读出处理和S”+D的加法处理需要二个机器周期。
按上述操作,由样值RAM24给图1中所示的运算部5读出样值后,在运算部5中进行由逆量化处理、逆换算处理和合成子频段滤波处理组成的译码处理,由此生成PCM数据。
在进行这种译码处理时,还经常由数据输入部1输入音频压缩数据的位流,顺序将各种信息存贮进图2中所示的AS-RAM14和图6或8中所示的样值RAM24中。
下面对译码处理进行说明。在此译码处理中,首先求取子频段样值数据S。历来,上述的子频段样值数据S是按照式(1)、式(2)的公式求得的。如图25所示那样,由于换算因子对应于0-62个“index”的值,所以能由式(2)将该指数分成为整数部m和分数部n作下式(9)那样的变形。
因子=21-index/3=2-m(2-n/3) (9)
其中m=-1-19,n=0-2
因此,式(1)即能利用此式(9)作下面的式(10)那样的变形。
S=2-m·(2-n/3×C)×(S”+D) (10)
而且,在当式(10)中2-n/3×C=C’时,就成为
S=2-m·C’×(S”+D) (11)
在本实施例中,根据式(11)进行逆量化运算和逆换算运算,由此来求取子频段样值数据S。这里由于式(11)中的2-m运算可以移位运算来进行,所以上述子频段样值数据S能以一次加法、一次乘法、一次移位运算的运算处理来求得。
如所周知,因为移位运算比乘法运算的运算负荷小很多,所以按照本实施例,比起必须连续进行二次运算负荷大的乘法的历来方式,能大幅度减少求取子频段样值数据S时的运算负担。
图10为简单表示用于实施这样的技术的构成的方框图。图10中,61为运算式生成手段,为对MPEG标准的音频压缩数据进行逆量化处理和逆换算处理的运算式,生成对根据历来的标准的运算式作变形的新运算式。
亦即,将由从激光盘等图中未表示的外部介质所输入的音频压缩数据中所含的换算因子的值所指定的运算值的指数分离成为整数部和分数部来将历来的式(1)加以变形,生成上述本实施例的式(11)那样的运算式。
62为乘法加法手段,根据由上述运算式生成手段16的生成的运算式,对所输入的音频压缩数据以乘法加法进行关于上述整数部的运算以外的运算。亦即进行上述式(11)中的C’X(S”+D)的运算。
63为移位手段,对由上述乘法加法手段62所进行的运算结果,以移位处理进行由上述运算式生成手段61所生成的运算式中的上述整数部的有关运算。亦即,进行乘以上述式(11)中的2-m的运算,由此求取子频段样值数据S,并将其输出给V向量RAM块7。
由此可知,乘法加法手段62含有图6中所示的加法手段38,(S”+D)的值在图1中所示的样值RAM块4中已经被求得。而作为进行上述乘法加法手段62中的乘法部分的移位手段63包含在运算部分5中,在此进行式(11)中的其余的运算。
运算部5,如图11所示,由第一选择器70、第一寄存器71、第二寄存器72、乘法器73、滚动移位器74、加法器75、第一累加器76、第二累加器77、第二选择器78、舍入及溢出校正电路79、和第一反相器80构成。
由上述样值RAM块4内的加法手段38计算得的(S”+D)值,通过第一选择器70被传送到第一寄存器71中加以保存。与此同时,与上述样值S”对应的子频段、通道的换算因子由图2中所示的AS-RAM14读出,与该值相应的系数C’由系数ROM块6读出。这样读出的系数C’被传送到运算部5中的第二寄存器72加以保持。
如图11中所示,系数ROM块6由存贮各种系数的多个系数ROM81-83、第一符号反相器84、和第二地址发生器85组成。根据所给予的分配信息和换算因子指定由第二地址发生器85读出的地址,由该被指定的地址读出规定的系数,所读出的系数的符号经第一符号反相器84作适当地反相后加以输出。
上述多个的系数ROM81-83中,C’系数ROM81用于存贮上述的式(11)中的系数C’的值。而D系数ROM82用于存贮在生成PCM数据时所利用的窗系数D1的值。Nik系数ROM84则用于存贮与求取V向量时所利用的余弦函数相关的系数Nik的值。
接着,上述第一寄存器71中所保存的加法结果(S”+D)与上述第二寄存器72中保存的系数C’在乘法器73中相乘。随后此乘法器73中的乘法结果{C’X(S”+D)}被送至滚动移位器74,进行2-m部分移位处理。
图12A-12C表示以流水线处理进行上述这样的逆量化运算和逆换算情况所需的全部机器周期数。图12A和12B表示按照历来的式(1)进行运算时的机器周期数,图12C表示按照本发明实施例的式(11)进行运算时的机器周期数。
图12A为表示一个系数ROM中存贮系数因子、系数C、系数D的各个值的情况。这时,最先,在第一机器周期中读出样值的MSB反相后的值S”和系数D。接着在第二机器周期中读出系数C,同时将上述第一机器周期中读出的样值S”与系数D相加。
下面在第三机器周期中,读出系数因子,同时将上述第二机器周期中读出的系数C与加法结果(S”+D)相乘。而后在第四机器周期中将上述第三机器周期读出的系数因子与乘法结果{CX(S”+D)}相乘,以此来求取子频段样值数据S。在此第四机器周期中由于读出下一样值S”和系数D,总共3个机器周期就求得子频段样值数据S。
图12B表示,设置有二个系数ROM,第一个系数ROM中存贮系数D,第二个系数ROM中存贮系数因子和系数C的情况。这样将系数ROM分成为二个时,因为可能在第三机器周期阶段读出下一样值S”和系数D,就有可能在整体上以二个机器周期求得子频段样值数据S。
与以上这样的现有例子相反,在表示本实施例的操作的图12C中,首先在第一机器周期由样值RAM24读取样值S”,同时由C’系数ROM81读取系数C’。在此第一机器周期中也同时进行将上述读出的样值S”与系数D在加法手段38中相加的处理。
如上述这样,在本实施例中为读出一个样值S”进行二次读出处理,到由样值RAM24取出一个样值S”为止,进行利用第一和第二锁存手段32、33的合成处理。因而从流水线处理看的情况,由于在进行此锁存处理之间得到充分时间进行S”+D的加法,所以就有可能在一机器周期中进行这样的加法处理。
接着,在第二机器周期,将上述第一机器周期中读出的系数C’与加法手段38中的加法结果(S”+D)相乘,同时对该乘法结果{C’X(S”+D)}进行2-m的移位运算。由于移位运算比乘法运算时间短很多,因而可能在同一机器周期中进行上述的乘法和移位运算。
下一个样值(S”+D)和系数C’的读出在第三机器周期进行。这如上述那样,为读出一个样值要进行二次由样值RAM24的读出处理。而系数C’与样值(S”+D)的相乘和2-m的移位处理则在第四机器周期进行。
据此,在本实施例中,满足子频段样值数据S的运算的情况虽然需要二个机器周期,而运算器则是每一机器周期地使用的。因此,利用空闲的机器周期来进行计算后述的PCM数据的最终运算(V向量与窗系数Di的求积求和运算),从流水线看的情况中,就成为在一机器周期中进行子频段样值的运算,因而能大大缩短运算时间。
在如上述这样求得子频段样值数据S后,该求得的子频段样值数据S即通过图1中所示数据母线10被传送到V向量RAM块7作暂时存放。
此V向量RAM块7如下面图13所示那样构成。亦即,此V向量RAM块7设置有第一RAM91、第二RAM92、作为V向量读出控制手段的第三地址发生器93、作为V向量读出手段的第三读出部94、第三写入部95、作为符号反相手段的第二符号反相器96、第二反相器97。
上述第一RAM91用于存贮通道ch0的子频段样值数据S和V向量,第二RAM92用于存贮通道ch1的子频段样值数据S和V向量。
亦即,上述第一和第二RAM91、92各自具有存贮对应于各子频段的32字的子频段样值数据S的子频段样值RAM部91a、91b,和存贮由此子频段样值数据S求得的512字的V向量的V向量RAM部91b、92b二个RAM部。
上述第一RAM91和第二RAM92中的各子频段样值RAM部91a、92a中暂时存贮的各32个子频段样值数据S,被再次读出到图11中所示的运算部5,在此计算出V向量。
如图27的步骤P23中所示那样,在历来的MPEG音频译码器中,由32个子频段样值数据S求出64个V向量。与此相反在本实施例的运算部5中仅求取32个的某种特定的V向量。下面对此作详细说明。
首先在图14中表明对上述64个V向量的相关性。
由图14可看到,第17号V向量V17-第32号V向量V32的值分别为第15号V向量V15-第0号V向量V0值作符号反相后的值。而第49号V向量V49-第63号V向量V63的值则分别与第47号V向理V47-第33号V向量V33的值相同。
因此,如设置按照被给予的控制信号使V向量作相适应的符号反相的机构,仅仅求取V向量V0-V16和V向量V33-V48的值,就能够由该所求得的值得到全部V向量V0-V65的值。而且因为V向量V16的值为0是已知的,因而不必对其进行运算。结果就成为只要计算V0-V15、V33-V48的32字的V向量就可以了。
因此在本实施例中,按照以下式(12)中的公式,由32个子频段样值数据S来求取上述的V0-V15、V33-V48的32个V向量。
(i=0-15,33-48)
这样求得的32个V向量被传送到上述第一RAM91和第二RAM92中的各V向量RAM部91b、92b中作暂时存贮。然后,上述V向量RAM部91b、92b中暂时存贮的V向量被再次读出到运算部,在此作规定的运算以生成PCM数据。
在此,运算部5利用由V向量RAM部91b、92b读出的多个V向量和由系数ROM块6读出的窗系数Di逐个地生成PCM数据。
图16为说明在上述那样求取V向量的同时直到由该所求得的V向量生成PCM数据为止的处理,亦即合成子频段滤波的处理的操作的流程图。这里是以针对通道ch0求取V向量的PCM数据的情况为例进行说明的。
图16中,开始在步骤P1将第一RAM91中的V向量RAM部91b的地址作32字移位。由此,如图17中所示那样,将V向量RAM部91b的自第0号地址开始至第32号地址空出,以保证由其计算出的V向量的存贮空间。
图15为以V’i表示用于存贮V向量的硬件上的地址(相当于上述V向量RAM部91b的每32个的地址),以Vi表示MPEG标准的V向量时,说明它们之间的关系。由此可看到,在V向量RAM部91b的第0号地址-第31号地址上顺次存贮V0-V15、V33-V48的32字的V向量。
然后在图16中所示的步骤P2,每一子频段中所求得的32个子频段样值数据S被输入到运算部5。再在步骤P3中根据前面步骤P2中所输入的32个子频段样值数据S计算出一个V向量。这样求得的V向量被存贮到V向量RAM部91b的新近给予保证的存贮区域中(第0号地址到第32号地址中的一个)。
下面在步骤P4中,当V向量RAM部91b读出上述步骤P3中求得的一个V向量和已根据过去输入的多组子频段样值数据S求得的、已被存放在V向量RAM部91b的第32号地址-第511号地址上的多个V向量。这一读出操作是由第三地址发生器93下面的第三读出部94进行的。然后即根据这些被读出的V向量计算一个PCM数据。
在读出此V向量时,第二符号反相器96按照第三地址发生器93所给出的控制信号Sc将由上述V向量RAM部91b读出的V向量的符号加以反相。亦即,第三地址发生器93在控制指定由V向量RAM部91b读出V向量时的地址的同时,向第二符号反相器96输出用于指明该读出的V向量的符号是否要加以反相的控制信号Sc。
例如说,在给出运算部5中要利用V向量RAM部91b中所存贮的V向量V0-V15或V向量V33-V48的第一利用请求信号S1时,第三地址发生器93按原样指定图15中所示的地址V’0-V’31。此时,如图13中所示,向第二符号反相器96输出以指示不进行符号反相的控制信号Sc。
而在被给予要利用上述V向量RAM91b中未存贮的V向量V17-V32的第二利用请求信号S2时,由于V向量V17-V32的值分别等于V向量V15-V0的值符号反相后的值(见图14),所以第三地址发生器93就指定图15中所示的地址V’15-V,0。此时,将指示进行符号反相的控制信号Sc输出给第二符号反相器96。
同样,在被给予要利用V向量RAM部91b中未存贮的V向量V49-V63的第三利用请求信号S3时,由于V向量V49-V63的值分别等于V向量V47-V33的值(见图14),第三地址发生器93就指定图15中所示的地址V,30-V’16。此时,向第二符号反相器96输出指示不作符号反相的控制信号Sc。
下面,将上述步骤P4中求得的一个PCM数据在后面的步骤P5传送到输出接口部8向外部输出。此时,输出接口部8将运算部5所求得的每一个PCM数据由PCM数据变换成模拟信号向外部输出。
现在对上述步骤P3和步骤P4中的处理内容作更详细说明。历来是按照式(7)所示的算式来求得32个PCM数据。亦即,利用由V向量生成的多个W向量来求得32个PCM数据。而如将此式(7)展开,就可表示成式(13)这样。
PCM0=W0+W32……+W480
PCM1=W1+W33……+W481 (13)
_
PCM31=W31+W63……+W511
而且,如将此式(13)利用式(4)-式(6)的关系加以变形,就可表示成下面的式(14)这样。在本实施例中,就是根据这一式(14)的算式来求取PCM数据的。
PCM0=D0×V0+D32×V96+…+D480×V992
PCM1=D1×V1+D33×V97+…+D481×V993
_ (14)
PCM31=D31×V31+D63×V127+…+D511×V1023
亦就是说,如由式(14)看可知,例如用于求取PCM数据PCM0的V向量为V0、V95…V992的V向量。这里V向量V0在上述步骤P3中求取,被存贮在V向量的RAM部91b的第0号地址上。
而V向量V96…V992是根据过去输入的多组子频段样值数据S已求得的并已被存贮的V向量RAM部91b的第32号地址-第511号地址上的。其中,V向量V96…V992的值本身并不限于实际求得后被加以存贮的,也有是根据图14所示的相关求得这些V向量的值被加以存贮的。
因此,在求取PCM数据PCM0时,只求取一个V向量V0,而依靠由第二符号反相器96作相应的符号反相来由V向量RAM部91b中读出其余的V向量V96…V992也可以。
因此,图13的第三地址发生器93在利用运算部5计算出V向量V0时,使得由V向量RAM部91b读出V向量V0、V96…V992这样来控制第三读出部94。关于其他的PCM数据PCM1-PCM31也是同样的。
而且这里在由运算部5计算出V向量V0时,虽然是使得由V向量RAM部91b读出的V0、V96…V992,对于V向量V0也可以采用由运算部5求取的方式本身。
接着在图16中所示的步骤P6中,判断32个PCM数据PCM0-PCM31是否已被全部输出。在还剩余有尚未输出的PCM数据时,返回到步骤P3的处理,以生成下一个PCM数据。另一方面,在32个PCM数据全都被输出后,则前进到步骤P7,判断译码处理是否结束。在译码处理没有结束时返回到步骤P1的处理,开始下面的32个PCM运算处理。
如上面所示,按照本实施例,在由一组子频段样值数据S生成的64个V向量中,仅求取V0-V15、V33-V48的32个V向量将其存贮在各V向量RAM部91b、92b中,而在读出时能够得到全部的64个V向量V0-V63的值。
因而,比起计算全部64个V向量再存贮进V向量RAM中的历来的MPEG音频译码器来,能够减少一半存贮V向量的数据量,从而能将V向量RAM部91b、92b的存贮器容量分别降低到历来的一半。亦即,针对历来一通道需要1024字的存贮器容量,在本实施例中只要512字的存贮器容量即可。
而且在上述实施例中由于设置有图13中所示的第二符号反相器96,从而就能只要求取相互间仅符号不同的V向量组中的一方的值再存贮到V向量RAM部91b、92b中。不过,即使不一定设置上述第二符号反相器96也可以。
在不设置上述这样的第二符号反相器96时,持有相互间相等值的V向组中的另一方的V向量虽然成为能不对其值进行计算存贮到上述V向量RAM部91b、92b中亦可,这种情况与以往的相比较仍然能减小上述V向量RAM部91b、92b的存贮容量。
由上述的式(12)可看到,V向量的计算是用乘法加法运算进行的,但如周知的,乘法是运算负荷很大的运算。因此,如采用本实施例,由于能减少一半V向量的计算量,所以能在减小运算负荷的同时取得高速度处理的结果。
在本实施例中,以流水线处理来进行上述那样的逐个生成PC M数据直至输出的一系列处理,在将一个PCM数据向外部输出期间生成下一个PCM数据。而且使得这种生成一个PCM数据所需的机器周期数与输出处理所需的机器周期数成为相同。
因此,如按照本实施例,不是由多个V向量生成W向量而是逐个生成PCM数据,从而能依靠在生成一个PCM数据期间将前面生成的一个PCM数据向外部输出来连续地输出PCM数据。
因而,即使不设置PCM数据输出用的存贮器和为保存用于生成PCM数据的数据的存贮器,也能不断地向外部输出PCM数据(音频数据)。
图18为概括地表明上述这样的本实施例的MPEG音频译码器中一系列的数据处理的流程的图形。为易于理解该本实施例中的数据处理流程中的特点,作为其比较示例,在图19中表示出历来的MPEG音频译码器中的数据处理流程。
由图19中可看到,历来用于存贮分配信息、scfsi、换算因子和样值的缓冲存贮器(RAM)都是分别专用地设置的。而后在各自的缓冲存贮器中存贮各自的信息。在译码处理中,在计算完32个PCM数据之后,将他们一个一个地加以输出。
与此相反,在图18中所示的本实施例中,将一个AS-RAM分成为分配信息用字段和scfsi用字段和换算因子字段(其一部分与上述scfsi字段相重复)来加以利用,一次读出scfsi之后,即以其后输入的换算因子重写。
而在译码处理中,逐个顺序生成PCM数据,生成一个PCM数据即直接输出,由此就能连续顺次输出PCM数据。
因此,采用本实施例由于整个AS-RAM存贮区域中的一部分能为暂时存贮scfsi的存贮器区和暂时存贮换算因子的一部分的存贮器区共用,所以即使不准备专用于scfsi的缓冲存贮器也可以。而且即使也不设置为保存为生成PCM数据时所用的数据的存贮器,也能不间断地向外部输出音频数据。
而虽然由图18不能明显看出,但样值RAM24的存贮容量和合成子频段滤波处理过程中所采用的V向量RAM部91b、92b的存贮容量可以比历来的要小,这在利用前面各附图已有了说明。
如以上所示,在本实施例的MPEG音频译码器中,其内部所设置的各种缓冲存贮器的存贮容量各自均能作得很小,因而从整体上看,就能使得内部存贮器的存贮容量作得比以往特别小得多。
以下的计算用来比较本发明与现有技术在运算部5中求取32个PCM数据时所需的机器周期数。
现有技术:
32个子频段样值 32×2=64周期
64个V向量 64×32=2048周期
32个PCM数据 32×16=512周期
总计 2624周期本发明
32个子频段样值 32×1=32周期64个V向量(32个V向量) 32×32=1024周期
32个PCM数据 32×16=512周期
总计 1568周期
这里是用图12B中所示的处理作为按照现有技术的处理和用图12C中所示的处理作为按照本实施例的处理来进行两者的比较的。而且这些计算是以能以一个机器周期作积和处理的装置进行比较的。
由这些计算可看到,采用本实施例的MPEG音频译码器,为生成32个PCM数据所需的机器周期数可减低到历来的约40%。因此就有可能高速度进行一系列的译码处理。
本实施如上述这样,设置有使得要在至少暂时存贮scfsi和换算因子的AS-RAM中,在已经存贮有上述scfsi的AS-RAM的规定存贮区中重写其后输入的换算因子的一部分来存贮换算因子的scfsi换算因子写入手段,因为使上述AS-RAM的存贮区域的一部分为用作暂时存贮scfsi的存贮区和用作暂时存贮换算因子的一部分的存贮区所共用,所以不设置scfsi专用的缓冲存贮器也可以,这样就能对用于暂时存贮音频压缩数据中所存在的各种信息的存贮器的容量,削减即使不设置用于存贮scfsi的专用存贮区亦可的这一部分。
而且由于设置有将多个样值顺序写入样值RAM的存贮区域并以不对准状态存贮的样值写入手段,和逐个地取出来读取上述样值RAM中以不对准状态存贮的多个样值的样值读出手段,就成为能在一个地址内存贮多个样值,能够免除样值RAM的整个存贮区域中出现未存贮样值的浪费空间,同时也可不必准备存贮的样值数量大小的地址而使得能最大限度地减小样值RAM的存贮容量。
而在由子频段样值数据生成的多个V向量中,对具有相关关系的V向量中的一方的V向量值进行运算存贮在V向量RAM中,在当具有利用请求的V向量未被存贮在上述V向量RAM中的情况下,由上述V向量RAM读出具有相关关系中V向量,在上述读出的V向量具有在相关关系上为相等的值时输出原样的值,同时,在仅仅符号不同的情况时由符号反相手段作符号反相加以输出,因此对具有上述相等值的V向量组中的另一的V向量和相互间仅符号不同的V向量组内的另一方的V向量值进行计算即使不存贮在上述V向量RAM中也能响应全部V向量的利用请求,从而能进一步削减为要得到由上述一组子频段样值数据生成的多个V向量的全部所必须存贮的V向量的数量,而能进一层减小必要的存贮容量。而且还能缩短合成子频段滤波处理中求取V向量时的处理时间。
而作为由运算手段求得的一个V向量和生成一个PCM数据所必须的多个V向量,是已根据在当前的子频段样值数据组之前输入的子频段样值数据组求得被存贮在不整齐地址上,由V向量RAM中读出的V向量,和规定的逆量化系数被用来进行乘法加法运算以逐个地生成PCM数据并每生成一个即向外部输出,所以即使不设置PCM数据输出用存贮器和保存用于生成PCM数据的数据的存贮器也能不间断地向外部输出音频数据,而能尽可能地减小为使得能不间断地向外部输出音频数据所必须的存贮器的容量。
由此,按照本实施例,要减小用于暂时存贮一系列译码处理过程中所得到的各种信息的译码器内部的各缓冲存贮器各自的存贮容量,或者可能存贮器本身成为不需要,这样就能使得MPEG音频译码器的内部存贮器整体的存贮容量较之现有技术大大减少。
而且本实施例如上述这样,根据将由音频压缩数据中的换算因子值指定的运算值的指数分离成分数部和整数部的算式进行由一次乘法加法运算和一次移位运算实现的逆量化处理和逆换算处理,这样就将历来的连续进行二次乘法替换成移位运算而能显著减轻运算负担。
而且由进一步设置对由进行锁存处理取出的样值和规定的逆量化系数进行相加的加法手段,在进行取出某一样值的处理期间就可能进行利用在此之前取出的样值的加法处理,从能就能在一个机器周期内进行上述样值取出处理和加法处理。
而如采用流水线处理进行逆量化处理和逆换算处理,上述取出样值作逆量化系数相加的处理,和利用由前一机器周期中的取出处理和加法处理所得到的信息的乘法处理和移位处理,全都能在一机器周期中进行,从而可能缩短进行逆量化处理和逆换算处理的处理时间。
如上述这样,按照本实施例,由于能一起缩短进行逆量化处理和逆换算处理时所需的时间,和其后的全成子频段滤波处理中求取V向量时所需的处理时间,所以较之现有技术能以极高的速度进行一系列译码处理。
下面根据附图对应用于MPEG音频译码器的本发明的第二实施例进行说明。图20为表示按照本发明的译码器的主要部分结构的方框图。
图20中,101为第一运算部,利用被输入的30个子频段样值数据S逐个计算V向量。102为V向量RAM,用于顺序存贮由上述第一运算部101求得的V向量。上述V向量的存贮由写入手段103完成。
不过,在MPEG1音频层I、层II,根据与求取32个PCM数据的不同的子频段样值数据S的组(1组32个)顺序计算64个中的每一个。这里,V向量的相关关系与图14中所示相同。
由图14可看到,V向量具有下面这样的关系。亦即
V向量V17-V32=-(V向量V15-V0)
V向量V49-V63=V向量V47-V33
因此,如拟图15所示这样的关系在V向量RAM 2中存贮V向量,按式(14),例如求取PCM数据PCM0-PCM31所需的V向量为V向量V0-V31。求取PCM数据PCM0-PCM15时求V向量V0-V15,求取PCM数据PCM16-PCM31时求V向量V33-V48。
这里,在求取PCM数据PCM16-PCM31时,虽然必须求V向量V16-V31,而按照图14的关系,由于已经计算存贮有PCM数据PCM0-PCM15,所以就可能以读出V向量V15-V1来进行处理(在求取PCM数据PCM16时虽然需要V向量V16,但由于V向量V16为0,所以使之与0相对应)。
104为读出控制部,控制读出手段105,进行对读出由上述第一运算部1求得的一个V向量(第0号地址-第63号地址中存贮的V向量)和根据过去输入的多组子频段样值数据S已求得的、已存贮在V向量RAM102中的多个向量(存贮在第64号地址-第1023号地址上的V向量)的控制。
106为第二运算部,利用按照上述读出控制部104的控制读出的多个V向量和由系数ROM107读出的窗系数D逐个地生成PCM数据。108为输出部,每当由上述第二运算部106求得一个PCM数据即将该PCM数据向外部输出。
下面对按上述这样构成的第二实施例的译码器的操作与图21中所示的流程图一齐加以说明。
在图21中,开始在步骤P11中,V向量RAM102的地址作64字的移位。由此,如图28所示那样,使得V向量RAM102的自第0号地址开始至第63号地址空出,以便保证由其计算的V向量的存贮空间。
而后在步骤P12,各子频段中被求得的32个子频段样值数据Si(i=0-31)被输入给图中未作出的内部存贮器。接着在步骤P13中,根据上述步骤P12输入的32个子频段样值数据S计算出一个V向量。这样求得的V向量被暂时存贮进V向量RAM102的新近所提供的存贮区域(第0号地址-第63号地址中的一个)中。
接着在步骤P14,由上述步骤P13中求出的一个V向量和根据过去输入的多组子频段样值数据S已求得并已被存贮在V向量RAM102的第64号地址-第1023号地址上的多个V向量,计算出一个PCM数据。这样求得的一个PCM数据在下一步骤P15被向外部输出。
现在对上述步骤P13和步骤P14中的处理内容作更详细的说明。历来是根据式(7)中的算式来求取32个PCM数据的,亦即,采用由V向量生成的多个W向量来求得32个PCM数据。而如将式(7)展开,就能表示为前述式(13)那样。
而如果利用式(4)-式(6)的关系将此式(13)加以变形,则可表示成式(14)这样。在本实施例中,即根据此式(14)的算式来求取PCM数据。
亦即,从式(14)来看,例如用于求取PCM数据PCM0。的V向量可看出是V向量V0、V96…V992。这里V向量V0是在上述步骤P3中求得的并被存贮在V向量RAM 2的第0号地址上的。而V向量V96…V992是根据过去输入的多组子频段样值数据S已求出的已被存贮在V向量RAM2的第64号地址-第1023号地址上的。
因此,在求取PCM数据PCM0时仅求一个V向量V0,其余的V向量V96…V992就可以由V向量RAM2中读出。这样,图20的读出控制部104在利用第一运算部101计算V向量V0时,控制读出手段105使之由V向量RAM102中读出V向量V0、V96…V992。对于其他的PCM数据PCM1-PCM31也同样。
而且这里在利用第一运算部101计算V向量V0时,虽然要由V向量RAM 2中读出V向量V0、V96…V992,对于V向量V0也可以使用依靠第一运算部101来求取本身。
接着在步骤P16,判断32个PCM数据PCM0-PCM31是否全都被输出。在尚剩留未输出的PCM数据时,返回步骤P13的处理,进行下一PCM数据的生成。另一方面,在32个PCM数据全都被输出了时,前进到步骤P17,判断译码处理是否完成。而在译码处理未完成时返回步骤P11的处理,开始一下帧的处理。
在本实施例中,以上这样的逐个生成PCM数据直到输出的一系列处理采用流水线处理进行,在将一个PCM数据向外部输出期间生成下一个PCM数据。而且,使得这种一个PCM数据的生成处理所需的机器周期数与输出处理所需的机器周期数相同。
因此,采用本实施例的MPEG音频译码器,由多个V向量不需生成W向量而逐个地生成PCM数据,在生成一个PCM数据的期间将前面生成的一个PCM数据向外部输出,由此就能实现连续地输出PCM数据。
因而,即使不设置PCM数据输出用的存贮器和为保存生成PCM数据用的数据的存贮器,也能够不间断地向外部输出PCM数据(音频数据)。