(57)【特許請求の範囲】
【請求項１】
入力されるＭＰＥＧ規格のオーディオ圧縮データに対して逆量子化処理、逆スケーリング処理および合成サブバンドフィルタ処理を行うことによりＰＣＭデータを生成するＭＰＥＧオーディオデコーダにおいて、
上記オーディオ圧縮データに含まれる各種情報のうち、少なくとも  ｓｃｆｓｉ情報およびスケールファクタ情報がこの順番で一時記憶されるＡＳ−ＲＡＭと、
上記オーディオ圧縮データ中に含まれるサンプル情報が一時記憶されるサンプルＲＡＭと、
上記オーディオ圧縮データ中に含まれるアロケーション情報、スケールファクタ情報およびサンプル情報を用いた逆量子化処理および逆スケーリング処理によって求められるサブバンドサンプル情報が一時記憶されるサブバンドサンプルＲＡＭと、
上記サブバンドサンプル情報を用いた合成サブバンドフィルタ処理の過程で求められるＶベクタが一時記憶されるＶベクタＲＡＭと、
上記ＡＳ−ＲＡＭの所定記憶領域に上記  ｓｃｆｓｉ情報を記憶させるとともに、上記  ｓｃｆｓｉ情報の後に入力されるスケールファクタ情報を上記  ｓｃｆｓｉ情報が記憶されていた記憶領域に上書きするようにして記憶させる  ｓｃｆｓｉ・スケールファクタ書き込み手段と、
上記サンプルＲＡＭの記憶領域に複数のサンプル情報を順に書き込むようにして、各サンプル情報のビット幅が相互に異なることにより、上記複数のサンプル情報の境界と上記サンプルＲＡＭの各アドレスの境界とが一致していないミスアライン状態で記憶するようにするサンプル書き込み手段と、
上記サンプル書き込み手段によってミスアライン状態で上記サンプルＲＡＭに記憶された複数のサンプル情報を１つずつ取り出して読み出すようにするサンプル読み出し手段と、
上記ＶベクタＲＡＭに記憶されたＶベクタを読み出すためのＶベクタ読み出し手段と、
上記逆量子化処理、逆スケーリング処理および合成サブバンドフィルタ処理を行う演算手段であって、上記スケールファクタ情報の値によって特定される演算値の指数を分数部と整数部とに分離して生成した演算式に基づいて、上記分数部に関する演算を乗算によって行うとともに、上記整数部に関する演算をシフト処理によって行うことにより、上記アロケーション情報、スケールファクタ情報およびサンプル情報を用いて上記サブバンドサンプル情報を求めた後、上記サブバンドサンプル情報の１組から生成される複数のＶベクタのうち、相関関係にあるＶベクタの一方のＶベクタを１個ずつ求め、さらに、上記求めた１個のＶベクタと、上記Ｖベクタ読み出し手段により読み出された複数個のＶベクタとを用いてＰＣＭデータを１個ずつ生成する演算手段と、
上記Ｖベクタ読み出し手段の読み出し動作を制御し、ある１個のＰＣＭデータを生成するために利用要求があったＶベクタであって、現在のサブバンドサンプル情報の組より前に入力されたサブバンドサンプル情報の組に基づいて既に求められて上記ＶベクタＲＡＭの飛び飛びのアドレスに既に記憶されている複数個のＶベクタを上記ＶベクタＲＡＭから読み出すようにするとともに、利用要求があったＶベクタが上記ＶベクタＲＡＭに記憶されていない場合には、上記利用要求があったＶベクタと相関関係にあるＶベクタを上記ＶベクタＲＡＭから読み出すようにするＶベクタ読み出し制御手段と、
上記Ｖベクタ読み出し制御手段の制御に基づいて上記ＶベクタＲＡＭから読み出されるＶベクタの符号を、所定の条件に応じて反転させる符号反転手段と、
上記演算手段により上記ＰＣＭデータが１個生成される毎にそのＰＣＭデータを出力するようにする出力手段とを具備することを特徴とするＭＰＥＧオーディオデコーダ。
【請求項２】
上記  ｓｃｆｓｉ・スケールファクタ書き込み手段は、上記ＡＳ−ＲＡＭの所定記憶領域に上記  ｓｃｆｓｉ情報を記憶させる書き込み手段と、
上記書き込み手段により上記ＡＳ−ＲＡＭに記憶された  ｓｃｆｓｉ情報を読み出す読み出し手段と、
上記読み出し手段により読み出された  ｓｃｆｓｉ情報に応じて認識される数のスケールファクタ情報を、上記  ｓｃｆｓｉ情報が記憶されていた記憶領域に上書きするようにして記憶させる上書き手段とを具備することを特徴とする請求項１に記載のＭＰＥＧオーディオデコーダ。
【請求項３】
上記サンプル読み出し手段は、上記サンプルＲＡＭから読み出そうとする１つのサンプル情報の位置を指定するサンプル指定手段と、
上記サンプル指定手段により指定された上記サンプルＲＡＭの１つのアドレスのデータを順次ラッチする第１のラッチ手段と、
上記第１のラッチ手段から出力されるデータを順次ラッチする第２のラッチ手段と、
上記サンプルＲＡＭから読み出そうとする１つのサンプル情報が、上記サンプルＲＡＭの１つのアドレス内に記憶されているのか、あるいは２つのアドレスにまたがって記憶されているのかを判別する判別手段と、
上記判別手段が１つのアドレス内に記憶されていると判断したときに、上記読み出そうとする１つのサンプル情報を上記第２のラッチ手段にラッチされているデータの中から取り出すようにする第１の取出手段と、
上記判別手段が２つのアドレスにまたがって記憶していると判断したときに、上記読み出そうとする１つのサンプル情報を上記第１のラッチ手段および上記第２のラッチ手段にそれぞれラッチされているデータの中から取り出すようにする第２の取出手段とを具備することを特徴とする請求項１に記載のＭＰＥＧオーディオデコーダ。
【請求項４】
上記第１の取出手段は、上記第２のラッチ手段にラッチされているデータを所定ビットだけシフトすることにより、上記データ中に含まれる上記読み出そうとする１つのサンプル情報が１ワードの先頭にくるようにするとともに、上記シフトされたサンプル情報以外の１ワード内のビットを全て０にすることにより、上記読み出そうとする１つのサンプル情報のみを取り出すことを特徴とする請求項３に記載のＭＰＥＧオーディオデコーダ。
【請求項５】
上記第１の取出手段は上記シフトするビット量を、上記サンプル指定手段により指定された上記サンプルＲＡＭ内におけるサンプル情報の位置に応じて決定するようにしたことを特徴とする請求項４に記載のＭＰＥＧオーディオデコーダ。
【請求項６】
上記第２の取出手段は、上記第１のラッチ手段および上記第２のラッチ手段にラッチされているデータをそれぞれ所定ビットずつシフトすることにより、上記第１のラッチ手段および上記第２のラッチ手段の各データ中に分割して含まれている上記読み出そうとする１つのサンプル情報が１ワードの先頭にくるようにするとともに、上記シフトされたサンプル情報以外の１ワード内のビットを全て０にすることにより、上記読み出そうとする１つのサンプル情報のみを取り出すようにしたことを特徴とする請求項３に記載のＭＰＥＧオーディオデコーダ。
【請求項７】
上記第２の取出手段は上記シフトするビット量を、上記サンプル指定手段により指定された上記サンプルＲＡＭ内における上記サンプル情報の位置に応じて決定するようにしたことを特徴とする請求項６に記載のＭＰＥＧオーディオデコーダ。
【請求項８】
上記サンプル読み出し手段は、上記第１の取出手段または上記第２の取出手段により取り出されたサンプル情報と所定の逆量子化係数とを加算する加算手段を更に具備することを特徴とする請求項３〜７の何れか１項に記載のＭＰＥＧオーディオデコーダ。
【請求項９】
上記第１の取出手段および上記第２の取出手段によるサンプル情報の取り出し処理と上記加算手段による加算処理とをパイプライン処理によって行うようにしたことを特徴とする請求項８に記載のＭＰＥＧオーディオデコーダ。
【請求項１０】
上記演算手段は、上記スケールファクタ情報の値によって特定される演算値の指数を分数部と整数部とに分離して、上記逆量子化処理および逆スケーリング処理を行うための演算式を生成する演算式生成手段と、
上記演算式生成手段によって生成された演算式に基づいて、上記加算手段により行われた演算結果に対して上記分数部に関する演算を乗算によって行う乗算手段と、
上記乗算手段により行われた演算結果に対して上記演算式における上記整数部に関する演算をシフト処理によって行うシフト手段とを具備することを特徴とする請求項８に記載のＭＰＥＧオーディオデコーダ。
【請求項１１】
上記乗算手段によって乗ぜられる上記分数部に関する演算値は、テーブル情報としてあらかじめ係数ＲＯＭに記憶されていることを特徴とする請求項１０に記載のＭＰＥＧオーディオデコーダ。
【請求項１２】
上記演算式に基づく逆量子化処理および逆スケーリング処理をパイプライン処理によって行うようにしたことを特徴とする請求項１０または１１に記載のＭＰＥＧオーディオデコーダ。
【請求項１３】
上記Ｖベクタ読み出し制御手段は、上記ＶベクタＲＡＭの読み出しアドレスを指定することにより上記利用要求があったＶベクタと同一の相関関係にあるＶベクタを読み出すようにすることを特徴とする請求項１に記載のＭＰＥＧオーディオデコーダ。
【請求項１４】
上記オーディオ圧縮データからＰＣＭデータを生成して出力するまでの一連の処理をパイプライン処理によって行うようにしたことを特徴とする請求項１に記載のＭＰＥＧオーディオデコーダ。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、ＭＰＥＧによって圧縮されたオーディオデータをデコードするＭＰＥＧオーディオデコーダに関するものである。
【０００２】
【従来の技術】
近年、ＭＰＥＧ（Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｉｍａｇｅ  Ｃｏｄｉｎｇ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ  ）オーディオと称されるディジタル音声信号の圧縮技術が開発されてきている。現在、このＭＰＥＧオーディオにはＭＰＥＧ１が規格化されている。このＭＰＥＧ１の規格には、要求される音質や回路規模によってレイヤＩ，レイヤＩＩ，レイヤＩＩＩ  の３つの方式が用意されている。
【０００３】
また、ＭＰＥＧオーディオにおいては、音声信号のチャネルモードとして、シングルチャネル、デュアルチャネル、ステレオ、ジョイントステレオなどの各モードが規定されている。さらに、ＭＰＥＧオーディオでは、各レイヤの各チャネルモード毎に使用可能な伝送レート（ビットレート）や、再生後の音声信号の出力レート（サンプリング周波数）が種々規定されている。
【０００４】
例えば、ステレオモードでは、オーディオデータはレイヤＩでは３２個、レイヤＩＩでは最大３０個のサブバンドに分割され、各サブバンドには２個のチャネルが含まれている。
【０００５】
図１５は、ＭＰＥＧ１のレイヤＩＩによって圧縮されたオーディオデータのビットストリームを示す図である。この図１５に示したように、オーディオ圧縮データの１フレームは、ヘッダ情報（ＨＥＡＤＥＲ）、ＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ  ）情報、アロケーション（Ａｌｌｏｃａｔｉｏｎ）情報、ｓｃｆｓｉ  情報、スケールファクタ（Ｓｃａｌｅ  Ｆａｃｔｏｒ）情報およびサンプルもしくはサンプルコード（Ｓａｍｐｌｅ  ／  Ｓａｍｐｌｅ  Ｃｏｄｅ）情報（以下では、これらをまとめてサンプルデータという）で構成され、この順番でＭＰＥＧオーディオデコーダに入力されるようになっている。
【０００６】
ここで、上記ヘッダ情報は、ビットレートやサンプリング周波数、あるいはステレオ／モノラルのチャネルモード等のような基本的な情報によって構成されるものである。また、ＣＲＣ情報は、ビットストリーム中にエラーがないかどうかを調べるためのものである。
【０００７】
また、アロケーション情報、スケールファクタ情報およびサンプルデータは、オーディオ圧縮データ本体を構成する情報である。上記アロケーション情報およびスケールファクタ情報によってサンプルデータが加工されることにより、オーディオ圧縮データが復号され、ＰＣＭデータが生成されるようになっている。
【０００８】
すなわち、アロケーション情報は、復号時における逆量子化演算の際に用いられる情報であり、後に入力されるサンプルデータが何ビット幅であるかという情報と、そのサンプルデータがサンプル情報なのかサンプルコード情報なのかという情報とを含んでいる。これらの情報は、ＩＳＯ／ＩＥＣ  １１１７２  ＭＰＥＧ１オーディオ  レイヤＩＩの規格に従って、アロケーション情報の値とサブバンド番号とをもとにして表１のようなテーブル情報を参照することにより知ることができる。
【０００９】
【表１】
0003589746.tif 000002
【００１０】
表１において、ｎｂａｌで示される項目は、アロケーション情報のビット幅を示すものであり、アロケーション情報が４ビット幅のとき（サブバンドｓｂ０〜ｓｂ１０）は、アロケーション情報は０〜１５の１６個の値をとる。また、アロケーション情報が３ビット幅のとき（サブバンドｓｂ１１〜ｓｂ２２）は、アロケーション情報は０〜７の８個の値をとる。また、アロケーション情報が２ビット幅のとき（サブバンドｓｂ２３〜ｓｂ２９）は、アロケーション情報は０〜３の４個の値をとる。
【００１１】
例えば、サブバンド番号がｓｂ＝２で、アロケーション情報の値が５である場合は、サンプルデータのとり得る値は６３通りであり、サンプルデータのビット幅は６ビットであることが分かる。また、サブバンド番号がｓｂ＝２０で、アロケーション情報の値が５である場合は、サンプルデータのとり得る値は１５通りであり、サンプルデータのビット幅は４ビットであることが分かる。
【００１２】
また、サンプルデータのとり得る値が３通り、５通りまたは９通りである場合は、サンプルデータは、サンプルコードという形で入力されている。したがって、表１を参考にしてサンプルデータのとり得る値が何通りであるかを見ることによって、そのサンプルデータがサンプル情報なのかサンプルコード情報なのかを知ることもできる。
【００１３】
ここで、サンプルコードとは、各サブバンド単位で、時間軸方向に連続して存在する３個のサンプル情報を１つのコードにまとめたものである。例えば、１つのサンプル情報のとり得る値が３通りである場合、通常は３個のサンプル情報で６ビットとなるが、１つのコードにまとめると５ビットで済む。また、１つのサンプル情報のとり得る値が５通りまたは９通りである場合、通常は３個のサンプル情報でそれぞれ９ビット、１２ビットとなるが、１つのコードにまとめると、それぞれ７ビット、１０ビットで済む。
【００１４】
また、スケールファクタ情報は、上記逆量子化演算の後の逆スケーリング演算の際に用いられる情報であり、おおよその出力レベルを与えるスケーリング係数値を表すものである。ここで、上述のサンプル情報は、レイヤＩＩの場合、１フレーム単位で見ると各サブバンドの各チャネル毎に時間軸方向に３６個存在している。そして、上記３６個のサンプル情報は、連続する１２個毎に異なるスケールファクタの値をとり得る。
【００１５】
すなわち、時間軸方向で見て０〜１１番目、１２〜２３番目、２４〜３５番目のサンプル情報に対するスケールファクタ情報を、それぞれスケールファクタ０，スケールファクタ１，スケールファクタ２とすると、次の表２に示すように、スケールファクタ０〜２にはそれぞれａ，ｂ，ｃの何れかのスケールファクタ値が与えられる。
【００１６】
【表２】
0003589746.tif 000003
【００１７】
また、ｓｃｆｓｉ  情報は、上述のスケールファクタ情報が各サブバンドの各チャネルに何個存在するか（１〜３個）を示すパラメータであり、レイヤＩＩにおいてのみ用いられる。すなわち、上記  ｓｃｆｓｉ情報は、表２に示した４パターンのうち、何れのパターンに該当するかを示している。
【００１８】
以上のようなビットストリームを有するオーディオ圧縮データのデコード処理は、次のようにして行われる。すなわち、まず、上述した逆量子化処理および逆スケーリング処理によってサブバンドサンプル情報が求められる。次に、このサブバンドサンプル情報を用いて合成サブバンドフィルタ処理が行われることにより、ＰＣＭデータが生成される。
【００１９】
一般に、従来のＭＰＥＧオーディオデコーダにおいては、入力される図１５のようなビットストリームや、上述のような一連の処理過程で得られるデータを一時記憶しておくためのバッファメモリが幾つか設けられている。例えば、上記ビットストリーム中の各情報を一時記憶しておくためのバッファメモリや、上記合成サブバンドフィルタ処理の過程でサブバンドサンプル情報から求められるＶベクタと呼ばれる情報を一次記憶しておくためのＶベクタＲＡＭと呼ばれるバッファメモリがある。
【００２０】
上述のサブバンドサンプル情報Ｓは、次の演算式に従って求められる。
Ｓ＝ｆａｃｔｏｒ×Ｃ×（Ｓ”＋Ｄ）      （式１）
ここで、（式１）中のｆａｃｔｏｒ（ファクタ）は、スケールファクタ情報の値に応じて特定される演算値であり、上記スケールファクタ情報の値をｉｎｄｅｘ  （インデックス）で表すとすると、
ファクタ＝２１−ｉｎｄｅｘ／３              （式２）
で与えられる。表３に、スケールファクタ情報の値（インデックス）と上記ファクタの値との関係を示す。
【００２１】
【表３】
0003589746.tif 000004
【００２２】
また、上記（式１）中の値Ｓ”は、サンプル情報の最上位ビット（ＭＳＢ）を反転したものである。また、同じく（式１）中の値Ｃ，Ｄは、所定の逆量子化係数であり、次の表４に示すような値が用いられる。この表４から分かるように、係数Ｃ，Ｄは、サンプル情報のとり得る値が何通りであるかによって、異なる値が用いられる。すなわち、アロケーション情報の値に応じて、表４に示した何れかの係数値が用いられる。
【００２３】
【表４】
0003589746.tif 000005
【００２４】
上記（式１）に示したサブバンドサンプル情報Ｓを求める演算では、まず最初にＣ×（Ｓ”＋Ｄ）で示される逆量子化演算が行われ、その後でファクタの値を乗ずる逆スケーリング演算が行われる。なお、上記ファクタの値や係数Ｃ，Ｄの値は、それぞれ表３および表４に示したようなテーブル情報としてあらかじめ記憶されているものが用いられる。
【００２５】
ところで、以上のようにして求められたサブバンドサンプル情報ＳからＰＣＭデータを求める合成サブバンドフィルタ処理を行うために、オーディオデータを３２個のサブバンドに分割するには膨大な演算量が必要である。そこで、この問題を解決するために、ポリフェーズ・フィルタ・バンクと呼ばれる技術が用いられることがある。上記ポリフェーズ・フィルタ・バンクでは、巧妙な数学的手法で上記３２バンドを一度に処理することによりエリアシングもキャンセルされ、かつ非常に効率よく計算ができるように設計されている。
【００２６】
しかし、このようにポリフェーズ・フィルタ・バンクを用いて３２個のＰＣＭデータを一度に生成すると、上記生成したＰＣＭデータを絶え間なく出力するためにデコーダの出力段にＰＣＭデータ用のメモリが必要なので、設置しなければならないメモリ容量が大きくなってしまう問題があった。
【００２７】
そこで、出力用のメモリを設けなくても済むようにする合成サブバンドフィルタ処理も提案されている。
図１６は、レイヤＩ，ＩＩにおける合成サブバンドフィルタ処理の内容を示すフローチャートである。図１６において、最初にステップＰ１１で、各サブバンドごとに求められた３２個のサブバンドサンプル情報Ｓが図示しない内部メモリに入力される。
【００２８】
そして、ステップＰ１２で、上述したＶベクタＲＡＭのアドレスが６４ワード分シフトされる。これにより、図１７に示すように、ＶベクタＲＡＭの第０アドレスから第６３アドレスまでが空にされ、これから算出するＶベクタの記憶領域が確保される。
【００２９】
次に、ステップＰ１３で、上記ステップＰ１１で入力された３２個のサブバンドサンプル情報Ｓから６４個のＶベクタが算出される。なお、これらのＶベクタは、次の（式３）に示す演算式に従って求められる。このようにして求められたＶベクタは、ＶベクタＲＡＭの新たに確保された記憶領域に一時記憶される。
【００３０】
【数１】
0003589746.tif 000006
【００３１】
上記ステップＰ１３にて求められたＶベクタは、次のステップＰ１４でＵベクタに変換される。なお、ＶベクタからＵベクタへの変換処理は、次に示す（式４）および（式５）に従って行われる。
Ｕ［ｉ×６４＋ｊ］＝Ｖ［ｉ×１２８  ＋ｊ］            （式４）
Ｕ［ｉ×６４＋３２＋ｊ］＝Ｖ［ｉ×１２８  ＋９６＋ｊ］    （式５）
ただし、ｉ＝０  〜７  、ｊ＝０  〜３１
【００３２】
この（式４）および（式５）から明らかなように、合成サブバンドフィルタ処理を行うには、上記ステップＰ１３にて求められた６４個のＶベクタを含めて全部で１０２４個のＶベクタが必要になる。１０２４個のＶベクタは、異なるサブバンドサンプル情報Ｓの組（１組は３２個）から６４個ごとに算出されたものであり、図１７に示したＶベクタＲＡＭの第０アドレスから第１０２３アドレスに記憶されているものである。
【００３３】
次に、ステップＰ１５で、上記ステップＰ１４にて変換されたＵベクタに所定のウィンドウ係数Ｄｉ  が掛けられることにより、５１２個のＷベクタが算出される。すなわち、このＷベクタは、次の（式６）に従って求められる。なお、上記ウィンドウ係数Ｄｉ  は、ＭＰＥＧ規格によって定められている。
Ｗ［ｉ］  ＝Ｕ［ｉ］  ×Ｄｉ  ［ｉ］                    （式６）
ただし、ｉ＝０  〜５１１
【００３４】
そして、次のステップＰ１６で、上記ステップＰ１５にて求められたＷベクタを用いて３２個のＰＣＭデータが次の（式７）に従って算出される。このようにして求められた３２個のＰＣＭデータは、次のステップＰ１７で外部に出力される。
【００３５】
【数２】
0003589746.tif 000007
【００３６】
以上のステップＰ１７の処理までで１フレーム分のデコード処理が終了する。その後、ステップＰ１８でデコード処理を終了するかどうかが判断され、デコード処理を終了しないときは、ステップＰ１１の処理に戻り、次のフレームの処理を開始する。
【００３７】
【発明が解決しようとする課題】
上述したように、従来のＭＰＥＧオーディオデコーダでは、その入力段に、図１５のようなビットストリームからなるオーディオ圧縮データを一時記憶しておくためのバッファメモリが設けられていた。そして、そのバッファメモリは、ビットストリーム中の各情報を記憶するために、それぞれに専用のメモリが個々に設けられていた。
【００３８】
このため、これらの各情報を記憶するためのバッファメモリは、各情報のデータ量の合計に相当する大きな記憶容量が必要となり、その全記憶容量が非常に大きくなってしまうという問題があった。
【００３９】
また、上記オーディオ圧縮データ中に含まれる各サンプル情報は、それぞれビット幅が異なるものであることは上述したとおりである。具体的には、サンプル情報のビット幅は、２〜１６ビットと様々である。このため、サンプル情報を記憶するためのバッファメモリは、ビット幅が最大のサンプル情報を１つのアドレスに記憶することができるようにするために、１ワードが１６ビット幅となっていた。
【００４０】
ところが、従来のＭＰＥＧオーディオデコーダは、サンプル情報をアドレス単位で読み出すようにしていたため、サンプル情報の記憶時には、各サンプル情報のビット幅がそれぞれ異なっているにもかかわらず、各サンプル情報を１つのアドレスに１つずつ記憶するようにしていた。
【００４１】
このため、１６ビット幅のサンプル情報を記憶する場合は良いが、それ以下のビット幅を持つサンプル情報を記憶する場合には、１つのアドレス内の一部にのみサンプル情報が記憶されることになる。これにより、サンプル情報を記憶するためのバッファメモリの全記憶領域の中でサンプル情報が記憶されない無駄な領域が多く生じるという問題があった。
【００４２】
また、上記した（式１）から明らかなように、従来のＭＰＥＧオーディオデコーダでは、サブバンドサンプル情報Ｓを求めるためには、逆量子化処理と逆スケーリング処理との２つの処理を行う必要があり、それぞれの処理において乗算処理を行う必要があった。
【００４３】
一般に、乗算処理は演算負荷が大きいため、２回にわたって乗算処理を行う従来の方式では、全体として演算負荷が非常に大きくなってしまい、処理時間も長くなってしまうという問題があった。
【００４４】
また、上述したように、ＰＣＭデータを生成するためには片チャネルで１０２４個のＶベクタが必要であった。したがって、上述のＶベクタＲＡＭは、片チャネルで少なくとも１０２４ワード分のメモリ容量が必要であった。このことは、図１７に示したとおりである。
【００４５】
Ｖベクタは情報量が多いデータであるから、このように数多くのＶベクタを記憶するためのＶベクタＲＡＭは、その記憶容量が非常に大きくなってしまうという問題があった。
【００４６】
さらに、図１６に示した処理を行うＭＰＥＧオーディオデコーダでは、まず最初に、１組のサブバンドサンプル情報Ｓから６４個のＶベクタを算出する。そして、この６４個のＶベクタから変換したＵベクタを用いてＷベクタを算出し、このＷベクタを用いて３２個のＰＣＭデータを生成していた。すなわち、従来は、図１６のステップＰ１１〜Ｓ１５の処理を行わなければ、３２個ののＰＣＭデータを生成することができなかった。
【００４７】
このため、この場合にはＰＣＭデータ出力用のメモリを設けなくても済むが、生成したＰＣＭデータをオーディオデータとして絶え間なく外部に出力できるようにするためには、少なくとも片チャネルで３２個のＰＣＭデータを生成するためのデータを保持しておくメモリを演算部に設ける必要があった。そして、一般には、ある程度の余裕を持たせるために、１００ワード分の記憶容量を持つメモリが用いられることが多かった。
【００４８】
したがって、従来のＭＰＥＧオーディオデコーダは、ＰＣＭデータをオーディオデータとして絶え間なく外部に出力するためには、大容量のメモリを設けなくてはならない問題点があった。
【００４９】
本発明は、以上のような種々の問題を同時に解決するために成されたものであり、ＭＰＥＧオーディオデコーダ中に備えられている種々のメモリの記憶容量を小さくすることができるようにするとともに、一連のデコード処理を短い工程で行うことができるようにすることを目的とする。
【００５０】
具体的には、第１に、ＭＰＥＧ規格のオーディオ圧縮データ中に含まれる各情報を一時記憶しておくためのバッファメモリの全記憶容量を小さくすることができるようにすることを目的としている。第２に、一連のデコード処理の中でサブバンドサンプル情報を求める際の演算負荷を小さくすることができるようにすることを目的としている。
【００５１】
第３に、合成サブバンドフィルタ処理の過程でサブバンドサンプル情報から求められるＶベクタを一時記憶しておくためのバッファメモリ、すなわち、ＶベクタＲＡＭの記憶容量を小さくすることができるようにすることを目的としている。第４に、ＰＣＭデータを絶え間なく外部に出力できるようにするために設けなければならないメモリの容量を可及的に少なくすることを目的としている。
【００５２】
【課題を解決するための手段】
本発明のＭＰＥＧオーディオデコーダは、入力されるＭＰＥＧ規格のオーディオ圧縮データに対して逆量子化処理、逆スケーリング処理および合成サブバンドフィルタ処理を行うことによりＰＣＭデータを生成するＭＰＥＧオーディオデコーダにおいて、上記オーディオ圧縮データに含まれる各種情報のうち、少なくとも  ｓｃｆｓｉ情報およびスケールファクタ情報がこの順番で一時記憶されるＡＳ−ＲＡＭと、上記オーディオ圧縮データ中に含まれるサンプル情報が一時記憶されるサンプルＲＡＭと、上記オーディオ圧縮データ中に含まれるアロケーション情報、スケールファクタ情報およびサンプル情報を用いた逆量子化処理および逆スケーリング処理によって求められるサブバンドサンプル情報が一時記憶されるサブバンドサンプルＲＡＭと、上記サブバンドサンプル情報を用いた合成サブバンドフィルタ処理の過程で求められるＶベクタが一時記憶されるＶベクタＲＡＭと、上記ＡＳ−ＲＡＭの所定記憶領域に上記  ｓｃｆｓｉ情報を記憶させるとともに、上記  ｓｃｆｓｉ情報の後に入力されるスケールファクタ情報を上記  ｓｃｆｓｉ情報が記憶されていた記憶領域に上書きするようにして記憶させる  ｓｃｆｓｉ・スケールファクタ書き込み手段と、上記サンプルＲＡＭの記憶領域に複数のサンプル情報を順に書き込むようにして、各サンプル情報のビット幅が相互に異なることにより、上記複数のサンプル情報の境界と上記サンプルＲＡＭの各アドレスの境界とが一致していないミスアライン状態で記憶するようにするサンプル書き込み手段と、上記サンプル書き込み手段によってミスアライン状態で上記サンプルＲＡＭに記憶された複数のサンプル情報を１つずつ取り出して読み出すようにするサンプル読み出し手段と、上記ＶベクタＲＡＭに記憶されたＶベクタを読み出すためのＶベクタ読み出し手段と、上記逆量子化処理、逆スケーリング処理および合成サブバンドフィルタ処理を行う演算手段であって、上記スケールファクタ情報の値によって特定される演算値の指数を分数部と整数部とに分離して生成した演算式に基づいて、上記分数部に関する演算を乗算によって行うとともに、上記整数部に関する演算をシフト処理によって行うことにより、上記アロケーション情報、スケールファクタ情報およびサンプル情報を用いて上記サブバンドサンプル情報を求めた後、上記サブバンドサンプル情報の１組から生成される複数のＶベクタのうち、相関関係にあるＶベクタの一方のＶベクタを１個ずつ求め、さらに、上記求めた１個のＶベクタと、上記Ｖベクタ読み出し手段により読み出された複数個のＶベクタとを用いてＰＣＭデータを１個ずつ生成する演算手段と、上記Ｖベクタ読み出し手段の読み出し動作を制御し、ある１個のＰＣＭデータを生成するために利用要求があったＶベクタであって、現在のサブバンドサンプル情報の組より前に入力されたサブバンドサンプル情報の組に基づいて既に求められて上記ＶベクタＲＡＭの飛び飛びのアドレスに既に記憶されている複数個のＶベクタを上記ＶベクタＲＡＭから読み出すようにするとともに、利用要求があったＶベクタが上記ＶベクタＲＡＭに記憶されていない場合には、上記利用要求があったＶベクタと相関関係にあるＶベクタを上記ＶベクタＲＡ��から読み出すようにするＶベクタ読み出し制御手段と、上記Ｖベクタ読み出し制御手段の制御に基づいて上記ＶベクタＲＡＭから読み出されるＶベクタの符号を、所定の条件に応じて反転させる符号反転手段と、上記演算手段により上記ＰＣＭデータが１個生成される毎にそのＰＣＭデータを出力するようにする出力手段とを具備する。
【００５３】
【作用】
本発明は上記技術手段より成るので、各サブバンドにスケールファクタ情報が何個存在するのかを表すためにＡＳ−ＲＡＭから一度読み出された後は不要となり、消去してもデコード処理の動作上何の問題も生じないという  ｓｃｆｓｉ情報の性質が有効に利用され、上記ＡＳ−ＲＡＭの一部の記憶領域を、ｓｃｆｓｉ  情報を一時記憶しておくための記憶領域として使用するとともに、その後に入力されるスケールファクタ情報を上書きして一時記憶しておくための記憶領域としても使用することができるようになり、ｓｃｆｓｉ  情報用の記憶領域とスケールファクタ情報用の記憶領域とを個々に設けなくても済むようになる。
【００５４】
また、サンプルＲＡＭの１つのアドレス内に複数のサンプル情報をミスアライン状態で記憶することが可能となり、従来のように記憶手段の１ワードに満たないビット幅を持つサンプル情報が１つのアドレスに１つだけ記憶されることにより、上記記憶手段の全記憶領域の中でサンプル情報が記憶されない無駄な領域が生じるという従来の不都合をなくすことができるようになるとともに、記憶すべきサンプル数の分だけアドレスを用意しなくても済むようになる。
【００５５】
また、１組のサブバンドサンプル情報から生成される複数のＶベクタにおいて、相関関係にあるＶベクタのうちの一方のＶベクタ、例えば、相互に等しい値を持つＶベクタの組のうちの一方のＶベクタ、および相互に符号のみが異なるＶベクタの組のうちの一方のＶベクタが求められてＶベクタＲＡＭに記憶されるとともに、利用要求があったＶベクタが上記ＶベクタＲＡＭに記憶されていない場合には、相関関係にあることにより相互に等しい値を持つＶベクタが上記ＶベクタＲＡＭから読み出され、上記読み出されたＶベクタが所定の条件に応じて符号反転手段により符号反転されることになり、これにより、上記相互に等しい値を持つＶベクタの組のうちの他方のＶベクタおよび相互に符号のみが異なるＶベクタの組のうちの他方のＶベクタの値を計算して上記ＶベクタＲＡＭに記憶しておかなくても、上記１組のサブバンドサンプル情報から生成される全てのＶベクタの利用要求に応じることができるようになる。
【００５６】
また、ＶベクタＲＡＭの飛び飛びのアドレスに既に記憶されているＶベクタからＰＣＭデータが直接生成されるとともに、１個ずつ生成され、かつ生成される毎に出力されるので、ＰＣＭデータ出力用のメモリおよびＰＣＭデータを生成するためのデータを保持しておくメモリを設けなくても、オーディオデータを絶え間なく外部に出力できるようになる。
【００５７】
さらに、一連のデコード処理の中で行われる逆量子化処理および逆スケーリング処理が、オーディオ圧縮データ中のスケールファクタ情報の値によって特定される演算値の指数を分数部と整数部とに分離した演算式に基づいて、上記整数部に関する演算処理とそれ以外の演算処理とに分けて行われるようになり、上記整数部に関する演算処理については、与えられる情報を乗算ではなくシフト演算によって処理することが可能となるので、上記逆量子化処理および逆スケーリング処理の際に、演算負荷が大きい乗算を行う回数を従来よりも少なくすることが可能となる。
【００５８】
また、請求項８に記載の発明によれば、ある１つのサンプル情報を取り出す際に、サンプルＲＡＭのメモリアドレスへのアクセスが２回行われ、上記２回にわたるメモリアドレスへのアクセスにより取り出されるデータのラッチ処理が行われることとなるので、サンプル情報の取り出し処理を行っている間に、その前に取り出したサンプル情報を用いて逆量子化係数との加算処理を行う時間が十分に得られるようになる。
【００５９】
また、請求項１２に記載の発明によれば、演算負荷が小さいシフト処理は極めて短時間で行うことができ、乗算手段による乗算処理とシフト手段によるシフト処理とを１マシンサイクルで行うことが可能であるので、上記サンプル情報を取り出して逆量子化係数を加算する処理と、前のマシンサイクルにおける取り出し処理および加算処理によって得られた情報を用いた乗算処理およびシフト処理とを、全て１マシンサイクルで行うことが可能となる。
【００６０】
【実施例】
以下、本発明のＭＰＥＧオーディオデコーダの一実施例を図面に基づいて説明する。
図１は、本実施例によるＭＰＥＧオーディオデコーダの全体構成を示すブロック図である。まず最初に、この図１を用いて各部の構成および動作を簡単に説明する。
【００６１】
図１において、１はデータ入力部であり、図１５に示したビットストリームで構成されるＭＰＥＧ規格のオーディオ圧縮データを入力する。先にも述べたように、上記オーディオ圧縮データは、図１５に示したビットストリームの順番でこのデータ入力部１に入力されるようになっている。データ入力部１の内部には、ヘッダレジスタ１ａが備えられており、上記ビットストリームに最初に含まれているヘッダ情報が記憶される。
【００６２】
２はＣＲＣチェック部であり、ＣＲＣ情報（ＣＲＣチェックワード）に基づいてビットストリーム中のエラーを検出する。すなわち、ＣＲＣチェック部２は、１６ビットのＣＲＣチェックワードの値と、それ以前に入力されたヘッダ情報および上記ＣＲＣチェックワードの後に入力されるアロケーション情報、  ｓｃｆｓｉ情報、スケールファクタ情報の各値をもとに所定の演算が施された結果得られる１６ビットの値とを比較する。そして、それら両者の値が一致するかどうかを調べることにより、エラー検出を行う。
【００６３】
３はＡＳ−ＲＡＭ（Ａｌｌｏｃａｔｉｏｎ・Ｓｃａｌｅ  Ｆａｃｔｏｒ−ＲＡＭ）ブロックであり、上記データ入力部１から送られてくるアロケーション情報、ｓｃｆｓｉ  情報およびスケールファクタ情報を一時記憶するためのものである。本実施例では、このＡＳ−ＲＡＭブロック３内のある記憶領域に一度記憶された  ｓｃｆｓｉ情報をそれより後に入力されるスケールファクタ情報によって上書きするように構成している。したがって、このＡＳ−ＲＡＭブロック３には、最終的にはアロケーション情報およびスケールファクタ情報のみが記憶されることになる。
【００６４】
４はサンプルＲＡＭブロックであり、上記データ入力部１から送られてくるサンプル情報（後述のように、サンプルコード情報が送られてきたときはそれがサンプル情報に変換される）を一時記憶するとともに、そのサンプル情報を読み出す際に、上記した（式１）中に示される（Ｓ”＋Ｄ）の値を得るようにするためのものである。
【００６５】
このように、本実施例では、オーディオ圧縮データ中に含まれる種々の情報のうち、可変長のデータであるサンプル情報を一時記憶するためのサンプルＲＡＭブロック４と、このサンプル情報を特徴づけるデータ（アロケーション情報、ｓｃｆｓｉ  情報、スケールファクタ情報）を一時記憶するためのＡＳ−ＲＡＭブロック３とを別個に設けている。この点、各情報を記憶するためのメモリが個々に設けられていた従来方式と異なる。
【００６６】
５は演算部であり、上記ＡＳ−ＲＡＭブロック３およびサンプルＲＡＭブロック４からそれぞれ読み出されるアロケーション情報、スケールファクタ情報およびサンプル情報を用いて、逆量子化処理、逆スケーリング処理および合成サブバンドフィルタ処理を行うことにより、ＰＣＭデータを生成する。
【００６７】
６は係数ＲＯＭブロックであり、上記演算部５において逆量子化処理、逆スケーリング処理および合成サブバンドフィルタ処理を行う際に用いられる種々の係数をあらかじめ記憶するものである。
【００６８】
７はＶベクタＲＡＭブロックであり、上記演算部５における逆量子化処理および逆スケーリング処理によって求められるサブバンドサンプル情報Ｓや、合成サブバンドフィルタ処理の過程でサブバンドサンプル情報Ｓから求められるＶベクタを一時記憶するためのものである。
【００６９】
８は出力手段としての出力インタフェース部であり、図示しないＤ／Ａ変換器を含んでおり、上記演算部５により求められたデジタルのＰＣＭデータをアナログ信号に変換して外部に出力するものである。
【００７０】
９はオーディオ・ビデオ同期用タイマーであり、以上に示した構成のオーディオデコーダにより再生されるＰＣＭオーディオデータと、図示しないビデオデコーダにより再生されるビデオデータとの間で同期をとるために使用されるものである。
【００７１】
１０はデータバスであり、上記演算部５で求められるサブバンドサンプル情報Ｓ、ＶベクタおよびＰＣＭデータが、演算部５とＶベクタＲＡＭブロック７と出力インタフェース部８との間で相互に伝送される。
【００７２】
次に、上記のように構成した本実施例によるＭＰＥＧオーディオデコーダの各ブロックについて、更に詳細な構成および動作を以下に示す各図面を参照しながら説明する。
【００７３】
図２は、上記ＡＳ−ＲＡＭブロック３の構成を示す図である。この図２から明らかなように、ＡＳ−ＲＡＭブロック３は、第１のシリアル／パラレル変換部（Ｓ／Ｐ変換部）１１と、アロケーション変換部１２と、  ｓｃｆｓｉ・スケールファクタ書き込み手段としての第１の書き込み部１３と、ＡＳ−ＲＡＭ１４と、第１の読み出し部１５とにより構成されている。
【００７４】
上記第１のＳ／Ｐ変換部１１は、データ入力部１からシリアルデータの形で送られてくるアロケーション情報、ｓｃｆｓｉ  情報およびスケールファクタ情報を、それぞれパラレルデータの形に変換するものである。上記アロケーション変換部１２は、アロケーション情報が入力された場合にそれを後述するような所定のデータに変換するものである。
【００７５】
また、上記ＡＳ−ＲＡＭ１４は、パラレル変換されたアロケーション情報、ｓｃｆｓｉ  情報およびスケールファクタ情報を一時記憶するものである。ＡＳ−ＲＡＭ１４に対するこれらの各情報の読み書きは、上記第１の書き込み部１３および第１の読み出し部１５によって行われる。
【００７６】
図２に示したように、第１の書き込み部１３は、上書き手段１３ａを備えている。この上書き手段１３ａは、後述するように、ｓｃｆｓｉ  情報が既に書き込まれたＡＳ−ＲＡＭ１４のメモリエリアに、それより後に入力されるスケールファクタ情報を上書きするようにして記憶させていく。
【００７７】
上記第１の読み出し部１５によってＡＳ−ＲＡＭ１４から読み出されるアロケーション情報、ｓｃｆｓｉ  情報およびスケールファクタ情報は、上記第１の書き込み部１３やサンプルＲＡＭブロック４内のサンプル変換部２２（図４において後述する）および演算部５における処理において利用あるいは参照される。
【００７８】
次に、上記のように構成されたＡＳ−ＲＡＭブロック３の動作を説明する。なお、上述のように、図１のデータ入力部１には、図１５のようなビットストリーム中に含まれる各情報がその順番に沿って入力されている。よって、ＡＳ−ＲＡＭブロック３にアロケーション情報が転送される前にデータ入力部１に入力されたヘッダ情報およびＣＲＣ情報については、以下の処理が既に行われている。
【００７９】
すなわち、まず最初に、ヘッダ情報がデータ入力部１より入力され、それがデータ入力部１内のヘッダレジスタ１ａに記憶される。次に、ＣＲＣ情報がデータ入力部１より入力され、それがＣＲＣチェック部２に転送される。そして、ＣＲＣチェック部２によって、そのフレーム内にビット・エラーが存在するかどうかが調べられる。
【００８０】
次に、アロケーション情報がデータ入力部１より入力されると、それがシリアルデータの形で第１のＳ／Ｐ変換部１１に転送される。第１のＳ／Ｐ変換部１１では、アロケーション情報がシリアルデータの形からパラレルデータの形に１ワード毎に変換される。そして、このようにしてパラレル変換されたアロケーション情報が、アロケーション変換部１２を通って第１の書き込み部１３に与えられ、ＡＳ−ＲＡＭ１４内のアロケーション情報用のフィールドに記憶される。
【００８１】
図２に示したＡＳ−ＲＡＭ１４から明らかなように、本実施例では、１つのＲＡＭをアロケーション情報用のフィールド（図中でアロケーションと表記）と  ｓｃｆｓｉ情報用のフィールド（図中で（ｓｃｆｓｉ）  と表記）とスケールファクタ情報用のフィールド（図中でスケールファクタ０，スケールファクタ１，スケールファクタ２と表記）とに分けて使用している。
【００８２】
また、上述したように、オーディオデータは３２個のサブバンド（サブバンド番号ｓｂ＝０〜３１）に分割され、各サブバンド毎に符号化されており、各サブバンドには２個のチャネル（チャネル番号ｃｈ＝０または１）が含まれている。そこで、上記した各情報用のフィールドには、各サブバンドの各チャネルについての情報を記憶するためのアドレスが０〜６３まで用意されている。
【００８３】
上述のアロケーション情報は、各サブバンドの各チャネル毎に１個ずつ用意されていて、図２に示したように〔ｓｂ０，ｃｈ０〕、〔ｓｂ０，ｃｈ１〕、〔ｓｂ１，ｃｈ０〕、………の順でＡＳ−ＲＡＭ１４の専用フィールドに記憶されていく。ただし、レイヤＩＩでは、サブバンドｓｂ３０，ｓｂ３１についてはアロケーション情報は存在せず、最大でサブバンドｓｂ２９まで（アドレス５９まで）アロケーション情報が記憶される。
【００８４】
ところで、アロケーション情報は、それより後に入力される  ｓｃｆｓｉ情報、スケールファクタ情報およびサンプルデータの要素分割処理や、ＰＣＭデータを生成するための復号処理など、種々の処理に利用されるデータである。このため、それらの処理を行うたびに、表１のような複雑なテーブル情報を参照するのは不便である。
【００８５】
そこで、本実施例においては、このような不便を解消するために、アロケーション変換部１２を用いてアロケーション情報を例えば次の表５に示すようなアロケーションコードにあらかじめ変換した上でＡＳ−ＲＡＭ１４に記憶するようにしている。
【００８６】
【表５】
0003589746.tif 000008
【００８７】
表５に示したアロケーションコードは、その最上位ビット（ＭＳＢ）でサンプル情報であるかサンプルコード情報であるかを示しており、下位４ビットでサンプル情報のビット幅を示している。すなわち、最上位ビットが“０”の場合はそのサンプルデータがサンプル情報であることを示し、“１”の場合はサンプルコード情報であることを示している。また、下位４ビットで示される２進数の値がサンプル情報のビット幅を示している。
【００８８】
なお、先に示した表１からも明らかなように、サンプル情報のビット幅が１ビットということはないので、下位４ビットの０００１（２）  には、サンプル情報のビット幅が１６ビットであるという情報を割り当てている。また、アロケーションコードが０００００（２）  の場合は、対応するサブバンド、チャネルには  ｓｃｆｓｉ情報、スケールファクタ情報およびサンプル情報の何れも存在しないことを示している。
【００８９】
次に、ｓｃｆｓｉ  情報がデータ入力部１より入力されると、それがシリアルデータの形で第１のＳ／Ｐ変換部１１に転送される。第１のＳ／Ｐ変換部１１では、ｓｃｆｓｉ  情報がシリアルデータの形からパラレルデータの形に要素単位（２ビット）毎に変換される。そして、このようにしてパラレル変換された  ｓｃｆｓｉ情報は、第１の書き込み部１３に与えられ、ＡＳ−ＲＡＭ１４に記憶される。
【００９０】
この  ｓｃｆｓｉ情報の書き込み時には、第１の読み出し部１５によって、ＡＳ−ＲＡＭ１４に既に記憶されているアロケーション情報が若いアドレスから順に読み出され、それが“０”でないことが確認されてから書き込まれる。上述したように、アロケーション情報が“０”の場合は、対応するサブバンド、チャネルには
ｓｃｆｓｉ情報が存在しないからである。
【００９１】
すなわち、まず、アドレス０のデータ（サブバンドｓｂ０、チャネルｃｈ０のアロケーション情報が含まれる）が読み出される。そして、その読み出されたアロケーション情報が“０”でない場合は、そのアロケーション情報と、上記要素単位にパラレル変換された  ｓｃｆｓｉ情報とがアドレス０に再度書き込まれる。また、アロケーション情報が“０”の場合は、そのアロケーション情報のみがアドレス０に再度書き込まれる。
【００９２】
以下、同様の処理がアドレス６３まで（ただし、レイヤＩＩの場合はアドレス５９まで）繰り返し行われる。これにより、ＡＳ−ＲＡＭ１４には、アロケーション情報と  ｓｃｆｓｉ情報とがそれぞれ専用のフィールド（図２において、アロケーション、（ｓｃｆｓｉ）  で示された領域）に記憶される。
【００９３】
次に、スケールファクタ情報がデータ入力部１より入力されると、それがシリアルデータの形で第１のＳ／Ｐ変換部１１に転送される。第１のＳ／Ｐ変換部１１では、スケールファクタ情報がシリアルデータの形からパラレルデータの形に変換される。そして、このようにしてパラレル変換されたスケールファクタ情報は、第１の書き込み部１３に与えられ、ＡＳ−ＲＡＭ１４に記憶される。
【００９４】
このスケールファクタ情報の書き込み時には、第１の読み出し部１５により、ＡＳ−ＲＡＭ１４に既に記憶されているアロケーション情報と  ｓｃｆｓｉ情報とが若いアドレスから順に読み出され、それらの内容を確認しながら書き込まれる。すなわち、まず最初に、アドレス０のデータ（サブバンドｓｂ０、チャネルｃｈ０のアロケーション情報および  ｓｃｆｓｉ情報が含まれる）が読み出される。そして、その読み出されたアロケーション情報が“０”でないかどうかが確認される。
【００９５】
ここで、読み出されたアロケーション情報が“０”ならば、対応するサブバンドｓｂ０、チャネルｃｈ０にスケールファクタ情報は存在しないので、そのアドレス０にはスケールファクタ情報は書き込まれない。一方、アロケーション情報が“０”でないならば、続けて  ｓｃｆｓｉ情報の値が確認され、そのサブバンドｓｂ０、チャネルｃｈ０にスケールファクタ情報が何個存在するかが判断される。
【００９６】
そして、このような判断が行われた後、シリアルデータの形で入力されたスケールファクタ情報が第１のＳ／Ｐ変換部１１でパラレル変換され、このパラレル変換されたスケールファクタ情報と上記第１の読み出し部１５によって読み出されたアロケーション情報とが、アドレス０に再度書き込まれる。
【００９７】
このときスケールファクタ情報は、ＡＳ−ＲＡＭ１４内のスケールファクタ０，スケールファクタ１，スケールファクタ２の全てのフィールドに書き込まれる。例えば、表２から分かるように、ｓｃｆｓｉ  情報の値が１０（２）  の場合、スケールファクタ情報は１個しか存在しないが、その１個の値ａがスケールファクタ０〜２の全てのフィールドに書き込まれる。
【００９８】
ところで、ｓｃｆｓｉ  情報は、それより後に入力されるスケールファクタ情報が各サブバンドの各チャネルに何個存在するかを示すだけものである。したがって、この  ｓｃｆｓｉ情報を一度読み出してスケールファクタ情報の個数を確認すれば、その後は不要なものとなる。
【００９９】
そこで、本実施例では、スケールファクタ情報の書き込みに際して、上記アロケーション情報と共に読み出された  ｓｃｆｓｉ情報は、アドレス０に再度書き込まないようにしている。そして、図２に示したように、スケールファクタ０のフィールドの一部を上記  ｓｃｆｓｉ情報のフィールドに重複させてスケールファクタ情報を書き込むようにしている。すなわち、本実施例では、ｓｃｆｓｉ  情報が既に書き込まれたフィールドにスケールファクタ情報の一部を上書きするようにして記憶させるようにしている。
【０１００】
以下、同様の処理がアドレス６３まで（ただし、レイヤＩＩの場合はアドレス５９まで）繰り返し行われる。これにより、ＡＳ−ＲＡＭ１４には、アロケーション情報とスケールファクタ情報とがそれぞれ専用のフィールド（図２において、アロケーション、スケールファクタ０，スケールファクタ１，スケールファクタ２で示された領域）に記憶される。
【０１０１】
このように、本実施例では、１つのＡＳ−ＲＡＭ１４をアロケーション情報用のフィールドと  ｓｃｆｓｉ情報用のフィールドとスケールファクタ情報用のフィールド（その一部を上記  ｓｃｆｓｉ情報のフィールドと重複させている）とに分けて使用し、ｓｃｆｓｉ  情報を一度読み出した後は、その後に入力されるスケールファクタ情報で上書きするようにしている。
【０１０２】
したがって、本実施例によれば、ＡＳ−ＲＡＭ１４の全記憶領域の中の一部をｓｃｆｓｉ  情報を一時記憶するためのメモリエリアとスケールファクタ情報の一部を一時記憶するためのメモリエリアとで共用することができる。このため、ｓｃｆｓｉ  情報専用のバッファメモリを用意しなくても済むので、ｓｃｆｓｉ  情報専用のバッファメモリが別個に設けられていた従来技術に比べて、全体の記憶容量を削減することができるようになる。
【０１０３】
なお、以上の実施例では、アロケーション情報、ｓｃｆｓｉ  情報およびスケールファクタ情報を１つのＡＳ−ＲＡＭ１４に記憶していくようにしている。しかし、本発明においては、１つのＲＡＭに少なくとも  ｓｃｆｓｉ情報とスケールファクタ情報とを記憶するようにすれば良く、必ずしもアロケーション情報を同じＲＡＭ内に記憶させる必要はない。
【０１０４】
次に、サンプルデータがデータ入力部１より入力されると、それが図１のサンプルＲＡＭブロック４に転送される。なお、上記サンプルデータは、図３の矢印で示す順番に従ってデータ入力部１に入力される。
【０１０５】
すなわち、各サンプルデータをｓｐ（ｃｈ，ｓｂ，ＧＲ）で定義（１フレーム中で時間軸方向に３６個存在するサンプルデータを３個ずつまとめた各グループ０〜１１内の番号をＧＲ（＝  ０〜２）で表した）すると、ｓｐ（０，０，０）  、ｓｐ（０，０，１）  、ｓｐ（０，０，２）  、ｓｐ（１，０，０）  、ｓｐ（１，０，１）  、ｓｐ（１，０，２）  、ｓｐ（０，１，０）  、………、ｓｐ（１，３１，２）の順番でデータ入力部１に入力され、サンプルＲＡＭブロック４に転送されていく。
【０１０６】
このサンプルＲＡＭブロック４は、図４に示すように、第２のＳ／Ｐ変換部２１と、サンプル変換部２２と、サンプル書き込み手段としての第２の書き込み部２３と、サンプルＲＡＭ２４と、サンプル読み出し手段としての第２の読み出し部２５とにより構成されている。
【０１０７】
ここで、上記第２のＳ／Ｐ変換部２１は、データ入力部１からシリアルデータの形で送られてくるサンプル（もしくはサンプルコード）情報をパラレルデータの形に変換するものである。上記サンプル変換部２２は、サンプルコード情報が入力された場合にそれを分解して３つのサンプル情報に変換するものである。
【０１０８】
また、上記サンプルＲＡＭ２４は、パラレル変換されたサンプル情報を一時記憶するものであり、上記第２の書き込み部２３および第２の読み出し部２５によって読み書きが行われるようになっている。なお、このサンプルＲＡＭ２４の１ワードは、サンプル情報の最大ビット幅である１６ビット（２バイト）に合わせて設計されている。
【０１０９】
上記データ入力部１よりサンプルＲＡＭブロック４にシリアルデータの形で転送されてきたサンプルデータは、まず第２のＳ／Ｐ変換部２１に入力される。第２のＳ／Ｐ変換部２１では、上記サンプルデータがシリアルデータの形からパラレルデータの形に２バイト毎に変換される。そして、このパラレル変換されたサンプルデータがサンプル変換部２２を通って第２の書き込み部２３に与えられ、サンプルＲＡＭ２４に記憶される。
【０１１０】
なお、このサンプルデータの書き込みの際には、データ入力部１から転送されてくるサンプルデータのビット数がカウントされると同時に、図２のＡＳ−ＲＡＭ１４から各サブバンド、チャネルのアロケーション情報が若いアドレスから順に読み出される。これにより、どのサブバンド、チャネルに対応するサンプルデータが転送されてきているのかが常に監視されている。
【０１１１】
すなわち、サンプルデータの書き込み時には、ＡＳ−ＲＡＭ１４から読み出されるアロケーション情報をもとにサンプルデータのビット幅や、そのサンプルデータがサンプル情報であるのかサンプルコード情報であるのかが確認される。
【０１１２】
そして、入力されたサンプルデータがサンプルコード情報である場合は、そのサンプルコード情報は、サンプル変換部２２によって３つのサンプル情報に分解された後で、上記サンプルＲＡＭ２４に記憶される。なお、サンプルコード情報から３つのサンプル情報を抽出するには、以下のような処理が行われる。
【０１１３】
0003589746.tif 000009
ただし、ｓ［ｉ］  （ｉ＝  ０〜２）：３つのサンプル情報
ｃ  ：初期値はサンプルコード情報
ｎｅｌｖｅｌｓ  ：３ｏｒ５ｏｒ９
％  ：余り
ｄｉｖ  ：商
【０１１４】
図４から明らかなように、本実施例による第２の書き込み部２３は、ビット幅が異なる複数のサンプル情報を、サンプルＲＡＭ２４の１ワードに１つずつ書き込むのではなく、先に書き込んだサンプル情報に続けて詰めて書き込むようにしている。
【０１１５】
これにより、サンプルＲＡＭ２４の１つのアドレス内には幾つものサンプル情報が記憶されるようになる。また、斜線部で示したように、１つのアドレス内の残りの記憶領域で足りないときは、次のアドレスの記憶領域も使って１つのサンプル情報が記憶される、つまり、１つのサンプル情報が２つのアドレスにまたがって記憶されることが頻繁に発生する。
【０１１６】
すなわち、サンプルＲＡＭ２４には、複数のサンプル情報がｓｐ（０，０，０）  、ｓｐ（０，０，１）  、ｓｐ（０，０，２）  、ｓｐ（１，０，０）  、ｓｐ（１，０，１）  、ｓｐ（１，０，２）  、ｓｐ（０，１，０）  、………、ｓｐ（１，３１，２）の順番で若いアドレスから順に詰めて記憶されていく。このように、本実施例においては、サンプルＲＡＭ２４に記憶されるサンプル情報の境界と各アドレスの境界とが一致しないので、アラインメントがとれていないと言える。以下では、この状態をミスアライン状態と呼ぶことにする。
【０１１７】
以上のようにして、アロケーション情報、スケールファクタ情報およびサンプル情報がＡＳ−ＲＡＭ１４およびサンプルＲＡＭ２４に順に記憶されていき、ある程度の量が記憶されると、それらが第１および第２の読み出し部１５，２５によって読み出され、演算部５に与えられる。
【０１１８】
上記第２の読み出し部２５は、サンプルＲＡＭ２４にミスアライン状態で記憶された複数のサンプル情報を１つずつ読み出すとともに、その読み出したサンプル情報と、所定の逆量子化係数Ｄとを加算して出力する。
【０１１９】
すなわち、この第２の読み出し部２５は、サンプル情報がサンプルＲＡＭ２４の１つのアドレス内に記憶されているときは、そのアドレスから１つのサンプル情報を取り出す。また、サンプル情報が２つのアドレスにまたがって記憶されているときは、その２つのアドレスから１つのサンプル情報を取り出す。その際、取り出したサンプル情報の最上位ビット（ＭＳＢ）を反転する。
【０１２０】
そして、このようにしてＭＳＢを反転した状態で取り出したサンプル情報Ｓ”と、所定の逆量子化係数Ｄとを加算する。なお、サンプルＲＡＭ２４から読み出されるサンプル情報に加算される逆量子化係数Ｄは、上記アロケーション情報の値に応じて決められる。
【０１２１】
次に示す図５は、上記第２の読み出し部２５の構成を示すブロック図である。図５に示したように、第２の読み出し部２５は、サンプル指定手段３１と、第１および第２のラッチ手段３２，３３と、第１および第２のサンプル取出手段３４，３５と、判別手段３６と、切り替え手段３７と、加算手段３８とにより構成されている。
【０１２２】
上記サンプル指定手段３１は、サンプルＲＡＭ２４から読み出そうとするサンプル情報のアドレスやそのアドレス内での位置を指定するものである。第１のラッチ手段３２は、上記サンプル指定手段３１により指定されたアドレスから読み出されるデータ（幾つかのサンプル情報を含んでいる）を順次ラッチするものであり、本実施例では１６ビットで構成されている。第２のラッチ手段３３は、上記第１のラッチ手段３２の出力を順次ラッチするものであり、同じく１６ビットで構成されている。
【０１２３】
第１のサンプル取出手段３４は、上記第２のラッチ手段３３にラッチされている１６ビットデータから１つのサンプル情報を取り出すものである。この第１のサンプル取出手段３４は、１つのサンプル情報が１つのアドレス内に記憶されている場合に、そのアドレスの１６ビットデータを用いて、読み出そうとする１つのサンプル情報のみを取り出す。
【０１２４】
具体的には、図６の（１）に示すように、第２のラッチ手段３３にラッチされている１６ビットデータ中に含まれる１つのサンプル情報（図６（ａ）の斜線で示した部分）が１ワードの先頭にくるように所定ビットだけ右シフトするとともに、シフトされたサンプル情報（図６（ｂ）の斜線部分）以外の１ワード内のビットを全て“０”にセットすることにより、読み出そうとする１つのサンプル情報のみを取り出す。このとき、得られたサンプル情報のＭＳＢをビット反転する。
【０１２５】
また、第２のサンプル取出手段３５は、上記第１および第２のラッチ手段３２，３３にラッチされている各１６ビットデータから１つのサンプル情報を取り出すものである。この第２のサンプル取出手段３５は、１つのサンプル情報が２つのアドレスにまたがって記憶されている場合に、その２つのアドレスの各１６ビットデータを用いて、読み出そうとする１つのサンプル情報のみを取り出す。
【０１２６】
具体的には、図６の（２）に示すように、第２のラッチ手段３３にラッチされている１６ビットデータ中に含まれる１つのサンプル情報の一部分（図６（ｄ）の斜線部分）が１ワードの先頭にくるように所定ビットだけ右シフトする。また、第１のラッチ手段３２にラッチされている１６ビットデータ中に含まれる上記１つのサンプル情報の残りの部分（図６（ｃ）の斜線部分）が上記右シフトされたサンプル情報の後に続くように所定ビットだけ左シフトすることにより、読み出そうとする１つのサンプル情報を生成する（図６（ｅ）の斜線部分）。
【０１２７】
そして、このようにして生成したサンプル情報以外の１ワード内のビットを全て“０”にセットするとともに、得られたサンプル情報のＭＳＢをビット反転することにより、２つのアドレスの各１６ビットデータから、読み出そうとする１つのサンプル情報のみを取り出す。
【０１２８】
判別手段３６は、サンプルＲＡＭ２４から読み出そうとする１つのサンプル情報が、サンプルＲＡＭ２４の１つのアドレス内に記憶されているのか、あるいは、２つのアドレスにまたがって記憶されているのかを判別する。切り替え手段３７は、上記判別手段３６による判別結果に応じて、上記第１のサンプル取出手段３４または第２のサンプル取出手段３５の何れかに切り替え、何れかの取出手段によって取り出されたサンプル情報Ｓ”を次段の加算手段３８に出力する。
【０１２９】
加算手段３８は、ＭＳＢを反転した状態で取り出されたサンプル情報Ｓ”と、アロケーション情報より得られる逆量子化係数Ｄとを加算するものである。この加算結果（Ｓ”＋Ｄ）は、図１の演算部５に与えられ、逆量子化処理および逆スケーリング処理に利用される。
【０１３０】
図７は、図５に示した第２の読み出し部２５を具体的に実施した場合の構成を示す回路図である。
図７において、４０は第１のアドレスジェネレータであり、図５のサンプル指定手段３１と判別手段３６とを含んでいる。４１，４２は第１、第２のアロケーションレジスタであり、ＡＳ−ＲＡＭ１４より入力されるアロケーション情報をラッチする。
【０１３１】
ここで、上記第１のアロケーションレジスタ４１は、チャネルｃｈ０  に対応するアロケーション情報をラッチし、上記第２のアロケーションレジスタ４２は、チャネルｃｈ１  に対応するアロケーション情報をラッチする。以下では、第１のアロケーションレジスタ４１にラッチされるアロケーション情報の値をａｌ０  で表し、第２のアロケーションレジスタ４２にラッチされるアロケーション情報の値をａｌ１  で表す。
【０１３２】
上述したように、レイヤＩＩの場合、アロケーション情報は、表５に示したようなＭＰＥＧ１規格に基づく所定のアロケーションテーブルを参照して、対応するサンプル情報のビット幅を表す値に事前に変換され、それが上記ＡＳ−ＲＡＭ１４に記憶されている。したがって、上記アロケーション情報の値ａｌ０  ，ａｌ１  は、それぞれ対応するサンプル情報のビット幅を示している。
【０１３３】
４３はアロケーションデコーダであり、上記第１および第２のアロケーションレジスタ４１，４２からアロケーション情報を順次入力し、次の表６に示す処理内容に従って所定値を表すデータを出力する。
【０１３４】
【表６】
0003589746.tif 000010
【０１３５】
例えば、入力されるアロケーション情報に対応するチャネル番号がｃｈ＝０で、グループ内番号がＧＲ＝０の場合は、上記所定値を表すデータとして“０”を出力する。また、入力されるアロケーション情報に対応するチャネル番号がｃｈ＝０で、グループ内番号がＧＲ＝１の場合は、そのアロケーション情報に対応するサンプル情報のビット幅そのものを上記所定値として出力する。他のチャネル番号、グループ内番号を有するアロケーション情報が入力されたときは、表６の対応する計算式に従って所定値を計算し、それを出力する。
【０１３６】
４４は第１の加算器であり、上記第１および第２のアロケーションレジスタ４１，４２にラッチされたアロケーション情報の値ａｌ０  ，ａｌ１  を用いて、
（ａｌ０  ＋ａｌ１  ）×３
の演算を行う。４５は第１の選択器であり、上記第１および第２のアロケーションレジスタ４１，４２にラッチされたアロケーション情報のうち、何れか一方を選択して出力する。
【０１３７】
４６は第２の加算器であり、上記第１の加算器４４から出力されるデータと第２のレジスタ４９から出力されるデータとを加算する。ここで、上記第２のレジスタ４９は、第２の選択器４７から出力されるデータをラッチするものであり、上記第２の選択器４７は、上記第２の加算器４６から出力されるデータと第１のレジスタ４８から出力されるデータとの何れかを選択するものである。
【０１３８】
また、上記第１のレジスタ４８は、上記第２のレジスタ４９から出力されるデータをラッチするものである。なお、デコード処理の初期段階においては、サンプル情報ｓｐ（０，０，０）  のＭＳＢの位置を示す値がこの第１のレジスタ４８に記憶されている。
【０１３９】
５０は第３の加算器であり、上記アロケーションデコーダ４３から出力されるデータと上記第２のレジスタ４９から出力されるデータとを加算する。５１は第３の選択器であり、上記第３の加算器５０から出力されるデータと第４の加算器５３から出力されるデータとの何れかを選択する。ここで、上記第４の加算器５３は、アドレスレジスタ５２から出力されるデータに１６（１０）（＝１０００（２）  ）を加えて出力するものである。
【０１４０】
上記アドレスレジスタ５２は、上記第３の選択器５１から出力されるデータをラッチするものである。このアドレスレジスタ５２にラッチされたデータは、サンプルＲＡＭ２４から読み出そうとしているサンプル情報のアドレスやそのアドレス内でのＭＳＢの位置を示している。
【０１４１】
５４はデコーダであり、上記第１の選択器４５から出力されるデータと上記第３の加算器５０から出力されるデータの下位４ビットとを加算し、その加算結果が１７（１０）以上になったかどうかを判別する。そして、加算結果が１７（１０）以上であるときは出力が“Ｈｉ”、１７（１０）より小さいときは出力が“Ｌｏ”となる制御信号ＯＦ−Ｐを次のマシンサイクルで出力する。このデコーダ５４は、図５に示した判別手段３６に対応するものである。
【０１４２】
５５は第１のサンプルレジスタであり、サンプルＲＡＭ２４の各アドレスより読み出される１６ビットデータを順次ラッチする。５６は第２のサンプルレジスタであり、上記第１のサンプルレジスタ５５から出力されるデータを順次ラッチする。これらの第１および第２のサンプルレジスタ５５，５６は、それぞれ図５に示した第１および第２のラッチ手段３２，３３に対応するものである。
【０１４３】
５７はデータジェネレータであり、上記第１および第２のサンプルレジスタ５５，５６にそれぞれラッチされた１６ビットデータの中から、読み出すべき１つのサンプル情報Ｓ”のみを取り出すとともに、その取り出したサンプル情報Ｓ”に逆量子化係数Ｄを加算する。このデータジェネレータ５７は、図５に示した第１および第２のサンプル取出手段３４，３５、切り替え手段３７および加算手段３８を具備している。
【０１４４】
次に、図７のように構成したサンプル記憶ブロックの動作について説明する。ここでは、一連の動作をサイクルで区切って説明することにする。まず、図７中の点線で囲んだ第１のアドレスジェネレータ４０の動作について説明する。
【０１４５】
▲１▼第１サイクル
まず始めに、ＡＳ−ＲＡＭ１４よりサブバンドｓｂ０  ，チャネルｃｈ０  に対応するアロケーション情報、およびサブバンドｓｂ０  ，チャネルｃｈ１  に対応するアロケーション情報が入力され、それぞれ第１および第２のアロケーションレジスタ４１，４２にラッチされる。
【０１４６】
それと同時に、第２の選択器４７では、端子Ａ側に入力されるデータが選択される。これにより、第１のレジスタ４８に記憶されているデータが第２のレジスタ４９にラッチされる。デコード開始時は、第１のレジスタ４８には初期値“０”がセットされているので、第２のレジスタ４９には“０”がラッチされる。
【０１４７】
また、アロケーションデコーダ４３では、上記第１および第２のアロケーションレジスタ４１，４２にラッチされたアロケーション情報に応じて所定の値が計算され、それが第３の加算器５０に出力される。例えば、チャネル番号がｃｈ＝０で、グループ内番号がＧＲ＝０の場合は、先に示した表６の処理内容に従って所定値“０”が出力される。
【０１４８】
また、第１の選択器４５では、端子Ａ側が選択される。これにより、上記第１のアロケーションレジスタ４１にラッチされたアロケーション情報がデコーダ５４に出力される。
【０１４９】
デコーダ５４は、上記第１の選択器４５から出力されるデータと第３の加算器５０から出力されるデータの下位４ビットとを加算し、その加算結果が１７（１０）以上となるかどうかを判別する。
【０１５０】
上記第３の加算器５０から出力されるデータの下位４ビットは、サンプルＲＡＭ２４から読み出そうとしているサンプル情報のＭＳＢのワード内位置を示すものである。また、第１の選択器４５から出力されるデータは、そのサンプル情報のビット幅を示すものである。よって、デコーダ５４における上記加算結果は、読み出そうとしているサンプル情報の最下位ビット（ＬＳＢ）の位置を示すことになる。
【０１５１】
したがって、この加算結果の値が１７（１０）以上であるときは、その読み出そうとしているサンプル情報がサンプルＲＡＭ２４の２つのアドレスにまたがって記憶されていると判断することができる。
【０１５２】
デコーダ５４は、このような判別結果に応じて“Ｈｉ”または“Ｌｏ”の値を持つ制御信号ＯＦ−Ｐを次の第２サイクルで出力し、それを第３の選択器５１の制御端に供給する。なお、第１サイクルにおいては、第３の選択器５１では端子Ａ側が選択されている。これにより、第３の加算器５０から出力されるデータが選択されて次段のアドレスレジスタ５２に出力される。
【０１５３】
▲２▼第２サイクル
次に、上記第３の選択器５１から出力されるデータがアドレスレジスタ５２にラッチされる。このとき、アドレスレジスタ５２の下位４ビットを除く上位ビットのデータは、サンプルＲＡＭ２４から読み出そうとしているサンプル情報のＭＳＢが記憶されているアドレスを示している。
【０１５４】
この上位ビットのデータは、サンプルＲＡＭ２４の図示しないアドレス入力部に送られる。これにより、その指定されたアドレスに記憶されている１６ビットデータが読み出され、それが次の第３サイクルで第１のサンプルレジスタ５５にラッチされる。
【０１５５】
また、この第２サイクルでは、上記第１サイクルでデコーダ５４に入力されたデータに応じて制御信号ＯＦ−Ｐの値が決められる。制御信号ＯＦ−Ｐの値が“Ｈｉ”であれば、第３の選択器５１では端子Ｂ側に入力されるデータが選択される。これにより、アドレスレジスタ５２にラッチされたデータに１６（１０）の値を加算したデータが第３の選択器５１より出力される。一方、制御信号ＯＦ−Ｐの値が“Ｌｏ”であれば、第３の選択器５１では端子Ａ側に入力されるデータが選択される。これにより、上記第１サイクルと同じ値が第３の選択器５１より出力される。
【０１５６】
▲３▼第３サイクル
上記第３の選択器５１から出力されるデータがアドレスレジスタ５２ラッチされる。このとき、アドレスレジスタ５２の下位４ビットを除く上位ビットのデータは、読み出そうとしているサンプル情報のＬＳＢが記憶されているアドレスを示している。この上位ビットのデータは、上記した第２サイクルと同様に、サンプルＲＡＭ２４の図示しないアドレス入力部に送られる。
【０１５７】
これにより、その指定されたアドレスに記憶されている１６ビットデータが読み出され、それが次の第４サイクルで第１のサンプルレジスタ５５にラッチされる。このとき、上記第２サイクルで第１のサンプルレジスタ５５にラッチされた１６ビットデータは、同じく次の第４サイクルで第２のサンプルレジスタ５６にラッチされる。
【０１５８】
それと同時に、次のアロケーション情報が第１および第２のアロケーションレジスタ４１，４２にラッチされる。また、第２の選択器４７では、端子Ｂ側に入力されるデータ、すなわち、第２の加算器４６による加算結果が選択される。
【０１５９】
上記第１サイクルで第１および第２のアロケーションレジスタ４１，４２にラッチされたアロケーション情報の値をそれぞれａｌ００，ａｌ１０とすると、上記第２の加算器４６から出力されるデータの値は、第２のレジスタ４９内のデータが“０”であることから、
（ａｌ００＋ａｌ１０）×３
である。よって、第２のレジスタ４９には、この値が新たにラッチされる。
【０１６０】
また、第１の選択器４５では、端子Ａ側が選択され、これにより、この第３サイクルで第１のアロケーションレジスタ４１にラッチされたアロケーション情報ａｌ０１がデコーダ５４に出力される。デコーダ５４は、上記第１の選択器４５から出力されるデータと第３の加算器５０から出力されるデータの下位４ビットとを加算し、その加算結果が１７（１０）以上となるかどうかを判別する。これにより、次に読み出すべきサンプル情報がサンプルＲＡＭ２４において２つのアドレスにまたがって記憶されているかどうかを判断する。
【０１６１】
デコーダ５４は、このような判別結果に応じて“Ｈｉ”または“Ｌｏ”の値を持つ制御信号ＯＦ−Ｐを次の第４サイクルで出力し、それを第３の選択器５１の制御端に供給する。なお、第３サイクルにおいては、第３の選択器５１では端子Ａ側が選択される。これにより、第３の加算器５０から出力されるデータが選択されて次段のアドレスレジスタ５２に出力される。
【０１６２】
▲４▼第４サイクル
上記第３の選択器５１から出力されるデータがアドレスレジスタ５２ラッチされる。このとき、アドレスレジスタ５２の下位４ビットを除く上位ビットのデータは、次に読み出すべきサンプル情報のＭＳＢが記憶されているアドレスを示している。この上位ビットのデータは、上記した第２サイクルと同様に、サンプルＲＡＭ２４の図示しないアドレス入力部に送られる。
【０１６３】
これにより、その指定されたアドレスに記憶されている１６ビットデータが読み出され、それが次の第５サイクルで第１のサンプルレジスタ５５にラッチされる。このとき、上記第３サイクルで第１のサンプルレジスタ５５にラッチされた１６ビットデータは、同じく次の第５サイクルで第２のサンプルレジスタ５６にラッチされる。
【０１６４】
▲５▼第５サイクル
上記した第３サイクルと同じ処理が実行される。
【０１６５】
以上のような処理を繰り返して行うことにより、まず、図３中の時間軸方向で見たサンプルＮｏ．０、チャネルｃｈ０  、各サブバンドｓｂ０  〜３１に対応するサンプル情報の読み出しを実行する。また、次のステップで、時間軸方向で見たサンプルＮｏ．０、チャネルｃｈ１  、各サブバンドｓｂ０  〜３１に対応するサンプル情報の読み出しを実行する。
【０１６６】
なお、サブバンドｓｂ０  、チャネルｃｈ１  に対応するサンプル情報の読み出し時には、第２の選択器４７で端子Ａ側のデータを最初に選択することにより、第２のレジスタ４９にラッチされているデータを第１のレジスタ４８にラッチする。
【０１６７】
以下、時間軸方向で見たサンプルＮｏ．１、２  についても同様の読み出し処理を実行する。そして、グループ０のサンプル情報の読み出しが終了し、次にグループ１のサンプル情報の読み出しを開始するときには、始めに第１のレジスタ４８の値を更新する。すなわち、グループ０についての演算後には、第２のレジスタ４９に次の（式８）に示す値が保持されており、この値を第１のレジスタ４８にラッチすることにより値を更新する。
【０１６８】
【数３】
0003589746.tif 000011
【０１６９】
そして、以上に述べたのと同様の処理をグループ０〜１１まで実行することにより、１フレーム分のサンプル情報の読み出し処理を終了する。
【０１７０】
次に、上記した第１〜第５サイクルの処理の並行して行われるデータジェネレータ５７での処理内容を、図６をもとに説明する。
上述したように、このデータジェネレータ５７は、第１および第２のサンプルレジスタ５５，５６にそれぞれラッチされている１６ビットデータの中から、読み出すべき１つのサンプル情報Ｓ”のみを取り出すとともに、その取り出したサンプル情報Ｓ”にレイヤＩＩでの逆量子化係数Ｄを加算する処理を実行する。
【０１７１】
図７に示したように、データジェネレータ５７は、アドレスレジスタ５２にラッチされているデータの下位４ビットｉ、第１の選択器４５から出力されるアロケーション情報ｊ、デコーダ５４から出力される制御信号ＯＦ−Ｐをそれぞれ入力している。そして、データジェネレータ５７は、これらのデータ値を制御入力として１つのサンプル情報を取り出す。
【０１７２】
ここで、アドレスレジスタ５２にラッチされているデータの下位４ビットｉの値は、サンプルＲＡＭ２４から読み出そうとしているサンプル情報のワード内位置を示すものである。また、上記アロケーション情報ｊの値は、上記読み出そうとしているサンプル情報のビット幅を示すものである。また、デコーダ５４から出力される制御信号ＯＦ−Ｐの値は、上記読み出そうとしているサンプル情報がサンプルＲＡＭ２４内において２つのアドレスにまたがって記憶されているかどうかを示すものである。
【０１７３】
上記制御信号ＯＦ−Ｐの値が“Ｌｏ”のときは、図６の（１）に示したように、第２のサンプルレジスタ５６にラッチされている１６ビットデータをｉビットだけ右シフトすることにより、その１６ビットデータ中に含まれる１つのサンプル情報が１ワードの先頭にくるようにする。
【０１７４】
それとともに、そのシフトされたサンプル情報以外の１ワード内の（１６−ｊ）ビットを全て“０”にセットすることにより、読み出そうとする１つのサンプル情報のみを取り出す。このとき、得られたサンプル情報のＭＳＢをビット反転することにより、目的のサンプル情報Ｓ”を得る。
【０１７５】
また、制御信号ＯＦ−Ｐの値が“Ｈｉ”のときは、図６の（２）に示したように、第２のサンプルレジスタ５６にラッチされている１６ビットデータをｉビットだけ右シフトすることにより、その１６ビットデータ中に含まれる１つのサンプル情報の一部分が１ワードの先頭にくるようにする。
【０１７６】
それとともに、第１のサンプルレジスタ５５にラッチされている１６ビットデータを（１６−ｉ）ビットだけ左シフトすることにより、その１６ビットデータ中に含まれる上記１つのサンプル情報の残りの部分が上記ｉビットだけ右シフトされたサンプル情報の後に続くようにする。これにより、読み出そうとする１つのサンプル情報を生成する。
【０１７７】
そして、このようにして生成したサンプル情報以外の残りの（１６−ｊ）ビットを全て“０”にセットするとともに、得られたサンプル情報のＭＳＢをビット反転することにより、２つのアドレスの各１６ビットデータから、読み出そうとする１つのサンプル情報Ｓ”のみを取り出す。
【０１７８】
次に、以上のようにして取り出したサンプル情報Ｓ”にアロケーション情報ｊに応じた値を持つ逆量子化係数Ｄを加算することにより、上記した（式１）中の（Ｓ”＋Ｄ）の値を得る。
【０１７９】
このように、本実施例では、サンプルＲＡＭ２４にミスアライン状態で記憶されたサンプル情報を１つずつ読み出すことができるような構成（第２の読み出し部２５）を設けたので、第２の書き込み部２３によってサンプルＲＡＭ２４の記憶領域にビット幅が異なる複数のサンプル情報を順に詰めて書き込むことが可能となり、１つのアドレス内に幾つものサンプル情報を記憶することができるようになった。
【０１８０】
これにより、サンプルＲＡＭ２４の全記憶領域の中でサンプル情報が記憶されない無駄な領域をなくすことができ、サンプルＲＡＭ２４の記憶領域を有効に使うことができるようになる。また、記憶するサンプル情報の数だけアドレスを用意しなくても済むので、１フレームすべてのサンプル情報を記憶するためのサンプルＲＡＭ２４の記憶容量を可及的に小さくすることができる。
【０１８１】
また、本実施例では、１つのサンプル情報がサンプルＲＡＭ２４内の２つのアドレスにまたがって記憶されることがあるので、１つのサンプル情報Ｓ”を取り出す際には、メモリアドレスへのアクセスを２回にわたって行い、それにより得られる各データを第１および第２のサンプルレジスタ５５，５６にラッチする。そして、その各データから１つのサンプル情報を取り出すようにしている。
【０１８２】
このため、パイプライン処理で見た場合、このラッチ処理を行っている間に、Ｓ”＋Ｄの加算を行う時間が十分に得られる。したがって、本実施例によれば、サンプル情報Ｓ”の読み出し処理とＳ”＋Ｄの加算処理とを１つのマシンサイクルで行うことができる。
【０１８３】
これに対して従来は、１つのサンプル情報Ｓ”を読み出す際にラッチ処理は行われず、また、Ｓ”＋Ｄの加算処理は、逆量子化処理や逆スケーリング処理を行うために用意された別個の乗加算器によって行われるようになされていた。このため、従来は、サンプル情報Ｓ”の読み出し処理とＳ”＋Ｄの加算処理とを行うために、２つのマシンサイクルを要していた。
【０１８４】
以上のようにして、サンプルＲＡＭ２４からサンプル情報が演算部５に読み出されると、演算部５において、逆量子化処理、逆スケーリング処理および合成サブバンドフィルタ処理によるデコード処理が行われることにより、ＰＣＭデータが生成される。
【０１８５】
なお、このデコード処理を行っている際にも、データ入力部１からオーディオ圧縮データのビットストリームが常に入力され、ＡＳ−ＲＡＭ１４およびサンプルＲＡＭ２４に各情報が順次記憶されていく。
【０１８６】
このデコード処理では、まずサブバンドサンプル情報Ｓが求められる。従来、上述のサブバンドサンプル情報Ｓは、上記した（式１）（式２）の演算式に従って求められていた。表３に示したように、スケールファクタ情報は０〜６２の値をとるから、上記（式２）は、その指数を整数部ｍと分数部ｎとに分けて次の（式９）のようにように変形することができる。
ファクタ＝２１−ｉｎｄｅｘ／３  ＝２−ｍ（２−ｎ／３）  （式９）
ただし、ｍ＝−１〜１９，ｎ＝０〜２
【０１８７】
したがって、上記（式１）は、この（式９）を用いて次の（式１０）のように変形することができる。
Ｓ＝２−ｍ・（２−ｎ／３×Ｃ）×（Ｓ”＋Ｄ）（式１０）
さらに、（式１０）において、２−ｎ／３×Ｃ＝Ｃ’とすると、
Ｓ＝２−ｍ・Ｃ’×（Ｓ”＋Ｄ）          （式１１）
となる。
【０１８８】
本実施例では、この（式１１）に基づいて逆量子化演算および逆スケーリング演算を行うことにより、サブバンドサンプル情報Ｓを求めるようにしている。ここで、（式１１）中の２−ｍの演算はシフト演算によって行うことができるので、上記サブバンドサンプル情報Ｓは、加算１回、乗算１回、シフト演算１回の演算処理によって求めることができる。
【０１８９】
周知のように、シフト演算の方が乗算よりも演算負荷はかなり小さいので、本実施例によれば、演算負荷が大きい乗算を２回にわたって行わなければならなかった従来方式に比べて、サブバンドサンプル情報Ｓを求める際の演算負荷を大幅に小さくすることができる。
【０１９０】
図８は、このような技術を実施するための構成を簡単に示したブロック図である。
図８において、６１は演算式生成手段であり、ＭＰＥＧ規格のオーディオ圧縮データに対して逆量子化処理および逆スケーリング処理を行うための演算式であって、従来の規格に基づく演算式を変形して新たな演算式を生成する。
【０１９１】
すなわち、コンパクトディスク等の図示しない外部メディアから入力されるオーディオ圧縮データ中に含まれるスケールファクタ情報の値によって特定される演算値の指数を整数部と分数部とに分離するようにして従来の（式１）を変形し、上記した本実施例の（式１１）による演算式を生成する。
【０１９２】
６２は乗加算手段であり、上記演算式生成手段６１によって生成された演算式に基づいて、入力されるオーディオ圧縮データに対して上記整数部に関する演算以外の演算を乗加算によって行う。すなわち、上記（式１１）中のＣ’×（Ｓ”＋Ｄ）の演算を行う。
【０１９３】
６３はシフト手段であり、上記乗加算手段６２により行われた演算結果に対して、上記演算式生成手段６１によって生成された演算式における上記整数部に関する演算をシフト処理によって行う。すなわち、上記（式１１）中の２−ｍを乗ずる演算を行うことにより、サブバンドサンプル情報Ｓを求め、それをＶベクタＲＡＭブロック７へ出力する。
【０１９４】
これから分かるように、乗加算手段６２は、図５に示した加算手段３８を含んでおり、（Ｓ”＋Ｄ）の値はサンプルＲＡＭブロック４において既に求められている。また、上記乗加算手段６２の中の乗算を行う部分とシフト手段６３は、演算部５に含まれており、ここで（式１１）中の残りの演算が行われる。
【０１９５】
上記演算部５は、図９に示すように、第１セレクタ７０と、第１レジスタ７１と、第２レジスタ７２と、乗算器７３と、バレルシフタ７４と、加算器７５と、第１アキュムレータ７６と、第２アキュムレータ７７と、第２セレクタ７８と、丸め及びオーバーフロー補正回路７９と、第１の反転器８０とにより構成されている。
【０１９６】
そして、上記サンプルＲＡＭブロック４内の加算手段３８で計算された（Ｓ”＋Ｄ）の値が、第１セレクタ７０を介して第１レジスタ７１に転送されて保持される。それと同時に、上記サンプル情報Ｓ”に対応するサブバンド、チャネルのスケールファクタ情報がＡＳ−ＲＡＭ１４から読み出され、その値に応じた係数Ｃ’が係数ＲＯＭブロック６から読み出される。このようにして読み出された係数Ｃ’は、演算部５内の第２レジスタ７２に転送されて保持される。
【０１９７】
図９に示したように、係数ＲＯＭブロック６は、種々の係数が記憶された複数の係数ＲＯＭ８１〜８３と、第１の符号反転器８４と、第２のアドレスジェネレータ８５とにより構成されている。そして、与えられるアロケーション情報およびスケールファクタ情報に応じて第２のアドレスジェネレータ８５により読み出しアドレスが指定され、その指定されたアドレスから所定の係数が読み出され、読み出された係数の符号が第１の符号反転器８４で適宜反転されて出力されるようになっている。
【０１９８】
なお、上記複数の係数ＲＯＭ８１〜８３のうち、Ｃ’係数ＲＯＭ８１は、上記した（式１１）中の係数Ｃ’の値を記憶したものである。また、Ｄ係数ＲＯＭ８２は、ＰＣＭデータを生成する際に利用されるウィンドウ係数Ｄｉ  の値を記憶したものである。さらに、Ｎｉｋ係数ＲＯＭ８４は、Ｖベクタを求める際に利用されるコサイン関数に関する係数Ｎｉｋの値を記憶したものである。
【０１９９】
次に、上記第１レジスタ７１に保持された加算結果（Ｓ”＋Ｄ）と、上記第２レジスタ７２に保持された係数Ｃ’とが乗算器７３において乗算される。続いて、この乗算器７３における乗算結果｛Ｃ’×（Ｓ”＋Ｄ）｝がバレルシフタ７４に与えられ、２−ｍの分だけシフト処理される。
【０２００】
以下に示す表７は、上述のような逆量子化演算および逆スケーリング演算をパイプライン処理によって行った場合にかかる全マシンサイクル数を示すものである。なお、表７中の（ａ）および（ｂ）は、従来の（式１）に基づいて演算を行った場合のマシンサイクル数を示し、（ｃ）は、本実施例の（式１１）に基づいて演算を行った場合のマシンサイクル数を示している。
【０２０１】
【表７】
0003589746.tif 000012
【０２０２】
表７の（ａ）は、１つの係数ＲＯＭに、係数ファクタ，係数Ｃ，係数Ｄの各値を記憶した場合を示すものである。この場合、まず最初に、第１のマシンサイクルでサンプル情報のＭＳＢを反転した値Ｓ”と係数Ｄとを読み出す。次に、第２のマシンサイクルで係数Ｃを読み出すとともに、上記第１のマシンサイクルで読み出したサンプル情報Ｓ”と係数Ｄとを加算する。
【０２０３】
次の第３のマシンサイクルでは、係数ファクタを読み出すとともに、上記第２のマシンサイクルで読み出した係数Ｃと加算結果（Ｓ”＋Ｄ）とを乗算する。そして、第４のマシンサイクルにおいて、上記第３のマシンサイクルで読み出した係数ファクタと乗算結果｛Ｃ×（Ｓ”＋Ｄ）｝とを乗算することにより、サブバンドサンプル情報Ｓを求める。この第４のマシンサイクルでは、次のサンプル情報Ｓ”と係数Ｄとを読み出しているので、全体としては３マシンサイクルでサブバンドサンプル情報Ｓが求められる。
【０２０４】
表７の（ｂ）は、係数ＲＯＭを２つ設け、１つ目の係数ＲＯＭに係数Ｄを記憶し、２つ目の係数ＲＯＭに係数ファクタと係数Ｃとを記憶した場合を示すものである。このように係数ＲＯＭを２つに分けると、第３のマシンサイクルの段階で次のサンプル情報Ｓ”と係数Ｄとを読み出すことが可能となるので、全体としては２マシンサイクルでサブバンドサンプル情報Ｓを求めることが可能となる。
【０２０５】
以上のような従来例に対して、本実施例の動作を示す表７の（ｃ）では、まず第１のマシンサイクルでサンプルＲＡＭ２４からサンプル情報Ｓ”を読み出すとともに、Ｃ’係数ＲＯＭ８１から係数Ｃ’を読み出す。また、この第１のマシンサイクルでは、上記読み出したサンプル情報Ｓ”と係数Ｄとを加算手段３８において加算する処理も併せて行う。
【０２０６】
上述したように、本実施例では、１つのサンプル情報Ｓ”を読み出すために、読み出し処理を２回行っており、サンプルＲＡＭ２４から１つのサンプル情報Ｓ”を取り出すまでに、第１および第２のラッチ手段３２，３３を用いた合成処理を行っている。よって、パイプライン処理で見た場合、このラッチ処理を行っている間に、Ｓ”＋Ｄの加算を行う時間が十分に得られるので、このような加算処理を１マシンサイクルで行うことが可能となっている。
【０２０７】
次に、第２のマシンサイクルでは、上記第１のマシンサイクルで読み出した係数Ｃ’と加算手段３８における加算結果（Ｓ”＋Ｄ）とを乗算するとともに、その乗算結果｛Ｃ’×（Ｓ”＋Ｄ）｝に対して２−ｍの分だけシフト演算を施す。シフト演算は乗算に比べて演算時間が非常に短くて済むので、同じマシンサイクルの中で上述の乗算とシフト演算とを行うことが可能である。
【０２０８】
次のサンプル情報（Ｓ”＋Ｄ）と係数Ｃ’の読み出しは、第３のマシンサイクルで行われる。これは、上述したように、１つのサンプル情報を読み出すためにサンプルＲＡＭ２４からの読み出し処理を２回行っているからである。また、係数Ｃ’とサンプル情報（Ｓ”＋Ｄ）との乗算および２−ｍのシフト処理は、第４のマシンサイクルで行われる。
【０２０９】
このように、本実施例では、サブバンドサンプル情報Ｓの演算だけをみた場合には２マシンサイクルかかるが、演算器は１マシンサイクルおきに使用される。したがって、空いているマシンサイクルを利用して、後述するＰＣＭデータを算出するための最終演算（Ｖベクタとウィンドウ係数Ｄｉ  との積和演算）を実行することで、パイプライン処理で見た場合、１マシンサイクルでサブバンドサンプルの演算が行えることになり、演算時間を大幅に短縮することができる。
【０２１０】
以上のようにしてサブバンドサンプル情報Ｓが求められると、その求められたサブバンドサンプル情報Ｓは、データバス１０を介してＶベクタＲＡＭブロック７に転送されて一時記憶される。
【０２１１】
このＶベクタＲＡＭブロック７は、次の図１０に示すように構成されている。すなわち、このＶベクタＲＡＭブロック７は、第１のＲＡＭ９１と、第２のＲＡＭ９２と、Ｖベクタ読み出し制御手段としての第３のアドレスジェネレータ９３と、Ｖベクタ読み出し手段としての第３の読み出し部９４と、第３の書き込み部９５と、符号反転手段としての第２の符号反転器９６と、第２の反転器９７とを具備している。
【０２１２】
上記第１のＲＡＭ９１は、チャネルｃｈ０  のサブバンドサンプル情報ＳおよびＶベクタを記憶するものであり、第２のＲＡＭ９２は、チャネルｃｈ１  のサブバンドサンプル情報ＳおよびＶベクタを記憶するものである。
【０２１３】
すなわち、上記第１および第２のＲＡＭ９１，９２はそれぞれ、各サブバンドに対応する３２ワード分のサブバンドサンプル情報Ｓを記憶するサブバンドサンプルＲＡＭ部９１ａ，９２ａと、このサブバンドサンプル情報Ｓから求められる５１２ワード分のＶベクタを記憶するＶベクタＲＡＭ部９１ｂ，９２ｂとの２つのＲＡＭ部を有している。
【０２１４】
上記第１のＲＡＭ９１および第２のＲＡＭ９２内の各サブバンドサンプルＲＡＭ部９１ａ，９２ａに一時記憶された各３２個のサブバンドサンプル情報Ｓは、演算部５に再び読み出され、ここでＶベクタが算出される。
【０２１５】
図１６のステップＰ１３に示したように、従来のＭＰＥＧオーディオデコーダにおいては、３２個のサブバンドサンプル情報Ｓから６４個のＶベクタを求めていた。これに対して本実施例の演算部５では、ある特定のＶベクタを３２個だけ求めるようにしている。以下に、このことを詳細に説明する。
【０２１６】
まず最初に、上記６４個のＶベクタについての相関を表８に示す。
【０２１７】
【表８】
0003589746.tif 000013
【０２１８】
この表８から分かるように、第１７番目のＶベクタＶ１７〜第３２番目のＶベクタＶ３２の値は、それぞれ第１５番目のＶベクタＶ１５〜第０番目のＶベクタＶ０  の値を符号反転したものである。また、第４９番目のＶベクタＶ４９〜第６３番目のＶベクタＶ６３の値は、それぞれ第４７番目のＶベクタＶ４７〜第３３番目のＶベクタＶ３３の値と同じものである。
【０２１９】
したがって、与えられる制御信号に応じてＶベクタの値を適宜符号反転するようにする機構を設ければ、ＶベクタＶ０  〜Ｖ１６およびＶベクタＶ３３〜Ｖ４８の値を求めるだけで、その求めた値からＶベクタＶ０  〜Ｖ６３の値を全て得ることができる。また、ＶベクタＶ１６の値は０であることが分かっているので、これについては演算する必要がない。この結果、Ｖ０  〜Ｖ１５、Ｖ３３〜Ｖ４８の３２ワード分のＶベクタを計算すれば良いことになる。
【０２２０】
そこで、本実施例では、次の（式１２）に示す演算式に従って、３２個のサブバンドサンプル情報Ｓから上述したＶ０  〜Ｖ１５、Ｖ３３〜Ｖ４８の３２個のＶベクタを求めるようにしている。
【０２２１】
【数４】
0003589746.tif 000014
【０２２２】
このようにして求められた３２個のＶベクタは、上記第１のＲＡＭ９１および第２のＲＡＭ９２内の各ＶベクタＲＡＭ部９１ｂ，９２ｂに転送されて一時記憶される。そして、上記ＶベクタＲＡＭ部９１ｂ，９２ｂに一時記憶されたＶベクタは、演算部５に再び読み出され、ここで所定の演算が行われることにより、ＰＣＭデータが生成される。
【０２２３】
ここで、演算部５は、ＶベクタＲＡＭ部９１ｂ，９２ｂから読み出される複数個のＶベクタと係数ＲＯＭブロック６から読み出されるウィンドウ係数Ｄｉ  とを用いてＰＣＭデータを１個ずつ生成する。
【０２２４】
図１１は、上記のようにＶベクタを求めるとともに、その求めたＶベクタからＰＣＭデータを生成するまでの処理、すなわち、合成サブバンドフィルタ処理の動作を示すフローチャートである。なお、ここではチャネルｃｈ０  についてのＶベクタおよびＰＣＭデータを求める場合を例にとって説明する。
【０２２５】
図１１において、最初にステップＰ１で、第１のＲＡＭ９１内のＶベクタＲＡＭ部９１ｂのアドレスが３２ワード分シフトされる。これにより、図１２に示したように、ＶベクタＲＡＭ部９１ｂの第０アドレスから第３２アドレスまでが空にされ、これから算出するＶベクタの記憶領域が確保される。
【０２２６】
次の表９は、Ｖベクタを記憶するためのハードウェア上のアドレス（上記ＶベクタＲＡＭ部９１ｂの３２個ごとのアドレスに相当）をＶ’で表し、ＭＰＥＧ規格上のＶベクタをＶで表して、それらの関係を示したものである。これから分かるように、ＶベクタＲＡＭ部９１ｂの第０アドレス〜第３１アドレスには、Ｖ０  〜Ｖ１５、Ｖ３３〜Ｖ４８の３２ワード分のＶベクタが順に記憶されることになる。
【０２２７】
【表９】
0003589746.tif 000015
【０２２８】
そして、ステップＰ２で、各サブバンドごとに求められた３２個のサブバンドサンプル情報Ｓが演算部５に入力される。次に、ステップＰ３で、上記ステップＰ２にて入力された３２個のサブバンドサンプル情報Ｓに基づいて１個のＶベクタが算出される。このようにして求められたＶベクタは、ＶベクタＲＡＭ部９１ｂの新たに確保された記憶領域（第０アドレス〜第３２アドレスの何れか）に一時記憶される。
【０２２９】
次に、ステップＰ４で、上記ステップＰ３にて求められた１個のＶベクタと、過去に入力された複数組のサブバンドサンプル情報Ｓに基づいて既に求められ、ＶベクタＲＡＭ部９１ｂの第３２アドレス〜第５１１アドレスに既に記憶されている複数個のＶベクタとがＶベクタＲＡＭ部９１ｂから読み出される。この読み出しは、第３のアドレスジェネレータ９３の下で第３の読み出し部９４によって行われる。そして、これらの読み出されたＶベクタに基づいて１個のＰＣＭデータが算出される。
【０２３０】
このＶベクタの読み出しに際して、第２の符号反転器９６は、上記ＶベクタＲＡＭ部９１ｂから読み出されるＶベクタの符号を、第３のアドレスジェネレータ９３から与えられる制御信号Ｓｃ  に応じて反転する。すなわち、第３のアドレスジェネレータ９３は、ＶベクタＲＡＭ部９１ｂからＶベクタを読み出す際のアドレス指定を制御するとともに、その読み出したＶベクタの符号を反転するか否かを指示するための制御信号Ｓｃ  を第２の符号反転器９６に出力する。
【０２３１】
例えば、ＶベクタＲＡＭ部９１ｂに記憶されているＶベクタＶ０  〜Ｖ１５あるいはＶベクタＶ３３〜Ｖ４８を演算部５において利用しようとする第１の利用要求信号Ｓ１  が与えられたときには、第３のアドレスジェネレータ９３は、表９に示したアドレスＶ’０  〜Ｖ’３１をそのまま指定する。このとき、符号反転を行わないことを指示するための制御信号Ｓｃ  を第２の符号反転器９６に出力する。
【０２３２】
また、上記ＶベクタＲＡＭ部９１ｂに記憶されていないＶベクタＶ１７〜Ｖ３２を利用しようとする第２の利用要求信号Ｓ２  が与えられたときには、ＶベクタＶ１７〜Ｖ３２の値がＶベクタＶ１５〜Ｖ０  の値を符号反転した値にそれぞれ等しいことから（表８参照）、第３のアドレスジェネレータ９３は、表９に示したアドレスＶ’１５〜Ｖ’０  を指定する。このとき、符号反転を行うことを指示するための制御信号Ｓｃ  を第２の符号反転器９６に出力する。
【０２３３】
また、同じくＶベクタＲＡＭ部９１ｂに記憶されていないＶベクタＶ４９〜Ｖ６３を利用しようとする第３の利用要求信号Ｓ３  が与えられたときには、ＶベクタＶ４９〜Ｖ６３の値がＶベクタＶ４７〜Ｖ３３の値にそれぞれ等しいことから（表８参照）、第３のアドレスジェネレータ９３は、表９に示したアドレスＶ’３０〜Ｖ’１６を指定する。このとき、符号反転を行わないことを指示するための制御信号Ｓｃ  を第２の符号反転器９６に出力する。
【０２３４】
次に、上記ステップＰ４にて求められた１個のＰＣＭデータは、次のステップＰ５で出力インタフェース部８に転送され、外部に出力される。このとき、出力インタフェース部８は、演算部５によってＰＣＭデータが１個求められる毎にそのＰＣＭデータをアナログ信号に変換して外部に出力する。
【０２３５】
ここで、上記ステップＰ３およびステップＰ４における処理の内容を更に詳しく説明する。従来は、上記した（式７）に示す演算式に従って３２個のＰＣＭデータを求めていた。すなわち、Ｖベクタから生成した複数個のＷベクタを用いて３２個のＰＣＭデータを求めていた。なお、この（式７）を展開すると、次の（式１３）のように表すことができる。
【０２３６】
【数５】
0003589746.tif 000016
【０２３７】
また、この（式１３）を（式４）〜（式６）の関係を用いて変形すると、次の（式１４）のように表すことができる。本実施例では、この（式１４）の演算式に従ってＰＣＭデータを求めるようにしている。
【０２３８】
【数６】
0003589746.tif 000017
【０２３９】
すなわち、（式７）を見てみると、例えばＰＣＭデータＰＣＭ０を求めるために用いているＶベクタは、Ｖ０  ，Ｖ９６，…，Ｖ９９２  のＶベクタであることが分かる。ここで、ＶベクタＶ０  は、上記ステップＰ３にて求められ、ＶベクタＲＡＭ部９１ｂの第０アドレスに記憶されたものである。
【０２４０】
また、ＶベクタＶ９６，…，Ｖ９９２  は、過去に入力された複数組のサブバンドサンプル情報Ｓに基づいて既に求められ、ＶベクタＲＡＭ部９１ｂの第３２アドレス〜第５１１アドレスに既に記憶されているものである（ただし、ＶベクタＶ９６，…，Ｖ９９２  の値そのものが実際に求められて記憶されているとは限らず、上記の表８に示した相関に基づいて求められた一方のＶベクタの値が記憶されていることがある）。
【０２４１】
したがって、ＰＣＭデータＰＣＭ０を求めるときには、１個のＶベクタＶ０  のみを求め、残りのＶベクタＶ９６，…，Ｖ９９２  をＶベクタＲＡＭ部９１ｂから読み出せば（第２の符号反転器９６によって適宜符号反転する）良いことになる。
【０２４２】
そこで、図１０の第３のアドレスジェネレータ９３は、演算部５によりＶベクタＶ０  が算出されたときは、ＶベクタＲＡＭ部９１ｂからＶベクタＶ０  ，Ｖ９６，…，Ｖ９９２  を読み出すように第３の読み出し部９４を制御している。他のＰＣＭデータＰＣＭ１〜ＰＣＭ３１  についても同様である。
【０２４３】
なお、ここでは、演算部５によりＶベクタＶ０  が算出されたときに、ＶベクタＲＡＭ部９１ｂからＶベクタＶ０  ，Ｖ９６，…，Ｖ９９２  を読み出すようにしているが、ＶベクタＶ０  については演算部５により求められたもの自体を使用するようにしてもよい。
【０２４４】
次に、ステップＰ６で、３２個のＰＣＭデータＰＣＭ０〜ＰＣＭ３１  が全て出力されたかどうかが判断される。まだ出力していないＰＣＭデータが残っているときは、ステップＰ３の処理に戻り、次のＰＣＭデータの生成が行われる。一方、３２個のＰＣＭデータが全て出力されたときは、ステップＰ７に進み、デコード処理を終了するかどうかが判断される。そして、デコード処理を終了しないときは、ステップＰ１の処理に戻り、次の３２個分のＰＣＭ演算処理を開始する。
【０２４５】
以上のように、本実施例によれば、１組のサブバンドサンプル情報Ｓから生成される６４個のＶベクタのうち、Ｖ０  〜Ｖ１５、Ｖ３３〜Ｖ４８の３２個のＶベクタのみを求めてそれを各ＶベクタＲＡＭ部９１ｂ，９２ｂに記憶するだけで、読み出しの際に６４個のＶベクタＶ０  〜Ｖ６３の値を全て得ることができる。
【０２４６】
このため、６４個のＶベクタを全て計算してＶベクタＲＡＭに記憶していた従来のＭＰＥＧオーディオデコーダに比べ、記憶するＶベクタのデータ量を半分に減らすことが可能となり、ＶベクタＲＡＭ部９１ｂ，９２ｂのメモリ容量をそれぞれ従来の半分に削減することができる。すなわち、従来は片チャネルで１０２４ワード分のメモリ容量が必要であったのに対し、本実施例では５１２ワード分のメモリ容量で済む。
【０２４７】
なお、上記実施例においては、第２の符号反転器９６を設けたので、相互に符号のみが異なるＶベクタの組のうちの一方の値のみを求めてＶベクタＲＡＭ部９１ｂ，９２ｂに記憶することができるようになった。しかし、上記第２の符号反転器９６は必ずしも設けなくてもよい。
【０２４８】
上記のように第２の第２の符号反転器９６を設けない場合には、相互に等しい値を持つＶベクタの組のうちの他方のＶベクタだけが、その値を計算して上記ＶベクタＲＡＭ部９１ｂ，９２ｂに記憶しておかなくても済むようになるだけであるが、この場合も従来と比較すれば上記ＶベクタＲＡＭ部９１ｂ，９２ｂの記憶容量を小さくすることができる。
【０２４９】
また、上記した（式１２）から明らかなように、Ｖベクタの算出は乗加算によって行われているが、周知のように、乗算は演算負荷が大きい演算である。したがって、本実施例によれば、Ｖベクタの計算量をも半分に減らすことができているので、演算負荷を小さくできるとともに、処理を高速化することができる利点が得られる。
【０２５０】
さらに、本実施例では、以上のようなＰＣＭデータを１個ずつ生成して出力するまでの一連の処理をパイプライン処理で行い、１個のＰＣＭデータを外部に出力している間に次の１個のＰＣＭデータを生成するようにしている。そして、この１個のＰＣＭデータの生成処理にかかるマシンサイクル数と出力処理にかかるマシンサイクル数とが同じになるようにしている。
【０２５１】
したがって、本実施例によれば、複数のＶベクタからＷベクタを生成することなくＰＣＭデータを１個ずつ生成し、１個のＰＣＭデータを生成している間に前に生成した１個のＰＣＭデータを外部に出力することによってＰＣＭデータを続けて出力するようにすることができる。
【０２５２】
このため、ＰＣＭデータ出力用のメモリおよびＰＣＭデータを生成するためのデータを保持しておくメモリを設けなくても、ＰＣＭデータ（オーディオデータ）を絶え間なく外部に出力することができるようになる。
【０２５３】
図１３は、以上のような本実施例のＭＰＥＧオーディオデコーダにおける一連のデータ処理の流れを概念的に示す図である。また、この本実施例におけるデータ処理の流れの特徴を分かりやすくするために、その比較例として、従来のＭＰＥＧオーディオデコーダにおけるデータ処理の流れを図１４に示す。
【０２５４】
図１４から分かるように、従来は、アロケーション情報、ｓｃｆｓｉ  情報、スケールファクタ情報およびサンプル情報を記憶するためのバッファメモリ（ＲＡＭ）がそれぞれ専用に設けられていた。そして、それぞれのバッファメモリにそれぞれの情報が記憶されるようになされていた。また、デコード処理では、３２個のＰＣＭデータを計算し終わった後に、それらを１個ずつ出力するようになされていた。
【０２５５】
これに対して、図１３に示した本実施例では、１つのＡＳ−ＲＡＭ１４をアロケーション情報用のフィールドと  ｓｃｆｓｉ情報用のフィールドとスケールファクタ情報用のフィールド（その一部を上記  ｓｃｆｓｉ情報のフィールドと重複させている）とに分けて使用し、ｓｃｆｓｉ  情報を一度読み出した後は、その後に入力されるスケールファクタ情報で上書きするようにしている。
【０２５６】
また、デコード処理では、ＰＣＭデータを１個ずつ順番に生成し、１個のＰＣＭデータを生成したらそれを直ちに出力していくことによってＰＣＭデータを順に続けて出力することができるようにしている。
【０２５７】
したがって、本実施例によれば、ＡＳ−ＲＡＭ１４の全記憶領域の中の一部を、ｓｃｆｓｉ  情報を一時記憶するためのメモリエリアとスケールファクタ情報の一部を一時記憶するためのメモリエリアとで共用することができるので、ｓｃｆｓｉ  情報専用のバッファメモリを用意しなくても良い。また、ＰＣＭデータを生成するためのデータを保持しておくメモリも設けなくてもオーディオデータを絶え間なく外部に出力することができる。
【０２５８】
また、この図１３からは明らかでないが、サンプルＲＡＭ２４の記憶容量や合成サブバンドフィルタ処理の過程で用いられるＶベクタＲＡＭ部９１ｂ，９２ｂの記憶容量が従来に比べて小さくて済むことは、先に示した各図面を用いて説明したとおりである。
【０２５９】
以上のことより、本実施例のＭＰＥＧオーディオデコーダでは、その内部に備えられている種々のバッファメモリの記憶容量をそれぞれ小さくすることができ、全体として見ると、内部メモリの記憶容量を従来よりも格段に小さくすることができている。
【０２６０】
また、次の表１０は、演算部５において３２個のＰＣＭデータを求めるのに必要なマシンサイクル数を示したものである。なお、ここでは、従来のＭＰＥＧ規格に従った処理として表７（ｂ）の場合を用い、本実施例に従った処理として表７（ｃ）の場合を用いて両者を比較している。また、この表１０は、積和演算を１マシンサイクルで処理できる装置で比較したものとする。
【０２６１】
【表１０】
0003589746.tif 000018
【０２６２】
この表１０から明らかなように、本実施例のＭＰＥＧオーディオデコーダによれば、３２個のＰＣＭデータを生成するのにかかるマシンサイクル数を、従来の約４０％に低減することができている。したがって、一連のデコード処理を高速に行うことができるようになる。
【０２６３】
【発明の効果】
本発明は上述したように、少なくとも  ｓｃｆｓｉ情報およびスケールファクタ情報が一時記憶されるＡＳ−ＲＡＭにおいて、上記  ｓｃｆｓｉ情報が既に記憶されたＡＳ−ＲＡＭの所定記憶領域にその後に入力されるスケールファクタ情報の一部を上書きするようにしてスケールファクタ情報を記憶させる  ｓｃｆｓｉ・スケールファクタ書き込み手段を設け、上記ＡＳ−ＲＡＭの記憶領域の一部を、ｓｃｆｓｉ  情報を一時記憶しておくための記憶領域と、スケールファクタ情報の一部を一時記憶しておくための記憶領域とで共用させるようにしたので、ｓｃｆｓｉ  情報専用のバッファメモリを設けなくても済み、オーディオ圧縮データ中に存在する各情報を一時記憶しておくためのメモリの記憶容量を、ｓｃｆｓｉ  情報を記憶するための専用の記憶領域を設けなくても済む分だけ削減することができる。
【０２６４】
また、複数のサンプル情報をサンプルＲＡＭの記憶領域に順に書き込むことによりミスアライン状態で記憶させるサンプル書き込み手段と、上記サンプルＲＡＭにミスアライン状態で記憶された複数のサンプル情報を１つずつ取り出して読み出すサンプル読み出し手段とを設けたので、１つのアドレス内に複数のサンプル情報を記憶することができるようになり、サンプルＲＡＭの全記憶領域の中でサンプル情報が記憶されない無駄な領域をなくすことができるとともに、記憶するサンプル数の分だけアドレスを用意しなくても済み、サンプルＲＡＭの記憶容量を可及的に小さくすることができる。
【０２６５】
また、サブバンドサンプル情報から生成される複数のＶベクタのうち、相関関係にあるＶベクタのうちの一方のＶベクタの値を演算してＶベクタＲＡＭに記憶するようにし、利用要求があったＶベクタが上記ＶベクタＲＡＭに記憶されていない場合には、相関関係にあるＶベクタを上記ＶベクタＲＡＭから読み出し、上記読み出したＶベクタが相関関係にあることにより等しい値を持つ場合にはそのまま出力するとともに、符号のみが異なる場合には符号反転手段により符号反転して出力するようにしたので、上記相互に等しい値を持つＶベクタの組のうちの他方のＶベクタおよび相互に符号のみが異なるＶベクタの組のうちの他方のＶベクタの値を計算して上記ＶベクタＲＡＭに記憶しておかなくても全てのＶベクタの利用要求に応じることができるようになり、上記１組のサブバンドサンプル情報から生成される複数のＶベクタの全てが得られるようにするために記憶しなければならないＶベクタのデータ量を更に削減することができ、必要な記憶容量を一層小さくすることができる。しかも、合成サブバンドフィルタ処理においてＶベクタを求める際の処理時間を短くするすることもできる。
【０２６６】
また、演算手段により求められた１個のＶベクタおよびある１個のＰＣＭデータを生成するのに必要な複数個のＶベクタであって、現在のサブバンドサンプル情報の組より前に入力されたサブバンドサンプル情報の組に基づいて既に求められて飛び飛びのアドレスに記憶されたＶベクタＲＡＭから読み出されたＶベクタと、所定の逆量子化係数とを用いて乗加算を行うことによりＰＣＭデータを１個ずつ生成するようにするとともに、生成する毎に外部に出力するようにしたので、ＰＣＭデータ出力用のメモリおよびＰＣＭデータを生成するためのデータを保持しておくメモリを設けなくても、オーディオデータを絶え間なく外部に出力できるようになり、オーディオデータを絶え間なく外部に出力できるようにするために設けなければならないメモリの容量を可及的に少なくすることができる。
【０２６７】
このように、本発明によれば、一連のデコード処理の過程で得られる種々の情報を一時記憶しておくために用いられるデコーダ内部の各バッファメモリの記憶容量をそれぞれ小さくすることができ、あるいは、メモリ自体を不要とすることができるので、ＭＰＥＧオーディオデコーダの内部メモリの全体としての記憶容量を従来よりも格段に小さくすることができる。
【０２６８】
さらに、本発明は上述したように、オーディオ圧縮データ中のスケールファクタ情報の値によって特定される演算値の指数を分数部と整数部とに分離した演算式に基づいて、１回の乗加算演算と１回のシフト演算とによって逆量子化処理および逆スケーリング処理を行うようにしたので、従来は２回にわたって行っていた乗算の一方をシフト演算に置き換えることで演算負荷を著しく小さくすることができる。
【０２６９】
また、請求項８に記載の発明によれば、ラッチ処理を行うことにより取り出したサンプル情報と所定の逆量子化係数とを加算する加算手段を更に設けたので、ある１つのサンプル情報の取り出し処理を行っている間に、その前に取り出されたサンプル情報を用いて加算処理を行うことができ、上記サンプル情報の取り出し処理と加算処理とを１マシンサイクルで行うことができる。
【０２７０】
また、請求項１２に記載の発明によれば、逆量子化処理および逆スケーリング処理をパイプライン処理によって行うようにしたので、上記サンプル情報を取り出して逆量子化係数を加算する処理と、前のマシンサイクルにおける取り出し処理および加算処理によって得られた情報を用いた乗算処理およびシフト処理とを、全て１マシンサイクルで行うことができ、逆量子化処理および逆スケーリング処理を行うための処理時間を短くすることができる。
【０２７１】
このように、本発明によれば、逆量子化処理および逆スケーリング処理を行う際にかかる処理時間と、その後の合成サブバンドフィルタ処理においてＶベクタを求める際にかかる処理時間とを共に短くすることができるので、一連のデコード処理を従来に比べて極めて高速に行うことができる。
【図面の簡単な説明】
【図１】本発明の一実施例によるＭＰＥＧオーディオデコーダの全体構成を示すブロック図である。
【図２】ＡＳ−ＲＡＭブロックの構成を示すブロック図である。
【図３】本実施例のＭＰＥＧオーディオデコーダに入力されるサンプル情報の入力順を示す図である。
【図４】サンプルＲＡＭブロックの構成を示すブロック図である。
【図５】第２の読み出し部の構成を示すブロック図である。
【図６】データジェネレータでの処理内容を説明するための図である。
【図７】図５に示した第２の読み出し部を具体的に実施した場合の構成を示す回路図である。
【図８】逆量子化処理および逆スケーリング処理によってサブバンドサンプル情報を求めるための構成を示すブロック図である。
【図９】演算部および係数ＲＯＭブロックの構成を示す図である。
【図１０】ＶベクタＲＡＭブロックの構成を示すブロック図である。
【図１１】本実施例のＭＰＥＧオーディオデコーダにおける合成サブバンドフィルタ処理の流れを示すフローチャートである。
【図１２】本実施例によるＶベクタＲＡＭ部のアドレスシフト処理を説明するための図である。
【図１３】本実施例のＭＰＥＧオーディオデコーダにおける一連のデコード処理の流れを示す図である。
【図１４】従来のＭＰＥＧオーディオデコーダにおける一連のデコード処理の流れを示す図である。
【図１５】ＭＰＥＧ１オーディオ規格のレイヤＩＩによるオーディオ圧縮データのビットストリームを示す図である。
【図１６】従来のＭＰＥＧオーディオデコーダにおける合成サブバンドフィルタ処理の流れを示すフローチャートである。
【図１７】従来のＶベクタＲＡＭのアドレスシフト処理を説明するための図である。
【符号の説明】
３  ＡＳ−ＲＡＭブロック
４  サンプルＲＡＭブロック
５  演算部
６  係数ＲＯＭブロック
７  ＶベクタＲＡＭブロック
８  出力インタフェース部
１３  第１の書き込み部
１３ａ  上書き手段
１４  ＡＳ−ＲＡＭ
２３  第２の書き込み部
２４  サンプルＲＡＭ
２５  第２の読み出し部
３１  サンプル指定手段
３２  第１のラッチ手段
３３  第２のラッチ手段
３４  第１のサンプル取出手段
３５  第２のサンプル取出手段
３６  判別手段
３７  切り替え手段
３８  加算手段
６１  演算式生成手段
６２  乗加算手段
６３  シフト手段
７３  乗算器
７４  バレルシフタ
８１  Ｃ’係数ＲＯＭ
９１ａ，９２ａ  サブバンドサンプルＲＡＭ部
９１ｂ，９２ｂ  ＶベクタＲＡＭ部
９３  第３のアドレスジェネレータ
９４  第２の符号反転器
【図１】
0003589746.tif 000019
【図２】
0003589746.tif 000020
【図３】
0003589746.tif 000021
【図４】
0003589746.tif 000022
【図５】
0003589746.tif 000023
【図６】
0003589746.tif 000024
【図７】
0003589746.tif 000025
【図８】
0003589746.tif 000026
【図９】
0003589746.tif 000027
【図１０】
0003589746.tif 000028
【図１１】
0003589746.tif 000029
【図１２】
0003589746.tif 000030
【図１３】
0003589746.tif 000031
【図１４】
0003589746.tif 000032
【図１５】
0003589746.tif 000033
【図１６】
0003589746.tif 000034
【図１７】
0003589746.tif 000035