(57)【要約】【課題】波形信号をサンプリングして得られたデジタル信号を、低コスト、高速かつ高精度に補正することができる波形補正回路および波形補正方法を提供する。【解決手段】波形補正装置１００は、波形信号をサンプリングして得られたデジタル信号の最大値および最小値を検出する検出部Ｄｙｍａｘと、オフセット値ＯＳｙを算出する第１の演算部１１０と、最大値または最小値に対して該ＯＳｙを減加算することによって実際の振幅Ａｙを算出する第２の演算部１２０と、デジタル信号からＯＳｙを減加算して第１の補正信号ｙｃを生成する第３の演算部４０と、Ａｙを基準振幅ＡＲｙに収束させるために、Ａｙの桁をシフトした値を、Ａｙに対して加減算する第４の演算部５１と、それと同時に、ｙｃを第２の補正信号へ収束させるために、ｙｃの桁をＡｙのシフト量と同量だけシフトした値を、ｙｃに対して加減算する第５の演算部５２とを備えている。【選択図】図１
2008185474.tif 000002
【特許請求の範囲】
【請求項１】
回転運動または往復運動を行う運動体の角度または位置を示す波形信号を周期的にサンプリングし、この信号をデジタル化して得られたデジタル信号を補正する波形補正装置であって、
或る時点のデジタル信号とそれ以前のサンプリングで得られたデジタル信号とを用いて該デジタル信号の最大値および最小値を検出する最大値・最小値検出部と、
前記波形信号の中間値として予め設定された基準電位から前記デジタル信号の最大値と最小値との中間値までのオフセット値を算出する第１の演算部と、
前記デジタル信号の最大値または最小値に対して該オフセット値を減算または加算することによって前記デジタル信号の実際の振幅を算出する第２の演算部と、
前記或る時点のデジタル信号から前記オフセット値を減算または加算して第１の補正信号を生成する第３の演算部と、
前記実際の振幅を予め設定された基準振幅に収束させるために、前記実際の振幅の桁をシフトした値を、前記実際の振幅に対して加算または減算する第４の演算部と、
前記第４の演算部における加算または減算の実行と同時に、前記第１の補正信号を第２の補正信号へ収束させるために、前記第１の補正信号の桁を前記実際の振幅のシフト量と同量だけシフトした値を、前記第１の補正信号に対して加算または減算する第５の演算部と、を備えた波形補正装置。
【請求項２】
前記第４の演算部は、
Ａｉ＝Ａｉ−１＋Ａｍａｘ×２−ｉ      （式１）
Ａｉ＝Ａｉ−１−Ａｍａｘ×２−ｉ      （式２）
（但し、ｉ＝１、２・・・ｎである。Ａ０＝Ａｍａｘである。Ａｍａｘは前記実際の振幅である。）
予め設定された基準振幅に前記Ａｉが収束するまで、あるいは、次のサンプリングが実行されるまで、式１または式２を繰り返し演算し、
前記第５の演算部は、
ｙｉ＝ｙｉ−１＋ｙ×２−ｉ      （式３）
ｙｉ＝ｙｉ−１−ｙ×２−ｉ      （式４）
（但し、ｉ＝１、２・・・ｎである。ｙ０＝ｙａである。ｙａは前記或る時点のデジタル信号の値である。）
予め設定された基準振幅に前記Ａｉが収束するまで、あるいは、次のサンプリングが実行されるまで、式３または式４を繰り返し演算することを特徴とする請求項１に記載の波形補正装置。
【請求項３】
前記実際の振幅が前記基準振幅よりも小さい場合、前記第４の演算部は式１を演算し、かつ前記第５の演算部は式３を演算し、前記実際の振幅が前記基準振幅よりも大きい場合、前記第４の演算部は式２を演算し、かつ前記第５の演算部は式４を演算することを特徴とする請求項２に記載の波形補正装置。
【請求項４】
前記デジタル信号はｓｉｎ信号およびｃｏｓ信号で表され、
前記第１から前記第５の演算部は、前記ｓｉｎ信号および前記ｃｏｓ信号のそれぞれに対応して設けられ、前記ｓｉｎ信号および前記ｃｏｓ信号のそれぞれについて演算を実行することを特徴とする請求項１から請求項３のいずれかに記載の波形補正装置。
【請求項５】
前記ｓｉｎ信号または前記ｃｏｓ信号のいずれか一方の符号が一定である期間の間にサンプリングされた複数の前記デジタル信号のうち、ｃｏｓ信号の最大値ｘｍａｘ、ｃｏｓ信号の最小値ｘｍｉｎ、ｓｉｎ信号の最大値ｙｍａｘおよびｓｉｎ信号の最小値ｙｍｉｎを保持する最大値・最小値レジスタをさらに備えたことを特徴とする請求項４に記載の波形補正装置。
【請求項６】
前記第１の演算部は、前記デジタル信号の最大値と最小値とを加算し、その値の桁を１桁だけシフトさせる加算器であることを特徴とする請求項１に記載の波形補正装置。
【請求項７】
前記最大値・最小値レジスタと前記第２の演算部との間に設けられた第１の低域通過フィルタと、
前記第１の演算部と前記第２の演算部との間に設けられた第２の低域通過フィルタとをさらに備えたことを特徴とする請求項５に記載の波形補正装置。
【請求項８】
前記第４の演算部の演算結果を保持する第１の計算値レジスタと、
前記第５の演算部の演算結果を保持する第２の計算値レジスタと、
前記サンプリング直後の最初の演算において前記実際の振幅を前記第４の演算部へ送信し、それ以降の演算においては、前記第１の計算値レジスタに保持されたデータを前記第４の演算部へ送信する第１の選択部と、
前記サンプリング直後の最初の演算において前記第１の補正信号を前記第５の演算部へ送信し、それ以降の演算においては、前記第２の計算値レジスタに保持されたデータを前記第５の演算部へ送信する第２の選択部と、
前記第１の選択部で選択された前記実際の振幅または前記第１の計算値レジスタに保持されたデータを前記基準振幅と比較し、その比較結果に応じて前記第４の演算部および前記第５の演算部の実行する演算として加算または減算のいずれかを決定する比較部と、
前記実際の振幅の桁をシフトする第１のシフティング部と、
前記第１の補正信号の桁をシフトする第２のシフティング部と、
前記第２の補正信号を保持する補正値レジスタとをさらに備えたことを特徴とする請求項１に記載の波形補正装置。
【請求項９】
前記デジタル信号はｓｉｎ信号およびｃｏｓ信号で表され、
前記第１から前記第５の演算部、前記第１および前記第２の計算値レジスタ、前記第１および前記第２の選択部、前記第１および前記第２のシフティング部、および、前記補正値レジスタは、前記ｓｉｎ信号および前記ｃｏｓ信号のそれぞれに対応して設けられていることを特徴とする請求項８に記載の波形補正装置。
【請求項１０】
回転運動または往復運動を行う運動体の位置を示す波形信号を周期的にサンプリングし、この信号をデジタル化して得られたデジタル信号を補正する波形補正方法であって、
或る時点のデジタル信号とそれ以前のサンプリングで得られたデジタル信号とを用いて前記デジタル信号の最大値および最小値を検出し、
前記波形信号の中間値として予め設定された基準電位から前記デジタル信号の最大値と最小値との中間値までのオフセット値を算出し（第１の演算）、
前記デジタル信号の最大値または最小値に対して該オフセット値を減算または加算することによって前記デジタル信号の実際の振幅を算出し（第２の演算）、
前記或る時点のデジタル信号から前記オフセット値を減算または加算して第１の補正信号を生成し（第３の演算）、
予め設定された基準振幅に前記実際の振幅を収束させるために、前記実際の振幅の桁をシフトした値を、前記実際の振幅に対して加算または減算し（第４の演算）、
前記第４の演算における加算または減算の実行と同時に、前記第１の補正信号を第２の補正信号へ収束させるために、前記第１の補正信号の桁を前記実際の振幅のシフト量と同量だけシフトした値を、前記第１の補正信号に対して加算または減算する（第５の演算）、ことを具備した波形補正方法。
【請求項１１】
前記第４の演算では、
Ａｉ＝Ａｉ−１＋Ａｍａｘ×２−ｉ      （式１）
Ａｉ＝Ａｉ−１−Ａｍａｘ×２−ｉ      （式２）
（但し、ｉ＝１、２・・・ｎである。Ａｍａｘは前記実際の振幅である。Ａ０＝Ａｍａｘである。）
予め設定された基準振幅に前記Ａｉが収束するまで、あるいは、次のサンプリングが実行されるまで、式１または式２を繰り返し実行し、
前記第５の演算では、
ｙｉ＝ｙｉ−１＋ｙ×２−ｉ      （式３）
ｙｉ＝ｙｉ−１−ｙ×２−ｉ      （式４）
（但し、ｉ＝１、２・・・ｎである。ｙは前記或る時点のデジタル信号の値である。ｙ０＝ｙである。）
予め設定された基準振幅に前記ｙｉが収束するまで、あるいは、次のサンプリングが実行されるまで、式３または式４を繰り返し実行することを特徴とする請求項１０に記載の波形補正方法。
【請求項１２】
前記実際の振幅が前記基準振幅よりも小さい場合、前記第４の演算では式１を実行し、かつ前記第５の演算では式３を実行し、前記実際の振幅が前記基準振幅よりも大きい場合、前記第４の演算では式２を実行し、かつ前記第５の演算では式４を実行することを特徴とする請求項１１に記載の波形補正方法。
【請求項１３】
前記デジタル信号はｓｉｎ信号およびｃｏｓ信号で表され、
前記第１から前記第５の演算は、前記ｓｉｎ信号および前記ｃｏｓ信号のそれぞれについて実行されることを特徴とする請求項１０から請求項１２のいずれかに記載の波形補正方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、波形補正装置および波形補正方法に関し、例えば、回転運動または往復運動を行う運動体の位置検出器に用いられる波形補正装置および波形補正方法に関する。
【背景技術】
【０００２】
一般に、機械の高精度な運動制御のために、ロータリエンコーダが回転運動を行う運動体（例えば、サーボモータ）の位置検出器として用いられ、あるいは、リニアスケールが直線往復運動を行う運動体の位置検出器として用いられる。位置検出器の出力信号は、周期的にアナログ−デジタル変換（サンプリング）された後、角度あるいは位置を示す値に変換されて用いられる。運動体の角度あるいは位置を高精度に検出するためには、サンプリングにより得られたデジタル信号（ｓｉｎ信号およびｃｏｓ信号）のオフセットを除去し、かつ、ｓｉｎ信号およびｃｏｓ信号の各振幅を基準値に補正する必要がある。
【０００３】
従来、オペレータがこのデジタル信号の補正を目視で行っていた。具体的には、ｓｉｎ信号およびｃｏｓ信号をシンクロスコープに入力し、Ｘ−Ｙ平面上にリサージュと呼ばれる円を表示させる。オペレータは、オフセットを除去し、かつ、振幅を補正するために、このリサージュの位置および大きさを肉眼で観測しながら、出力回路あるいは入力回路を調整していた。これは、ｓｉｎ信号およびｃｏｓ信号の正規化作業である。正規化とは、サンプリングで得られたリサージュを所定の規格に沿った形状に調節することである。
【非特許文献１】杉本  英彦等“ＡＣサーボシステムの理論と設計の実際”総合電子出版社  （Ｐ１４２〜Ｐ１４９）
【発明の開示】
【発明が解決しようとする課題】
【０００４】
目視によってｓｉｎ信号およびｃｏｓ信号を正規化する場合、勿論、シンクロスコープおよび人手が必要となる。このため、コスト高となり、かつ、時間も長く掛かる。さらに、目視で正規化するため、熟練者であっても高精度な正規化を行うことは難しい。これは、位置検出精度または速度検出制度を悪化させる原因となっていた。
【０００５】
位置検出器の出力回路内部の応答速度が遅いと、位置検出器において単位時間あたりに変化可能な電圧幅（スルーレート）が小さくなる。従って、位置検出器の入出力信号の周波数が高くなると、ｓｉｎ信号およびｃｏｓ信号の振幅が動的に低下するという現象がある。このような場合には、目視では正規化させることが不可能である。
【０００６】
そこで、本発明の目的は、波形信号をサンプリングして得られたデジタル信号を、低コスト、高速かつ高精度に補正することができる波形補正回路および波形補正方法を提供することである。
【課題を解決するための手段】
【０００７】
本発明に係る実施形態に従った波形補正装置は、回転運動または往復運動を行う運動体の位置を示す波形信号を周期的にサンプリングし、この信号をデジタル化して得られたデジタル信号を補正する波形補正装置であって、
或る時点のデジタル信号とそれ以前のサンプリングで得られたデジタル信号とを用いて該デジタル信号の最大値および最小値を検出する最大値・最小値検出部と、前記波形信号の中間値として予め設定された基準電位から前記デジタル信号の最大値と最小値との中間値までのオフセット値を算出する第１の演算部と、前記デジタル信号の最大値または最小値に対して該オフセット値を減算または加算することによって前記デジタル信号の実際の振幅を算出する第２の演算部と、前記或る時点のデジタル信号から前記オフセット値を減算または加算して第１の補正信号を生成する第３の演算部と、前記実際の振幅を予め設定された基準振幅に収束させるために、前記実際の振幅の桁をシフトした値を、前記実際の振幅に対して加算または減算する第４の演算部と、前記第４の演算部における加算または減算の実行と同時に、前記第１の補正信号を第２の補正信号へ収束させるために、前記第１の補正信号の桁を前記実際の振幅のシフト量と同量だけシフトした値を、前記第１の補正信号に対して加算または減算する第５の演算部と、を備えている。
【０００８】
前記第４の演算部は、
Ａｉ＝Ａｉ−１＋Ａｍａｘ×２−ｉ      （式１）
Ａｉ＝Ａｉ−１−Ａｍａｘ×２−ｉ      （式２）
（但し、ｉ＝１、２・・・ｎである。Ａ０＝Ａｍａｘである。Ａｍａｘは前記実際の振幅である。）
予め設定された基準振幅に前記Ａｉが収束するまで、あるいは、次のサンプリングが実行されるまで、式１または式２を繰り返し演算し、
前記第５の演算部は、
ｙｉ＝ｙｉ−１＋ｙ×２−ｉ      （式３）
ｙｉ＝ｙｉ−１−ｙ×２−ｉ      （式４）
（但し、ｉ＝１、２・・・ｎである。ｙ０＝ｙａである。ｙａは前記或る時点のデジタル信号の値である。）
予め設定された基準振幅に前記Ａｉが収束するまで、あるいは、次のサンプリングが実行されるまで、式３または式４を繰り返し演算する。
【０００９】
前記実際の振幅が前記基準振幅よりも小さい場合、前記第４の演算部は式１を演算し、かつ前記第５の演算部は式３を演算し、前記実際の振幅が前記基準振幅よりも大きい場合、前記第４の演算部は式２を演算し、かつ前記第５の演算部は式４を演算する。
【００１０】
前記デジタル信号はｓｉｎ信号およびｃｏｓ信号で表され、前記第１から前記第５の演算部は、前記ｓｉｎ信号および前記ｃｏｓ信号のそれぞれに対応して設けられ、前記ｓｉｎ信号および前記ｃｏｓ信号のそれぞれについて演算を実行する。
【００１１】
当該装置は、前記ｓｉｎ信号または前記ｃｏｓ信号のいずれか一方の符号が一定である期間の間にサンプリングされた複数の前記デジタル信号のうち、ｃｏｓ信号の最大値ｘｍａｘ、ｃｏｓ信号の最小値ｘｍｉｎ、ｓｉｎ信号の最大値ｙｍａｘおよびｓｉｎ信号の最小値ｙｍｉｎを保持する最大値・最小値レジスタをさらに備えている。
【００１２】
前記第１の演算部は、前記デジタル信号の最大値と最小値とを加算し、その値の桁を１桁だけシフトさせる加算器である。
【００１３】
当該装置は、前記最大値・最小値レジスタと前記第２の演算部との間に設けられた第１の低域通過フィルタと、前記第１の演算部と前記第２の演算部との間に設けられた第２の低域通過フィルタとをさらに備えている。
【００１４】
当該装置は、前記第４の演算部の演算結果を保持する第１の計算値レジスタと、前記第５の演算部の演算結果を保持する第２の計算値レジスタと、前記サンプリング直後の最初の演算において前記実際の振幅を前記第４の演算部へ送信し、それ以降の演算においては、前記第１の計算値レジスタに保持されたデータを前記第４の演算部へ送信する第１の選択部と、前記サンプリング直後の最初の演算において前記第１の補正信号を前記第５の演算部へ送信し、それ以降の演算においては、前記第２の計算値レジスタに保持されたデータを前記第５の演算部へ送信する第２の選択部と、前記第１の選択部で選択された前記実際の振幅または前記第１の計算値レジスタに保持されたデータを前記基準振幅と比較し、その比較結果に応じて前記第４の演算部および前記第５の演算部の実行する演算として加算または減算のいずれかを決定する比較部と、前記実際の振幅の桁をシフトする第１のシフティング部と、前記第１の補正信号の桁をシフトする第２のシフティング部と、前記第２の補正信号を保持する補正値レジスタとをさらに備えている。
【００１５】
前記デジタル信号はｓｉｎ信号およびｃｏｓ信号で表され、前記第１から前記第５の演算部、前記第１および前記第２の計算値レジスタ、前記第１および前記第２の選択部、前記第１および前記第２のシフティング部、および、前記補正値レジスタは、前記ｓｉｎ信号および前記ｃｏｓ信号のそれぞれに対応して設けられている。
【００１６】
本発明に係る実施形態に従った波形補正方法は、回転運動または往復運動を行う運動体の位置を示す波形信号を周期的にサンプリングし、この信号をデジタル化して得られたデジタル信号を補正する波形補正方法であって、
或る時点のデジタル信号とそれ以前のサンプリングで得られたデジタル信号とを用いて前記デジタル信号の最大値および最小値を検出し、前記波形信号の中間値として予め設定された基準電位から前記デジタル信号の最大値と最小値との中間値までのオフセット値を算出し（第１の演算）、前記デジタル信号の最大値または最小値に対して該オフセット値を減算または加算することによって前記デジタル信号の実際の振幅を算出し（第２の演算）、前記或る時点のデジタル信号から前記オフセット値を減算または加算して第１の補正信号を生成し（第３の演算）、予め設定された基準振幅に前記実際の振幅を収束させるために、前記実際の振幅の桁をシフトした値を、前記実際の振幅に対して加算または減算し（第４の演算）、前記第４の演算における加算または減算の実行と同時に、前記第１の補正信号を第２の補正信号へ収束させるために、前記第１の補正信号の桁を前記実際の振幅のシフト量と同量だけシフトした値を、前記第１の補正信号に対して加算または減算する（第５の演算）、ことを具備する。
【００１７】
前記第４の演算では、
Ａｉ＝Ａｉ−１＋Ａｍａｘ×２−ｉ      （式１）
Ａｉ＝Ａｉ−１−Ａｍａｘ×２−ｉ      （式２）
（但し、ｉ＝１、２・・・ｎである。Ａｍａｘは前記実際の振幅である。Ａ０＝Ａｍａｘである。）
予め設定された基準振幅に前記Ａｉが収束するまで、あるいは、次のサンプリングが実行されるまで、式１または式２を繰り返し実行し、
前記第５の演算では、
ｙｉ＝ｙｉ−１＋ｙ×２−ｉ      （式３）
ｙｉ＝ｙｉ−１−ｙ×２−ｉ      （式４）
（但し、ｉ＝１、２・・・ｎである。ｙは前記或る時点のデジタル信号の値である。ｙ０＝ｙである。）
予め設定された基準振幅に前記ｙｉが収束するまで、あるいは、次のサンプリングが実行されるまで、式３または式４を繰り返し実行する。
【００１８】
前記実際の振幅が前記基準振幅よりも小さい場合、前記第４の演算では式１を実行し、かつ前記第５の演算では式３を実行し、前記実際の振幅が前記基準振幅よりも大きい場合、前記第４の演算では式２を実行し、かつ前記第５の演算では式４を実行する。
【００１９】
前記デジタル信号はｓｉｎ信号およびｃｏｓ信号で表され、前記第１から前記第５の演算は、前記ｓｉｎ信号および前記ｃｏｓ信号のそれぞれについて実行される。
【発明の効果】
【００２０】
本発明による波形補正回路および波形補正方法は、波形信号をサンプリングして得られたデジタル信号を、低コスト、高速かつ高精度に補正することができる。
【発明を実施するための最良の形態】
【００２１】
以下、図面を参照して本発明に係る実施形態を説明する。本実施形態は、本発明を限定するものではない。
【００２２】
図１は、本発明に係る実施形態に従った波形補正装置１００のブロック図である。図７には波形補正装置１００の動作フローを示す。ロータリエンコーダまたはリニアスケール１０は、回転運動または往復運動を行う運動体の位置を示すアナログ正弦波信号（ｓｉｎ波，ｃｏｓ波）を出力する。ｓｉｎ波，ｃｏｓ波は、直交位相の正弦波の値である。運動体は、等速運動を行うとは限らないので、ｓｉｎ波，ｃｏｓ波の周波数は変化する。
【００２３】
Ａ／Ｄコンバータ２０は、ロータリエンコーダまたはリニアスケール１０からのｓｉｎ波およびｃｏｓ波を周期的にサンプリングし、これをデジタル信号へ変換する。これにより、デジタル化された座標の信号（ｓｉｎ信号，ｃｏｓ信号）が生成される（Ｓ１０）。
【００２４】
波形補正装置１００は、振幅検出部３０と、第３の演算部としての減算器４０、４１と、波形整形部５０とを備えている。波形補正装置１００は、Ａ／Ｄコンバータ２０からｓｉｎ信号およびｃｏｓ信号を受信し、このｓｉｎ信号およびｃｏｓ信号をそれぞれ補正して、正規化されたｓｉｎ信号および正規化されたｃｏｓ信号を出力するように構成されている。振幅検出部３０、減算器４０、４１および波形整形部５０は、好ましくは、デジタルロジック回路で構成されている。振幅検出部３０、減算器４０、４１および波形整形部５０は、例えば、ＡＳＩＣ（Application Specific Integrated Circuit）等のようなカスタムＬＳＩでもよく、ＦＰＧＡ（Field Programmable Gate Array）でもよい。振幅検出部３０、減算器４０、４１および波形整形部５０は、汎用ＣＰＵおよびプログラムで構成されてもよい。波形補正装置１００は、例えば、回転運動または往復運動を行う運動体を備えた機械に配設される。運動体は、例えば、工作機械に配備されたサーボモータのロータまたは往復運動するアーム等である。
【００２５】
振幅検出部３０は、ｓｉｎ信号およびｃｏｓ信号を受け取り、ｓｉｎ信号の最大値および最小値、並びに、ｃｏｓ信号の最大値および最小値を検出する（Ｓ２０）。また、振幅検出部３０は、最大値および最小値を用いてｓｉｎ信号のオフセット値およびｃｏｓ信号のオフセット値を算出する（Ｓ３０）。ここで、オフセット値とは、予め設定された基準電位（例えば、ゼロボルト）からデジタル信号の最大値と最小値との中間値までの電位差である。振幅検出部３０は、オフセット値を用いてｓｉｎ信号の振幅およびｃｏｓ信号の振幅を算出する（Ｓ４０）。振幅検出部３０は、図４に示すように、乗算器および除算器を用いることなく、加算器および減算器で構成されている。
【００２６】
図２は、振幅検出部３０の機能を示す概念図である。図２には、複数のサンプリングで得られたｃｏｓ信号およびｓｉｎ信号をリサージュ図形で示している。縦軸Ｙａがｓｉｎ信号の値を示し、横軸Ｘａがｃｏｓ信号の値を示している。或る時点でサンプリングされた現実の座標（ｃｏｓ信号、ｓｉｎ信号）は（ｘａ、ｙａ）で示されている。
【００２７】
現実の座標（ｘａ、ｙａ）は、Ａ／Ｄコンバータ２０においてサンプリングされた円周上の座標であり、運動体の現実の位置または角度を示す。ＸａおよびＹａは、現実の座標に対する軸（実際の軸）である。ＸｏおよびＹｏは、目標となる基準軸である。ＸｏおよびＹｏの原点０が基準電位に対応する。基準座標は、（ｘｍａｘ、０）、（０、ｙｍａｘ）、（ｘｍｉｎ、０）および（０、ｙｍｉｎ）である。基準座標は、リサージュ図形と実際の軸Ｘａ、Ｙａとの交点である。
【００２８】
基準軸（Ｘｏ，Ｙｏ）と実際の軸（Ｘａ、Ｙａ）との差がオフセット値である。振幅検出部３０は、ｘｍａｘ、ｙｍａｘ、ｘｍｉｎおよびｙｍｉｎを用いて、ｃｏｓ信号のオフセット値ＯＳｘ、ｓｉｎ信号のオフセット値ＯＳｙ、ｃｏｓ信号の実際の振幅Ａｘ、および、ｓｉｎ信号の実際の振幅Ａｙを算出する。
【００２９】
減算器４０は、ｓｉｎ信号のオフセット値ＯＳｙを、Ａ／Ｄコンバータ２０から得た現実のｓｉｎ信号ｙａから減算する。これにより、ｓｉｎ信号からオフセット値を除いた補正信号ｙｃ（ｙｃ＝ｙａ−ＯＳｙ）が得られる（Ｓ５０）。減算器４１は、ｃｏｓ信号のオフセット値ＯＳｘを、Ａ／Ｄコンバータ２０から得た現実のｃｏｓ信号ｘａから減算する。これにより、ｃｏｓ信号からオフセット値を除いた補正信号ｘｃ（ｘｃ＝ｘａ−ＯＳｘ）が得られる。即ち、減算器４０は、オフセット値を用いて、実際の軸Ｘａ、Ｙａを基準軸Ｘｏ、Ｙｏに適合させるようにリサージュ図形を平行移動させる機能を有する。尚、オフセット値の符号を反転させた場合、減算器に代えて加算器を４０および４１として採用してもよい。
【００３０】
波形整形部５０は、ｓｉｎ信号の補正信号ｙｃおよびｃｏｓ信号の補正信号ｘｃを受け取る。波形整形部５０は、補正信号ｙｃを比率Ｄｙで縮小または拡大した正規化信号ｙｃｎ（ｙｃｎ＝ｙｃ＊Ｄｙ）を実質的に求める。また、波形整形部５０は、補正信号ｘｃを比率Ｄｘで縮小または拡大した正規化信号ｘｃｎ（＝ｘｃ＊Ｄｘ）を実質的に求める。比率Ｄｙは、予め設定された基準振幅ＡＲｙとｓｉｎ信号の実際の振幅Ａｙとの比（ＡＲｙ／Ａｙ）である。比率Ｄｘは、予め設定された基準振幅ＡＲｘとｃｏｓ信号の実際の振幅Ａｘとの比（ＡＲｘ／Ａｘ）である。基準振幅ＡＲｘ、ＡＲｙは、標準的な規格で定められた目標の振幅であり、同種の複数の装置に対して共通に用いられる基準である。
【００３１】
図３は波形整形部５０の機能を示す概念図である。波形整形部５０は、実際の振幅Ａｘ、Ａｙを基準振幅ＡＲｘ、ＡＲｙに適合するように実質的に拡大または縮小し、この拡大または縮小と同じ比率で補正信号ｘｃ、ｙｃを実質的に拡大または縮小するように構成されている。これにより、補正信号ｘｃおよびｙｃは、それぞれ正規化信号ｘｃｎおよびｙｃｎに補正される。波形整形部５０は、実際には、乗算（ｙｃ＊Ｄｙ、ｘｃ＊Ｄｘ）および除算（ＡＲｙ／Ａｙ、ＡＲｘ／Ａｘ）を実行することなく、加算および減算のみで正規化信号を演算するように構成されている。
【００３２】
このように、振幅検出部３０は、現実の信号ｙａ、ｘａの各オフセット値および各振幅を検出する。減算器４０，４１は、現実の信号ｙａ、ｘａからオフセットを除去する。波形整形部５０は、実際の振幅が基準振幅に適合するように、現実の信号ｙａ、ｘａを拡大または縮小する。これにより、現実の信号ｙａ、ｘａは、正規化信号ｘｃｎおよびｙｃｎに補正される。規格化信号ｘｃｎ、ｙｃｎは、位置検出および速度検出に用いられ得る。
【００３３】
一般に、除算器および乗算器は、デジタル回路で実現することが困難な回路である。これを実現するためには加算器および乗算器に比べてかなり大規模なデジタル回路を用いる必要がある。従って、除算および乗算をデジタルロジックで実現すると、回路規模が大きくなり、コスト高となる。よって、除算や乗算を安価なＦＰＧＡ等で実現することは困難であった。
【００３４】
本実施形態による波形補正装置１００は、除算器および乗算器を用いることなく、加算器および減算器で構成されている。従って、波形補正装置１００全体の回路規模は、非常に小さいものとなる。また、除算器および乗算器がないので、本実施形態による波形補正装置１００は、安価なＦＰＧＡ等のロジック回路で実現しやすい。その結果、波形補正装置１００は、低コストで製造可能になる。さらに、本実施形態による波形補正装置１００は、単純な加減算を繰り返し実行する。ＦＰＧＡおよびＡＳＩＣのようなロジック回路は、汎用ＣＰＵおよびプログラムと比べ、このような単純作業を高速で繰り返し実行することに適している。従って、波形補正装置１００は、正規化信号を短時間に演算することができる。勿論、波形補正装置１００は、オペレータよりも短時間かつ高精度でｓｉｎ信号およびｃｏｓ信号を正規化することができる。
【００３５】
図４は、振幅検出部３０の内部構成を示すブロック図である。振幅検出部３０は、基準検出回路１０１と、符号変化レジスタ１０２〜１０４と、遷移検出回路１０５と、最大・最小検出回路（以下、単に、検出回路ともいう）Ｄｙｍａｘ、Ｄｙｍｉｎ、Ｄｘｍａｘ、Ｄｘｍｉｎと、第１の演算部としての加算器１１０、１１１と、第２の演算部としての減算器１２０、１２１と、オフセットレジスタＲｏｓ１、Ｒｏｓ２と、低域通過フィルタＬＰＦ１〜ＬＰＦ４とを備えている。
【００３６】
基準検出回路１０１は、現実の座標（ｃｏｓ信号、ｓｉｎ信号）＝（ｘａ、ｙａ）を受け取る。基準検出回路１０１は、運動体が４つの基準座標（ｘｍａｘ、０）、（０、ｙｍａｘ）、（ｘｍｉｎ、０）および（０、ｙｍｉｎ）を通過したことを検出する。基準座標の通過は、ｓｉｎ信号およびｃｏｓ信号の符号の変化によって検出することができる。符号変化レジスタ１０２〜１０４は、運動体が基準座標を通過したときに変化する現実の座標（ｘａ、ｙａ）の符号の変化を保持する。３つの符号変化レジスタ１０２〜１０４は、現実の座標（ｘａ、ｙａ）の符号の過去３回の履歴を保持することができる。
【００３７】
遷移検出回路１０５は、符号変化レジスタ１０２〜１０４に保持された符号の遷移に基づいて、最大・最小検出回路へ指令を送る。例えば、現実の座標が０、π／２、πの順に回転した場合、符号変化レジスタ１０２〜１０４は、（ｘａの符号、ｙａの符号）としてそれぞれ（＋、＋）、（−、＋）、（−、−）のデータを保持する。遷移検出回路１０５は、符号変化レジスタ１０２〜１０４のデータによって、運動体の現実の座標が第１象限、第２象限、第３象限へと移動していることを識別することができる。現実の座標がπ／２、π、（３／２）πの順に回転した場合、符号変化レジスタ１０２〜１０４は、それぞれ（−、＋）、（−、−）、（＋、−）のデータを保持する。遷移検出回路１０５は、符号変化レジスタ１０２〜１０４のデータによって、運動体の現実の座標が第２象限、第３象限、第４象限へと移動していることを識別することができる。現実の座標がπ、（３／２）π、０の順に回転した場合、符号変化レジスタ１０２〜１０４は、それぞれ（−、−）、（＋、−）、（＋、＋）のデータを保持する。遷移検出回路１０５は、符号変化レジスタ１０２〜１０４のデータによって、運動体の現実の座標が第３象限、第４象限、第１象限へと移動していることを識別することができる。現実の座標が（３／２）π、０、π／２の順に回転した場合、符号変化レジスタ１０２〜１０４は、それぞれ（＋、−）、（＋、＋）、（−、＋）のデータを保持する。遷移検出回路１０５は、符号変化レジスタ１０２〜１０４のデータによって、現実の座標が第４象限、第１象限、第２象限へと移動していることを識別することができる。尚、上記具体例は、運動体が反時計回りＣＣＷに回転している場合の具体例である。同様に、運動体が時計回りＣＷに回転している場合も、遷移検出回路１０５は、運動体の現実の座標の遷移を検出することができる。
【００３８】
検出回路Ｄｙｍａｘ、Ｄｙｍｉｎ、Ｄｘｍａｘ、Ｄｘｍｉｎは、現実の座標ｘａまたはｙａのいずれか一方の符号が一定である期間の間にサンプリングされた複数の現実の座標（ｘａ、ｙａ）のうちｘａの最大値ｘｍａｘ、ｘａの最小値ｘｍｉｎ、ｙａの最大値ｙｍａｘおよびｙａの最小値ｙｍｉｎを保持するように構成されている。
【００３９】
例えば、検出回路Ｄｙｍａｘは、現実の座標（ｘａ、ｙａ）のｙａの符号が正（＋）である期間にサンプリングされた複数の現実の座標のうちｙａの最大値ｙｍａｘを保持するように構成されている。より詳細には、検出回路Ｄｙｍａｘは、ｙａの仮の最大値を保持する仮レジスタＰＲ１と、仮レジスタのデータと現実の座標ｙａとを比較する比較器ＣＯＭＰ１と、最大値ｙｍａｘを保持するレジスタＲｙｍａｘとを備えている。
【００４０】
仮レジスタＰＲ１は、まず、最初にサンプリングされた現実の座標ｙａを保持する。比較器ＣＯＭＰ１は、次にサンプリングされた現実の座標ｙａと以前のサンプリングで得られ仮レジスタＰＲ１に格納されたデータとを比較し、より大きい値を仮レジスタＰＲ１へ戻す。これを繰り返すことによって、仮レジスタＰＲ１に格納された値は、サンプリングごとに更新され、最大値ｙｍａｘに次第に近づいてゆく。
【００４１】
レジスタＲｙｍａｘは、遷移検出回路１０５からの保持指令によって仮レジスタＰＲ１の値を保持する。この保持指令は、ｙａの符号が正（＋）である期間の終了時に出力される。この時、運動体の１回転または１往復において、仮レジスタＰＲ１に格納された値が最大となっているからである。レジスタＲｙｍａｘに格納された値は、運動体が１回転または１往復するごとに更新される。
【００４２】
運動体が高速に動作している場合、ｃｏｓ波およびｓｉｎ波の周波数は高くなる。サンプリングは或る一定期間を置いて周期的に実行されるため、運動体が高速動作すると、サンプリングが相対的に粗くなる。従って、レジスタＲｙｍａｘに格納された最大値ｙｍａｘは、ｓｉｎ波のほぼ頂点を示すが、必ずしも厳密にその頂点の値を示すものではなく、運動体の回転または往復ごとに幾分変化する。そこで、低域通過フィルタＬＰＦ１が、レジスタＲｙｍａｘと減算器１２０との間に設けられている。低域通過フィルタＬＰＦ１は、そのカットオフ周波数が正弦波（ｓｉｎ波、ｃｏｓ波）の周波数よりも低く、従って、レジスタＲｙｍａｘから出力される最大値ｙｍａｘを安定化させる。
【００４３】
仮レジスタＰＲ１は、遷移検出回路１０５からのリセット指令によってリセットされる。リセット指令は、保持指令と同時、あるいは、その直後に出力される。これにより、レジスタＲｙｍａｘが仮レジスタＰＲ１の値を保持した後に、仮レジスタＰＲ１をリセットすることができる。
【００４４】
検出回路Ｄｙｍｉｎは、ｙａの符号が負（−）である期間にサンプリングされた複数の現実の座標のうちｙａの最小値ｙｍｉｎを保持するように構成されている。より詳細には、検出回路Ｄｙｍｉｎは、ｙａの仮の最小値を保持する仮レジスタＰＲ２と、仮レジスタのデータと現実の座標ｙａとを比較する比較器ＣＯＭＰ２と、最小値ｙｍｉｎを保持するレジスタＲｙｍｉｎとを備えている。
【００４５】
仮レジスタＰＲ２は、最初にサンプリングされた現実の座標のｙａを保持する。比較器ＣＯＭＰ２は、次にサンプリングされたｙａと以前のサンプリングで得られ仮レジスタＰＲ２に格納されたデータとを比較し、より小さい値を仮レジスタＰＲ２へ戻す。これを繰り返すことによって、仮レジスタＰＲ２に格納された値は、サンプリングごとに更新され、最小値ｙｍｉｎに次第に近づいてゆく。
【００４６】
レジスタＲｙｍｉｎは、遷移検出回路１０５からの保持指令によって仮レジスタＰＲ２の値を保持する。この保持指令は、ｙａの符号が負（−）である期間の終了時に出力される。この時、運動体の１回転または１往復において、仮レジスタＰＲ２に格納された値が最小となっているからである。レジスタＲｙｍｉｎに格納された値は、運動体が１回転または１往復するごとに更新される。
【００４７】
加算器１１０は、レジスタＲｙｍａｘ、ＲｙｍｉｎとオフセットレジスタＲｏｓ１との間に接続されている。加算器１１０は、ｙｍａｘとｙｍｉｎとを加算し、その結果得られた値を２分の１にする。これにより、オフセット値が算出される。例えば、ｙｍａｘ＝１０、ｙｍｉｎ＝−８とすれば、オフセット値ＯＳｙは、１となる。尚、実際の計算は、２進数のデジタル値で実行される。２進数のデジタル値を２分の１にするためには、そのデジタル値の桁を１桁だけ右シフトさせればよい。右シフトとは、或る数値がより小さい値になる方向へ桁をシフトさせることである。従って、加算器１１０は、単に、ｙｍａｘとｙｍｉｎとを加算し、その加算値の桁を１桁だけ右シフトさせればよい。
【００４８】
加算器１１０で算出されたオフセット値ＯＳｙは、オフセットレジスタＲｏｓ１に格納される。オフセットレジスタＲｏｓ１は、遷移検出回路１０５からの保持指令を受けたときに、オフセット値ＯＳｙを保持する。
【００４９】
オフセット値ＯＳｙも、ｙｍａｘと同様に、運動体の回転または往復ごとに幾分変化する。そこで、低域通過フィルタＬＰＦ２が、オフセットレジスタＲｏｓ１と減算器１２０との間に設けられている。低域通過フィルタＬＰＦ２は、そのカットオフ周波数が正弦波（ｓｉｎ波、ｃｏｓ波）の周波数よりも低く、従って、オフセットレジスタＲｏｓ１から出力されるオフセット値ＯＳｙを安定化させる。
【００５０】
減算器１２０は、最大値ｙｍａｘからオフセット値ＯＳｙを減算する。これにより、ｓｉｎ信号の実際の振幅Ａｙが得られる。本実施形態では、減算器１２０は、最大値ｙｍａｘからオフセット値ＯＳｙを減算している。しかし、減算器１２０は、オフセット値ＯＳｙから最小値ｙｍｉｎを減算してもよい。このように演算しても、振幅Ａｙを算出することができるからである。
【００５１】
現実の座標ｘａ（ｃｏｓ信号）についても、現実の座標ｙａ（ｓｉｎ信号）と同様に演算される。それにより、オフセットＯＳｘおよびｃｏｓ信号の実際の振幅Ａｘが得られる。例えば、検出回路Ｄｘｍａｘは、現実の座標（ｘａ、ｙａ）のｘａの符号が正（＋）である期間にサンプリングされた複数の現実の座標のうちｘａの最大値ｘｍａｘを保持するように構成されている。より詳細には、検出回路Ｄｘｍａｘは、ｘａの仮の最大値を保持する仮レジスタＰＲ３と、仮レジスタのデータと現実の座標ｘａとを比較する比較器ＣＯＭＰ３と、最大値ｘｍａｘを保持するレジスタＲｘｍａｘとを備えている。
【００５２】
仮レジスタＰＲ３は、まず、最初にサンプリングされた現実の座標ｘａを保持する。比較器ＣＯＭＰ３は、次にサンプリングされた現実の座標ｘａと以前のサンプリングで得られ仮レジスタＰＲ３に格納されたデータとを比較し、より大きい値を仮レジスタＰＲ３へ戻す。これを繰り返すことによって、仮レジスタＰＲ３に格納された値は、サンプリングごとに更新され、最大値ｘｍａｘに次第に近づいてゆく。
【００５３】
レジスタＲｘｍａｘは、遷移検出回路１０５からの保持指令によって仮レジスタＰＲ３の値を保持する。この保持指令は、ｘａの符号が正（＋）である期間の終了時に出力される。この時、運動体の１回転または１往復において、仮レジスタＰＲ３に格納された値が最大となっているからである。
【００５４】
仮レジスタＰＲ３は、遷移検出回路１０５からのリセット指令によってリセットされる。リセット指令は、保持指令と同時、あるいは、その直後に出力される。これにより、レジスタＲｘｍａｘが仮レジスタＰＲ３の値を保持した後に、仮レジスタＰＲ３をリセットすることができる。
【００５５】
低域通過フィルタＬＰＦ３は、レジスタＲｘｍａｘと減算器１２１との間に設けられている。低域通過フィルタＬＰＦ３は、他の低域通過フィルタと同様に、レジスタＲｘｍａｘから出力される最大値ｘｍａｘを安定化させる。
【００５６】
検出回路Ｄｘｍｉｎは、ｘａの符号が負（−）である期間にサンプリングされた複数の現実の座標のうちｘａの最小値ｘｍｉｎを保持するように構成されている。より詳細には、検出回路Ｄｘｍｉｎは、ｘａの仮の最小値を保持する仮レジスタＰＲ４と、仮レジスタのデータと現実の座標ｘａとを比較する比較器ＣＯＭＰ４と、最小値ｘｍｉｎを保持するレジスタＲｘｍｉｎとを備えている。
【００５７】
仮レジスタＰＲ４は、最初にサンプリングされた現実の座標のｘａを保持する。比較器ＣＯＭＰ４は、次にサンプリングされたｘａと以前のサンプリングで得られ仮レジスタＰＲ４に格納されたデータとを比較し、より小さい値を仮レジスタＰＲ４へ戻す。これを繰り返すことによって、仮レジスタＰＲ４に格納された値は、サンプリングごとに更新され、最小値ｘｍｉｎに次第に近づいてゆく。
【００５８】
レジスタＲｘｍｉｎは、遷移検出回路１０５からの保持指令によって仮レジスタＰＲ４の値を保持する。この保持指令は、ｘａの符号が負（−）である期間の終了時に出力される。この時、運動体の１回転または１往復において、仮レジスタＰＲ４に格納された値が最小となっているからである。レジスタＲｘｍｉｎに格納された値は、運動体が１回転または１往復するごとに更新される。
【００５９】
加算器１１１は、レジスタＲｘｍａｘ、ＲｘｍｉｎとオフセットレジスタＲｏｓ２との間に接続されている。加算器１１１は、ｘｍａｘとｘｍｉｎとを加算し、その結果得られた値を２分の１にする。これにより、オフセット値が算出される。実際には、加算器１１１は、単に、ｘｍａｘとｘｍｉｎとを加算し、その加算値の桁を１桁だけ右シフトさせればよい。
【００６０】
加算器１１１で算出されたオフセット値ＯＳｘは、オフセットレジスタＲｏｓ２に格納される。オフセットレジスタＲｏｓ２は、遷移検出回路１０５からの保持指令を受けたときに、オフセット値ＯＳｘを保持する。
【００６１】
オフセット値ＯＳｘも、レジスタＲｘｍａｘ内の最大値ｘｍａｘと同様に、運動体の回転または往復ごとに幾分変化する。そこで、低域通過フィルタＬＰＦ４が、オフセットレジスタＲｏｓ２と減算器１２１との間に設けられている。低域通過フィルタＬＰＦ４は、オフセットレジスタＲｏｓ２から出力されるオフセット値ＯＳｘを安定化させる。
【００６２】
減算器１２１は、最大値ｘｍａｘからオフセット値ＯＳｙを減算する。これにより、ｓｉｎ信号の実際の振幅Ａｙが得られる。本実施形態では、減算器１２１は、最大値ｘｍａｘからオフセット値ＯＳｘを減算している。しかし、減算器１２０は、オフセット値ＯＳｘから最小値ｘｍｉｎを減算してもよい。このように演算しても、振幅Ａｘを算出することができるからである。
【００６３】
図５は、現実の座標（ｘａ、ｙａ）の遷移に関して、保持指令の対象レジスタおよびリセット指令の対象レジスタを示した表である。現実の座標が０、π／２、πの順に遷移する場合、あるいは、π、π／２、０の順に遷移する場合、ｙａの符号は正（＋）である。よって、現実の座標がこの順に遷移した後、遷移検出回路１０５は、レジスタＲｙｍａｘへ保持指令を出力する。レジスタＲｙｍａｘは、保持指令を受けて、仮レジスタＰＲ１に格納された値をｙｍａｘとして保持する。この時、あるいは、この直後、遷移検出回路１０５は、仮レジスタＰＲ１へリセット指令を出力する。これにより、仮レジスタＰＲ１に格納された値はリセットされる。
【００６４】
現実の座標がπ、（３／２）π、０の順に遷移する場合、あるいは、０、（３／２）π、πの順に遷移する場合、ｙａの符号が負（−）である。よって、現実の座標が遷移した後、遷移検出回路１０５は、レジスタｙｍｉｎへ保持指令を出力する。レジスタｙｍｉｎは、保持指令を受けて、仮レジスタＰＲ２に格納された値をｙｍｉｎとして保持する。この時、あるいは、この直後、遷移検出回路１０５は、仮レジスタＰＲ２へリセット指令を出力する。これにより、仮レジスタＰＲ２に格納された値はリセットされる。
【００６５】
現実の座標が（３／２）π、０、π／２の順に遷移する場合、あるいは、π／２、０、（３／２）πの順に遷移する場合、ｘａの符号が正（＋）である。よって、現実の座標が遷移した後、遷移検出回路１０５は、レジスタＲｘｍａｘへ保持指令を出力する。レジスタＲｘｍａｘは、保持指令を受けて、仮レジスタＰＲ３に格納された値をｘｍａｘとして保持する。この時、あるいは、この直後、遷移検出回路１０５は、仮レジスタＰＲ３へリセット指令を出力する。これにより、仮レジスタＰＲ３に格納された値はリセットされる。
【００６６】
現実の座標がπ／２、π、（３／２）πの順に遷移する場合、あるいは、（３／２）π、π、π／２の順に遷移する場合、ｘａの符号が負（−）である。よって、現実の座標がこの順に遷移した後、遷移検出回路１０５は、レジスタＲｘｍｉｎへ保持指令を出力する。レジスタＲｘｍｉｎは、保持指令を受けて、仮レジスタＰＲ４に格納された値をｘｍｉｎとして保持する。また、この時、あるいは、この直後、遷移検出回路１０５は、仮レジスタＰＲ４へリセット指令を出力する。これにより、仮レジスタＰＲ４に格納された値はリセットされる。
【００６７】
運動体は、一定速度で一定方向に回転しているとは限らない。従って、レジスタＲｙｍａｘの更新頻度とＲｙｍｉｎの更新頻度とは等しくならない場合がある。レジスタＲｘｍａｘの更新頻度とＲｘｍｉｎの更新頻度も等しくならない場合がある。例えば、Ｒｙｍａｘの更新頻度がＲｙｍｉｎの更新頻度よりも少ない場合、Ｒｙｍａｘの更新期間が長くなる。その期間にオフセット量または運動体の速度が変化すると最大値ｙｍａｘが最小値ｙｍｉｎに比べ不正確な値となってしまう。このような問題を回避するため、振幅検出部３０は、レジスタＲｙｍｉｎおよびＲｙｍａｘをペアで更新し、レジスタＲｘｍａｘおよびＲｘｍｉｎをペアで更新することが好ましい。
【００６８】
図１を再度参照し、減算器４０および４１の機能を説明する。減算器４０は、振幅検出部３０と波形整形部５０との間に設けられている。減算器４０は、現実の座標ｙａからオフセット値ＯＳｙを減算する。オフセット値ＯＳｙが正数である場合、現実の座標ｙａは、基準軸Ｙｏに対してプラス側にずれている。オフセット値ＯＳｙが負数である場合、現実の座標ｙａは、基準軸Ｙｏに対してマイナス側にずれている。従って、減算器４０が（ｙａ−ＯＳｙ）を演算することによって、オフセット成分が現実の座標ｙａから除かれる。これにより、第１の補正信号としてのｙｃが得られる。
【００６９】
減算器４１も、振幅検出部３０と波形整形部５０との間に設けられている。減算器４１は、現実の座標ｘａからオフセット値ＯＳｘを減算する。オフセット値ＯＳｘが正数である場合、現実の座標ｘａは、基準軸Ｘｏに対してプラス側にずれている。オフセット値ＯＳｘが負数である場合、現実の座標ｘａは、基準軸Ｘｏに対してマイナス側にずれている。従って、減算器４０が（ｘａ−ＯＳｘ）を演算することによって、オフセット成分が現実の座標ｘａから除かれる。これにより、第１の補正信号としてのｘｃが得られる。
【００７０】
尚、オフセット値ＯＳｙ、ＯＳｘの符号が反転している場合には、減算器に代えて加算器を第３の演算器４０、４１として採用すればよい。オフセット値ＯＳｙ、ＯＳｘの符号が反転している場合とは、例えば、オフセットレジスタＲｏｓ１、Ｒｏｓ２から第３の演算器４０、４１までの間に、インバータ（図示せず）がバッファとして介在している場合である。
【００７１】
図６は、波形整形部５０の内部構成を示すブロック図である。尚、波形整形部５０は、独立かつ同一の処理をｓｉｎ信号およびｃｏｓ信号のそれぞれに対して実行する。従って、図６では、ｓｉｎ信号に関する波形整形部５０を示し、ｃｏｓ信号に関する波形整形部については省略する。図７は、本発明に係る実施形態に従った波形補正装置１００の動作を示すフロー図である。
【００７２】
波形整形部５０は、第４の演算部５１と、第５の演算部５２と、第１の選択部５６と、第２の選択部５７と、第１の計算値レジスタＲ１１と、第２の計算値レジスタＲ２１と、補正値レジスタＲ３１と、比較部ＣＯＭＰと、第１のシフティング部ＳＦＴ１と、第２のシフティング部ＳＦＴ２と、シフト量カウンタＳＣとを備えている。
【００７３】
波形整形部５０は、実際の振幅Ａｘおよび第１の補正信号としてｙｃを受信する。実際の振幅Ａｘおよび補正信号ｙｃは、それぞれ第１の選択部５６および第２の選択部５７へ送信される。また、実際の振幅Ａｘおよび補正信号ｙｃは、それぞれ第１および第２のシフティング部ＳＦＴ１、ＳＦＴ２へ送信される。
【００７４】
第１の選択部５６は、或る時点のサンプリング直後、最初に実際の振幅Ａｘを選択し、実際の振幅Ａｘを比較部ＣＯＭＰおよび第４の演算部５１へ送信する。その後、第１の選択部５６は、次のサンプリングまで第１の計算値レジスタＲ１１に保持されたデータを比較部ＣＯＭＰおよび第４の演算部５１へ送信する。
【００７５】
第２の選択部５７は、或る時点のサンプリング直後、最初に補正信号ｙｃを選択し、補正信号ｙｃを第５の演算部５２へ送信する。その後、第２の選択部５７は、次のサンプリングまで第２の計算値レジスタＲ２１に保持されたデータを第５の演算部５２へ送信する。
【００７６】
一方、第１のシフティング部ＳＦＴ１は、２進数のデジタル値で表現された実際の振幅Ａｙの桁を右シフトし、シフト後の値を第４の演算部５１へ送る。第２のシフティング部ＳＦＴ２は、２進数のデジタル値で表現された補正信号ｙｃの桁を右シフトし、シフト後の値を第５の演算部５２へ送る。
【００７７】
シフト量カウンタＳＣは、第１および第２のシフティング部ＳＦＴ１、ＳＦＴ２においてシフトされるシフト量（桁数）を決定する。サンプリング直後において、シフト量ｉは１である。その後、第４および第５の演算部５１、５２の演算の実行ごとに１ずつインクリメントされる。即ち、シフト量ｉは、演算回数と等しい値である。尚、第１および第２のシフティング部ＳＦＴ１、ＳＦＴ２は、それぞれ実際の振幅Ａｙおよび補正信号ｙｃを同量だけシフトさせる。
【００７８】
比較部ＣＯＭＰは、第１の選択部５６で選択された実際の振幅Ａｙまたは第１の計算値レジスタＲ１１に保持されたデータのいずれかと基準振幅ＡＲｙとを比較する。さらに、比較部ＣＯＭＰは、その比較結果に応じて、第４および第５の演算部５１，５２が実行する演算式として加算または減算のいずれかを決定する。第４および第５の演算部５１，５２が実行する演算種（加算または減算）は、同一である。即ち、第４の演算部５１が加算を実行する場合には、第５の演算部５２も加算を実行し、第４の演算部５１が減算を実行する場合には、第５の演算部５２も減算を実行する。
【００７９】
第４の演算部５１は、実際の振幅Ａｙを基準振幅ＡＲｙに収束させるために、第１のシフティング部ＳＦＴ１で実際の振幅Ａｙの桁を右シフトした値を、実際の振幅Ａｙに対して加算または減算する（Ｓ６０）。尚、第４のおよび第５の演算部５１、５２の詳細な演算については後述する。第４の演算部５１は、この加算または減算によって得られた結果値を第１の計算値レジスタＲ１１へ送る。第１の計算値レジスタＲ１１は、第４の演算部５１が演算を実行するごとに更新され、その結果値で以前の結果値を置き換える（Ｓ７０）。
【００８０】
第５の演算部５２は、第４の演算部５１と同期して、補正信号ｙｃを正規化信号ｙｃｎに収束させるために、補正信号ｙｃの桁を実際の振幅Ａｙのシフト量と同量だけシフトした値を、補正信号ｙｃに対して加算または減算する（Ｓ６１）。第５の演算部５２は、この加算または減算によって得られた結果値を第２の計算値レジスタＲ２１へ送る。第２の計算値レジスタＲ２１は、第５の演算部５２が演算を実行するごとに更新され、その結果値で以前の結果値を置き換える（Ｓ７１）。
【００８１】
第４および第５の演算部５１、５２は、実際の振幅Ａｙの桁の右シフトの量および補正信号ｙｃの桁の右シフトの量を１，２，３・・・と増大させつつ、演算を繰り返し実行する。
【００８２】
実際の振幅Ａｙまたは第１の計算値レジスタＲ１１に保持されたデータが基準振幅ＡＲｙよりも大きい場合には、比較部ＣＯＭＰは、第４および第５の演算部５１、５２が実行する演算の種類を減算に決定する。実際の振幅Ａｙまたは第１の計算値レジスタＲ１１に保持されたデータが基準振幅ＡＲｙよりも小さい場合には、比較部ＣＯＭＰは、第４および第５の演算部５１、５２が実行する演算の種類を加算に決定する。これにより、第４の演算部５１が演算を繰り返すことによって、第１の計算値レジスタＲ１１に保持されたデータは、基準振幅ＡＲｙに収束する。また、第５の演算部５２が演算を繰り返すことによって、第２の計算値レジスタＲ２１に保持されたデータは、正規化された信号ｙｃｎに収束する。
【００８３】
第４および第５の演算部５１、５２の演算は、第１の計算値レジスタＲ１１に保持されたデータが基準振幅ＡＲｙに収束するまで、あるいは、次のサンプリングが実行されるまで、繰り返し実行される（Ｓ８０）。第４および第５の演算部５１、５２の演算の終了後、補正値レジスタＲ３１は、第２の計算値レジスタＲ２１に保持されたデータを補正値レジスタＲ３１に格納する。この補正値レジスタＲ３１に格納されたデータは正規化信号ｙｃｎとして位置検出回路や速度検出回路等へ出力される。
【００８４】
次に、第４および第５の演算部５１、５２の演算を詳細に説明する。補正信号ｙｃは、正規化するために、ｙｃ×Ｄｙを実質的に算出する必要がある。ここで、比率Ｄｙは、Ｄｙ＝Σ（（Ｄ(ｉ)−ＢＤ(ｉ)）×２-ｉ）のように２進数で表すことができる。ここで、ｉは、Ｄｙを２進数で表したときのビット番号を示している。Ｄ(１)が最上位ビットの値を示し、ｉが大きくなるに従って下位ビットの値を示す。ＢＤ(ｉ)は、ｉ番目のビットの値を反転した値を示している。従って、（Ｄ(ｉ)−ＢＤ(ｉ)）は、１または−１のいずれかの値を取り得る。つまり、比率Ｄｙは、Ｄｙ＝±２-１±２-２±２-３・・・のように、２-ｉの加算または減算を繰り返すことで得られる。この事実を利用することによって、次のように第４および第５の演算部５１、５２の演算式を求めることができる。
【００８５】
第４の演算部５１は、式１または式２のいずれかを実行する。
Ａｉ＝Ａｉ−１＋Ａｍａｘ×２−ｉ      （式１）
Ａｉ＝Ａｉ−１−Ａｍａｘ×２−ｉ      （式２）
但し、ｉ＝１、２・・・ｎである。Ａ０＝Ａｙである。第４の演算部５１は、基準振幅ＡＲｙに実際の振幅Ａｙが収束するまで、あるいは、次のサンプリングが実行されるまで、式１または式２を繰り返し演算する。
【００８６】
実際の振幅Ａｙが基準振幅ＡＲｙよりも小さい場合、比較部ＣＯＭＰは、第４の演算部５１の演算式として式１を選択する。実際の振幅Ａｙが基準振幅ＡＲｙよりも大きい場合、比較部ＣＯＭＰは、第４の演算部５１の演算式として式２を選択する。これにより、概念的には、第４の演算部５１は、Ａｙ±Ａｙ／２±Ａｙ／４±Ａｙ／８±Ａｙ／１６・・・を計算する。
【００８７】
第５の演算部５２は、式３または式４のいずれかを実行する。
【００８８】
ｙｉ＝ｙｉ−１＋ｙ×２−ｉ      （式３）
ｙｉ＝ｙｉ−１−ｙ×２−ｉ      （式４）
但し、ｙ０＝ｙａである。第５の演算部５２は、基準振幅ＡＲｙに実際の振幅Ａｙが収束するまで、あるいは、次のサンプリングが実行されるまで、式３または式４を繰り返し演算する。
【００８９】
実際の振幅Ａｙが基準振幅ＡＲｙよりも小さい場合、比較部ＣＯＭＰは、第５の演算部５２の演算式として式３を選択する。実際の振幅Ａｙが基準振幅ＡＲｙよりも大きい場合、比較部ＣＯＭＰは、第５の演算部５２の演算式として式４を選択する。これにより、概念的には、第５の演算部５２は、ｙａ±ｙａ／２±ｙａ／４±ｙａ／８±ｙａ／１６・・・を計算する。
【００９０】
第４および第５の演算部５１、５２が同期して演算を繰り返すことによって、Ａｉが基準振幅ＡＲｙへ収束すると同時に、ｙｉは、正規化信号ｙｃｎへ収束する。
【００９１】
ここで、式１〜式４は、２−ｉの乗算項を含む。しかし、２−ｉの乗算は、２進数の値をｉビットだけ右シフトすることと等価である。従って、第４および第５の演算部５１、５２は、実際には、乗算器および除算器を含まず、単に、加算器、減算器およびデジタル値を右シフトさせる回路で構成され得る。
【００９２】
第４および第５の演算部５１、５２による“収束の精度”は、演算回数に依存する。収束の精度は、ｙｉとｙｃｎとの差を示し、その差が小さい方が高精度であると言える。演算回数ｉを増大させると、収束の精度は高くなり、逆に演算回数ｉを減少させると、収束の精度は低くなる。シフト量カウンタＳＣに所定値を演算回数として格納してもよい。この場合、ｉが制限値に達したときに、第４および第５の演算部５１、５２の演算は終了する。制限値を任意に設定することによって、収束の精度を任意に設定することができる。
【００９３】
一方、演算が次のサンプリングまで続行され、演算回数ｉが次のサンプリングまで不定の場合には、次のサンプリング時に、演算回数ｉは、補正値レジスタＲ３１に正規化信号ｙｃｎとともに格納される。演算回数ｉによって、収束精度を知ることができるからである。
【００９４】
波形整形部５０は、ｓｉｎ信号およびｃｏｓ信号のそれぞれに対応して設けられている。それにより、波形整形部５０は、ｓｉｎ信号およびｃｏｓ信号のそれぞれについて正規化信号ｙｃｎ、ｘｃｎを算出する。即ち、第４および第５の演算部５１、５２、比較器ＣＯＭＰ、第１および第２の計算値レジスタＲ１１、Ｒ２１、第１および第２の選択部５６、５７、第１および第２のシフティング部ＳＦＴ１、ＳＦＴ２、シフト量カウンタＳＣ、補正値レジスタＲ３１は、ｓｉｎ信号およびｃｏｓ信号のそれぞれに対応して設けられている。基準振幅はｓｉｎ信号およびｃｏｓ信号のそれぞれについて設定されてもよいが、好ましくは、基準振幅はｓｉｎ信号およびｃｏｓ信号のについて共通(同一)である。
【００９５】
本実施形態による波形補正装置は、上述のように、乗算器および除算器を有さず、加算器および減算器で構成されている。従って、ロジック回路で構成し易く、また、回路全体の規模が非常に小さいものとなる。さらに、ロジック回路は、反復演算を演算することに適している。従って、本実施形態による波形補正装置をロジック回路で構成することによって、演算速度を高速化することができる。
【００９６】
本実施形態による波形補正装置は、オペレータの目視に頼ることなく、ｓｉｎ信号およびｃｏｓ信号の正規化を自動で行うことができる。このため、ｓｉｎ信号およびｃｏｓ信号の高精度な正規化を低コストで短時間に実行することができる。さらに、ｓｉｎ信号およびｃｏｓ信号の振幅が動的に変化しても、本実施形態による波形補正装置は、その振幅の変換に自動的に素早く追従して、ｓｉｎ信号およびｃｏｓ信号を正規化することができる。
【図面の簡単な説明】
【００９７】
【図１】本発明に係る実施形態に従った波形補正装置１００のブロック図。
【図２】振幅検出部３０の機能を示す概念図。
【図３】波形整形部５０の機能を示す概念図。
【図４】振幅検出部３０の内部構成を示すブロック図。
【図５】現実の座標（ｘａ、ｙａ）の遷移に関して、保持指令の対象レジスタおよびリセット指令の対象レジスタを示した表。
【図６】波形整形部５０の内部構成を示すブロック図。
【図７】本発明に係る実施形態に従った波形補正装置１００の動作を示すフロー図。
【符号の説明】
【００９８】
１００…波形補正装置
２０…Ａ／Ｄコンバータ
１０…ロータリエンコーダまたはリニアスケール
３０…振幅検出部
４０、４１…減算器（第３の演算部）
５０…波形整形部
１０１…基準検出回路
１０２〜１０４…符号変化レジスタ
１０５…遷移検出回路
Ｄｙｍａｘ、Ｄｙｍｉｎ、Ｄｘｍａｘ、Ｄｘｍｉｎ…最大・最小検出回路
１１０、１１１…加算器（第１の演算部）
１２０、１２１…減算器（第２の演算部）
Ｒｏｓ１、Ｒｏｓ２…オフセットレジスタ
ＬＰＦ１〜ＬＰＦ４…低域通過フィルタ
５１…第４の演算部
５２…第５の演算部
５６…第１の選択部
５７…第２の選択部
Ｒ１１…第１の計算値レジスタ
Ｒ２１…第２の計算値レジスタ
Ｒ３１…補正値レジスタ
ＣＯＭＰ…比較部
ＳＦＴ１…第１のシフティング部
ＳＦＴ２…第２のシフティング部
ＳＣ…シフト量カウンタ
【図１】
2008185474.tif 000003
【図２】
2008185474.tif 000004
【図３】
2008185474.tif 000005
【図４】
2008185474.tif 000006
【図５】
2008185474.tif 000007
【図６】
2008185474.tif 000008
【図７】
2008185474.tif 000009