(57)【特許請求の範囲】
【請求項１】
乗算器と加減算器とを備え、連続整数の時刻インデックスｎで表される２Ｍ個の時系列音声データｙ(n)と連続整数の波数インデックスｋで表されるＭ個の周波数成分データＸ(k)との間の次の関係式、
【数２】
0003547971.tif 000012
で表される離散コサイン変換を行う回路であって、前記時系列音声データｙ(n)又は前記周波数成分データＸ(k)に基づいて得られた２つの関数Ｆ1(j)及びＦ2(j)（引数ｊは整数、かつ０≦ｊ＜Ｍ／２）の値から次の演算式、
【数３】
Ｇ(j)    ＝ａ0・Ｆ1(j)＋ａ1・Ｆ1(M/2-1-j)                ＋ａ2・Ｆ2(j)＋ａ3・Ｆ2(M/2-1-j)
Ｇ(M-1-j)＝ａ4・Ｆ1(j)＋ａ5・Ｆ1(M/2-1-j)                ＋ａ6・Ｆ2(j)＋ａ7・Ｆ2(M/2-1-j)，（ａ0〜ａ7は比例係数）
によって、関数値Ｇ(j)及びＧ(M-1-j)を求める演算を含んだ変換処理を行う離散コサイン変換回路において、
それぞれ前記Ｆ1(j)及びＦ2(j)の各関数値を記憶するメモリと、
それぞれ前記メモリから読み出された値を保持しうる４つのレジスタと、
前記４つのレジスタのいずれかを選択して、当該レジスタの保持する値を前記乗算器へ出力するセレクタと、
を有することを特徴とする離散コサイン変換回路。
【請求項２】
請求項１記載の離散コサイン変換回路を動作する方法であって、
前記メモリからあるｊに対応する前記関数値Ｆ1(j)，Ｆ1(M/2-1-j)，Ｆ2(j)，Ｆ2(M/2-1-j)の組を読み出し、それぞれの値を前記４つのレジスタに格納し、
格納された前記関数値の組は、当該ｊの値に対応した前記演算式の第一式と第二式との両方の計算が行われる間、前記各レジスタに保持され、
当該保持された前記関数値の組を用いて、当該ｊの値に対応した前記演算式の第一式と第二式との両方の計算が行われることを特徴とする離散コサイン変換回路の動作方法。
【請求項３】
請求項１記載の離散コサイン変換回路を動作する方法であって、
前記メモリからあるｊに対応する前記関数値Ｆ1(j)，Ｆ1(M/2-1-j)，Ｆ2(j)，Ｆ2(M/2-1-j)の組を読み出し、それぞれの値を前記４つのレジスタに格納し、
格納された前記関数値の組は、前記演算式に基づいて当該ｊの値におけるＧ(j)，Ｇ(M-1-j)，Ｇ(M/2-1-j)及びＧ(M/2+j)の値の計算が行われる間、前記各レジスタに保持され、
当該保持された前記関数値の組を用いて、当該ｊの値におけるＧ(j)，Ｇ(M-1-j)，Ｇ(M/2-1-j)及びＧ(M/2+j)の値の計算が行われることを特徴とする離散コサイン変換回路の動作方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、デジタル音声録音装置、再生装置におけるデジタル音声データの圧縮／伸長処理に用いることができる離散コサイン変換回路及びその動作方法に関し、特に処理効率を向上し、消費電力を低減することに関する。
【０００２】
【従来の技術】
図２は、デジタル化された音声データの符号化／復号化を行う処理装置の概略のブロック図である。録音時には、入力された音声信号が、まずＡ／Ｄ（ａｎａｌｏｇｔｏ  ｄｅｇｉｔａｌ）変換器２によりデジタル音声データに変換される。デジタル音声データは、ＱＭＦ（ｑｕａｄｒａｔｕｒｅ  ｍｉｒｒｏｒ  ｆｉｌｔｅｒ）回路４を用いて低、中、高の３つの周波数帯域に分割される。デジタルの時系列音声データは、離散コサイン変換（ＤＣＴ：ｄｉｓｃｒｅｔｅ  ｃｏｓｉｎｅ  ｔｒａｎｓｆｏｒｍ）回路６を用いて周波数成分データに変換され、さらに量子化器８にて量子化される。このように生成された符号化データは、所定の記録媒体に記録するための次段の処理回路に供給される。
【０００３】
一方、再生時には、上述とは逆の処理が行われる。つまり、逆量子化器１０、離散コサイン逆変換回路（Ｉｎｖｅｒｓｅ  ＤＣＴ）１２、ＩＱＭＦ（ｉｎｖｅｒｓｅ  ｑｕａｄｒａｔｕｒｅ  ｍｉｒｒｏｒ  ｆｉｌｔｅｒ）回路１４、Ｄ／Ａ（ｄｅｇｉｔａｌ  ｔｏ  ａｎａｌｏｇ）変換器１６はそれぞれ量子化器８、ＤＣＴ回路６、ＱＭＦ回路４、Ａ／Ｄ変換器２が行うのとは逆の変換を行い、これらを用いて、記録された符号化データから音声信号が再生される。
【０００４】
さて、ＤＣＴは、音声信号の符号化／復号化において有用であり、広く用いられるようになっている。ＤＣＴには種々のタイプがあり、例えば、音声録音再生装置に用いられる一つのタイプとして、連続整数の時刻インデックスｎで表される２Ｍ個の時系列音声データｙ（ｎ）と連続整数の波数インデックスｋで表されるＭ個の周波数成分データＸ（ｋ）との間の次の関係式、
【数４】
0003547971.tif 000002
で表されるＤＣＴがある。これはいくつかの基本的なＤＣＴからはやや変更を加えられたものであるため、ここではＭｏｄｉｆｉｅｄ  ＤＣＴ、以下、略してＭＤＣＴと呼び、またその逆変換をＩＭＤＣＴ（Ｉｎｖｅｒｓｅ  ＭＤＣＴ）と呼ぶ。
【０００５】
ＤＣＴを高速に処理するアルゴリズムとして高速フーリエ変換（ＦＦＴ）を使用する方法が知られている。上記ＭＤＣＴ又はＩＭＤＣＴについても、同様にＦＦＴを用いたアルゴリズムにより数列Ｘ（ｋ）から数列ｙ（ｎ）を求めたり、逆に数列ｙ（ｎ）から数列Ｘ（ｋ）を求めることが行われている。
【０００６】
より厳密に述べれば、時系列音声データｙ（ｎ）と周波数成分データＸ（ｋ）との関係式である（１）式はＩＭＤＣＴの計算に適した形式に表されたものであり、ＭＤＣＴは後述の（６）式の表現に基づいて計算が行われる。
【０００７】
まず（１）式に基づくＩＭＤＣＴに関する計算アルゴリズムを以下に説明する。まず、変換元データである数列Ｘ（ｋ）を所定規則に従って並べ替えて再構成し、新たな数列Ｕ（ｋ）を定義する。このＵ（ｋ）に基づいて、次式で表されるＺ（ｊ）が定義される。なお、ここで、ｉは虚数単位であり、ψ（ｊ）は所定のｊの関数を表す。
【０００８】
Ｚ（ｊ）＝（Ｕ（２ｊ）＋ｉＵ（２ｊ＋１））・ｅｘｐ（ｉψ（ｊ））            ………（２）
さらに、このＺ（ｊ）から次式で定義されるｚ（ｎ）が求められる。
【０００９】
【数５】
0003547971.tif 000003
この（３）式を高速に計算するためにＦＦＴが用いられる。よく知られているようにＦＦＴは、上記（３）式を次式で表される演算の繰り返しにより計算するものである。なお、ψ’（ｊ）は所定のｊの関数である。
【００１０】
Ｚ（ｊ１）＋Ｚ（ｊ２）・ｅｘｐ（ｉψ’（ｊ））                                              ………（４）
ＩＭＤＣＴでは、このｚ（ｎ）から、次の（５）式で定義されるｕ（ｎ）を求め、この数列ｕ（ｎ）を並べ替えにより再構成して、時系列音声データｙ（ｎ）を得る。なお、ａ０〜ａ３はｎごとに定まる比例係数である。
【００１１】
【数６】
0003547971.tif 000004
一方、ＭＤＣＴに関しては、時系列音声データｙ（ｎ）に基づいた数列ｘ（ｎ）から周波数成分データＸ（ｋ）を求めるために次の関係式が用いられる。
【００１２】
【数７】
0003547971.tif 000005
（１）式と（６）式とは係数２／Ｍを除けば、ほとんど同一の形式を有していることから、ＭＤＣＴの計算アルゴリズムは上述したＩＭＤＣＴのそれと類似することが期待される。実際、（６）式に基づくＭＤＣＴの計算アルゴリズムは、以下のようなものであり、ＩＭＤＣＴのアルゴリズムと共通点を有する。
【００１３】
まず、ＭＤＣＴでは次式に示されるような、変換元データである数列ｘ（ｎ）の所定の要素同士の和（又は差）により、新たな数列ｘ’（ｎ）を定義する。
【００１４】
ｘ’（ｎ）＝ｘ（ｎ１）＋ｘ（ｎ２）又はｘ（ｎ１）−ｘ（ｎ２）              ………（７）
このｘ’（ｎ）に基づいて、（２）式と同形式の次式で表されるｚ（ｊ）が定義される。
【００１５】
ｚ（ｊ）＝（ｘ’（２ｊ）＋ｉｘ’（２ｊ＋１））・ｅｘｐ（ｉψ（ｊ））        ………（８）
さらに、このｚ（ｊ）から次式で定義されるＺ（ｋ）が求められる。
【００１６】
【数８】
0003547971.tif 000006
この（９）式は（３）式と同様の形式を有し、この高速計算においても（３）式同様、ＦＦＴが用いられ、次の形式の演算が実行される。
【００１７】
ｚ（ｊ１）＋ｚ（ｊ２）・ｅｘｐ（ｉψ’（ｊ））                                            ………（１０）
ＭＤＣＴでは、このＺ（ｋ）から、次の（１１）式により周波数成分データＸ（ｋ）を得る。
【００１８】
【数９】
0003547971.tif 000007
ただし、ｂ０〜ｂ３はｋごとに定まる比例係数である。ｎごとに定まる比例係数ａＬ（Ｌ＝０〜３）をａＬ＝ａＬ（ｎ）、また比例係数ｂＬ（Ｌ＝０〜３）をｂＬ＝ｂＬ（ｋ）と表すと、両者の間には
ｂＬ（ｊ）＝ａＬ（ｊ）×２／Ｍ                                                            ………（１２）
という関係がある。
【００１９】
図３は、上述したＩＭＤＣＴ演算を実現する従来のＩＭＤＣＴ回路の概略のブロック図である。ＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）２０には、変換元データである周波数成分データＸ（ｋ）が格納される。またＲＡＭ２０は、演算の途中段階での結果を格納することもできるように構成されている。ＲＯＭ（ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ）２２には、例えば、比例係数ａＬ（Ｌ＝０〜３）が格納される。乗算器２４は、ＲＡＭ２０から読み出されレジスタ２６に保持された値と、ＲＯＭ２２から読み出されレジスタ２８に保持された値とを入力され、これらを掛け合わせた値をレジスタ３０又はレジスタ３２のいずれかへ出力する。
【００２０】
加減算器３４は２つの入力Ａ、Ｂを有し、それぞれには、セレクタ３６、３８が設けられる。セレクタ３６には、レジスタ２６とレジスタ３０とが入力側に接続される。これによりセレクタ３６は、ＲＡＭ２０に格納されたそのままのデータか、乗算器２４にて乗算が行われたデータかのいずれかを選択的に加減算器３４の一つの入力端Ａへ供給することができる。一方、セレクタ３８には、セレクタ４０を介してレジスタ４２、４４と、レジスタ３２とが入力側に接続される。これによりセレクタ３８は、レジスタ３２に格納される値（例えばＲＡＭ２０格納データに対して乗算器２４にて乗算を行った結果）と、加減算器３４の出力結果とのいずれかを加減算器３４の他の入力端Ｂへ供給することができる。加減算器３４の出力は、レジスタ４２を介してＲＡＭ２０へ書き戻すことができる。
【００２１】
さて、時系列音声データｙ（ｎ）と周波数成分データＸ（ｋ）との変換において、時系列音声データｙ（ｎ）は時間的に連続する２Ｍ個のデータを１ブロックとしてブロックごとに取り扱われる。生成された１ブロック分の時系列音声データは、ＲＡＭ４４に格納される。このとき各ブロック間のつなぎ目において音声の歪みを少なくするため、先行するブロックの終わりの部分と後続するブロックの先頭部分とはオーバーラップするようにブロックの範囲が定められる。このオーバーラップする部分においては、両ブロックのデータ値を加算する処理を行って最終的な音声データｙ（ｎ）が生成される。このデータの重ね合わせを行うために、ＲＡＭ４４に格納された音声データは、加減算器３４へ戻すことができるように構成される。すなわち、ＲＡＭ４４から読み出された値は、乗算器２４とレジスタ３２との間に配置されるセレクタ４６に入力される。セレクタ４６は、乗算器２４の出力とＲＡＭ４４の出力とのいずれかを選択して、選択された値は、セレクタ３８を介して加減算器３４へ入力される。
【００２２】
次にこの従来回路において、上記演算がどのように行われるかを説明する。まず上記（２）式の右辺を展開することによりＺ（ｊ）は次式で表される。
【００２３】
【数１０】
0003547971.tif 000008
よって、データＵ（ｋ）をＲＡＭ２０に格納し、ｓｉｎψ（ｊ）、ｃｏｓψ（ｊ）をＲＯＭ２２に格納することにより、Ｚ（ｊ）の実数部、虚数部はそれぞれ乗算器２４、加減算器３４を順に用いて計算され、加減算器３４から出力された実数部、虚数部の演算結果はＲＡＭ２０に格納される。
【００２４】
ｚ（ｎ）は（４）式で表される演算を繰り返すことにより求められることは既に述べた。ＲＡＭ２０に格納されたＺ（ｊ）を乗算器２４を通さずに、レジスタ２６、セレクタ３６を経由してそのままの値で加減算器３４へ入力することにより、（４）式の右辺第一項が加減算器３４の一端Ａへ供給される。また、右辺第二項は、ＲＡＭ２０に格納されたＺ（ｊ）とＲＯＭ２２に格納されているｅｘｐ（ｉψ’（ｊ））とをそれぞれ読み出して、乗算器２４にて掛け合わせて生成される。そして、これがセレクタ４６、レジスタ３２、セレクタ３８を経由して、加減算器３４の他端Ｂに供給される。加減算器３４は（４）式の第一項と第二項との加算を行い、その結果はＲＡＭ２０に格納される。このｚ（ｎ）の計算も複素演算であり、やはり回路においては実数部と虚数部とが別個に演算される。
【００２５】
この演算により（５）式の演算に用いられるＲｅｚ（ｎ）、Ｒｅｚ（Ｍ／２−１−ｎ）、Ｉｍｚ（ｎ）、Ｉｍｚ（Ｍ／２−１−ｎ）がＲＡＭ２０に格納される。また、比例係数ａＬ（Ｌ＝０〜３）はＲＯＭ２２に格納されている。（５）式の計算は、乗算器２４が右辺第一項から順に各項を計算し、加減算器３４がそれらを累積的に加減算することにより行われる。
【００２６】
この計算をより詳しく説明する。例えば、ＲＡＭ２０からＲｅｚ（ｎ）が読み出されてレジスタ２６に格納され、一方、ＲＯＭ２２からａ０が読み出されてレジスタ２８に格納され、これらが乗算器２４にて乗算されレジスタ３２に格納される。次に、ＲＡＭ２０からＲｅｚ（Ｍ／２−１−ｎ）が読み出されてレジスタ２６に格納され、一方、ＲＯＭ２２からａ１が読み出されてレジスタ２８に格納される。ここで、レジスタ２６の内容は、第一項の計算のために格納したＲｅｚ（ｎ）から第二項の計算に用いるＲｅｚ（Ｍ／２−１−ｎ）へと上書き変更されることに留意する。Ｒｅｚ（Ｍ／２−１−ｎ）とａ１とは乗算器２４にて乗算されレジスタ３０に格納され、加減算器３４はレジスタ３２とレジスタ３０の内容に対し、“Ａ＋Ｂ”を計算してレジスタ４４へ出力する。
【００２７】
次に第三項が第一項、第二項と同様にして計算され、レジスタ３０に格納される。加減算器３４はレジスタ３０とレジスタ４４から供給される第二項までの累積加算値とに対し“Ａ＋Ｂ”を計算して、レジスタ４４へ出力する。第四項も同様にして計算され、第三項までの加算値に加え合わされ、その結果がＲＡＭ２０に戻される。しかる後に、（５）式の第二式の計算が上記第一式と同様にして計算される。この第二式の計算においては、入力端Ａに入力される第二項は、入力端Ｂに供給される第一項からの減算であり、加減算器３４は“Ｂ−Ａ”を実行する。
【００２８】
以上が、従来のＩＭＤＣＴ回路の構成及びその動作であるが、ＩＭＤＣＴ演算とＭＤＣＴ演算とは上述したように共通部分を有し、よって、ＭＤＣＴ回路の従来構成も図３に示すＩＭＤＣＴ回路とほとんど同じものであり、その動作も上述したものとほぼ同様となる。
【００２９】
【発明が解決しようとする課題】
上述したようにＭＤＣＴ及びＩＭＤＣＴの演算の各段階の演算結果は、ＲＡＭ２０に格納され、次段の演算において読み出され使用される。演算の段階の数が多いことと、デジタル音声録音装置／再生装置等に用いられる場合においては、取り扱われるデータ数も多いことから、ＲＡＭ２０へのアクセス回数が非常に多くなり、そのためＲＡＭ２０の駆動に消費される電力も多くなるという問題があった。これは、例えば、ポータブル型のＭＤシステムといった電池を電源とする装置においては、動作時間が短くなるといった不便を生じる。
【００３０】
また、用途によっては、単位時間当たりの音声のサンプル数の増加を図りたいという要望もあるかもしれないが、その場合、増大するＭＤＣＴの演算量を単位時間内にこなさなければならないということが、サンプル数を制限するおそれがあるという問題も考えられる。
【００３１】
本発明は上記問題点を解消するためになされたもので、上述したＭＤＣＴを行う離散コサイン変換回路において、処理を効率的に行うことにより、ＲＡＭのアクセス回数を低減し消費電力を抑制するとともに、アクセスに費やす合計時間を短縮することを目的とする。
【００３２】
【課題を解決するための手段】
離散コサイン変換又はその逆変換を行う本発明に係る離散コサイン変換回路は、前記時系列音声データｙ（ｎ）又は前記周波数成分データＸ（ｋ）のうちいずれか変換元となるデータに基づく被演算データを記憶するメモリと、それぞれ前記メモリから読み出された被演算データを保持しうる４つのレジスタと、前記４つのレジスタのいずれかを選択して、当該レジスタの保持する値を前記乗算器へ出力するセレクタとを有するものである。
【００３３】
上述したＭＤＣＴ又はＩＭＤＣＴの演算において、一つの演算結果データを得るために加減算される被演算データ、またはそれに比例係数を乗じた項は最大４つである。ここで、被演算データは時系列音声データｙ（ｎ）又は前記周波数成分データＸ（ｋ）のうちいずれか変換元となるデータそのもののほか、処理の各段階で算出されてメモリに格納され次段の演算で用いられる処理の中間結果も含む。本発明によればある演算データの算出に用いた被演算データをレジスタに保持し、その中で他の演算データの計算でも用いられるものがあれば、新たにメモリから読み出すことなく、レジスタに保持されたものを参照する。
【００３４】
特に、離散コサイン変換処理が、前記時系列音声データｙ（ｎ）又は前記周波数成分データＸ（ｋ）に基づいて得られた２つの関数Ｆ１（ｊ）及びＦ２（ｊ）（引数ｊは整数、かつ０≦ｊ＜Ｍ／２）の値から次の演算式、
【数１１】
0003547971.tif 000009
によって、関数Ｇ（ｊ）の値を求める演算を含む場合においては、本発明に係る離散コサイン変換回路は、それぞれ前記Ｆ１（ｊ）及びＦ２（ｊ）の各関数値を記憶するメモリと、それぞれ前記メモリから読み出された値を保持しうる４つのレジスタと、前記４つのレジスタのいずれかを選択して、当該レジスタの保持する値を前記乗算器へ出力するセレクタとを有するものである。
【００３５】
上記演算式を用いた処理を含む上記本発明の離散コサイン変換回路を動作するための本発明に係る動作方法は、前記メモリからあるｊに対応する前記関数値Ｆ１（ｊ），Ｆ１（Ｍ／２−１−ｊ），Ｆ２（ｊ），Ｆ２（Ｍ／２−１−ｊ）の組を読み出し、それぞれの値を前記４つのレジスタに格納し、格納された前記関数値の組は、当該ｊの値に対応した前記演算式の第一式と第二式との両方の計算が行われる間、前記各レジスタに保持され、当該保持された前記関数値の組を用いて、当該ｊの値に対応した前記演算式の第一式と第二式との両方の計算が行われるものである。
【００３６】
上記演算式の第一式と第二式とは、用いる関数値Ｆ１（ｊ），Ｆ１（Ｍ／２−１−ｊ），Ｆ２（ｊ），Ｆ２（Ｍ／２−１−ｊ）の組が同一である。本発明によれば４つのレジスタに、あるｊに関する関数値Ｆ１（ｊ），Ｆ１（Ｍ／２−１−ｊ），Ｆ２（ｊ），Ｆ２（Ｍ／２−１−ｊ）が読み出されると、これらは関数値Ｇ（ｊ），Ｇ（Ｍ−１−ｊ）の両方の計算の間、継続して保持され他のデータにより上書きされることがない。よって、例えば関数値Ｇ（ｊ）を計算するための関数値Ｆ１、Ｆ２の組がメモリからレジスタに読み出されると、改めてメモリから関数値のＦ１、Ｆ２の組を読み出すことなく関数値Ｇ（Ｍ−１−ｊ）を計算することができる。
【００３７】
上記演算式を用いた処理を含む上記本発明の離散コサイン変換回路を動作するための本発明に係る動作方法は、前記メモリからあるｊに対応する前記関数値Ｆ１（ｊ），Ｆ１（Ｍ／２−１−ｊ），Ｆ２（ｊ），Ｆ２（Ｍ／２−１−ｊ）の組を読み出し、それぞれの値を前記４つのレジスタに格納し、格納された前記関数値の組は、前記演算式に基づいて当該ｊの値におけるＧ（ｊ），Ｇ（Ｍ−１−ｊ），Ｇ（Ｍ／２−１−ｊ）及びＧ（Ｍ／２＋ｊ）の値の計算が行われる間、前記各レジスタに保持され、当該保持された前記関数値の組を用いて、当該ｊの値におけるＧ（ｊ），Ｇ（Ｍ−１−ｊ），Ｇ（Ｍ／２−１−ｊ）及びＧ（Ｍ／２＋ｊ）の値の計算が行われるものである。
【００３８】
上記演算式の右辺に現れる関数値Ｆ１（ｊ），Ｆ１（Ｍ／２−１−ｊ），Ｆ２（ｊ），Ｆ２（Ｍ／２−１−ｊ）は、ｊがｊ１であるときにはそれぞれＦ１（ｊ１），Ｆ１（Ｍ／２−１−ｊ１），Ｆ２（ｊ１），Ｆ２（Ｍ／２−１−ｊ１）となり、ｊがｊ２≡Ｍ／２−１−ｊ１であるときにはそれぞれＦ１（Ｍ／２−１−ｊ１），Ｆ１（ｊ１），Ｆ２（Ｍ／２−１−ｊ１），Ｆ２（ｊ１）となる。すなわち、Ｆ１（ｊ１）＝Ｆ１（Ｍ／２−１−ｊ２），Ｆ２（ｊ１）＝Ｆ２（Ｍ／２−１−ｊ２）であり、よって
【数１２】
0003547971.tif 000010
である。つまり、ｊ１，ｊ２，Ｍ−１−ｊ１，Ｍ−１−ｊ２というｊに関する４つの関数値Ｇの演算は、それに用いる関数値Ｆ１（ｊ），Ｆ１（Ｍ／２−１−ｊ），Ｆ２（ｊ），Ｆ２（Ｍ／２−１−ｊ）の組が互いに同一である。本発明によれば４つのレジスタに、ｊ＝ｊ１に関する関数値Ｆ１（ｊ１），Ｆ１（Ｍ／２−１−ｊ１），Ｆ２（ｊ１），Ｆ２（Ｍ／２−１−ｊ１）が読み出されると、これらは関数値Ｇ（ｊ１），Ｇ（ｊ２），Ｇ（Ｍ−１−ｊ１），Ｇ（Ｍ−１−ｊ２）、すなわちＧ（ｊ１），Ｇ（Ｍ／２−１−ｊ１），Ｇ（Ｍ−１−ｊ１），Ｇ（Ｍ／２＋ｊ１）の計算に共通に用いられる。換言すれば、一旦、メモリからレジスタへ読み出された関数値Ｆ１、Ｆ２の組は、これら４つのＧの値の計算の間、継続して保持され他のデータにより上書きされることがない。よって、例えば関数値Ｇ（ｊ１）を計算するための関数値Ｆ１、Ｆ２の組がメモリからレジスタに読み出されると、改めてメモリから関数値のＦ１、Ｆ２の組を読み出すことなく関数値Ｇ（Ｍ／２−１−ｊ１），Ｇ（Ｍ−１−ｊ１），Ｇ（Ｍ／２＋ｊ１）を計算することができる。
【００３９】
【発明の実施の形態】
次に、本発明の実施形態について図面を参照して説明する。
【００４０】
図１は、ＭＤＣＴを用いた音声録音再生装置であるＭＤシステムにおいて、本発明を実施したＩＭＤＣＴ回路の概略のブロック図である。本実施の形態に係る音声録音再生装置は、図２と同一のブロック構成を有した音声データ符号化／復号処理部を含んで構成される。そして、本回路は図２におけるＩＤＣＴ回路１２と同様、ＭＤに記録されたデジタルデータから音声を再生する復号処理に用いられ、逆量子化器１０から入力された高、中、低の３つの周波数帯域ごとの周波数成分データＸ（ｋ）にＩＭＤＣＴ変換を施して、各周波数帯域ごとの時系列音声データｙ（ｎ）を生成し、ＩＱＭＦ回路１４へ出力するものである。
【００４１】
本回路が行うＩＭＤＣＴの基本的な演算アルゴリズムは、従来技術として上述したものと同一であるので、それを参照することにより説明の簡潔を図る。
【００４２】
ＲＡＭ６０には、変換元データである周波数成分データＸ（ｋ）が格納される。またＲＡＭ６０は、演算の途中の結果を格納することもできるように構成されている。４つのレジスタ６２−１〜６２−４は、ＲＡＭ６０の出力に並列して設けられ、それぞれＲＡＭ６０から読み出されたデータを保持することができる。セレクタ６４は、これらレジスタ６２−１〜６２−４のいずれかを選択して、その格納内容を乗算器６６へ出力する。
【００４３】
ＲＯＭ６８には、ＲＡＭ６０から読み出されたデータに乗じられる比例係数、例えばａＬ（Ｌ＝０〜３）が格納される。２つのレジスタ７０−１、７０−２は、ＲＯＭ６８の出力に並列して設けられ、それぞれＲＯＭ６８から読み出された係数を保持することができる。セレクタ７２は、セレクタ６４と同様、接続された２つのレジスタ７０−１、７０−２のいずれかを選択して、その保持内容を出力する機能を有するとともに、それらレジスタの保持内容以外に値“１”を出力の選択肢として備えている。すなわちセレクタ７２は、レジスタ７０−１、７０−２の保持内容と値“１”との３つのうちいずれかを外部からの制御により選択して乗算器６６へ出力する。この値“１”の意味については後述する。
【００４４】
乗算器６６は、ＲＡＭ６０側のセレクタ６４から出力された値と、ＲＯＭ６８側のセレクタ７２から出力された値とを入力され、これらを掛け合わせた値を出力する。
【００４５】
セレクタ７４は、乗算器６６から出力された乗算結果と、ＲＡＭ７６から読み出された値とのいずれかを選択して、レジスタ７８に格納する。
【００４６】
加減算器８０は２つの入力Ａ、Ｂを有し、それらに入力される値の加減算を行う。一方の入力端、例えば入力Ａに、レジスタ７８の出力が接続される。加減算器８０の出力には、３つのレジスタ８２〜８６が設けられる。加減算器８０のもう一つの入力Ｂには、これらレジスタ８２〜８６を入力に接続されたセレクタ８８の出力が接続される。
【００４７】
セレクタ８８は、接続された３つのレジスタ８２〜８６のいずれかを選択して、その保持内容を出力するという一般的な機能を有するとともに、それらレジスタの保持内容以外に値“０”を出力の選択肢として備えている。すなわちセレクタ８８は、レジスタ８２〜８６の保持内容と値“０”との４つのうちいずれかを外部からの制御により選択して、加減算器８０の入力Ｂへ供給する。この値“０”の意味については後述する。
【００４８】
加減算器８０の出力は、レジスタ８２を介してＲＡＭ６０やＲＡＭ７６に格納することができる。例えば、演算の途中段階でのデータをＲＡＭ６０に蓄積したり、１ブロック分の周波数成分データＸ（ｋ）から音声データｙ（ｎ）が得られた段階でそれをＲＡＭ７６に格納することができる。
【００４９】
なお、各ブロック間のつなぎ目において音声の歪みを少なくするため、先行するブロックの終わりの部分と後続するブロックの先頭部分とはオーバーラップするようにブロックの範囲が定められる。このオーバーラップする部分においては、両ブロックのデータ値を加算する処理を行って最終的な音声データｙ（ｎ）が生成される。このデータの重ね合わせを行うために、ＲＡＭ７６に格納された音声データは、加減算器８０へ戻すことができるように構成する必要がある。本回路では、これを実現するために乗算器６６と加減算器８０との間にセレクタ７４を設け、それにＲＡＭ７６の出力を接続している。
【００５０】
さて、セレクタ７２が値“１”を出力できる構成としている理由は、ＲＡＭ６０から読み出されたデータに対し比例係数を乗算した結果を加減算器８０へ入力する場合と、行わずにそのままの値を加減算器８０へ入力する場合との加減算器８０への入力系統を一本化して、それらの切り替えに必要であったセレクタを廃し回路構成を簡単にするためである。つまり、ＲＡＭ６０から読み出されたデータは、必ず乗算器６６を経由させる一方で、ＲＡＭ６０から読み出された値のまま加減算器８０へ入力したい場合には、セレクタ７２から“１”を出力させることとして、この場合の乗算器６６の出力値がその入力値と等しくなるようにしたものである。これにより、従来回路で用いていたセレクタ３６を不要とすることができた。
【００５１】
セレクタ８８が値“０”を出力できる構成としている理由は、乗算器６６からの出力は加減算器８０の一方の入力端Ａのみに入力させ、他方の入力端Ｂへは加減算器８０の出力からのループバックのみ接続する構成としていることに関係する。この入力端Ｂには乗算器６６からは入力させない本回路の構成により、加減算器８０の出力からのループバックとの切り替えに必要であったセレクタを廃し回路構成を簡単にすることができる。この構成にて加減算器８０の入力端へ供給される被演算値同士の加減算を可能とするために、入力端Ａへ入力された値を、加減算器８０を素通りさせて入力端Ｂへまわす。具体的には、入力端Ａへ入力された値を素通りさせる場合には、セレクタ８８に値“０”を出力させ、これを加減算器８０の入力端Ｂへ供給する。加減算器８０は、入力端Ａのデータと、入力端Ｂのデータ“０”とを例えば加算して、その結果をレジスタ８２〜８６のいずれかに格納する。これにより、入力端Ａへ入力された被演算データが加減算器８０の出力側へ素通りされ、その値はセレクタ８８を介して加減算器８０の入力端Ｂへ戻されることにより、次に入力端Ａへ入力される被演算データとの加減算に用いることができる。
【００５２】
次に本回路において、上述したＩＭＤＣＴ演算がどのように行われるかを説明する。まず変換元データである周波数成分データＸ（ｋ）を並べ替えて得られるＵ（ｋ）からＺ（ｊ）が（１３）式に基づいて演算される。データＵ（ｋ）をＲＡＭ６０に格納し、ｓｉｎψ（ｊ）、ｃｏｓψ（ｊ）をＲＯＭ６８に格納する点は従来と同様である。あるｊについての（１３）式右辺を計算する際、ＲＡＭ６０からは、Ｕ（２ｊ）とＵ（２ｊ＋１）とが読み出され、それぞれレジスタ６２−１〜６２−４のいずれか２つ、例えばレジスタ６２−１とレジスタ６２−２に格納される。また、ＲＯＭ６８からは、ｃｏｓψ（ｊ）とｓｉｎψ（ｊ）とが読み出され、それぞれレジスタ７０−１とレジスタ７０−２に格納される。そして、Ｚ（ｊ）の実数部、虚数部がそれぞれ乗算器６６、加減算器８０を順に用いて計算される。
【００５３】
例えば、実数部の計算は、レジスタ６２−２に格納されたＵ（２ｊ＋１）と、レジスタ７０−２に格納されたｓｉｎψ（ｊ）とを乗算器６６にて乗算して（１３）式右辺第二項を得、加減算器８０の入力Ａへ入力する。この第二項の値は加減算器８０を素通りさせられ、例えばレジスタ８６に格納される。次に、（１３）式右辺第一項が、レジスタ６２−１に格納されたＵ（２ｊ）と、レジスタ７０−１に格納されたｃｏｓψ（ｊ）とを乗算器６６にて乗算して得られる。この第一項の値を加減算器８０の入力Ａへ供給するとともに、第二項の値をレジスタ８６から入力Ｂへ供給し、加減算器８０は減算“Ａ−Ｂ”を行うことにより、Ｚ（ｊ）の実数部が計算される。この出力結果は、レジスタ８２を介してＲＡＭ６０へ格納される。
【００５４】
さて（１３）式は、実数部の計算に用いる値と虚数部の計算に用いる値とが全く同じであるという特徴を有している。つまり虚数部の計算に必要なＲＡＭ６０格納値Ｕ（２ｊ）、Ｕ（２ｊ＋１）及びＲＯＭ６８格納値ｓｉｎψ（ｊ）、ｃｏｓψ（ｊ）は、全てすでに実数部の計算においてレジスタ６２−１、６２−２、７０−１、７０−２に読み出され、それらに保持されている。よって、従来回路と異なり、改めてＲＡＭ６０、ＲＯＭ６８から読み出す必要がなく、そのための消費電流を削減することができる。これらレジスタに保持された値を用いての虚数部の演算は、実数部と同様であるので説明を省略する。
【００５５】
次にＺ（ｋ）を用いて（３）式で定義されるｚ（ｎ）を求める演算が行われる。この演算においては、（４）式で表される形の演算が繰り返される。ちなみに、本回路における一つの（４）式の演算は以下のように行われる。Ｚ（ｊ）は上記演算によりＲＡＭ６０に格納され、また位相因子ｅｘｐ（ｉψ’（ｊ））  はＲＯＭ６８に予め格納されている。ＲＡＭ６０からはＺ（ｊ１）とＺ（ｊ２）とが読み出され、それぞれ例えばレジスタ６２−１、６２−２に格納される。一方、ＲＯＭ６８からはｅｘｐ（ｉψ’（ｊ））  が読み出され、レジスタ７０−１に格納される。レジスタ６２−２、レジスタ７０−１の値を用いて（４）式第二項の乗算が行われ、その値は加減算器８０を素通りさせられ、加減算器８０の入力端Ｂへ供給される。一方で、レジスタ６２−１に格納された第一項の値が乗算器６６を素通りさせられ、加減算器８０の入力端Ａへ供給される。加減算器８０はこれらの加算又は減算を行って、一つの（４）式の計算を完了し、その値はＲＡＭ６０に格納される。さて、ＦＦＴ演算における一連の（４）式の計算においては、ある
Ｚ（ｊ１）＋Ｚ（ｊ２）・ｅｘｐ（ｉψ’（ｊ））                                            ………（４）
という計算と対になる
Ｚ（ｊ１）＋Ｚ（ｊ２）・ｅｘｐ｛ｉ（ψ’（ｊ）＋π）｝                            ………（４’）
という計算も実行される。この（４’）の計算は、その位相因子ｅｘｐ｛ｉ（ψ’（ｊ）＋π）｝をＲＯＭ６８に格納しておけば、上に一つの（４）式の計算として説明した手順の繰り返しの中で実行される。ただし、ここで、
ｅｘｐ｛ｉ（ψ’（ｊ）＋π）｝＝−ｅｘｐ（ｉψ’（ｊ））                              ………（１４）
という関係に着目すると、本回路においては次の効率的な処理が可能である。すなわち、ある（４）式の計算を行った後、レジスタ６２−１、６２−２にＺ（ｊ１）、Ｚ（ｊ２）を、そしてレジスタ７０−１にｅｘｐ（ｉψ’（ｊ））を保持させたまま、次にそれらの値を用いて、当該（４）式と対となる（４’）式の計算を行うのである。これにより、ＲＡＭ６０、ＲＯＭ６８からの読み出し手続を省略し、消費電流を抑制することができる。なお、以上述べたｚ（ｎ）の計算も複素演算であり、やはり回路においては実数部と虚数部とが別個に演算される。
【００５６】
次に、このｚ（ｎ）を用いて（５）式で定義されるｕ（ｎ）を求める演算が行われる。ｚ（ｎ）は上記演算によりＲＡＭ６０に格納され、また比例係数ａＬ（Ｌ＝０〜３）はＲＯＭ６８に予め格納されている。ｎ＝ｎ１に関する（５）式の計算においてはＲＡＭ６０からＲｅｚ（ｎ１）、Ｒｅｚ（Ｍ／２−１−ｎ１）、Ｉｍｚ（ｎ１）、Ｉｍｚ（Ｍ／２−１−ｎ１）が読み出され、それぞれ例えばレジスタ６２−１、６２−２、６２−３、６２−４に格納される。一方、ＲＯＭ６８からはｎ＝ｎ１に対応するａ２、ａ３が読み出され、それぞれレジスタ７０−１、７０−２に格納される。レジスタ６２−４、レジスタ７０−２の値を用いて（５）式第一式右辺第四項の乗算が行われ、その値は加減算器８０を素通りさせられ、加減算器８０の入力端Ｂへ供給される。一方で、右辺第三項がレジスタ６２−３、レジスタ７０−１の値を用いて乗算器６６にて計算され、加減算器８０の入力端Ａへ供給される。加減算器８０はこれらを加算して、加減算器８０出力に配置される例えばレジスタ８６に格納する。次に、ＲＯＭ６８からｎ＝ｎ１に対応するａ０、ａ１が読み出され、それぞれレジスタ７０−１、７０−２に格納される。そしてレジスタ６２−２、レジスタ７０−２の値を用いて右辺第二項の乗算が行われる。その乗算結果の値と、レジスタ８６に保持された値とがそれぞれ加減算器８０の入力Ａ、Ｂに渡され、加減算器８０からの加算結果がレジスタ８６に格納される。同様にレジスタ６２−１、レジスタ７０−１の値を用いて求められた右辺第一項の値と、レジスタ８６に保持された第二〜第四項の加算結果とがそれぞれ加減算器８０の入力Ａ、Ｂに渡され、加減算器８０にて加算される。これにより、（５）式第一式の演算が終了し、演算結果はレジスタ８２を経由してＲＡＭ６０に格納される。
【００５７】
さて（５）式においてｕ（ｎ）を表す第一式とｕ（Ｍ−１−ｎ）を表す第二式とは、単一のＲｅｚ（ｎ）、Ｒｅｚ（Ｍ／２−１−ｎ）、Ｉｍｚ（ｎ）、Ｉｍｚ（Ｍ／２−１−ｎ）の組を用いて計算することができるという特徴を有している。そのため、本回路ではｕ（ｎ１）を計算した後、引き続いてｕ（Ｍ−１−ｎ１）を計算する。これにより、ｕ（ｎ１）の計算に用いたＲｅｚ（ｎ１）、Ｒｅｚ（Ｍ／２−１−ｎ１）、Ｉｍｚ（ｎ１）、Ｉｍｚ（Ｍ／２−１−ｎ１）がレジスタ６２−１〜６２−４に保持された状態でｕ（Ｍ−１−ｎ１）を計算することができる。つまり、ｕ（Ｍ−１−ｎ１）の計算において必要となるＲｅｚ（ｎ１）、Ｒｅｚ（Ｍ／２−１−ｎ１）、Ｉｍｚ（ｎ１）、Ｉｍｚ（Ｍ／２−１−ｎ１）の値は、改めてＲＡＭ６０から読み出す必要はなく、レジスタ６２−１〜６２−４に格納されている値を用いることができ、これにより、（５）式の計算におけるＲＡＭ６０へのアクセスを従来の１／２にでき、その動作による電流消費を抑制することができる。
【００５８】
また、（５）式の右辺に現れるＲｅｚ（ｎ）、Ｒｅｚ（Ｍ／２−１−ｎ）、Ｉｍｚ（ｎ）、Ｉｍｚ（Ｍ／２−１−ｎ）は、ｎがｎ２≡Ｍ／２−１−ｎ１であるときにはそれぞれＲｅｚ（Ｍ／２−１−ｎ１）、Ｒｅｚ（ｎ１）、Ｉｍｚ（Ｍ／２−１−ｎ１）、Ｉｍｚ（ｎ１）となる。これらをｎがｎ１であるときのそれぞれの値Ｒｅｚ（ｎ１）、Ｒｅｚ（Ｍ／２−１−ｎ１）、Ｉｍｚ（ｎ１）、Ｉｍｚ（Ｍ／２−１−ｎ１）と見比べると、Ｒｅｚ（ｎ１）＝Ｒｅｚ（Ｍ／２−１−ｎ２）、Ｉｍ（ｎ１）＝Ｉｍ（Ｍ／２−１−ｎ２）であることがわかる。よってｎ＝ｎ２に対する比例係数をａ’Ｌ（Ｌ＝０〜３）と表すと、
【数１３】
0003547971.tif 000011
である。つまり、ｕ（Ｍ−１−ｎ１）だけでなく、ｕ（ｎ２）、ｕ（Ｍ−１−ｎ２）も、ｕ（ｎ１）で用いたＲｅｚ（ｎ）、Ｒｅｚ（Ｍ／２−１−ｎ）、Ｉｍｚ（ｎ）、Ｉｍｚ（Ｍ／２−１−ｎ）の値の組を用いて計算することができるという特徴を（５）式は有している。本回路ではｕ（ｎ１）の計算に用いたＲｅｚ（ｎ１）、Ｒｅｚ（Ｍ／２−１−ｎ１）、Ｉｍｚ（ｎ１）、Ｉｍｚ（Ｍ／２−１−ｎ１）をレジスタ６２−１〜６２−４に保持することができるので、ｕ（ｎ１）を計算した後、引き続いてｕ（Ｍ−１−ｎ１）、ｕ（ｎ２）、ｕ（Ｍ−１−ｎ２）を計算することにより、それらの計算において必要となるＲｅｚ（ｎ１）、Ｒｅｚ（Ｍ／２−１−ｎ１）、Ｉｍｚ（ｎ１）、Ｉｍｚ（Ｍ／２−１−ｎ１）の値をＲＡＭ６０から読み出す動作を省略できる。これにより、（５）式の計算におけるＲＡＭ６０へのアクセスを従来の１／４にでき、さらに電流消費量を抑制することができる。
【００５９】
なお、本回路はＲＯＭ６８の出力にレジスタを２つ備えているが、（５）式の第一式と第二式、または（１５）式の第一式と第三式、第二式と第四式はそれぞれ同一の比例係数ａＬ（Ｌ＝０〜３）の組を用いるので、ここに４つのレジスタを配置して、ＲＯＭ６８からの比例係数読み出し動作を削減することもできる。
【００６０】
最終的なデジタルの音声時系列データｙ（ｎ）は、上述のようにして求められた数列ｕ（ｎ）を並べ替えにより再構成して得られる。本ＩＭＤＣＴ回路は、その変換結果をＩＱＭＦ回路１４へ出力して、一連の処理を終了する。
【００６１】
以上、ＩＭＤＣＴ演算に関して本発明の実施形態を説明した。しかし、本発明は、ＭＤＣＴ回路にも用いることができる。なぜなら、ＭＤＣＴ演算とＩＭＤＣＴ演算とは上述したようにほとんど同一形式の式を用いて行われるからである。具体的には、ＭＤＣＴでの（８）、（９）、（１１）式はそれぞれＩＭＤＣＴでの（２）、（３）、（５）式と同一の形式である。よって、ＭＤＣＴ回路においても、被演算データを格納するＲＡＭの出力に４つのレジスタを配置することにより、上述したＩＭＤＣＴについての（２）、（３）、（５）式で述べたのと同様に、ＲＡＭからの読み出し処理削減という処理の効率化が図られ、それによる電流消費量が抑制される。
【００６２】
【発明の効果】
本発明の離散コサイン変換回路及びその動作方法によれば、被演算データを記憶するメモリの出力に４つのレジスタが配置され、一旦、それらに読み出された被演算データを共通に利用できる演算をまとめて行うように回路が動作される。これにより、被演算データを記憶するＲＡＭ等のメモリへのアクセス回数を低減するように処理が効率化され、特にその動作にて消費される電流を抑制することができるという効果が得られる。また、アクセス時間が短縮されるという効果も得られる。
【図面の簡単な説明】
【図１】ＭＤＣＴを用いた音声録音再生装置であるＭＤシステムにおいて、本発明を実施したＩＭＤＣＴ回路の概略のブロック図である。
【図２】ＤＣＴを用いた音声録音再生装置、例えばＭＤシステムにおける音声データの符号化／復号処理に関わる部分の概略のブロック図である。
【図３】従来のＩＭＤＣＴ回路の概略のブロック図である。
【符号の説明】
６０，７６  ＲＡＭ、６２−１〜６２−４，７０−１，７０−２，７８，８２，８４，８６  レジスタ、６４，７２，７４，８８  セレクタ、６６  乗算器、６８  ＲＯＭ、８０  加減算器。
【図１】
0003547971.tif 000013
【図２】
0003547971.tif 000014
【図３】
0003547971.tif 000015