(57)【要約】    【課題】テイラー級数式を利用してサイン関数とコサイン関数を高速計算する。    【解決手段】  巡回式設定部１３は、サイン関数を計算するテイラー級数式を、既知数Ｑと、変数Ｘの２乗を乗算し、その結果をシフト数Ｓだけシフトしたのち、定数Ｋを加算したものを新たな既知数Ｑとする各項に共通な単一の巡回式（Ｑ＝Ｋ＋Ｓ・Ｘ2・Ｑ）に変形して設定する。調整部１４は、変数Ｘを、変数Ｘの変化範囲内で、変数Ｘの最大値が１となるように、定数Ｋは１以下となるように、シフト数Ｓを調整して準備する。巡回式実行部１５は、角度情報ｉを入力して変数Ｘに変換し、テイラー級数式の項の数分、巡回式を高次の項から低次の項に向けて順次実行して角度情報ｉのサイン関数sinθiを導出する。    【選択図】      図１
2005174077.tif 000002
【特許請求の範囲】
【請求項１】
サイン関数を計算するテイラー級数式を、既知数Ｑと、変数Ｘの２乗を乗算し、その結果をシフト数Ｓだけシフトしたのち、定数Ｋを加算したものを新たな既知数Ｑとする各項に共通な単一の巡回式に変形して設定する巡回式設定ステップと、
前記変数Ｘは、変数Ｘの変化範囲内で、変数Ｘの最大値が１となるように、前記定数Ｋは１以下となるように、前記シフト数Ｓを調整して準備する調整ステップと、
角度情報ｉを入力して前記変数Ｘに変換し、前記テイラー級数式の項の数分、前記巡回式を高次の項から低次の項に向けて順次実行して前記角度情報ｉのサイン関数を導出する巡回式実行ステップと、
を備えたことを特徴とする関数演算方法。
【請求項２】
請求項１記載の関数演算方法に於いて、前記巡回式実行ステップは、前記巡回式の既知数Ｑ、変数Ｘ、シフト後の中間値、定数Ｋは、最終的なビット数に保護ビット数を加えたビット数として演算処理を実行することを特徴とする関数演算方法。
【請求項３】
コサイン関数を計算するテイラー級数式を、既知数Ｑと、変数Ｘの２乗を乗算し、その結果をシフト数Ｓだけシフトしたのち、定数Ｋを加算したものを新たな既知数Ｑとする各項に共通な単一の巡回式に変形して設定する巡回式設定ステップと、
前記変数Ｘは、変数Ｘの変化範囲内で、変数Ｘの最大値が１となるように、前記定数Ｋは１以下となるように、前記シフト数Ｓを調整して準備する調整ステップと、
角度情報ｉを入力して前記変数Ｘに変換し、前記テイラー級数式の項の数分、前記巡回式を高次の項から低次の項に向けて順次実行して前記角度情報ｉのコサイン関数を導出する巡回式実行ステップと、
を備えたことを特徴とする関数演算方法。
【請求項４】
既知数Ｑと変数Ｘの２乗を乗算し、その結果をシフト数Ｓだけシフトした後に定数Ｋを加算したものを新たな既知数Ｑとするサイン関数を計算するテイラー級数式の変形により得られた巡回式を演算する巡回式演算部と、
入力した角度情報ｉを前記変数Ｘに変換すると共に、変数Ｘの変化範囲内で変数Ｘの最大値が１となるように前記シフト数Ｓを調整して出力する変換調整部と、
サイン関数を計算するテイラー級数式の各項に対応した定数Ｋと、前記各定数Ｋを１以下となるように調整したシフト数Ｓを予め求めて保持した定数テーブルと、
前記変換調整部から前記変数Ｘが出力された際に、予め定めたテイラー級数式の項数分、前記巡回式演算部を高次の項から低次の項に向けて前記テーブルの定数Ｋとシフト数Ｓの選択に基づき順次循環演算を実行させて前記角度情報ｉのサイン関数を導出する演算制御部と、
を備えたことを特徴とする関数演算回路。
【請求項５】
既知数Ｑと変数Ｘの２乗を乗算し、その結果をシフト数Ｓだけシフトした後に定数Ｋを加算したものを新たな既知数Ｑとするサイン関数を計算するテイラー級数式の変形により得られた巡回式を演算する巡回式演算部を各項ごとに設けてパイプライン接続したパイプライン演算部と、
入力した角度情報ｉを前記変数Ｘに変換すると共に、変数Ｘの変化範囲内で変数Ｘの最大値が１となるように前記シフト数Ｓを調整して前記パイプライン演算部に出力する変換調整部と、
サイン関数を計算するテイラー級数式の各項に対応した定数Ｋと、前記各定数Ｋを１以下となるように調整したシフト数Ｓを予め求めて保持した定数テーブルと、
前記変換調整部から前記変数Ｘが出力される毎に、前記パイプライン演算部の各巡回式演算部にテイラー級数式の対応する項の定数Ｋとシフト数Ｓを前記定数テーブルから選択して並列的に演算させ最終段の巡回式演算部の出力に基づき前記角度情報ｉのサイン関数を導出させるパイプライン制御部と、
を備えたことを特徴とする関数演算回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テイラー級数式によりサイン関数やコサイン関数を算出する関数算出方法及び関数演算回路に関し、特に、高速フーリエ変換の演算サイクルに同期してサイン関数とコサイン関数を算出して使用可能とする関数算出方法及び関数演算回路に関する。
【背景技術】
【０００２】
従来、コンピュータを用いた情報処理装置において、角度情報からサイン関数やコサイン関数を演算して使用することがある。特に、フーリエ変換等の信号処理をハードウェアで行うとき、角度情報をアドレスとして、サイン関数とコサイン関数の値を求めて演算処理に使用している。
【０００３】
図１８は、電波天文学の分野で高速フーリエ変換を行う従来システムの例である。専用のパラボラアンテナ２００で受信した電波や音声信号などのアナログ時系列信号
２０２は、ＡＤ変換装置２０４によってディジタル信号２０５に変換したのち、フーリエ変換装置２０６において高速フーリエ変換処理することで周波数成分２０８に分解して解析される。
【０００４】
このフーリエ変換装置２０６にあっては、角度情報をアドレスとし、アドレスに対応したサイン関数及びコサイン関数を演算パラメータに使用している。
【０００５】
図１９は従来のパイプライン型高速フーリエ変換装置の例である（特許文献１）。図１９において、従来の高速フーリエ変換装置は、並べ替え回路部２４２，２５２，２５６，２６０、バタフライ演算部２４４，２５４，２５８，２６２、及びひねり係数記憶回路部２６４，２６６，２６８，２７０で構成され、例えばバタフライ演算部２４４は、乗算器２４６と加算器２４８，２５０で構成される。
【０００６】
この高速フーリエ変換装置は、処理する高速フーリエ変換（ＦＦＴ）点数がＮである高速フーリエ変換を行う回路であり、入力データ点数ＮをＮ／Ｒ（但し、Ｒは基数）に分割し、分割された入力データ点数をシリアルに並べて、Ｒ入力のデータ並べ替え回路部と、ひねり係数乗算部と、バタフライ演算部とからなる高速フーリエ変換の基本回路に入力し、この基本回路を１段として、この段をＭ個（Ｍ＝ｌｏｇR Ｎ）直列に並べて、高速フーリエ変換を行うように構成している。
【０００７】
ここで高速フーリエ変換処理にあっては、アドレスを示す角度情報のサイン関数及びコサイン関数により導出されるひねり係数を予め求め、これを角度情報をアドレスとしてひねり係数記憶回路部２６４，２６６，２６８，２７０を構成するメモリに保持して処理を行う。
【０００８】
ところで、従来、アドレスを示す角度情報に対応したサイン関数及びコサイン関数を求める方法としては、図２０のルックアップ・テーブル２１０が知られている。ルックアップ・テーブル２１０は、角度情報をアドレスｉとしてサイン関数及びコサイン関数の値を保持したメモリ２１２で構成される。
【０００９】
また図１９の高速フーリエ変換装置では、予め算出したサイン関数及びコサイン関数の値からひねり係数を算出してメモリに記憶しているが、角度情報の分解能が高くなると、分解能に比例してひねり係数を保持するメモリの容量が増加する。
【００１０】
そこで、高速フーリエ演算の中でのサイン関数及びコサイン関数が高速に演算できれば、ひねり係数を算出して記憶しておくメモリが不要となり、角度分解能が向上してもメモリ容量が増加することはない。
【００１１】
このような高速フーリエ変換の演算速度に適合してサイン関数及びコサイン関数を算出する方法としては、テイラー級数式による演算処理を単純にハードウェアで実現した回路が考えられる。
【００１２】
この回路の演算原理は次のようになる。いま角度０°から ３６０°をＮ等分し、第i番目の角度θi を次式で表す。
【００１３】
【数１】
2005174077.tif 000003
このｉ番目の角度θｉに対するサインとコサインのテイラー級数を示すと次のようになる。
【００１４】
【数２】
2005174077.tif 000004
【００１５】
図２１は、sinθをテイラー級数式から求める単純なハードウェアによる回路であり、乗算器２１８、シフタ２２０、乗算器２２２，２２４，２２６，２３０，２３２，２３６，２３８及び加算器２２８，２３４，２４０によって第４項までのテイラー級数式の演算を実現している。この回路にあっては、例えば４個の項を有するテイラー級数であれば、約１０クロックサイクルでサイン関数の値を算出することができる。
【００１６】
更に、三角関数を含む超越関数を迅速に計算する方法として、テイラー級数を並列処理する装置がある（特許文献２）。
【００１７】
この装置は、テイラー級数を２つの部分級数に分けて並列処理した後に２つの結果を減算する並列処理を行っている。例えば１０個の項を有するテイラー級数について、半分の５個の項をもつ部分級数に分解して並列処理し、約１０クロックサイクルでサイン関数又はコサイン関数を算出することができる。また各並列処理部は、巡回型に変形して処理しており、且つ浮動小数点演算を前提にしている。
【特許文献１】特開平０６−０１９９５５号公報
【特許文献２】特開平１０−２１４１７６号公報
【発明の開示】
【発明が解決しようとする課題】
【００１８】
しかしながら、このような従来のテイラー級数式を使用してサイン関数及びコサイン関数を求める方法にあっては、次の問題がある。
【００１９】
まず図２１に示したようにテイラー級数式の各項を単純にハードウェアの演算回路で実現する場合にあっては、項数に応じてハードウェア規模が増加し、また演算に要するクロックサイクルも増加し、高速フーリエ変換に適用した場合に全体的な演算速度を低下させる問題がある。
【００２０】
一方、テイラー級数を２つの部分級数に分けて並列的に計算する方法にあっては、並列化により演算処理を高速化できるが、ハードウェアの規模は部分級数に分けない場合と同等であり、回路規模が大きく、またソフトウェアで実現する場合には、浮動小数点演算の並列処理となるために処理負担が大きいという問題がある。
【００２１】
本発明は、テイラー級数式を利用してサイン関数とコサイン関数を高速計算する関数演算方法及び関数演算回路を提供する。
【００２２】
また本発明は、ルックアップ・テーブル・メモリを使用することなく、テイラー級数式を利用してサイン関数とコサイン関数を高速計算して高速フーリエ変換のひねり係数の計算に使用する関数演算方法及び装置を提供することを目的とする。
【課題を解決するための手段】
【００２３】
図１は本発明の原理説明図である。本発明は、テイラー級数式を用いてサイン関数sinθiを演算する関数演算方法であり、
巡回式設定部１３により、サイン関数を計算するテイラー級数式を、既知数Ｑと、変数Ｘの２乗を乗算し、その結果をシフト数Ｓだけシフトしたのち、定数Ｋを加算したものを新たな既知数Ｑとする各項に共通な単一の巡回式（Ｑ＝Ｋ＋Ｓ・Ｘ2・Ｑ）に変形して設定する巡回式設定ステップと、
調整部１４により、変数Ｘは、変数Ｘの変化範囲内で、変数Ｘの最大値が１となるように、定数Ｋは１以下となるように、シフト数Ｓを調整して準備する調整ステップと、
巡回式実行部１５により、角度情報ｉを入力して変数Ｘに変換し、テイラー級数式の項の数分、巡回式を高次の項から低次の項に向けて順次実行して角度情報ｉのサイン関数を導出する巡回式実行ステップと、
を備えたことを特徴とする。
【００２４】
ここで巡回式実行ステップは、巡回式の既知数Ｑ、変数Ｘ、シフト後の中間値、定数Ｋは、最終的なビット数に保護ビット数を加えたビット数として演算処理を実行する。
【００２５】
また本発明は、テイラー級数式を用いてコサイン関数cosθiを演算する関数演算方法であり、
巡回式設定部１３により、コサイン関数を計算するテイラー級数式を、既知数Ｑと、変数Ｘの２乗を乗算し、その結果をシフト数Ｓだけシフトしたのち、定数Ｋを加算したものを新たな既知数Ｑとする各項に共通な単一の巡回式（Ｑ＝Ｋ＋Ｓ・Ｘ2・Ｑ）に変形して設定する巡回式設定ステップと、
調整部１４により、変数Ｘは、変数Ｘの変化範囲内で、変数Ｘの最大値が１となるように、定数Ｋは１以下となるように、シフト数Ｓを調整して準備する調整ステップと、
巡回式実行部１５により、角度情報ｉを入力して変数Ｘに変換し、テイラー級数式の項の数分、巡回式を高次の項から低次の項に向けて順次実行して角度情報ｉのコサイン関数を導出する巡回式実行ステップと、
を備えたことを特徴とする。
【００２６】
この場合にも、巡回式実行ステップは、巡回式の既知数Ｑ、変数Ｘ、シフト後の中間値、定数Ｋは、最終的なビット数に保護ビット数を加えたビット数として演算処理を実行することを特徴とする。
【００２７】
本発明は、テイラー級数式を用いてサイン関数sinθiを演算する関数演算回路を提供する。この関数演算回路は、既知数Ｑと変数Ｘの２乗を乗算し、その結果をシフト数Ｓだけシフトした後に定数Ｋを加算したものを新たな既知数Ｑとするサイン関数を計算するテイラー級数式の変形により得られた巡回式（Ｑ＝Ｋ＋Ｓ・Ｘ2・Ｑ）を演算する巡回式演算部と、入力した角度情報ｉを変数Ｘに変換すると共に、変数Ｘの変化範囲内で変数Ｘの最大値が１となるようにシフト数Ｓを調整して出力する変換調整部と、サイン関数を計算するテイラー級数式の各項に対応した定数Ｋと、各定数Ｋを１以下となるように調整したシフト数Ｓを予め求めて保持した定数テーブルと、変換調整部から変数Ｘが出力された際に、予め定めたテイラー級数式の項数分、巡回式演算部を高次の項から低次の項に向けてテーブルの定数Ｋとシフト数Ｓの選択に基づき順次循環演算を実行させて角度情報ｉのサイン関数を導出する演算制御部とを備えたことを特徴とする。
【００２８】
ここで、巡回式演算部は、巡回式の既知数Ｑ、変数Ｘ、シフト後の中間値、定数Ｋは、最終的なビット数に保護ビット数を加えたビット数として演算処理を実行する。
【００２９】
本発明は、テイラー級数式を用いてコサイン関数ｃｏｓθiを演算する関数演算回路を提供する。この関数演算回路は、既知数Ｑと変数Ｘの２乗を乗算し、その結果をシフト数Ｓだけシフトした後に定数Ｋを加算したものを新たな既知数Ｑとするコサイン関数を計算するテイラー級数式の変形により得られた巡回式（Ｑ＝Ｋ＋Ｓ・Ｘ2・Ｑ）を演算する巡回式演算部と、入力した角度情報ｉを変数Ｘに変換すると共に、変数Ｘの変化範囲内で変数Ｘの最大値が１となるようにシフト数Ｓを調整して出力する変換調整部と、コサイン関数を計算するテイラー級数式の各項に対応した定数Ｋと、各定数Ｋを１以下となるように調整したシフト数Ｓを予め求めて保持した定数テーブルと、変換調整部から前記変数Ｘが出力された際に、予め定めたテイラー級数式の項数分、巡回式演算部を高次の項から低次の項に向けてテーブルの定数Ｋとシフト数Ｓの選択に基づき順次循環演算を実行させて角度情報ｉのコサイン関数を導出する演算制御部とを備えたことを特徴とする。
【００３０】
ここで、巡回式演算部は、前記巡回式の既知数Ｑ、変数Ｘ、シフト後の中間値、定数Ｋは、最終的なビット数に保護ビット数を加えたビット数として演算処理を実行する。
【００３１】
本発明は、テイラー級数式を用いてサイン関数sinθiをパイプライン演算する関数演算回路を提供する。この関数演算回路は、既知数Ｑと変数Ｘの２乗を乗算し、その結果をシフト数Ｓだけシフトした後に定数Ｋを加算したものを新たな既知数Ｑとするサイン関数を計算するテイラー級数式の変形により得られた巡回式（Ｑ＝Ｋ＋Ｓ・Ｘ2・Ｑ）を演算する巡回式演算部を各項ごとに設けてパイプライン接続したパイプライン演算部と、入力した角度情報ｉを変数Ｘに変換すると共に、変数Ｘの変化範囲内で変数Ｘの最大値が１となるようにシフト数Ｓを調整してパイプライン演算部に出力する変換調整部と、サイン関数を計算するテイラー級数式の各項に対応した定数Ｋと、各定数Ｋを１以下となるように調整したシフト数Ｓを予め求めて保持した定数テーブルと、記変換調整部から変数Ｘが出力される毎に、パイプライン演算部の各巡回式演算部にテイラー級数式の対応する項の定数Ｋとシフト数Ｓを定数テーブルから選択して並列的に演算させ最終段の巡回式演算部の出力に基づき角度情報ｉのサイン関数を導出させるパイプライン制御部とを備えたことを特徴とする。
【００３２】
ここで、パイプライン演算部の各巡回式演算部は、巡回式の既知数Ｑ、変数Ｘ、シフト後の中間値、定数Ｋは、最終的なビット数に保護ビット数を加えたビット数として演算処理を実行する。
【００３３】
本発明は、テイラー級数式を用いてコサイン関数cosθiをパイプライン演算する関数演算回路を提供する。この関数演算回路は、既知数Ｑと変数Ｘの２乗を乗算し、その結果をシフト数Ｓだけシフトした後に定数Ｋを加算したものを新たな既知数Ｑとするコサイン関数を計算するテイラー級数式の変形により得られた巡回式（Ｑ＝Ｋ＋Ｓ・Ｘ2・Ｑ）を演算する巡回式演算部を各項ごとに設けてパイプライン接続したパイプライン演算部と、入力した角度情報ｉを変数Ｘに変換すると共に、変数Ｘの変化範囲内で変数Ｘの最大値が１となるようにシフト数Ｓを調整してパイプライン演算部に出力する変換調整部と、コサイン関数を計算するテイラー級数式の各項に対応した定数Ｋと、各定数Ｋを１以下となるように調整したシフト数Ｓを予め求めて保持した定数テーブルと、変換調整部から変数Ｘが出力される毎に、パイプライン演算部の各巡回式演算部にテイラー級数式の対応する項の定数Ｋとシフト数Ｓを定数テーブルから選択して並列的に演算させ最終段の巡回式演算部の出力に基づき角度情報ｉのコサイン関数を導出させるパイプライン制御部とを備えたことを特徴とする。
【００３４】
この場合も、パイプライン演算部の各巡回式演算部は、巡回式の既知数Ｑ、変数Ｘ、シフト後の中間値、定数Ｋは、最終的なビット数に保護ビット数を加えたビット数として演算処理を実行する。
【００３５】
本発明は、高速フーリエ変換装置に好適なサイン関数及びコサイン関数をパイプライン演算する関数演算回路を提供する。この関数演算回路は、サイン関数演算回路とコサイン関数演算回路を有する。
【００３６】
サイン関数演算回路は、既知数Ｑと変数Ｘの２乗を乗算し、その結果をシフト数Ｓだけシフトした後に定数Ｋを加算したものを新たな既知数Ｑとするサイン関数を計算するテイラー級数式の変形により得られた巡回式（Ｑ＝Ｋ＋Ｓ・Ｘ2・Ｑ）を演算する巡回式演算部を各項ごとに設けてパイプライン接続したパイプライン演算部と、入力した角度情報ｉを変数Ｘに変換すると共に、変数Ｘの変化範囲内で変数Ｘの最大値が１となるように前記シフト数Ｓを調整してパイプライン演算部に出力する変換調整部と、サイン関数を計算するテイラー級数式の各項に対応した定数Ｋと、各定数Ｋを１以下となるように調整したシフト数Ｓを予め求めて保持した定数テーブルと、変換調整部から前記変数Ｘが出力される毎に、パイプライン演算部の各巡回式演算部にテイラー級数式の対応する項の定数Ｋとシフト数Ｓを定数テーブルから選択して並列的に演算させ最終段の巡回式演算部の出力に基づき前記角度情報ｉのサイン関数を導出させるパイプライン制御部とを備える。
【００３７】
またコサイン関数演算回路は、既知数Ｑと変数Ｘの２乗を乗算し、その結果をシフト数Ｓだけシフトした後に定数Ｋを加算したものを新たな既知数Ｑとするコサイン関数を計算するテイラー級数式の変形により得られた巡回式（Ｑ＝Ｋ＋Ｓ・Ｘ2・Ｑ）を演算する巡回式演算部を各項ごとに設けてパイプライン接続したパイプライン演算部と、入力した角度情報ｉを変数Ｘに変換すると共に、変数Ｘの変化範囲内で変数Ｘの最大値が１となるようにシフト数Ｓを調整してパイプライン演算部に出力する変換調整部と、コサイン関数を計算するテイラー級数式の各項に対応した定数Ｋと、各定数Ｋを１以下となるように調整したシフト数Ｓを予め求めて保持した定数テーブルと、変換調整部から変数Ｘが出力される毎に、パイプライン演算部の各巡回式演算部にテイラー級数式の対応する項の定数Ｋとシフト数Ｓを定数テーブルから選択して並列的に演算させ最終段の巡回式演算部の出力に基づき角度情報ｉのコサイン関数を導出させるパイプライン制御部とを備える。
【００３８】
ここで、各パイプライン演算部の各巡回式演算部は、巡回式の既知数Ｑ、変数Ｘ、シフト後の中間値、定数Ｋは、最終的なビット数に保護ビット数を加えたビット数として演算処理を実行する。
【００３９】
この関数演算回路は、入力情報ｉのサイン関数およびコサイン関数に基づき、基数２のパイプライン型高速フーリエ変換装置に設けた複数のバタフライ段のひねり係数値を計算させる。
【００４０】
更に本発明は、サイン関数やコサイン関数を含む一般的な超越関数、即ち三角関数、対数関数、指数関数などのように、多項式で表せない関数として定義される超越関数（ｔｒａｎｓｃｅｎｄｅｎｔａｌ  ｆｕｎｃｔｉｏｎ）をテイラー級数式を用いて演算する関数演算方法を提供する。
【００４１】
この関数演算方法は、
巡回式設定部により、超越関数を計算するテイラー級数式を、既知数Ｑと、変数Ｘを乗算し、その結果をシフト数Ｓだけシフトしたのち、定数Ｋを加算したものを新たな既知数Ｑとする各項に共通な単一の巡回式（Ｑ＝Ｋ＋Ｓ・Ｘ・Ｑ）に変形して設定する巡回式設定ステップと、
調整部により、変数Ｘは、変数Ｘの変化範囲内で、変数Ｘの最大値が１となるように、前記定数Ｋは１以下となるように、シフト数Ｓを調整して準備する調整ステップと、
巡回式実行部により、入力情報を前記変数Ｘに変換し、前記テイラー級数式の項の数分、前記巡回式を高次の項から低次の項に向けて順次実行して前記入力情報の超越関数を導出する巡回式実行ステップと、
を備えたことを特徴とする。
【発明の効果】
【００４２】
本発明によれば、テイラー級数式を各項に共通な１個の巡回式に変形することで、高次から低次に向かって行う演算内容を各項につき共通化でき、巡回計算を行う場合、パイプライン計算を行う場合のいずれについても、演算アルゴリズムを単純化し、ソフトウェアでは処理負担を低減し、ハードウェアでは回路構成を簡単にし、いずれも高速化できる。
【００４３】
またビットのシフト操作を導入することで、巡回計算毎に少ない最低限の同じ演算ビット数でありながら、必要な演算ビット精度を確保できる。この結果、浮動小数点演算や、ビット数の多い演算回路を使用することなく、少ないビット数の固定小数点演算回路を使用でき、少ないハードウェアによる関数計算を容易に実現できる。
【００４４】
また本発明のパイプライン型の関数演算回路を高速フーリエ変換装置に適用することで、ひねり係数をリアルタイムで演算でき、従来のひねり係数を保持するメモリが不要となり、フーリエ変換点数が多くなった場合に、ひねり係数メモリを使用するよりも少ないハードウェアで、精度良くひねり係数を生成することができる。
【００４５】
この結果、従来のフーリエ変換装置は、バタフライ演算回路等をＬＳＩに集積し、ひねり係数は外部メモリを使用して構成していたが、本発明によるパイプライン型の関数演算回路を使うことで、ＬＳＩだけで比較的容易に構成できるようになる。
【発明を実施するための最良の形態】
【００４６】
図２は、コンピュータのプログラムにより実現される本発明による関数演算処理の機能構成のブロック図である。
【００４７】
図２において、本発明の関数演算処理システムは角度検出部１０とコンピュータ１１で構成される。角度検出部１０としては例えば図１８に示したようなパラボナアンテナに設けられ、アンテナの角度利用情報としてアドレスｉを出力する。角度検出部１０としては例えばロータリエンコーダーなどが使用されており、０度〜３６０度をＮ等分したアドレスｉを出力するものでこのアドレスｉの角度θｉを表す。
【００４８】
コンピュータ１１には角度検出部１０からのアドレスｉを入力してｓｉｎθｉ及びｃｏｓθｉのサイン関数及びコサイン関数を演算する関数演算処理部１２が設けられる。関数演算処理部１２は巡回式設定部１３、調整部１４及び巡回式実行部１５で構成され、さらに巡回式実行部１５で使用する定数などを予め格納した定数テーブル１６を設けている。
【００４９】
巡回式設定部１３はサイン関数及びコサイン関数を計算するテイラー級数式をテイラー級数式の各項に共通な単一の巡回式に変形して巡回式実行部１５にセットする。この巡回式は次式で与えられる。
【００５０】
【数３】
2005174077.tif 000005
巡回式（１）はテイラー級数式を既知数Ｑ（ｄ＋２）と変数Ｘｉの２乗を乗算し、その結果をシフト数Ｓ（ｄ＋２）だけシフト＋）とする。このテイラー級数式から巡回式の変形処理は後の説明で明らかにする。
【００５１】
調整部１４は（１）式の巡回式について変数Ｘｉが変数Ｘｉの変換範囲内で最大値が１となるように、また定数Ｋｄが１以下となるようにシフト数Ｓ（ｄ−２）を調整し、これを定数テーブル１６に予め準備する。
【００５２】
ここでサイン関数とコサイン関数について角度０°〜４５°まで計算する場合と０°〜９０°までを計算する場合の定数テーブル１６に格納している定数Ｋｄとシフト数Ｓｄの例を図３に示している。
【００５３】
図３の定数テーブル１６は、サイン関数及びコサイン関数のそれぞれについてテイラー級数式のパラメータｄ及び（２π）d／ｄ！に対応して（１）式の巡回式における定数Ｋｄの値とシフト数Ｓｄを示し、シフト数Ｓｄについては４５°まで計算する場合と９０°まで計算する場合に分けて格納している。
【００５４】
図４は、図２のコンピュータ１１のプログラム制御により実現される本発明による関数演算処理部１２の処理手順のフローチャートである。
【００５５】
この関数演算処理にあっては、ステップＳ１で前記（１）式の巡回式の設定処理を行なった後、ステップＳ２で変数Ｘｉ及び定数Ｋｄを最適化するためのシフト数Ｓｄの調整を行なうことにより、図３に示したようなテーブル１６を作成する。
【００５６】
ステップＳ１，Ｓ２の準備処理が終了したならばステップＳ３で角度検出部１０からの角度情報アドレスｉの入力をチェックしており、アドレスｉの入力があるとステップＳ４に進み角度情報としてのアドレスｉを変数Ｘｉに変換し、テイラー級数式の項の数分巡回式を高次の項から低次の項に向けて順次実行してアドレスｉの角度θｉのサイン関数、ｓｉｎθｉを計算する。
【００５７】
ここで前記（１）式の巡回式のテイラー級数式からの変形処理について説明する。まず本発明の関数演算処理にあっては、サイン関数及びコサイン関数について角度４５°まで計算する場合と角度９０°まで計算する場合とに分けている。
【００５８】
ここで角度が９０°〜１８０°の範囲のサイン関数及びコサイン関数を、本発明による演算結果としての角度０°〜９０°のサイン関数から簡単に求めることができ、本発明による関数演算の必要はない。
【００５９】
即ち、三角関数の公式
【００６０】
【数４】
2005174077.tif 000006
から導くことができる。この三角関数の公式を変形すると次式のようになる。
【００６１】
【数５】
2005174077.tif 000007
例えば角度１２０°の場合には９０°＋β＝１２０°であるからβ＝３０°となる。従って
ｃｏｓ１２０°＝−ｓｉｎ３０°
ｓｉｎ３０°＝ｃｏｓ３０°
として求めることができる。
【００６２】
また角度が４５°〜９０°の範囲のサイン関数及びコサイン関数も、本発明の関数演算処理により求められる０°〜４５°のサイン関数及びコサイン関数から簡単に求めることも簡単にできる。即ち、三角関数の公式である次式から導くことができる。
【００６３】
【数６】
2005174077.tif 000008
この三角関数の公式を変形すると次のようになる。
【００６４】
【数７】
2005174077.tif 000009
例えば角度６０°のサイン関数及びコサイン関数を求める場合には、９０°―β＝６０°であるから、β＝３０°であり、従って
ｃｏｓ６０°＝ｓｉｎ３０°
ｓｉｎ３０°＝ｃｏｓ３０°
が求まる。
【００６５】
ここでは角度が０°〜４５°までについてサイン関数及びコサイン関数を求める場合についての巡回式への変形を説明する。
【００６６】
まず角度アドレスｉは角度０°〜４５°の範囲であることから、アドレスの値としては０〜Ｎ／８まで変化する。ここでアドレスｉは角度０°〜３６０°をＮ等分した場合の第ｎ番目の角度θｉをあらわすことから次式で与えられる。
【００６７】
【数８】
2005174077.tif 000010
そこでこの角度θｉを示す（２）式を用いてｓｉｎθｉを求めるテイラー級数式を展開すると次のようになる。
【００６８】
【数９】
2005174077.tif 000011
このテイラー級数式の展開において１行目は本来のテイラー級数式であり、２行目はこれに（２）式のθｉの値を代入している。３〜４行目の式はＮ＝８（Ｎ／８）を代入して２のべき乗に変換している。さらに５〜６行目はカッコについて変数部分と定数部分をわけるようにしている。
【００６９】
ここで本発明にあっては（１）式の巡回式における定数Ｋｄは１以下で出来るだけ近い値となるようにしている。例えば前記のテイラー級数式の変形式における５〜６行目の第１項の２π＝６．２８は２3＝８で除算するとＫ１＝０．７８５とすることができる。
【００７０】
即ち２π＝６．２８を２2＝４で除算するとＫ１＝１．５７となって１を超えてしまうことからこれは採用できず、一方２4＝１６で除算するとＫ１＝０．３９２５と１から遠い値となり、従って２3＝８で除算することで定数Ｋ１として１以下で出来るだけ１に近い値にすることができる。
【００７１】
そこで前記のテイラー級数式の変形式について定数をまとめると、次式のようになる。
【００７２】
【数１０】
2005174077.tif 000012
この式について定数Ｋ１，Ｋ３，Ｋ５，Ｋ７を次のように定義する。
【００７３】
【数１１】
2005174077.tif 000013
そこで定数Ｋ１，Ｋ３，Ｋ５，Ｋ７を用いて変形すると次式が得られる。
【００７４】
【数１２】
2005174077.tif 000014
この変形式にあっては、１行目は定数Ｋ１，Ｋ３，Ｋ５，Ｋ７を代入したもので、２行目は括弧内について｛ｉ／（Ｎ／８）｝を括りだしている。３〜４行目については右側の大括弧内の第１項、２項につき２-3で括っている。５〜６行目については更にその中で２項目以降２-5で括っている。最終的に７行目にあっては３項目を２-6で括っている。
【００７５】
ここで上記の変形式について変数Ｘｉとして
【００７６】
【数１３】
2005174077.tif 000015
を定義し、更にビットシフト数Ｓ３，Ｓ５，Ｓ７として
【００７７】
【数１４】
2005174077.tif 000016
を定義し、更に既知数としてＱ７，Ｑ５，Ｑ３，Ｑ１を
【００７８】
【数１５】
2005174077.tif 000017
とすると次式を得ることができる。
【００７９】
【数１６】
2005174077.tif 000018
この変形式におけるサイン関数の巡回部分はｄ＝１，３，５，７・・・・の値をとっており、前記（１）式と同じ次式が与えられる。
【００８０】
【数１７】
2005174077.tif 000019
このため、この巡回式を用いたｓｉｎθ単位の計算はｄ＝７，５，３，１の順番に巡回式を順次計算して、Ｑ７，Ｑ５，Ｑ３、Ｑ１を順次求め、最終的にＸｉと乗算することでサイン関数であるｓｉｎθｉを求めることができる。尚、初期値としてのＱ７は定数Ｋ７を使用する。
【００８１】
同様にして、コサイン関数についてのテイラー級数式から巡回式への変形を説明すると次のようになる。まずｃｏｓθｉのテイラー級数式に前記（２）式を代入することによる変形式は次のようになる。
【００８２】
【数１８】
2005174077.tif 000020
続いて定数Ｋ０，Ｋ２，Ｋ４，Ｋ６を
【００８３】
【数１９】
2005174077.tif 000021
として変形すると、次式が与えられる。
【００８４】
【数２０】
2005174077.tif 000022
ここで変数Ｘｉを
【００８５】
【数２１】
2005174077.tif 000023
とし、またシフト数Ｓ２，Ｓ４，Ｓ６を
【００８６】
【数２２】
2005174077.tif 000024
とし、更に既知数Ｑ６，Ｑ４，Ｑ２，Ｑ０を
【００８７】
【数２３】
2005174077.tif 000025
とすると次式に変形することができる。
【００８８】
【数２４】
2005174077.tif 000026
このテイラー級数式の変形式におけるコサイン関数の巡回部分はｄ＝０，２，４，６・・・の値をとり、各項に共通な巡回式は前記（１）式と同じ
【００８９】
【数２５】
2005174077.tif 000027
となる。
【００９０】
図５は、図２の巡回式実行部１５におけるサイン関数演算処理のフローチャートであり、次の処理手順となる。
ステップＳ１：角度を示すアドレスｉを入力する。
ステップＳ２：アドレスｉにより０°〜４５°の算出であることから変数ＸｉをＸｉ＝ｉ／（Ｎ／８）として最大値が１となるように正規化する。
ステップＳ３：変数Ｘｉの二乗を算出する。
ステップＳ４：テイラー級数式の打ち切りを示す項数となるｄ＝７を設定し、図３の定数テーブル１６から定数Ｋ（７）を求め、これを既知数Ｑ（７）に代入する。
ステップＳ５：ｄをｄ＝ｄ−２とする。
ステップＳ６：ｄが１以上か否かチェックする。１以上であればステップＳ７に進み、１未満であればステップＳ８に進む。
ステップＳ７：巡回式をｄ＝５，３，１の順番にステップＳ５〜Ｓ７のルートを通じて既知数Ｑ５，Ｑ３，Ｑ１を順次演算する。
ステップＳ８：ｄが１未満となって巡回式の演算の終了した場合であり、そこで既知数Ｑ（１）に変数Ｘｉを乗ずることでｓｉｎθｉを算出する。
ステップＳ９：算出したｓｉｎθｉの値を出力する。
【００９１】
図６は、図２の本発明のコサイン関数演算処理のフローチャートである。このコサイン関数の演算処理は次のようになる。
ステップＳ１：角度を示すアドレスｉを入力する。
ステップＳ２：アドレスｉを（Ｎ／８）で除算して最大値を１に正規化した変数Ｘｉを求める。
ステップＳ３：変数Ｘｉの二乗を求める。
ステップＳ４：ｄ＝６を設定し、Ｑ（６）に図３のコサイン側のｔ＝６から取り出した定数Ｋ（ｄ）を代入する。
ステップＳ５：ｄ＝ｄ−２を計算する。
ステップＳ６：ｄが０以上か否かチェックする。０以上であればステップＳ７に進み、マイナスであればステップＳ８に進む。
ステップＳ７：ｄ＝４，２，０につきステップＳ５〜Ｓ７のルート処理により巡回式を順次計算し、Ｑ（４），Ｑ（２）及びＱ（０）を順次求める。
ステップＳ８：ｄがマイナスとなって巡回式の演算が終了した場合であり、この場合にはステップＳ５〜Ｓ７で最後に求めたＱ（０）をｃｏｓθｉとする。
ステップＳ９：演算処理により求めたｃｏｓθｉの値を出力する。
【００９２】
図７は、ハードウェアにより実現される本発明の関数演算回路のブロック図であり、図２の実施形態に示したコンピュータによるプログラム制御で実現される本発明の関数演算をハードウェアで実現している。
【００９３】
図７において、本発明の関数演算装置は角度検出部１０と任意の装置１８で構成され、装置１８には本発明による関数演算回路１９が設けられている。関数演算回路１９は演算制御部２０、定数テーブル２２、変換調整部２４及び巡回式演算部２５で構成される。
【００９４】
定数テーブル２２には図３の定数テーブル１６における例えば４５°までの計算に必要なシフト数Ｓｄと定数Ｋｄがサイン及びコサインによりｄのうちの必要な値、例えばｓｉｎについてはｄ＝１，３，５，７についてはｃｏｓについてはｄ＝０，２，４，６について格納格されている。
【００９５】
変換調整部２４は角度検出部１０から入力したアドレスｉを変数Ｘｉに変換すると共に変数Ｘｉの変換範囲内で最大値が１となるようにシフト数を調整して出力する。
【００９６】
巡回式演算部２５は既知数ｄと変数Ｘｉの２乗を乗算し、その結果をシフト数Ｓｄだけシフトした後に定数Ｋｄを加算したものを新たな既知数Ｑｄとするサイン関数もしくはコサイン関数を計算するテイラー級数式の変形により得られた巡回式を演算する。
【００９７】
演算制御部２０は変換調整部２４から変数Ｘｉが出力された際に予め定められたテイラー級数式の項数分、巡回式演算部２５を高次の項から低次の項に向けて定数テーブル２２の定数Ｋｄとシフト数Ｓｄの選択に基づき順次巡回演算を実行させ、アドレスｉのサイン関数ｓｉｎθｉ及びコサイン関数ｃｏｓθｉを算出させる。
【００９８】
図８は、図７で用いるサイン関数演算回路の回路ブロック図である。図８において、サイン関数演算回路２５−１は、変換シフト回路２６、乗算器２７，３０，４０、加算器３４、選択回路３５，３６，３８で構成され、乗算器３０、シフト回路３２及び加算器３４によって、巡回式の演算を繰り返す巡回処理部２８を構成している。このサイン関数演算回路２５−１に対しては演算制御部２０−１が設けられている。
【００９９】
変換シフト回路２６は、入力したアドレスｉを（Ｎ／８）分だけビットシフトさせることで、Ｘｉ＝ｉ／（Ｎ／８）の変数に変換する。乗算器２７は、変数Ｘｉ2 を求める。巡回処理部２８は、前記（１）式の巡回式におけるＸｉ2 と、Ｑ（ｄ＋２）の乗算を行う。シフト回路３２は（１）式におけるシフト数Ｓ（ｄ＋２）のシフトを行う。
【０１００】
加算器３４はシフト回路３２の結果を定数Ｋｄに加える加算を行う。加算器３４の出力は選択回路３５に帰還されている。選択回路３５は乗算器３０における最初の乗算で定数Ｋ７を選択し、次の乗算で加算器３４から出力された既知数Ｑ５を選択し、３番目の演算で加算器３４から出力された既知数Ｑ３を選択する。
【０１０１】
また選択回路３６は、最初のシフトでシフト数Ｓ７＝２-6 を選択し、２番目のシフト動作でＳ５＝２-5 を選択し、３番目のシフト動作でＳ３＝２-3 を選択する。更に選択回路３８は、最初の加算で定数Ｋ５を選択し、２番目の加算で定数Ｋ３を選択し、３番目の加算で定数Ｋ１を選択する。
【０１０２】
乗算器４０は、巡回処理部２８でｄ＝５，３，１となる３回の巡回処理が終了した後に出力される既知数Ｑ１と、変換シフト回路２６より出力されている変数Ｘｉを乗算し、この乗算結果をｓｉｎθｉとして出力する。
【０１０３】
このような本発明のサイン関数演算回路２５−１にあっては、巡回処理部２８を繰り返し使うことにより乗算５回と加算３回の演算処理で済む。これに対し、図２１に示した従来例の場合には乗算８回と加算３回が必要であり、本発明による巡回式を用いたサイン関数演算回路２５−１の方が少ない演算処理で結果を出すことができる。
【０１０４】
また乗算回路や加算回路に比べ、選択回路やシフト回路はハードウェアとしての回路規模が小さいため、従来のハードウェアに比べ本発明によるサイン関数演算回路２５−１の方がハードウェア規模を小さく簡単に構成することができる。
【０１０５】
図９は、図７におけるコサイン関数演算回路２５−２の回路ブロック図である。このコサイン関数演算回路２５−２は、変換シフト回路４５、乗算器４６，５０、シフト回路５２、加算器５４及び選択回路５５，５６，５８で構成される。
【０１０６】
このうち、乗算器５０、シフト回路５２及び加算器５４によって巡回処理部４８が構成されている。また、コサイン関数演算回路２５−２の演算処理を制御する演算制御部２０−２が設けられる。
【０１０７】
コサイン関数演算回路２５−２は、アドレスｉが入力すると、変換シフト回路４５による（Ｎ／８）のシフト処理により変数Ｘｉ＝ｉ／（Ｎ／８）に変換した後、乗算器４６で変数Ｘｉ2 を求める。乗算器４６の出力は巡回処理部４８の乗算器５０に入力され、選択回路５５からの既知数Ｑ（ｄ＋２）との乗算が行われる。
【０１０８】
乗算器５０の出力は、シフト回路５２で選択回路５６からのシフト数Ｓ（ｄ＋２）に基づいてシフトされる。シフト回路５２の出力は、加算器５４で選択回路５８から選択された定数Ｋｄと加算される。加算器５４の出力は選択回路５５の他方に入力され、且つ最終的な演算出力となる。
【０１０９】
演算制御部２０−２は、巡回処理部４８において前記（１）式の巡回演算に続いてｄ＝６，４，２，０となるように巡回演算を行う。即ち、乗算器５０の１回目の乗算にあっては、選択回路５５がｄ＝６に対応した定数Ｋ６を選択して乗算し、続いてシフト回路５２に対し選択回路５６がシフト数Ｓ６＝２-6 を選択してシフトを行い、加算器５４に対しては選択回路５８が定数Ｋ４を選択して既知数Ｑ４の加算出力を行う。
【０１１０】
この加算出力Ｑ４は選択回路５５に帰還入力され、２回目の乗算器５０の乗算で選択され、Ｘｉ2 と乗算される。続いてシフト回路５２に対し選択回路５６がＳ４＝２-4 を設定してシフト処理を行い、加算器５４で、選択回路５８で選択された定数Ｋ２との加算により既知数Ｑ２が求められる。
【０１１１】
この加算出力Ｑ２は再び選択回路５５に入力され、３回目の乗算で乗算器５０はＸｉ2 と選択回路５５からの既知数Ｑ２を乗算し、シフト回路５２で選択回路５６が選択したＳ２＝２-1 のシフトを行った後、加算器５４でそのとき選択回路５８が選択している定数Ｋ０と加算し、加算出力Ｑ０を求める。この加算出力Ｑ０は最終的に算出された余弦関数であるｃｏｓθｉであることから、これを演算結果として出力する。
【０１１２】
図１０は、保護ビットを加えた演算結果を丸めて演算精度を保つ図２の関数演算処理部１２による本発明のサイン関数演算処理の他の実施形態のフローチャートである。
【０１１３】
この図１０のサイン関数演算処理にあっては、既知数Ｑｄ、変数Ｘｉ2 、シフト後の中間値、定数Ｋｄは、最終的なビット数に保護ビット数（ガードビット）を加えたビット数として巡回計算をした後、最終値の保護ビット部分を丸めて、必要な最終ビット数を確保できるようにしている。
【０１１４】
このような保護ビット数を加えて巡回計算した後に最終値の保護ビット部分を丸める演算処理により、固定小数点演算として毎回同じビット精度で計算することができ、図１０のソフトウェア処理にあっては固定小数点演算であることから処理負荷が低減でき、またハードウェアで実現した場合の回路構成を簡単にすることができる。
【０１１５】
ここで、符号をｓ、ビットデータをｂ、保護ビットデータをｇとし、必要な最終の小数点以下のビット数を８ビット、保護ビットを２ビットとすると、図１０のサイン関数演算処理における各データは次のように表現できる。
【０１１６】
【数２６】
2005174077.tif 000028
【０１１７】
ここで、図３の定数テーブル１６において、コサイン関数を０°〜９０°に範囲で計算するときシフトＳ２をＳ２＝−１としている。このシフト数Ｓ２＝−１は、１ビット左にシフトすることを意味し、０°〜４５°まで計算するときと同じ精度を確保するためには、０〜４５°の範囲で計算するときに比べ保護ビット（ガードビット）を１ビット多くして計算する必要がある。そこで図１０のサイン関数演算処理の処理手順を説明すると次のようになる。
ステップＳ１：アドレスｉを入力する。
ステップＳ２：変数Ｘｉをアドレスｉのシフト処理により求める。このとき変数Ｘｉには保護ビットが２ビット付加される。
ステップＳ３：変数Ｘｉを２乗し、結果を四捨五入により丸める。
ステップＳ４：ｄ＝７を設定し、既知数Ｑ（ｄ）を図３の定数テーブル１６から読み出した定数Ｋ（７）とする。
ステップＳ５：ｄ＝ｄ−２を求める。ｄは巡回処理により、５，３，１，０と変化する。
ステップＳ６：ｄが１以上か否かチェックする。１以上であればステップＳ７に進み、１未満であればステップＳ８に進む。
ステップＳ７：変数Ｘｉ2 に既知数Ｑ（ｂ＋２）を乗算し、その結果を四捨五入により丸めて中間値Ｗとする。中間値Ｗをシフト数Ｓ（ｄ＋２）によりシフト処理する。中間値Ｗに定数Ｋ（ｄ）を加算した値を四捨五入により丸め、新たな既知数Ｑ（ｄ）とする。この演算は、ｄ＝５，３，１につき３回繰り返される。
ステップＳ８：ｄが１未満となって巡回計算が終了した場合であり、Ｑ（１）に変数Ｘｉを乗算してｓｉｎθｉを求め、その結果を四捨五入によりまるめて最終ビット数の値を求める。
ステップ９：演算結果としてｓｉｎθｉを出力する。
【０１１８】
図１１は、保護ビットを加えた演算結果を丸めて演算精度を保つ本発明によるコサイン関数演算処理のフローチャートであり、次の処理手順となる。
ステップＳ１：アドレスｉを入力する。
ステップＳ２：アドレスｉを（Ｎ／８）シフトさせて変数Ｘｉを求める。このとき変数Ｘｉに保護ビットとして２ビットを付加する。
ステップＳ３：変数Ｘｉ2 を求め、四捨五入により丸める。
ステップＳ４：ｄ＝６とし、図３の定数テーブル１６から求めた定数Ｋ（６）を既知数Ｑ（６）とする。
ステップＳ５：ｄ＝ｄ−２を求める。この場合、ｄはｄ＝４，２，０と変化する。
ステップＳ６：ｄが０以上か否かチェックする。０以上であればステップＳ７に進み、マイナスであればステップＳ８に進む。
ステップＳ７：変数Ｘｉ2 に既知数Ｑ（ｄ＋２）を乗算して、四捨五入による丸めにより中間値Ｗを求める。次に、中間値Ｗにシフト数Ｓ（ｄ＋２）によるシフト処理を行った後、定数Ｋ（ｄ）を加算して四捨五入による丸めを行い、新たな既知数Ｑ（ｄ）を求める。この演算処理は、Ｑ（４），Ｑ（２）及びＱ（０）というように3回、Ｓ５〜Ｓ７のループ処理を通じて行われる。
ステップＳ８：ｄがマイナスとなって巡回演算が終了した場合であり、ステップＳ７で求めたＱ（０）を四捨五入により丸めて最終ビット数のｃｏｓθｉとする。
ステップＳ９：ｃｏｓθｉを演算結果として出力する。
【０１１９】
なお図１０，図１１の処理における丸めとしては四捨五入を例にとっているが、下位ビットの切り捨てでもよい。四捨五入は、演算過程で求めている最下位ビット位置より１ビット下の位置に１を加えて計算した後に切り捨てることで四捨五入ができる。切り捨ては、必要な小数点以下のビット数を残し、それ以下を切り捨てればよい。
【０１２０】
図１２は、図７に示したハードウェア構成による本発明の関数演算回路１９の他の実施形態であり、パイプライン演算を行うサイン関数演算回路の実施形態である。また、このパイプライン型のサイン関数演算回路にあっては、図１０のサイン関数演算処理の場合と同様、保護ビットを加えた演算結果を丸めて演算精度を保つようにしている。
【０１２１】
図１３において、サイン関数パイプライン演算回路２５−３は、変換シフト回路６４、乗算器６５、第１演算部６６、第２演算部７４、第３演算部８０、乗算器８６及び丸め回路８８で構成される。第１演算部６６、第２演算部７４及び第３演算部８０は、パイプライン接続されている。
【０１２２】
第１演算部６６は乗算器６８、シフト回路７０、加算器７２を備え、第２演算部７４は乗算器７５、シフト回路７６、加算器７８を備え、更に第３演算部８０は乗算器８２、シフト回路８４及び加算器８５を備え、この３つの演算部６６，７４，８０は、それぞれ同じ回路構成を備えている。
【０１２３】
ここで乗算器６５，６８，７５，８２，８６及び加算器７２，７８，８５は、丸め（Ｒｏｕｎｄ）の機能を備えており、演算結果について切り捨てまたは四捨五入を行う。切り捨ては有効ビット以下の下位のビットを切り捨てる。四捨五入する場合は、有効ビットの最下位ビット位置より１ビット下の位置に１を加えて計算した後に切り捨てることで四捨五入できる。
【０１２４】
この場合、例えば有効ビットである小数点以下８ビットに対し適切な保護ビット（ガードビット）を付加して計算することで、例えば既知数Ｑｄ、変数Ｘｉ、Ｘｉ2 及び定数Ｋｄのそれぞれについて、２ビットのガードビットを付加して計算することで、丸めについて切り捨て処理であっても実用的な演算精度で計算することができる。
【０１２５】
またシフト回路７０，７６，８４としては、実際のハードウェアにあっては特に回路を設ける必要はなく、乗算器６８，７５，８２の出力信号を加算器７２，７８，８５のそれぞれに入力信号として供給するときに、ビット位置を変更するだけの機能を設ければよい。
【０１２６】
このようなサイン関数パイプライン演算回路２５−３にあっては、角度を表わすアドレスｉをパイプライン制御部２０−３による演算サイクルに同期して順次入力すると、例えば９サイクル目で最初のサイン関数の演算結果が出力され、それ以降は各サイクルごとに連続してサイン関数の演算結果が出力されるパイプライン演算が実現できる。
【０１２７】
図１３は、パイプライン演算を行う本発明によるコサイン関数演算回路の実施形態である。このコサイン関数パイプライン演算回路２５−４にあっては、変換シフト回路９５、乗算器９６、第１演算部９８、第２演算部１０５、第３演算部１１２で構成され、第１演算部９８、第２演算部１０５及び第３演算部１１２はパイプライン接続されている。
【０１２８】
また、第１演算部９８は乗算器１００、シフト回路１０２、加算器１０４で構成され、第２演算部１０５は乗算器１０６、シフト回路１０８、加算器１１０で構成され更に第３演算部１１２は乗算器１１４、シフト回路１１５及び加算器１１６で構成され、３つの演算部は同じ回路構成を持ってパイプライン接続されている。
【０１２９】
また乗算器９６，１００，１０６，１１４及び加算器１０４，１１０，１１６は、丸めにより必要なビット数に切り捨てや四捨五入を行う機能を備えている。
【０１３０】
このコサイン関数パイプライン演算回路２５−４にあっても、パイプライン制御部２０−４によるパイプラインの演算制御により各演算サイクルごとに角度情報としてのアドレスｉを順次入力すると、８サイクル目で最初のコサイン関数の演算結果が出力でき、それ以降は各演算サイクルごとに順次演算結果が出力されることになる。
【０１３１】
図１４は、図１２及び図１３に示したパイプライン型のサイン関数及びコサイン関数の演算回路を、基数を２とした高速フーリエ変換回路に適用した場合のブロック図である。
【０１３２】
図１４において、基数２の高速フーリエ変換回路は、並べ替え回路１２０、バタフライ演算部１２２、並べ替え回路１３０、バタフライ演算部１３２、並べ替え回路１３４、バタフライ演算部１３６、並べ替え回路１３８及びバタフライ演算部１４０の４段構成を持っている。
【０１３３】
この実施形態にあっては、例えば１６点のサンプリングデータを入力して高速フーリエ変換を行う。ここで並べ替え回路１２０に対する時系列入力信号Ｘ０（ｋ）は、バタフライ演算部１２２で番号ｋが８離れたＸ０（ｋ＋８）のデータ同士でバタフライ演算される。
【０１３４】
次の２段目のバタフライ演算部１３２にあっては、入力データＸ１（ｋ）の番号ｋが４離れたデータＸ１（ｋ＋４）同士でバタフライ演算が行われる。次に３段目のバタフライ演算部１３６にあっては、入力データＸ２（ｋ）が２離れたデータＸ２（ｋ＋２）同士でバタフライ演算が行われる。
【０１３５】
最終的に４段目のバタフライ演算部１４０にあっては、入力データＸ３（ｋ）が１離れたデータＸ３（ｋ＋１）同士でバタフライ演算が行われ、フーリエ変換出力Ｘ４（ｋ）とＸ４（ｋ＋１）が出力される。
【０１３６】
図１５は、図１４における高速フーリエ変換回路における１段目から４段目の並べ替え回路１２０，１３０，１３４，１３８と、バタフライ演算部１２２，１３２，１３６，１４０のそれぞれの組合せ部分における入出力データを示している。
【０１３７】
図１５において、まず１段目の並べ替え回路１２０に対しては、２つの入力に１６点のサンプリングデータのうち、番号が偶数となるＸ０（０），Ｘ０（２），…，Ｘ０（１４）と、番号が奇数となる入力データＸ０（１），Ｘ０（３），…，Ｘ０（１５）がそれぞれ入力され、Ｋ＝８離れた同士のバタフライ演算が行われ、バタフライ演算部１２２の右側に示す演算データが得られる。
【０１３８】
この演算データは２行目の並べ替え回路１３０に２組のデータ単位で順次入力され、バタフライ演算部１３２により、その右側に示す演算データが得られる。続いて２行目の出力データは３行目の３段目の並べ替え回路１３４に入力され、バタフライ演算部１３６の右側の演算結果が得られ、これが４行目の４段入力として並べ替え回路１３８に入力された後、バタフライ演算部１４０による演算で右側に示す高速フーリエ変換出力の結果が得られる。
【０１３９】
再び図１４を参照するに、例えば１段目のバタフライ演算部１２２に示すように、乗算器１２４にあってはバッファ１４５を介して得られたひねり係数Ｗ0 を入力データに乗算するひねり係数乗算を行っている。
【０１４０】
このひねり係数は、１段目から４段目に向けて順番に１，２，４，８のように、２ｎでその種類が増加する。また各段におけるそれぞれのひねり係数は、１段目については８回使用され、２段目については４回使用され、３段目については２回使用され、４段目については１回ずつ使用され、乗算される。
【０１４１】
このひねり係数と各データとの乗算を図１５の各段について示すと次のようになる。
（１段目）  Ｘ０（８）・Ｗ0，Ｘ０（９）・Ｗ0，Ｘ０（１０）・Ｗ0，
Ｘ０（１１）・Ｗ0，Ｘ０（１２）・Ｗ0，Ｘ０（１３）・Ｗ0，
Ｘ０（１４）・Ｗ0，Ｘ０（１５）・Ｗ0
（２段目）  Ｘ１（４）・Ｗ0，Ｘ１（５）・Ｗ0，Ｘ１（６）・Ｗ0，Ｘ１（７）・Ｗ0，
Ｘ１（１２）・Ｗ4，Ｘ１（１３）・Ｗ4，Ｘ１（１４）・Ｗ4，
Ｘ１（１５）・Ｗ4
（３段目）  Ｘ２（２）・Ｗ0，Ｘ２（３）・Ｗ0，
Ｘ２（６）・Ｗ4，Ｘ２（７）・Ｗ4，
Ｘ２（１０）・Ｗ2，Ｘ２（１１）・Ｗ2，
Ｘ２（１４）・Ｗ6，Ｘ２（１５）・Ｗ6
（４段目）  Ｘ３（１）・Ｗ0，
Ｘ３（３）・Ｗ4，
Ｘ３（５）・Ｗ2，
Ｘ３（７）・Ｗ6，
Ｘ３（９）・Ｗ1，
Ｘ３（１１）・Ｗ5，
Ｘ３（１３）・Ｗ3，
Ｘ３（１５）・Ｗ7
【０１４２】
このようなバタフライ演算部１２２，１３２，１３６，１４０で使用されるひねり係数Ｗ0 〜Ｗ7 は、関数演算部１４４−１，１４４−２のそれぞれにおいて、アドレス計算部１４２−１，１４２−２から与えられたアドレスｉに基づいてリアルタイムで演算される。
【０１４３】
ひねり係数演算部１４４−１，１４４−２のそれぞれには、図１２に示したサイン関数パイプライン演算回路２５−３と、図１３に示した同じくコサイン関数演算回路２５−４が設けられており、４段のバタフライ演算部１２２，１３２，１３６，１４０の演算サイクルに同期して、必要とするひねり係数をリアルタイムで演算し、必要とする種類のひねり係数をバッファ１４５，１４６，１４８，１５０のそれぞれに格納し、また４段目については専用のひねり係数演算部１４４−２により８種類のひねり係数Ｗ0 ，Ｗ4 ，…Ｗ7 が順次演算されている。
【０１４４】
ここでひねり係数は、ＷP 上で表わすと次式の複素数の乗算で表わされる。
【０１４５】
【数２７】
2005174077.tif 000029
この複素数の乗算にあっては、アドレスｐを入力としてコサイン関数及びサイン関数の演算が必要であり、これが本発明のパイプライン型のコサイン関数演算回路及びサイン関数演算回路で実現される。
【０１４６】
ひねり係数演算部１４４−１は、高速フーリエ変換における各バタフライ演算の段数の演算タイミングまでに必要とするひねり係数を演算し、バッファ１４５，１４６，１４８，１５０に格納する。即ちひねり係数演算部１４４−１は、時刻ｔの経過に伴ってひねり係数列３００としてＷ0 ，Ｗ0 ，Ｗ4 ，Ｗ0 ，Ｗ2 ，Ｗ4 ，Ｗ6 を演算し、黒枠で示すひねり係数をバッファレジスタ１４５，１４６，１４８に、１段目は１種類、２段目は２種類、４段目は４種類というように格納する。
【０１４７】
またひねり係数演算部１４４−２は４段目のバタフライ演算部１４０専用に設けられており、時刻ｔの経過に伴ってひねり係数列３０２としてＷ0 ，Ｗ4 ，Ｗ2 ，Ｗ6 ，Ｗ1 ，Ｗ5 ，Ｗ3 ，Ｗ7 を順次演算して、バッファ１５０に格納する。そして図１５の１段から４段目に示した２つの入力データの組に対し、下側の入力データにつき対応するひねり係数を乗算するバタフライ乗算が行われることになる。
【０１４８】
図１６は、図１４の高速フーリエ変換回路を並列構成としたブロック図である。この高速フーリエ変換回路は、図１４と同じ基数が２でサンプル点を１６点としている。
【０１４９】
図１６において、並列構成とした高速フーリエ変換回路は、１段目バタフライ演算部１５２、２段目バタフライ演算部１５４、３段目バタフライ演算部１５６及び４段目バタフライ演算部１５８で構成される。
【０１５０】
１段目バタフライ演算部１５２は、８つの乗算器を備えたひねり係数乗算部１６０、１６個の加算器群１６２で構成される。２段目バタフライ演算部１５４は、４つずつ２組に分かれた乗算器を用いたひねり係数乗算部１６４と１６個の加算器を備えた加算器群１６６で構成される。
【０１５１】
３段目バタフライ演算部１５６は、２つずつの乗算器を４組備えたひねり係数乗算部１６８と１６個の加算器を備えた加算器群１７０で構成される。更に４段目バタフライ演算部１５８は、８個の乗算器を備えたひねり係数乗算部１７２と１６個の加算器を備えた加算器群１７４で構成される。
【０１５２】
このような並列構成の高速フーリエ変換回路にあっては、入力段から出力段への演算段数は８段であり、８クロックサイクルで演算処理を終了することができる。
【０１５３】
図１６の並列構成の高速フーリエ変換回路に対応して、各段のひねり係数乗算部１６０，１６４，１６８，１７２のそれぞれに対し、必要とするひねり係数をリアルタイムで供給するため、図１７のひねり係数演算回路が設けられる。
【０１５４】
図１７のひねり係数演算回路は、基本的には図１４の高速フーリエ変換回路と同じである。まず図１６における１段目バタフライ演算部１５２、２段目バタフライ演算部１５４、３段目バタフライ演算部１５６に対応してアドレス計算部１４２−１と、ひねり係数演算部１４４−１が設けられる。また１段目バタフライ演算部１５２、２段目バタフライ演算部１５４、３段目演算部１５６に対応して、それぞれバッファレジスタ１７６，１７８，１８０が設けられる。
【０１５５】
４段目バタフライ演算部１５８に対しては、独立したアドレス計算部１４２−２とひねり係数演算部１４４−２が設けられ、同様にバッファ１８２を設けている。ひねり係数演算部１４４−１は、アドレス計算部１４２−１からのｔ＝０，４，２，６に基づき出力系列１８４に示す時刻ｔ０，ｔ１，ｔ２，ｔ３のタイミングでひねり係数Ｗ0，Ｗ4，Ｗ2，Ｗ6を出力し、バッファ１７６にＷ0を格納し、バッファ１７８にＷ0，Ｗ4を格納し、さらにバッファ１８０にひねり係数Ｗ0，Ｗ4，Ｗ2，Ｗ6を格納する。
【０１５６】
一方、ひねり係数演算部１４２−２は、アドレス計算部１４４−２からのアドレスｔ＝０，４，２，６，１，５，３，７に基づいて出力系列１８６のように時刻ｔ０〜ｔ７のタイミングでひねり係数Ｗ0，Ｗ4，Ｗ2，Ｗ6，Ｗ1，Ｗ5，Ｗ3，Ｗ7を順次演算し、バッファ１８２に格納する。
【０１５７】
図１６の並列構成の高速フーリエ変換回路にあっては時刻ｔ１のタイミングで１段目バタフライ演算部１５２のひねり係数乗算部１６０に設けた８つの乗算器がバッファレジスタ１７６のひねり係数Ｗ０を使用してひねり係数乗算を行なう。
【０１５８】
また２段目バタフライ演算部１５４のひねり係数乗算部１６４は時刻ｔ３のタイミングでバッファレジスタ１７８に格納されているひねり係数Ｗ０，Ｗ４を用いたひねり係数乗算を行なう。
【０１５９】
また３段目バタフライ演算部１５６のひねり係数乗算部６８にあっては時刻ｔ５のタイミングですでにバッファレジスタ１８０に格納されているひねり係数Ｗ０，Ｗ４，Ｗ２，Ｗ６を使用したひねり係数乗算を行なう。そして４段目バタフライ演算部１５８にあっては時刻ｔ７のタイミングでバッファレジスタ１８２に格納されているひねり係数Ｗ0，Ｗ4・・・Ｗ7の８種類のひねり係数を使用したひねり係数乗算を行なうようになる。
【０１６０】
このように図１６の並列構成の高速フーリエ変換回路に図１７のひねり係数演算回路を組み合わせることで、変数Ｘ０（０）〜Ｘ０（１５）の１６点のサンプルデータを入力から演算８サイクルで４段にわたるバタフライ演算を並列実行して高速フーリエ変換出力を得ることができる。
【０１６１】
尚、図８，図９のサイン関数、コサイン関数の演算回路にあっては巡回処理部をひとつ設け、これを繰り返し使用することで関数演算を行なっているが、これを図１２，図１３に示したようにパイプライン型に変えることもできる。
【０１６２】
また図１２，図１３に示したパイプライン型のサイン及びコサイン演算回路を図８，図９のような巡回処理部をひとつ設けてこれを繰り返し使用する関数演算回路に変更することもできる。
【０１６３】
また上記の実施形態にあってはテイラー級数式を巡回式に変形して処理する演算処理としてサイン関数とコサイン関数を例にとるものであったが、他の三角関数であるタンジェント関数、コセカント関数、セカント関数、コタンジェント関数や、三角関数以外のテイラー級数式が適用される一般的な超越関数に含まれる対数関数や指数関数についても適用できる。
【０１６４】
このように三角関数以外の一般的な超越関数についてのテイラー級数式を本発明における巡回型に変形する際には、変数Ｘ2ではなく、変数を単にＸとし、テイラー級数式を既知数Ｑと変数Ｘを乗算し、その結果をシフト数Ｓだけシフトしたのちに変数Ｋを加算したものを新たに既知数Ｑとする巡回式に変形すればよい。
【０１６５】
また本発明にあっては変数Ｘｉを最大値が１となるようにし、定数Ｋｄは１以下となるようにすることでハードウェア回路が容易に実現できるように説明したが、演算処理回路の構成や固定小数点演算における小数点位置を移動して考えれば、この値に限定されない。
【０１６６】
また浮動小数点演算回路を使用するハードウェアに場合や、浮動小数点演算を使えるＣＰＵやＤＳＰによるソフトウェア処理の場合には、テイラー級数式を巡回式に変形するだけで演算回数を削減して処理負担を低減し高速処理を実現することができる。
【０１６７】
さらに上記の実施形態にあってはサイン関数及びコサイン関数の演算結果を高速フーリエ変換に適用する場合を例にとるものであったが、本発明はこれに限定されず、サイン関数およびコサイン関数の演算結果を利用する適宜の装置にそのまま適用することができる。
【０１６８】
ここで、本発明の特徴を列挙すると次の付記ようになる。
（付記）
（付記１）
サイン関数を計算するテイラー級数式を、既知数Ｑと、変数Ｘの２乗を乗算し、その結果をシフト数Ｓだけシフトしたのち、定数Ｋを加算したものを新たな既知数Ｑとする各項に共通な単一の巡回式に変形して設定する巡回式設定ステップと、
前記変数Ｘは、変数Ｘの変化範囲内で、変数Ｘの最大値が１となるように、前記定数Ｋは１以下となるように、前記シフト数Ｓを調整して準備する調整ステップと、
角度情報ｉを入力して前記変数Ｘに変換し、前記テイラー級数式の項の数分、前記巡回式を高次の項から低次の項に向けて順次実行して前記角度情報ｉのサイン関数を導出する巡回式実行ステップと、
を備えたことを特徴とする関数演算方法。（１）
【０１６９】
（付記２）
付記１記載の関数演算方法に於いて、前記巡回式実行ステップは、前記巡回式の既知数Ｑ、変数Ｘ、シフト後の中間値、定数Ｋは、最終的なビット数に保護ビット数を加えたビット数として演算処理を実行することを特徴とする関数演算方法。（２）
【０１７０】
（付記３）
コサイン関数を計算するテイラー級数式を、既知数Ｑと、変数Ｘの２乗を乗算し、その結果をシフト数Ｓだけシフトしたのち、定数Ｋを加算したものを新たな既知数Ｑとする各項に共通な単一の巡回式に変形して設定する巡回式設定ステップと、
前記変数Ｘは、変数Ｘの変化範囲内で、変数Ｘの最大値が１となるように、前記定数Ｋは１以下となるように、前記シフト数Ｓを調整して準備する調整ステップと、
角度情報ｉを入力して前記変数Ｘに変換し、前記テイラー級数式の項の数分、前記巡回式を高次の項から低次の項に向けて順次実行して前記角度情報ｉのコサイン関数を導出する巡回式実行ステップと、
を備えたことを特徴とする関数演算方法。（３）
【０１７１】
（付記４）
付記３記載の関数演算方法に於いて、前記巡回式実行ステップは、前記巡回式の既知数Ｑ、変数Ｘ、シフト後の中間値、定数Ｋは、最終的なビット数に保護ビット数を加えたビット数として演算処理を実行することを特徴とする関数演算方法。
【０１７２】
（付記５）
既知数Ｑと変数Ｘの２乗を乗算し、その結果をシフト数Ｓだけシフトした後に定数Ｋを加算したものを新たな既知数Ｑとするサイン関数を計算するテイラー級数式の変形により得られた巡回式を演算する巡回式演算部と、
入力した角度情報ｉを前記変数Ｘに変換すると共に、変数Ｘの変化範囲内で変数Ｘの最大値が１となるように前記シフト数Ｓを調整して出力する変換調整部と、
サイン関数を計算するテイラー級数式の各項に対応した定数Ｋと、前記各定数Ｋを１以下となるように調整したシフト数Ｓを予め求めて保持した定数テーブルと、
前記変換調整部から前記変数Ｘが出力された際に、予め定めたテイラー級数式の項数分、前記巡回式演算部を高次の項から低次の項に向けて前記定数テーブルの定数Ｋとシフト数Ｓの選択に基づき順次循環演算を実行させて前記角度情報ｉのサイン関数を導出する演算制御部と、
を備えたことを特徴とする関数演算回路。（４）
【０１７３】
（付記６）
付記５記載の関数演算回路に於いて、前記巡回式演算部は、前記巡回式の既知数Ｑ、変数Ｘ、シフト後の中間値、定数Ｋは、最終的なビット数に保護ビット数を加えたビット数として演算処理を実行することを特徴とする関数演算回路。
【０１７４】
（付記７）（コサイン関数演算回路）
既知数Ｑと変数Ｘの２乗を乗算し、その結果をシフト数Ｓだけシフトした後に定数Ｋを加算したものを新たな既知数Ｑとするコサイン関数を計算するテイラー級数式の変形により得られた巡回式を演算する巡回式演算部と、
入力した角度情報ｉを前記変数Ｘに変換すると共に、変数Ｘの変化範囲内で変数Ｘの最大値が１となるように前記シフト数Ｓを調整して出力する変換調整部と、
サイン関数を計算するテイラー級数式の各項に対応した定数Ｋと、前記各定数Ｋを１以下となるように調整したシフト数Ｓを予め求めて保持した定数テーブルと、
前記変換調整部から前記変数Ｘが出力された際に、予め定めたテイラー級数式の項数分、前記巡回式演算部を高次の項から低次の項に向けて前記テーブルの定数Ｋとシフト数Ｓの選択に基づき順次循環演算を実行させて前記角度情報ｉのコサイン関数を導出する演算制御部と、
を備えたことを特徴とする関数演算回路。
【０１７５】
（付記８）
付記７記載の関数演算回路に於いて、前記巡回式演算部は、前記巡回式の既知数Ｑ、変数Ｘ、シフト後の中間値、定数Ｋは、最終的なビット数に保護ビット数を加えたビット数として演算処理を実行することを特徴とする関数演算回路。
【０１７６】
（付記９）
既知数Ｑと変数Ｘの２乗を乗算し、その結果をシフト数Ｓだけシフトした後に定数Ｋを加算したものを新たな既知数Ｑとするサイン関数を計算するテイラー級数式の変形により得られた巡回式を演算する巡回式演算部を各項ごとに設けてパイプライン接続したパイプライン演算部と、
入力した角度情報ｉを前記変数Ｘに変換すると共に、変数Ｘの変化範囲内で変数Ｘの最大値が１となるように前記シフト数Ｓを調整して前記パイプライン演算部に出力する変換調整部と、
サイン関数を計算するテイラー級数式の各項に対応した定数Ｋと、前記各定数Ｋを１以下となるように調整したシフト数Ｓを予め求めて保持した定数テーブルと、
前記変換調整部から前記変数Ｘが出力される毎に、前記パイプライン演算部の各巡回式演算部にテイラー級数式の対応する項の定数Ｋとシフト数Ｓを前記定数テーブルから選択して並列的に演算させ最終段の巡回式演算部の出力に基づき前記角度情報ｉのサイン関数を導出させるパイプライン制御部と、
を備えたことを特徴とする関数演算回路。（５）
【０１７７】
（付記１０）
付記９記載の関数演算回路に於いて、前記パイプライン演算部の各巡回式演算部は、前記巡回式の既知数Ｑ、変数Ｘ、シフト後の中間値、定数Ｋは、最終的なビット数に保護ビット数を加えたビット数として演算処理を実行することを特徴とする関数演算回路。
【０１７８】
（付記１１）（コサイン関数パイプライン演算回路）
既知数Ｑと変数Ｘの２乗を乗算し、その結果をシフト数Ｓだけシフトした後に定数Ｋを加算したものを新たな既知数Ｑとするコサイン関数を計算するテイラー級数式の変形により得られた巡回式を演算する巡回式演算部を各項ごとに設けてパイプライン接続したパイプライン演算部と、
入力した角度情報ｉを前記変数Ｘに変換すると共に、変数Ｘの変化範囲内で変数Ｘの最大値が１となるように前記シフト数Ｓを調整して前記パイプライン演算部に出力する変換調整部と、
コサイン関数を計算するテイラー級数式の各項に対応した定数Ｋと、前記各定数Ｋを１以下となるように調整したシフト数Ｓを予め求めて保持した定数テーブルと、
前記変換調整部から前記変数Ｘが出力される毎に、前記パイプライン演算部の各巡回式演算部にテイラー級数式の対応する項の定数Ｋとシフト数Ｓを前記定数テーブルから選択して並列的に演算させ最終段の巡回式演算部の出力に基づき前記角度情報ｉのコサイン関数を導出させるパイプライン制御部と、
を備えたことを特徴とする関数演算回路。
【０１７９】
（付記１２）
付記１１記載の関数演算回路に於いて、前記パイプライン演算部の各巡回式演算部は、前記巡回式の既知数Ｑ、変数Ｘ、シフト後の中間値、定数Ｋは、最終的なビット数に保護ビット数を加えたビット数として演算処理を実行することを特徴とする関数演算回路。
【０１８０】
（付記１３）（サイン及びコサイン関数パイプライン演算回路）
サイン関数演算回路とコサイン関数演算回路を有し、
前記サイン関数演算回路は、
既知数Ｑと変数Ｘの２乗を乗算し、その結果をシフト数Ｓだけシフトした後に定数Ｋを加算したものを新たな既知数Ｑとするサイン関数を計算するテイラー級数式の変形により得られた巡回式を演算する巡回式演算部を各項ごとに設けてパイプライン接続したパイプライン演算部と、
入力した角度情報ｉを前記変数Ｘに変換すると共に、変数Ｘの変化範囲内で変数Ｘの最大値が１となるように前記シフト数Ｓを調整して前記パイプライン演算部に出力する変換調整部と、
サイン関数を計算するテイラー級数式の各項に対応した定数Ｋと、前記各定数Ｋを１以下となるように調整したシフト数Ｓを予め求めて保持した定数テーブルと、
前記変換調整部から前記変数Ｘが出力される毎に、前記パイプライン演算部の各巡回式演算部にテイラー級数式の対応する項の定数Ｋとシフト数Ｓを前記定数テーブルから選択して並列的に演算させ最終段の巡回式演算部の出力に基づき前記角度情報ｉのサイン関数を導出させるパイプライン制御部と、
を備え、
前記コサイン関数演算回路は、
既知数Ｑと変数Ｘの２乗を乗算し、その結果をシフト数Ｓだけシフトした後に定数Ｋを加算したものを新たな既知数Ｑとするコサイン関数を計算するテイラー級数式の変形により得られた巡回式を演算する巡回式演算部を各項ごとに設けてパイプライン接続したパイプライン演算部と、
入力した角度情報ｉを前記変数Ｘに変換すると共に、変数Ｘの変化範囲内で変数Ｘの最大値が１となるように前記シフト数Ｓを調整して前記パイプライン演算部に出力する変換調整部と、
コサイン関数を計算するテイラー級数式の各項に対応した定数Ｋと、前記各定数Ｋを１以下となるように調整したシフト数Ｓを予め求めて保持した定数テーブルと、
前記変換調整部から前記変数Ｘが出力される毎に、前記パイプライン演算部の各巡回式演算部にテイラー級数式の対応する項の定数Ｋとシフト数Ｓを前記定数テーブルから選択して並列的に演算させ最終段の巡回式演算部の出力に基づき前記角度情報ｉのコサイン関数を導出させるパイプライン制御部と、
を備えたことを特徴とする関数演算回路。
【０１８１】
（付記１４）
付記１３記載の関数演算回路に於いて、前記各パイプライン演算部の各巡回式演算部は、前記巡回式の既知数Ｑ、変数Ｘ、シフト後の中間値、定数Ｋは、最終的なビット数に保護ビット数を加えたビット数として演算処理を実行することを特徴とする関数演算回路。
【０１８２】
（付記１５）
付記１３記載の関数演算回路に於いて、前記入力情報ｉのサイン関数およびコサイン関数に基づき、基数２のパイプライン型高速フーリエ変換装置に設けた複数のバタフライ段のひねり係数値を計算させることを特徴とする関数演算回路。
【０１８３】
（付記１６）
超越関数を計算するテイラー級数式を、既知数Ｑと、変数Ｘを乗算し、その結果をシフト数Ｓだけシフトしたのち、定数Ｋを加算したものを新たな既知数Ｑとする各項に共通な単一の巡回式に変形して設定する巡回式設定ステップと、
前記変数Ｘは、変数Ｘの変化範囲内で、変数Ｘの最大値が１となるように、前記定数Ｋは１以下となるように、前記シフト数Ｓを調整して準備する調整ステップと、
入力情報を前記変数Ｘに変換し、前記テイラー級数式の項の数分、前記巡回式を高次の項から低次の項に向けて順次実行して前記入力情報の超越関数を導出する巡回式実行ステップと、
を備えたことを特徴とする関数演算方法。
【図面の簡単な説明】
【０１８４】
【図１】本発明の原理説明図
【図２】コンピュータのプログラムにより実現される本発明の関数演算処理の機能構成のブロック図
【図３】図２の関数演算に使用するテーブル内容の説明図
【図４】図２の関数演算処理のフローチャート
【図５】図２によるサイン関数演算処理のフローチャート
【図６】図２によるコサイン関数演算処理のフローチャート
【図７】ハードウェアにより実現される本発明の関数演算回路のブロック図
【図８】図７に設けるサイン関数演算回路の回路ブロック図
【図９】図７に設けるコサイン関数演算回路の回路ブロック図
【図１０】保護ビットを加えた演算結果を丸めて演算精度を保つ本発明によるサイン関数演算処理のフローチャート
【図１１】保護ビットを加えた演算結果を丸めて演算精度を保つ本発明によるコサイン関数演算処理のフローチャート
【図１２】パイプライン演算を行う本発明のサイン関数演算回路の回路ブロック図
【図１３】パイプライン演算を行う本発明のコサイン関数演算回路の回路ブロック図
【図１４】ひねり係数の演算に図１２及び図１３のパイプライン演算を行う本発明の関数演算回路を適用した基数を２とした高速フーリエ変換回路のブロック図
【図１５】図１４の４段にわたる並べ替えとバタフライ演算の入出力データの説明図
【図１６】図１４の高速フーリエ変換回路を並列構成としたブロック図
【図１７】図１６の高速フーリエ変換回路で使用するひねり係数演算回路のブロック図
【図１８】従来の高速フーリエ変換装置を使用したシステムの説明図
【図１９】ひねり係数をメモリに保持した従来の高速フーリエ変換装置のブロック図
【図２０】角度情報のアドレスｉをサイン関数又はコサイン関数に変換するルックアップテーブルの説明図
【図２１】テイラー級数式を用いてサイン関数を演算する単純なハードウェアとしての回路図
【符号の説明】
【０１８５】
１０：角度検出部
１１：コンピュータ
１２：関数演算処理部
１３：巡回式設定部
１４：調整部
１５：巡回式実行部
１６，２２：定数テーブル
１８：装置
１９：関数演算回路
２０，２０−１，２０−２：演算制御部
２０−３，２０−４：パイプライン制御部
２４：変換調整部
２５：巡回式演算部
２５−１：サイン関数演算回路
２５−２：コサイン関数演算回路
２５−３：サイン関数パイプライン演算回路
２５−４：コサイン関数パイプライン演算回路
２６，４５，６４，９５：変換シフト回路
２７，３０，４０，４６，５０，６５，６８，７５，８２，８６，９６，１００，１０６，１１４，１２４，：乗算器
２８，４８：巡回処理部
３２，５２，７０，７６，８４，１０２，１０８，１１５：シフト回路
３４，５４，１２６，１２８：加算器
３５，３６，３８，５５，５６，５８：選択回路
６６，９８：第１演算部
７４，１０５：第２演算部
８０，１１２：第３演算部
８８：丸め回路
１２０，１３０，１３４，１３８：並べ替え回路
１２２，１３２，１３６，１４０，１５２，１５４，１５６，１５８：バタフライ演算部
１４２−１，１４２１−２：アドレス計算部
１４４−１，１４４−２：ひねり係数演算部
１４５，１４６，１４８，１５０，１７６，１７８，１８０，１８２：バッファ
１６０，１６４，１６８，１７２：ひねり係数乗算部
【図１】
2005174077.tif 000030
【図２】
2005174077.tif 000031
【図３】
2005174077.tif 000032
【図４】
2005174077.tif 000033
【図５】
2005174077.tif 000034
【図６】
2005174077.tif 000035
【図７】
2005174077.tif 000036
【図８】
2005174077.tif 000037
【図９】
2005174077.tif 000038
【図１０】
2005174077.tif 000039
【図１１】
2005174077.tif 000040
【図１２】
2005174077.tif 000041
【図１３】
2005174077.tif 000042
【図１４】
2005174077.tif 000043
【図１５】
2005174077.tif 000044
【図１６】
2005174077.tif 000045
【図１７】
2005174077.tif 000046
【図１８】
2005174077.tif 000047
【図１９】
2005174077.tif 000048
【図２０】
2005174077.tif 000049
【図２１】
2005174077.tif 000050