(57)【要約】  離散周波数離散フーリェ変換（Discrete Fourier Transform：ＤＦＴ）係数行列の演算方法であって、方法は、（ａ）サンプルの第１のフレーム（１０）について、離散時間信号のサンプルのフレームを回転因子行列（Ｆ１，Ｆ２）と乗算して第１のフレームについてのＤＦＴ係数行列を演算し、サンプルのフレーム（ｂ）の第２の半分と回転因子行列の右半分（Ｆ２）との乗算からもたらされる演算結果を記憶するステップと、（ｂ）サンプルの後続の各フレーム（１２，１４）について、各後続フレームは前のフレームと半分が重なり合っており、（ｉ）前のフレームからの記憶された演算結果を抽出するとともに、すべての第２のフレームの記憶された演算結果の符合を反転させるステップと、（ｉｉ）サンプルの現在のフレームの第２の半分を回転因子行列の右半分と乗算し、演算結果を記憶するステップと、（ｉｉｉ）ステップ（ｉ）およびステップ（ｉｉ）の結果を加算するステップとを含む。
2012502379.tif 000002
【特許請求の範囲】
【請求項１】
離散周波数離散フーリェ変換（Discrete Fourier Transform：ＤＦＴ）係数行列の演算方法であって、
前記方法は、
（ａ）サンプルの第１のフレームについて、離散時間信号のサンプルのフレームを回転因子行列と乗算してその第１のフレームについてのＤＦＴ係数行列を演算し、サンプルの前記フレームの第２の半分と前記回転因子行列の右半分との乗算からもたらされる演算結果を記憶するステップと、
（ｂ）サンプルの後続の各フレームについて、各後続フレームは前のフレームと半分が重なり合っており、
（ｉ）前のフレームからの記憶された演算結果を抽出するとともに、すべての第２のフレームの記憶された前記演算結果の符合を反転させるステップと、
（ｉｉ）サンプルの現在のフレームの第２の半分を前記回転因子行列の右半分と乗算し、その演算結果を記憶するステップと、
（ｉｉｉ）ステップ（ｉ）およびステップ（ｉｉ）の結果を加算するステップとを含む、方法。
【請求項２】
前記ＤＦＴ行列は、実数のＤＦＴ係数を含み、
各回転因子行列は、実数の回転因子値を含む、請求項１に記載の方法。
【請求項３】
前記ＤＦＴ行列は、虚数のＤＦＴ係数を含み、
各回転因子行列は、虚数の回転因子値を含む、請求項１に記載の方法。
【請求項４】
窓関数の非ゼロ値を記憶し、
前記ＤＦＴ係数に前記非ゼロを適用することによって、
畳み込みを用いて、周波数領域において前記ＤＦＴ係数に対して窓関数を実行するステップをさらに含む、先行する請求項のいずれか１つに記載の方法。
【請求項５】
前記窓関数は、ハミングウィンドウである、請求項４に記載の方法。
【請求項６】
離散周波数離散フーリェ変換（ＤＦＴ）係数行列の演算方法であって、
前記方法は、
請求項１のステップ（ａ）およびステップ（ｂ）を実行して、実数の回転因子値を含む回転因子行列についての実数のＤＦＴ係数行列を演算するステップと、
請求項１のステップ（ａ）およびステップ（ｂ）を実行して、虚数の回転因子値を含む回転因子行列についての虚数のＤＦＴ係数行列を演算するステップと含む、方法。
【請求項７】
ステップ（ｂ）（ｉｉ）は、
前記実数の回転因子行列の右半分の上半分または下半分のうちの一方を形成する実数の回転因子を含む乗算を実行するステップと、
前記虚数の回転因子行列の右半分の上半分または下半分のうちの一方を形成する虚数の回転因子を含む乗算を実行するステップと、
前記実数の回転因子行列の右半分の上半分または下半分のうちの他方を形成する実数の回転因子について、前記実数または虚数の回転因子行列の右半分の上半分または下半分のうちの一方における対応する乗算から、乗算の結果を推測するステップと、
前記虚数の回転因子行列の右半分の上半分または下半分のうちの他方を形成する虚数の回転因子について、前記実数または虚数の回転因子行列の右半分の上半分または下半分のうちの一方における対応する乗算から、乗算の結果を推測するステップとを含む、請求項６に記載の方法。
【請求項８】
離散周波数離散フーリェ変換（ＤＦＴ）係数行列を演算するための装置であって、
前記装置は、
サンプルの第１のフレームについて、離散時間信号のサンプルのフレームを回転因子行列と乗算してその第１のフレームについてのＤＦＴ係数行列を演算するように適合された演算ブロックと、
サンプルの前記フレームの第２の半分と前記回転因子行列の右半分との乗算からもたらされる演算結果を記憶するためのメモリ装置とを含み、
サンプルの後続の各フレームについて、各後続フレームは前のフレームと半分が重なり合っており、前記演算ブロックは、
（ｉ）前のフレームからの記憶された演算結果を抽出するとともに、すべての第２のフレームの記憶された前記演算結果の符合を反転させ、
（ｉｉ）サンプルの現在のフレームの第２の半分を前記回転因子行列の右半分と乗算し、その演算結果を記憶し、
（ｉｉｉ）ステップ（ｉ）およびステップ（ｉｉ）の結果を加算するようにさらに適合される、装置。
【請求項９】
前記演算ブロックは、行列乗算を実行するための乗累算（multiply-accumulate：ＭＡＣ）ブロックを含む、請求項８に記載の装置。
【請求項１０】
周波数領域において前記ＤＦＴ係数に対して窓関数を実行するための畳み込みブロックをさらに含み、
前記畳み込みブロックは、
前記窓関数の非ゼロ値を記憶するためのメモリユニットと、
前記非ゼロ値を前記ＤＦＴ係数に提供するための乗累算（ＭＡＣ）ブロックとを含む、請求項８または９に記載の装置。
【請求項１１】
離散周波数離散フーリェ変換（ＤＦＴ）係数行列を演算するための装置であって、
前記装置は、
サンプルの第１のフレームについて、離散時間信号のサンプルのフレームを、実数の回転因子値を含む第１の回転因子行列と乗算してその第１のフレームについての実数のＤＦＴ係数行列を演算するように適合された第１の演算ブロックと、
サンプルの前記フレームの第２の半分と、実数の回転因子値を含む前記第１の回転因子行列の右半分との乗算からもたらされる第１の演算結果を記憶するための第１のメモリ装置とを含み、
各後続フレームは前のフレームと半分が重なり合っており、
前記第１の演算ブロックは、サンプルの各後続フレームについて、
（ｉ）前のフレームからの記憶された第１の演算結果を抽出するとともに、すべての第２のフレームの記憶された前記第１の演算結果の符合を反転させ、
（ｉｉ）サンプルの現在のフレームの第２の半分を前記第１の回転因子行列の右半分と乗算し、その演算結果を記憶し、
（ｉｉｉ）ステップ（ｉ）およびステップ（ｉｉ）の結果を加算するようにさらに適合され、
前記装置は、
サンプルの前記第１のフレームについて、離散時間信号のサンプルのフレームを、虚数の回転因子値を含む第２の回転因子行列と乗算してその第１のフレームについての虚数のＤＦＴ係数行列を演算するように適合された第２の演算ブロックと、
サンプルの前記フレームの第２の半分と、虚数の回転因子値を含む前記第２の回転因子行列の右半分との乗算からもたらされる第２の演算結果を記憶するための第２のメモリ装置とをさらに含み、
前記第２の演算ブロックは、サンプルの各後続フレームについて、
（ｉｖ）前のフレームからの記憶された第２の演算結果を抽出するとともに、すべての第２のフレームの記憶された前記第２の演算結果の符合を反転させ、
（ｖ）サンプルの現在のフレームの第２の半分を前記虚数の回転因子行列の右半分と乗算し、その演算結果を記憶し、
（ｖｉ）ステップ（ｉｖ）およびステップ（ｖ）の結果を加算するようにさらに適合される、装置。
【請求項１２】
各演算ブロックは、行列乗算を実行するための乗累算（ＭＡＣ）ブロックを含む、
請求項１１に記載の装置。
【請求項１３】
周波数領域において、前記実数のＤＦＴ係数に窓関数を実行するための第１の畳み込みブロックと、
周波数領域において、前記虚数のＤＦＴ係数に窓関数を実行するための第２の畳み込みブロックとをさらに含み、
各畳み込みブロックは、
前記窓関数の非ゼロ値を記憶するためのメモリユニットと、
前記非ゼロ値を前記ＤＦＴ係数に適用するための乗累算（ＭＡＣ）ブロックを含む、請求項１１または１２に記載の装置。
【請求項１４】
前記第１の演算ブロックは、前記実数の回転因子行列の右半分の上半分または下半分のうちの一方を形成する実数の回転因子を含む乗算を実行するように構成され、
前記第２の演算ブロックは、前記虚数の回転因子行列の右半分の上半分または下半分のうちの一方を形成する共数の回転因子を含む乗算を実行するように構成され、
前記装置は、
前記実数の回転因子行列の右半分の上半分または下半分の他方を形成する実数の回転因子について、前記第１のメモリ装置に、前記実数または虚数の回転因子行列の右半分の上半分または下半分の一方における対応する乗算からの乗算の結果を加算するように構成される第１の加算器と、
前記虚数の回転因子行列の右半分の上半分または下半分の他方を形成する虚数の回転因子について、前記第２のメモリ装置に、前記実数または虚数の回転因子行列の右半分の上半分または下半分の一方における対応する乗算からの乗算の結果を加算するように構成される第２の加算器とをさらに含む、請求項１１〜１３のいずれか１項に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
発明の分野
本発明は、一般的に、離散フーリェ変換（Discrete Fourier Transform：ＤＦＴ）の使用による離散時間シーケンスの処理に関し、特に、ＤＦＴ係数の演算に関する。
【背景技術】
【０００２】
発明の背景
フーリェ変換は、信号処理において基本的な役割を担っている。それは、もとの時間領域信号から、周波数領域表現の生成を可能とする。デジタル信号処理（Digital Signal Processing：ＤＳＰ）においては、信号は離散時間シーケンスとして表現され、したがって、フーリェ変換の特定の形式である、離散フーリェ変換（ＤＦＴ）が用いられる。１９６５年に、クーリおよびテューキが、ソフトウェアでＤＦＴを生成するために、高速フーリェ変換（ＦＦＴ）と呼ばれる効果的なアルゴリズムを最初に提案した。彼らのもとの成果は、広範に拡張され、ＦＦＴの語句は、今やＤＦＴの演算のためのソフトウェアアルゴリズムの領域をカバーしている。
【０００３】
典型的に、ＤＳＰアルゴリズムの複雑性は、その実現のためにどれだけ多くの乗算が必要とされるかという点で測定される。ＤＳＰ機能において複素数演算が最も一般的に使用されるので、本文脈においては乗算の数が用いられ、そのため、単一プロセッサコンピュータについてのアルゴリズム実行時間の最良の表現を提供する。ハードウェア実行例の効率を考慮すると、アルゴリズムは、演算の数というよりもむしろ、演算要素間に必要とされる通信の複雑性についてより評価される。ＦＦＴアルゴリズムは、バタフライブロックを用いて、選択された乗算の数を低減するが、ハードウェア実行例を考えると、実行例の制御部分および相互接続が複雑であり、実現のために必要とされる非常に多くのハードウェア資源をもたらす。したがって、現在のＦＦＴに類似したアルゴリズムは、電界プログラマブルゲートアレイ（Field Programmable Gate Array：ＦＰＧＡ）には特に適しているとはいえない。さらに、ＦＰＧＡにおける、ＤＦＴのいくつかの直接実行例は、適度に簡単ではあるが、一般的に長い時間遅れを生成する。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
したがって、ＦＰＧＡ実行例のようなハードウェアにおいて実行される場合、ハードウェア資源を節約し、および／または、時間遅れを最小にする、ＤＦＴ係数の演算方法を提供することが望まれる。さらに、公知のＤＦＴ係数演算方法の、１つまたはより多くの欠点または不都合を改善または克服する、ＤＦＴ係数行列の演算方法を提供することが望まれる。
【課題を解決するための手段】
【０００５】
発明の簡単な要約
本発明の１つの局面は、離散周波数離散フーリェ変換（ＤＦＴ）係数行列の演算方法を提供し、方法は、
（ａ）サンプルの第１のフレームについて、離散時間信号のサンプルのフレームを回転因子行列と乗算してその第１のフレームについてのＤＦＴ係数行列を演算し、サンプルのフレームの第２の半分と回転因子行列の右半分との乗算からもたらされる演算結果を記憶するステップと、
（ｂ）サンプルの後続の各フレームについて、各後続フレームは前のフレームと半分が重なり合っており、
（ｉ）前のフレームからの記憶された演算結果を抽出するとともに、すべての第２のフレームの記憶された演算結果の符合を反転させるステップと、
（ｉｉ）サンプルの現在のフレームの第２の半分を回転因子行列の右半分と乗算し、その演算結果を記憶するステップと、
（ｉｉｉ）ステップ（ｉ）およびステップ（ｉｉ）の結果を加算するステップとを含む。
【０００６】
上述の方法は、回転因子行列の対称特性の利用し、離散時間信号のサンプルの連続したフレームは半分だけ重なり合う場合は、そうでなければすべてのフレームについてのＤＦＴ係数を演算するために必要とされるであろう演算結果の半分を、先行するフレームに関してなされた演算結果から推測する。これらの演算結果を記憶するためのメモリ装置を設けることによって、方法は、ＦＰＧＡ実行例において、演算時間遅れが半分だけ低減されるように実行され得る。実数のＤＦＴ係数および虚数のＤＦＴ係数がこの方法によって実現されるハードウェア実行例においては、演算時間遅れは４の係数で低減され得る。
【０００７】
本方法は、窓関数の非ゼロ値を記憶するとともにＤＦＴ係数にその非ゼロ値を適用することによって、畳み込みを用いて、周波数領域においてＤＦＴ係数に対して窓関数を実行するステップをさらに含む。窓関数はハミングウィンドウであり得る。周波数領域において畳み込みを用いることによって、ウィンドウのサンプルを記憶するためのメモリ要件が省略され得る。さらに、第１のＤＦＴ係数が入力フレームの真のエネルギ値を示すように、もとのフレームＰは保存される。これは、多くのＤＳＰアルゴリズムにおける、必要とされかつ重要な値であり、それは、時間領域窓方法を用いる場合、別個に計算されなければならない。
【０００８】
本発明の１つまたはより多くの実施形態においては、上述の方法のステップは、実数の回転因子値を含む回転因子行列についての実数のＤＦＴ係数行列を演算するように第１の時間が実行され、虚数の回転因子値を含む回転因子行列についての虚数のＤＦＴ係数行列を演算するように第２の時間が実行される。
【０００９】
このような実施形態においては、サンプルの現在のフレームの第２の半分と回転因子行列の右半分とを乗算するステップは、
実数の回転因子行列の右半分の上半分または下半分のうちの一方を形成する実数の回転因子を含む乗算を実行すること、
虚数の回転因子行列の右半分の上半分または下半分のうちの一方を形成する虚数の回転因子を含む乗算を実行すること、
実数の回転因子行列の右半分の上半分または下半分のうちの他方を形成する実数の回転因子について、実数または虚数の回転因子行列の右半分の上半分または下半分のうちの上記一方における対応する乗算から、乗算の結果を推測すること、および、
虚数の回転因子行列の右半分の上半分または下半分のうちの他方を形成する虚数の回転因子について、実数または虚数の回転因子行列の右半分の上半分または下半分のうちの上記一方における対応する乗算から、乗算の結果を推測することによって実行され得る。
【００１０】
本発明の他の局面は、離散フーリェ変換（ＤＦＴ）係数行列を演算するための装置を提供し、装置は、
サンプルの第１のフレームについて、離散時間信号のサンプルのフレームを回転因子行列と乗算してその第１のフレームについてのＤＦＴ係数行列を演算するように適合された演算ブロックと、
サンプルのフレームの第２の半分と回転因子行列の右半分との乗算からもたらされる演算結果を記憶するためのメモリ装置とを含み、
サンプルの後続の各フレームについて、各後続フレームは前のフレームと半分が重なり合っており、演算ブロックは、
（ｉ）前のフレームからの記憶された演算結果を抽出するとともに、すべての第２のフレームの記憶された演算結果の符合を反転させ、
（ｉｉ）サンプルの現在のフレームの第２の半分を回転因子行列の右半分と乗算し、その演算結果を記憶し、
（ｉｉｉ）ステップ（ｉ）およびステップ（ｉｉ）の結果を加算するようにさらに適合される。
【００１１】
演算ブロックは、行列演算を実行するための乗累算（multiply-accumulate：ＭＡＣ）ブロックを含み得る。
【００１２】
装置は、周波数領域においてＤＦＴ係数に対して窓関数を実行するための畳み込みブロックをさらに含み得、畳み込みブロックは、
窓関数の非ゼロ値を記憶するためのメモリユニットと、
非ゼロ値をＤＦＴ係数に提供するための乗累算（ＭＡＣ）ブロックとを含む。
【００１３】
装置は、サンプルの第１のフレームについて、離散時間信号のサンプルのフレームを、実数の回転因子値を含む第１の回転因子行列と乗算してその第１のフレームについての実数のＤＦＴ係数行列を演算するように適合された第１の演算ブロックと、
サンプルのフレームの第２の半分と、実数の回転因子値を含む第１の回転因子行列の右半分との乗算からもたらされる第１の演算結果を記憶するための第１のメモリ装置とを含み、
各後続フレームは前のフレームと半分が重なり合っており、第１の演算ブロックは、サンプルの各後続フレームについて、
（ｉ）前のフレームからの記憶された第１の演算結果を抽出するとともに、すべての第２のフレームの記憶された第１の演算結果の符合を反転させ、
（ｉｉ）サンプルの現在のフレームの第２の半分を第１の回転因子行列の右半分と乗算し、その演算結果を記憶し、
（ｉｉｉ）ステップ（ｉ）およびステップ（ｉｉ）の結果を加算するようにさらに適合され、
装置は、サンプルの第１のフレームについて、離散時間信号のサンプルのフレームを、虚数の回転因子値を含む第２の回転因子行列と乗算してその第１のフレームについての虚数のＤＦＴ係数行列を演算するように適合された第２の演算ブロックと、
サンプルのフレームの第２の半分と、虚数の回転因子値を含む第２の回転因子行列の右半分との乗算からもたらされる第２の演算結果を記憶するための第２のメモリ装置とをさらに含み得、
第２の演算ブロックは、サンプルの各後続フレームについて、
（ｉｖ）前のフレームからの記憶された第２の演算結果を周出力するとともに、すべての第２のフレームの記憶された第２の演算結果の符合を反転させ、
（ｖ）サンプルの現在のフレームの第２の半分を虚数の回転因子行列の右半分と乗算し、その演算結果を記憶し、
（ｖｉ）ステップ（ｉｖ）およびステップ（ｖ）の結果を加算するようにさらに適合される。
【００１４】
各演算ブロックは、行列乗算を実行するための乗累算（ＭＡＣ）ブロックを含み得る。
装置は、周波数領域において、実数のＤＦＴ係数に窓関数を実行するための第１の畳み込みブロックと、
周波数領域において、虚数のＤＦＴ係数に窓関数を実行するための第２の畳み込みブロックとをさらに含み得、
各畳み込みブロックは、
窓関数の非ゼロ値を記憶するためのメモリユニットと、
非ゼロ値をＤＦＴ係数に適用するための乗累算（ＭＡＣ）ブロックを含む。
【００１５】
１つまたはより多くの実施形態において、第１の演算ブロックは、実数の回転因子行列の右半分の上半分または下半分のうちの一方を形成する実数の回転因子を含む乗算を実行するように構成され得るとともに、第２の演算ブロックは、虚数の回転因子行列の右半分の上半分または下半分のうちの一方を形成する虚数の回転因子を含む乗算を実行するように構成され得る。この場合は、装置は、
実数の回転因子行列の右半分の上半分または下半分の他方を形成する実数の回転因子について、第１のメモリ装置に、実数または虚数の回転因子行列の右半分の上半分または下半分の一方における対応する乗算からの乗算の結果を加算するように構成される第１の加算器と、
虚数の回転因子行列の右半分の上半分または下半分の他方を形成する虚数の回転因子について、第２のメモリ装置に、実数または虚数の回転因子行列の右半分の上半分または下半分の一方における対応する乗算からの乗算の結果を加算するように構成される第２の加算器とをさらに含み得る。
【００１６】
図面の簡単な説明
本発明の好ましい実施形態は、添付の図面を参照して、例として示されるのであって、限定として示されるものではない。
【図面の簡単な説明】
【００１７】
【図１】離散時間信号のサンプルの連続フレーム、およびそれらのサンプルの連続フレームの重なり合う性質を示す概略図である。
【図２】離散フーリェ変換係数の演算において用いられる、回転因子行列の対称特性を示す図である。
【図３】離散フーリェ変換係数を演算する装置の電界プログラマブルゲートアレイ実行例の実施形態である。
【図４】図３上に示された装置の部分を形成する畳み込みブロックの一部の概略図である。
【図５】離散フーリェ変換係数の演算において用いられる、回転因子行列のさらなる対称特性を示す図である。
【図６】離散フーリェ変換係数の演算において用いられる、回転因子行列の追加的な対称特性を示す、ｚ平面における４つの対称点の図形的表現である。
【図７】離散フーリェ変換係数行列を演算するための装置の電界プログラマブルゲートアレイ実行例のさらなる実施形態である。
【発明を実施するための形態】
【００１８】
図面の詳細な説明
フーリェ変換は、周波数領域において時間可変信号を表現するために用いられる主要ツールである。離散時間信号のＮ個のサンプルの組｛x(n), n=0,1 ,2, ..., N-1｝を考える。ｘ（ｎ）の従来の離散フーリェ変換（ＤＦＴ）は、以下のような表現で定義される。
【００１９】
【数１】
2012502379.tif 000003
【００２０】
ここで、シンボルｊは、虚数（−１）1/2を表し、（時間領域における）Ｎ個の実数データ値は、（周波数領域における）N個の複素ＤＦＴ値に変換される。
【００２１】
共通項があるので、上記の定義は、通常、以下のようなシンボルを導入することによって単純化される。
【００２２】
【数２】
2012502379.tif 000004
【００２３】
この場合、ｗは実行上「回転因子」と呼ばれるスカラー量である。そして、式（１）は、回転因子に関して、以下のように記載される。
【００２４】
【数３】
2012502379.tif 000005
【００２５】
式（１）で定義されたＤＦＴ係数は、以下のような行列ベクトル形式で表現され得る。
【００２６】
【数４】
2012502379.tif 000006
【００２７】
または、
ｆ＝Ｆｘ    （５）
ここで、ｘはＮ個の入力サンプルのベクトルであり、ｆはＤＦＴ変換係数のベクトルであり、ＦはＮ×Ｎのフーリェ行列である。デジタル信号処理アルゴリズムの解析、合成（synthesis）、および実行においてＤＦＴが担う重要な役割は、当業者には周知である。
【００２８】
長く固定されていない信号を処理する場合、フーリェ解析を適用するために、それらを短い準固定フレームに分割することが必要である。フレーム境界の近くで生じる、スペクトル漏れおよび事象が見逃されることを避けるために、入力フレームは重ね合わされるとともに適切な窓関数が適用されて、フレーム境界効果を低減する。図１は、離散時間信号のサンプルにおける３つの連続フレーム１０，１２，１４の例を示す。各フレームは、ｘ［ｎ］で参照されるＮ個の要素を有し、ここで、ｎは０からＮ−１まで変化する。各フレームは、前のフレームと半分または５０％だけ重なり合う。
【００２９】
式（４）におけるＤＦＴ変換係数は複素数であるが、実際には、ＤＦＴアルゴリズムのハードウェア実効例においては、実数および虚数のＤＦＴ係数が演算される。そして、結果として得られる実数および虚数のＤＦＴ係数は、複素ＤＦＴ係数を演算するために用いられる。実数および虚数のＤＦＴ係数を計算するために用いられる最も単純な式を以下に示す。
【００３０】
【数５】
2012502379.tif 000007
【００３１】
ここで、ＸRe［ｋ］およびＸIm［ｋ］は、ビン（bin）インデックスｋにおける、実数および虚数のＤＦＴ係数であり、ＮはＤＦＴの大きさである。
【００３２】
入力信号は、通常純粋に実数であるので、ＤＦＴの複素数出力は対称的となり、ｋ＋０〜Ｎ／２−１までの値のみが必要とされ、ｎは０からＮ−１までの値を用いる。
【００３３】
２つの式（６）および式（７）は、２つの乗累乗算（Multiply-Accumulate：ＭＡＣ）ブロックを用いて、直接的な手法で、ＦＰＧＡハードウェアにおいて実行され得る。ＭＡＣブロックが、今や低価格のＦＰＧＡチップに内蔵されているのを一般的に見出されるので、これは特に興味深い。たとえば、ザイリンクス社（Xilinx）からの低価格ＦＰＧＡ  スパルタン−３（Spartan-3）のファミリーは、３０より多くのＭＡＣブロックを含む。
【００３４】
式（６）および式（７）の両方は、行列形式において、以下のように記述される。
Ｘk＝[Ｆ][ｘn]      （８）
ここで、Ｆはコサインまたはサインテーブルの行列形式（回転因子行列）であり、Ｘnは入力信号である。式（８）に基づいて、フレーム１０のフーリェ変換は以下のようになる。
【００３５】
Ｘ1k＝[Ｆ][ｘn]＝[Ｆ][ａｂ]      （９）
行列Ｆが、図２に示されるように、Ｆ=[Ｆ１ Ｆ２]のように左半分のＦ１および右半分のＦ２に縦に分割される場合、式（４）は以下のようになる。
【００３６】
Ｘ1k＝[Ｆ][ｘn]＝[Ｆ][ａｂ]＝[Ｆ１][ａ]＋[Ｆ２][ｂ]      （１０）
同様に、図１におけるフレーム１２およびフレーム１４のフーリェ変換は、それぞれ式（１１）および式（１２）によって記述される。
【００３７】
Ｘ2k＝[Ｆ１][ｂ]＋[Ｆ２][ｃ]      （１１）
Ｘ3k＝[Ｆ１][ｃ]＋[Ｆ２][ｄ]      （１２）
また、式（６）、式（７）および式（８）は以下のように理解され得る。
【００３８】
Ｆ＝cos（２πｋｎ／Ｎ）  または  Ｆ＝sin（２πｋｎ／Ｎ）
ここで、ｋ＝０：Ｎ／２−１であり、ｎ＝０：Ｎ−１である。
Ｆ＝cos（２πｋｎ／Ｎ）の場合、式（１０）、式（１１）および式（１２）におけるＦ１およびＦ２は、以下の式（１２ａ）および式（１２ｂ）のように示される。
【００３９】
Ｆ１＝cos（２πｋｎ／Ｎ）      （１２ａ）
ここで、ｋ＝０：Ｎ／２−１であり、ｎ＝０：Ｎ／２−１である。
【００４０】
Ｆ２＝cos（２πｋｎ／Ｎ）      （１２ｂ）
ここで、ｋ＝０：Ｎであり、ｎ＝Ｎ／２：Ｎ−１である。
ｎが０からＮ／２−１まで変化すると、Ｆ２は以下のようになる。
【００４１】
【数６】
2012502379.tif 000008
【００４２】
式（１３）は、ｋに依存して、Ｆ２＝±Ｆ１であることを示しており、Ｆ＝sin（２πｋｎ／Ｎ）のときも真値である。
【００４３】
式（１０）および式（１１）において説明されたように、フレーム１０のＤＦＴ係数は、[Ｆ１][ａ]および[Ｆ２][ｂ]によって決定され、フレーム１２のＤＦＴ係数は、[Ｆ１][ｂ]および[Ｆ２][ｃ]で決定される。しかしながら、（上述のように）Ｆ２＝±Ｆ１であり、そのため、[Ｆ１][ｂ]は、さらなる演算を行なうことなく、[Ｆ２][ｂ]から推測することができるので、[Ｆ２][ｂ]に含まれる値が、次回の演算のために記憶される必要があるだけである。そのため、フレーム１２に必要とされる演算は、２の係数で低減され得る。同様に、フレーム１４についてのＤＦＴの計算は、[Ｆ２][ｄ]だけが具体的な演算を必要とする。したがって、第１のフレームの後は、各後続フレームの演算要件は、５０％に低減され得る。
【００４４】
上述の技術は、図３に示されるようなハードウェアにおいて実行され得る。この図は、ＤＦＴ係数を演算するための装置３０を示す。装置３０は、離散時間信号のサンプルのフレームを回転因子行列と掛け合わせて、それらのフレームについてのＤＦＴ係数行列を演算するように適合された第１の演算ブロックを含む。その目的を達成するために、演算ブロック３２は、乗算器３４および加算器３６を含む乗累算（ＭＡＣ）ブロックを含む。演算ブロック３２は、メモリ装置３８およびマルチプレクサ４０をさらに含む。装置３０は、式（６）によって記述された演算を実行するために演算ブロック３２に必要とされる回転因子を記憶するルックアップテーブル４２をさらに含む。
【００４５】
動作中、第１のフレーム１０の各入力信号サンプルは、乗算器３４によって、ルックアップテーブル４２からの実数の回転因子と掛け合わされ、その後、加算器３６によって積算されて、その第１のフレーム１０についての実数のＤＦＴ係数行列を演算する。サンプルのフレームの第２の半分と回転因子行列の右半分との乗算からもたらされる演算結果は、アドレスｋでメモリ装置３８に記憶され、ここで、ｋは実数のＤＦＴのビンインデックスである。
【００４６】
離散時間信号のサンプルの第２のフレーム１２および後続のフレームについて、この第２のフレーム１２についての実数のＤＦＴのための演算結果の半分はすでに利用可能であり、メモリ装置３８内に前に記憶されている。したがって、前のフレームからの記憶された演算結果が抽出され、記憶された演算結果の符合が全ての第2のフレームについて反転される。サンプルの現在のフレーム１２の第２の半分は、その後、ルックアップテーブル４２に保持された回転因子行列の右半分と掛け合わされ、乗算の結果は、その後、加算器３６によって、抽出された演算結果に加えられ、次のビンについてのＤＦＴ係数を生成する。
【００４７】
サンプルの現在のフレームの第２の半分と回転因子行列の右半分との乗算からもたらされる演算結果は、アドレスｋ＋１でメモリ装置３８に記憶される。このプロセスは、全てのビンについて実数のＤＦＴ係数が演算されるまで繰り返される。
【００４８】
この実施形態においては、装置３０は、第２のメモリ装置およびマルチプレクサ５２とともに、乗算器４６および加算器４８で形成されるＭＡＣブロックを含む第２の演算ブロック４４をさらに含む。第１の演算ブロック３２および第１のメモリ装置３８は、離散時間入力信号のサンプルのフレームとルックアップテーブル４２に保持された実数の回転因子値とを用いて、サンプルのフレームについての実数のＤＦＴ係数を演算するのに対し、第２の演算ブロック４４および第２のメモリ装置４２は、入力信号のサンプルのフレームとルックアップテーブル４２に保持された虚数の回転因子値とを用いて、サンプルの様々なフレームについての虚数のＤＦＴ係数を演算する。
【００４９】
その目的を達成するために、第２の演算ブロック４４は、サンプルの第１のフレーム１０について、サンプルのフレームをルックアップテーブル４２に保持された実数の回転因子値と掛け合わせて、第１のフレームについての虚数のＤＦＴ係数を演算する。サンプルのフレームの第２の半分と虚数の回転因子を含む回転因子行列の右半分との乗算からもたらされる演算結果は、第２のメモリ装置５０に記憶される。
【００５０】
サンプルの第２のフレームおよび後続のフレームについて、前のフレームについて実行され、かつメモリ装置５０に記憶された演算結果が抽出され、記憶された演算結果の符合が、全ての第２のフレームにおいて反転される。その後、各現在のフレームについて、サンプルに現在のフレームの第２の半分が、虚数の回転因子行列の右半分と掛け合わされ、そして、乗算の結果および抽出された演算結果が加算されて、特定のＤＦＴビンについての虚数のＤＦＴ係数を生成する。プロセスは、全てのビンについて虚数のＤＦＴ係数が計算されるまで、再度繰り返される。サンプルの第２のおよび後続のフレームの各々について、サンプルの現在のフレームの第２の半分と虚数の回転因子行列の右半分との乗算からもたらされる演算結果は、後続フレームに関する演算における使用のために、メモリ装置５０に記憶される。
【００５１】
メモリ装置３８および５０の各々は、単一のメモリ空間を共有することが可能な２つの独立したポートを有する、デュアルポートランダムアクセスメモリ（ＲＡＭ）を含み得る。デュアルポートＲＡＭ空間は、２つの等しい部分に分割され得、その各々は、Ｎ／２のサイズを有する（Ｎは、ＤＦＦＴのサイズ）。この場合において、デュアルポートＲＡＭは、回転バッファのように動作し、一方の部分はＤＦＴブロックによって占有されるが、他方は入力信号サンプルで満たされる。
【００５２】
ＤＦＴ係数の演算におけるスペクトル漏れを低減するために、通常、時間領域入力信号に窓関数が適用される。しかしながら、時間領域において窓関数を適用することは、図３に示される装置３０において利用される、非対称特性に支障をきたし、メモリ装置３８および５０に記憶された前のフレームからの演算結果はもはや有効ではなくなる。したがって、装置３０は、周波数領域において実数および虚数のＤＦＴ係数に窓関数を適用する畳み込みブロック５４をさらに含む。
【００５３】
様々な窓関数が畳み込みブロック５４によって実行され得るが、生成することが簡単であるという利点を有する２つの例は、ハンウィンドウおよびハミングウィンドウである。ハミングウィンドウは、より多くのサイドローブキャンセレーション（side lobe cancellation）を達成する、修正したハンウィンドウとみなすことができる。ハミングウィンドウは、シーケンスの合計ｗ（ｎ）として記述され得る。
【００５４】
【数７】
2012502379.tif 000009
【００５５】
ここで、Ｎはウィンドウのサイズ（通常は、ＤＦＴサイズと同じ）であり、ａは通常は整数であり、Ｎは０からＮ−１までの値のインデックスである。
【００５６】
各シーケンスのＤＴＦＴ（離散時間フーリェ変換）は、以下のように特定され得る。
【００５７】
【数８】
2012502379.tif 000010
【００５８】
ここで、
【００５９】
【数９】
2012502379.tif 000011
【００６０】
ＤＦＴの場合においては、ウィンドウは２π／Ｎの倍数においてサンプリングされる。したがって、３つの非ゼロサンプルのみが、サンプルプロセス中に取得される。これらのサンプルの位置は、−２π／Ｎ、０、および２π／Ｎであり、−（１−α）／２、α、および−（１−α）／２から得られるサンプルの対応する値を有する。αは、０．５４の値を有し、したがって、ハミングウィンドウのＤＦＴは、３つの非ゼロ値、−０．２３、０．５４、および−０．２３のみを含む。
【００６１】
周波数領域における畳み込みを用いることによって、窓関数のサンプルを記憶するためのメモリ要件は省略され得る。さらに、第１のＤＦＴ係数が入力フレームの真のエネルギ値を示すように、元のフレームが保存される。これは、多くのデジタル処理アルゴリズムにおいて必要とされる重要な値であるので、時間領域ウィンドウ法を用いることが別個に計算されなくてはならない場合には、周波数領域における畳み込みを用いることは、図３に示されたハードウェア実行例におけるさらなる資源の低減を達成する。
【００６２】
図４は、畳み込みブロック５４によって与えられる窓関数が提供することができる便利な事項について示す。このハードウェア実行例６０は、ハミングウィンドウの３つの非ゼロＤＦＴ値の各々を記憶するための３つのメモリ要素６４，６６，６８を含むシフトレジスタ６２を含む。ハミングウィンドウの３つの非ゼロＤＦＴ値の各々は、乗算器７２および加算器７４で形成されるＭＡＣブロック７０によって、実数または虚数のＤＦＴ係数に適用される。畳み込みブロック５４が、図４に示された二組の要素、すなわち、加算器３６の出力において生成された実数のＤＦＴ係数に窓関数を適用するための第１の組および加算器４８の出力において生成された虚数のＤＦＴ係数に窓関数を適用するための第２の組を含むことが理解されるであろう。
【００６３】
図３および図４に示された本発明の実施形態は、回転因子行列の対称特性を利用して、演算の複雑さを低減する。しかしながら、さらなる時間遅れの低減が、これらと同様の対称特性に基づく最適化技術の使用を通して、少しのハードウェア追加だけで達成され得る。
【００６４】
Ｆが回転因子行列の場合、それは、複素数式
【００６５】
【数１０】
2012502379.tif 000012
【００６６】
を有し、ここでｋ値は０からＮ／２−１であり、ｎは０からＮ−１である。式（１０）、式（１１）および式（１２）で示されたように、Ｆ１は行列Ｆの左半分であり、ｎは０からＮ／２−１まで変化し、Ｆ２は右半分であり、ｎはＮ／２からＮ−１まで変化する。
【００６７】
したがって、
【００６８】
【数１１】
2012502379.tif 000013
【００６９】
であり、ここでｋおよびｎは０からＮ／２−１まで変化する。Ｌ＝Ｎ／２とすると、
【００７０】
【数１２】
2012502379.tif 000014
【００７１】
であり、ここでｋおよびｎは０からＬ−１まで変化する。図５に示されるように、Ｆ１は水平方向にＦ1aおよびＦ1bに分割される場合は、
【００７２】
【数１３】
2012502379.tif 000015
【００７３】
であり、ｋは０からＬ／２−１まで変化し、ｎは０からＬ−１まで変化し、
【００７４】
【数１４】
2012502379.tif 000016
【００７５】
であり、ｋはＬ／２からＬ−１まで変化し、ｎは０からＬ−１まで変化する。
ｋが０からＬ／２−１まで変化する場合、Ｆ1bは以下の式によって表わされ、
【００７６】
【数１５】
2012502379.tif 000017
【００７７】
ここで、
【００７８】
【数１６】
2012502379.tif 000018
【００７９】
である。
式（１８）は、図６に示されるように、ｚ平面における４つの対称点８０から８６までを表わす。
【００８０】
上記から、ＤＦＴ基本式（６）および（７）は、以下のように書き換えられ得る。
【００８１】
【数１７】
2012502379.tif 000019
【００８２】
ここで、ｋは０からN／４−１まで変化し、
【００８３】
【数１８】
2012502379.tif 000020
【００８４】
ここで、ｋに依存して、Ａ＝±cos（２πｋｎ／N）または±sin（２πｋｎ／N）であり、
【００８５】
【数１９】
2012502379.tif 000021
【００８６】
ここで、ｋは０からN／４−１まで変化し、
【００８７】
【数２０】
2012502379.tif 000022
【００８８】
ここで、ｋに依存して、Ａ＝±cos（２πｋｎ／N）または±sin（２πｋｎ／N）である。
結果として、インデックスｋにおけるＤＦＴ係数を演算する場合、２つの乗算の積は、インデックスｋに依存する適当な符号ビットと交換されて、インデックスｋ＋Ｌ／２におけるＤＦＴ係数を演算し得る。したがって、ＤＦＴ係数の全てのビンを計算するためのＮ／２回のループの代わりに、図７に示されるように、２つ多くの加算器のみの追加によって、Ｎ／４回のループだけが必要とされる。
【００８９】
言い換えると、サンプルのフレームの第２の半分ｂを実数および虚数の回転因子行列の右半分Ｆ２と掛け合わせるために、実数および虚数の回転因子行列の右半分Ｆ２の上半分Ｆ２ａまたは下半分Ｆ２ｂのうちの一方を形成する回転因子を含む乗算のみの演算が必要とされる。実数の回転因子行列の右半分Ｆ２の上半分Ｆ２ａまたは下半分Ｆ２ｂのうちの他方を形成する実数の回転因子について、乗算の結果は、実数または虚数の回転因子行列の右半分Ｆ２の上半分Ｆ２ａまたは下半分Ｆ２ｂのうちの上記一方における対応した乗算から推測され得る。
【００９０】
図７は、図５および図６に関連して説明される最適化技術を実行する、実数および虚数のＤＦＴ係数を演算するための装置１００を示す。装置１００は、乗算器１０４および加算器１０６で形成されるＭＡＣブロックを含む第１の演算ブロック１０２を含む。第１のメモリ装置１０８および関連するマルチプレクサ１１０も含まれる。装置１００は、乗算器１１４および加算器１１６で形成されるＭＡＣブロックを含む第２の演算ブロック１１２をさらに含む。第２のメモリ装置１１８および関連するマルチプレクサ１２０も含まれる。さらに、装置１００は、ルックアップテーブル１２２および畳み込みブロック１２４を含む。第１および第２の演算ブロック１０２および１１２、第１および第２のメモリ装置１０８および１１８ならびに関連するマルチプレクサ１１０および１２０、ルックアップテーブル１３０、ならびに畳み込みブロック１２４は、図３に示された装置３０に関連して説明された、第１および第２の演算ブロック３２および４４、第１および第２のメモリ装置３８および５０ならびに関連するマルチプレクサ４０および５２、ルックアップテーブル４２、ならびに畳み込みブロック５４に関連して説明されたものと同様な態様で機能する。
【００９１】
装置１００においては、第１の演算ブロック１０２は、実数の回転因子行列の右半分Ｆ２の上半分Ｆ２ａまたは下半分Ｆ２ｂの一方を形成する実数の回転因子を含む乗算を実行するように構成される。同様に、第２の演算ブロック１１２は、虚数の回転因子行列の右半分Ｆ２の上半分Ｆ２ａまたは下半分Ｆ２ｂの一方を形成する虚数の回転因子を含む乗算を実行するように構成される。
【００９２】
しかしながら、装置１００は、さらなる加算器１２６および１２８、ならびにさらなるマルチプレクサ１３０および１３２をさらに含む。加算器１２６は、実数の回転因子行列の右半分Ｆ２の上半分Ｆ２ａまたは下半分Ｆ２ｂの他方を形成する実数の回転因子について、第１のメモリ装置１０８に、マルチプレクサ１３０によって提供されるような実数または虚数の回転因子行列の右半分の上半分または下半分の一方における対応する乗算の結果を加算するように構成される。同様に、加算器１２８は、虚数の回転因子行列の右半分Ｆ２の上半分Ｆ２ａまたは下半分Ｆ２ｂの他方を形成する虚数の回転因子について、第２のメモリ装置１１８に、マルチプレクサ１３２によって提供されるような実数または虚数の回転因子行列の右半分の上半分または下半分の一方における対応する乗算の結果を加算するように構成される。このようにして、必要とされる全てのＤＦＴ係数の計算のためのＮ／２回のループに代えて、装置１００において、加算器１２６および１２８ならびに関連するマルチプレクサ１３０および１３２の追加によるＮ／４回だけのループが必要とされ、それによって、図３に示された装置３０と比べて、さらなる時間遅れの低減を提供する。
【００９３】
上述の要素は、明細書中で開示された本発明の単なる例示にすぎず、本発明の精神から逸脱することなく、当業者によって多くの変形が考案されかつ創作され得ることが理解されるべきである。
【図１】
2012502379.tif 000023
【図２】
2012502379.tif 000024
【図３】
2012502379.tif 000025
【図４】
2012502379.tif 000026
【図５】
2012502379.tif 000027
【図６】
2012502379.tif 000028
【図７】
2012502379.tif 000029
【国際調査報告】
2012502379.tif 000030
2012502379.tif 000031
2012502379.tif 000032