説明

対数関数の近似演算回路

【課題】指定された演算精度に応じて適応的に回路構成を変更し、演算精度を向上させた時の回路規模の増加を抑制すること。
【解決手段】関数分割部2は、指定された多項式の次数p、定義域[m,n]及び許容誤差εに基づいて、定義域を最小の分割数で複数の区間に分割する分割位置と対数関数を近似する多項式の係数値を求める。区間判定部3は、分割位置情報より対数演算の入力値xが属する区間を判定し、演算に使用する多項式の係数値を選択する。多項式演算部4は加算器と乗算器を含み、演算結果をフィードバックしながら入力値に対する対数値yを演算する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ディジタル信号処理により対数関数の近似演算を行う対数関数の近似演算回路に関する。
【背景技術】
【0002】
従来、対数関数の演算には、折れ線近似法やテイラー展開法に基づくアルゴリズムが用いられている。折れ線近似法によるアルゴリズムは、例えば特許文献1に記載されるように、対数関数の変域を複数の区間に区分して、各区間を直線関数で近似するものである。すなわち、入力データの上位ビットに基づいて、入力データが含まれる区間を特定し、その区間について予め記憶装置に記憶されている直線関数の切片や傾き等の情報に基づいて、入力データの対数の近似値を算出するものである。また、テイラー展開法によるアルゴリズムは、対数関数をテイラー展開法に基づいて多項式に展開し、乗算や加算の反復によって入力データの対数の近似値を算出するものである。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開昭61−283962公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
折れ線近似法によるアルゴリズムでは、一般に演算精度が低いという課題があり、実用的には例えば0.5dB程度の誤差を生じる。この演算精度を高めようとすると、直線関数の区間をより狭くする必要があるため、記憶装置に格納すべきデータ量が非常に多くなってしまう。また、テイラー展開法によるアルゴリズムでは、入力から導かれる近似値テーブルの他に、補正係数として近似値テーブルと同容量のテーブルが2個必要なため、高い計算精度が必要な場合には補正係数のために大容量の記憶領域が必要となる。
【0005】
本発明はかかる事情を鑑みてなされたものであり、その目的は、指定された演算精度に応じて適応的に回路構成を変更することができ、演算精度を向上させた時の回路規模の増加を抑制することができる対数関数の近似演算回路を提供することにある。
【課題を解決するための手段】
【0006】
本発明は、多項式近似により対数関数の近似演算を行う対数関数の近似演算回路であって、指定された多項式の次数、定義域及び許容誤差に基づいて、該定義域を複数の区間に分割する分割位置と対数関数を近似する多項式の各区間の係数値を求める関数分割部と、前記分割位置情報と当該対数演算回路への入力値から、該入力値が属する区間を判定し演算に使用する係数値を選択する区間判定部と、選択された係数値を多項式に設定し前記入力値に対する対数値を演算する多項式演算部を備える。前記関数分割部は、多変量解析法を用いて前記許容誤差内の精度で近似する最小の分割数となる分割位置を決定し、前記多項式演算部は加算器と乗算器を含む演算器を有し、演算結果を該演算器にフィードバックする構成とした。
【発明の効果】
【0007】
本発明によれば、関数分割処理と区間判定処理により、指定された演算精度に応じて区間分割数を最小とし、演算に使用する多項式の係数値を適応的に切り替えることができる。また、多項式演算処理において加算器、乗算器の共有化をはかることで、回路規模の増加を抑制しながら、高次多項式の演算を行うことができる。
【図面の簡単な説明】
【0008】
【図1】本発明による対数関数の近似演算回路の一実施例を示すブロック構成図である。
【図2】関数分割部2における関数分割処理の説明図である。
【図3】関数分割部2において閾値及び係数値を定めるためのアルゴリズムの一例である。
【図4】区間判定部3の内部構成図である。
【図5】多項式演算部4の内部構成図である。
【発明を実施するための形態】
【0009】
以下、本発明の実施の形態について説明する。
図1は、本発明による対数関数の近似演算回路(以下、対数演算回路と呼ぶ)の一実施例を示すブロック構成図である。対数演算回路1は、指定された条件に応じて、区間分割を行うための分割位置情報と区間毎の多項式の係数値を生成する関数分割部2と、入力値の区間を判定して適用する多項式の係数値を生成する区間判定部3と、多項式を用いて入力値の対数値を演算する多項式演算部4を有する。図1において、符号10は対数演算を行う入力値x、符号11は演算に使用する多項式の次数p、符号12は入力値の範囲(最小値と最大値)を示す定義域[m,n]、符号13は演算結果に許容される演算誤差ε、符号14は分割された区間ごとに決められた多項式の係数値(a,b,c・・)、符号15は区間分割の境界位置を示す閾値(e,f,g・・)、符号16は現在の入力値xに対して選択された多項式の係数値(a,b,c・・)、符号20は演算結果yである。
【0010】
図2は、関数分割部2における関数分割処理の説明図である。関数分割部2では多項式の次数p、定義域[m,n]及び許容誤差εを指定することで、入力値の区間を分割し区間毎の係数値(a,b,c・・)と、閾値(e,f,g・・)を出力する。関数分割処理では、横軸に入力値xの定義域[m,n]をとり、それに対する対数演算値である出力値yを縦軸にとる。例えば入力信号の範囲が12ビットの場合は0〜4095までの範囲をとるので、これを関数f(x)に対する入力範囲として、定義域[m,n](m=0,n=4095)と置く。この定義域をいくつかの閾値(境界値)(e,f,g・・)により複数の区間(i,j,k・・)に分割し、各区間における近似多項式f(x),f(x),f(x)・・の係数値(a,b,c・・)を定める。
【0011】
図3は、関数分割部2において閾値及び係数値を定めるためのアルゴリズムの一例を示す。まずS100において、入力値の定義域[m,n]、許容誤差ε、多項式の次数pを指定する。次にS101において、指定した定義域[m,n]の区間[m,m+k]と多項式の次数pを用いて、基準となる入力の対数値に対して回帰分析を行う。回帰分析とは2つの変数の間の関係を表す式を統計的手法によって推計する手法である。例えば、S101では回帰分析で用いられる代表的な推計方法の最小二乗法を用い、次数pから想定される適当なモデルの関数を用いて、想定する関数が区間[m,m+k]の値に対してよい近似となるように、残差の二乗和を最小とするような係数を決定する。この結果からS102において、近似誤差αと係数値(a,b,c・・)が算出できる。例えば多項式の次数p=2とした場合は3個の係数a,b,cを算出する。なお、この分析には、回帰分析以外の多変量解析手段を用いてもよい。
【0012】
次にS103において、近似誤差αと許容誤差εの比較判定を行う。近似誤差α<許容誤差εの場合はS104に進み、区間[m,m+k]のk値に1を加算して(k→k+1)、再度回帰分析を行う。そしてS102に戻り、近似誤差αと係数値(a,b,c・・)を再度算出する。以下、これを繰り返す。
【0013】
またS103において近似誤差α<許容誤差εを満たしていない場合は、S105に進み現在のk値を閾値eとして決定する。最後にS106において閾値eとともにこの区間の係数値(a,b,c・・)を決定する。以上の処理を定義域である[m,n]の全ての範囲で繰り返すことで、図2に示した区間分割のための閾値(e,f,g・・)と各区間における係数値(a,b,c・・)を出力する。
【0014】
この結果得られる閾値の数すなわち区間分割数は、近似する精度(許容誤差ε)に応じて必要な最小数となる。よって、記憶すべきデータ数を最小化することができる。なお分割数は多項式の次数pにも依存し、高次多項式にするほど分割数が少なくなる。ただしその場合は、演算回数が増えることになり全体の回路規模は増加する。
【0015】
なお、関数分割部2はレジスタ及びメモリ等に格納して実行するハードウェア構成で実現する。あるいはそれぞれの処理をソフトウェアで実行し、CPUとのインターフェース回路などを介して、後続の演算回路に位置情報等を与える構成としてもよい。
【0016】
次に図4は区間判定部3の内部構成図である。区間判定部3では、関数分割部2で求めた係数値14と閾値15を使用して入力データの属する区間判定を行い、その区間に使用する係数値16を出力する。閾値判定部で5は入力値10と閾値15との比較を行い、入力値10が定義域内のどの区間に属するかを判定し、分割位置の情報17を出力する。係数算出部6は、分割位置情報17を基に、係数値14の中から当該入力値10の演算に必要な係数値16を選択して出力する。
【0017】
次に図5は多項式演算部4の内部構成図である。多項式演算部4では、区間判定部3で選択した係数値16を多項式に設定して演算を行い、対数値の演算結果20を出力する。演算器7は乗算器7aと加算器7bを含み、入力値10に対して多項式の演算を行なう。演算制御部8は、多項式の次数11と区間判定部3で選択された係数値16から多項式を設定するとともに、演算器7の演算結果(途中の値)20を入力する。このように、演算結果をフィードバックする構成とし、演算器7で使用する回路リソース(乗算器7aと加算器7b)を共有している。そのとき演算器7に対し、乗算器7aの係数信号18aと加算器7bの係数信号18bを時分割で出力する制御を行う。例えば、2次多項式で演算する場合は1回目の演算結果に対して1回のフィードバックを行えばよい。タイミング制御部9は、演算制御部8のバスの切り替えを制御するタイミング信号19を出力する。例えば2次多項式の演算では、2サイクルのタイミングで制御すればよい。この様に、演算器7において乗算器と加算器を共有化し、演算制御部8による係数切り替えとタイミング制御部9によるタイミング調整を行うことにより、回路規模の増加を抑制しながら高次多項式による演算結果を出力することができる。
【符号の説明】
【0018】
1…対数演算回路、
2…関数分割部、
3…区間判定部、
4…多項式演算部、
5…閾値判定部、
6…係数算出部、
7…演算部、
7a…乗算器、
7b…加算器、
8…演算制御部、
9…タイミング制御部、
10…入力値、
11…多項式の次数、
12…定義域、
13…許容誤差、
14…区間毎の係数値、
15…区間毎の閾値、
16…選択した係数値、
17…分割位置情報、
18a…乗算器の係数信号、
18b…加算器の係数信号、
19…タイミング信号、
20…演算結果。

【特許請求の範囲】
【請求項1】
多項式近似により対数関数の近似演算を行う対数関数の近似演算回路において、
指定された多項式の次数、定義域及び許容誤差に基づいて、該定義域を複数の区間に分割する分割位置と対数関数を近似する多項式の各区間の係数値を求める関数分割部と、
前記分割位置情報と当該対数演算回路への入力値から、該入力値が属する区間を判定し演算に使用する係数値を選択する区間判定部と、
選択された係数値を多項式に設定し前記入力値に対する対数値を演算する多項式演算部を備え、
前記関数分割部は、多変量解析法を用いて前記許容誤差内の精度で近似する最小の分割数となる分割位置を決定し、
前記多項式演算部は加算器と乗算器を含む演算器を有し、演算結果を該演算器にフィードバックする構成としたことを特徴とする対数関数の近似演算回路。
【請求項2】
多項式近似により対数関数の近似演算を行う対数関数の近似演算方法において、
指定された多項式の次数、定義域及び許容誤差に基づいて、該定義域を複数の区間に分割する分割位置と対数関数を近似する多項式の各区間の係数値を求める関数分割ステップと、
前記分割位置情報と当該対数演算の入力値から、該入力値が属する区間を判定し演算に使用する係数値を選択する区間判定ステップと、
選択された係数値を多項式に設定し前記入力値に対する対数値を演算する多項式演算ステップを備え、
前記関数分割ステップは、多変量解析法を用いて前記許容誤差内の精度で近似する最小の分割数となる分割位置を決定し、
前記多項式演算ステップは加算と乗算を含む演算ステップを有し、演算結果を該演算ステップにフィードバックする構成としたことを特徴とする対数関数の近似演算方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate