(57)【特許請求の範囲】
【請求項１】
コンピュータ、デジタル信号処理機又は電子回路を使用してデジタル入力信号（ｘＬＯＧ（ｋ））の数学的関数としてデジタル出力信号（ｙＬＯＧ（ｋ）／Ｋ）を生成する方法であって、
前記デジタル入力信号（ｘＬＯＧ（ｋ））を増幅又は減衰して前記数学的関数の絞られた引数の範囲内にある第１の中間信号（Ａ）及び前記デジタル入力信号（ｘＬＯＧ（ｋ））の増幅又は減衰による訂正信号（ＳｈｉｆｔLOG）を生成するステップと、
前記第１の中間信号（Ａ）に従って各インデックス（ｘi、ｘi+1、ｙi、ｙi+1）に又はその間にテーブル化された関数値（Ｂ１）をテーブルから読み出すステップと、
前記第１の中間信号（Ａ）と前記各インデックス（ｘi、ｘi+1、ｙi、ｙi+1）との偏差に従い、前記絞られた引数の範囲内で一定である傾きｍconstを用いて線形補間を行って補間値（Ｂ２）を生成するステップと、
前記の読み出されテーブル化された関数値（Ｂ１）と前記補間値（Ｂ２）とを合計することによって第２の中間信号（Ｂ）を生成するステップと、
前記訂正信号（ＳｈｉｆｔLOG）で前記第２の中間信号（Ｂ）を訂正することによって前記デジタル出力信号（ｙＬＯＧ（ｋ）／Ｋ）を生成するステップとを含み、
前記線形補間の際に生じる補間誤差が可能な限り小さくなるように前記傾きｍconstを選択することを特徴とする方法。
【請求項２】
前記数学的関数が２を底とする対数であり、前記絞られた引数の範囲が０．５と１の間であり、前記一定の傾きがｍconst＝２であることを特徴とする請求項１に記載の方法。
【請求項３】
前記絞られた引数の範囲において範囲境界（Ａ1、Ａ2）間の各区分内で一定である傾きｍconst.1、ｍconst.2及びｍconst.3を用いて線形補間を行うことを特徴とする請求項１に記載の方法。
【請求項４】
前記線形補間の際に生じる補間誤差が可能な限り小さくなるように前記一定の傾きｍconst.1、ｍconst.2、ｍconst.3を選択することを特徴とする請求項３に記載の方法。
【請求項５】
前記数学的関数が２を底とする対数であり、前記絞られた引数の範囲が０．５と１の間であり、前記一定の傾きがｍconst.1＝２＋２-1＋２-3、ｍconst.2＝２＋２-3及びｍconst.3＝１＋２-3であることを特徴とする請求項４に記載の方法。
【請求項６】
前記デジタル入力信号（ｘＬＯＧ（ｋ））が、前記数学的関数を適用する前に二乗されて合計される実数成分（Ｉ）と虚数成分（Ｑ）とからなることを特徴とする請求項１乃至５のいずれかに記載の方法。
【請求項７】
前記デジタル入力信号（ｘＬＯＧ（ｋ））の増幅又は減衰を、前記デジタル入力信号（ｘＬＯＧ（ｋ））の前記実数及び虚数成分（Ｉ、Ｑ）の二乗の前に少なくとも部分的に行うことを特徴とする請求項６に記載の方法。
【請求項８】
前記数学的関数が特定の底の対数であり、前記訂正信号（ＳｈｉｆｔLOG）が増幅に用いられる増幅係数（２x）の同じ底の指数（ｘ）を表し、前記訂正信号（ＳｈｉｆｔLOG）を前記第２の中間信号（Ｂ）から減算することによって前記訂正を行うことを特徴とする請求項１乃至７のいずれかに記載の方法。
【請求項９】
デジタル入力信号（ｘＬＯＧ（ｋ））の数学的関数としてデジタル出力信号（ｙＬＯＧ（ｋ）／Ｋ）を生成するための装置（１）であって、
前記デジタル入力信号（ｘＬＯＧ（ｋ））を増幅又は減衰することによって前記数学的関数の絞られた引数の範囲内にある第１の中間信号（Ａ）、及び前記デジタル入力信号（ｘＬＯＧ（ｋ））の増幅又は減衰による訂正信号（ＳｈｉｆｔLOG）を生成するレベル変更装置（６）と、
前記数学的関数のテーブル化された関数値が各インデックス（ｘi、ｘi+1、ｙi、ｙi+1）に又はその間に記憶される記憶装置（２０）であって、テーブル化された関数値（Ｂ１）が前記第１の中間信号（Ａ）に従って前記記憶装置（２０）から読み出され、第２の中間信号（Ｂ）が前記読み出されテーブル化された関数値（Ｂ１）に従って生成される記憶装置（２０）と、
前記訂正信号（ＳｈｉｆｔLOG）で前記第２の中間信号（Ｂ）を訂正することにより前記デジタル出力信号（ｙＬＯＧ（ｋ）／Ｋ）を生成する訂正手段（１２）と、
前記第１の中間信号（Ａ）と前記各インデックス（ｘi、ｘi+1、ｙi、ｙi+1）との偏差に従って補間値（Ｂ２）を生成する補間器（３０）と、
前記テーブル化された関数値（Ｂ１）と前記補間値（Ｂ２）とを合計する加算器（２９）とを含み、
前記補間器（３０）において、前記絞られた引数の範囲の各区分（Ｉ1、Ｉ2、Ｉ3）内でそれぞれ一定の傾き（ｍconst.1、ｍconst.2、ｍconst.3）を用いて線形補間が行われ、前記一定の傾き（ｍconst.1、ｍconst.2、ｍconst.3）は、それぞれ前記線形補間の際に生じる補間誤差が可能な限り小さくなるように選択され、前記第１の中間信号（Ａ）と前記各インデックス（ｘi、ｘi+1、ｙi、ｙi+1）によって規定される参照位置（ｘi＋ｘi+1／２、ｙi＋ｙi+1／２）との偏差に対応する乗数（Ａ−ＡＤＲ−Δｘ／２）を、前記中間信号（Ａ）が位置する区分（Ｉ1、Ｉ2、Ｉ3）に応じて、該当する区分（Ｉ1、Ｉ2、Ｉ3）に属する前記一定の傾き（ｍconst.1、ｍconst.2、ｍconst.3）に乗算する切換え可能な乗算装置（３１）が設けられていることを特徴とする装置。
【請求項１０】
前記切換え可能な乗算装置（３１）が、前記乗数（Ａ−ＡＤＲ−Δｘ／２）のビットの桁をずらすビットシフタ（２２、２４、２６）、マルチプレクサ（２３、２５）及び加算器（２７、２８）を含むことを特徴とする請求項９に記載の装置。
【請求項１１】
前記デジタル入力信号（ｘＬＯＧ（ｋ））の実数成分（Ｉ）及び虚数成分（Ｑ）を二乗し、二乗された各成分を合計する二乗生成器（２）が設けられていることを特徴とする請求項９又は１０のいずれかに記載の装置。
【請求項１２】
前記レベル変更装置（６）が、前記二乗生成器（２）の入力の前段に配置された第１のレベル変更サブ装置（６ａ）及び前記二乗生成器（２）の出力の後段に配置された第２のレベル変更サブ装置（６ｂ）を含み、前記訂正信号（ＳｈｉｆｔLOG）が、前記第１のレベル変更サブ装置（６ａ）によって生成される第１の訂正サブ信号（ＳｈｉｆｔIQ）と前記第２のレベル変更サブ装置（６ｂ）によって生成される第２の訂正サブ信号（ＳｈｉｆｔCORR）とからなることを特徴とする請求項１１に記載の装置。
【請求項１３】
前記数学的関数が特定の底の対数であり、前記訂正信号（ＳｈｉｆｔLOG）が前記レベル変更装置で用いられる増幅係数（２ｘ）の同じ底の指数（ｘ）を表し、
前記訂正要素が前記訂正信号（ＳｈｉｆｔLOG）を前記第２の中間信号（Ｂ）から減算する減算器（１２）であることを特徴とする請求項９乃至１２のいずれかに記載の装置。
【請求項１４】
プログラムがコンピュータ又はデジタル信号処理機において実施される場合において、請求項１乃至８のいずれかに記載の全てのステップを実行可能にするプログラムコード手段を含むコンピュータプログラム。
【請求項１５】
請求項１乃至８のいずれかに記載の全てのステップを実行可能にするプログラムコード手段を含むコンピュータプログラムが格納された機械可読のデータ媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、デジタル入力信号の数学的関数としてデジタル出力信号を生成するための方法及び装置並びにこの方法を実行するためのコンピュータプログラムに関する。
【０００２】
【従来の技術】
この種の技術の応用例として、例えば対数を用いてスケーリングされた被制御変数を生じさせるために実数成分Ｉと虚数成分Ｑとからなる複素数デジタル入力信号の絶対値の対数を用いなければならないものがある。
【０００３】
従来の一般的な手法は、例えば反復的方法によって関数値を計算するか、広範囲のテーブルの中に関数値を準備しておき、入力信号の値に従ってそれらを検索するかのいずれかであった。
【０００４】
リアルタイムでの関数値の計算は非常にハードウェア集約的であるので、通常は実行不可能である。入力信号の可能な値の全てについて１つのテーブルが記憶されるとすると、記憶装置の容量が大きくなるか、あるいは、テーブルの各インデックスが非常に大きく離れるので、得られる精度が非常に悪くなるか又はインデックス間を補間するためさらに多くのリソースの使用による補間が必要になるかのいずれかである。
【０００５】
【発明が解決しようとする課題】
このような課題を解決するためになされた本発明は、デジタル入力信号の数学的関数としてデジタル出力信号を生成するための方法及び装置、並びにこの方法を実行するためのコンピュータプログラムであって、その関数テーブル用の記憶装置の容量は小さく、出力信号の基礎となる関数値を高精度で決定可能なコンピュータプログラムを提供することを目的とする。
【０００６】
【課題を解決するための手段】
かかる目的を達成するためになされた請求項１記載の発明は、コンピュータ、デジタル信号処理機又は電子回路を使用してデジタル入力信号（ｘＬＯＧ（ｋ））の数学的関数としてデジタル出力信号（ｙＬＯＧ（ｋ）／Ｋ）を生成する方法であって、前記デジタル入力信号（ｘＬＯＧ（ｋ））を増幅又は減衰して前記数学的関数の絞られた引数の範囲内にある第１の中間信号（Ａ）及び前記デジタル入力信号（ｘＬＯＧ（ｋ））の増幅又は減衰による訂正信号（ＳｈｉｆｔLOG）を生成するステップと、前記第１の中間信号（Ａ）に従って各インデックス（ｘi、ｘi+1、ｙi、ｙi+1）に又はその間にテーブル化された関数値（Ｂ１）をテーブルから読み出すステップと、前記第１の中間信号（Ａ）と前記各インデックス（ｘi、ｘi+1、ｙi、ｙi+1）との偏差に従い、前記絞られた引数の範囲内で一定である傾きｍconstを用いて線形補間を行って補間値（Ｂ２）を生成するステップと、前記の読み出されテーブル化された関数値（Ｂ１）と前記補間値（Ｂ２）とを合計することによって第２の中間信号（Ｂ）を生成するステップと、前記訂正信号（ＳｈｉｆｔLOG）で前記第２の中間信号（Ｂ）を訂正することによって前記デジタル出力信号（ｙＬＯＧ（ｋ）／Ｋ）を生成するステップとを含み、前記線形補間の際に生じる補間誤差が可能な限り小さくなるように前記傾きｍconstを選択することを特徴とする。
請求項２記載の発明は、請求項１記載の発明において、前記数学的関数が２を底とする対数であり、前記絞られた引数の範囲が０．５と１の間であり、前記一定の傾きがｍconst＝２であることを特徴とする。
請求項３記載の発明は、請求項１記載の発明において、前記絞られた引数の範囲において範囲境界（Ａ1、Ａ2）間の各区分内で一定である傾きｍconst.1、ｍconst.2及びｍconst.3を用いて線形補間を行うことを特徴とする。
請求項４記載の発明は、請求項３記載の発明において、前記線形補間の際に生じる補間誤差が可能な限り小さくなるように前記一定の傾きｍconst.1、ｍconst.2、ｍconst.3を選択することを特徴とする。
請求項５記載の発明は、請求項４記載の発明において、前記数学的関数が２を底とする対数であり、前記絞られた引数の範囲が０．５と１の間であり、前記一定の傾きがｍconst.1＝２＋２-1＋２-3、ｍconst.2＝２＋２-3及びｍconst.3＝１＋２-3であることを特徴とする。
請求項６記載の発明は、請求項１乃至５のいずれか１項記載の発明において、前記デジタル入力信号（ｘＬＯＧ（ｋ））が、前記数学的関数を適用する前に二乗されて合計される実数成分（Ｉ）と虚数成分（Ｑ）とからなることを特徴とする。
請求項７記載の発明は、請求項６記載の発明において、前記デジタル入力信号（ｘＬＯＧ（ｋ））の増幅又は減衰を、前記デジタル入力信号（ｘＬＯＧ（ｋ））の前記実数及び虚数成分（Ｉ、Ｑ）の二乗の前に少なくとも部分的に行うことを特徴とする。
請求項８記載の発明は、請求項１乃至７のいずれか１項記載の発明において、前記数学的関数が特定の底の対数であり、前記訂正信号（ＳｈｉｆｔLOG）が増幅に用いられる増幅係数（２x）の同じ底の指数（ｘ）を表し、前記訂正信号（ＳｈｉｆｔLOG）を前記第２の中間信号（Ｂ）から減算することによって前記訂正を行うことを特徴とする。
請求項９記載の発明は、デジタル入力信号（ｘＬＯＧ（ｋ））の数学的関数としてデジタル出力信号（ｙＬＯＧ（ｋ）／Ｋ）を生成するための装置（１）であって、前記デジタル入力信号（ｘＬＯＧ（ｋ））を増幅又は減衰することによって前記数学的関数の絞られた引数の範囲内にある第１の中間信号（Ａ）、及び前記デジタル入力信号（ｘＬＯＧ（ｋ））の増幅又は減衰による訂正信号（ＳｈｉｆｔLOG）を生成するレベル変更装置（６）と、前記数学的関数のテーブル化された関数値が各インデックス（ｘi、ｘi+1、ｙi、ｙi+1）に又はその間に記憶される記憶装置（２０）であって、テーブル化された関数値（Ｂ１）が前記第１の中間信号（Ａ）に従って前記記憶装置（２０）から読み出され、第２の中間信号（Ｂ）が前記読み出されテーブル化された関数値（Ｂ１）に従って生成される記憶装置（２０）と、前記訂正信号（ＳｈｉｆｔLOG）で前記第２の中間信号（Ｂ）を訂正することにより前記デジタル出力信号（ｙＬＯＧ（ｋ）／Ｋ）を生成する訂正手段（１２）と、前記第１の中間信号（Ａ）と前記各インデックス（ｘi、ｘi+1、ｙi、ｙi+1）との偏差に従って補間値（Ｂ２）を生成する補間器（３０）と、前記テーブル化された関数値（Ｂ１）と前記補間値（Ｂ２）とを合計する加算器（２９）とを含み、前記補間器（３０）において、前記絞られた引数の範囲の各区分（Ｉ1、Ｉ2、Ｉ3）内でそれぞれ一定の傾き（ｍconst.1、ｍconst.2、ｍconst.3）を用いて線形補間が行われ、前記一定の傾き（ｍconst.1、ｍconst.2、ｍconst.3）は、それぞれ前記線形補間の際に生じる補間誤差が可能な限り小さくなるように選択され、前記第１の中間信号（Ａ）と前記各インデックス（ｘi、ｘi+1、ｙi、ｙi+1）によって規定される参照位置（ｘi＋ｘi+1／２、ｙi＋ｙi+1／２）との偏差に対応する乗数（Ａ−ＡＤＲ−Δｘ／２）を、前記中間信号（Ａ）が位置する区分（Ｉ1、Ｉ2、Ｉ3）に応じて、該当する区分（Ｉ1、Ｉ2、Ｉ3）に属する前記一定の傾き（ｍconst.1、ｍconst.2、ｍconst.3）に乗算する切換え可能な乗算装置（３１）が設けられていることを特徴とする。
請求項１０記載の発明は、請求項９記載の発明において、前記切換え可能な乗算装置（３１）が、前記乗数（Ａ−ＡＤＲ−Δｘ／２）のビットの桁をずらすビットシフタ（２２、２４、２６）、マルチプレクサ（２３、２５）及び加算器（２７、２８）を含むことを特徴とする。
請求項１１記載の発明は、請求項９又は１０のいずれか１項記載の発明において、前記デジタル入力信号（ｘＬＯＧ（ｋ））の実数成分（Ｉ）及び虚数成分（Ｑ）を二乗し、二乗された各成分を合計する二乗生成器（２）が設けられていることを特徴とする。
請求項１２記載の発明は、請求項１１記載の発明において、前記レベル変更装置（６）が、前記二乗生成器（２）の入力の前段に配置された第１のレベル変更サブ装置（６ａ）及び前記二乗生成器（２）の出力の後段に配置された第２のレベル変更サブ装置（６ｂ）を含み、前記訂正信号（ＳｈｉｆｔLOG）が、前記第１のレベル変更サブ装置（６ａ）によって生成される第１の訂正サブ信号（ＳｈｉｆｔIQ）と前記第２のレベル変更サブ装置（６ｂ）によって生成される第２の訂正サブ信号（ＳｈｉｆｔCORR）とからなることを特徴とする。
請求項１３記載の発明は、請求項９乃至１２のいずれか１項記載の発明において、前記数学的関数が特定の底の対数であり、前記訂正信号（ＳｈｉｆｔLOG）が前記レベル変更装置で用いられる増幅係数（２ｘ）の同じ底の指数（ｘ）を表し、前記訂正要素が前記訂正信号（ＳｈｉｆｔLOG）を前記第２の中間信号（Ｂ）から減算する減算器（１２）であることを特徴とする。
請求項１４記載の発明は、プログラムがコンピュータ又はデジタル信号処理機において実施される場合において、請求項１乃至８のいずれかに記載の全てのステップを実行可能にするプログラムコード手段を含むコンピュータプログラムである。
請求項１５記載の発明は、請求項１乃至８のいずれかに記載の全てのステップを実行可能にするプログラムコード手段を含むコンピュータプログラムが格納された機械可読のデータ媒体である。
【０００７】
本発明においては、数学的関数の絞られた引数の範囲だけが用いられる。すなわち、入力信号の値の許容される範囲に比べて、関数がテーブル化された引数の値の範囲はかなり限定されている。この絞られた引数の範囲内では、限られた量の記憶装置のスペースを使用しても関数値を互いに比較的密接させてテーブル化することができる。入力信号のレベルは、適切な増幅又は減衰によって、テーブルに供給される信号が数学的関数がテーブル化された絞られた引数の範囲内にあるように修正される。増幅又は減衰係数は、訂正信号を生成するために用いられ、これによって、テーブル化され必要に応じて補間された関数値からなる出力信号が訂正される。
【０００８】
本発明によれば、更なる有利な改良を可能にする。
すなわち、テーブル化された関数値間の線形補間が好適に用いられる。絞られた引数の範囲全体にわたって線形補間のために均一で一定の傾きを用いるか、又は、絞られた引数の範囲をそれぞれの中で一定の傾きが線形補間のために用いられるいくつかの区分に分割するかのいずれかによってかなりの簡略化を達成することができる。各インデックスでの差分商に基づいて傾きが別々に決定される線形補間に対して、上記の線形補間の実行によってかなりの簡略化が達成される。テーブル化された関数値の許容される引数の範囲は、入力信号の値の許容される範囲と比べて非常に狭いので、この線形補間の簡略化に必然的に伴う精度の損失は小さい。
【０００９】
複素数入力信号の絶対値の二乗をまず計算する場合、信号の絶対値を二乗する前に少なくとも部分的に入力信号の粗雑な増幅又は減衰を行い、前述の絶対値の二乗の後で適切な場合には細かい増幅又は減衰を行ってそれに応じて訂正信号を調節するのが有利である。
【００１０】
【発明の実施の形態】
以下、図面を参照して本発明を詳細に説明する。
図１は、本発明の方法を実施するための本発明による装置１の第１の実施例を示す。
【００１１】
図示された実施例において、装置１は、サンプル・シーケンスからなるデジタル入力信号ｘＬＯＧ（ｋ）に基づき、同様にサンプル・シーケンスからなるデジタル出力信号ｙＬＯＧ（ｋ）／Ｋを生成する機能を有している。
【００１２】
ここで、出力信号ｙＬＯＧ（ｋ）／Ｋのサンプル値は、入力信号ｘＬＯＧ（ｋ）のサンプル値の２を底とする対数である。
【００１３】
２を底とする対数は１０を底とする対数と定数Ｋだけ異なるので、サンプル・シーケンスｙＬＯＧ（ｋ）は、入力信号ｘＬＯＧ（ｋ）のサンプル・シーケンスの１０を底とする対数を表す。
【００１４】
本発明は、任意の数学的関数、特に単調関数に適しているもので、対数を伴う応用例に限定されるものではない。
【００１５】
図１に示す実施例では、まず、二乗生成器２において入力信号ｘＬＯＧ（ｋ）の絶対値の二乗が生成される。なお、入力信号ｘＬＯＧ（ｋ）の対数が直接決定される応用例では、この二乗生成器２を省略することができる。
【００１６】
二乗生成器２は、複素数入力信号ｘＬＯＧ（ｋ）の実数成分Ｉを二乗する第１の乗算器３及び複素数入力信号ｘＬＯＧ（ｋ）の虚数成分Ｑを二乗する第２の乗算器４を含む。
【００１７】
第１の乗算器３及び第２の乗算器４によって二乗された各成分は、加算器５において合計され、これにより二乗生成器２において入力信号ｘＬＯＧ（ｋ）の絶対値の二乗｜ｘＬＯＧ（ｋ）｜2が得られる。この値を有するデータは、レベル変更装置６へ送られる。
【００１８】
レベル変更装置６は、結果として得られる第１の中間信号Ａが、数学的関数、すなわち本実施例においては２を底とする対数の所定の絞られた引数の範囲内にあるように、入力信号ｘＬＯＧ（ｋ）又は本実施例においては入力信号ｘＬＯＧ（ｋ）の絶対値の二乗を増幅する機能を有している。
【００１９】
この場合、底を２とする対数の絞られた引数の範囲は、好ましくは区間［０．５，１）である。
【００２０】
図示された本実施例の場合、増幅は入力信号の絶対値の二乗を表すビットの桁をずらすこと（ビットシフト）によって行われる。このため、まず、決定装置７は以下に記載される方法を用い、入力信号の絶対値の二乗が絞られた引数の範囲［０．５，１）内に入るように、その入力信号の絶対値の二乗の桁をずらさなければならないビットの数ｓｈｉｆｔLOGを決定する。
したがって、このシフトビットの数ｓｈｉｆｔLOGは、関数値を後に訂正する必要のある信号である。
【００２１】
一般に、増幅係数は底２の奇数乗の場合もあり得るが、その場合はビットシフトによる増幅及びその後の単純な減算による訂正はできない。
これに対し、増幅がビットシフトによってなされる場合は、図１に示すように、乗算器ではなくビットシフタ８を用いることができる。図中、ビットシフタ８は、累乗器９及び乗算器１０として描かれている。この場合、負の増幅（減衰）を行うことも可能である。
【００２２】
レベル変更装置６から出力される第１の中間信号Ａは、第１の中間信号Ａのサンプル値に対応する数学的関数の値を第２の中間信号Ｂとして出力する関数値決定装置１１へ送出される。
【００２３】
図示された本実施例では、関数値決定装置１１は、第１の中間信号Ａについて、２を底とする対数を算出し、第２の中間信号Ｂとして生成する機能を有している。
【００２４】
第２の中間信号Ｂは、訂正信号ｓｈｉｆｔLOGによって訂正される。このためには、本来第２の中間信号Ｂと同じ数学的関数即ち２を底とする対数を用いて訂正信号を決定しなければならない。
【００２５】
しかし、本実施例のように、増幅係数が底２の整数乗である場合には、値ｓｈｉｆｔLOGは底２の累乗となり、訂正は単に減算器（訂正手段）１２において第２の中間信号Ｂから訂正信号ｓｈｉｆｔLOGを減算することによって行うことができる。
【００２６】
このような演算によって、出力信号ｙＬＯＧ（ｋ）／Ｋが得られる。対数ではなく別の数学的関数を用いる場合は、減算器１２の代わりに適切な別の訂正手段を用いなければならない。
【００２７】
ここでは、絶対値のみが必要であり、また対数は続いて決定されるので、決定されるのは絶対値ではなく絶対値の二乗である。そして、対数によれば、べき乗は、式（１）に示されるように、一定の係数の違いになる。
【００２８】
【数１】
0004330874.tif 000002
【００２９】
ｘＬＯＧ（ｋ）の絶対値の二乗は、単に式（２）に示される加算によって決定することができる。
【００３０】
【数２】
0004330874.tif 000003
【００３１】
対数はテーブル法によって決定される。しかし、テーブルを用いるとｙＬＯＧ（ｋ）の近似値しか得られない。近似による誤差は、例えば０．００１ｄＢより小さくなければならない。テーブル法だけを用いて対数の値の範囲全体にわたってこのような高精度を達成するためには、非常に大きなテーブル（およそ１２０Ｋワード）を実現することが必要となる。テーブルのサイズは本発明の簡略効果によって著しく低減させることができる。
【００３２】
１つの重要な簡略化としては、テーブル入力においてビットシフタ８を用いることがあげられる。テーブルの入力値（絶対値の二乗の計算結果）は、入力値（第１の中間信号Ａ）が式（３）に示される値の範囲内になるまで係数２で乗算される。
【００３３】
【数３】
0004330874.tif 000004
【００３４】
対数生成器への入力の際に行われる乗算は、式（４）に示される出力の際の減算によって取り消すことができる。
【００３５】
【数４】
0004330874.tif 000005
【００３６】
このため、テーブルは入力値の範囲［０．５，１）だけを包含すればよい。底１０を有する対数の場合、２の累乗の対数
【００３７】
【数５】
0004330874.tif 000006
【００３８】
を与えるテーブルを作成しなければならないと思われるが、これは２を底とする対数を用いることによって回避することができる。この関係は、式（５）に示すとおりである。
【００３９】
【数６】
0004330874.tif 000007
【００４０】
これにより、２の累乗を与えるテーブルは必要なく、シフト係数ｓｈｉｆｔLOGを直接に減算することができる。出力信号ｙＬＯＧ（ｋ）においては、式（６）に示される係数を考慮することができる。
【００４１】
【数７】
0004330874.tif 000008
【００４２】
図１のブロック図においては、絶対値の二乗を計算するため、大きなワードサイズを有する２つの乗算器３及び４が必要である。いったん絶対値の二乗が計算されると、その結果は、対数を規定するテーブルの範囲（絞られた引数の範囲）内になるまでシフトによって増幅される。絶対値の二乗が計算される前にこの増幅が行われると、乗算器３、４は、大きなワードサイズを有さなくてよい。この場合には、式（７）の関係が適用される。
【００４３】
【数８】
0004330874.tif 000009
【００４４】
｜ｘＬＯＧ（ｋ）｜2が非常に大きい場合は、絶対値の二乗を計算するためにさほど大きな乗算器を用いる必要はない。対数が例えば０．００１ｄＢまでで精度よく決定される場合、計算における僅かな誤差は許容可能である。
【００４５】
しかし、この絶対値の二乗が小さい（つまり入力値もまた小さい）場合は、乗算器のワードサイズを低減させると重要な誤差をもたらすことになる。これは後の増幅を乗算器の前の位置に移動させることにより回避することができる。
【００４６】
なお、二乗が計算されるまではどのシフト係数ｓｈｉｆｔLOGが得られるかがわからないという問題がある。つまり、二乗はこのシフト係数が決定される前に計算しなければならない。しかし、入力値自体からシフト係数の非常に良好な推定値を計算することができる。絶対値の二乗の計算への入力において、入力値は、式（８）に示されるシフト係数ｓｈｉｆｔIQによって増幅される。
【００４７】
【数９】
0004330874.tif 000010
【００４８】
シフト係数ｓｈｉｆｔIQは、入力値の範囲を最適に活用するように選択される。これは、実数又は虚数部分のいずれか一方が以下の不等式（９）の１つを満たす場合に適用される。
【００４９】
【数１０】
0004330874.tif 000011
【００５０】
これら実数又は虚数部分のいずれか一方が上記の値の範囲を出るまでは増幅を進めてはならない。したがって、不等式（１０）の関係も満たさなければならない。
【００５１】
【数１１】
0004330874.tif 000012
【００５２】
これらの最初は複雑に思われる規則は、簡単な方法で実行することができる。ビットシフトは例えば５つのステップで行われる。これらのステップのシフト係数は、１６、８、４、２及び１である。係数１６によるシフトがまず最初に行われる。各ステップにおいては、そのシフトによって押し出された先頭ビット（ＭＳＢ：Most Significant Bits）の全てが同一であることを確認しさえすればよい。
【００５３】
不等式（９）及び（１０）から導き出される規則に適合していれば、絶対値の二乗の値の範囲は、式（１１）に示されるようになる。
【００５４】
【数１２】
0004330874.tif 000013
【００５５】
不等式（３）によれば、テーブルへの入力値は、区間［０．５，１）の間になければならない。このため、不等式（１２）に示される別の３段階のビットシフタを提供しなければならない。
【００５６】
【数１３】
0004330874.tif 000014
【００５７】
図２は、上述の２段階増幅を用いて本発明方法を実行するための本発明装置の第２の実施例を示すブロック図である。以下、図１と同じ要素には同じ参照符号を付し、重複する説明を省略する。
【００５８】
図２の実施例において、レベル変更装置６は、二乗生成器２への入力の前段に配置された第１のレベル変更サブ装置６ａと、二乗生成器２の出力の後段に配置された第２のレベル変更サブ装置６ｂを有している。
【００５９】
訂正信号ｓｈｉｆｔLOGは、第１のレベル変更サブ装置６ａによって生成された第１の訂正サブ信号ｓｈｉｆｔIQと、第２のレベル変更サブ装置６ｂによって生成された第２の訂正サブ信号ｓｈｉｆｔcorrとからなる。
【００６０】
ここで、第１の訂正サブ信号ｓｈｉｆｔIQは、乗算器として表されたビットシフタ１３において不等式（１２）で定められた係数２で乗算され、その結果が加算器１４において第２の訂正サブ信号ｓｈｉｆｔｃｏｒｒに加算されて、結果として訂正信号ｓｈｉｆｔLOGが生じる。
【００６１】
図４は、図１及び図２の実施例で用いられる関数値決定装置１１の詳細図である。
ここで、関数値決定装置１１の入力に中間信号Ａが供給される。最上位ビットＭＳＢのいくつか、例えば上位８ビットが、アドレスワードＡＤＲを形成し、これがＲＯＭ（読み取り専用メモリ）などの記憶装置２０へと送られる。
【００６２】
記憶装置２０のインデックスに又は好ましくはインデックスの間に記憶されるのは、表示される数学的関数の値すなわち例えば実施例では２を底とする対数である。
【００６３】
上述したように、第１の中間信号Ａの生成の際における入力信号の増幅又は減衰によって、第１の中間信号Ａは、確実に数学的関数の絞られた引数の範囲内すなわち実施例では区間［０．５，１）内にあるようになる。
【００６４】
記憶装置２０に対して所定の記憶容量を想定すると、絞られた引数の範囲によってインデックスを互いに比較的近接して置くことができ、その結果、まさに引数の範囲を絞ることによってインデックスに又はその間にテーブル化された関数値Ｂ１がより高精度になる。
【００６５】
本実施例では、テーブル化された関数値Ｂ１の間で線形補間すなわち一次補間を行うことよってさらに精度が高まる。しかし、本発明はこれに限られず、線形補間に用いられる直線の傾きは、テーブルの各インデックスについて個別に、例えば差分商を生成するなどして、考慮されることはなく、引数の範囲全体について均一な直線の傾きが用いられたり、引数の範囲が複数の区分に分けられ、そのそれぞれの中で直線の傾きが一定であったりする。
【００６６】
図７は、この線形補間の手順を明らかにするための説明図である。
図７に示すグラフは、第１の中間信号Ａの関数としての２を底とする対数を表している。
関数値Ｂ１は、記憶装置２０において、インデックスｘi，ｘi+1の間や、インデックスｘj，ｘj+1の間などにそれぞれテーブル化される。
線形補間はこれらのテーブル化された関数値の間で行われる。補間に用いられる直線を図７に示す。この直線の傾きはインデックスの位置とは無関係で常に一定であることが理解される。
【００６７】
図３は、テーブル化誤差εTAB（ｉ）／Ｋについて、関数値を記憶装置２０において各インデックスｘiやｘi+1等ではなくそれらの間の位置、すなわち例えば（ｘi＋ｘi+1）／２という位置に記憶することがより有利であることを明らかにしている。このことはテーブル化誤差εTAB（ｉ）／Ｋを半減させる。
【００６８】
絞られた引数の範囲全体にわたって均一で一定の傾きｍconstが線形補間に用いられ、数学的関数が２を底とする対数であり絞られた引数の範囲が０．５と１の間にある場合には、最大補間誤差が最小となる一定の傾きｍconstは、式（１３）に示される値となることを実証可能である。
【００６９】
【数１４】
0004330874.tif 000015
【００７０】
しかし、端数を切り捨てた一定の傾きｍconst＝２の方が現実的である。ｍconst＝２のときに生じる出力信号ｙＬＯＧ（ｘ）の誤差は、図５において第１の中間信号Ａの関数として表されている。
【００７１】
上述したように、補間誤差は、引数の範囲を、各区分内では一定だが互いの区分では異なる傾きを有する複数の区分Ｉ1、Ｉ2、Ｉ3に分けることによって、よりいっそう低減させることができる。例えば、絞られた引数の範囲［０．５，１）は、式（１４）に示される区分に分けることができる。
【００７２】
【数１５】
0004330874.tif 000016
【００７３】
図６に表すこれらの範囲の境界Ａ1＝５／８、Ａ2＝３／４について、３種類の異なる区分Ｉ1、Ｉ2及びＩ3において線形補間に用いられるべき最適な傾きは、式（１５）によって表現できることを示すことができる。
【００７４】
【数１６】
0004330874.tif 000017
【００７５】
この端数を切り捨てた値は、２の整数乗の組み合わせとして表示でき、このため、線形補間の際に行われる乗算の演算は、ハードウェアに非常に大きな要求を課すことなくビットシフトによって行うことができる。
図６の例で用いられるインデックスの幅Δｘは図５のものの４倍であったが、誤差の実質的な増加はなかった。
【００７６】
上記の例の実現を図４に示す。
図４に示すように、アドレスワードＡＤＲに含まれない最上位でないビットは、データワードＡ−ＡＤＲを形成し、補間器３０へ送られる。補間器３０の減算器２１は、データワードＡ−ＡＤＲから、Δｘを２つのインデックス間の距離として値Δｘ／２を減算する。これは、関数値Ｂ１がそれぞれインデックス間にテーブル化されてこの訂正を必要としている、図３との関連で言及した状況に対応する。
【００７７】
減算器２１は、直接に、また減算器２１の出力値の価をそれぞれ１桁だけ増やすビットシフタ２２を介して第１のマルチプレクサ２３に接続されている。
【００７８】
減算器２１は、更に、減算器２１の出力からのビットの価をそれぞれ１桁だけ減らす第２のビットシフタ２４を介して第２のマルチプレクサ２５に接続され、もう一方の入力にはデータ値「０」が常に供給されている第２のマルチプレクサ２５に接続されている。
【００７９】
減算器２１の出力値のビットを３桁減らす第３のビットシフタ２６を介して、第１の加算器２７の第１の入力が減算器２１の出力に接続されている。
【００８０】
第１の加算器２７のもう一方の入力は、第２のマルチプレクサ２５の出力に接続されている。第２の加算器２８の第１の入力部は第１の加算器２７の出力に接続され、第２の加算器２８の第２の入力は第１のマルチプレクサ２３の出力に接続されている。
【００８１】
第２の加算器２８からの出力によって補間値Ｂ２を得ることができる。そして、記憶装置２０から読み出される関数値Ｂ１及び上記補間値Ｂ２は、第３の加算器２９にそれぞれ入力される。そして、第３の加算器２９の出力によって第２の中間信号Ｂが得られる。
【００８２】
マルチプレクサ２３及び２５は、上記の例示の値に従って互いに異なっているが区分内では一定である傾きｍconst.3、ｍconst.2及びｍconst.1の間を切り換える作用をする。
【００８３】
このため、マルチプレクサ２３は、アドレスワードＡＤＲの８番目のビットＡＤＲ（８）が「０」となっている場合には「１」と表示された入力を出力に接続する。そうでない場合には、「０」と表示された第１のマルチプレクサ２３の入力が出力に接続される。
【００８４】
第２のマルチプレクサ２５は、アドレスワードＡＤＲの８番目のビットＡＤＲ（８）が「０」となっているかアドレスワードＡＤＲの７番目のビットＡＤＲ（７）が「１」となっている場合には、「１」と表示された入力を出力に接続する。
【００８５】
簡単な論理の組み合わせからわかるように、このことによって、絞られた引数の範囲の種々の区分Ｉ1、Ｉ2、Ｉ3における異なる傾きについて等式（１５）で与えられる例示的な値が実現される。このようにして、ビットシフタ２２、２４、２６、マルチプレクサ２３、２５及び加算器２７、２８が切換え可能な乗算装置３１を形成する。
【００８６】
本発明は、上述した実施例に限定されるものではなく、任意の数学的関数にも同様に適用することができる。
【００８７】
また、本発明は、電子回路、特にＦＰＧＡ（フリープログラマブルゲートアレイ（free-programmable gate array））の形態のハードウェアとして、また例えばデジタル信号処理機のソフトウェアとして両方の形態で実現することができる。
【００８８】
本発明の好適な実施形態が図示及び記載されているが、本発明の精神及び範囲から逸脱することなく種々の変更をなし得ることが十分にわかるであろう。
【００８９】
【発明の効果】
以上述べたように本発明によれば、デジタル入力信号の数学的関数としてデジタル出力信号を生成するための方法及び装置、並びにこの方法を実行するためのコンピュータプログラムであって、その関数テーブル用の記憶装置の容量が小さく、出力信号の基礎となる関数値を高精度で決定可能なコンピュータプログラムを提供することができる。
【図面の簡単な説明】
【図１】  本発明による装置の第１の実施例のブロック図である。
【図２】  本発明による装置の第２の実施例のブロック図である。
【図３】  数学的関数のテーブル化を明らかにするための説明図である。
【図４】  図１及び図２に示す本発明による装置の実施例の細部の好適な実施形態を示すブロック図である。
【図５】  均一で一定の傾きを用いる線形補間の場合の、テーブルに供給された信号の関数としての計算誤差を説明するための図である。
【図６】  線形補間の場合に異なる区分において３つのそれぞれ一定の傾きを用いた際の、テーブルに供給された信号の関数としての計算誤差を説明するための図である。
【図７】  線形補間の手順を明らかにするための図である。
【符号の説明】
１  装置
２  二乗生成器
３、４、１０  乗算器
５、１４  加算器
６  レベル変更装置
７  決定装置
８、１３  ビットシフタ
９  累乗器
１１  関数値決定装置
１２  減算器（訂正手段）
２０  記憶装置
２１  減算器
２２、２４、２６  ビットシフタ
２３、２５  マルチプレクサ
２７、２８、２９  加算器
３０  補間器
３１  切換え可能な乗算装置
【図１】
0004330874.tif 000018
【図２】
0004330874.tif 000019
【図３】
0004330874.tif 000020
【図４】
0004330874.tif 000021
【図５】
0004330874.tif 000022
【図６】
0004330874.tif 000023
【図７】
0004330874.tif 000024