(57)【要約】【目的】  FFT演算の実時間処理の処理量を減少する「FFT演算方法及びFFT演算装置」を提供する。【構成】  ｎ点のデータを1単位とするデータのリングバッファへの書込み、該リングバッファに書込まれたＮ単位のデータの時間順に従った系列への並び替え、並び替えたデータに対するFFT演算を所定周期で実行するFFT演算装置であり、FFT演算処理を複数のタスクに分割し、各タスクを優先度の高いタスクと低いタスクに分け、優先度の高いタスクが占有する処理時間を短縮する。【選択図】        図１
2005235045.tif 000002
【特許請求の範囲】
【請求項１】
ｎ点のデータを1単位とするデータのリングバッファへの書込み、該リングバッファに書込まれたＮ単位のデータの時間順に従った系列への並び替え、並び替えたデータに対するFFT演算を所定周期で実行するFFT演算方法において、
最新のＮ単位のデータが書込まれるリングバッファ部、リングバッファ部の記憶データを時間系列順に並び替えて保存する第１、第２のFFT演算対象データ保存部、前記リングバッファ部への新規データの書込み、並び替え、FFT演算などの処理を実行する演算処理部、全体の処理順序を管理する管理部を設け、
前サイクルにおいて前記リングバッファ部に保存されている最新の(N−1) 単位のデータを時間的に第２〜第N番目として並び替えて第１FFT演算対象データ保存部に保存し、
現サイクルにおいて発生した1単位の新規データを時間的に第１番目のデータとして前記第１FFT演算対象データ保存部の対応する位置に書込み、
ついで、該第１FFT演算対象データ保存部に保存されているＮ単位のデータにFFT処理を施し、
しかる後、現サイクルにおいて発生した前記1単位の新規データを前記リングバッファ部に書込み、
該リングバッファ部に保存されている最新の(N−1) 単位のデータを時間的に第２〜第N番目として並び替えて前記第２のFFT演算対象データ保存部に保存し、
以後、上記処理をサイクル毎にFFT演算対象データ保存部を切り替えながら実行する、
ことを特徴とするFFT演算方法。
【請求項２】
ｎ点のデータを1単位とするデータのリングバッファへの書込み、該リングバッファに書込まれたＮ単位のデータの時間順に従った系列への並び替え、並び替えたデータに対するFFT演算を所定周期で実行するFFT演算装置において、
最新のＮ単位のデータが書込まれるリングバッファ領域、リングバッファ領域の記憶データを時間系列順に並び替えて保存する第１、第２のFFT演算対象データ保存領域を備えた記憶部、
前記リングバッファ領域への新規データの書込み、並び替え、FFT演算などの処理を実行する演算処理部、
優先順にタスクが実行されるように処理順序を管理する管理部を備え、
FFT演算処理を複数のタスクに分割し、各タスクを優先度の高いタスクと低いタスクに分け、優先度の高いタスクが演算処理部を占有する時間を短縮する、
ことを特徴とするFFT演算装置。
【請求項３】
FFT演算処理を、(1) 1単位の新規データを前記リングバッファ領域に書込む第1タスク、(2) 該リングバッファ領域に保存されている最新の(N−1) 単位のデータを時間的に第２〜第N番目として並び替えて前記FFT演算対象データ保存領域に保存する第２タスク、（3） 発生した1単位の新規データを時間的に第１番目のデータとして前記FFT演算対象データ保存部の対応する位置に書込む第３タスク、(4) 該FFT演算対象データ保存部に保存されているＮ単位のデータにFFT処理を施す第4タスクに分割し、
前記第１、第２タスクの優先度を低くし、前記第３、第４タスクの優先度を高くする、
ことを特徴とする請求項２記載のFFT演算装置。
【請求項４】
前記演算処理部は、前サイクルの低優先度タスクの実行時、第１タスクにより前サイクルにおいて発生した1単位の新規データを前記リングバッファ領域に書込み、ついで、第2タスクにより前記リングバッファ領域に保存されている最新の(N−1) 単位のデータを時間的に第２〜第N番目として並び替えて第１FFT演算対象データ保存領域に保存し、
また、前記演算処理部は、現サイクルの高優先度タスクの実行時、第３タスクにより、現サイクルにおいて発生した1単位の新規データを時間的に第１番目のデータとして前記第１FFT演算対象データ保存領域の対応する位置に書込み、第４タスクにより、該第１FFT演算対象データ保存領域に保存されているＮ単位のデータにFFT処理を施し、
しかる後、現サイクルにおいて発生した前記1単位の新規データを前記リングバッファ領域に書込み、該リングバッファ領域に保存されている最新の(N−1) 単位のデータを時間的に第２〜第N番目として並び替えて前記第２のFFT演算対象データ保存領域に保存し、以後、上記処理をサイクル毎にFFT演算対象データ保存領域を切り替えながら実行する、
ことを特徴とする請求項３記載のFFT演算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はFFT演算方法及びFFT演算装置に係わり、特にｎ点のデータを1単位とするデータのリングバッファへの書込み、該リングバッファに書込まれたＮ単位のデータの時間順に従った系列への並び替え、並び替えたデータに対するFFT演算を定期的に実行するFFT演算方法及びFFT演算装置に関する。
【背景技術】
【０００２】
近年のDSP（Digital Signal Processor）は、割り込みに優先度を設けたリアルタイムOSや、複数の乗算器、ALU（算術、論理演算ユニット）の導入より、あたかもRISCチップのように複数のタスクを混在、制御することが可能になった。これにより、例えば、音声明瞭度改善システムにスペアナ機能やオーディオリッピング(オーディオ高速記録)機能といった別機能のモジュールを同一DSPに搭載することが容易となってきている。音声明瞭度改善システムとは、ラウドネス技術を用いて、マイクに入力する騒音レベルに応じて、音声のボリュームを調整して音声明瞭度を改善するシステム(特許文献1参照)であり、該文献には詳細な制御技術が開示されている。
【０００３】
複数のタスクを混在、制御するDSPにおいて、各モジュール(機能)の実時間処理に携わる処理量を少しでも減少できれば、他モジュールの占有待ちを低減させるばかりでなく、性能向上、例えばリッピングの速度等の向上にもつながる。音声明瞭度改善システムや音声認識システム(高速LMSアルゴリズム採用)などに使用されるDSPはFFT処理を定期的に一定間隔で実行する。このためFFT処理における実時間処理に携わる処理量を減少できれば好都合である。
【０００４】
従来のFFT演算は、図５に示すように、ｎ点（例えば１２８点）のデータを1単位として新規データを保存するバッファ１、最新のＮ（例えば８）単位のデータが書込まれるリングバッファ部２、リングバッファ部２の記憶データを時間系列順に並び替えて保存するFFT演算対象データ保存部３、リングバッファ部への新規データの書込み、前記時間系列順の並び替え及びFFT演算などの処理を実行する演算処理部４の連携により行われている。リングバッファ２には1→2→…→８→1→2→…の順に1単位の新規データが順番に上書きされ、常に最新のN組のデータが保存されている。
【０００５】
図６に示すタイムチャートに従って説明すれば、所定周期毎に、
(Ａ) 1単位１２８点の新規データ(斜線部)を8単位（＝１２８×８＝１０２４点）のリングバッファ２に格納し、
(Ｂ) FFT演算対象データ保存部３に１０２４点データを時間系列順に並び替えてコピーし、すなわち、新しいものほど下に、古いデータほど上方に順番に配列されるように並び替え、
(Ｃ) 最後に、FFT処理を行なってFFT結果を演算対象データ保存部３に上書きする、
というシーケンシャルな流れでFFT演算を行なって演算結果を出力する。
【０００６】
前述のように、FFT処理における実時間処理に携わる処理量を減少できれば好都合であるが現状のFFT実時間処理に携わる処理量は大きい。すなわち、FFTの実時間処理に携わる処理量は、図５におけるＡ，Ｂ，Ｃの各処理を合計した量となり、FFT演算処理時間Ｔは図６に示すＡ，Ｂ，Ｃの各処理を連続的に行なうに要する時間となる。このため、FFT演算を高優先度のタスクに設定すると、DSPは時間Tという比較的長い時間がFFT演算に占有されてしまう問題がある。
なお、DSPに高速フーリエ変換FFTを適用して音声認識する技術はあるが（たとえば特許文献２参照）、FFTの実時間処理に携わる処理量を減少させる従来方法は見当たらない。
【特許文献１】特開平11-166835号公報
【特許文献２】特開平4-264598号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
以上より、割り込みに優先度を設けたリアルタイムOS を備えたDSP、あるいは、かかるDSPと同等機能を備えたデバイスなどでは、FFT演算の実時間処理の処理量を減少することが要望されているが、有効な方法が提案されていなかった。
従って、本発明の目的は、FFT演算の実時間処理の処理量を減少することである。
【課題を解決するための手段】
【０００８】
上記目的は本発明によれば、ｎ点のデータを1単位とするデータのリングバッファへの書込み、該リングバッファに書込まれたＮ単位のデータの時間順に従った系列への並び替え、並び替えたデータに対するFFT演算を所定周期で実行するFFT演算方法及びFFT演算装置により達成される。
本発明のFFT演算方法では、(1) 最新のＮ単位のデータが書込まれるリングバッファ部、リングバッファ部の記憶データを時間系列順に並び替えて保存する第１、第２のFFT演算対象データ保存部、前記リングバッファ部への新規データの書込み、並び替え、FFT演算などの処理を実行する演算処理部、全体の処理順序を管理する管理部を設け、(2) 前サイクルにおいて前記リングバッファ部に保存されている最新の(N−1) 単位のデータを時間的に第２〜第N番目として並び替えて第１FFT演算対象データ保存部に保存し、(3) 現サイクルにおいて発生した1単位の新規データを時間的に第１番目のデータとして前記第１FFT演算対象データ保存部の対応する位置に書込み、(4) ついで、該第１FFT演算対象データ保存部に保存されているＮ単位のデータにFFT処理を施し、(5) しかる後、現サイクルにおいて発生した前記1単位の新規データを前記リングバッファに書込み、(6) 該リングバッファに保存されている最新の(N−1) 単位のデータを時間的に第２〜第N番目として並び替えて前記第２のFFT演算対象データ保存部に保存し、(7) 以後、上記処理をサイクル毎にFFT演算対象データ保存部を切り替えながら実行する。
【０００９】
本発明のFFT演算装置は、最新のＮ単位のデータが書込まれるリングバッファ領域、リングバッファ領域の記憶データを時間系列順に並び替えて保存する第１、第２のFFT演算対象データ保存領域を備えた記憶部、前記リングバッファ領域への新規データの書込み、並び替え、FFT演算などの処理を実行する演算処理部、優先順にタスクが実行されるように処理順序を管理する管理部を備え、FFT演算処理を複数のタスクに分割し、各タスクを優先度の高いタスクと低いタスクに分け、優先度の高いタスクが占有する時間を短縮する。
この場合、FFT演算処理を、(1) 1単位の新規データを前記リングバッファ領域に書込む第1タスク、(2) 該リングバッファ領域に保存されている最新の(N−1) 単位のデータを時間的に第２〜第N番目として並び替えて前記FFT演算対象データ保存領域に保存する第２タスク、（3） 発生した1単位の新規データを時間的に第１番目のデータとして前記FFT演算対象データ保存部の対応する位置に書込む第３タスク、(4) 該FFT演算対象データ保存部に保存されているＮ単位のデータにFFT処理を施す第4タスクに分割し、前記第１、第２タスクの優先度を低くし、前記第3、第4タスクの優先度を高くする。
【００１０】
本発明のFFT演算装置において、演算処理部は、(1)前サイクルの低優先度タスクの実行時、第１タスクにより前サイクルにおいて発生した1単位の新規データを前記リングバッファ領域に書込み、ついで、(2)第2タスクにより前記リングバッファ領域に保存されている最新の(N−1) 単位のデータを時間的に第２〜第N番目として並び替えて第１FFT演算対象データ保存領域に保存する。また、演算処理部は、現サイクルの高優先度タスクの実行時、(1)第３タスクにより、現サイクルにおいて発生した1単位の新規データを時間的に第１番目のデータとして前記第１FFT演算対象データ保存領域の対応する位置に書込み、第４タスクにより、該第１FFT演算対象データ保存領域に保存されているＮ単位のデータにFFT処理を施し、 (2)しかる後、現サイクルにおいて発生した前記1単位の新規データを前記リングバッファ領域に書込み、該リングバッファ領域に保存されている最新の(N−1) 単位のデータを時間的に第２〜第N番目として並び替えて前記第２のFFT演算対象データ保存領域に保存し、以後、上記処理をサイクル毎にFFT演算対象データ保存領域を切り替えながら実行する。
【発明の効果】
【００１１】
本発明によれば、FFT演算処理を複数のタスクに分割し、各タスクを優先度の高いタスクと低いタスクに分けたから、優先度の高いタスクが占有する時間を短縮することができる。
【発明を実施するための最良の形態】
【００１２】
従来技術(図５)におけるFFT演算処理を考察すると、リングバッファ２に書込まれている8単位（＝１０２４点）のデータを時間的に整列させてFFT演算対象データ保存部３にコピーする処理Ｂは優先度の高い実時間上の処理とする必要はない。このような処理は低優先タスクとして分離して後回しにして実行するようにすれば、実時間処理量が減少する。
本発明は、割り込み優先度を用いた複数タスク制御が可能なDSP等において、高優先度が与えられるFFT演算の実時間処理の処理量を減少することを目的とするもので、FFT演算において実時間処理上、後には回せない優先度の高い処理のみを先に処理し、その他の処理を優先度の低い割り込み処理として後回しにする。また、複数メモリ構成にしてデータ改変を防ぐようにしている。
図1の概略構成において、FFT演算装置は、最新のＮ単位(図では８単位=１０２４点)のデータが書込まれるリングバッファ領域１１、リングバッファ領域の記憶データを時間系列順に並び替えて保存する第１、第２のFFT演算対象データ保存領域１２，１３、リングバッファ領域１１への新規データの書込み、前記並び替え、FFT演算などの処理を実行する演算処理部１４、優先順にタスクが実行されるように処理順序を管理する管理部１５を備えている。FFT演算処理に際して、FFT演算処理を複数のタスクに分割し、各タスクを優先度の高いタスクと低いタスクに分け、優先度の高いタスクが占有する時間を短縮する。
【実施例１】
【００１３】
図１、図２は本発明のFFT演算装置の動作説明図であり、ｎ点（＝１２８点）のデータを1単位として最新のＮ（＝８）単位のデータが書込まれるリングバッファ部１１、リングバッファ部１１の記憶データを時間系列順に並び替えて保存する第１、第２のFFT演算対象データ保存部１２，１３、リングバッファ部１１への新規データの書込み／前記時間系列順の並び替え／FFT演算などの処理を実行する演算処理部１４、タスクの優先度を管理すると共に優先順にタスクが実行されるように処理順序を管理する管理部１５を備えている。リングバッファ１１には1単位（＝１２８点）の新規データが順番に上から1→2→…→８→1→2→…の順に上書きされ、常に最新のN（＝８）組のデータが保存されるようになっている。
【００１４】
また、本発明では、FFT演算処理を以下のＡ〜Ｄの４タスクに分割している。すなわち、
・1単位の新規データをリングバッファ部１１に書込む第1タスクＡ、
・該リングバッファ部１１に保存されている最新の(N−1)（＝７） 単位のデータを時間的に第２〜第８番目として並び替えてFFT演算対象データ保存領域１２，１３の一方に保存する第２タスクＢ、
・発生した1単位の新規データを時間的に第１番目のデータとしてFFT演算対象データ保存領域１２，１３に書込む第３タスクＣ、
・該FFT演算対象データ保存部１２，１３の一方に保存されているＮ（＝８）単位のデータにFFT処理を施し、処理結果を該演算対象データ保存部に上書きする第4タスクＤ、
に分割し、前記第１、第２タスクＡ，Ｂの優先度を低くし、前記第3、第4タスクＣ，Ｄの優先度を高くする。
【００１５】
演算処理部１４は管理部１５のタスク管理に基づいて各サイクルにおいて高優先順位のタスクから処理を実行する（図３のタイムチャート参照）。
すなわち、演算処理部１４は、前サイクルの低優先度タスクの実行時、第１タスクＡにより前サイクルにおいて発生した1単位の新規データ１００(第1図参照)をリングバッファ部１１に書込み、ついで、第2タスクＢによりリングバッファ部１１に保存されている最新の(N−1)（＝７）単位のデータを時間的に第２〜第８番目として並び替えて第１FFT演算対象データ保存部１２にコピーする。すなわち、演算処理部１４は、第２タスクＢにおいて、最新の７単位のデータを時間的に第２〜第８番目として順番に並び替え、第１FFT演算対象データ保存部１２の記憶領域２〜８にコピーする。第１FFT演算対象データ保存部１２の下の方ほど新しいデータがコピーされる。
【００１６】
そして、現サイクルになって次の1単位の新規データ１０１が入力する。これにより、演算処理部１４は、現サイクルの高優先度タスクの実行時、第３タスクＣにより該新規データ１０１を時間的に第１番目のデータとして前記第１FFT演算対象データ保存部１２の対応する位置(記憶領域１)に書込み、第４タスクにＤより、該第１FFT演算対象データ保存部１２に保存されているＮ単位のデータにFFT処理を施し、処理結果を該第１FFT演算対象データ保存部１２に上書きする。
しかる後、演算処理部１４は、現サイクルの低優先度タスクの実行時、第１タスクＡにより現サイクルにおいて発生した1単位の新規データ１０１をリングバッファ部１１に書込み(図2参照)、ついで、第2タスクＢによりリングバッファ部１１に保存されている最新の(N−1)（＝７）単位のデータを時間的に第２〜第８番目として並び替えて第２FFT演算対象データ保存部１３にコピーする。すなわち、演算処理部１４は、第２タスクＢにおいて、最新の７単位のデータを時間的に第２〜第８番目として順番に並び替え、第２FFT演算対象データ保存部１３の記憶領域２〜８にコピーする。
【００１７】
そして、次回のサイクルになって次の1単位の新規データ１０２が入力する。これにより、演算処理部１４は、次回サイクルの高優先度タスクの実行時、第３タスクＣにより該新規データ１０２を時間的に第１番目のデータとして前記第２FFT演算対象データ保存部１３の対応する位置(記憶領域１)に書込み、第４タスクにＤより、該第２FFT演算対象データ保存部１３に保存されているＮ単位のデータにFFT処理を施し、処理結果を該第２FFT演算対象データ保存部１３に上書きする。
以後、FFT演算対象データ保存部１２，１３を交互に使用しながら上記FFT演算を所定周期毎に繰返し実行する。
以上のように、FFT演算処理を複数のタスクに分割し、各タスクを優先度の高いタスクと低いタスクに分けたから、優先度の高いタスクが占有する時間を短縮することができる。
【００１８】
図４は本発明のFFT演算装置の構成図であり、図１、図２と同一部分には同一符号を付している。入力バッファ１０はn点(128点)で1単位の新規入力データを保存する。演算処理部１４は内部メモリ１４ａにタスク名に対応させてプログラムを保持しており、管理部１５から指示されたタスク名に応じたプログラムを用いてタスク処理を実行するようになっている。管理部（OS部）１５は、優先度とタスク名との対応を示す優先度・タスクテーブル１５ａを保持しており、優先度の最も高いタスクから順番にタスク処理が行なわれるように演算処理部１４を制御する。記憶部２１には、最新のＮ単位（８単位）のデータが書込まれるリングバッファ領域１１、リングバッファ領域の記憶データを時間系列順に並び替えて保存する第１、第２のFFT演算対象データ保存領域１２，１３が用意されている。各部の動作は図１〜図3で説明した通りである
本発明によれば、FFT演算における実時間処理を短縮でき、処理精度向上のためデータ長（現状N＝1024）を長くとるほど威力を発揮する。
【図面の簡単な説明】
【００１９】
【図１】本発明のFFT演算装置の第１動作説明図である。
【図２】本発明のFFT演算装置の第２動作説明図である。
【図３】本発明のタイムチャートである。
【図４】本発明のFFT演算装置の構成図である。
【図５】従来のFFT演算説明図である。
【図６】従来のタイムチャートである。
【符号の説明】
【００２０】
１１  リングバッファ部
１２，１３  第１、第２のFFT演算対象データ保存部
１４  演算処理部
１５  管理部
Ａ〜Ｄ：第１〜第４タスク
【図１】
2005235045.tif 000003
【図２】
2005235045.tif 000004
【図３】
2005235045.tif 000005
【図４】
2005235045.tif 000006
【図５】
2005235045.tif 000007
【図６】
2005235045.tif 000008