(57)【要約】  本発明は、回路規模が小さく、かつ処理遅延が短いＣＯＲＤＩＣ回路を提供することを目的とする。スケール補正処理を粗補正と微補正の２段階に分割し、擬似回転処理の後半処理とスケール微補正を並列に行う。また、微補正スケール範囲を、擬似回転処理の前半処理の残留回転角に対するスケール補正が不要にするように設定する（図１）。
2009110560.tif 000002
【特許請求の範囲】
【請求項１】
スケール補正処理をスケール粗補正とスケール微補正の２段階に分割し、
擬似回転処理の後半処理と前記スケール微補正を並列に行う、ことを特徴とするＣＯＲＤＩＣ演算回路。
【請求項２】
前記擬似回転処理の後半処理を乗算で実現する、ことを特徴とする請求項１に記載のＣＯＲＤＩＣ演算回路。
【請求項３】
前記スケール微補正の範囲を、前記擬似回転処理の前半処理の残留回転角に対するスケール補正が不要にするように設定する、ことを特徴とする請求項１又は２に記載のＣＯＲＤＩＣ演算回路。
【請求項４】
前記スケール補正処理を、繰り返しシフト加減算で行い、
シフト量が所要ビット精度の半分以上の繰り返しシフト加減算処理で、前記スケール微補正を行い、
前記シフト量が所要ビット精度の半分未満の繰り返しシフト加減算処理で、前記スケール粗補正を行う、ことを特徴とする請求項１乃至３のいずれか１項に記載のＣＯＲＤＩＣ演算回路。
【請求項５】
前記繰り返しシフト加減算を、キャリーリプル加減算器で行う、ことを特徴とする請求項４に記載のＣＯＲＤＩＣ演算回路。
【請求項６】
ベクトル（Ｘ，Ｙ）と回転角（Ｚ）を入力とするＣＯＲＤＩＣ演算回路であって、
前記ベクトル（Ｘ，Ｙ）のＸ成分に対してスケール粗補正を行い、粗補正用のスケーリング係数と前記Ｘ成分の乗算結果を出力するＸパススケール粗補正部と、
前記ベクトルのＹ成分に対してスケール粗補正を行い、粗補正用のスケーリング係数と前記Ｙ成分の乗算結果を出力するＹパススケール粗補正部と、
縦続接続された複数段の回転処理回路であって、初段の回転処理回路は、前記ＸおよびＹパススケール粗補正部からそれぞれ出力されるＸ成分およびＹ成分と回転角とを入力して回転処理の反復処理を行い、後段の回転処理回路は、前段の回転処理回路から出力されるＸ成分およびＹ成分と回転角とを入力して回転処理の反復処理を行う、複数段の回転処理回路と、
最終段の前記回転処理回路から出力されるＸ成分に対してスケール微補正処理を行い、微補正用のスケーリング係数と前記Ｘ成分の乗算結果を出力するＸパススケール微補正部と、
最終段の前記回転処理回路から出力されるＹ成分に対してスケール微補正処理を行い、微補正用のスケーリング係数と前記Ｙ成分の乗算結果を出力するＹパススケール微補正部と、
前記Ｘパススケール微補正部に並置され、最終段の前記回転処理回路から出力されるＹ成分に対して、最終段の前記回転処理回路からの回転角度を乗算するＸパス変数乗算器と、
前記Ｙパススケール微補正部に並置され、最終段の前記回転処理回路から出力されるＸ成分に対して、最終段の前記回転処理回路からの回転角度を乗算するＹパス変数乗算器と、
前記Ｘパススケール微補正部での乗算結果と前記Ｘパス変数乗算器での乗算結果とを加減算した結果を出力するＸパス加減算器と、
前記Ｙパススケール微補正部での乗算結果と前記Ｙパス変数乗算器での乗算結果とを加減算した結果を出力するＹパス加減算器と、
を備えている、ことを特徴とするＣＯＲＤＩＣ演算回路。
【請求項７】
前記Ｘパススケール粗補正部および前記Ｙパススケール粗補正部において、前記スケール補正処理を、繰り返しシフト加減算で行い、前記シフト量が、所要ビット精度の半分未満の繰り返しシフト加減算処理で、スケール粗補正を行う、ことを特徴とする請求項６記載のＣＯＲＤＩＣ演算回路。
【請求項８】
前記ＸおよびＹパススケール粗補正部は、前段からの入力をシフトするバレルシフタと、前段からの入力と前記バレルシフタの出力を入力し加算又は減算するキャリーリプル加減算器の組を複数段含む、ことを特徴とする請求項７記載のＣＯＲＤＩＣ演算回路。
【請求項９】
前記ＸおよびＹパススケール微補正部において、前記スケール補正処理を、繰り返しシフト加減算で行い、シフト量が所要ビット精度の半分以上の繰り返しシフト加減算処理で、前記スケール微補正を行う、ことを特徴とする請求項６又は７記載のＣＯＲＤＩＣ演算回路。
【請求項１０】
前記ＸおよびＹパススケール微補正部は、前段からの入力をシフトするバレルシフタと、前段からの入力と前記バレルシフタの出力を入力し加算又は減算するキャリーリプル加減算器の組を複数段含む、ことを特徴とする請求項９記載のＣＯＲＤＩＣ演算回路。
【請求項１１】
前記複数段縦続接続された回転処理回路を入力段側に備え、前記ＸおよびＹパススケール粗補正部を前記複数段縦続接続された回転処理回路の後段に備えた、ことを特徴とする請求項６記載のＣＯＲＤＩＣ演算回路。
【請求項１２】
スケール補正処理をスケール粗補正とスケール微補正の２段階に分割し、
擬似回転処理の後半処理と前記スケール微補正を並列に行う、ことを特徴とするＣＯＲＤＩＣ演算方法。
【請求項１３】
前記擬似回転処理の後半処理を乗算で実現する、ことを特徴とする請求項１２に記載のＣＯＲＤＩＣ演算方法。
【請求項１４】
前記スケール微補正の範囲を、擬似回転処理の前半処理の残留回転角に対するスケール補正が不要にするように設定する、ことを特徴とする請求項１２又は１３に記載のＣＯＲＤＩＣ演算方法。
【請求項１５】
前記スケール補正処理を、繰り返しシフト加減算で行い、
シフト量が所要ビット精度の半分以上の繰り返しシフト加減算処理で、前記スケール微補正を行い、
前記シフト量が所要ビット精度の半分未満の繰り返しシフト加減算処理で、前記スケール粗補正を行う、ことを特徴とする請求項１２乃至１４のいずれか１項に記載のＣＯＲＤＩＣ演算方法。
【請求項１６】
前記繰り返しシフト加減算を、キャリーリプル加減算演算で行う、ことを特徴とする請求項１５に記載のＣＯＲＤＩＣ演算方法。
【請求項１７】
ベクトル（Ｘ，Ｙ）と回転角（Ｚ）を入力とするＣＯＲＤＩＣ演算回路であって、
入力ベクトルのＸ成分ｘ（０）に対し、スケール粗補正処理を行い、Ｋｑ１＊ｘ（０）を出力するＸパススケール粗補正部と、
前記入力ベクトルのＹ成分ｙ（０）に対し、スケール粗補正処理を行い、Ｋｑ１＊ｙ（０）を出力するＹパススケール粗補正部と、
縦続接続された第１乃至第ｑの回転処理回路と、
前記第ｑの回転処理回路から出力されるＸ成分ｘ（ｑ）に対してスケール微補正処理を行い、微補正用のスケーリング係数Ｋｑ２と前記Ｘ成分ｘ（ｑ）の乗算結果Ｋｑ２＊ｘ（ｑ）を出力するＸパススケール微補正部と、
前記第ｑの回転処理回路から出力されるＹ成分ｙ（ｑ）に対してスケール微補正処理を行い、微補正用のスケーリング係数Ｋｑ２と前記Ｙ成分ｙ（ｑ）の乗算結果Ｋｑ２＊ｙ（ｑ）を出力するＹパススケール微補正部と、
前記Ｘパススケール微補正部に並置され、前記第ｑの回転処理回路から出力されるＹ成分ｙ（ｑ）と前記第ｑの回転処理回路からの回転角度ｚ（ｑ）とを乗算した結果ｚ（ｑ）＊ｙ（ｑ）を出力するＸパス変数乗算器と、
前記Ｙパススケール微補正部に並置され、前記第ｑの回転処理回路から出力されるＸ成分ｘ（ｑ）と前記第ｑの回転処理回路からの回転角度ｚ（ｑ）とを乗算した結果ｚ（ｑ）＊ｘ（ｑ）を出力するＹパス変数乗算器と、
前記Ｘパススケール微補正部での乗算結果Ｋｑ２＊ｘ（ｑ）と前記Ｘパス変数乗算器での乗算結果ｚ（ｑ）＊ｙ（ｑ）とを加算した結果を出力するＸパス加減算器と、
前記Ｙパススケール微補正部での乗算結果Ｋｑ２＊ｙ（ｑ）と前記Ｙパス変数乗算器での乗算結果ｚ（ｑ）＊ｘ（ｑ）とを減算した結果を出力するＹパス加減算器と、
を備え、
スケーリング係数Ｋｑは粗補正用のスケーリング係数Ｋｑ１と微補正用のスケーリング計数Ｋｑ２の積Ｋｑ１＊Ｋｑ２として表され、
粗補正用のスケーリング係数Ｋｑ１は、
2009110560.tif 000031
ただし、
2009110560.tif 000032
すなわち、前記Ｘパススケール粗補正部およびＹパススケール粗補正部において、所定ビット精度ｎの半分未満のスケール粗補正処理の繰り返しシフト加算処理で導出され、
微補正用のスケーリング計数Ｋｑ２は、
2009110560.tif 000033
ただし、
2009110560.tif 000034
前記第１の回転処理回路では、前記Ｘパススケール粗補正部およびＹパススケール粗補正部から出力されるＫｑ１＊ｘ（０）およびＫｑ１＊ｙ（０）と、回転角ｚ(０)とを入力し、
2009110560.tif 000035
2009110560.tif 000036
2009110560.tif 000037
2009110560.tif 000038
の演算により、ベクトルｘ（１）、ｙ（１）と回転角ｚ（１）を出力し、
第（ｊ＋１）の回転処理回路（ただし、ｊ＝１〜ｑ−１）では、第ｊの回転処理回路から出力されるｘ（ｊ）、ｙ（ｊ）、ｚ（ｊ）を入力し、
2009110560.tif 000039
2009110560.tif 000040
2009110560.tif 000041
2009110560.tif 000042
2009110560.tif 000043
2009110560.tif 000044
の演算により、ベクトルｘ（ｊ＋１）、ｙ（ｊ＋１）と回転角ｚ（ｊ＋１）を出力し、
前記Ｘパススケール微補正部における、微補正用のスケーリング計数Ｋｑ２と、前記第ｑの回転処理回路の出力ｘ（ｑ）との積Ｋｑ２＊ｘ（ｑ）と、前記Ｘパス変数乗算器における、前記第ｑの回転処理回路の出力ｚ（ｑ）とｙ（ｑ）の積ｚ（ｑ）＊ｙ（ｑ）の演算が並行して行われ、前記Ｙパススケール微補正部における、微補正用のスケーリング計数Ｋｑ２と、前記第ｑの回転処理回路の出力ｙ（ｑ）との積Ｋｑ２＊ｙ（ｑ）と、前記Ｙパス変数乗算器における前記第ｑの回転処理回路の出力ｚ（ｑ）とｘ（ｑ）の積ｚ（ｑ）＊ｘ（ｑ）の演算が並行して行われ、
前記Ｘパス加減算器は、Ｋｑ２＊ｘ（ｑ）＋ｚ（ｑ）＊ｙ（ｑ）を出力し、
前記Ｙパス加減算器は、Ｋｑ２＊ｙ（ｑ）−ｚ（ｑ）＊ｘ（ｑ）を出力する、ＣＯＲＤＩＣ演算装置。
【請求項１８】
前記第ｑの回転処理回路の出力ｚ（ｑ）に対するスケーリング処理がスキップされる、ことを特徴とする請求項１７記載のＣＯＲＤＩＣ演算回路。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願についての記載）
本願は、先の日本特許出願２００８−０５６５３４号（２００８年３月６日出願）の優先権を主張するものであり、前記先の出願の全記載内容は、本書に引用をもって繰込み記載されているものとみなされる。【０００２】
本発明は、Ｃｏｏｒｄｉｎａｔｅ  Ｒｏｔａｔｉｏｎ  Ｄｉｇｉｔａｌ  Ｃｏｍｐｕｔｅｒ  （「ＣＯＲＤＩＣ」という）演算回路に関し、特に、線形近似ＣＯＲＤＩＣ演算回路と方法に関する。
【背景技術】
【０００３】
三角関数などの初等関数演算のためのハードウェア向きアルゴリズムとして、ＣＯＲＤＩＣ（ＣＯｏｒｄｉｎａｔｅ  Ｒｏｔａｔｉｏｎ  Ｄｉｇｉｔａｌ  Ｃｏｍｐｕｔｅｒ）アルゴリズムが知られている。ＣＯＲＤＩＣアルゴリズムは、関数を２次元平面上のベクトル回転としてとらえ、予め決められた基本回転角分のベクトル回転を繰り返し計算することで真値を得る反復求解法である。【０００４】
ＣＯＲＤＩＣアルゴリズムは回転座標系（線形、円、双曲線）を選択することにより、シフト加減算とテーブル参照という単純な演算の繰り返しで、乗除算、三角関数演算、指数・対数演算、双曲関数演算等が実行可能であり、ディジタル信号処理分野で広範に用いられている。【０００５】
円座標を例に取ると、ｊ番目の回転処理は、式（１）で表される。【０００６】
2009110560.tif 000003
（１）【０００７】
ここで、ｎは、反復回数である。
また、
2009110560.tif 000004
【０００８】
は回転方向パラメータである。【０００９】
ベクトル［ｘ（０），ｙ（０）］’に対し回転角θの回転を施したベクトル［ｘ（ｎ），ｙ（ｎ）］’は式（２）（３）で表される。【００１０】
2009110560.tif 000005
（２）【００１１】
2009110560.tif 000006
（３）【００１２】
ここで、Ｋｎはスケーリング係数である。【００１３】
ＣＯＲＤＩＣアルゴリズムによる回転は、スケーリングが伴う擬似回転である。スケーリングを補正するため、式（４）に示す処理を行う必要がある。【００１４】
2009110560.tif 000007
（４）【００１５】
ＣＯＲＤＩＣアルゴリズムは、式（５）に示すように、回転角θの回転操作を角度αｊの基本回転の組み合わせとして実現する。【００１６】
2009110560.tif 000008
（５）【００１７】
ＣＯＲＤＩＣアルゴリズムは、式（６）に示す回転方向パラメータσｊの決定方法によりＲｏｔａｔｉｏｎモードと、Ｖｅｃｔｏｒモードの２モードがある。【００１８】
2009110560.tif 000009
（６）【００１９】
Ｒｏｔａｔｉｏｎモードでは、所望角度θをｚ（０）とし、初期ベクトル［ｘ（０），ｙ（０）］’をθ分回転させる処理を行う。【００２０】
Ｖｅｃｔｏｒモードでは、初期角度ｚ（０）を０とし、ベクトルをｘ軸まで回転させ、その回転角度（ｚ（ｎ））と、初期ベクトルのノルム（ｘ（ｎ））を求める処理を行う。【００２１】
ＣＯＲＤＩＣアルゴリズムは、回転処理をｎ回の基本回転で実現しているため、最終基本回転角αｎ−１未満の回転角度誤差が本質的に生じる。【００２２】
ｎビット精度で式（７）が成り立つため（非特許文献１参照）、ＣＯＲＤＩＣアルゴリズムは、所要ビット精度と同じ段数の反復処理を行う必要がある。【００２３】
2009110560.tif 000010
（７）【００２４】
ＣＯＲＤＩＣアルゴリズムを実装する際は、回転角度誤差に加え、シフト加減算に伴う丸め誤差を考慮する必要がある。【００２５】
データパスのビット幅ｂが式（８）を満たす場合、ｎビット精度の出力値が得られることが知られており、その詳細は、非特許文献１および２の記載が参照される。【００２６】
2009110560.tif 000011
（８）【００２７】
ここで、
ｇはオーバーフロー対策のＭＳＢ（Ｍｏｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ）ガードビット数、
ｍは丸め誤差対策のＬＳＢ（Ｌｅａｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ）ガードビット数である。【００２８】
ＣＯＲＤＩＣアルゴリズムは、所要ビット精度と同じ段数の繰り返し構造が必要となるため、乗算器に見られるような並列構造を用いて高速化することが困難である。【００２９】
この問題を解決するため、線形近似ＣＯＲＤＩＣアルゴリズムが提案されている。線形近似ＣＯＲＤＩＣアルゴリズム（Ｒｏｔａｔｉｏｎモード）は、元のアルゴリズムと同様に、ｊ＝０からｎ／２までの式（１）に示す反復処理を行う。【００３０】
次に、ｊ＝ｎ／２＋１からｎ−１までの反復処理の代わりに、式（９））に示す処理を行う。ここでｑ＝ｊ／２である。この処理は、
2009110560.tif 000012
が
2009110560.tif 000013
で線形近似できることを利用しており、線形近似ＣＯＲＤＩＣの名前の由来となっている。【００３１】
2009110560.tif 000014
（９）【００３２】
最後に、式（１０）に示すスケール補正を行う。【００３３】
2009110560.tif 000015
2009110560.tif 000016
（１０）【００３４】
線形近似ＣＯＲＤＩＣは、元のＣＯＲＤＩＣアルゴリズムの後段のシフト加減算反復処理の代わりに、並列構造を用いて高速化可能な乗算を行うことにより処理遅延を短縮している。【００３５】
図３は、第１の関連技術の線形近似ＣＯＲＤＩＣ回路（Ｒｏｔａｔｉｏｎモード）の典型的な構成を示したものである。図３の第１の関連技術の詳細は非特許文献１の記載が参照される。尚、本書では、以降、特に断らないかぎりＲｏｔａｔｉｏｎモードについて言及する。【００３６】
線形近似ＣＯＲＤＩＣ回路１００１は、
第１〜第ｑ回転処理回路１００１〜１００ｑ、
ＸおよびＹパス定数乗算器２００ｘ、２００ｙ、
ＸおよびＹパス変数乗算器３００ｘ、３００ｙ、
ＸおよびＹパス加減算器４００ｘ、４００ｙ
を備えている。【００３７】
第１から第ｑ回転処理回路１００１〜１００ｑは、初期値ｘ（０），ｙ（０），ｚ（０）に対して、式（１）に示す、ｊ＝０からｑ（＝ｎ／２）までの反復処理を行い、ｘ（ｑ），ｙ（ｑ），ｚ（ｑ）を出力する。【００３８】
ここで、ｎは、所要ビット精度である。【００３９】
信号ｘ（ｊ），ｙ（ｊ），ｚ（ｊ）は、全てｂビット幅である。【００４０】
ここで、ｂは、式（８）で表される。【００４１】
ＸおよびＹパス変数乗算器３００ｘ、３００ｙ、ＸおよびＹパス加減算器４００ｘ、４００ｙは、式（９）に示す処理を行い、ｂビット幅のｘ（ｎ），ｙ（ｎ）を出力する。【００４２】
ＸおよびＹパス変数乗算器３００ｘ、３００ｙは、
ｚ［ｑ］＜２−ｑ
であることを利用して、ｘ（ｑ），ｙ（ｑ），ｚ（ｑ）の有効上位（ｎ／２＋ｍ）ビットのみを抽出し、（ｎ／２＋ｍ）ｘ（ｎ／２＋ｍ）ビット変数乗算を行っている。【００４３】
ＸおよびＹパス定数乗算器２００ｘ、２００ｙは、ｘ（ｎ）、ｙ（ｎ）に対し、定数Ｋｑを乗算して式（１０）に示すスケーリング処理を行い、ｂビット幅のスケーリング結果ｘｆ、ｙｆを外部へ出力する。【００４４】
Ｋｑは必ず１未満になるため、ＭＳＢガードビットｇが不要となり、
ｃｔ＝ｂ−ｇ＝ｎ＋ｍビット
で表現できるため、ＸおよびＹパス定数乗算器２００ｘ、２００ｙは、
（ｃｔ）ｘｂビット定数乗算を行っている。【００４５】
第１の関連技術の線形近似ＣＯＲＤＩＣ回路１００１に対し、更に処理遅延を短縮する方法も提案されている。【００４６】
図４は、第２の関連技術の線形近似ＣＯＲＤＩＣ回路の構成を示す図である。第２の関連技術の詳細も非特許文献１に記載されている。【００４７】
第２の関連技術の線形近似ＣＯＲＤＩＣ回路１００２は、
第１〜第ｑ回転処理回路１００１〜１００ｑ、
ＸおよびＹパス定数乗算器２００ｘ、２００ｙ、
ＸおよびＹパス変数乗算器３００ｘ、３００ｙ、
ＸおよびＹパス加減算器４００ｘ、４００ｙと、
Ｚパス定数乗算器５００と、
を備えている。【００４８】
第２の関連技術の線形近似ＣＯＲＤＩＣ回路１００２は、第１の関連技術の線形近似ＣＯＲＤＩＣ回路１００１に対し、Ｚパス定数乗算器５００が追加され、ＸおよびＹパス定数乗算器２００ｘ、２００ｙの配置が、それぞれ、ＸおよびＹパス加減算器４００ｘ、４００ｙの前段に移動されている。これ以外は同じである。【００４９】
第２の関連技術の線形近似ＣＯＲＤＩＣ回路１００２は、第１の関連技術と同様に、回転処理回路１００１〜１００ｑで反復処理を行い、ｘ（ｑ），ｙ（ｑ），  ｚ（ｑ）を求める。【００５０】
Ｚパス定数乗算器５００はｚ（ｑ）に対し、式（１１）に示すスケーリング処理を行う。【００５１】
2009110560.tif 000017
（１１）【００５２】
次に、式（１２）に示す処理を行う。【００５３】
2009110560.tif 000018
（１２）【００５４】
具体的には、ＸおよびＹパス定数乗算器２００ｘ、２００ｙと、ＸおよびＹパス変数乗算器３００ｘ、３００ｙで、ｘ（ｑ），ｙ（ｑ）に対し、ＫｑとＰを乗算し、ＸおよびＹパス加減算器４００ｘ、４００ｙを用いて、乗算結果を加減算し、ｘｆ、ｙｆを求め外部へ出力する。【００５５】
ｚ（ｊ）  （ｊ＞ｎ／３）は、式（７）が成り立つことを利用してＲｅｃｏｄｉｎｇ処理で高速に求めることができるため、Ｚパス定数乗算器５００が追加されても、ｘ（ｑ），ｙ（ｑ）がクリティカルパスになる。【００５６】
Ｒｅｃｏｄｉｎｇ処理の詳細は、非特許文献１に記載されているため説明は省略する。【００５７】
第２の関連技術の線形近似ＣＯＲＤＩＣ回路１００２は、ＸおよびＹパス定数乗算器２００ｘ、２００ｙと、ＸおよびＹパス変数乗算器３００ｘ、３００ｙの処理を並列に実行でき、ＸおよびＹパス加減算器４００ｘ、４００ｙの後段にスケーリング処理が不要になるため、第１の関連技術の線形近似ＣＯＲＤＩＣ回路１００１に比べ、処理遅延を短縮できる利点がある。但し、Ｚパス定数乗算器５００を追加する必要があり、回路規模が増大する。【００５８】
【非特許文献１】Ａｎｔｅｌｏ，  Ｅ．  Ｖｉｌｌａｌｂａ，  Ｊ．，“Ｌｏｗ  ｌａｔｅｎｃｙ  ｐｉｐｅｌｉｎｅｄ  ｃｉｒｃｕｌａｒ  ＣＯＲＤＩＣ”  Ｃｏｍｐｕｔｅｒ  Ａｒｉｔｈｍｅｔｉｃ  ２００５．  ＡＲＩＴＨ−１７  ２００５．  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  １７ｔｈ  ＩＥＥＥ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｃｏｍｐｕｔｅｒ  Ａｒｉｔｈｍｅｔｉｃ，  ｐｐ２８０−  ２８７  Ｊｕｎｅ  ２００５
【非特許文献２】ＹＨ  Ｈｕ，“Ｔｈｅ  ｑｕａｎｔｉｚａｔｉｏｎ  ｅｆｆｅｃｔｓ  ｏｆ  ｔｈｅ  ＣＯＲＤＩＣ  ａｌｇｏｒｉｔｈｍ”  ＩＥＥＥ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｉｎｇ  ４０：４４，  ８３４−８４４  ｐｐ．１８２２−１８２５，  １９８８．
【非特許文献３】Ｅ．  Ｆ．  Ｄｅｐｒｅｔｔｅｒｅ，  Ｐ．  Ｄｅｗｉｌｄｅ，  ａｎｄ  Ｒ．  Ｕｄｏ，  “Ｐｉｐｅｌｉｎｅｄ  ＣＯＲＤＩＣ  ａｒｃｈｉｔｅｃｔｕｒｅｓ  ｆｏｒ  ｆａｓｔ  ＶＬＳＩ  ｆｉｌｔｅｒｉｎｇ  ａｎｄ  ａｒｒａｙ  ｐｒｏｃｅｓｓｉｎｇ，”  ｉｎ  Ｐｒｏｃｅｅｄｉｎｇｓ  ＩＥＥＥ  ＩＣＡＳＳＰ，  ｐｐ．  ４１，  Ｍａｒｃｈ  １９８４．
【発明の開示】
【発明が解決しようとする課題】
【００５９】
以下に本発明による関連技術の分析を与える。【００６０】
第１の関連技術の線形近似ＣＯＲＤＩＣ回路においては、擬似回転処理とスケール補正をシーケンシャルに行うため、処理遅延が増大する、という問題がある。【００６１】
第２の関連技術の線形近似ＣＯＲＤＩＣ回路においては、擬似回転処理の後半処理とスケール補正を並列に行い処理遅延を短縮するために、擬似回転処理の前半処理の残留回転角に対するスケール補正が必要となり、回路規模が増大する、という問題がある。【００６２】
本発明は上記課題に鑑みて創案されたものであって、その目的は、回路規模の縮減を可能とし、処理遅延の短縮を図るＣＯＲＤＩＣ回路及び方法を提供することにある。
【課題を解決するための手段】
【００６３】
本願で開示される発明は、上記課題を解決するため、概略以下の構成とされる。【００６４】
本発明によれば、スケール補正処理を粗補正と微補正の２段階に分割し、擬似回転処理の後半処理とスケール微補正を並列に行うＣＯＲＤＩＣ回路が提供される。【００６５】
本発明によれば、スケール補正処理を粗補正と微補正の２段階に分割し、擬似回転処理の後半処理とスケール微補正を並列に行う方法が提供される。
【発明の効果】
【００６６】
本発明によれば、擬似回転処理の後半処理とスケール微補正を並列に行うことにより、処理遅延を短縮可能としている。【００６７】
本発明によれば、擬似回転処理の前半処理の残留回転角に対するスケール補正が不要になるため、回路規模を小さくすることができる。
【図面の簡単な説明】
【００６８】
【図１】本発明の第１の実施例の構成を示す図である。
【図２】本発明の第１の実施例に含まれるＸパススケール粗補正部の構成を示す図である。
【図３】第１の関連技術の線形近似ＣＯＲＤＩＣ構成を示す図である。
【図４】第２の関連技術の線形近似ＣＯＲＤＩＣ構成を示す図である。
【符号の説明】
【００６９】
１００１〜１００ｑ  第１から第ｑ回転処理回路
２００ｘ  Ｘパス定数乗算器
２００ｙ  Ｙパス定数乗算器
３００ｘ  Ｘパス変数乗算器
３００ｙ  Ｙパス変数乗算器
４００ｘ  Ｘパス加減算器
４００ｙ  Ｙパス加減算器
５００    Ｚパス定数乗算器
６１０ｘ  Ｘパススケール粗補正部
６１０ｙ  Ｙパススケール粗補正部
６２０ｘ  Ｘパススケール微補正部
６２０ｙ  Ｙパススケール微補正部
６１１１〜６１１ｋ  第１から第ｋキャリーリプル加減算器
６１２１〜６１２ｋ  第１から第ｋバレルシフタ
１０００  線形近似ＣＯＲＤＩＣ回路
１００１  線形近似ＣＯＲＤＩＣ回路
１００２  線形近似ＣＯＲＤＩＣ回路
【発明を実施するための最良の形態】
【００７０】
次に、本発明の実施の形態について説明する。本発明の線形近似ＣＯＲＤＩＣ回路においては、スケール補正処理を粗補正と微補正の２段階に分割し、擬似回転処理の後半処理とスケール微補正を並列に行う。【００７１】
本発明の一実施の形態においては、前記擬似回転処理の後半処理を乗算で実現するようにしてもよい。【００７２】
本発明の一実施の形態においては、前記スケール微補正の範囲を、前記擬似回転処理の前半処理の残留回転角に対するスケール補正が不要にするように設定してもよい。【００７３】
本発明の一実施の形態においては、前記スケール補正処理を、繰り返しシフト加減算で行い、シフト量が所要ビット精度の半分以上の繰り返しシフト加減算処理で、前記スケール微補正を行い、前記シフト量が所要ビット精度の半分未満の繰り返しシフト加減算処理で、前記スケール粗補正を行うようにしてもよい。【００７４】
本発明においては、前記繰り返しシフト加減算を、キャリーリプル加減算器で行うようにしてもよい。【００７５】
本発明においては、ベクトル（Ｘ，Ｙ）と回転角（Ｚ）を入力とするＣＯＲＤＩＣ演算回路が、前記ベクトルのＸ成分（ｘ［０］）に対してスケール粗補正を行い、粗補正用のスケーリング係数（Ｋｑ１）と前記Ｘ成分（ｘ［０］）の乗算結果（Ｋｑ１＊ｘ［０］）を出力するＸパススケール粗補正部（６１０ｘ）と、前記ベクトルのＹ成分（ｙ［０］）に対してスケール粗補正を行い、粗補正用のスケーリング係数（Ｋｑ１）と前記Ｙ成分（ｙ［０］）の乗算結果（Ｋｑ１＊ｙ［０］）を出力するＹパススケール粗補正部（６１０ｙ）と、縦続接続された複数段（ｑ段）の回転処理回路（１００１〜１００ｑ）を備えている。初段の回転処理回路（１００１）は、前記ＸおよびＹパススケール粗補正部からそれぞれ出力されるＸ成分およびＹ成分と回転角（Ｚ）とを入力して回転処理の反復処理を行い、後段の回転処理回路は、前段の回転処理回路から出力されるＸ成分およびＹ成分と回転角とを入力して回転処理の反復処理を行う。さらに、最終段の回転処理回路（１００ｑ）から出力されるＸ成分に対してスケール微補正処理を行い、微補正用のスケーリング係数と前記Ｘ成分の乗算結果を出力するＸパススケール微補正部（６２０ｘ）と、最終段の回転処理回路（１００ｑ）から出力されるＹ成分に対してスケール微補正処理を行い、微補正用のスケーリング係数と前記Ｙ成分の乗算結果を出力するＹパススケール微補正部（６２０ｙ）と、前記Ｘパススケール微補正部（６２０ｘ）に並置され、最終段の前記回転処理回路（１００ｑ）から出力されるＹ成分ｙ［ｑ］に対して、最終段の前記回転処理回路（１００ｑ）からの回転角度ｚ［ｑ］を乗算するＸパス変数乗算器（３００ｘ）と、Ｙパススケール微補正部（６２０ｙ）に並置され、最終段の前記回転処理回路（１００ｑ）から出力されるＸ成分ｘ［ｑ］に対して、最終段の前記回転処理回路（１００ｑ）からの回転角度（ｚ［ｑ］）を乗算するＹパス変数乗算器（３００ｙ）と、Ｘパススケール微補正部（６２０ｘ）での乗算結果（Ｋｑ２＊ｘ［ｑ］）とＸパス変数乗算器（３００ｘ）での乗算結果（ｚ［ｑ］＊ｙ［ｑ］）とを加算した結果（Ｋｑ２＊ｘ［ｑ］＋ｚ［ｑ］＊ｙ［ｑ］）を出力するＸパス加減算器（４００ｘ）と、Ｙパススケール微補正部（６２０ｙ）での乗算結果（Ｋｑ２＊ｙ［ｑ］）とＹパス変数乗算器（３００ｙ）での乗算結果（ｚ［ｑ］＊ｘ［ｑ］）を減算した結果（Ｋｑ２＊ｙ［ｑ］−ｚ［ｑ］＊ｘ［ｑ］）を出力するＹパス加減算器（４００ｙ）と、を備えている。【００７６】
本発明の一実施の形態においては、Ｘパススケール粗補正部（６１０ｘ）およびＹパススケール粗補正部（６１０ｙ）において、前記スケール補正処理を、繰り返しシフト加減算で行い、前記シフト量が、所要ビット精度の半分未満の繰り返しシフト加減算処理で、スケール粗補正を行うようにしてもよい。【００７７】
本発明の一実施の形態においては、Ｘパススケール粗補正部（６１０ｘ）およびＹパススケール粗補正部（６１０ｙ）は、前段からの入力をシフトするバレルシフタと、前段からの入力と前記バレルシフタの出力を入力し加算又は減算するキャリーリプル加減算器の組を複数段含む。【００７８】
本発明の一実施の形態においては、Ｘパススケール微補正部（６２０ｘ）およびＹパススケール微補正部（６２０ｙ）において、前記スケール補正処理を、繰り返しシフト加減算で行い、シフト量が所要ビット精度の半分以上の繰り返しシフト加減算処理で、前記スケール微補正を行うようにしてもよい。【００７９】
本発明の一実施の形態においては、Ｘパススケール微補正部（６２０ｘ）およびＹパススケール微補正部（６２０ｙ）は、前段からの入力をシフトするバレルシフタと、前段からの入力と前記バレルシフタの出力を入力し加算又は減算するキャリーリプル加減算器の組を複数段含む構成としてもよい。【００８０】
本発明の一実施の形態においては、複数段縦続接続された回転処理回路を、入力段側に備え、前記ＸおよびＹパススケール粗補正部（６１０ｘ、６１０ｙ）を前記複数段縦続接続された回転処理回路の後段に備えた構成としてもよい。【００８１】
図１は、本発明の一実施形態の線形近似ＣＯＲＤＩＣ回路の構成を示す図である。図１を参照すると、本実施形態の線形近似ＣＯＲＤＩＣ回路１０００は、
第１から第ｑ回転処理回路１００１〜１００ｑと、
ＸおよびＹパススケール粗補正部６１０ｘ、６１０ｙと、
ＸおよびＹパススケール微補正部６２０ｘ、６２０ｙと、
ＸおよびＹパス変数乗算器３００ｘ、３００ｙと、
ＸおよびＹパス加減算器４００ｘ、４００ｙと、
を備えている。【００８２】
図１の本実施形態の線形近似ＣＯＲＤＩＣ回路１０００を、図３の第１の関連技術の線形近似ＣＯＲＤＩＣ回路１００１と比較すると、本実施形態においては、図３のＸおよびＹパス定数乗算器２００ｘ、２００ｙの機能が、ＸおよびＹパススケール粗補正部６１０ｘ、６１０ｙとＸおよびＹパススケール微補正部６２０Ｘ、６２０ｙに分離され、ＸおよびＹパススケール粗補正部６１０ｘ、６１０ｙはそれぞれ、入力段に配置され、ＸおよびＹパススケール微補正部６２０ｘ、６２０ｙはそれぞれＸおよびＹパス加減算器４００ｘ、４００ｙの前段に配置されている。【００８３】
また、本実施形態の線形近似ＣＯＲＤＩＣ回路１０００は、図４に示した第２の関連技術の線形近似ＣＯＲＤＩＣ回路１００２と比較すると、本実施形態においては、図４のＸおよびＹパス定数乗算器２００ｘ、２００ｙの機能を、ＸおよびＹパススケール粗補正部６１０ｘ、６１０ｙと、ＸおよびＹパススケール微補正部６２０Ｘ、６２０ｙに分離し、スケール粗補正を、入力ベクトル［ｘ（０），ｙ（０）］’に対して行うことにより、Ｚパス定数乗算器５００を不要としている。【００８４】
本実施形態の動作および構成に関して、所要ビット精度をｎとした場合を例に、説明する。【００８５】
式（１０）に示すスケーリング係数Ｋｑは、式（１３）に示す繰り返しシフト加算処理で近似できる。式（１３）中のｑはｎ／２である。
2009110560.tif 000019
はｊ＝０からｊ＝ｎ／２までの乗積を表す。【００８６】
2009110560.tif 000020
（１３）【００８７】
ここで、０以外の値を取るγはｌｏｇ２（ｎ）以下にできることが知られている（詳細は、非特許文献３の記載が参照される）。【００８８】
本実施形態では、スケール補正を行う繰り返しシフト加算処理を、シフト量がｎ／２以上のスケール微補正部と、ｎ／２未満の粗補正処理の２段階に分ける。【００８９】
このように、微補正スケール範囲を設定することにより、擬似回転処理の前半処理部分の残留回転角、つまり回転処理回路１００１〜１００ｑの出力ｚ［ｑ］に対するスケール補正が不要になる。【００９０】
スケーリング係数Ｋｑは、式（１４）に示すようにＫｑ１とＫｑ２の積として表される。Ｋｑ１は、式（１５）に示すように、ｎ／２未満の粗補正処理の繰り返しシフト加算処理で導出（近似）される。Ｋｑ２は、式（１６）に示すように、シフト量がｎ／２以上のスケール微補正処理の繰り返しシフト加算処理で導出（近似）される。【００９１】
2009110560.tif 000021
（１４）【００９２】
2009110560.tif 000022
（１５）【００９３】
2009110560.tif 000023
（１６）【００９４】
本実施形態の線形近似ＣＯＲＤＩＣ回路１０００は、入力ベクトル［ｘ（０），ｙ（０）］’、所望回転角ｚ（０）を入力とし、入力ベクトル［ｘ（０），ｙ（０）］’がＸおよびＹパススケール粗補正部６１０ｘ、６１０ｙに供給される。【００９５】
ＸおよびＹパススケール粗補正部６１０ｘ、６１０ｙは、入力ベクトル［ｘ（０），ｙ（０）］’に対し、スケール粗補正処理を行い、Ｋｑ１ｘ（０）、Ｋｑ１ｙ（０）を第１回転処理回路１００１へ供給する（Ｋｑ１は式（１５））。【００９６】
第１回転処理回路１００１はＫｑ１ｘ（０）、Ｋｑ１ｙ（０）、ｚ（０）を入力とし、式（１７）に示す処理を行い、ｘ（１），ｙ（１），ｚ（１）を第２回転処理回路１００２に供給する。なお、式（１７）のsignは符号演算子である。
【００９７】
2009110560.tif 000024
（１７）【００９８】
第２から第ｑ回転処理回路１００２〜１００ｑはｘ（１）、ｙ（１）、ｚ（１）に対して式（１８）に示す反復処理を行い、ｘ（ｑ）、ｙ（ｑ）、ｚ（ｑ）を出力する。信号ｘ（ｊ）、ｙ（ｊ）、ｚ（ｊ）（ｊ＝０〜ｑ）は、全てｂビット幅である。ここでｂは、式（８）で表される。【００９９】
2009110560.tif 000025
（１８）【０１００】
第２の関連技術の線形近似ＣＯＲＤＩＣ回路１００２と等価な処理を行う場合は、式（１９）、（２０）に示す処理をｘ（ｑ）、ｙ（ｑ）、ｚ（ｑ）について行えばよい。【０１０１】
2009110560.tif 000026
（１９）【０１０２】
2009110560.tif 000027
（２０）【０１０３】
ここで、元の（線形近似でない）ＣＯＲＤＩＣでは、最終基本回転角αｎ−１（≒２−（ｎ−１））未満の回転角度誤差が本質的に生じるが、ｎビット精度を実現できることを考慮すると、式（１９）に示すＰにＫｑ２αｎ−１未満の誤差が生じても問題ないことが分かる。【０１０４】
ここで、ｚ（ｑ）に対するスケ−リング処理を行わなかった場合の角度誤差Ｅは、ｚ（ｑ）が２−ｎ／２未満であることを考慮すると、２−ｎ未満となり、Ｋｑ２αｎ−１の近似値２−ｎ＋１より小さくなる。【０１０５】
そこで、本実施形態の線形近似ＣＯＲＤＩＣ回路１０００では、ｚ（ｑ）に対するスケ−リング処理をスキップできる。【０１０６】
2009110560.tif 000028
（２１）【０１０７】
2009110560.tif 000029
（２２）【０１０８】
具体的には、ＸおよびＹパス定数乗算器２００ｘ、２００ｙ（ＸおよびＹパススケール微補正部６２０ｘ、６２０ｙ）と、ＸおよびＹパス変数乗算器３００ｘ、３００ｙでｘ（ｑ），ｙ（ｑ）に対し、Ｋｑ２とｚ（ｑ）を乗算し、ＸおよびＹパス加減算器４００ｘ、４００ｙを用いて、式（２３）に従い乗算結果を加減算し、ｘｆ、ｙｆを求め、外部へ出力する。【０１０９】
2009110560.tif 000030
（２３）【０１１０】
図２に、本実施形態のＸパススケール粗補正部６１０ｘの構成例を示す。ここで、式（１３）に示す繰り返しシフト加減算処理内で、γが０以外の値であり、かつシフト量がｎ／２以下のシフト加減算処理数をｋ、そのシフト量をｓ０，．．，ｓｋ−１とする。【０１１１】
この場合、本実施例のＸパススケール粗補正部６１０ｘは、第１から第ｋキャリーリプル加減算器６１１１〜６１１ｋ、第１から第ｋバレルシフタ６１２１〜６１２ｋから構成される。第１から第ｋバレルシフタ６１２１〜６１２ｋはシフト量をｓ０，．．，ｓｋ−１に従って、前段からの入力信号をシフトする。【０１１２】
第１から第ｋキャリーリプル加減算器６１１１〜６１１ｋは、γｓ０〜γｓｋ−１に従って、シフトされた信号と元の信号を、加算もしくは減算する。【０１１３】
ｎ＝１６の場合、Ｋｑは、{１＋２＾(−２)}＊{１−２＾(−５)}＊{１＋２＾(−９)}＊{１＋２＾(−１０)}で表され（ただし、＾は冪乗）、ｋ＝２、ｓ０＝２，ｓ１＝５となる。【０１１４】
Ｙパススケール粗補正部６１０ｙ、ＸおよびＹパススケール微補正部６２０ｘ、６２０ｙも同様の構成で実現できる。【０１１５】
キャリーリプル加減算器は、ＬＳＢ側から加減算結果が確定するため、繰り返しシフト加減算処理を行うと、シフト量が大きくなるほど、前段のＭＳＢ側が確定するまで演算を始められない問題が生じる。【０１１６】
この問題により発生する遅延を、「シフトリプル遅延」と呼称し、１ビットシフトによるシフトリプル遅延を１シフトリプル遅延として規格化する。配線遅延を無視すると、スケール補正部のＬＳＢビット出力遅延は、スケール補正部内の総シフト量分のシフトリプル遅延に一致する。従って、繰り返し段数が同じ場合、スケール粗補正部６１０ｘ、６１０ｙとスケール微補正部６２０ｘ、６２０ｙでは、必ずスケール微補正部６２０ｘ、６２０ｙの遅延が大きくなる。【０１１７】
ｎ＝１６の場合、その遅延比は、（９＋１０）／（２＋５）＝２．７倍になる。また、全シフトリプル遅延の内、スケール粗補正部の占める割合は、（２＋５）／（２＋５＋９＋１０）＝２７％となる。【０１１８】
なお、本実施構成は、キャリーリプル加減算器を例に説明したが、本発明は加減算器方式に依存しないことは勿論である。【０１１９】
本実施形態は、スケール補正処理全体遅延に対して、スケール粗補正部の占める割合は非常に低いため、第２の関連技術の線形近似ＣＯＲＤＩＣ回路１００２と比較して、殆ど処理遅延は増加しない。一方、Ｚパスに対するスケ−リング処理が不要なため回路規模を削減できる。【０１２０】
また、本実施形態は、スケール補正処理全体による遅延の大部分を占めるスケール微補正部をＸおよびＹパス定数乗算器２００ｘ、２００ｙと並列に処理するため、第１の関連技術の線形近似ＣＯＲＤＩＣ回路１００１と比較して、大幅に処理遅延を短縮できる。【０１２１】
なお、本実施形態は、スケール補正を繰り返しシフト加算で実現し、シフト量がｎ／２以上のスケール微補正部とｎ／２未満の粗補正処理の２段階に分ける場合を例に説明したが、本発明は、微補正スケール範囲が擬似回転処理の前半処理部分の残留回転角に対するスケール補正が不要にするように設定されていれば、スケール補正の実現方式に依存せず有効であることは勿論である。【０１２２】
また、本実施形態は、スケール粗補正を入力段で行っている場合を例に説明したが、本発明は、かかる構成に限定されるものではなく、スケール粗補正の位置に依存せずに有効であることは勿論である。例えばＸおよびＹパススケール粗補正部６１０ｘ、６１０ｙを第１乃至第ｑ回転処理部１００１〜１００ｑの後段に配置してもよい【０１２３】
なお、上記非特許文献１、２、３の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素の多様な組み合わせないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【図１】
2009110560.tif 000045
【図２】
2009110560.tif 000046
【図３】
2009110560.tif 000047
【図４】
2009110560.tif 000048
【国際調査報告】
2009110560.tif 000049
2009110560.tif 000050
2009110560.tif 000051