(57)【要約】【課題】複数の関数値についての重み付け加算演算を、単純な電子回路で行う。【解決手段】３つの関数Ｆ０，Ｆ１，Ｆ２について、それぞれ重みＷ０，Ｗ１，Ｗ２（但し、重みの総和は１）を考慮して、Ｆ＝Ｗ０・Ｆ０＋Ｗ１・Ｆ１＋Ｗ２・Ｆ２なる加算を行う。Ｗ０＝１−Ｗ１−Ｗ２を利用して、演算式をＦ＝（−１＋２（−ｍ＋１））・Ｆ０＋（Ｗbar１・Ｆ０＋Ｗ１・Ｆ１）＋（Ｗbar２・Ｆ０＋Ｗ２・Ｆ２）なる形に変形し（但し、記号barが挿入された変数は、元の変数の論理反転値を示す）、乗算演算部６０、積和演算部３０（１），３０（２）、総和演算部７０によって演算器を構成する。Ｗｐ，Ｆｐを構成する各ビットをｗｐ，ｆｐとすると（ｐ＝０，１，２）、各積和演算部は、「ｗbarｐ・ｆ０＋ｗｐ・ｆｐ」なる積和演算項を、ビットｗｐの論理値に基づいて、入力ビットｆ０，ｆｐのいずれかを出力するセレクタ回路で演算できる。【選択図】図１５
2010257281.tif 000002
【特許請求の範囲】
【請求項１】
複数ｎ通りの関数値Ｆｐと複数ｎ通りの重みＷｐに基づいて（但し、ｎ≧３、ｐ＝０，１，２，... ，ｎ−１）、関数値Ｆ＝Σp=0〜n-1（Ｗｐ・Ｆｐ）の値を、「０≦Ｗｐ≦１」および「Σp=0〜n-1Ｗｐ＝１」なる条件下で演算する重み付き加算演算器であって、
複数ｎ通りの関数値Ｆｐ（但し、ｐ＝０，１，２，... ，ｎ−１）のそれぞれを、所定のビット列データとして入力する関数値入力部と、
複数（ｎ−１）通りの重みＷｐ（但し、ｐ＝１，２，... ，ｎ−１）のそれぞれを、所定のビット列データとして入力する重み入力部と、
Ｆ＝Σp=0〜n-1（Ｗｐ・Ｆｐ）
なる演算式に基づく演算を行い、関数値Ｆの値を出力する演算部と、
を備え、
前記演算部が、Ｗｐを構成する各ビットを論理反転することによって得られる論理反転値をＷbarｐとしたときに、Ｗbarｐを構成する所定ビットｗbarｐと、Ｗｐを構成する所定ビットｗｐと、Ｆ０を構成する所定ビットｆ０と、Ｆｐを構成する所定ビットｆｐと、を用いて、「ｗbarｐ・ｆ０＋ｗｐ・ｆｐ」なる積和演算項を求めるために、前記ビットｆ０および前記ビットｆｐを入力とし、前記ビットｗｐの論理値に基づいて、入力したビットのいずれか一方を選択して出力するセレクタを有することを特徴とする重み付き加算演算器。
【請求項２】
複数ｎ通りの関数値Ｆｐと複数ｎ通りの重みＷｐに基づいて（但し、ｎ≧３、ｐ＝０，１，２，... ，ｎ−１）、関数値Ｆ＝Σp=0〜n-1（Ｗｐ・Ｆｐ）の値を、「０≦Ｗｐ≦１」および「Σp=0〜n-1Ｗｐ＝１」なる条件下で演算する重み付き加算演算器であって、
複数ｎ通りの関数値Ｆｐ（但し、ｐ＝０，１，２，... ，ｎ−１）のそれぞれを、所定のビット列データとして入力する関数値入力部と、
複数（ｎ−１）通りの重みＷｐ（但し、ｐ＝１，２，... ，ｎ−１）のそれぞれを、合計ｍビットのビット列データとして入力する重み入力部と、
Ｆ＝｛１＋（−１＋２（−ｍ））・（ｎ−１）｝・Ｆ０
＋Σp=1〜n-1（Ｗbarｐ・Ｆ０＋Ｗｐ・Ｆｐ）
なる演算式（但し、Ｗbarｐは、Ｗｐを構成する各ビットを論理反転することによって得られる論理反転値）について、
右辺第１項を演算するための乗算演算部と、
右辺第２項を演算するために「Ｗbarｐ・Ｆ０＋Ｗｐ・Ｆｐ」なる積和演算（但し、ｐ＝１，２，... ，ｎ−１）を行う（ｎ−１）個の積和演算部と、
前記乗算演算部の演算結果と前記（ｎ−１）個の積和演算部の演算結果との総和を求める演算を行い、演算結果を前記関数値Ｆの値として出力する総和演算部と、
を備え、
前記（ｎ−１）個の積和演算部の一部もしくは全部が、Ｗbarｐを構成する所定ビットｗbarｐと、Ｗｐを構成する所定ビットｗｐと、Ｆ０を構成する所定ビットｆ０と、Ｆｐを構成する所定ビットｆｐと、を用いて、「ｗbarｐ・ｆ０＋ｗｐ・ｆｐ」なる積和演算項を求めるために、前記ビットｆ０および前記ビットｆｐを入力とし、前記ビットｗｐの論理値に基づいて、入力したビットのいずれか一方を選択して出力するセレクタを有することを特徴とする重み付き加算演算器。
【請求項３】
請求項２に記載の重み付き加算演算器において、
関数値入力部が、関数値Ｆｐ（但し、ｐ＝０，１，２，... ，ｎ−１）を、Ｆｐ＝Σj=0〜r-1（ｆｐｊ・２ｊ）なる式を満たす、最上位ビット側から順に、ｆｐ（ｒ−１），ｆｐ（ｒ−２），... ，ｆｐ１，ｆｐ０なる合計ｒビットのデータとして入力し、
重み入力部が、重みＷｐ（但し、ｐ＝１，２，... ，ｎ−１）を、Ｗｐ＝Σi=0〜m-1（ｗｐｉ・２（ｉ−ｍ））なる式を満たす、最上位ビット側から順に、ｗｐ（ｍ−１），ｗｐ（ｍ−２），... ，ｗｐ１，ｗｐ０なる合計ｍビットのデータとして入力し、
積和演算部の一部もしくは全部が、Ｗbarｐを構成する第ｉ番目のビットｗbarｐｉと、Ｗｐを構成する第ｉ番目のビットｗｐｉと、Ｆ０を構成する第ｊ番目のビットｆ０ｊと、Ｆｐを構成する第ｊ番目のビットｆｐｊと、を用いて、「ｗbarｐｉ・ｆ０ｊ＋ｗｐｉ・ｆｐｊ」なる積和演算項を求めるために、前記ビットｆ０ｊおよび前記ビットｆｐｊを入力とし、前記ビットｗｐｉの論理値に基づいて、入力したビットのいずれか一方を選択して出力するセレクタを有することを特徴とする重み付き加算演算器。
【請求項４】
請求項３に記載の重み付き加算演算器において、
演算式で定義される関数値Ｆの最上位ビットに関する演算を省略することを特徴とする重み付き加算演算器。
【請求項５】
請求項２〜４のいずれかに記載の重み付き加算演算器において、
Ｆ＝｛１＋（−１＋２（−ｍ））・（ｎ−１）｝・Ｆ０
＋Σp=1〜n-1（Ｗbarｐ・Ｆ０＋Ｗｐ・Ｆｐ）
なる演算式の代わりに、これと数学的に等価な等価演算式に基づく演算を行うことを特徴とする重み付き加算演算器。
【請求項６】
請求項４に記載の重み付き加算演算器において、
乗算演算部が、
｛１＋（−１＋２（−ｍ））・（ｎ−１）｝・Ｆ０
なる演算式の代わりに、関数値Ｆの最上位ビット以外には、負の演算項が生じない等価演算式を用いた演算を行うことを特徴とする重み付き加算演算器。
【請求項７】
複数ｎ通りの関数値Ｆｐと複数ｎ通りの重みＷｐに基づいて（但し、ｎ≧３、ｐ＝０，１，２，... ，ｎ−１）、関数値Ｆ＝Σp=0〜n-1（Ｗｐ・Ｆｐ）の値を、「０≦Ｗｐ≦１」および「Σp=0〜n-1Ｗｐ＝１」なる条件下で演算する重み付き加算演算器であって、
複数ｎ通りの関数値Ｆｐ（但し、ｐ＝０，１，２，... ，ｎ−１）のそれぞれを、Ｆｐ＝−ｆｐ（ｑ−１）・２（ｑ−１）＋Σj=0〜q-2（ｆｐｊ・２ｊ）なる式を満たす、最上位ビット側から順に、符号部ｆｐ（ｑ−１），正数部ｆｐ（ｑ−２），... ，ｆｐ１，ｆｐ０なる合計ｑビットのデータとして入力する関数値入力部と、
複数（ｎ−１）通りの重みＷｐ（但し、ｐ＝１，２，... ，ｎ−１）のそれぞれを、Ｗｐ＝Σi=0〜m-1（ｗｐｉ・２（ｉ−ｍ））なる式を満たす、最上位ビット側から順に、ｗｐ（ｍ−１），ｗｐ（ｍ−２），... ，ｗｐ１，ｗｐ０なる合計ｍビットのデータとして入力する重み入力部と、
Ｆ＝Ａ＋Σp=1〜n-1（Ｂ＋Ｃ＋Ｄ＋Ｅ）
但し、
Ａ＝−ｆ０（ｑ−１）・２（ｑ−１）＋Σj=0〜q-2（ｆ０ｊ・２ｊ）
Ｂ＝｛ｆ０（ｑ−１）・Σi=0〜m-1（ｗｐｉ・２（ｑ−１＋ｉ−ｍ））｝
＋｛ｆｐ（ｑ−１）・Σi=0〜m-1（ｗbarｐｉ・２（ｑ−１＋ｉ−ｍ））｝
Ｃ＝｛Σi=0〜m-1（ｗbarｐｉ・２（ｉ−ｍ））
・Σj=0〜q-2（ｆ０ｊ・２ｊ）｝
＋｛Σi=0〜m-1（ｗｐｉ・２（ｉ−ｍ））
・Σj=0〜q-2（ｆｐｊ・２ｊ）｝
Ｄ＝｛Σj=0〜q-2（ｆ０ｊ・２（ｊ−ｍ））｝
＋｛ｆｐ（ｑ−１）・２（ｑ−１−ｍ）｝
Ｅ＝｛Σj=0〜q-2（ｆbar０ｊ・２ｊ）｝＋１−２（ｑ−１）
−｛ｆｐ（ｑ−１）・２（ｑ−１）｝
なる演算式（但し、ｗbarｐｉは、ｗｐｉを論理反転することによって得られる論理反転ビット、ｆbar０ｊは、ｆ０ｊを論理反転することによって得られる論理反転ビット）について、
演算項Ａを演算する第Ａ項演算部と、
演算項Ｂを演算する第Ｂ項演算部と、
演算項Ｃを演算する第Ｃ項演算部と、
演算項Ｄを演算する第Ｄ項演算部と、
演算項Ｅを演算する第Ｅ項演算部と、
第Ａ項演算部の演算結果と、ｐ＝１，２，... ，ｎ−１のそれぞれの場合について得られた第Ｂ項演算部、第Ｃ項演算部、第Ｄ項演算部、第Ｅ項演算部の演算結果と、の総和を求め、前記関数値Ｆの値として出力する総和演算部と、
を備え、
第Ｂ項演算部もしくは第Ｃ項演算部のいずれか一方、またはその双方が、Ｗｐを構成する第ｉ番目のビットｗｐｉと、その論理反転ビットｗbarｐｉと、Ｆ０を構成する第ｊ番目のビットｆ０ｊと、Ｆｐを構成する第ｊ番目のビットｆｐｊと、を用いて、「ｗbarｐｉ・ｆ０ｊ＋ｗｐｉ・ｆｐｊ」なる積和演算項を求めるために、前記ビットｆ０ｊおよび前記ビットｆｐｊを入力とし、前記ビットｗｐｉの論理値に基づいて、入力したビットのいずれか一方を選択して出力するセレクタを有することを特徴とする重み付き加算演算器。
【請求項８】
請求項７に記載の重み付き加算演算器において、
−（ｎ−１）＝−２ｚ＋ａｚ−１・２（ｚ−１）＋... ＋ａ１・２１＋ａ０・２０
（但し、ａ０，ａ１，... ，ａｚ−１は、１ビットの数値）としたときに、演算式で定義される関数値Ｆの２（ｚ＋ｑ）の桁を符号部、２（ｑ−２）の桁以下を正数部として出力し、２（ｚ＋ｑ−１）の桁〜２（ｑ−１）の桁の値を無視することを特徴とする重み付き加算演算器。
【請求項９】
請求項７または８に記載の重み付き加算演算器において、
Ｆ＝Ａ＋Σp=1〜n-1（Ｂ＋Ｃ＋Ｄ＋Ｅ）
なる演算式の代わりに、これと数学的に等価な等価演算式に基づく演算を行うことを特徴とする重み付き加算演算器。
【請求項１０】
請求項８に記載の重み付き加算演算器において、
Ｆ＝Ａ＋Σp=1〜n-1（Ｂ＋Ｃ＋Ｄ＋Ｅ）
なる演算式の代わりに、関数値Ｆの符号部となる桁以外には、負の演算項が生じない等価演算式を用いた演算を行うことを特徴とする重み付き加算演算器。
【請求項１１】
請求項１〜１０のいずれかに記載の重み付き加算演算器を備え、複数ｎ枚の画像をそれぞれの重みＷｐ（但し、ｐ＝０，１，２，... ，ｎ−１）を考慮して合成し、合成画像を作成する画像合成装置であって、
各画像を示すデータとして、二次元座標値（ｇ，ｈ）で示される位置に配置された画素の画素値Ｆｐ（ｇ，ｈ）を関数値Ｆｐとして取り込み、前記重みＷｐを用いて前記重み付き加算演算器により得られた関数値Ｆを、合成画像上の二次元座標値（ｇ，ｈ）で示される位置に配置された画素の画素値Ｆ（ｇ，ｈ）とすることにより、前記合成画像を示すデータを作成することを特徴とする画像合成装置。
【請求項１２】
複数ｎ通りの関数値Ｆｐと複数ｎ通りの重みＷｐに基づいて（但し、ｎ≧３、ｐ＝０，１，２，... ，ｎ−１）、関数値Ｆ＝Σp=0〜n-1（Ｗｐ・Ｆｐ）の値を、「０≦Ｗｐ≦１」および「Σp=0〜n-1Ｗｐ＝１」なる条件下で求める演算を、演算回路が実行する重み付き加算演算方法であって、
複数ｎ通りの関数値Ｆｐ（但し、ｐ＝０，１，２，... ，ｎ−１）のそれぞれを、所定のビット列データとして入力する関数値入力段階と、
複数（ｎ−１）通りの重みＷｐ（但し、ｐ＝１，２，... ，ｎ−１）のそれぞれを、所定のビット列データとして入力する重み入力段階と、
Ｆ＝Σp=0〜n-1（Ｗｐ・Ｆｐ）
なる演算式に基づく演算を行い、関数値Ｆの値を出力する関数値演算段階と、
を演算回路が実行し、
前記演算回路が、前記関数値演算段階において、Ｗｐを構成する各ビットを論理反転することによって得られる論理反転値をＷbarｐとしたときに、Ｗbarｐを構成する所定ビットｗbarｐと、Ｗｐを構成する所定ビットｗｐと、Ｆ０を構成する所定ビットｆ０と、Ｆｐを構成する所定ビットｆｐと、を用いて、「ｗbarｐ・ｆ０＋ｗｐ・ｆｐ」なる積和演算項を求めるすべての演算もしくは一部の演算を、前記ビットｆ０および前記ビットｆｐを入力とし、前記ビットｗｐの論理値に基づいて、入力したビットのいずれか一方を選択して出力するセレクタを用いて実行することを特徴とする重み付き加算演算方法。
【請求項１３】
複数ｎ通りの関数値Ｆｐと複数ｎ通りの重みＷｐに基づいて（但し、ｎ≧３、ｐ＝０，１，２，... ，ｎ−１）、関数値Ｆ＝Σp=0〜n-1（Ｗｐ・Ｆｐ）の値を、「０≦Ｗｐ≦１」および「Σp=0〜n-1Ｗｐ＝１」なる条件下で求める演算を、演算回路が実行する重み付き加算演算方法であって、
複数ｎ通りの関数値Ｆｐ（但し、ｐ＝０，１，２，... ，ｎ−１）のそれぞれを、所定のビット列データとして入力する関数値入力段階と、
複数（ｎ−１）通りの重みＷｐ（但し、ｐ＝１，２，... ，ｎ−１）のそれぞれを、合計ｍビットのビット列データとして入力する重み入力段階と、
Ｆ＝｛１＋（−１＋２（−ｍ））・（ｎ−１）｝・Ｆ０
＋Σp=1〜n-1（Ｗbarｐ・Ｆ０＋Ｗｐ・Ｆｐ）
なる演算式（但し、Ｗbarｐは、Ｗｐを構成する各ビットを論理反転することによって得られる論理反転値）について、
右辺第１項を演算するための乗算演算段階と、
右辺第２項を演算するために「Ｗbarｐ・Ｆ０＋Ｗｐ・Ｆｐ」なる積和演算を、ｐ＝１，２，... ，ｎ−１のそれぞれについて行う積和演算段階と、
前記乗算演算段階の演算結果と前記積和演算段階の演算結果との総和を求める演算を行い、その結果を前記関数値Ｆの値として出力する総和演算段階と、
を演算回路が実行し、
前記演算回路が、前記積和演算段階において、Ｗbarｐを構成する所定ビットｗbarｐと、Ｗｐを構成する所定ビットｗｐと、Ｆ０を構成する所定ビットｆ０と、Ｆｐを構成する所定ビットｆｐと、を用いて、「ｗbarｐ・ｆ０＋ｗｐ・ｆｐ」なる積和演算項を求めるすべての演算もしくは一部の演算を、前記ビットｆ０および前記ビットｆｐを入力とし、前記ビットｗｐの論理値に基づいて、入力したビットのいずれか一方を選択して出力するセレクタを用いて実行することを特徴とする重み付き加算演算方法。
【請求項１４】
請求項１３に記載の重み付き加算演算方法において、
関数値入力段階において、関数値Ｆｐ（但し、ｐ＝０，１，２，... ，ｎ−１）を、Ｆｐ＝Σj=0〜r-1（ｆｐｊ・２ｊ）なる式を満たす、最上位ビット側から順に、ｆｐ（ｒ−１），ｆｐ（ｒ−２），... ，ｆｐ１，ｆｐ０なる合計ｒビットのデータとして入力し、
重み入力段階において、重みＷｐ（但し、ｐ＝１，２，... ，ｎ−１）を、Ｗｐ＝Σi=0〜m-1（ｗｐｉ・２（ｉ−ｍ））なる式を満たす、最上位ビット側から順に、ｗｐ（ｍ−１），ｗｐ（ｍ−２），... ，ｗｐ１，ｗｐ０なる合計ｍビットのデータとして入力し、
積和演算段階において、Ｗbarｐを構成する第ｉ番目のビットｗbarｐｉと、Ｗｐを構成する第ｉ番目のビットｗｐｉと、Ｆ０を構成する第ｊ番目のビットｆ０ｊと、Ｆｐを構成する第ｊ番目のビットｆｐｊと、を用いて、「ｗbarｐｉ・ｆ０ｊ＋ｗｐｉ・ｆｐｊ」なる積和演算項を求めるすべての演算もしくは一部の演算を、前記ビットｆ０ｊおよび前記ビットｆｐｊを入力とし、前記ビットｗｐｉの論理値に基づいて、入力したビットのいずれか一方を選択して出力するセレクタを用いて実行することを特徴とする重み付き加算演算方法。
【請求項１５】
請求項１４に記載の重み付き加算演算方法において、
演算式で定義される関数値Ｆの最上位ビットに関する演算を省略することを特徴とする重み付き加算演算方法。
【請求項１６】
請求項１３〜１５のいずれかに記載の重み付き加算演算方法において、
Ｆ＝｛１＋（−１＋２（−ｍ））・（ｎ−１）｝・Ｆ０
＋Σp=1〜n-1（Ｗbarｐ・Ｆ０＋Ｗｐ・Ｆｐ）
なる演算式の代わりに、これと数学的に等価な等価演算式に基づく演算を行うことを特徴とする重み付き加算演算方法。
【請求項１７】
請求項１５に記載の重み付き加算演算方法において、
乗算演算段階で、
｛１＋（−１＋２（−ｍ））・（ｎ−１）｝・Ｆ０
なる演算式の代わりに、関数値Ｆの最上位ビット以外には、負の演算項が生じない等価演算式を用いた演算を行うことを特徴とする重み付き加算演算方法。
【請求項１８】
複数ｎ通りの関数値Ｆｐと複数ｎ通りの重みＷｐに基づいて（但し、ｎ≧３、ｐ＝０，１，２，... ，ｎ−１）、関数値Ｆ＝Σp=0〜n-1（Ｗｐ・Ｆｐ）の値を、「０≦Ｗｐ≦１」および「Σp=0〜n-1Ｗｐ＝１」なる条件下で求める演算を、演算回路が実行する重み付き加算演算方法であって、
複数ｎ通りの関数値Ｆｐ（但し、ｐ＝０，１，２，... ，ｎ−１）のそれぞれを、Ｆｐ＝−ｆｐ（ｑ−１）・２（ｑ−１）＋Σj=0〜q-2（ｆｐｊ・２ｊ）なる式を満たす、最上位ビット側から順に、符号部ｆｐ（ｑ−１），正数部ｆｐ（ｑ−２），... ，ｆｐ１，ｆｐ０なる合計ｑビットのデータとして入力する関数値入力段階と、
複数（ｎ−１）通りの重みＷｐ（但し、ｐ＝１，２，... ，ｎ−１）のそれぞれを、Ｗｐ＝Σi=0〜m-1（ｗｐｉ・２（ｉ−ｍ））なる式を満たす、最上位ビット側から順に、ｗｐ（ｍ−１），ｗｐ（ｍ−２），... ，ｗｐ１，ｗｐ０なる合計ｍビットのデータとして入力する重み入力段階と、
Ｆ＝Ａ＋Σp=1〜n-1（Ｂ＋Ｃ＋Ｄ＋Ｅ）
但し、
Ａ＝−ｆ０（ｑ−１）・２（ｑ−１）＋Σj=0〜q-2（ｆ０ｊ・２ｊ）
Ｂ＝｛ｆ０（ｑ−１）・Σi=0〜m-1（ｗｐｉ・２（ｑ−１＋ｉ−ｍ））｝
＋｛ｆｐ（ｑ−１）・Σi=0〜m-1（ｗbarｐｉ・２（ｑ−１＋ｉ−ｍ））｝
Ｃ＝｛Σi=0〜m-1（ｗbarｐｉ・２（ｉ−ｍ））
・Σj=0〜q-2（ｆ０ｊ・２ｊ）｝
＋｛Σi=0〜m-1（ｗｐｉ・２（ｉ−ｍ））
・Σj=0〜q-2（ｆｐｊ・２ｊ）｝
Ｄ＝｛Σj=0〜q-2（ｆ０ｊ・２（ｊ−ｍ））｝
＋｛ｆｐ（ｑ−１）・２（ｑ−１−ｍ）｝
Ｅ＝｛Σj=0〜q-2（ｆbar０ｊ・２ｊ）｝＋１−２（ｑ−１）
−｛ｆｐ（ｑ−１）・２（ｑ−１）｝
なる演算式（但し、ｗbarｐｉは、ｗｐｉを論理反転することによって得られる論理反転ビット、ｆbar０ｊは、ｆ０ｊを論理反転することによって得られる論理反転ビット）について、
演算項Ａを演算する第Ａ項演算段階と、
演算項Ｂを演算する第Ｂ項演算段階と、
演算項Ｃを演算する第Ｃ項演算段階と、
演算項Ｄを演算する第Ｄ項演算段階と、
演算項Ｅを演算する第Ｅ項演算段階と、
第Ａ項演算段階の演算結果と、ｐ＝１，２，... ，ｎ−１のそれぞれの場合について実行された第Ｂ項演算段階、第Ｃ項演算段階、第Ｄ項演算段階、第Ｅ項演算段階の演算結果と、の総和を求め、前記関数値Ｆの値として出力する総和演算段階と、
を演算回路が実行し、
前記演算回路が、第Ｂ項演算段階および第Ｃ項演算段階において、Ｗｐを構成する第ｉ番目のビットｗｐｉと、その論理反転ビットｗbarｐｉと、Ｆ０を構成する第ｊ番目のビットｆ０ｊと、Ｆｐを構成する第ｊ番目のビットｆｐｊと、を用いて、「ｗbarｐｉ・ｆ０ｊ＋ｗｐｉ・ｆｐｊ」なる積和演算項を求めるすべての演算もしくは一部の演算を、前記ビットｆ０ｊおよび前記ビットｆｐｊを入力とし、前記ビットｗｐｉの論理値に基づいて、入力したビットのいずれか一方を選択して出力するセレクタを用いて実行することを特徴とする重み付き加算演算方法。
【請求項１９】
請求項１８に記載の重み付き加算演算方法において、
−（ｎ−１）＝−２ｚ＋ａｚ−１・２（ｚ−１）＋... ＋ａ１・２１＋ａ０・２０
（但し、ａ０，ａ１，... ，ａｚ−１は、１ビットの数値）としたときに、演算回路が、演算式で定義される関数値Ｆの２（ｚ＋ｑ）の桁を符号部、２（ｑ−２）の桁以下を正数部として出力し、２（ｚ＋ｑ−１）の桁〜２（ｑ−１）の桁の値を無視することを特徴とする重み付き加算演算方法。
【請求項２０】
請求項１８または１９に記載の重み付き加算演算方法において、
Ｆ＝Ａ＋Σp=1〜n-1（Ｂ＋Ｃ＋Ｄ＋Ｅ）
なる演算式の代わりに、これと数学的に等価な等価演算式に基づく演算を行うことを特徴とする重み付き加算演算方法。
【請求項２１】
請求項１９に記載の重み付き加算演算方法において、
Ｆ＝Ａ＋Σp=1〜n-1（Ｂ＋Ｃ＋Ｄ＋Ｅ）
なる演算式の代わりに、関数値Ｆの符号部となる桁以外には、負の演算項が生じない等価演算式を用いた演算を行うことを特徴とする重み付き加算演算方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の関数値について、それぞれ重み付けを行った加算演算を電子回路を用いて行う技術に関する。
【背景技術】
【０００２】
複数ｎ通りの関数値Ｆｐについて（但し、ｐ＝０，１，２，... ，ｎ−１）、それぞれ所定の重みＷｐを定め、Ｆ＝Σ p=0〜n-1 （Ｗｐ・Ｆｐ）なる式（本願明細書および特許請求の範囲では、電子出願の制約上、総和を示す算術演算子Σの下に記載すべきパラメータαおよびΣの上に記載すべきパラメータβを、Σα〜βのような下付き添字として記載することにする。なお、図面上では、通常の数学的な記載方法をとる）で与えられる重み付きの加算を行って関数値Ｆを求める演算は、一般に加重和演算と呼ばれており、様々な応用分野で利用されている。たとえば、ｎ＝２の場合は、２つの関数値Ｆ０とＦ１との間の補間値を求める線形補間演算として広く利用されており、専用の効率的な演算器も提案されている。また、たとえば、複数の画像をそれぞれの重みを考慮して合成し、合成画像を作成する技術などでは、各画素の画素値について、重み付き加算演算が必要になる。
【０００３】
このような重み付き加算演算は、ソフトウエアを用いてプログラムにより実行させることも可能であるが、演算の高速化を図る上では、電子回路を用いたハードウエアにより実行させるのが好ましい。このため、このような重み付き加算演算を行うための様々な電子回路が提案されている。たとえば、下記の特許文献１および２には、関数値Ｆｐと重みＷｐとの積を求めた上で、これら積の総和を求める積和演算を効率的に行うためのハードウエア構成上の工夫が提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平９−３１９７３０号公報
【特許文献２】特開２０００−０７６０４６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述したとおり、Ｆ＝Σ p=0〜n-1 （Ｗｐ・Ｆｐ）なる式で与えられる重み付きの加算は、まず、部分積項「Ｗｐ・Ｆｐ」を求める乗算を行い、続いて、個々の部分積項の総和を求める加算を行う必要がある。このため、ハードウエア構成は複雑になり、演算負担もかなり大きい。前掲の特許文献１，２に開示されているような従来の一般的な技術では、複数ｎ通りの関数値Ｆｐについての重み付き加算を行うために、ｎ個の乗算器を並列的に配置し、各乗算器で求められた積を加算器で加算する構成をとっている。したがって、ｎ個の乗算器を構成する電子回路とともに、乗算結果を一時的に格納しておく電子回路などが必要になり、回路規模は肥大化せざるを得ない。
【０００６】
そこで、本発明は、複数の関数値についての重み付けを行った加算演算を、より単純な電子回路を用いて行うことが可能な演算装置および演算方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
(1)   本発明の第１の態様は、複数ｎ通りの関数値Ｆｐと複数ｎ通りの重みＷｐに基づいて（但し、ｎ≧３、ｐ＝０，１，２，... ，ｎ−１）、関数値Ｆ＝Σp=0〜n-1（Ｗｐ・Ｆｐ）の値を、「０≦Ｗｐ≦１」および「Σp=0〜n-1Ｗｐ＝１」なる条件下で演算する重み付き加算演算器において、
複数ｎ通りの関数値Ｆｐ（但し、ｐ＝０，１，２，... ，ｎ−１）のそれぞれを、所定のビット列データとして入力する関数値入力部と、
複数（ｎ−１）通りの重みＷｐ（但し、ｐ＝１，２，... ，ｎ−１）のそれぞれを、所定のビット列データとして入力する重み入力部と、
Ｆ＝Σp=0〜n-1（Ｗｐ・Ｆｐ）
なる演算式に基づく演算を行い、関数値Ｆの値を出力する演算部と、
を設け、
演算部が、Ｗｐを構成する各ビットを論理反転することによって得られる論理反転値をＷbarｐとしたときに、Ｗbarｐを構成する所定ビットｗbarｐと、Ｗｐを構成する所定ビットｗｐと、Ｆ０を構成する所定ビットｆ０と、Ｆｐを構成する所定ビットｆｐと、を用いて、「ｗbarｐ・ｆ０＋ｗｐ・ｆｐ」なる積和演算項を求めるために、ビットｆ０およびビットｆｐを入力とし、ビットｗｐの論理値に基づいて、入力したビットのいずれか一方を選択して出力するセレクタを有するようにしたものである。
【０００８】
(2)   本発明の第２の態様は、複数ｎ通りの関数値Ｆｐと複数ｎ通りの重みＷｐに基づいて（但し、ｎ≧３、ｐ＝０，１，２，... ，ｎ−１）、関数値Ｆ＝Σp=0〜n-1（Ｗｐ・Ｆｐ）の値を、「０≦Ｗｐ≦１」および「Σp=0〜n-1Ｗｐ＝１」なる条件下で演算する重み付き加算演算器において、
複数ｎ通りの関数値Ｆｐ（但し、ｐ＝０，１，２，... ，ｎ−１）のそれぞれを、所定のビット列データとして入力する関数値入力部と、
複数（ｎ−１）通りの重みＷｐ（但し、ｐ＝１，２，... ，ｎ−１）のそれぞれを、合計ｍビットのビット列データとして入力する重み入力部と、
Ｆ＝｛１＋（−１＋２（−ｍ））・（ｎ−１）｝・Ｆ０
＋Σp=1〜n-1（Ｗbarｐ・Ｆ０＋Ｗｐ・Ｆｐ）
なる演算式（但し、Ｗbarｐは、Ｗｐを構成する各ビットを論理反転することによって得られる論理反転値）について、
右辺第１項を演算するための乗算演算部と、
右辺第２項を演算するために「Ｗbarｐ・Ｆ０＋Ｗｐ・Ｆｐ」なる積和演算（但し、ｐ＝１，２，... ，ｎ−１）を行う（ｎ−１）個の積和演算部と、
乗算演算部の演算結果と（ｎ−１）個の積和演算部の演算結果との総和を求める演算を行い、演算結果を関数値Ｆの値として出力する総和演算部と、
を設け、
（ｎ−１）個の積和演算部の一部もしくは全部が、Ｗbarｐを構成する所定ビットｗbarｐと、Ｗｐを構成する所定ビットｗｐと、Ｆ０を構成する所定ビットｆ０と、Ｆｐを構成する所定ビットｆｐと、を用いて、「ｗbarｐ・ｆ０＋ｗｐ・ｆｐ」なる積和演算項を求めるために、ビットｆ０およびビットｆｐを入力とし、ビットｗｐの論理値に基づいて、入力したビットのいずれか一方を選択して出力するセレクタを有するようにしたものである。
【０００９】
(3)   本発明の第３の態様は、上述の第２の態様に係る重み付き加算演算器において、
関数値入力部が、関数値Ｆｐ（但し、ｐ＝０，１，２，... ，ｎ−１）を、Ｆｐ＝Σj=0〜r-1（ｆｐｊ・２ｊ）なる式を満たす、最上位ビット側から順に、ｆｐ（ｒ−１），ｆｐ（ｒ−２），... ，ｆｐ１，ｆｐ０なる合計ｒビットのデータとして入力し、
重み入力部が、重みＷｐ（但し、ｐ＝１，２，... ，ｎ−１）を、Ｗｐ＝Σi=0〜m-1（ｗｐｉ・２（ｉ−ｍ））なる式を満たす、最上位ビット側から順に、ｗｐ（ｍ−１），ｗｐ（ｍ−２），... ，ｗｐ１，ｗｐ０なる合計ｍビットのデータとして入力し、
積和演算部の一部もしくは全部が、Ｗbarｐを構成する第ｉ番目のビットｗbarｐｉと、Ｗｐを構成する第ｉ番目のビットｗｐｉと、Ｆ０を構成する第ｊ番目のビットｆ０ｊと、Ｆｐを構成する第ｊ番目のビットｆｐｊと、を用いて、「ｗbarｐｉ・ｆ０ｊ＋ｗｐｉ・ｆｐｊ」なる積和演算項を求めるために、ビットｆ０ｊおよびビットｆｐｊを入力とし、ビットｗｐｉの論理値に基づいて、入力したビットのいずれか一方を選択して出力するセレクタを有するようにしたものである。
【００１０】
(4)   本発明の第４の態様は、上述の第３の態様に係る重み付き加算演算器において、
演算式で定義される関数値Ｆの最上位ビットに関する演算を省略するようにしたものである。
【００１１】
(5)   本発明の第５の態様は、上述の第２〜第４の態様に係る重み付き加算演算器において、
Ｆ＝｛１＋（−１＋２（−ｍ））・（ｎ−１）｝・Ｆ０
＋Σp=1〜n-1（Ｗbarｐ・Ｆ０＋Ｗｐ・Ｆｐ）
なる演算式の代わりに、これと数学的に等価な等価演算式に基づく演算を行うようにしたものである。
【００１２】
(6)   本発明の第６の態様は、上述の第４の態様に係る重み付き加算演算器において、
乗算演算部が、
｛１＋（−１＋２（−ｍ））・（ｎ−１）｝・Ｆ０
なる演算式の代わりに、関数値Ｆの最上位ビット以外には、負の演算項が生じない等価演算式を用いた演算を行うようにしたものである。
【００１３】
(7)   本発明の第７の態様は、複数ｎ通りの関数値Ｆｐと複数ｎ通りの重みＷｐに基づいて（但し、ｎ≧３、ｐ＝０，１，２，... ，ｎ−１）、関数値Ｆ＝Σp=0〜n-1（Ｗｐ・Ｆｐ）の値を、「０≦Ｗｐ≦１」および「Σp=0〜n-1Ｗｐ＝１」なる条件下で演算する重み付き加算演算器において、
複数ｎ通りの関数値Ｆｐ（但し、ｐ＝０，１，２，... ，ｎ−１）のそれぞれを、Ｆｐ＝−ｆｐ（ｑ−１）・２（ｑ−１）＋Σj=0〜q-2（ｆｐｊ・２ｊ）なる式を満たす、最上位ビット側から順に、符号部ｆｐ（ｑ−１），正数部ｆｐ（ｑ−２），... ，ｆｐ１，ｆｐ０なる合計ｑビットのデータとして入力する関数値入力部と、
複数（ｎ−１）通りの重みＷｐ（但し、ｐ＝１，２，... ，ｎ−１）のそれぞれを、Ｗｐ＝Σi=0〜m-1（ｗｐｉ・２（ｉ−ｍ））なる式を満たす、最上位ビット側から順に、ｗｐ（ｍ−１），ｗｐ（ｍ−２），... ，ｗｐ１，ｗｐ０なる合計ｍビットのデータとして入力する重み入力部と、
Ｆ＝Ａ＋Σp=1〜n-1（Ｂ＋Ｃ＋Ｄ＋Ｅ）
但し、
Ａ＝−ｆ０（ｑ−１）・２（ｑ−１）＋Σj=0〜q-2（ｆ０ｊ・２ｊ）
Ｂ＝｛ｆ０（ｑ−１）・Σi=0〜m-1（ｗｐｉ・２（ｑ−１＋ｉ−ｍ））｝
＋｛ｆｐ（ｑ−１）・Σi=0〜m-1（ｗbarｐｉ・２（ｑ−１＋ｉ−ｍ））｝
Ｃ＝｛Σi=0〜m-1（ｗbarｐｉ・２（ｉ−ｍ））
・Σj=0〜q-2（ｆ０ｊ・２ｊ）｝
＋｛Σi=0〜m-1（ｗｐｉ・２（ｉ−ｍ））
・Σj=0〜q-2（ｆｐｊ・２ｊ）｝
Ｄ＝｛Σj=0〜q-2（ｆ０ｊ・２（ｊ−ｍ））｝
＋｛ｆｐ（ｑ−１）・２（ｑ−１−ｍ）｝
Ｅ＝｛Σj=0〜q-2（ｆbar０ｊ・２ｊ）｝＋１−２（ｑ−１）
−｛ｆｐ（ｑ−１）・２（ｑ−１）｝
なる演算式（但し、ｗbarｐｉは、ｗｐｉを論理反転することによって得られる論理反転ビット、ｆbar０ｊは、ｆ０ｊを論理反転することによって得られる論理反転ビット）について、
演算項Ａを演算する第Ａ項演算部と、
演算項Ｂを演算する第Ｂ項演算部と、
演算項Ｃを演算する第Ｃ項演算部と、
演算項Ｄを演算する第Ｄ項演算部と、
演算項Ｅを演算する第Ｅ項演算部と、
第Ａ項演算部の演算結果と、ｐ＝１，２，... ，ｎ−１のそれぞれの場合について得られた第Ｂ項演算部、第Ｃ項演算部、第Ｄ項演算部、第Ｅ項演算部の演算結果と、の総和を求め、関数値Ｆの値として出力する総和演算部と、
を設け、
第Ｂ項演算部もしくは第Ｃ項演算部のいずれか一方、またはその双方が、Ｗｐを構成する第ｉ番目のビットｗｐｉと、その論理反転ビットｗbarｐｉと、Ｆ０を構成する第ｊ番目のビットｆ０ｊと、Ｆｐを構成する第ｊ番目のビットｆｐｊと、を用いて、「ｗbarｐｉ・ｆ０ｊ＋ｗｐｉ・ｆｐｊ」なる積和演算項を求めるために、ビットｆ０ｊおよびビットｆｐｊを入力とし、ビットｗｐｉの論理値に基づいて、入力したビットのいずれか一方を選択して出力するセレクタを有するようにしたものである。
【００１４】
(8)   本発明の第８の態様は、上述の第７の態様に係る重み付き加算演算器において、
−（ｎ−１）＝−２ｚ＋ａｚ−１・２（ｚ−１）＋... ＋ａ１・２１＋ａ０・２０
（但し、ａ０，ａ１，... ，ａｚ−１は、１ビットの数値）としたときに、演算式で定義される関数値Ｆの２（ｚ＋ｑ）の桁を符号部、２（ｑ−２）の桁以下を正数部として出力し、２（ｚ＋ｑ−１）の桁〜２（ｑ−１）の桁の値を無視するようにしたものである。
【００１５】
(9)   本発明の第９の態様は、上述の第７または第８の態様に係る重み付き加算演算器において、
Ｆ＝Ａ＋Σp=1〜n-1（Ｂ＋Ｃ＋Ｄ＋Ｅ）
なる演算式の代わりに、これと数学的に等価な等価演算式に基づく演算を行うようにしたものである。
【００１６】
(10)  本発明の第１０の態様は、上述の第８の態様に係る重み付き加算演算器において、
Ｆ＝Ａ＋Σp=1〜n-1（Ｂ＋Ｃ＋Ｄ＋Ｅ）
なる演算式の代わりに、関数値Ｆの符号部となる桁以外には、負の演算項が生じない等価演算式を用いた演算を行うようにしたものである。
【００１７】
(11)  本発明の第１１の態様は、上述の第１〜第１０の態様に係る重み付き加算演算器を備え、複数ｎ枚の画像をそれぞれの重みＷｐ（但し、ｐ＝０，１，２，... ，ｎ−１）を考慮して合成し、合成画像を作成する画像合成装置において、
各画像を示すデータとして、二次元座標値（ｇ，ｈ）で示される位置に配置された画素の画素値Ｆｐ（ｇ，ｈ）を関数値Ｆｐとして取り込み、重みＷｐを用いて重み付き加算演算器により得られた関数値Ｆを、合成画像上の二次元座標値（ｇ，ｈ）で示される位置に配置された画素の画素値Ｆ（ｇ，ｈ）とすることにより、合成画像を示すデータを作成するようにしたものである。
【００１８】
(12)  本発明の第１２の態様は、複数ｎ通りの関数値Ｆｐと複数ｎ通りの重みＷｐに基づいて（但し、ｎ≧３、ｐ＝０，１，２，... ，ｎ−１）、関数値Ｆ＝Σp=0〜n-1（Ｗｐ・Ｆｐ）の値を、「０≦Ｗｐ≦１」および「Σp=0〜n-1Ｗｐ＝１」なる条件下で求める演算を、演算回路が実行する重み付き加算演算方法において、
複数ｎ通りの関数値Ｆｐ（但し、ｐ＝０，１，２，... ，ｎ−１）のそれぞれを、所定のビット列データとして入力する関数値入力段階と、
複数（ｎ−１）通りの重みＷｐ（但し、ｐ＝１，２，... ，ｎ−１）のそれぞれを、所定のビット列データとして入力する重み入力段階と、
Ｆ＝Σp=0〜n-1（Ｗｐ・Ｆｐ）
なる演算式に基づく演算を行い、関数値Ｆの値を出力する関数値演算段階と、
を演算回路が実行するようにし、
この演算回路が、関数値演算段階において、Ｗｐを構成する各ビットを論理反転することによって得られる論理反転値をＷbarｐとしたときに、Ｗbarｐを構成する所定ビットｗbarｐと、Ｗｐを構成する所定ビットｗｐと、Ｆ０を構成する所定ビットｆ０と、Ｆｐを構成する所定ビットｆｐと、を用いて、「ｗbarｐ・ｆ０＋ｗｐ・ｆｐ」なる積和演算項を求めるすべての演算もしくは一部の演算を、ビットｆ０およびビットｆｐを入力とし、ビットｗｐの論理値に基づいて、入力したビットのいずれか一方を選択して出力するセレクタを用いて実行するようにしたものである。
【００１９】
(13)  本発明の第１３の態様は、複数ｎ通りの関数値Ｆｐと複数ｎ通りの重みＷｐに基づいて（但し、ｎ≧３、ｐ＝０，１，２，... ，ｎ−１）、関数値Ｆ＝Σp=0〜n-1（Ｗｐ・Ｆｐ）の値を、「０≦Ｗｐ≦１」および「Σp=0〜n-1Ｗｐ＝１」なる条件下で求める演算を、演算回路が実行する重み付き加算演算方法において、
複数ｎ通りの関数値Ｆｐ（但し、ｐ＝０，１，２，... ，ｎ−１）のそれぞれを、所定のビット列データとして入力する関数値入力段階と、
複数（ｎ−１）通りの重みＷｐ（但し、ｐ＝１，２，... ，ｎ−１）のそれぞれを、合計ｍビットのビット列データとして入力する重み入力段階と、
Ｆ＝｛１＋（−１＋２（−ｍ））・（ｎ−１）｝・Ｆ０
＋Σp=1〜n-1（Ｗbarｐ・Ｆ０＋Ｗｐ・Ｆｐ）
なる演算式（但し、Ｗbarｐは、Ｗｐを構成する各ビットを論理反転することによって得られる論理反転値）について、
右辺第１項を演算するための乗算演算段階と、
右辺第２項を演算するために「Ｗbarｐ・Ｆ０＋Ｗｐ・Ｆｐ」なる積和演算を、ｐ＝１，２，... ，ｎ−１のそれぞれについて行う積和演算段階と、
乗算演算段階の演算結果と積和演算段階の演算結果との総和を求める演算を行い、その結果を関数値Ｆの値として出力する総和演算段階と、
を演算回路が実行するようにし、
この演算回路が、積和演算段階において、Ｗbarｐを構成する所定ビットｗbarｐと、Ｗｐを構成する所定ビットｗｐと、Ｆ０を構成する所定ビットｆ０と、Ｆｐを構成する所定ビットｆｐと、を用いて、「ｗbarｐ・ｆ０＋ｗｐ・ｆｐ」なる積和演算項を求めるすべての演算もしくは一部の演算を、ビットｆ０およびビットｆｐを入力とし、ビットｗｐの論理値に基づいて、入力したビットのいずれか一方を選択して出力するセレクタを用いて実行するようにしたものである。
【００２０】
(14)  本発明の第１４の態様は、上述の第１３の態様に係る重み付き加算演算方法において、
関数値入力段階において、関数値Ｆｐ（但し、ｐ＝０，１，２，... ，ｎ−１）を、Ｆｐ＝Σj=0〜r-1（ｆｐｊ・２ｊ）なる式を満たす、最上位ビット側から順に、ｆｐ（ｒ−１），ｆｐ（ｒ−２），... ，ｆｐ１，ｆｐ０なる合計ｒビットのデータとして入力し、
重み入力段階において、重みＷｐ（但し、ｐ＝１，２，... ，ｎ−１）を、Ｗｐ＝Σi=0〜m-1（ｗｐｉ・２（ｉ−ｍ））なる式を満たす、最上位ビット側から順に、ｗｐ（ｍ−１），ｗｐ（ｍ−２），... ，ｗｐ１，ｗｐ０なる合計ｍビットのデータとして入力し、
積和演算段階において、Ｗbarｐを構成する第ｉ番目のビットｗbarｐｉと、Ｗｐを構成する第ｉ番目のビットｗｐｉと、Ｆ０を構成する第ｊ番目のビットｆ０ｊと、Ｆｐを構成する第ｊ番目のビットｆｐｊと、を用いて、「ｗbarｐｉ・ｆ０ｊ＋ｗｐｉ・ｆｐｊ」なる積和演算項を求めるすべての演算もしくは一部の演算を、ビットｆ０ｊおよびビットｆｐｊを入力とし、ビットｗｐｉの論理値に基づいて、入力したビットのいずれか一方を選択して出力するセレクタを用いて実行するようにしたものである。
【００２１】
(15)  本発明の第１５の態様は、上述の第１４の態様に係る重み付き加算演算方法において、
演算式で定義される関数値Ｆの最上位ビットに関する演算を省略するようにしたものである。
【００２２】
(16)  本発明の第１６の態様は、上述の第１３〜第１５の態様に係る重み付き加算演算方法において、
Ｆ＝｛１＋（−１＋２（−ｍ））・（ｎ−１）｝・Ｆ０
＋Σp=1〜n-1（Ｗbarｐ・Ｆ０＋Ｗｐ・Ｆｐ）
なる演算式の代わりに、これと数学的に等価な等価演算式に基づく演算を行うようにしたものである。
【００２３】
(17)  本発明の第１７の態様は、上述の第１５の態様に係る重み付き加算演算方法において、
乗算演算段階で、
｛１＋（−１＋２（−ｍ））・（ｎ−１）｝・Ｆ０
なる演算式の代わりに、関数値Ｆの最上位ビット以外には、負の演算項が生じない等価演算式を用いた演算を行うようにしたものである。
【００２４】
(18)  本発明の第１８の態様は、複数ｎ通りの関数値Ｆｐと複数ｎ通りの重みＷｐに基づいて（但し、ｎ≧３、ｐ＝０，１，２，... ，ｎ−１）、関数値Ｆ＝Σp=0〜n-1（Ｗｐ・Ｆｐ）の値を、「０≦Ｗｐ≦１」および「Σp=0〜n-1Ｗｐ＝１」なる条件下で求める演算を、演算回路が実行する重み付き加算演算方法において、
複数ｎ通りの関数値Ｆｐ（但し、ｐ＝０，１，２，... ，ｎ−１）のそれぞれを、Ｆｐ＝−ｆｐ（ｑ−１）・２（ｑ−１）＋Σj=0〜q-2（ｆｐｊ・２ｊ）なる式を満たす、最上位ビット側から順に、符号部ｆｐ（ｑ−１），正数部ｆｐ（ｑ−２），... ，ｆｐ１，ｆｐ０なる合計ｑビットのデータとして入力する関数値入力段階と、
複数（ｎ−１）通りの重みＷｐ（但し、ｐ＝１，２，... ，ｎ−１）のそれぞれを、Ｗｐ＝Σi=0〜m-1（ｗｐｉ・２（ｉ−ｍ））なる式を満たす、最上位ビット側から順に、ｗｐ（ｍ−１），ｗｐ（ｍ−２），... ，ｗｐ１，ｗｐ０なる合計ｍビットのデータとして入力する重み入力段階と、
Ｆ＝Ａ＋Σp=1〜n-1（Ｂ＋Ｃ＋Ｄ＋Ｅ）
但し、
Ａ＝−ｆ０（ｑ−１）・２（ｑ−１）＋Σj=0〜q-2（ｆ０ｊ・２ｊ）
Ｂ＝｛ｆ０（ｑ−１）・Σi=0〜m-1（ｗｐｉ・２（ｑ−１＋ｉ−ｍ））｝
＋｛ｆｐ（ｑ−１）・Σi=0〜m-1（ｗbarｐｉ・２（ｑ−１＋ｉ−ｍ））｝
Ｃ＝｛Σi=0〜m-1（ｗbarｐｉ・２（ｉ−ｍ））
・Σj=0〜q-2（ｆ０ｊ・２ｊ）｝
＋｛Σi=0〜m-1（ｗｐｉ・２（ｉ−ｍ））
・Σj=0〜q-2（ｆｐｊ・２ｊ）｝
Ｄ＝｛Σj=0〜q-2（ｆ０ｊ・２（ｊ−ｍ））｝
＋｛ｆｐ（ｑ−１）・２（ｑ−１−ｍ）｝
Ｅ＝｛Σj=0〜q-2（ｆbar０ｊ・２ｊ）｝＋１−２（ｑ−１）
−｛ｆｐ（ｑ−１）・２（ｑ−１）｝
なる演算式（但し、ｗbarｐｉは、ｗｐｉを論理反転することによって得られる論理反転ビット、ｆbar０ｊは、ｆ０ｊを論理反転することによって得られる論理反転ビット）について、
演算項Ａを演算する第Ａ項演算段階と、
演算項Ｂを演算する第Ｂ項演算段階と、
演算項Ｃを演算する第Ｃ項演算段階と、
演算項Ｄを演算する第Ｄ項演算段階と、
演算項Ｅを演算する第Ｅ項演算段階と、
第Ａ項演算段階の演算結果と、ｐ＝１，２，... ，ｎ−１のそれぞれの場合について実行された第Ｂ項演算段階、第Ｃ項演算段階、第Ｄ項演算段階、第Ｅ項演算段階の演算結果と、の総和を求め、関数値Ｆの値として出力する総和演算段階と、
を演算回路が実行するようにし、
この演算回路が、第Ｂ項演算段階および第Ｃ項演算段階において、Ｗｐを構成する第ｉ番目のビットｗｐｉと、その論理反転ビットｗbarｐｉと、Ｆ０を構成する第ｊ番目のビットｆ０ｊと、Ｆｐを構成する第ｊ番目のビットｆｐｊと、を用いて、「ｗbarｐｉ・ｆ０ｊ＋ｗｐｉ・ｆｐｊ」なる積和演算項を求めるすべての演算もしくは一部の演算を、ビットｆ０ｊおよびビットｆｐｊを入力とし、ビットｗｐｉの論理値に基づいて、入力したビットのいずれか一方を選択して出力するセレクタを用いて実行するようにしたものである。
【００２５】
(19)  本発明の第１９の態様は、上述の第１８の態様に係る重み付き加算演算方法において、
−（ｎ−１）＝−２ｚ＋ａｚ−１・２（ｚ−１）＋... ＋ａ１・２１＋ａ０・２０
（但し、ａ０，ａ１，... ，ａｚ−１は、１ビットの数値）としたときに、演算回路が、演算式で定義される関数値Ｆの２（ｚ＋ｑ）の桁を符号部、２（ｑ−２）の桁以下を正数部として出力し、２（ｚ＋ｑ−１）の桁〜２（ｑ−１）の桁の値を無視するようにしたものである。
【００２６】
(20)  本発明の第２０の態様は、上述の第１８または第１９の態様に係る重み付き加算演算方法において、
Ｆ＝Ａ＋Σp=1〜n-1（Ｂ＋Ｃ＋Ｄ＋Ｅ）
なる演算式の代わりに、これと数学的に等価な等価演算式に基づく演算を行うようにしたものである。
【００２７】
(21)  本発明の第２１の態様は、上述の第１９の態様に係る重み付き加算演算方法において、
Ｆ＝Ａ＋Σp=1〜n-1（Ｂ＋Ｃ＋Ｄ＋Ｅ）
なる演算式の代わりに、関数値Ｆの符号部となる桁以外には、負の演算項が生じない等価演算式を用いた演算を行うようにしたものである。
【発明の効果】
【００２８】
本発明では、複数ｎ通りの関数値Ｆｐについての重み付き加算演算を行う際に、重みＷｐの総和が１になるとの条件を課すことにより、演算式内の重みＷ０を減算項として導入し、Ｗｐの論理反転を含む形式に変更した演算式に基づいて演算回路を構成するようにしている。このため、部分積項のビット演算を単なるセレクタ回路によって実現することができるようになり、重み付き加算演算を、セレクタ回路を利用した単純な電子回路を用いて行うことが可能になる。よって、回路の実装規模を縮小させることができ、また、演算の高速化を図ることもできる。
【図面の簡単な説明】
【００２９】
【図１】一般的な線形補間演算の原理を示すグラフである。
【図２】本発明に係る重み付き加算演算で用いられる基本演算式を示す図である。
【図３】本発明に係る重み付き加算演算を、３枚の画像の画像合成に用いた応用例を示す図である。
【図４】重み付き加算演算によって得られる関数値Ｆの範囲を示すグラフである。
【図５】従来の一般的な重み付き加算演算器の回路構成を示すブロック図である。
【図６】「重みの総和が１になる」との前提において成り立つ式を示す図である。
【図７】一般に、小数Ｗをｍビットのデジタル値として表現する方法を示す図である。
【図８】一般に、小数−Ｗと小数Ｗbarとの関係式である＜式１２＞を導出するプロセスを示す図である。
【図９】一般に、２のべき乗和の性質を示す＜式１５＞が成り立つ理由を示す図である。
【図１０】本発明において、ｎ＝３の場合に用いられる関数値Ｆの演算式を導出するプロセスを示す図である。
【図１１】図１０に示す＜式１６＞における項Ｔ５，Ｔ６の変形プロセスを示す図である。
【図１２】本発明において、ｎ＝３の場合に用いられる関数値Ｆの演算式である＜式２０＞を示す図である。
【図１３】本発明において、ｎが任意の場合に用いられる関数値Ｆの演算式である＜式２１＞を示す図である。
【図１４】「Ｓ＝Ｗbar・Ｘ＋Ｗ・Ｙ」なる＜式２２＞の演算を行う積和演算部を示す図である。
【図１５】ｎ＝３の場合について、本発明に係る重み付き加算演算器の構成を示すブロック図である。
【図１６】ｎが任意の場合について、本発明に係る重み付き加算演算器の構成を示すブロック図である。
【図１７】一般に、小数Ｗをｍビットのデジタル値として表現し、整数Ｘをｒビットのデジタル値として表現する方法を示す図である。
【図１８】４ビットのデジタル値として表現された小数Ｗと、４ビットのデジタル値として表現された整数Ｘと、の積Ｔを求めるために必要なビットごとの積およびその総和演算を示す図である。
【図１９】図１８に示すビットごとの積和演算の個々の部分積項を桁ごとに並べて示す表である。
【図２０】「Ｓ＝Ｗbar・Ｘ＋Ｗ・Ｙ」なる＜式２２＞の演算を行う際に必要な個々の部分積項を桁ごとに並べて示す表である。
【図２１】一般的なセレクタ回路の機能を示す図である。
【図２２】図２０の表におけるＳの２−４の桁および２−３の桁の積和演算を行う電子回路を、セレクタ回路を用いて構成した例を示す回路図である。
【図２３】図２０の表におけるＳの全桁の積和演算を行う電子回路を、セレクタ回路を用いて構成した例を示す回路図である。
【図２４】一般に、小数からなる第ｐ番目の重みＷｐをｍビットのデジタル値として表現し、整数からなる第ｐ番目の関数値Ｆｐをｒビットのデジタル値として表現する方法を示す図である。
【図２５】ｎ＝３，ｍ＝４，ｒ＝４の場合の各重みＷｐおよび各関数値Ｆｐのビット構成を示す図である。
【図２６】一般に、４ビットの整数Ｘについて、−ＸとＸbarとの関係を示す図である。
【図２７】図１２に示す＜式２０＞を、ｍ＝４として整理して得られる＜式３８＞を示す図である。
【図２８】図２７に示す＜式３８＞に基づいて関数値Ｆを求める際に必要な個々の演算項を桁ごとに並べて示す表である。
【図２９】本発明において、ｎ，ｍ，ｒが任意の場合に用いられる関数値Ｆの演算式である＜式４０＞を示す図である。
【図３０】図２８に示す表における最上位ビット（２４の桁）の演算が省略可能であることを説明するための前提条件を示す図である。
【図３１】図３０の前提条件により常に０になるビットが生じることを示す図である。
【図３２】図３０の前提条件により常に０になるビットについて、演算を省略した形式の＜式４３＞を示す図である。
【図３３】小数−Ｕと小数Ｕbarとの関係式である＜式４５＞を導出するプロセスを示す図である。
【図３４】図３２に示す＜式４３＞における項Ｔ１０，Ｔ１１の変形プロセスを示す図である。
【図３５】図３０に示す前提条件において導出された、ｎ＝３の場合の関数値Ｆ′の演算式である＜式４８＞を示す図である。
【図３６】図３０に示す前提条件において導出された、ｎ，ｍが任意の場合の関数値Ｆ′の演算式である＜式４９＞を示す図である。
【図３７】一般に、符号付きの整数Ｘをｑビットのデジタル値として表現する方法を示す図である。
【図３８】ｍビットのデジタル値として表現された小数Ｗと、ｑビットの符号付きデジタル値として表現された整数Ｘ，Ｙと、を用いて、積和「Ｖ＝（−Ｗ）・Ｘ＋Ｗ・Ｙ」を求めるために必要なビットごとの演算を示す＜式５３＞を示す図である。
【図３９】図３８に示す＜式５３＞の項Ｔ２０の変形プロセスを示す図である。
【図４０】図３８に示す＜式５３＞を＜式５９＞に変形するプロセスを示す図である。
【図４１】符号付き整数Ｘについて、−ＸとＸbarとの関係式である＜式６２＞を導出するプロセスを示す図である。
【図４２】図４０に示す＜式５９＞を＜式６６＞に変形するプロセスを示す図である。
【図４３】ｎが任意の場合に、符号付き整数を用いた重み付き加算演算の本発明に係る取り扱いを示す図である。
【図４４】ｎが任意の場合に、符号付き整数からなる関数値Ｆｐを用いた本発明に係る重み付き加算演算で用いられる基本演算式である＜式６９＞を示す図である。
【図４５】図４４に示す＜式６９＞に、ｎ＝３を代入して得られる＜式７０＞を示す図である。
【図４６】図４５に示す＜式６９＞に、ｎ＝３，ｍ＝４，ｑ＝４を代入して得られる＜式７１＞を示す図である。
【図４７】図４６に示す＜式７１＞に基づいて関数値Ｆを求める際に必要な個々の演算項を桁ごとに並べて示す表である。
【図４８】図４５に示す＜式７０＞において、一部の項を変形するプロセスを示す図である。
【図４９】ｎ＝３の場合について、＜式７０＞の負項を排除するための演算式の変形を示す図である。
【図５０】図４７に示す表の各欄を整理することにより得られる表である。
【図５１】ｎが任意の場合について、＜式６９＞の負項を排除するための演算式の変形を示す図である。
【図５２】正の整数値をとる関数値Ｆｐについて、−ＦｐとＦbarｐとの関係式である＜式８０＞を導出するプロセスを示す図である。
【図５３】符号付き関数値Ｆｐを、正の整数値の表現形式で取り扱う方法を示す図である。
【発明を実施するための形態】
【００３０】
以下、本発明を図示する実施形態に基づいて説明する。
【００３１】
＜＜＜  §１．  従来の一般的な重み付き加算演算  ＞＞＞
本発明に係る重み付き加算演算は、一般に加重和演算と呼ばれている演算であり、複数ｎ通りの関数値Ｆｐ（但し、ｐ＝０，１，２，... ，ｎ−１）について、それぞれ重みＷｐを考慮した加算を行うものである。特に、ｎ＝２の場合は、２つの関数値Ｆ０とＦ１との間の補間値を求める線形補間演算として広く利用されている。
【００３２】
図１は、一般的な線形補間演算の原理を示すグラフである。ここでは、図示のとおり、横方向に座標軸Ｘ、縦方向に関数値をとったグラフを考え、座標「Ｘ＝０」の位置に定義された関数値Ｆ０と、座標「Ｘ＝１」の位置に定義された関数値Ｆ１とに基づいて、その中間位置ｘにおける関数値Ｆを求める例が示されている。線形補間を行う場合、図示のとおり、このグラフ上の点Ｑ０（０，Ｆ０）と点Ｑ１（１，Ｆ１）とを結ぶ補間直線Ｌを引けば、中間位置ｘにおける関数値Ｆは、座標「Ｘ＝ｘ」の位置おける補間直線Ｌ上の点Ｑの縦座標値として求めることができる。
【００３３】
関数値Ｆを求める線形補間演算は、関数値Ｆ０に対して重み（１−ｘ）を与え、関数値Ｆ１に対して重みｘを与えることにより、図１の下段に示すとおり、Ｆ＝（１−ｘ）・Ｆ０＋ｘ・Ｆ１という演算式で定義される。ここで、関数値Ｆ０に対する重み（１−ｘ）をＷ０と記述し、関数値Ｆ１に対する重みｘをＷ１と記述すれば、この線形補間演算は、Ｆ＝Ｗ０・Ｆ０＋Ｗ１・Ｆ１という演算式で定義されることになり、Ｗ０＋Ｗ１＝１になる。この式は、ｎ＝２の場合、すなわち、複数２通りの関数値Ｆ０，Ｆ１についての重み付き加算演算式ということになる。
【００３４】
一方、ｎ＝３の場合は、図２の上段に示すとおり、
Ｆ＝Ｗ０・Ｆ０＋Ｗ１・Ｆ１＋Ｗ２・Ｆ２                        ＜式１＞
という重み付き加算演算式が定義される。ここで、多くの場合、
Ｗ０＋Ｗ１＋Ｗ２＝１                                          ＜式２＞
となるように、各重みの値Ｗ０，Ｗ１，Ｗ２が調整される。
【００３５】
ｎが任意の場合の一般式は、図２の下段に示すとおり、
Ｆ＝Ｗ０・Ｆ０＋Ｗ１・Ｆ１＋Ｗ２・Ｆ２
＋ ... ＋Ｗｐ・Ｆｐ＋ ... ＋Ｗｎ−１・Ｆｎ−１            ＜式３＞
（すなわち、Ｆ＝Σ p=0〜n-1 （Ｗｐ・Ｆｐ））
となり、ここでも、多くの場合、
Ｗ０＋Ｗ１＋Ｗ２＋ ... ＋Ｗｐ＋ ... ＋Ｗｎ−１＝１            ＜式４＞
（すなわち、Σ p=0〜n-1 Ｗｐ＝１）
となるように、各重みの値Ｗ０〜Ｗｎ−１が調整される。
【００３６】
このような重み付き加算演算は、様々な技術分野において利用されている。たとえば、図３は、この演算を３枚のデジタル画像の画像合成に用いた応用例を示す図である。図示の画像Ｐ０，Ｐ１，Ｐ２は、いずれも同じ解像度をもつデジタル画像であり、個々の画素の位置は、横座標値ｇおよび縦座標値ｈを用いて（ｇ，ｈ）で表される。ここでは、この３枚の画像Ｐ０，Ｐ１，Ｐ２について、いわゆるブレンド式の合成を行い、合成画像Ｐを得る処理を考える。この処理は、具体的には、主画像Ｐ０に、背景画像Ｐ１とタイトル文字画像Ｐ２とをブレンドして合成画像Ｐを得るようなケースで利用される処理である。
【００３７】
このとき、画像Ｐ０，Ｐ１，Ｐ２には、それぞれ重みＷ０，Ｗ１，Ｗ２が定義され、同じ座標位置の画素ごとに、画素値の重み付き加算演算が行われる。たとえば、特定の座標位置（ｇ，ｈ）については、図示のとおり、画像Ｐ０上の画素の画素値Ｆ０（ｇ，ｈ）と、画像Ｐ１上の画素の画素値Ｆ１（ｇ，ｈ）と、画像Ｐ２上の画素の画素値Ｆ２（ｇ，ｈ）と、について、それぞれ重みＷ０，Ｗ１，Ｗ２を考慮した加算演算を行い、合成画像Ｐ上の画素の画素値Ｆ（ｇ，ｈ）を算出する。カラー画像の場合には、たとえば、ＲＧＢなどの三原色のそれぞれの画素値について、同様の重み付き加算演算を行うことになる。
【００３８】
合成画像Ｐ上の画素の画素値Ｆ（ｇ，ｈ）は、図示のとおり、
Ｆ（ｇ，ｈ）＝Ｗ０・Ｆ０（ｇ，ｈ）＋Ｗ１・Ｆ１（ｇ，ｈ）
＋Ｗ２・Ｆ２（ｇ，ｈ）                      ＜式５＞
で与えられ、重みについては、通常、
Ｗ０＋Ｗ１＋Ｗ２＝１                                      ＜式６＞
が成り立つような調整が行われる。
【００３９】
もちろん、＜式６＞が成り立たないような重みを設定しても、重み付き加算演算を行うことは可能であるが、画像合成処理などの一般的な技術分野では、通常、重みの総和を１とする正規化が行われる。これは、元の画像の画素値のレンジと合成画像の画素値のレンジとを揃えるための便宜である。たとえば、画像Ｐ０，Ｐ１，Ｐ２を構成する個々の画素の画素値が、いずれも８ビットのデータで表されていた場合、画素値は０〜２５５のレンジをとる。上記＜式６＞が満たされていれば、＜式５＞に基づく演算によって得られた合成画像Ｐを構成する個々の画素の画素値も、やはり０〜２５５のレンジをとることになり都合がよい。
【００４０】
一般に、ｎが任意の場合において、図２に示す＜式４＞を前提として（すなわち、重みの総和が１になることを前提として）、＜式３＞に基づいて関数値Ｆを求めると、得られるＦの範囲は、図４に示すように、Ｆmax 〜Ｆmin の範囲になる。ここで、Ｆmax およびＦmin は、ｎ個の実在する関数値Ｆ０〜Ｆｎ−１の中の最大値および最小値である。たとえば、第０番目の関数値Ｆ０〜第（ｎ−１）番目の関数値Ｆｎ−１のうち、第２番目の関数値Ｆ２が最小値８をとり、第ｐ番目の関数値Ｆｐが最大値２３１をとる場合、＜式４＞を前提として＜式３＞に基づいて算出された関数値Ｆは、必ず８〜２３１の範囲内の値になる。
【００４１】
このような重み付き加算演算を高速に行うためには、電子回路を用いたハードウエアからなる加算演算器を構成する必要がある。図５は、従来の一般的な重み付き加算演算器の回路構成を示すブロック図である。前掲の特許文献１や２に開示されている演算器も、基本的には、この図５に示す回路構成を採る。この回路は、ｎ個の乗算器１０（０），１０（１），... ，１０（ｎ−１）と、加算器２０とによって構成されており、Ｆ＝Σ p=0〜n-1 （Ｗｐ・Ｆｐ）なる演算を、この式のとおり忠実に演算する演算器である。
【００４２】
すなわち、ｎ個の乗算器１０（０），１０（１），... ，１０（ｎ−１）は、「Ｗ０・Ｆ０」なる積、「Ｗ１・Ｆ１」なる積、... 「Ｗｎ−１・Ｆｎ−１」なる積を、それぞれ求める機能を果たし、加算器２０は、これらの積の総和を求め、関数値Ｆとして出力する機能を果たす。
【００４３】
しかしながら、この図５に示すような回路構成を採ると、ｎ個の乗算器１０を構成する電子回路を並列的に配置するとともに、その乗算結果を加算器で加算する前に、一時的に格納しておく電子回路を配置する必要があり、回路規模は肥大化せざるを得ない。また、乗算を伴う演算負担も大きなものになり、演算時間の短縮化を図ることも困難である。本発明は、このような回路構成を単純化するための新規かつ有用な技術を提案するものである。
【００４４】
＜＜＜  §２．  本発明に係る重み付き加算演算  ＞＞＞
既に§１で述べたとおり、重み付き加算演算の基本演算式は、図２に示すとおり、ｎ＝３の場合には＜式１＞になり、ｎが任意の場合には＜式３＞になる。この基本演算式のとおりに演算器を構成すると、図５に示すように、ｎ個の乗算器１０と加算器２０という構成にせざるを得ない。そこで、本発明では、この基本演算式を別な形に変形し、より効率的な演算器構成をとることにする。
【００４５】
本願発明者は、図２に示すｎ＝３の場合について、＜式１＞を演算する際に、＜式２＞が成り立つことを前提とすれば、＜式１＞における変数Ｗ０を、図６に示すように、
Ｗ０＝１−（Ｗ１＋Ｗ２）                                      ＜式７＞
という式で置き換えることができる点に着目した。同様に、ｎが任意の場合については、＜式３＞を演算する際に、＜式４＞が成り立つことを前提とすれば、＜式３＞における変数Ｗ０を、図６に示すように、
Ｗ０＝１−（Ｗ１＋Ｗ２＋... ＋Ｗｐ＋... ＋Ｗｎ−１）          ＜式８＞
という式で置き換えることができる。そこで、以下、まずｎ＝３の場合について、＜式７＞を利用して、＜式１＞を別な形に変形することを考える。
【００４６】
はじめに、式の変形を行うにあたって、数学的な基本事項を確認しておこう。いま、＜式１＞の変数Ｗ０，Ｗ１，Ｗ２を、一般に重み「Ｗ」と表すことにすると、＜式２＞を前提とすれば、Ｗのとる数値範囲は、０≦Ｗ≦１ということになる。ここで、Ｗ＝０やＷ＝１をとる場合は、いずれか１つの重みが１となり、他の重みがすべて０という特殊な場合に限定され、重み１が対応づけられた関数値をそのまま出力すればよいことになるので、実質的には演算を行う必要はない。たとえば、Ｗ０＝０，Ｗ１＝０，Ｗ２＝１の場合は、Ｆ＝Ｆ２になるので、実際に演算を行う必要はない。もちろん、実際の演算器には、たまたまそのような数値の重みが入力されるケースもあるので、そのような場合にも対処できるよう、０≦Ｗ≦１という範囲内のＷが与えられた場合にも対処できるよう演算器を設計しておく必要があるが、＜式１＞の演算を行うという数学的な見地からは、Ｗのとる数値範囲を、０＜Ｗ＜１という範囲に限定しても問題はない。
【００４７】
そこで、０＜Ｗ＜１という範囲内の値Ｗを、小数点以下４ビットのデジタル値として表現することを考えると、図７(a) に示すように、小数Ｗは、ビットｗ０〜ｗ３を用いて、図示のようなビット列で表現されることになる。ここで、ビットｗ０〜ｗ３は、いずれも１もしくは０をとる１ビットのデータである。なお、本願では、説明の便宜上、変数を大文字のアルファベットで表示し、当該変数を構成する各ビットを小文字の同じアルファベットで表示することにする。変数Ｗは０＜Ｗ＜１という範囲をとる小数であるから、小数点以下のビット列として表現することができ、各ビットｗ０〜ｗ３と変数Ｗとの関係は、図示のとおり、
Ｗ＝ｗ０・２−４＋ｗ１・２−３＋ｗ２・２−２＋ｗ３・２−１
＝Σ i=0〜3 ｗｉ・２（ｉ−４）                          ＜式９＞
になる。たとえば、ｗ０＝０，ｗ１＝０，ｗ２＝０，ｗ３＝１で表現されるビット列「０．１０００」は２−１＝０．５になる。
【００４８】
一般論としては、Ｗを、小数点以下ｍビットのデジタル値として、ビットｗ０〜ｗｍ−１を用いて表したとすると、図７(b) に示すように、
Ｗ＝Σ i=0〜m-1 ｗｉ・２（ｉ−ｍ）                        ＜式１０＞
になる。
【００４９】
ここで、任意のビットｗｉの論理を反転させた反転ビットをｗbarｉとすれば、図７(c) に示すように、
ｗbarｉ＝１−ｗｉ                                        ＜式１１＞
が成り立つ。これは、ビットｗｉが「１」の場合にｗbarｉが「０」をとり、ビットｗｉが「０」の場合にｗbarｉが「１」をとることを考えれば自明の理である。なお、本願明細書、特許請求の範囲、要約書では、電子出願の制約上、変数やビットを示すアルファベットの上部に「論理反転」を示すバー符号を付記することができないので、当該アルファベットの直後に「bar」を挿入して代用することにする（図面上では、通常の数学的な記載に従って、上部にバー符号を付記して示す）。
【００５０】
次に、小数Ｗに対して、負符号を付した小数「−Ｗ」の値を考えてみる。図８の１〜３行目に示すとおり、＜式１０＞から、
−Ｗ＝−Σ i=0〜m-1 （ｗｉ・２（ｉ−ｍ））
＝Σ i=0〜m-1 （−ｗｉ・２（ｉ−ｍ））
である。この式の右辺に、図８の４行目に示すように、「＋２（ｉ−ｍ）−２（ｉ−ｍ）」なる項を付加して整理すれば、図８の５行目に示す式を経て、６行目の式を導くことができる。ここで、第１項をＴ１，第２項をＴ２とすれば、Ｔ１をＴ３に置き換え、Ｔ２をＴ４に置き換えることにより、７行目の式を得ることができ、Ｔ３をＷbarと書き換えれば、８行目の式を導くことができる。結局、
−Ｗ＝−１＋２−ｍ＋Ｗbar                                ＜式１２＞
なる関係式が得られる。
【００５１】
図８に示す式の変形において、Ｔ１からＴ３への置換は、＜式１１＞に基づくものである。また、Ｔ３からＷbarへの書き換えは、＜式１０＞に示す定義に基づくものである。ここで、変数Ｗbarは、変数Ｗの論理反転値であり、変数Ｗを構成する全ビットを論理反転して得られるビット列で表現される数値である。
【００５２】
一方、Ｔ２からＴ４への置換は、図９に示す数学的論理に基づくものである。すなわち、
Σ i=0〜3 ２（ｉ−４）＋２−４
＝２−４＋２−３＋２−２＋２−１＋２−４
＝１／１６＋１／８＋１／４＋１／２＋１／１６
＝１                                                    ＜式１３＞
であり、一般に、
Σ i=0〜m-1 ２（ｉ−ｍ）＋２−ｍ  ＝１                  ＜式１４＞
であるから
Σ i=0〜m-1 ２（ｉ−ｍ）＝１−２−ｍ                    ＜式１５＞
結局、＜式１５＞により、Ｔ２はＴ４に置き換えられる。
【００５３】
さて、それでは、ｎ＝３の場合について、＜式１＞の変形を試みる。図１０に示すとおり、
Ｆ＝Ｗ０・Ｆ０＋Ｗ１・Ｆ１＋Ｗ２・Ｆ２                  ＜式１＞
なる式の「Ｗ０」に、図６の＜式７＞を代入して整理すれば、
Ｆ＝Ｆ０＋｛（−Ｗ１）・Ｆ０＋Ｗ１・Ｆ１｝
＋｛（−Ｗ２）・Ｆ０＋Ｗ２・Ｆ２｝              ＜式１６＞
なる式が導ける。
【００５４】
ここで、＜式１６＞の右辺第２項（Ｔ５）および右辺第３項（Ｔ６）は、図８に示す＜式１２＞の関係を利用すれば、図１１に示すように、次のように変形することができる。
Ｔ５＝（−Ｗ１）・Ｆ０＋Ｗ１・Ｆ１
＝（−１＋２−ｍ＋Ｗbar１）・Ｆ０＋Ｗ１・Ｆ１
＝（−１＋２−ｍ）・Ｆ０＋Ｗbar１・Ｆ０＋Ｗ１・Ｆ１  ＜式１７＞
Ｔ６＝（−Ｗ２）・Ｆ０＋Ｗ２・Ｆ２
＝（−１＋２−ｍ＋Ｗbar２）・Ｆ０＋Ｗ２・Ｆ２
＝（−１＋２−ｍ）・Ｆ０＋Ｗbar２・Ｆ０＋Ｗ２・Ｆ２  ＜式１８＞
そこで、図１２に示すように、＜式１６＞に＜式１７＞および＜式１８＞を代入すれば、
Ｆ＝Ｆ０＋（−１＋２−ｍ）・Ｆ０＋Ｗbar１・Ｆ０＋Ｗ１・Ｆ１
＋（−１＋２−ｍ）・Ｆ０＋Ｗbar２・Ｆ０＋Ｗ２・Ｆ２
＜式１９＞
が得られる。これを整理すると、
Ｆ＝（−１＋２（−ｍ＋１））・Ｆ０
＋（Ｗbar１・Ｆ０＋Ｗ１・Ｆ１）
＋（Ｗbar２・Ｆ０＋Ｗ２・Ｆ２）                      ＜式２０＞
なる式が導かれる。ここでは、説明の便宜上、＜式２０＞の右辺第１項，第２項，第３項を、図示のとおり、項Ｔ７，Ｔ８，Ｔ９と呼ぶ。
【００５５】
以上、ｎ＝３の場合について、＜式１＞に＜式７＞を代入することにより＜式２０＞が導出されることを説明した。ｎが任意の場合についても、同様の方法により、＜式３＞に＜式８＞を代入することにより、
Ｆ＝｛１＋（−１＋２−ｍ）・（ｎ−１）｝・Ｆ０
＋（Ｗbar１・Ｆ０＋Ｗ１・Ｆ１）
＋（Ｗbar２・Ｆ０＋Ｗ２・Ｆ２）
＋（Ｗbar３・Ｆ０＋Ｗ３・Ｆ３）
・・・
＋（Ｗbarｎ−１・Ｆ０＋Ｗｎ−１・Ｆｎ−１）          ＜式２１＞
なる式が導出される（図１３参照）。上記＜式２０＞は、＜式２１＞にｎ＝３を代入することによって得られる式である。ここでは、説明の便宜上、＜式２１＞の右辺第１項のＦ０に対する乗算係数をＫと呼ぶ。
【００５６】
本発明に係る重み付き加算演算の特徴は、ｎ＝３の場合、図２の＜式１＞の代わりに図１２の＜式２０＞に基づいて関数値Ｆを求める演算を行い、ｎが任意の場合、図２の＜式３＞の代わりに図１３の＜式２１＞に基づいて関数値Ｆを求める演算を行う点にある。こうして求められた＜式２０＞や＜式２１＞は、数学的には、＜式１＞や＜式３＞と等価であるが、同じ変数についての反転論理を用いた積和演算項を含む点に大きな特徴がある。
【００５７】
たとえば、図１２の＜式２０＞の項Ｔ８は、「Ｗbar１・Ｆ０＋Ｗ１・Ｆ１」なる積和演算項であるが、変数「Ｗbar１」は変数「Ｗ１」の論理反転値であり、項Ｔ８は、互いに論理反転の関係にある２つの変数「Ｗbar１」，「Ｗ１」を含んだ積和演算項ということになる。このような積和演算項の演算は、§３で詳述するとおり、乗算を行う代わりに、セレクタ回路を利用した単純な電子回路を用いて実行することができる。同様に、＜式２０＞の項Ｔ９も「Ｗbar２・Ｆ０＋Ｗ２・Ｆ２」なる形の積和演算項であり、互いに論理反転の関係にある２つの変数「Ｗbar２」，「Ｗ２」を含んでいるため、セレクタ回路を利用した演算が可能である。
【００５８】
一方、図１３に示す＜式２１＞は、ｎが任意の場合に拡張した式であるが、ここでも、図の２行目以降に列挙した項は、やはり、互いに論理反転の関係にある２つの変数を含んだ積和演算項になっており、セレクタ回路を利用した演算が可能である。このような積和演算項を含む演算式を導くことができたのは、変数Ｗ０を、図６の＜式７＞や＜式８＞に示すように、他の重み変数Ｗ１，Ｗ２等の負項を含んだ式によって置き換えたためである。このような置き換えにより、たとえば、図１０に示す項Ｔ５やＴ６のように、変数Ｗ１，Ｗ２についての正項と負項とを含む積和演算項が生まれることになる。ここで、図８の＜式１２＞を利用して、負項を論理反転値を含む式に置き換えれば、＜式２０＞や＜式２１＞に示すような式が導出できる。
【００５９】
なお、図１２の＜式２０＞は、図２の＜式２＞を前提として成り立つ式であり、図１３の＜式２１＞は、図２の＜式４＞を前提として成り立つ式である。別言すれば、本発明に係る重み付き加算演算は、「重みの総和が１」という条件が成り立つことを前提として実施可能な演算ということになる。ただ、§１で述べた画像合成への応用例のように、実用上は、「重みの総和が１」という条件下で利用されるケースがほとんどであり、このような条件が課されていても、大きな問題は生じない。
【００６０】
＜＜＜  §３．  積和演算項へのセレクタ回路の適用  ＞＞＞
ここでは、図１４に示すように、
Ｓ＝Ｗbar・Ｘ＋Ｗ・Ｙ                                    ＜式２２＞
なる積和演算項を実際に演算する機能をもった積和演算部３０があったとしよう。ここで、Ｗ，Ｘ，Ｙは任意の変数であり、Ｗbarは変数Ｗの論理反転値であり、Ｓは求められる積和演算値である。この積和演算部３０は、与えられた３つの変数Ｗ，Ｘ，Ｙを入力して、積和演算値Ｓを出力する機能を有している。変数Ｗbarは、変数Ｗを構成する各ビットの論理を反転して得られるビット列として一義的に定義できる値であるため、積和演算部３０に入力する必要はない。
【００６１】
さて、ｎ＝３の場合に、この積和演算部３０を利用して、図１２の＜式２０＞に基づいて関数値Ｆを演算することを考えよう。この場合、図１５に示すような加算演算器により、関数値Ｆが得られることがわかる。ここで、関数値入力部４０は、演算対象となる関数値Ｆ０，Ｆ１，Ｆ２をデジタルデータとして入力する構成要素であり、重み入力部５０は、重みＷ１，Ｗ２をデジタルデータとして入力する構成要素である。本発明では、前述したとおり「重みの総和が１」という条件を前提とするため、重みＷ０の入力は不要である。関数値入力部４０および重み入力部５０で入力された各変数は、積和演算部３０（１），３０（２）および乗算演算部６０に与えられる。
【００６２】
積和演算部３０（１），３０（２）は、図１４に示す積和演算部３０と同等の機能をもった構成要素である。具体的には、積和演算部３０（１）は、与えられた３つの変数Ｗ１，Ｆ０，Ｆ１を入力して、積和演算値を出力する機能を有しており、図１４に示す積和演算部３０における変数Ｗ，Ｘ，Ｙとして、それぞれ変数Ｗ１，Ｆ０，Ｆ１を入力して演算を実行する。同様に、積和演算部３０（２）は、与えられた３つの変数Ｗ２，Ｆ０，Ｆ２を入力して、積和演算値を出力する機能を有しており、図１４に示す積和演算部３０における変数Ｗ，Ｘ，Ｙとして、それぞれ変数Ｗ２，Ｆ０，Ｆ２を入力して演算を実行する。
【００６３】
乗算演算部６０は、変数Ｆ０と乗算係数Ｋとの乗算を行う構成要素である。ここで、乗算係数Ｋは、Ｋ＝−１＋２（−ｍ＋１）で与えられる定数である（ｍは、変数Ｗのビット数として与えられる）。また、総和演算部７０は、積和演算部３０（１），３０（２）の演算結果と、乗算演算部６０の演算結果との総和を求め、関数値Ｆとして出力する構成要素である。
【００６４】
図１５に示す回路構成は、図１２の＜式２０＞に対応したものになっている。すなわち、＜式２０＞の項Ｔ７は、乗算演算部６０によって演算され、項Ｔ８は、積和演算部３０（１）によって演算され、項Ｔ９は、積和演算部３０（２）によって演算され、項Ｔ７〜Ｔ９の総和は、総和演算部７０によって演算されることになる。したがって、ｎ＝３の場合、本発明に係る重み付き加算演算器は、図１５に示す回路によって構成することができる。
【００６５】
図１６は、ｎが任意の場合について、本発明に係る重み付き加算演算器の構成を示すブロック図である。ここで、この図１６の回路構成は、図１３の＜式２１＞に対応したものになっている。すなわち、関数値入力部４０は、ｎ個の関数値Ｆ０〜Ｆｎ−１をデジタルデータとして入力する機能を果たし、重み入力部５０は、（ｎ−１）個の重みＷ１〜Ｗｎ−１をデジタルデータとして入力する機能を果たす。やはり「重みの総和が１」という条件を前提とするため、重みＷ０の入力は不要である。
【００６６】
図１３に示す＜式２１＞の１行目の項は、乗算演算部６０によって演算されることになる。この場合、Ｋ＝｛１＋（−１＋２−ｍ）・（ｎ−１）｝なる定数になる。また、＜式２１＞の２行目以降の項は、（ｎ−１）個の積和演算部３０（１）〜３０（ｎ−１）によって演算される。これらの積和演算部は、いずれも図１４に示す積和演算部３０と同等の機能をもった構成要素であり、一般に、第ｐ番目（ｐ＝１，２，... ，ｎ−１）の積和演算部３０（ｐ）は、図１４に示す積和演算部３０における変数Ｗ，Ｘ，Ｙとして、それぞれ変数Ｗｐ，Ｆ０，Ｆｐを入力して演算を実行する。より具体的には、第ｐ番目の積和演算部３０（ｐ）は、与えられた３つの変数Ｗｐ，Ｆ０，Ｆｐを入力して、積和演算値「Ｓｐ＝Ｗbarｐ・Ｆ０＋Ｗｐ・Ｆｐ」を出力する機能を有する。
【００６７】
乗算演算部６０の演算結果と、各積和演算部３０（１）〜３０（ｎ−１）の演算結果と、の総和は、総和演算部７０によって演算され、関数値Ｆとして出力される。したがって、ｎが任意の場合、本発明に係る重み付き加算演算器は、図１６に示す回路によって構成することができる。
【００６８】
続いて、図１４に示す積和演算部３０を、具体的な電子回路で構成することを考えてみる。まず、図１７(a) に示すように、０＜Ｗ＜１なる範囲をとる小数Ｗと、整数Ｘとの積Ｔ＝Ｗ・Ｘを考えよう。いま、図１７(b) に示すように、小数Ｗを、小数点以下ｍビットのデジタル値として、ビットｗ０〜ｗｍ−１を用いて、
Ｗ＝Σ i=0〜m-1 ｗｉ・２（ｉ−ｍ）                          ＜式１０＞
と表すことにする（図７(b) と同様の定義）。また、図１７(c) に示すように、整数Ｘを、ｒビットのデジタル値として、ビットｘ０〜ｘｒ−１を用いて、
Ｘ＝Σ j=0〜r-1 ｘｊ・２ｊ                                  ＜式２３＞
と表すことにする。
【００６９】
ここでは、理解を容易にするため、ｍ＝４，ｒ＝４という具体例に即した説明を行うことにしよう。この場合、小数Ｗおよび整数Ｘは、図１７(d) に示すように、それぞれ４ビットのデジタルデータとして表される。ここで、小数Ｗは、小数点以下の４ビットｗ０，ｗ１，ｗ２，ｗ３で表され、
Ｗ＝Σ i=0〜3 ｗｉ・２（ｉ−４）
である。一方、整数Ｘは、４ビットｘ０，ｘ１，ｘ２，ｘ３で表され、
Ｘ＝Σ j=0〜3 ｘｊ・２ｊ
である。
【００７０】
このように、ｍ＝４，ｒ＝４という具体例の場合、小数Ｗと、整数Ｘとの積Ｔ＝Ｗ・Ｘは、図１８に示すとおり、
Ｔ＝Ｗ・Ｘ
＝｛Σ i=0〜3 ｗｉ・２（ｉ−４）｝・｛Σ j=0〜3 ｘｊ・２ｊ｝
＝（ｗ０・２−４＋ｗ１・２−３＋ｗ２・２−２＋ｗ３・２−１）
×（ｘ０・２０＋ｘ１・２１＋ｘ２・２２＋ｘ３・２３）
＜式２４＞
なる式で与えられる。この＜式２４＞を展開すると、図１８の下段に示すように、積Ｔは、合計１６個の部分積項の総和として表される。結局、積Ｔは、ビットごとの部分積項の総和よって求まることになる。
【００７１】
図１９は、図１８に示すビットごとの積和演算の個々の部分積項を桁ごとに並べて示す表である。積Ｔの値は、この図１９の表の各欄に示されている部分積項について、桁を考慮した総和を求める演算によって得られることになる。
【００７２】
これに対して、図２０は、「Ｓ＝Ｗbar・Ｘ＋Ｗ・Ｙ」なる＜式２２＞の演算を行う際に必要な個々の部分積項を桁ごとに並べて示す表である。積「Ｗbar・Ｘ」を求めるために必要な部分積項は、積「Ｗ・Ｘ」を求めるための図１９に示す個々の部分積項のビットｗ０，ｗ１，ｗ２，ｗ３を、それぞれ反転ビットｗbar０，ｗbar１，ｗbar２，ｗbar３に置き換えることによって得られる。図２０の表の各欄の上段に示す部分積項は、このようにして得られたものである。一方、積「Ｗ・Ｙ」を求めるために必要な部分積項は、積「Ｗ・Ｘ」を求めるための図１９に示す個々の部分積項のビットｘ０，ｘ１，ｘ２，ｘ３を、それぞれビットｙ０，ｙ１，ｙ２，ｙ３に置き換えることによって得られる。図２０の表の各欄の下段に示す部分積項は、このようにして得られたものである。ここで、ビットｙ０，ｙ１，ｙ２，ｙ３は、整数Ｙを構成する各ビットである。
【００７３】
この図２０の表において、各欄の演算は、一見したところ、ビット同士の積和演算になっている。たとえば、表の右上に示されている２−４の桁の欄は、上段に「ｗbar０・ｘ０」なる積、下段に「ｗ０・ｙ０」なる積が示されており、当該欄の合計値は、数学的には、上段の積と下段の積との和を求めるビットごとの積和演算「ｗbar０・ｘ０＋ｗ０・ｙ０」によって得られる。しかしながら、このビットごとの積和演算処理を論理回路によって行う場合、セレクタ回路を用いた選択処理によって代行させることが可能である。
【００７４】
図２１は、一般的なセレクタ１００の機能を示す図である。このセレクタ１００は、２つのビットｘ，ｙと選択制御ビットｗとに基づいて、ビットｓを出力する機能を有している。ここで、ビットｘ，ｙは、選択対象としてセレクタに与えられる入力ビットであり、セレクタ１００内において、入力ビットｘ，ｙのいずれか一方が選択され、選択されたビットがビットｓとして出力される。選択制御ビットｗは、いずれを選択すべきかを制御するためのビットであり、図示の例の場合、ビットｗ＝０のとき、セレクタはビットｘを選択し、ｗ＝１のとき、セレクタはビットｙを選択する動作を行う。したがって、ｗ＝０のとき、出力ビットｓ＝入力ビットｘとなり、ｗ＝１のとき、出力ビットｓ＝入力ビットｙとなる。
【００７５】
このような機能をもったセレクタ１００は、ビットごとの積和演算処理に利用することができる。たとえば、図２０の表の右上に示されている変数Ｓの２−４の桁の欄は、上述したとおり、ビットごとの積和演算「ｗbar０・ｘ０＋ｗ０・ｙ０」によって得られるが、当該演算処理は、図２２(a) に示すように、セレクタ１０１による選択処理によって代行させることが可能である。このセレクタ１０１は、図２１に示すセレクタ１００と同じ論理回路であり、選択制御ビットｗ０の論理値に基づいて、入力ビットｘ０，ｙ０のいずれか一方を選択して、ビットｓ（−４）として出力する機能を有している。
【００７６】
ここで、ビットｓ（−４）は、変数Ｓの２−４の桁を示すビットであり、ビットごとの積和演算「ｗbar０・ｘ０＋ｗ０・ｙ０」によって得られる値になる。当該積和演算の結果が、セレクタ１０１による出力ビットｓ（−４）として与えられる理由は、選択制御ビットｗ０が０の場合と１の場合について、それぞれ出力ビットｓ（−４）の値がどうなるかを考えてみれば容易に理解できよう。
【００７７】
すなわち、ｗ０＝０の場合、図２２(a) に示すセレクタ１０１は、入力ビットｘ０を選択して、これをビットｓ（−４）として出力することになるので、ｓ（−４）＝ｘ０である。このときの積和演算「ｗbar０・ｘ０＋ｗ０・ｙ０」の結果は、ｗ０＝０、ｗbar０＝１から「１・ｘ０＋０・ｙ０」＝ｘ０となり、セレクタ１０１の出力ビットｓ（−４）と一致する。一方、ｗ０＝１の場合、図２２(a) に示すセレクタ１０１は、入力ビットｙ０を選択して、これをビットｓ（−４）として出力することになるので、ｓ（−４）＝ｙ０である。このときの積和演算「ｗbar０・ｘ０＋ｗ０・ｙ０」の結果は、ｗ０＝１、ｗbar０＝０から「０・ｘ０＋１・ｙ０」＝ｙ０となり、やはりセレクタ１０１の出力ビットｓ（−４）と一致する。
【００７８】
結局、図２０の表の右上に示されている変数Ｓの２−４の桁の欄に記載されているビットごとの積和演算「ｗbar０・ｘ０＋ｗ０・ｙ０」は、図２２(a) に示すセレクタ１０１による選択処理によって代行させることができる。
【００７９】
同様に、図２０の表の変数Ｓの２−３の桁に対応する第１行目の欄に記載されているビットごとの積和演算「ｗbar１・ｘ０＋ｗ１・ｙ０」は、図２２(b) に示すセレクタ１０２による選択処理によって代行させることができ、第２行目の欄に記載されているビットごとの積和演算「ｗbar０・ｘ１＋ｗ０・ｙ１」は、図２２(b) に示すセレクタ１０３による選択処理によって代行させることができる。よって、図２０の表の変数Ｓの２−３の桁の演算は、図２２(b) に示すように、セレクタ１０２，１０３の出力ビットの和を加算器２０１で求める電子回路によって実行することができる。ここで、加算器２０１の出力ビットｓ（−３）は、変数Ｓの２−３の桁に対応するビット値を示し、もし加算器２０１による加算の結果として桁上げが生じた場合には、キャリーｃとして上位桁（２−２の桁）のビットに加えられることになる。
【００８０】
このように、図２０の各欄に示すビットごとの積和演算は、いずれもセレクタ１００によって代行させることができるので、図１４に示す「Ｓ＝Ｗbar・Ｘ＋Ｗ・Ｙ」なる演算機能をもった積和演算部３０は、図２３に示すようなセレクタを用いた電子回路によって構成することが可能になる。この図２３において、符号１０１〜１１６で示す回路は、いずれも図２１に示すセレクタ１００と同じ回路である。また、符号２０１〜２０６で示す回路は、いずれも加算回路であり、ｃ２０１〜ｃ２０６は、それぞれ上位桁へのキャリーである。結局、図２３に楕円で示したビット出力ｓ（−４）〜ｓ（３）は、「Ｗbar・Ｘ＋Ｗ・Ｙ」なる式で示される積和演算値Ｓの各構成ビットになる。
【００８１】
図２３の電子回路は、セレクタと加算器によって構成されており、数学的には「Ｗbar・Ｘ＋Ｗ・Ｙ」なる積和演算を実行する回路でありながら、乗算器を含まない単純な構成となっている。このため、回路の実装規模は、乗算器を含む構成に比べて大幅に縮小される。また、演算時間も短縮され、高速化を図ることができる。
【００８２】
＜＜＜  §４．  本発明に係る具体的な重み付き加算演算器  ＞＞＞
§３で述べたように、図１５に示す電子回路は、図１２の＜式２０＞に対応したものになっており、ｎ＝３の場合の関数値Ｆを演算する機能をもっている。ここで、積和演算部３０（１），３０（２）は、図２３に示すように、セレクタと加算器を用いた電子回路によって構成することができる。一方、乗算演算部６０は、関数値Ｆ０と乗算係数Ｋとの積を求めることができる回路であれば、どのような回路で構成してもよい。同様に、総和演算部７０は、積和演算部３０（１），３０（２）の演算結果と乗算演算部６０の演算結果との和を求めることができる回路であれば、どのような回路で構成してもよい。
【００８３】
また、図１６に示す電子回路は、図１３の＜式２１＞に対応したものになっており、ｎが任意の場合の関数値Ｆを演算する機能をもっている。ここでも、積和演算部３０（１）〜３０（ｎ−１）は、図２３に示すように、セレクタと加算器を用いた電子回路によって構成することができる。乗算演算部６０と総和演算部７０とが、任意の回路で構成できる点は図１５に示す電子回路の場合と同様である。
【００８４】
図５に示す従来の重み付き加算演算器と、図１６に示す本発明に係る重み付き加算演算器とを比較すると、前者は、ｎ個の乗算器１０（０）〜１０（ｎ−１）と１個の加算器２０とによって構成されているのに対し、後者は、１つの乗算演算部６０と、（ｎ−１）個の積和演算部３０（１）〜３０（ｎ−１）と、１個の総和演算部（加算器）７０と、によって構成されていることになる。ここで、後者における個々の積和演算部３０（１）〜３０（ｎ−１）は、図２３に示すように、セレクタと加算器によって構成することができるので、乗算器に比べて回路の実装規模は大幅に縮小できる。
【００８５】
ここでは、本発明に係る重み付き加算演算器によるビットごとの演算がどのようになるかを、もう少し詳しく見てみよう。図１６に示す加算演算器では、関数値入力部４０によって、ｎ通りの関数値Ｆ０〜Ｆｎ−１が入力され、重み入力部５０によって、（ｎ−１）通りの重みＷ１〜Ｗｎ−１が入力される。
【００８６】
そこで、図２４(a) に示すように、０＜Ｗｐ＜１の範囲をとる第ｐ番目（０≦ｐ≦ｎ−１）の重みＷｐを、小数点以下ｍビットのデジタル値として、ビットｗｐ０〜ｗｐ（ｍ−１）を用いて表すと、
Ｗｐ＝Σ i=0〜m-1 ｗｐｉ・２（ｉ−ｍ）                    ＜式２５＞
になる。また、図２４(b) に示すように、正の整数値をとる第ｐ番目（０≦ｐ≦ｎ−１）の関数値Ｆｐを、ｒビットのデジタル値として、ビットｆｐ０〜ｆｐ（ｒ−１）を用いて表すと、
Ｆｐ＝Σ j=0〜r-1 ｆｐｊ・２ｊ                            ＜式２６＞
になる。
【００８７】
ここで、具体的に、ｍ＝４、ｒ＝４の場合を考えれば、図２４(c) に示すように、
Ｗｐ＝Σ i=0〜3 ｗｐｉ・２（ｉ−４）                      ＜式２７＞
Ｆｐ＝Σ j=0〜3 ｆｐｊ・２ｊ                              ＜式２８＞
になり、Ｗｐは、図示のとおり、ｗｐ０，ｗｐ１，ｗｐ２，ｗｐ３という４ビットのデータ（小数点以下の桁）によって表され、Ｆｐは、図示のとおり、ｆｐ０，ｆｐ１，ｆｐ２，ｆｐ３という４ビットのデータによって表される。
【００８８】
特に、ｎ＝３の場合を考え、ｎ＝３、ｍ＝４、ｒ＝４とすれば、図２５(a) に示すとおり、
Ｆ＝Ｗ０・Ｆ０＋Ｗ１・Ｆ１＋Ｗ２・Ｆ２                    ＜式１＞
という重み付き加算演算式において、右辺の各項は、次のようになる。
Ｗ０＝１−（Ｗ１＋Ｗ２）                                  ＜式２９＞
Ｗ１＝Σ i=0〜3 ｗ１ｉ・２（ｉ−４）
＝Ｗ１０・２−４＋ｗ１１・２−３＋ｗ１２・２−２＋ｗ１３・２−１
＜式３０＞
Ｗ２＝Σ i=0〜3 ｗ２ｉ・２（ｉ−４）
＝Ｗ２０・２−４＋ｗ２１・２−３＋ｗ２２・２−２＋ｗ２３・２−１
＜式３１＞
Ｆ０＝Σ j=0〜3 ｆ0ｊ・２ｊ
＝ｆ００・２０＋ｆ０１・２１＋ｆ０２・２２＋ｆ０３・２３
＜式３２＞
Ｆ１＝Σ j=0〜3 ｆ１ｊ・２ｊ
＝ｆ１０・２０＋ｆ１１・２１＋ｆ１２・２２＋ｆ１３・２３
＜式３３＞
Ｆ２＝Σ j=0〜3 ｆ２ｊ・２ｊ
＝ｆ２０・２０＋ｆ２１・２１＋ｆ２２・２２＋ｆ２３・２３
＜式３４＞
また、図２５(b) に示すとおり、図１２の＜式２０＞より、
Ｆ＝Ｔ７＋Ｔ８＋Ｔ９
Ｔ７＝（−１＋２−３）・Ｆ０
Ｔ８＝（Ｗbar１・Ｆ０＋Ｗ１・Ｆ１）
Ｔ９＝（Ｗbar２・Ｆ０＋Ｗ２・Ｆ２）                      ＜式３５＞
である。
【００８９】
ここで、Ｔ７には、関数値Ｆ０についての負項が含まれているが、最終的に総和を求める際に減算を避け、単純な加算器のみを用いた演算を行うことができるように、この負項の取り扱いを避けることを考える。そこで、図２６に示すとおり、ｘ０，ｘ１，ｘ２，ｘ３なる４ビットによって表現される整数Ｘと、これらの各ビットの論理反転ビットｘbar０，ｘbar１，ｘbar２，ｘbar３によって表現される整数Ｘbarを定義する。ここで、
Ｘ＝Σ j=0〜3 ｘｊ・２ｊ
であり、
Ｘbar＝Σ j=0〜3 ｘbarｊ・２ｊ
である。
【００９０】
この場合、
−Ｘ＝−Σ j=0〜3 ｘｊ・２ｊ
＝−２４＋１＋Σ j=0〜3 ｘbarｊ・２ｊ
となるので、
−Ｘ＝−２４＋１＋Ｘbar                                  ＜式３６＞
が成り立つ（必要なら、後述する図５２の＜式８０＞を参照）。
【００９１】
この＜式３６＞は、−ＸをＸbarを用いた式で置き換えることができることを意味する。たとえば、Ｘ＝「１００１」（１０進の「９」）の場合、Ｘbarは、「１００１」の各ビットを反転した「０１１０」（１０進の「６」）である。この場合、両者の関係は、−９＝−２４＋１＋６となり、＜式３６＞を満たしている。
【００９２】
そこで、この＜式３６＞を利用して、Ｔ７を変形すれば、図２７の上段に示すように、
Ｔ７＝−２４＋Ｆbar０＋１＋２−３・Ｆ０                  ＜式３７＞
が得られる。したがって、図２５の＜式３５＞から、図２７の下段に示すように、
Ｆ＝−２４＋Ｆbar０＋１＋２−３・Ｆ０
＋（Ｗbar１・Ｆ０＋Ｗ１・Ｆ１）
＋（Ｗbar２・Ｆ０＋Ｗ２・Ｆ２）                      ＜式３８＞
が得られる。
【００９３】
図２８は、図２７に示す＜式３８＞に基づいて関数値Ｆを求める際に必要な個々の演算項を桁ごとに並べて示す表である。この図２８の表において、左端に示す見出しＴ７，Ｔ８，Ｔ９は、＜式３８＞の右辺第１行目をＴ７、第２行目をＴ８、第３行目をＴ９としたときの対応する演算項を示すものである。
【００９４】
たとえば、＜式３８＞のＴ７の先頭にある「−２４」なる項は、図２８の表のＴ７欄の第１行目の２４の欄に「−１」として掲載されている（なお、§６で詳述するように、この＊印を付した欄は、実際の演算では無視することができる）。また、＜式３８＞のＴ７の「＋Ｆbar０」なる項は、図２８の表のＴ７欄の第２行目の４つの対応する桁の欄に、「ｆbar０３」，「ｆbar０２」，「ｆbar０１」，「ｆbar００」として掲載されており、＜式３８＞のＴ７の「＋１」なる項は、図２８の表のＴ７欄の第３行目の２０の欄に「１」として掲載されている。更に、＜式３８＞のＴ７の「２−３・Ｆ０」なる項は、図２８の表のＴ７欄の第４行目の４つの対応する桁の欄に、「ｆ０３」，「ｆ０２」，「ｆ０１」，「ｆ００」として掲載されている。
【００９５】
一方、図２８の表のＴ８欄には、図２７の＜式３８＞のＴ８の積和演算「Ｗbar１・Ｆ０＋Ｗ１・Ｆ１」に対応するビットごとの部分積項が掲載されており、図２８の表のＴ９欄には、図２７の＜式３８＞のＴ９の積和演算「Ｗbar２・Ｆ０＋Ｗ２・Ｆ２」に対応するビットごとの部分積項が掲載されている。これらの各欄に、このような部分積項が掲載される理由は、図２０の表に、「Ｗbar・Ｘ＋Ｗ・Ｙ」なる積和演算値Ｓに対応するビットごとの部分積項が掲載される理由を考えれば、容易に理解できよう。すなわち、Ｔ８は、図２０に示す「Ｓ＝Ｗbar・Ｘ＋Ｗ・Ｙ」なる式において、ＷをＷ１に置き換え、ＸをＦ０に置き換え、ＹをＦ１に置き換えたものに対応し、Ｔ９は、図２０に示す「Ｓ＝Ｗbar・Ｘ＋Ｗ・Ｙ」なる式において、ＷをＷ２に置き換え、ＸをＦ０に置き換え、ＹをＦ２に置き換えたものに対応する。
【００９６】
結局、この図２８の表に掲載された個々の演算項の総和を、桁を考慮して求める演算は、ｎ＝３，ｍ＝４，ｒ＝４の場合について、
Ｆ＝Ｗ０・Ｆ０＋Ｗ１・Ｆ１＋Ｗ２・Ｆ２                    ＜式１＞
Ｗ０＋Ｗ１＋Ｗ２＝１                                      ＜式２＞
なる基本演算式を用いた演算と等価になる。
【００９７】
ここで、図２８の表において、太線で囲った欄に着目すると、これらの欄に掲載されているビットごとの積和演算は、いずれも図２１のセレクタ１００によって実現できることがわかる。たとえば、Ｔ８欄の第１行目の２−４の桁の欄には、「ｗbar１０・ｆ００＋ｗ１０・ｆ１０」というビットごとの積和演算が掲載されているが、当該演算は、ビットｆ００とビットｆ１０とを入力ビットとし、ｗ１０を選択制御ビットとするセレクタ１００によって代行することができる。結局、図２８の表におけるＴ８欄の演算は、図２３に示す電子回路に準じた回路によって実行することが可能であり、同様に、図２８の表におけるＴ９欄の演算も、図２３に示す電子回路に準じた回路によって実行することが可能である。
【００９８】
＜＜＜  §５．  本発明に係る重み付き加算演算器の本質的特徴  ＞＞＞
ここでは、本発明に係る重み付き加算演算器の本質的特徴を、図２９を参照しながら、ｎ，ｍ，ｒが任意の値をとる場合に拡張した一般論で説明する。はじめに、本発明の説明に用いる符号の意味を整理しておく。まず、符号ｎは、加算対象となる関数値の数であり、符号ｐは、このｎ個の関数値の番号を示すパラメータである。本発明は、３個以上の関数値の加算演算を行うことを前提とするものであるので、ｎ≧３ということになる。また、パラメータｐは、初値を０とするため、ｐ＝０，１，２，... ，ｎ−１である。
【００９９】
したがって、本発明に係る重み付き加算演算器は、複数ｎ通りの関数値Ｆｐと複数ｎ通りの重みＷｐに基づいて（但し、ｎ≧３、ｐ＝０，１，２，... ，ｎ−１）、関数値Ｆ＝Σ p=0〜n-1 （Ｗｐ・Ｆｐ）の値を、「０≦Ｗｐ≦１」および「Σ p=0〜n-1 Ｗｐ＝１」なる条件下で演算する機能をもった装置ということになる。
【０１００】
本発明に係る重み付き加算演算器は、既に述べたとおり、図１６に示す各構成要素からなる。ここで、関数値入力部４０は、複数ｎ通りの関数値Ｆｐ（但し、ｐ＝０，１，２，... ，ｎ−１）のそれぞれを、合計ｒビットのビット列データとして入力する。より具体的に言えば、関数値入力部４０は、関数値Ｆｐ（但し、ｐ＝０，１，２，... ，ｎ−１）を、Ｆｐ＝Σ j=0〜r-1 （ｆｐｊ・２ｊ）なる式を満たす、最上位ビット側から順に、ｆｐ（ｒ−１），ｆｐ（ｒ−２），... ，ｆｐ１，ｆｐ０なる合計ｒビットのデータとして入力する。
【０１０１】
一方、重み入力部５０は、複数（ｎ−１）通りの重みＷｐ（但し、ｐ＝１，２，... ，ｎ−１）のそれぞれを、合計ｍビットのビット列データとして入力する。より具体的に言えば、重み入力部５０は、重みＷｐ（但し、ｐ＝１，２，... ，ｎ−１）を、Ｗｐ＝Σ i=0〜m-1 （ｗｐｉ・２（ｉ−ｍ））なる式を満たす、最上位ビット側から順に、ｗｐ（ｍ−１），ｗｐ（ｍ−２），... ，ｗｐ１，ｗｐ０なる合計ｍビットのデータとして入力する。
【０１０２】
したがって、符号ｒは、関数値Ｆｐの構成ビット数であり、符号ｍは、重みＷｐの構成ビット数である。実際の演算プロセスでは、重みＷｐは「０＜Ｗｐ＜１」の範囲をとる小数として取り扱われるため、重みＷｐを構成するｍビットは、小数点以下の桁を示すビットになる。
【０１０３】
本発明における重み付き加算演算の基本演算式は、図２９(a) に示すとおり、
Ｆ＝Ｗ０・Ｆ０＋Ｗ１・Ｆ１＋Ｗ２・Ｆ２＋ ... ＋Ｗｎ−１・Ｆｎ−１
（すなわち、Ｆ＝Σ p=0〜n-1 （Ｗｐ・Ｆｐ））              ＜式３＞
であり、第０番目（ｐ＝０）の重みＷ０も考慮した演算が行われることになる。ただ、既に述べたとおり、本発明では、「Σ p=0〜n-1 Ｗｐ＝１」なる条件（重みの総和が１という条件）を前提とするため、重みＷ０の値は入力する必要はなく、実際の演算プロセスにおいても、重みＷ０の値が直接的に用いられることはない。
【０１０４】
なお、符号ｉは、重みＷｐを構成するｍビットのうちの１つのビットを示すパラメータであり、０≦ｉ≦ｍ−１の範囲をとる。したがって、重みＷｐは、個々のビットｗｐｉの総和として、図２９(a) に示すとおり、
Ｗｐ＝Σ i=0〜m-1 ｗｐｉ・２（ｉ−ｍ）                    ＜式２５＞
なる式で表される。
【０１０５】
一方、符号ｊは、関数値Ｆｐを構成するｒビットのうちの１つのビットを示すパラメータであり、０≦ｊ≦ｒ−１の範囲をとる。したがって、関数値Ｆｐは、個々のビットｆｐｊの総和として、図２９(a) に示すとおり、
Ｆｐ＝Σ j=0〜r-1 ｆｐｊ・２ｊ                            ＜式２６＞
なる式で表される。
【０１０６】
また、符号ｐは、上述したとおり、ｎ個の関数値の番号を示すパラメータであり、０≦ｐ≦ｎ−１の範囲をとる。上述したとおり、重みの総和が１という条件から、図２９(a) に示すとおり、
Ｗ０＝１−Σ p=1〜n-1 Ｗｐ                              ＜式３９＞
が成り立ち、この＜式３９＞を＜式３＞に代入して変形することにより、本発明の特徴となる図１３の＜式２１＞が導出できることは既に述べたとおりある。この＜式２１＞をΣ記号を用いて表すと、図２９(b) に示すとおり、
Ｆ＝｛１＋（−１＋２−ｍ）・（ｎ−１）｝・Ｆ０
＋Σ p=1〜n-1 （Ｗbarｐ・Ｆ０＋Ｗｐ・Ｆｐ）        ＜式４０＞
なる式が得られる。
【０１０７】
本発明の重要な特徴は、関数値Ｆを求める実際の演算を、この＜式４０＞に基づいて行う点である。図１６に示す演算器において、乗算演算部６０は、この＜式４０＞の右辺第１項を演算する機能を果たす。ただ、乗算演算部６０は、本発明の特徴的な構成要素ではないので、どのような電子回路によって構成してもかまわないし、この右辺第１項の代わりに、これと数学的に等価な式に基づく演算を採用してもよい。本発明の特徴は、＜式４０＞の右辺第２項を演算するために「Ｗbarｐ・Ｆ０＋Ｗｐ・Ｆｐ」なる積和演算（但し、ｐ＝１，２，... ，ｎ−１）を行うために、図１６に示すように、（ｎ−１）個の積和演算部３０（１）〜３０（ｎ−１）を設けた点にある。
【０１０８】
図２９(b) に示すとおり、この「Ｗbarｐ・Ｆ０＋Ｗｐ・Ｆｐ」なる積和演算項をビットごとに展開した式には、「ｗbarｐｉ・ｆ０ｊ＋ｗｐｉ・ｆｐｊ」なるビットごとの積和演算項が含まれている。そこで、これら（ｎ−１）個の積和演算部に、Ｗbarｐを構成する第ｉ番目のビットｗbarｐｉと、Ｗｐを構成する第ｉ番目のビットｗｐｉと、Ｆ０を構成する第ｊ番目のビットｆ０ｊと、Ｆｐを構成する第ｊ番目のビットｆｐｊと、を用いて、「ｗbarｐｉ・ｆ０ｊ＋ｗｐｉ・ｆｐｊ」なる積和演算項を求めるために、ビットｆ０ｊおよびビットｆｐｊを入力とし、ビットｗｐｉの論理値に基づいて、入力したビットのいずれか一方を選択して出力するセレクタを組み込むようにする。
【０１０９】
このように、「ｗbarｐｉ・ｆ０ｊ＋ｗｐｉ・ｆｐｊ」なる積和演算項の演算処理をセレクタによる選択処理で代行させることにより、回路の実装規模を縮小させる効果が得られることは、既に述べたとおりである。もちろん、実用上は、（ｎ−１）個の積和演算部のすべてについて、「ｗbarｐｉ・ｆ０ｊ＋ｗｐｉ・ｆｐｊ」なる積和演算項のすべての演算処理をセレクタによって実行させるようにするのが好ましい。ただ、理論上は、少なくとも一部の積和演算部について、少なくとも一部の積和演算項の演算処理をセレクタによって実行させるようにすれば、当該積和演算項の演算処理部分に関して、回路の実装規模を縮小する効果を得ることができる。
【０１１０】
図２９(b) に示すように、積和演算項「ｗbarｐｉ・ｆ０ｊ＋ｗｐｉ・ｆｐｊ」を、パラメータｉ，ｊを省略して一般化して記述すると、「ｗbarｐ・ｆ０＋ｗｐ・ｆｐ」という構成になる。ビットごとの積和演算処理をセレクタによるビット選択処理で代行させることができるのは、この一般化した積和演算項「ｗbarｐ・ｆ０＋ｗｐ・ｆｐ」の構造にある。すなわち、「ｗbarｐ」と「ｆ０」との積と、「ｗｐ」と「ｆｐ」との積と、の和、という構造を有しているため、「ｗbarｐ」および「ｗｐ」という相互に反転したビットの組み合わせを利用して、セレクタによる演算を可能にしているのである。
【０１１１】
結局、本発明に係る重み付き加算演算器の本質的特徴は、図１６に示す（ｎ−１）個の積和演算部３０（１）〜３０（ｎ−１）の一部もしくは全部に、Ｗbarｐを構成する所定ビットｗbarｐと、Ｗｐを構成する所定ビットｗｐと、Ｆ０を構成する所定ビットｆ０と、Ｆｐを構成する所定ビットｆｐと、を用いて、「ｗbarｐ・ｆ０＋ｗｐ・ｆｐ」なる積和演算項を求めるために、ビットｆ０およびビットｆｐを入力とし、ビットｗｐの論理値に基づいて、入力したビットのいずれか一方を選択して出力するセレクタを組み込むこと、ということができる。
【０１１２】
なお、本発明に係る重み付き加算演算器では、図１６に示すとおり、乗算演算部６０の演算結果と（ｎ−１）個の積和演算部３０（１）〜３０（ｎ−１）の演算結果との総和を求める演算を行い、演算結果を関数値Ｆの値として出力する総和演算部７０が必要になるが、この総和演算部７０は、従来から利用されている一般的な加算器によって構成すれば足りる。
【０１１３】
本発明に係る重み付き加算演算器は、たとえば、図３に例示したような画像合成処理を実行する画像合成装置への利用に適している。これまで述べてきた実施形態に係る重み付き加算演算器を用いれば、複数ｎ枚の画像をそれぞれの重みＷｐ（但し、ｐ＝０，１，２，... ，ｎ−１）を考慮して合成し、合成画像を作成する画像合成装置を構成することができる。この場合、図３に示す例のように、各画像を示すデータとして、二次元座標値（ｇ，ｈ）で示される位置に配置された画素の画素値Ｆｐ（ｇ，ｈ）を、重み付き加算演算器に関数値Ｆｐとして取り込み、重みＷｐを用いて、この重み付き加算演算器により演算された関数値Ｆを、合成画像上の二次元座標値（ｇ，ｈ）で示される位置に配置された画素の画素値Ｆ（ｇ，ｈ）とすることにより、合成画像を示すデータを作成すればよい。
【０１１４】
＜＜＜  §６．  負項の排除と最上位ビットの演算省略  ＞＞＞
本発明に係る具体的な重み付き加算演算器として、§４では、図２８の表に基づいて、各欄の演算項の総和を求める回路構成を説明した。この表において、左上に配置されている＊印を付した欄、すなわち、第１行目の２４の欄には、「−１」と記載があるが、既に述べたとおり、この欄の数値「−１」は、実際の演算では無視することができる。これは、個々の関数値や個々の重みの値がどのような値であっても、２３以下の演算を行うと、必ず、２３の桁から２４桁に対して、「１」が桁上げされるため、＊印の欄の「−１」は、桁上げされてきた「１」との加算によって相殺されることになるからである。
【０１１５】
すなわち、２３の桁以下の演算結果がどのようなものであっても、数学的には、２３の桁から２４桁に対して、「１」の桁上げが必ず生じることになる。このため、図２８の表に基づいて、各欄の数値を、その桁を考慮して加算し、総和を求めたとしても、２４の桁は必ず０になる。したがって、実用上は、図２７の＜式３８＞によって定義される関数値Ｆの最上位ビットである２４の桁に関しては、演算を行う必要はなく、回路構成上も、２４の桁に関する演算要素を設ける必要はない。
【０１１６】
要するに、これまで述べてきた実施形態において、用いる演算式（ｎが任意の場合は、図２９に示す＜式４０＞）で定義される関数値Ｆの最上位ビットに関する演算は、これを省略することが可能であり、当該ビットに関する演算要素は、実用上、設ける必要はない。
【０１１７】
以下、その理由を、数学的に簡単に説明しておく。いま、図３０(a) に示すように、重みＷ（０＜Ｗ＜１）を、小数点以下４ビットのデジタル値として、ビットｗ０〜ｗ３を用いて表すと、図示のとおり、２−４の桁から２−１の桁に至るまで、４個のビット列として表される。この場合、図３０(b) に示すように、「１０００」なるビット列は「１／２」を示すことになるので、もしＷ＜１／２であれば、２−１の桁は常に０である。同様に、「０１００」なるビット列は「１／４」を示すことになるので、もしＷ＜１／４であれば、２−１および２−２の桁は常に０である。
【０１１８】
ここで、図３０(c) に示すように、ｎ＝３，ｍ＝４の場合について、３つの重みＷ０，Ｗ１，Ｗ２を、Ｗ０≧Ｗ１≧Ｗ２≠０を満たすように定めたとすると（すなわち、便宜上、重みを大きい順にＷ０，Ｗ１，Ｗ２と呼んだとすると）、
Ｗ０＜１
Ｗ１＜１／２
Ｗ２＜１／３              ＜式４１＞
が成り立つ。よって、Ｗ１，Ｗ２の２−１の桁は常に０である。
【０１１９】
一般に、ｎ≧３の場合に、第ｐ番目（ｐ≧１）の重みＷｐを小数点以下ｍ桁のビット列で表したとすると、図３１(a) に示すように、ｍ桁のうちの左側のｋ桁のビットは常に０になり、残りの（ｍ−ｋ）桁のビットによって、重みＷｐの値が決定されることになる。上述した＜式４１＞によれば、ｐ≧１の場合、すなわち、重みＷ１以降については、ｋは少なくとも１になり、ｍ桁のビット列のうちの一番左側のビットは必ず０になる。重みＷｐを大きい順にＷ０，Ｗ１，Ｗ２，... と定義した場合、「常に値が０になるビット」の桁数ｋは、ｐの値が大きくなればなるほど大きくなる。
【０１２０】
結局、重みＷｐの数値を決定するために意味のあるビットは、図３１(a) において、＊印で示した右側の（ｍ−ｋ）桁のビットだけであり、左側のｋ桁のビットは、単に位取りの桁合わせに使われているだけである。したがって、図３１(b) に示すとおり、重みＷｐを定義するために、これまで用いてきた
Ｗｐ＝Σ i=0〜m-1 ｗｐｉ・２（ｉ−ｍ）                  ＜式２５＞
なる式の代わりに、
Ｕｐ＝Σ i=0〜(m-k)-1 ｕｐｉ・２（ｉ−ｍ）                ＜式４２＞
を用いることができる。ここで、Ｕｐは、重みＷｐを別な表現形式で定義したものであり、ｕｐは、Ｕｐを構成する各ビットである。
【０１２１】
両式の相違点は、＜式２５＞では、ビットｗｐ０〜ｗｐ（ｍ−１）まで、ｍ桁のビットすべてについての和が求められているのに対して、＜式４２＞では、ビットｕｐ０〜ｕｐ（ｍ−ｋ−１）まで、（ｍ−ｋ）桁のビットのみについての和が求められている点である。ビットｕｐとビットｗｐとは、全く同一の対象を表しているが、ここでは説明の便宜上、＜式２５＞では符号ｗを用い、＜式４２＞では符号ｕを用いて区別している。要するに、図３１(a) に示す同一のビット列について、＜式２５＞に示すＷｐは、全ｍ桁の和として与えられる数値になり、＜式４２＞に示すＵｐは、（ｍ−ｋ）桁の部分（＊印のビット）のみの和として与えられる数値になる。左側ｋ桁の部分のビットが常に０であれば、Ｗｐ＝Ｕｐであるから、＜式２５＞の代わりに＜式４２＞を用いることができる。
【０１２２】
そこで、ｎ＝３の場合について、図１０で導出した
Ｆ＝Ｆ０＋｛（−Ｗ１）・Ｆ０＋Ｗ１・Ｆ１｝
＋｛（−Ｗ２）・Ｆ０＋Ｗ２・Ｆ２｝              ＜式１６＞
なる式を考える。この＜式１６＞について、重みＷ１を重みＵ１に、重みＷ２を重みＵ２に、それぞれ置き換えれば、図３２に示すように、
Ｆ′＝Ｆ０＋｛（−Ｕ１）・Ｆ０＋Ｕ１・Ｆ１｝
＋｛（−Ｕ２）・Ｆ０＋Ｕ２・Ｆ２｝              ＜式４３＞
なる式が得られる。なお、＜式４３＞では、便宜上、ＦをＦ′に置き換えて区別することにする（上述したとおり、Ｗｐ＝Ｕｐであるから、Ｆ＝Ｆ′である）。また、右辺第２項を項Ｔ１０とし、右辺第３項を項Ｔ１１とする。
【０１２３】
ここで、＜式４２＞に示すＵｐに対して、−Ｕｐの値を求めてみる。便宜上、パラメータ「ｐ」を省略して、重みＵと−Ｕとの関係を考えてみよう。図３３に示すとおり、
Ｕ＝Σ i=0〜(m-k)-1 ｕｉ・２（ｉ−ｍ）                    ＜式４４＞
になる。したがって、重みＵに対して、負符号を付した「−Ｕ」は、
−Ｕ＝−Σ i=0〜(m-k)-1 （ｕｉ・２（ｉ−ｍ））
＝Σ i=0〜(m-k)-1 （−ｕｉ・２（ｉ−ｍ））
である。この式の右辺に、図３３の５行目に示すように、「＋２（ｉ−ｍ）−２（ｉ−ｍ）」なる項を付加して整理すれば、図３３の６行目に示す式を経て、７行目の式を導くことができる。ここで、第１項をＴ１２，第２項をＴ１３とすれば、Ｔ１２をＴ１４に置き換え、Ｔ１３をＴ１５に置き換えることにより、８行目の式を得ることができ、Ｔ１４をＵbarと書き換えれば、９行目の式を導くことができる。
【０１２４】
上記変形において、Ｔ１２からＴ１４への置換は、図７の＜式１１＞に基づくものであり、＜式４４＞の定義を利用すれば、Ｔ１４は更にＵbarと書き換えることができる。一方、Ｔ１３からＴ１５への置換は、図９に示す数学的論理を利用したものである。
【０１２５】
既に述べたとおり、重みＷ１以降については、ｋは少なくとも１になり、ｍ桁のビット列のうちの一番左側のビットは必ず０になる。そこで、ｋ＝１とすれば、
Σ i=(m-k)〜(m-1) ２（ｉ−ｍ）＝２−１
であるから、図３３の最下行に示すとおり、
−Ｕ＝−１／２＋２−ｍ＋Ｕbar                            ＜式４５＞
なる関係式が得られる。
【０１２６】
続いて、図３２に示す＜式４３＞の右辺第２項（Ｔ１０）および右辺第３項（Ｔ１１）を、上記＜式４５＞の関係を利用して変形すると、図３４に示すとおり、
Ｔ１０＝（−Ｕ１）・Ｆ０＋Ｕ１・Ｆ１
＝（−１／２＋２−ｍ＋Ｕbar１）・Ｆ０＋Ｕ１・Ｆ１
＝（−１／２＋２−ｍ）・Ｆ０＋Ｕbar１・Ｆ０＋Ｕ１・Ｆ１
＜式４６＞
Ｔ１１＝（−Ｕ２）・Ｆ０＋Ｕ２・Ｆ２
＝（−１／２＋２−ｍ＋Ｕbar２）・Ｆ０＋Ｕ２・Ｆ２
＝（−１／２＋２−ｍ）・Ｆ０＋Ｕbar２・Ｆ０＋Ｕ２・Ｆ２
＜式４７＞
が得られる。
【０１２７】
そこで、図３２に示す＜式４３＞のＴ１０，Ｔ１１に、上記＜式４６＞および＜式４７＞を代入すれば、図３５に示すように、
Ｆ′＝Ｆ０＋（−１／２＋２−ｍ）・Ｆ０＋Ｕbar１・Ｆ０＋Ｕ１・Ｆ１
＋（−１／２＋２−ｍ）・Ｆ０＋Ｕbar２・Ｆ０＋Ｕ２・Ｆ２
が得られる。これを整理すると、
Ｆ′＝２（−ｍ＋１）・Ｆ０
＋（Ｕbar１・Ｆ０＋Ｕ１・Ｆ１）
＋（Ｕbar２・Ｆ０＋Ｕ２・Ｆ２）                      ＜式４８＞
なる式が導かれる。ここでは、説明の便宜上、＜式４８＞の右辺第１項，第２項，第３項を、図示のとおり、項Ｔ１６，Ｔ１７，Ｔ１８と呼ぶ。
【０１２８】
さて、上記＜式４８＞を、図１２の＜式２０＞と比較してみよう。前述したとおり、ＵｐとＷｐとは、便宜上、異なる符号を用いて示したが、実際には同じ値であるから、図３５の＜式４８＞に示すＴ１７，Ｔ１８は、図１２の＜式２０＞に示すＴ８，Ｔ９と等価である。一方、ＦとＦ′も、便宜上、異なる符号を用いて示しただけであるから、実際には同じ値である。結局、Ｔ１６はＴ７と等価になる。すなわち、図３５に示す＜式４８＞と図１２に示す＜式２０＞とは、数学的には等価な内容を、異なる形式で表現したものということができる。
【０１２９】
Ｔ７の「（−１＋２（−ｍ＋１））・Ｆ０」なる項は、Ｔ１６では「２（−ｍ＋１）・Ｆ０」なる項に置き換えられており、負項「−１」が生じていないことがわかる。このＴ１６をビットごとに展開した演算では、図２８に＊印で示した欄の「−１」は発生しない。
【０１３０】
図３６には、図３０に示す前提条件において導出された、ｎ，ｍが任意の場合の関数値Ｆ′の演算式
Ｆ′＝（ｎ−１）・２−ｍ・Ｆ０
＋Σ p=1〜n-1 （Ｕbarｐ・Ｆ０＋Ｕｐ・Ｆｐ）        ＜式４９＞
が示されている。ここでは、この＜式４９＞の導出プロセスの説明は省略するが、上述した＜式４８＞の導出プロセスと同じ考え方で導くことができる。この＜式４９＞を図２９の＜式４０＞と比較すると、やはり、関数値Ｆ０に対する乗算係数「１＋（−１＋２−ｍ）・（ｎ−１）」が、「（ｎ−１）・２−ｍ」に置き換えられており、最上位ビットの負項「−１」が生じていないことがわかる。結局、図２９に示す＜式４０＞で定義される関数値Ｆの最上位ビットに関する演算は、これを省略することが可能であり、当該ビットに関する演算要素は、実用上、設ける必要がないことがわかる。
【０１３１】
本発明の基本原理は、
Ｆ＝｛１＋（−１＋２−ｍ）・（ｎ−１）｝・Ｆ０
＋Σ p=1〜n-1 （Ｗbarｐ・Ｆ０＋Ｗｐ・Ｆｐ）        ＜式４０＞
なる基本演算式に基づく演算を行うことにあるが、この＜式４０＞の代わりに、これと数学的に等価な等価演算式に基づく演算を行うようにしてもかまわない。本発明に固有の作用効果は、「Ｗbarｐ・Ｆ０＋Ｗｐ・Ｆｐ」なる積和演算項の演算をセレクタを利用して行うことによって得られる。したがって、「Ｗbarｐ・Ｆ０＋Ｗｐ・Ｆｐ」なる積和演算項を含む形であれば、＜式４０＞と数学的に等価な等価演算式に基づく演算を行うようにしても、本発明に固有の作用効果を得ることができる。特に、上述したように、
｛１＋（−１＋２（−ｍ））・（ｎ−１）｝・Ｆ０
なる演算式の代わりに、関数値Ｆの最上位ビット以外には、負の演算項が生じない等価演算式を用いた演算を行えば、負の演算項を取り扱う必要がなくなる点において好ましい。
【０１３２】
＜＜＜  §７．  符号付き関数値への対応指針  ＞＞＞
これまで述べてきた実施形態は、関数値Ｆ０，Ｆ１，Ｆ２，... が、正の整数である場合の例である。ここでは、負の整数を含め符号付き関数値を取り扱うための対応指針を述べる。
【０１３３】
図３７(a) に示すとおり、一般に、符号付きの整数Ｘを、ｑビットのデジタル値としてビットｘ０〜ｘｑ−１を用いて表すと、
Ｘ＝−ｘｑ−１・２（ｑ−１）＋Σ j=0〜q-2 ｘｊ・２ｊ      ＜式５０＞
になる。この場合、図３７(b) に示すように、ｑ桁のビット列のうち、先頭のビットｘｑ−１は符号部を構成し、その余の（ｑ−１）桁のビット列は正数部を構成する。符号部となるビットｘｑ−１は、整数Ｘが正か負かを示すビットであり、「０」であれば正、「１」であれば負であることを示す。正数部は、実際の数値の値を示す部分になる。
【０１３４】
たとえば、ｑ＝４の場合、上記＜式５０＞は、図３７(c) に示すとおり、
Ｘ＝−ｘ３・２３＋ｘ２・２２＋ｘ１・２１＋ｘ０・２０
という形になる。具体的には、図３７(c) に例示されているとおり、「０１０１」なるビット列は、
「０１０１」＝−０・２３＋１・２２＋０・２１＋１・２０＝＋５
という式で示されるとおり、「＋５」なる正の整数を示すことになり、「１１０１」なるビット列は、
「１１０１」＝−１・２３＋１・２２＋０・２１＋１・２０＝−３
という式で示されるとおり、「−３」なる負の整数を示すことになる。
【０１３５】
そこで、図３８(a) に示すとおり、ｑビットのビット列として表される符号付きの整数Ｘを、
Ｘ＝−ｘｑ−１・２（ｑ−１）＋Σ j=0〜q-2 ｘｊ・２ｊ      ＜式５１＞
とし、同じく、ｑビットのビット列として表される符号付きの整数Ｙを、
Ｙ＝−ｙｑ−１・２（ｑ−１）＋Σ j=0〜q-2 ｙｊ・２ｊ      ＜式５２＞
とし、０＜Ｗ＜１の範囲をとり、小数点以下ｍビットのビット列からなる小数Ｗを、これまでの実施形態と同様に、
Ｗ＝Σ i=0〜m-1 ｗｉ・２（ｉ−ｍ）                        ＜式１０＞
として、積和演算項Ｖ＝（−Ｗ）・Ｘ＋Ｗ・Ｙを求めてみる。
【０１３６】
すると、図３８(b) に示すように、
Ｖ＝−｛Σ i=0〜m-1 ｗｉ・２（ｉ−ｍ）｝
・｛−ｘｑ−１・２（ｑ−１）＋Σ j=0〜q-2 ｘｊ・２ｊ｝
＋｛Σ i=0〜m-1 ｗｉ・２（ｉ−ｍ）｝
・｛−ｙｑ−１・２（ｑ−１）＋Σ j=0〜q-2 ｙｊ・２ｊ｝
であるから、
Ｖ＝ｘｑ−１・２（ｑ−１）・Σ i=0〜m-1 ｗｉ・２（ｉ−ｍ）
−Σ i=0〜m-1 ｗｉ・２（ｉ−ｍ）・Σ j=0〜q-2 ｘｊ・２ｊ
−ｙｑ−１・２（ｑ−１）・Σ i=0〜m-1 ｗｉ・２（ｉ−ｍ）
＋Σ i=0〜m-1 ｗｉ・２（ｉ−ｍ）・Σ j=0〜q-2 ｙｊ・２ｊ
＜式５３＞
が得られる。ここでは、図示のとおり、この＜式５３＞の右辺第１項を項Ｔ１９、第２項および第３項を項Ｔ２０、第４項を項Ｔ２１と呼ぶことにする。
【０１３７】
続いて、項Ｔ２０を次のように変形してみる。まず、図３９(a) に示すように、
Ｔ２０＝−Σ i=0〜m-1 ｗｉ・２（ｉ−ｍ）・Σ j=0〜q-2 ｘｊ・２ｊ
−ｙｑ−１・２（ｑ−１）・Σ i=0〜m-1 ｗｉ・２（ｉ−ｍ）
であるから、
Ｔ２０＝−Σ i=0〜m-1 ｗｉ・２（ｉ−ｍ）
・｛Σ j=0〜q-2 ｘｊ・２ｊ＋ｙｑ−１・２（ｑ−１）｝
＜式５４＞
が得られる。ここで、＜式５４＞の右辺の第１行目に示された部分を項Ｔ２２とすれば、図３８の＜式１０＞の定義より、Ｔ２２＝−Ｗである。したがって、このＴ２２の式を、図８の＜式１２＞の関係を利用して書き直すと、図３９(b) に示すように、
Ｔ２２＝−Ｗ
＝−１＋２−ｍ＋Ｗbar
＝−１＋２−ｍ＋Σ i=0〜m-1 ｗbarｉ・２（ｉ−ｍ）
＜式５５＞
が得られる。ここで、＜式５４＞のＴ２２の部分に、＜式５５＞を代入すれば、図３９(c) に示すように、
Ｔ２０＝｛−１＋２−ｍ＋Σ i=0〜m-1 ｗbarｉ・２（ｉ−ｍ）｝
・｛Σ j=0〜q-2 ｘｊ・２ｊ＋ｙｑ−１・２（ｑ−１）｝
＜式５６＞
が得られる。
【０１３８】
一方、項Ｔ１９は、図４０(a) に示すように、次のように変形できる。
Ｔ１９＝ｘｑ−１・２（ｑ−１）・Σ i=0〜m-1 ｗｉ・２（ｉ−ｍ）
＝Σ i=0〜m-1 ｗｉ・ｘｑ−１・２（ｑ−１＋ｉ−ｍ）
＜式５７＞
そこで、図３８の＜式５３＞のＴ１９，Ｔ２０の部分に、上記＜式５７＞，＜式５６＞を代入すると、図４０(b) に示すように、
Ｖ＝Σ i=0〜m-1 ｗｉ・ｘｑ−１・２（ｑ−１＋ｉ−ｍ）
＋｛−１＋２−ｍ＋Σ i=0〜m-1 ｗbarｉ・２（ｉ−ｍ）｝
・｛Σ j=0〜q-2 ｘｊ・２ｊ＋ｙｑ−１・２（ｑ−１）｝
＋Σ i=0〜m-1 ｗｉ・２（ｉ−ｍ）・Σ j=0〜q-2 ｙｊ・２ｊ
＜式５８＞
が得られる。
【０１３９】
更に、この＜式５８＞を整理すれば、図４０(c) に示すように、
Ｖ＝｛ｘｑ−１・Σ i=0〜m-1 ｗｉ・２（ｑ−１＋ｉ−ｍ）｝
＋｛ｙｑ−１・Σ i=0〜m-1 ｗbarｉ・２（ｑ−１＋ｉ−ｍ）｝
＋｛Σ i=0〜m-1 ｗbarｉ・２（ｉ−ｍ）・Σ j=0〜q-2 ｘｊ・２ｊ｝
＋｛Σ i=0〜m-1 ｗｉ・２（ｉ−ｍ）・Σ j=0〜q-2 ｙｊ・２ｊ｝
＋｛Σ j=0〜q-2 ｘｊ・２（ｊ−ｍ）｝
＋｛ｙｑ−１・２（ｑ−１−ｍ）｝
−｛Σ j=0〜q-2 ｘｊ・２ｊ｝
−｛ｙｑ−１・２（ｑ−１）｝
＜式５９＞
が得られる。ここでは、上記＜式５９＞の第７行目を項Ｔ２３と呼ぶことにする。
【０１４０】
続いて、図４１(a) に示すように、図３８の＜式５１＞の定義から、
−Ｘ＝ｘｑ−１・２（ｑ−１）−Σ j=0〜q-2 ｘｊ・２ｊ      ＜式６０＞
が得られる。ここで、この＜式６０＞の右辺第２項を項Ｔ２４とすれば、図４１(b) に示すとおり、
Ｔ２４＝−Σ j=0〜q-2 ｘｊ・２ｊ
＝Σ j=0〜q-2 （−ｘｊ・２ｊ）
となる。この式の右辺に、図４１(b) の３行目に示すように、「＋２ｊ−２ｊ」なる項を付加して整理すれば、図４１(b) の４行目に示す式を経て、５行目の式を導くことができる。ここで、第１項をＴ２５，第２項をＴ２６とすれば、Ｔ２５をＴ２７に置き換え、Ｔ２６をＴ２８に置き換えることにより、６行目の式を得ることができ、Ｔ２７をＸbarと書き換えれば、
Ｔ２４＝Ｘbar−（２（ｑ−１）−１）                        ＜式６１＞
なる式が得られる。上記変形において、Ｔ２５からＴ２７への置換は、図７の＜式１１＞に基づくものであり、Ｔ２６からＴ２８への置換は、図９に示す数学的論理を利用したものである。
【０１４１】
次に、＜式６０＞の右辺第２項Ｔ２４に、上記＜式６１＞を代入すれば、図４１(c) に示すとおり、
−Ｘ＝ｘｑ−１・２（ｑ−１）＋Ｘbar−（２（ｑ−１）−１）
であるから、
−Ｘ＝２（ｑ−１）・（ｘｑ−１−１）＋Ｘbar＋１            ＜式６２＞
が得られる。
【０１４２】
ここで、図３８に示す＜式５１＞の両辺に−１を乗じると、図４２(a) に示すとおり、
−Ｘ＝ｘｑ−１・２（ｑ−１）−Σ j=0〜q-2 ｘｊ・２ｊ
だから、
−Σ j=0〜q-2 ｘｊ・２ｊ＝−Ｘ−ｘｑ−１・２（ｑ−１）
＜式６３＞
よって、図４０(c) の＜式５９＞の項Ｔ２３は、
Ｔ２３＝−Ｘ−ｘｑ−１・２（ｑ−１）                      ＜式６４＞
【０１４３】
上記＜式６４＞の−Ｘに、＜式６２＞を代入すれば、図４２(b) に示すとおり、
Ｔ２３＝２（ｑ−１）・（ｘｑ−１−１）
＋Ｘbar＋１−ｘｑ−１・２（ｑ−１）
であるから、これを整理すると、
Ｔ２３＝Ｘbar＋１−２（ｑ−１）
＝｛Σ j=0〜q-2 ｘbarｊ・２ｊ｝＋１−２（ｑ−１）    ＜式６５＞
が得られる。
【０１４４】
したがって、図４０(c) の＜式５９＞は、次のような式になる。
Ｖ＝（−Ｗ）・Ｘ＋Ｗ・Ｙ
＝｛ｘｑ−１・Σ i=0〜m-1 ｗｉ・２（ｑ−１＋ｉ−ｍ）｝
＋｛ｙｑ−１・Σ i=0〜m-1 ｗbarｉ・２（ｑ−１＋ｉ−ｍ）｝
＋｛Σ i=0〜m-1 ｗbarｉ・２（ｉ−ｍ）・Σ j=0〜q-2 ｘｊ・２ｊ｝
＋｛Σ i=0〜m-1 ｗｉ・２（ｉ−ｍ）・Σ j=0〜q-2 ｙｊ・２ｊ｝
＋｛Σ j=0〜q-2 ｘｊ・２（ｊ−ｍ）｝
＋｛ｙｑ−１・２（ｑ−１−ｍ）｝
＋｛Σ j=0〜q-2 ｘbarｊ・２ｊ｝＋１−２（ｑ−１）
−｛ｙｑ−１・２（ｑ−１）｝
＜式６６＞
【０１４５】
この＜式６６＞は、ＸおよびＹが符号付き整数である場合に、積和演算値「（−Ｗ）・Ｘ＋Ｗ・Ｙ」を求めるためのビットごとの各演算項を示す式である。ここで注目すべき第１の点は、この式の右辺第１項および第２項に、
｛ｘｑ−１・Σ i=0〜m-1 ｗｉ・２（ｑ−１＋ｉ−ｍ）｝
＋｛ｙｑ−１・Σ i=0〜m-1 ｗbarｉ・２（ｑ−１＋ｉ−ｍ）｝
なる積和演算項が含まれている点である。上記項において、ビット「ｗｉ」とビット「ｗbarｉ」とは互いに反転ビットの関係にあるので、この積和演算項の処理には、セレクタを用いた処理が適用可能である。そして、第２の点は、この式の右辺第３項および第４項に、
｛Σ i=0〜m-1 ｗbarｉ・２（ｉ−ｍ）・Σ j=0〜q-2 ｘｊ・２ｊ｝
＋｛Σ i=0〜m-1 ｗｉ・２（ｉ−ｍ）・Σ j=0〜q-2 ｙｊ・２ｊ｝
なる積和演算項が含まれている点である。上記項において、やはりビット「ｗｉ」とビット「ｗbarｉ」とは互いに反転ビットの関係にあるので、この積和演算項の処理にも、セレクタを用いた処理が適用可能である。
【０１４６】
結局、この§７で述べる符号付き関数値への対応が可能な実施形態においても、セレクタを用いた回路構成を採ることが可能になり、乗算器を含まない単純な構成によって、回路の実装規模を縮小する効果が得られることになる。
【０１４７】
＜＜＜  §８．  符号付き関数値へ対応可能な加算演算器  ＞＞＞
ここでは、§７で述べた基本的対応指針に基づいて、符号付き関数値へ対応可能な重み付き加算演算器の構成を具体的に説明する。ｎが任意の場合、関数値Ｆを求めるための基本演算式は、図４３(a) に示すとおり、
Ｆ＝Ｗ０・Ｆ０＋Ｗ１・Ｆ１＋Ｗ２・Ｆ２
＋ ... ＋Ｗｐ・Ｆｐ＋ ... ＋Ｗｎ−１・Ｆｎ−１              ＜式３＞
であり、重みＷ０は、
Ｗ０＝１−（Ｗ１＋Ｗ２＋... ＋Ｗｐ＋... ＋Ｗｎ−１）            ＜式８＞
で与えられる。これは既にこれまでの実施形態で述べたとおりである。
【０１４８】
したがって、上記＜式３＞に＜式８＞を代入すれば、図４３(b) に示すとおり、
Ｆ＝｛１−（Ｗ１＋Ｗ２＋... ＋Ｗｐ＋... ＋Ｗｎ−１）｝・Ｆ０
＋Ｗ１・Ｆ１＋Ｗ２・Ｆ２＋ ... ＋Ｗｐ・Ｆｐ＋ ... ＋Ｗｎ−１・Ｆｎ−１
となり、結局、関数値Ｆは、
Ｆ＝Ｆ０
＋（−Ｗ１）・Ｆ０＋Ｗ１・Ｆ１
＋（−Ｗ２）・Ｆ０＋Ｗ２・Ｆ２
・・・
＋（−Ｗｐ）・Ｆ０＋Ｗｐ・Ｆｐ
・・・
＋（−Ｗｎ−１）・Ｆ０＋Ｗｎ−１・Ｆｎ−１            ＜式６７＞
なる演算式に基づいて演算することができる。これも、既に述べてきた実施形態と同様である。
【０１４９】
これまでの実施形態との相違点は、関数値Ｆ０，Ｆ１，Ｆ２，... が、符号付き関数値である点である。そこで、図４３(c) に示すように、第ｐ番目の関数値Ｆｐ（０≦ｐ≦ｎ−１）が、ｑビットのデジタル値として、ビットｆｐ０〜ｆｐ（ｑ−１）で表される符号付き整数であるものとすれば、図３７の＜式５０＞と同様に、
Ｆｐ＝−ｆｐ（ｑ−１）・２（ｑ−１）＋Σ j=0〜q-2 ｆｐｊ・２ｊ
＜式６８＞
になる。
【０１５０】
そこで、図４４に示すように、＜式６７＞の右辺第１項のＦ０を、＜式６８＞を用いて、
Ｆ０＝−ｆ０（ｑ−１）・２（ｑ−１）＋Σ j=0〜q-2 ｆ０ｊ・２ｊ
と書き換え、右辺第２項〜第ｎ項の積和演算項を、＜式６６＞を利用して書き換えてみる（具体的には、＜式６６＞における「Ｘ」を「Ｆ０」、「Ｙ」を「Ｆｐ」、「Ｗ」を「Ｗｐ」に書き換えればよい）。すると、図４４に示すような＜式６９＞が得られる。
【０１５１】
この＜式６９＞は、
Ｆ＝Ａ＋Σ p=1〜n-1 （Ｂ＋Ｃ＋Ｄ＋Ｅ）
の形式をとる演算式であり、ここで、各演算項Ａ〜Ｅは、
Ａ＝−ｆ０（ｑ−１）・２（ｑ−１）＋Σ j=0〜q-2 （ｆ０ｊ・２ｊ）
Ｂ＝｛ｆ０（ｑ−１）・Σ i=0〜m-1 （ｗｐｉ・２（ｑ−１＋ｉ−ｍ））｝
＋｛ｆｐ（ｑ−１）・Σ i=0〜m-1 （ｗbarｐｉ・２（ｑ−１＋ｉ−ｍ））｝
Ｃ＝｛Σ i=0〜m-1 （ｗbarｐｉ・２（ｉ−ｍ））
・Σ j=0〜q-2 （ｆ０ｊ・２ｊ）｝
＋｛Σ i=0〜m-1 （ｗｐｉ・２（ｉ−ｍ））
・Σ j=0〜q-2 （ｆｐｊ・２ｊ）｝
Ｄ＝｛Σ j=0〜q-2 （ｆ０ｊ・２（ｊ−ｍ））｝
＋｛ｆｐ（ｑ−１）・２（ｑ−１−ｍ）｝
Ｅ＝｛Σ j=0〜q-2 （ｆbar０ｊ・２ｊ）｝＋１−２（ｑ−１）
−｛ｆｐ（ｑ−１）・２（ｑ−１）｝
である。
【０１５２】
既に述べた実施形態と同様に、この＜式６９＞においても、ビット「ｗbarｐｉ」はビット「ｗｐｉ」を論理反転することによって得られる論理反転ビットであり、ビット「ｆbar０ｊはビット「ｆ０ｊ」を論理反転することによって得られる論理反転ビットである。図４４では、上記各演算項Ａ〜Ｅを、小円で囲った文字Ａ〜Ｅで示してある。
【０１５３】
ここで、演算項ＢおよびＣに着目すると、「ｗbarｐｉ・ｆ０ｊ＋ｗｐｉ・ｆｐｊ」なる積和演算項が含まれており、ビット「ｗbarｐｉ」とビット「ｗｐｉ」とは互いに反転ビットの関係にあるので、この積和演算項の処理には、セレクタを用いた処理が適用可能である。
【０１５４】
結局、この§８で述べる実施形態に係る「符号付き関数値へ対応可能な加算演算器」は、複数ｎ通りの関数値Ｆｐと複数ｎ通りの重みＷｐに基づいて（但し、ｎ≧３、ｐ＝０，１，２，... ，ｎ−１）、関数値Ｆ＝Σ p=0〜n-1 （Ｗｐ・Ｆｐ）の値を、「０≦Ｗｐ≦１」および「Σ p=0〜n-1 Ｗｐ＝１」なる条件下で演算する機能を有する点においては、§６までに述べてきた実施形態と同じである。ただ、関数値入力部は、複数ｎ通りの関数値Ｆｐ（但し、ｐ＝０，１，２，... ，ｎ−１）のそれぞれを、Ｆｐ＝−ｆｐ（ｑ−１）・２（ｑ−１）＋Σ j=0〜q-2 （ｆｐｊ・２ｊ）なる式を満たす、最上位ビット側から順に、符号部ｆｐ（ｑ−１），正数部ｆｐ（ｑ−２），... ，ｆｐ１，ｆｐ０なる合計ｑビットのデータとして入力することになる。一方、重みに関しては、§６までに述べてきた実施形態と同じであり、重み入力部は、複数（ｎ−１）通りの重みＷｐ（但し、ｐ＝１，２，... ，ｎ−１）のそれぞれを、Ｗｐ＝Σ i=0〜m-1 （ｗｐｉ・２（ｉ−ｍ））なる式を満たす、最上位ビット側から順に、ｗｐ（ｍ−１），ｗｐ（ｍ−２），... ，ｗｐ１，ｗｐ０なる合計ｍビットのデータとして入力すればよい。
【０１５５】
一方、この§８で述べる実施形態に係る「符号付き関数値へ対応可能な加算演算器」では、図４４に示す＜式６９＞に基づいた演算を行うための回路構成が必要であり、演算項Ａを演算する第Ａ項演算部と、演算項Ｂを演算する第Ｂ項演算部と、演算項Ｃを演算する第Ｃ項演算部と、演算項Ｄを演算する第Ｄ項演算部と、演算項Ｅを演算する第Ｅ項演算部と、総和演算部と、が設けられる。総和演算部は、第Ａ項演算部の演算結果と、ｐ＝１，２，... ，ｎ−１のそれぞれの場合について得られた第Ｂ項演算部、第Ｃ項演算部、第Ｄ項演算部、第Ｅ項演算部の演算結果と、の総和を求め、関数値Ｆの値として出力する機能を果たす。
【０１５６】
ここで、乗算器を含まない単純な構成によって、回路の実装規模を縮小する、という本発明に特有の効果を得るためには、第Ｂ項演算部および第Ｃ項演算部において、ビットごとの積和演算項を求める部分をセレクタによって構成すればよい。すなわち、Ｗｐを構成する第ｉ番目のビットｗｐｉと、その論理反転ビットｗbarｐｉと、Ｆ０を構成する第ｊ番目のビットｆ０ｊと、Ｆｐを構成する第ｊ番目のビットｆｐｊと、を用いて、「ｗbarｐｉ・ｆ０ｊ＋ｗｐｉ・ｆｐｊ」なる積和演算項を求めるために、ビットｆ０ｊおよびビットｆｐｊを入力とし、ビットｗｐｉの論理値に基づいて、入力したビットのいずれか一方を選択して出力するセレクタを用いるようにすればよい。
【０１５７】
もちろん、実用上は、第Ｂ項演算部および第Ｃ項演算部で演算が実行される「ｗbarｐｉ・ｆ０ｊ＋ｗｐｉ・ｆｐｊ」なる積和演算項のすべての演算処理をセレクタによって実行させるようにするのが好ましい。ただ、理論上は、少なくとも一部の積和演算項の演算処理をセレクタによって実行させるようにすれば、当該積和演算項の演算処理部分に関して、回路の実装規模を縮小する効果を得ることができる。
【０１５８】
図４５に示す＜式７０＞は、図４４に示す＜式６９＞に、ｎ＝３を代入して得られる式である。ここで、１行目に示すＴ２９は、演算項Ａに対応するものであり、その下の４行の式から構成されるＴ３０の部分は、ｐ＝１の場合についての演算項Ｂ〜Ｅに対応するものであり、更にその下の４行の式から構成されるＴ３１の部分は、ｐ＝２の場合についての演算項Ｂ〜Ｅに対応するものである。また、図４６に示す＜式７１＞は、図４５に示す＜式７０＞に、更に，ｍ＝４（Ｗｐのビット数），ｑ＝４（Ｆｐのビット数）を代入して得られる式である。
【０１５９】
図４７は、図４６に示す＜式７１＞に基づいて関数値Ｆを求める際に必要な個々の演算項を桁ごとに並べて示す表である。表の左端に示す見出しＴ２９，Ｔ３０，Ｔ３１は、それぞれ＜式７１＞のＴ２９，Ｔ３０，Ｔ３１に対応するものである。たとえば、表にＴ２９と記された１行目の各欄は、＜式７１＞のＴ２９に対応する演算項を桁ごとに並べたものであり、演算項Ａに対応するものになる。一方、表にＴ３０と記された全６行のうちの１行目の各欄は、＜式７１＞のＴ３０内の演算項Ｂに対応するものになり、２〜４行目の各欄は、＜式７１＞のＴ３０内の演算項Ｃに対応するものになり、５行目の各欄は、＜式７１＞のＴ３０内の演算項Ｄに対応するものになり、６行目の各欄は、＜式７１＞のＴ３０内の演算項Ｅに対応するものになる。同様に、表にＴ３１と記された全６行は、＜式７１＞のＴ３１内の演算項Ｂ〜Ｅに対応するものになる。この表の右端欄外に付された小円で囲った文字Ａ〜Ｅは、＜式７１＞の各演算項Ａ〜Ｅに対応するものである。
【０１６０】
この図４７に示す表において、太線で囲った欄に着目すると、これらの欄に掲載されているビットごとの積和演算は、いずれも図２１のセレクタ１００によって実現できることがわかる。たとえば、表の第２行目の２２の桁の欄には、「ｗ１３・ｆ０３＋ｗbar１３・ｆ１３」というビットごとの積和演算が掲載されているが、当該演算は、ビットｆ０３とビットｆ１３とを入力ビットとし、ｗ１３を選択制御ビットとするセレクタ１００によって代行することができる。結局、図４７の表における演算項ＢおよびＣに対応する欄（太線で囲った欄）の演算は、図２３に示す電子回路に準じた回路によって実行することが可能である。
【０１６１】
＜＜＜  §９．  符号付き関数値へ対応可能な加算演算器の変形例  ＞＞＞
最後に、§８で述べた符号付き関数値へ対応可能な加算演算器の変形例を述べておく。この加算演算器は、基本的には図４４の＜式６９＞に基づく演算を行うことになる。ただ、この＜式６９＞の演算項には、負項が含まれている。たとえば、演算項Ａ内の「−ｆ０（ｑ−１）・２（ｑ−１）」や、演算項Ｅ内の「−２（ｑ−１）」や「−｛ｆｐ（ｑ−１）・２（ｑ−１）｝」は、いずれも頭にマイナスがついた負項となっている。このような負項が存在すると、総和演算部によって総和を求める際に、減算処理が必要になる。最終的に総和を求める際に減算を避け、単純な加算器のみを用いた演算を行うことができるようにするためには、このような負項の取り扱いは避けた方がよい。
【０１６２】
そこで、ｎ＝３の場合について、図４５の＜式７０＞から負項を排除することを考える。まず、＜式７０＞の５行目の一部分を、図示のように項Ｔ３２と定義し、１行目の項Ｔ２９との和を考える。すると、図４８(a) に示すように、
Ｔ２９＋Ｔ３２
＝−ｆ０（ｑ−１）・２（ｑ−１）＋Σ j=0〜q-2 （ｆ０ｊ・２ｊ）
＋｛Σ j=0〜q-2 （ｆbar０ｊ・２ｊ）｝＋１−２（ｑ−１）
＝−ｆ０（ｑ−１）・２（ｑ−１）−２（ｑ−１）＋１
＋Σ j=0〜q-2 （ｆ０ｊ・２ｊ）＋｛Σ j=0〜q-2 （ｆbar０ｊ・２ｊ）｝
＜式７２＞
が得られる。
【０１６３】
この＜式７２＞の右辺の最後の２項の和を、
Ｔ３３＝Σ j=0〜q-2 （ｆ０ｊ・２ｊ）
＋｛Σ j=0〜q-2 （ｆbar０ｊ・２ｊ）｝
として整理すれば、図４８(b) に示すとおり、
Ｔ３３＝Σ j=0〜q-2 （ｆ０ｊ＋ｆbar０ｊ）・２ｊ
となり、「ｆ０ｊ＋ｆbar０ｊ」＝１であるから、
Ｔ３３＝Σ j=0〜q-2 ２ｊ
＝２ｑ−１−１                                      ＜式７３＞
が得られる。
【０１６４】
そこで、＜式７２＞のＴ３３に、＜式７３＞を代入すると、図４８(c) に示すように
Ｔ２９＋Ｔ３２
＝−ｆ０（ｑ−１）・２（ｑ−１）−２（ｑ−１）＋１＋２（ｑ−１）−１
＝−ｆ０（ｑ−１）・２（ｑ−１）
＜式７４＞
が得られる。
【０１６５】
続いて、図４５の＜式７０＞において、Ｔ２９＋Ｔ３２の部分を＜式７４＞に置き換えた場合、負項の和Ｎは、図４９(a) に示すように、
Ｎ＝−（ｆ０（ｑ−１）＋ｆ１（ｑ−１）＋ｆ２（ｑ−１）＋１）・２（ｑ−１）
＜式７５＞
になる。この式を、図４９(b) に示すように変形すると、最終的に、
Ｎ＝−２（ｑ＋１）
＋｛ｆbar０（ｑ−１）＋ｆbar１（ｑ−１）＋ｆbar２（ｑ−１）｝
・２（ｑ−１）
＜式７６＞
が得られる。
【０１６６】
この＜式７６＞は、＜式７０＞を変形することにより、「−２（ｑ＋１）」を唯一の負項とする形が得られることを示している。当該負項は、演算値Ｆの符号部を構成する桁になる。たとえば、ｑ＝４の場合、当該負項は「２５」の桁に「−１」なる値を与える。実際には、「２４」以下の桁についての演算による桁上げにより、「２５」の桁の合計値は「０」（関数値Ｆが正であることを示す）もしくは「１」（関数値Ｆが負であることを示す）になる。
【０１６７】
結局、図４９(c) に示すとおり、演算値Ｆの符号は、２（ｑ＋１）の桁で決まり、その正数部の内容は、２（ｑ−２）の桁以下で定まることになる。ここで、２（ｑ−１）の桁と２ｑの桁の数値は、２（ｑ＋１）の桁への桁上げを算出する際に用いられることになるが、正数部を構成する値にはならない。したがって、２（ｑ−１）の桁と２ｑの桁の数値それ自体は、関数値Ｆの値には何ら影響を与えることはなく、これらの値は無視できる。
【０１６８】
図５０は、図４６に示す＜式７１＞に対して、負項を排除するための変形を行うことによって得られる整理後の演算式に基づいて、関数値Ｆを求める際に必要な個々の演算項を桁ごとに並べて示す表である。図５０の表は、図４７の表の各欄を整理することによって得られる表であり、数学的には、この２つの表は等価である。たとえば、図４７の表では、２−４の桁の２つの欄に「ｆ００」が掲載されているが、図５０の表では、この２つの欄の「ｆ００」が１つに統合され、１桁上の２−３の桁の欄に、「ｆ００」が掲載されている。
【０１６９】
図４７の表には、いくつかの欄に負の値をもつビットが含まれていたが、図５０の表では、負の値をもつビットは適宜、論理反転ビットに置き換えられているため、負の値は、２５の桁の「−１」を残すのみである。この２５の桁は、上述したとおり、「２４」以下の桁からの桁上げ分を加算することにより、０または１になり、関数値Ｆの符号部として機能する。
【０１７０】
図５１は、ｎが任意の場合について、＜式６９＞の負項を排除するための演算式の変形を示す図である。図４４の＜式６９＞における負項の和Ｎは、図５１(a) に示すように、
Ｎ＝−｛ｆ０（ｑ−１）＋ｆ１（ｑ−１）＋... 
＋ｆ（ｎ−１）（ｑ−１）＋（ｎ−２）｝・２（ｑ−１）
＜式７７＞
になる。ここで、＜式７５＞に対して行った変形と同様の変形を、＜式７７＞に対して行えば、図５１(b) に示すように、
Ｎ＝−（ｎ−１）・２ｑ＋｛ｆbar０（ｑ−１）＋ｆbar１（ｑ−１）＋... 
＋ｆbar（ｎ−１）（ｑ−１）｝・２（ｑ−１）
＜式７８＞
が得られる。
【０１７１】
そこで、図５１(c) に示すように、
−（ｎ−１）＝−２ｚ＋ａｚ−１・２（ｚ−１）＋... 
＋ａ１・２１＋ａ０・２０
（但し、ａ０，ａ１，... ，ａｚ−１は、１ビットの数値）
＜式７９＞
なる定義を行って、べき乗項の数値ｚを定めると、図４４の＜式６９＞に示す演算式で定義される関数値Ｆの２（ｚ＋ｑ）の桁が符号部として機能することになり、２（ｑ−２）の桁以下が正数部として機能することになる。このとき、２（ｚ＋ｑ−１）の桁〜２（ｑ−１）の桁の数値それ自体は、関数値Ｆの値には何ら影響を与えることはなく、これらの値は無視できる。
【０１７２】
以上述べたとおり、本発明に係る符号付き関数値へ対応可能な加算演算器の基本原理は、図４４の＜式６９＞に示すように、
Ｆ＝Ａ＋Σ p=1〜n-1 （Ｂ＋Ｃ＋Ｄ＋Ｅ）
なる基本演算式に基づく演算を行うことにあるが、もちろん、この＜式６９＞の代わりに、これと数学的に等価な等価演算式に基づく演算を行うようにしてもかまわない。本発明に固有の作用効果は、＜式６９＞の演算項Ｂおよび演算項Ｃに含まれる積和演算項の演算をセレクタを利用して行うことによって得られる。したがって、セレクタによる演算が可能な積和演算項を含む形であれば、＜式６９＞と数学的に等価な等価演算式に基づく演算を行うようにしても、本発明に固有の作用効果を得ることができる。特に、上述したように、関数値Ｆの符号部となる桁以外には、負の演算項が生じない等価演算式を用いた演算を行えば、負の演算項を取り扱う必要がなくなる点において好ましい。
【０１７３】
＜＜＜  §１０．  符号付き関数値の別な取り扱い  ＞＞＞
最後に、符号付き関数値についての別な取り扱い方法を述べておく。§８および§９で述べた実施形態では、符号付き関数値を、図３７に示すように、符号部と正数部とから構成されるｑ桁のビットとして取り扱った。この§１０で述べる方法では、関数値それ自体については、符号なしの整数として取り扱うことになる。
【０１７４】
いま、図５２(a) に示すように、正の整数値をとる第ｐ番目（０≦ｐ≦ｎ−１）の関数Ｆｐを、ｒビットのデジタル値として、ビットｆｐ０〜ｆｐ（ｒ−１）を用いて表すことにすると、既に述べたとおり、
Ｆｐ＝Σ j=0〜r-1 ｆｐｊ・２ｊ                            ＜式２６＞
になる。
【０１７５】
そこで、図５２(b) に示すように、
−Ｆｐ＝−Σ j=0〜r-1 ｆｐｊ・２ｊ
＝−Σ j=0〜r-1 −ｆｐｊ・２ｊ
として、この式の右辺に、図５２(b) の３行目に示すように、「＋２ｊ−２ｊ」なる項を付加して整理すれば、図５２(b) の４行目に示す式を経て、５行目の式を導くことができる。ここで、第１項をＴ３４，第２項をＴ３５とすれば、Ｔ３４をＴ３６に置き換え、Ｔ３５をＴ３７に置き換えることにより、６行目の式を得ることができ、更に、Ｔ３６をＦbarｐと書き換えれば、
−Ｆｐ＝Ｆbarｐ−（２ｒ−１）
になるから、
−Ｆｐ＝１−２ｒ＋Ｆbarｐ                                  ＜式８０＞
なる式が得られる。上記変形において、Ｔ３４からＴ３６への置換は、図７の＜式１１＞に基づくものであり、Ｔ３５からＴ３７への置換は、図９に示す数学的論理を利用したものである。
【０１７６】
ここで、ｎ＝３の場合を例にとると、図５３(a) に示すように、関数値Ｆは、
Ｆ＝Ｗ０・Ｆ０＋Ｗ１・Ｆ１＋Ｗ２・Ｆ２                    ＜式１＞
なる演算式で与えられる。ここで、もし、関数値Ｆ１を負の値として取り扱うのであれば、図５３(b) に示すように、積（Ｗ１・Ｆ１）の先頭の符号をマイナスにして、
Ｆ＝Ｗ０・Ｆ０−Ｗ１・Ｆ１＋Ｗ２・Ｆ２                    ＜式８１＞
とする。この＜式８１＞を変形すれば、図５３(c) に示すように、
Ｆ＝Ｗ０・Ｆ０＋Ｗ１・（−Ｆ１）＋Ｗ２・Ｆ２
＝｛１−（Ｗ１＋Ｗ２）｝・Ｆ０＋Ｗ１・（−Ｆ１）＋Ｗ２・Ｆ２
＝Ｆ０＋｛（−Ｗ１）・Ｆ０＋Ｗ１・（−Ｆ１）｝
＋｛（−Ｗ２）・Ｆ０＋Ｗ２・Ｆ２｝
＜式８２＞
が得られる。ここで、＜式８２＞において、
Ｔ３８＝｛（−Ｗ１）・Ｆ０＋Ｗ１・（−Ｆ１）｝
とする。
【０１７７】
ところで、＜式８０＞より、
−Ｆ１＝１−２ｒ＋Ｆbar１
であるから、図５３(d) に示すように、＜式８２＞におけるＴ３８内の「−Ｆ１」の代わりに、「１−２ｒ＋Ｆbar１」を用いることにすれば、式の形式は、ほぼ図１０の＜式１６＞と同じになるので、§２〜§６で述べた符号なしの実施形態と同様の方法で、関数値Ｆを演算することができる。
【符号の説明】
【０１７８】
１０：乗算器
２０：加算器
３０：積和演算部
４０：関数値入力部
５０：重み入力部
６０：乗算演算部
７０：総和演算部
１００〜１１６：セレクタ
２０１〜２０６：加算器
Ａ，Ｂ，Ｃ，Ｄ，Ｅ：演算項
ａ：１ビットの数値
ｃ：加算器のキャリー
ｃ２０１〜ｃ２０６：加算器のキャリー
Ｆ：関数値（重み付き加算演算の演算結果）
Ｆ′：関数値（常に０になるビットを省略した式の演算結果）
Ｆmax ／Ｆmin：関数値の最大値／最小値
Ｆ０，Ｆ１，Ｆ２，Ｆｐ，Ｆｎ−１：関数値／画素値
ｆ０，ｆ１，ｆ２，ｆ３：関数値Ｆの各ビット
ｆｐ０，ｆｐ１，ｆｐ２，ｆｐ３：関数値Ｆｐの各ビット
ｇ：画像上の横座標値
ｈ：画像上の縦座標値
ｉ：Σ記号に用いるパラメータ
ｊ：Σ記号に用いるパラメータ
Ｋ：Ｆ０に対する乗算係数
ｋ：常に０をとる桁数
Ｌ：補間直線
ｍ：重みＷの構成ビット数
Ｎ：負項の和
ｎ：演算対象となる関数値の数
Ｐ：合成画像
Ｐ０，Ｐ１，Ｐ２：画像
ｐ：Σ記号に用いるパラメータ
Ｑ，Ｑ０，Ｑ１：グラフ上の点
ｑ：符号付き整数Ｆの構成ビット数
ｒ：整数Ｘ，Ｙ，Ｆの構成ビット数
Ｓ：積和演算値
ｓ：セレクタ／加算器のビット出力
Ｔ，Ｔ１〜Ｔ３８：演算式の特定の項
Ｕ，Ｕ１，Ｕ２，Ｕｐ：常に０になるビットを省略した重み
ｕｉ：重みＵのビット
Ｖ：積和演算値
Ｗ：小数
ｗ：セレクタの選択制御ビット
Ｗ０，Ｗ１，Ｗ２，Ｗｐ，Ｗｎ−１：重み
ｗ０，ｗ１，ｗ２，ｗ３：重みＷの各ビット
ｗｐ０，ｗｐ１，ｗｐ２，ｗｐ３：重みＷｐの各ビット
Ｘ：整数／座標軸
ｘ：線形補間のパラメータ／セレクタのビット入力
ｘ０，ｘ１，ｘ２，ｘ３：整数Ｘの各ビット
Ｙ：整数
ｙ：セレクタのビット入力
ｙ０，ｙ１，ｙ２，ｙ３：整数Ｙの各ビット
ｚ：べき乗項の数値
【図１】
2010257281.tif 000003
【図２】
2010257281.tif 000004
【図３】
2010257281.tif 000005
【図４】
2010257281.tif 000006
【図５】
2010257281.tif 000007
【図６】
2010257281.tif 000008
【図７】
2010257281.tif 000009
【図８】
2010257281.tif 000010
【図９】
2010257281.tif 000011
【図１０】
2010257281.tif 000012
【図１１】
2010257281.tif 000013
【図１２】
2010257281.tif 000014
【図１３】
2010257281.tif 000015
【図１４】
2010257281.tif 000016
【図１５】
2010257281.tif 000017
【図１６】
2010257281.tif 000018
【図１７】
2010257281.tif 000019
【図１８】
2010257281.tif 000020
【図１９】
2010257281.tif 000021
【図２０】
2010257281.tif 000022
【図２１】
2010257281.tif 000023
【図２２】
2010257281.tif 000024
【図２３】
2010257281.tif 000025
【図２４】
2010257281.tif 000026
【図２５】
2010257281.tif 000027
【図２６】
2010257281.tif 000028
【図２７】
2010257281.tif 000029
【図２８】
2010257281.tif 000030
【図２９】
2010257281.tif 000031
【図３０】
2010257281.tif 000032
【図３１】
2010257281.tif 000033
【図３２】
2010257281.tif 000034
【図３３】
2010257281.tif 000035
【図３４】
2010257281.tif 000036
【図３５】
2010257281.tif 000037
【図３６】
2010257281.tif 000038
【図３７】
2010257281.tif 000039
【図３８】
2010257281.tif 000040
【図３９】
2010257281.tif 000041
【図４０】
2010257281.tif 000042
【図４１】
2010257281.tif 000043
【図４２】
2010257281.tif 000044
【図４３】
2010257281.tif 000045
【図４４】
2010257281.tif 000046
【図４５】
2010257281.tif 000047
【図４６】
2010257281.tif 000048
【図４７】
2010257281.tif 000049
【図４８】
2010257281.tif 000050
【図４９】
2010257281.tif 000051
【図５０】
2010257281.tif 000052
【図５１】
2010257281.tif 000053
【図５２】
2010257281.tif 000054
【図５３】
2010257281.tif 000055