(57)【要約】【課題】指定された演算精度に応じて適応的に回路構成を変更し、演算精度を向上させた時の回路規模の増加を抑制すること。【解決手段】関数分割部２は、指定された多項式の次数ｐ、定義域［ｍ，ｎ］及び許容誤差εに基づいて、定義域を最小の分割数で複数の区間に分割する分割位置と対数関数を近似する多項式の係数値を求める。区間判定部３は、分割位置情報より対数演算の入力値ｘが属する区間を判定し、演算に使用する多項式の係数値を選択する。多項式演算部４は加算器と乗算器を含み、演算結果をフィードバックしながら入力値に対する対数値ｙを演算する。【選択図】図１
2013025467.tif 000002
【特許請求の範囲】
【請求項１】
多項式近似により対数関数の近似演算を行う対数関数の近似演算回路において、
指定された多項式の次数、定義域及び許容誤差に基づいて、該定義域を複数の区間に分割する分割位置と対数関数を近似する多項式の各区間の係数値を求める関数分割部と、
前記分割位置情報と当該対数演算回路への入力値から、該入力値が属する区間を判定し演算に使用する係数値を選択する区間判定部と、
選択された係数値を多項式に設定し前記入力値に対する対数値を演算する多項式演算部を備え、
前記関数分割部は、多変量解析法を用いて前記許容誤差内の精度で近似する最小の分割数となる分割位置を決定し、
前記多項式演算部は加算器と乗算器を含む演算器を有し、演算結果を該演算器にフィードバックする構成としたことを特徴とする対数関数の近似演算回路。
【請求項２】
多項式近似により対数関数の近似演算を行う対数関数の近似演算方法において、
指定された多項式の次数、定義域及び許容誤差に基づいて、該定義域を複数の区間に分割する分割位置と対数関数を近似する多項式の各区間の係数値を求める関数分割ステップと、
前記分割位置情報と当該対数演算の入力値から、該入力値が属する区間を判定し演算に使用する係数値を選択する区間判定ステップと、
選択された係数値を多項式に設定し前記入力値に対する対数値を演算する多項式演算ステップを備え、
前記関数分割ステップは、多変量解析法を用いて前記許容誤差内の精度で近似する最小の分割数となる分割位置を決定し、
前記多項式演算ステップは加算と乗算を含む演算ステップを有し、演算結果を該演算ステップにフィードバックする構成としたことを特徴とする対数関数の近似演算方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ディジタル信号処理により対数関数の近似演算を行う対数関数の近似演算回路に関する。
【背景技術】
【０００２】
従来、対数関数の演算には、折れ線近似法やテイラー展開法に基づくアルゴリズムが用いられている。折れ線近似法によるアルゴリズムは、例えば特許文献１に記載されるように、対数関数の変域を複数の区間に区分して、各区間を直線関数で近似するものである。すなわち、入力データの上位ビットに基づいて、入力データが含まれる区間を特定し、その区間について予め記憶装置に記憶されている直線関数の切片や傾き等の情報に基づいて、入力データの対数の近似値を算出するものである。また、テイラー展開法によるアルゴリズムは、対数関数をテイラー展開法に基づいて多項式に展開し、乗算や加算の反復によって入力データの対数の近似値を算出するものである。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開昭６１−２８３９６２公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
折れ線近似法によるアルゴリズムでは、一般に演算精度が低いという課題があり、実用的には例えば０．５ｄＢ程度の誤差を生じる。この演算精度を高めようとすると、直線関数の区間をより狭くする必要があるため、記憶装置に格納すべきデータ量が非常に多くなってしまう。また、テイラー展開法によるアルゴリズムでは、入力から導かれる近似値テーブルの他に、補正係数として近似値テーブルと同容量のテーブルが２個必要なため、高い計算精度が必要な場合には補正係数のために大容量の記憶領域が必要となる。
【０００５】
本発明はかかる事情を鑑みてなされたものであり、その目的は、指定された演算精度に応じて適応的に回路構成を変更することができ、演算精度を向上させた時の回路規模の増加を抑制することができる対数関数の近似演算回路を提供することにある。
【課題を解決するための手段】
【０００６】
本発明は、多項式近似により対数関数の近似演算を行う対数関数の近似演算回路であって、指定された多項式の次数、定義域及び許容誤差に基づいて、該定義域を複数の区間に分割する分割位置と対数関数を近似する多項式の各区間の係数値を求める関数分割部と、前記分割位置情報と当該対数演算回路への入力値から、該入力値が属する区間を判定し演算に使用する係数値を選択する区間判定部と、選択された係数値を多項式に設定し前記入力値に対する対数値を演算する多項式演算部を備える。前記関数分割部は、多変量解析法を用いて前記許容誤差内の精度で近似する最小の分割数となる分割位置を決定し、前記多項式演算部は加算器と乗算器を含む演算器を有し、演算結果を該演算器にフィードバックする構成とした。
【発明の効果】
【０００７】
本発明によれば、関数分割処理と区間判定処理により、指定された演算精度に応じて区間分割数を最小とし、演算に使用する多項式の係数値を適応的に切り替えることができる。また、多項式演算処理において加算器、乗算器の共有化をはかることで、回路規模の増加を抑制しながら、高次多項式の演算を行うことができる。
【図面の簡単な説明】
【０００８】
【図１】本発明による対数関数の近似演算回路の一実施例を示すブロック構成図である。
【図２】関数分割部２における関数分割処理の説明図である。
【図３】関数分割部２において閾値及び係数値を定めるためのアルゴリズムの一例である。
【図４】区間判定部３の内部構成図である。
【図５】多項式演算部４の内部構成図である。
【発明を実施するための形態】
【０００９】
以下、本発明の実施の形態について説明する。
図１は、本発明による対数関数の近似演算回路（以下、対数演算回路と呼ぶ）の一実施例を示すブロック構成図である。対数演算回路１は、指定された条件に応じて、区間分割を行うための分割位置情報と区間毎の多項式の係数値を生成する関数分割部２と、入力値の区間を判定して適用する多項式の係数値を生成する区間判定部３と、多項式を用いて入力値の対数値を演算する多項式演算部４を有する。図１において、符号１０は対数演算を行う入力値ｘ、符号１１は演算に使用する多項式の次数ｐ、符号１２は入力値の範囲（最小値と最大値）を示す定義域［ｍ，ｎ］、符号１３は演算結果に許容される演算誤差ε、符号１４は分割された区間ごとに決められた多項式の係数値（ａ，ｂ，ｃ・・）、符号１５は区間分割の境界位置を示す閾値（ｅ，ｆ，ｇ・・）、符号１６は現在の入力値ｘに対して選択された多項式の係数値（ａ，ｂ，ｃ・・）、符号２０は演算結果ｙである。
【００１０】
図２は、関数分割部２における関数分割処理の説明図である。関数分割部２では多項式の次数ｐ、定義域［ｍ，ｎ］及び許容誤差εを指定することで、入力値の区間を分割し区間毎の係数値（ａ，ｂ，ｃ・・）と、閾値（ｅ，ｆ，ｇ・・）を出力する。関数分割処理では、横軸に入力値ｘの定義域［ｍ，ｎ］をとり、それに対する対数演算値である出力値ｙを縦軸にとる。例えば入力信号の範囲が１２ビットの場合は０〜４０９５までの範囲をとるので、これを関数ｆ（ｘ）に対する入力範囲として、定義域［ｍ，ｎ］（ｍ＝０，ｎ＝４０９５）と置く。この定義域をいくつかの閾値（境界値）（ｅ，ｆ，ｇ・・）により複数の区間（ｉ，ｊ，ｋ・・）に分割し、各区間における近似多項式ｆ１（ｘ），ｆ２（ｘ），ｆ３（ｘ）・・の係数値（ａ，ｂ，ｃ・・）を定める。
【００１１】
図３は、関数分割部２において閾値及び係数値を定めるためのアルゴリズムの一例を示す。まずＳ１００において、入力値の定義域［ｍ，ｎ］、許容誤差ε、多項式の次数ｐを指定する。次にＳ１０１において、指定した定義域［ｍ，ｎ］の区間［ｍ，ｍ＋ｋ］と多項式の次数ｐを用いて、基準となる入力の対数値に対して回帰分析を行う。回帰分析とは２つの変数の間の関係を表す式を統計的手法によって推計する手法である。例えば、Ｓ１０１では回帰分析で用いられる代表的な推計方法の最小二乗法を用い、次数ｐから想定される適当なモデルの関数を用いて、想定する関数が区間［ｍ，ｍ＋ｋ］の値に対してよい近似となるように、残差の二乗和を最小とするような係数を決定する。この結果からＳ１０２において、近似誤差αと係数値（ａ，ｂ，ｃ・・）が算出できる。例えば多項式の次数ｐ＝２とした場合は３個の係数ａ，ｂ，ｃを算出する。なお、この分析には、回帰分析以外の多変量解析手段を用いてもよい。
【００１２】
次にＳ１０３において、近似誤差αと許容誤差εの比較判定を行う。近似誤差α＜許容誤差εの場合はＳ１０４に進み、区間［ｍ，ｍ＋ｋ］のｋ値に１を加算して（ｋ→ｋ＋１）、再度回帰分析を行う。そしてＳ１０２に戻り、近似誤差αと係数値（ａ，ｂ，ｃ・・）を再度算出する。以下、これを繰り返す。
【００１３】
またＳ１０３において近似誤差α＜許容誤差εを満たしていない場合は、Ｓ１０５に進み現在のｋ値を閾値ｅとして決定する。最後にＳ１０６において閾値ｅとともにこの区間の係数値（ａ，ｂ，ｃ・・）を決定する。以上の処理を定義域である［ｍ，ｎ］の全ての範囲で繰り返すことで、図２に示した区間分割のための閾値（ｅ，ｆ，ｇ・・）と各区間における係数値（ａ，ｂ，ｃ・・）を出力する。
【００１４】
この結果得られる閾値の数すなわち区間分割数は、近似する精度（許容誤差ε）に応じて必要な最小数となる。よって、記憶すべきデータ数を最小化することができる。なお分割数は多項式の次数ｐにも依存し、高次多項式にするほど分割数が少なくなる。ただしその場合は、演算回数が増えることになり全体の回路規模は増加する。
【００１５】
なお、関数分割部２はレジスタ及びメモリ等に格納して実行するハードウェア構成で実現する。あるいはそれぞれの処理をソフトウェアで実行し、ＣＰＵとのインターフェース回路などを介して、後続の演算回路に位置情報等を与える構成としてもよい。
【００１６】
次に図４は区間判定部３の内部構成図である。区間判定部３では、関数分割部２で求めた係数値１４と閾値１５を使用して入力データの属する区間判定を行い、その区間に使用する係数値１６を出力する。閾値判定部で５は入力値１０と閾値１５との比較を行い、入力値１０が定義域内のどの区間に属するかを判定し、分割位置の情報１７を出力する。係数算出部６は、分割位置情報１７を基に、係数値１４の中から当該入力値１０の演算に必要な係数値１６を選択して出力する。
【００１７】
次に図５は多項式演算部４の内部構成図である。多項式演算部４では、区間判定部３で選択した係数値１６を多項式に設定して演算を行い、対数値の演算結果２０を出力する。演算器７は乗算器７ａと加算器７ｂを含み、入力値１０に対して多項式の演算を行なう。演算制御部８は、多項式の次数１１と区間判定部３で選択された係数値１６から多項式を設定するとともに、演算器７の演算結果（途中の値）２０を入力する。このように、演算結果をフィードバックする構成とし、演算器７で使用する回路リソース（乗算器７ａと加算器７ｂ）を共有している。そのとき演算器７に対し、乗算器７ａの係数信号１８ａと加算器７ｂの係数信号１８ｂを時分割で出力する制御を行う。例えば、２次多項式で演算する場合は１回目の演算結果に対して１回のフィードバックを行えばよい。タイミング制御部９は、演算制御部８のバスの切り替えを制御するタイミング信号１９を出力する。例えば２次多項式の演算では、２サイクルのタイミングで制御すればよい。この様に、演算器７において乗算器と加算器を共有化し、演算制御部８による係数切り替えとタイミング制御部９によるタイミング調整を行うことにより、回路規模の増加を抑制しながら高次多項式による演算結果を出力することができる。
【符号の説明】
【００１８】
１…対数演算回路、
２…関数分割部、
３…区間判定部、
４…多項式演算部、
５…閾値判定部、
６…係数算出部、
７…演算部、
７ａ…乗算器、
７ｂ…加算器、
８…演算制御部、
９…タイミング制御部、
１０…入力値、
１１…多項式の次数、
１２…定義域、
１３…許容誤差、
１４…区間毎の係数値、
１５…区間毎の閾値、
１６…選択した係数値、
１７…分割位置情報、
１８ａ…乗算器の係数信号、
１８ｂ…加算器の係数信号、
１９…タイミング信号、
２０…演算結果。
【図１】
2013025467.tif 000003
【図２】
2013025467.tif 000004
【図３】
2013025467.tif 000005
【図４】
2013025467.tif 000006
【図５】
2013025467.tif 000007