(57)【要約】【課題】規模の小さい固定小数点を用いた逆正接演算において、小さい値に対しても高精度の逆正接演算を可能にすること。【解決手段】逆正接演算回路５０は、ｘ座標の入力データ及びｙ座標の入力データを同じ量左ビットシフトする左シフト回路５２と、左ビットシフトした前記入力データに対し、ＣＯＲＤＩＣアルゴリズムのＶＥＣＴＯＲモードによる逆正接演算を行う演算回路１２とを備える。【選択図】図５
2013246772.tif 000002
【特許請求の範囲】
【請求項１】
処理装置が、ＣＯＲＤＩＣアルゴリズムのＶＥＣＴＯＲモードによる固定小数点を用いた逆正接演算を実行する逆正接演算方法において、
前記逆正接演算を実行する前に、前記処理装置により、ｘ座標の入力データ及びｙ座標の入力データを同じ量左ビットシフトすることを特徴とする逆正接演算方法。
【請求項２】
処理装置による固定小数点を用いた逆正接演算方法であって、前記処理装置により、
ｘ座標の入力データ及びｙ座標の入力データを同じ量左ビットシフトするステップと、
左ビットシフトした前記入力データに対し、ＣＯＲＤＩＣアルゴリズムのＶＥＣＴＯＲモードによる逆正接演算を行うステップと、
を実行することを特徴とする逆正接演算方法。
【請求項３】
固定小数点を用いる逆正接演算回路であって、
ｘ座標の入力データ及びｙ座標の入力データを同じ量左ビットシフトするシフト部と、
左ビットシフトした前記入力データに対し、ＣＯＲＤＩＣアルゴリズムのＶＥＣＴＯＲモードによる逆正接演算を行う演算部と、
を備えることを特徴とする逆正接演算回路。
【請求項４】
前記入力データに基づきシフト量を決定するシフト量決定部をさらに備え、
前記シフト部は、前記入力データを前記シフト量に基づき同じ量左ビットシフトすることを特徴とする請求項３に記載の逆正接演算回路。
【請求項５】
固定小数点を用いた逆正接演算方法のためのプログラムであって、処理装置に、
ｘ座標の入力データ及びｙ座標の入力データを同じ量左ビットシフトするステップと、
左ビットシフトした前記入力データに対し、ＣＯＲＤＩＣアルゴリズムのＶＥＣＴＯＲモードによる逆正接演算を行うステップと、
を実行させることを特徴とするプログラム。
【請求項６】
請求項５に記載したプログラムをコンピュータにより読み取り可能に記憶した記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＦＭ復調、ＰＭ復調、ＦＳＫ復調、ＰＳＫ復調で用いられる逆正接演算回路および逆正接演算方法に関する。
【背景技術】
【０００２】
特許文献１には、浮動小数点を使った三角関数等の演算方式が開示されている。
【０００３】
また、非特許文献１には、一般的な浮動小数点回路の構成が開示されている（同文献、第２１１頁、図４．７２参照）。
【０００４】
これらの浮動小数点を使った演算方式では一般的に演算精度が高いが、仮数と指数の演算回路をそれぞれ必要とするため、回路規模が大きいという問題がある。
【０００５】
例えば、ＣＯＲＤＩＣアルゴリズムのＶＥＣＴＯＲモードによる逆正接演算は、一般的に、加算部、減算部、ａｒｃｔａｎのテーブル、を夫々用意することによって実現する。この場合、演算精度を上げるため浮動小数点を使った演算方式で行うと、加算減算に大きな回路が必要である。
【０００６】
一方、回路規模を小さくするため、固定小数点を使った演算方式を用いると、ビットが固定されるため、小さい値に対して演算精度が低いという問題がある。
【０００７】
図１は、従来の逆正接演算回路の一例を示す。
【０００８】
この逆正接演算回路１０は、演算回路１２を備えており、ＣＯＲＤＩＣアルゴリズムのＶＥＣＴＯＲモードによる逆正接演算が固定小数点を使って行われる。演算回路７２は、ベクトルの座標（ｘ、ｙ）に相当する入力データｘ、ｙを入力し、ベクトルとｘ軸がなす角度ａｒｃｔａｎ（ｙ／ｘ）を出力データとして出力する。
【０００９】
ＣＯＲＤＩＣのＶＥＣＴＯＲモードによる逆正接演算は、次式（１）−（３）に従って行われる。
ｘ（ｉ＋１）＝ｘ（ｉ）＋ｄ（ｉ）・ｙ（ｉ）・２＾（−ｉ）・・（１）
ｙ（ｉ＋１）＝ｙ（ｉ）−ｄ（ｉ）・ｘ（ｉ）・２＾（−ｉ）・・（２）
ｚ（ｉ＋１）＝ｚ（ｉ）＋ｄ（ｉ）・ａｒｃｔａｎ（２＾（−ｉ））・・（３）
ただし、
ｄ（ｉ）＝１  ：ｙ≧０
ｄ（ｉ）＝−１  ：ｙ＜０
ｉ＝０，１，・・・
と表される。ここで、ａｒｃｔａｎ（２＾（−ｉ））は予め、ＲＯＭなどにａｒｃｔａｎのテーブルを持っておく。
【００１０】
図２は、ＣＯＲＤＩＣのＶＥＣＴＯＲモードによる逆正接演算の演算手順の一例を示すフローチャートである。
【００１１】
ここで、ｘ、ｙは入力データ、ｚは出力データ（角度）、ｄ、ｉは内部信号である。
【００１２】
はじめに初期設定を行う。ステップ１において、入力データｘ、ｙにベクトルの座標（ｘ、ｙ）の値を入力するとともにｚに初期値（０）を入力する。このときの、ベクトルの座標（ｘ、ｙ）およびベクトルとｘ軸がなす角度とｘ、ｙ軸との関係を図３（ａ）に示す。ステップ２において、内部信号ｉに初期値（０）を入力する。
【００１３】
次に、次のベクトルの方向を判定する。ここでは、入力データｙが正か負かを判定し、ベクトルがｘ軸に向かうようにその方向を決める。ステップ３において、入力データｙが正か負かを判定する。入力データｙが負の場合、ステップ４に進み内部信号ｄに−１を入力し、入力データｙが正の場合、ステップ５に進み内部信号ｄに１を入力する。
【００１４】
続いて、ステップ６においてａｒｃｔａｎ（２＾（−ｉ））の演算が必要になるが、予め決められた繰り返し回数に応じたＲＯＭテーブルに用意されているため簡単に値を算出できる。ステップ６において、上述した式（１）〜（３）の計算を行う。ステップ７において、内部信号ｉに１を加算する。ステップ８において、ステップ７で内部信号ｉに１を加算した値が、予め決められた繰り返し回数に達したかどうか判定する。達していないと判定された場合は、ステップ３に戻り、達したと判定された場合は、処理を終了する。このときの、ベクトル加算が行われる様子を図３（ｂ）に示し、予めＲＯＭデータとして持っているａｒｃｔａｎ（２＾（−１））の模式図の一例を図３（ｃ）に示す。
【００１５】
そして、このアルゴリズムは繰り返し回数が多いほど精度が向上する。具体的に，ｉ＝０〜３まで４回繰り返した場合、式（１）、（２）は、ｉ＝０，１，２，３について、次式（４）−（１１）のようになる。
ｉ＝０
ｘ（１）＝ｘ（０）＋ｄ（０）・ｙ（０）＞＞１  ・・・（４）
ｙ（１）＝ｙ（０）＋ｄ（０）・ｘ（０）＞＞１  ・・・（５）
ｉ＝１
ｘ（２）＝ｘ（１）＋ｄ（１）・ｙ（１）＞＞２  ・・・（６）
ｙ（２）＝ｙ（１）＋ｄ（１）・ｘ（１）＞＞２  ・・・（７）
ｉ＝２
ｘ（３）＝ｘ（２）＋ｄ（２）・ｙ（２）＞＞３  ・・・（８）
ｙ（３）＝ｙ（２）＋ｄ（２）・ｘ（２）＞＞３  ・・・（９）
ｉ＝３
ｘ（４）＝ｘ（３）＋ｄ（３）・ｙ（３）＞＞４  ・・・（１０）
ｙ（４）＝ｙ（３）＋ｄ（３）・ｘ（３）＞＞４  ・・・（１１）
【００１６】
ここで、ｙ＞＞ｉはｙ・２＾（−ｉ）を表しており、ｉビットだけ右にシフト演算していることと等価である。
【先行技術文献】
【特許文献】
【００１７】
【特許文献１】特開昭６３−１１３６２９号公報（特公平７−０７２８６０号公報）
【非特許文献】
【００１８】
【非特許文献１】コンピュータの構成と設計（上）  ジョン・Ｌ・ヘネシー、デイビッド・Ａ・パターソン著、日経ＢＰ社発行、Ｐ２１１
【発明の概要】
【発明が解決しようとする課題】
【００１９】
しかし、上記従来の逆正接演算回路では、上述のように右ビットシフト演算が繰り返し行われるため、演算が途中でできなくなってしまい精度が出なくなるという問題がある。
【００２０】
例えば、図４に示すようなビット構成の場合について考える。
【００２１】
図４は、入力データｘ、ｙの値を符号付固定小数点で表した図であり、点が小数点を、小数点以上の１ビットが符号を、小数点以下のビットが小数部を表している。この場合は、整数部がなく、表現できる数値は、−１≦ｘ、ｙ＜１である。図４に示した入力データの場合、２ビット以上の右シフトでｙがゼロとなってしまうため、以降の演算ができなくなってしまい、これ以上の精度が出なくなる。
【００２２】
本発明は上記の点に鑑みて案出されたものであって、その目的は、規模の小さい固定小数点を用いた逆正接演算において、小さい値に対しても高精度の逆正接演算を可能にすることである。
【課題を解決するための手段】
【００２３】
上記目的を達成する本発明の一態様は、処理装置が、ＣＯＲＤＩＣアルゴリズムのＶＥＣＴＯＲモードによる固定小数点を用いた逆正接演算を実行する逆正接演算方法において、前記逆正接演算を実行する前に、前記処理装置により、ｘ座標の入力データ及びｙ座標の入力データを同じ量左ビットシフトする。
【００２４】
上記目的を達成する本発明の他の態様は、処理装置による固定小数点を用いた逆正接演算方法であって、前記処理装置により、ｘ座標の入力データ及びｙ座標の入力データを同じ量左ビットシフトするステップと、左ビットシフトした前記入力データに対し、ＣＯＲＤＩＣアルゴリズムのＶＥＣＴＯＲモードによる逆正接演算を行うステップとを実行する。
【００２５】
上記目的を達成する本発明の他の態様は、固定小数点を用いる逆正接演算回路であって、ｘ座標の入力データ及びｙ座標の入力データを同じ量左ビットシフトするシフト部と、左ビットシフトした前記入力データに対し、ＣＯＲＤＩＣアルゴリズムのＶＥＣＴＯＲモードによる逆正接演算を行う演算部とを備える。
【００２６】
上記目的を達成する本発明の他の態様は、固定小数点を用いた逆正接演算方法のためのプログラムであって、処理装置に、ｘ座標の入力データ及びｙ座標の入力データを同じ量左ビットシフトするステップと、左ビットシフトした前記入力データに対し、ＣＯＲＤＩＣアルゴリズムのＶＥＣＴＯＲモードによる逆正接演算を行うステップと、を実行させる。
【００２７】
上記目的を達成する本発明の他の態様は、上記プログラムをコンピュータにより読み取り可能に記憶する。
【発明の効果】
【００２８】
上記構成を備えた本発明によれば、規模の小さい固定小数点を用いた演算回路において、小さい値に対しても、高精度な逆正接演算を実現することが可能となる。
【図面の簡単な説明】
【００２９】
【図１】従来の逆正接演算回路の一例を示す回路図である。
【図２】ＣＯＲＤＩＣのＶＥＣＴＯＲモードによる逆正接演算の演算手順の一例を示すフローチャートである。
【図３】図２に示した演算手順を説明する図である。
【図４】入力データｘ、ｙの値を符号付固定小数点で表した図である。
【図５】本発明の一実施の形態に係る逆正接演算回路を示す回路図である。
【図６】本発明の一実施の形態における、ＣＯＲＤＩＣアルゴリズムのＶＥＣＴＯＲモードによる逆正接演算の演算手順を示すフローチャートである。
【図７】図６に示した演算手順を説明する図である。
【図８】本発明の一実施の形態に係る逆正接演算回路の動作を説明する図である。
【図９】本発明の一実施の形態において、シフト量を決定するため演算手順のフローチャートである。
【図１０】ＦＭ復調器に本発明の一実施の形態に係る逆正接演算回路を用いた例を示す回路図である。
【発明を実施するための形態】
【００３０】
以下、本発明の実施の形態について図面を参照して説明する。なお、本発明の技術的範囲は特許請求の範囲の記載により画定されるものであって、以下に例示する実施形態に限定されることなく、特許請求の範囲の記載の範囲で他の種々の変形形態を実施できることに留意が必要である。
【００３１】
図５は、本発明の一実施の形態に係る逆正接演算回路を示す。
【００３２】
この逆正接演算回路５０は、演算回路１２を備え、さらに、左シフト回路５２とシフト量決定回路５４を備えており、ＣＯＲＤＩＣアルゴリズムのＶＥＣＴＯＲモードによる逆正接演算を固定小数点を使って行うことができる。
【００３３】
左シフト回路５２は、ベクトルの座標（ｘ、ｙ）に相当する入力データｘ、ｙが入力され、シフト量決定回路５４からのシフト量αに基づき、ｘ、ｙに対し同じ量だけ左ビットシフトを行って、α・ｘ、α・ｙを出力する。ここでα＝２＾ｉ（ｉ＝１、２、・・・）である。
【００３４】
シフト量決定回路５４は、入力データｘ、ｙに基づき、シフト量αを算出する。
【００３５】
演算回路１２は、左シフト回路５２からデータα・ｘ、α・ｙを入力し、それらを新たな入力データｘ、ｙとして、角度ａｒｃｔａｎ（ｙ／ｘ）を出力データとして出力する。
【００３６】
次に、本発明の実施の形態に係る逆正接演算回路５０の動作を説明する。
【００３７】
図６は、本発明の実施の形態における、ＣＯＲＤＩＣアルゴリズムのＶＥＣＴＯＲモードによる逆正接演算の演算手順を示すフローチャートである。
【００３８】
はじめに初期設定を行う。ステップ６０において、入力データｘ、ｙにベクトルの座標（ｘ、ｙ）の値を入力するとともにｚに初期値（０）を入力する。このときの、ベクトルの座標（ｘ、ｙ）およびベクトルとｘ軸がなす角度とｘ、ｙ軸との関係を図７（ａ）に示す。そして、ステップ６１において、ｘ、ｙを同じ量だけ左ビットシフトさせ、左ビットシフトを行ったα・ｘ、α・ｙを新たな入力データｘ、ｙとする。このときの、シフト前後のベクトルの座標（ｘ、ｙ）およびベクトルとｘ軸がなす角度とｘ、ｙ軸との関係を図７（ｂ）に示す。ステップ６２において、内部信号ｉに初期値（０）を入力する。以下は、左ビットシフトを行った新たな入力データに対し、同様に、ＣＯＲＤＩＣアルゴリズムのＶＥＣＴＯＲモードによる逆正接演算を行う。
【００３９】
次に、次のベクトルの方向を判定する。ここでは、左ビットシフトを行った入力データｙが正か負かを判定し、ベクトルがｘ軸に向かうようにその方向を決める。ステップ６３において、左ビットシフトを行った入力データｙが正か負かを判定する。左ビットシフトを行った入力データｙが負の場合、ステップ６４に進み内部信号ｄに−１を入力し、左ビットシフトを行った入力データｙが正の場合、ステップ６５に進み内部信号ｄに１を入力する。
【００４０】
続いて、ステップ６においてａｒｃｔａｎ（２＾（−ｉ））の演算が必要になるが、予め決められた繰り返し回数に応じたＲＯＭテーブルに用意されているため簡単に値を算出できる。ステップ６６において、上述した式（１）〜（３）に従い計算を行う。ステップ６７において、内部信号ｉに１を加算する。ステップ６８において、ステップ６７で内部信号ｉに１を加算した値が、予め決められた繰り返し回数に達したかどうか判定する。達していないと判定された場合はステップ６３に戻り、達したと判定された場合は処理を終了する。このときの、ベクトル加算が行われる様子を図７（ｃ）に示し、予めＲＯＭデータとして持っているａｒｃｔａｎ（２＾（−１））の模式図の一例を図７（ｄ）に示す。
【００４１】
図５に示した構成を備え、図６に示した演算手順を実施する、本発明の実施の形態に係る逆正接演算回路５０の動作について、例えば、図８のようなビット構成の場合を考える。
【００４２】
図８は、入力データｘ、ｙの値を符号付固定小数点で表した図であり、点が小数点を、小数点以上の１ビットが符号を、小数点以下のビットが小数部を表している。この場合は、整数部がなく、表現できる数値は、−１≦ｘ、ｙ≦１である。
【００４３】
図８（ａ）に示す入力データの場合、２ビット以上の右シフトでｙがゼロとなってしまう。そこで、図８（ｂ）に示すように、ＣＯＲＤＩＣアルゴリズムのＶＥＣＴＯＲモードによる逆正接演算を行う前に、左に４ビットのビットシフトをしておくことにより、次にＣＯＲＤＩＣアルゴリズムのＶＥＣＴＯＲモードによる逆正接演算を行うときに、５ビット分の右シフトまで演算が可能となり、高精度の演算が可能となる。
【００４４】
ここで、４ビット左シフトを行うことにより、ｘ、ｙの絶対値が大きくなる。しかし、逆正接演算の場合、極座標から角度を求めるため、ｘ、ｙに対し同じ量だけ左ビットシフトを行うのであれば、角度は変わることなく、精度が高くなるのみである。
【００４５】
これを一般化すると、図８（ｂ）の一例に示すように、±１を超えない最大の数に、ｘ、ｙのセットをビットシフトすることで、小さな数に対しても精度の高い逆正接演算を行うことができる。
【００４６】
図９は、シフト量αを決定するため演算手順のフローチャートである。
【００４７】
ステップ９１において、入力データｘの絶対値とｙの絶対値とを比較する。入力データｘの絶対値がｙの絶対値よりも大きい場合、ステップ９２に進み内部信号ＬＧにｘの絶対値を入力いる。一方、入力データｘの絶対値がｙの絶対値よりも小さい場合、ステップ９３に進み内部信号ＬＧにｙの絶対値を入力する。ステップ９２または９３に続きステップ９４において、内部信号ＬＧに対し、次式（１１）に基づきシフト量αを算出する。
α＝ｆｌｏｏｒ｛−ｌｏｇ（２・ＬＧ）｝−１  ・・・（１１）
ここで、ｆｌｏｏｒ（Ｘ）は床関数であり、実数Ｘに対してＸ以下の最大の整数を表す。式（１１）に従った演算により、±１を超えない最大の数に、ｘ、ｙのセットをビットシフトする。
【００４８】
なお、図５に示した回路は本発明の一例としてのハードウエアの構成を表したものであって、マイクロコンピュータやＤＳＰ等の処理装置（制御・演算装置）上でメモリデバイスを使用して動作するソフトウエアで本発明を実現することもできる。該ソフトウエアを種々の記憶媒体に記憶し、処理装置により読み取ってメモリデバイスにロードし、本発明に係る逆正接演算を実行することもできる。
【００４９】
また、例えばＦＭ復調においては、図１０に示す構成で実現でき、本発明に係る逆正接演算回路５０が使用される。ＰＭ復調、ＦＳＫ復調、ＰＳＫ復調においても同様である。
【符号の説明】
【００５０】
１０，５０  逆正接演算回路
１２  演算回路
５２  左シフト回路
５４  シフト量決定回路
【図１】
2013246772.tif 000003
【図２】
2013246772.tif 000004
【図３】
2013246772.tif 000005
【図４】
2013246772.tif 000006
【図５】
2013246772.tif 000007
【図６】
2013246772.tif 000008
【図７】
2013246772.tif 000009
【図８】
2013246772.tif 000010
【図９】
2013246772.tif 000011
【図１０】
2013246772.tif 000012