以下、添付図面を参照しながら、本発明の実施形態を説明する。
(第一の実施形態)
図1は、本実施形態での積和演算回路の構成図を示す。
図1に示すように、本実施形態における積和演算回路は、複数個の演算回路1と、被演算値Xiを保持する入力値保持回路2と、被演算値Wiを保持する荷重値保持回路3と、被演算値Xiを値の大きい順に出力するソーティング回路4と、被演算値Xiのラベルに対応する演算回路へ被演算値Xi、Wiを入力するためのスイッチ回路5とから構成される。なお、前記被演算値Xiと被演算値Wiのiは、それぞれ異なるXとWを表す添え字であり、1,2,3・・・の自然数をとる(以下同様)。
図2は、前記演算回路をデジタル回路で構成したデジタル演算回路を示す。図2に示すように、本実施形態におけるデジタル演算回路は、3つのレジスタ6と、乗算器7と、加減算器8とから構成される。
図3は、前記入力値保持回路と前記ソーティング回路の機能を連想メモリ回路で構成したものを示す。
以上説明した図を用いて、本実施形態における積和演算回路による演算処理工程を説明する。
まず図1に示すように、複数の被演算値Xiは入力保持回路2に保持され、さらにソーティング回路4により、値の大きいもの順にソートされ出力される。
ここで本実施形態においては、値が等しい被演算値Xiがある場合には、値が等しい被演算値間での出力の順番は任意としているが、事前に適当な順番を設定しておいても良い。
続いて、被演算値Xiが有するラベルがソーティング回路4からスイッチ回路5に入力され、前記ラベルに応じてスイッチ回路5がスイッチングを行い、ソーティング回路4から出力された被演算値Xiをそのラベルに対応する演算回路に入力する。なお、被演算値Xiのラベルに対応する演算回路の数は、1つの場合も複数の場合もあり得るが、本実施形態では複数の場合を説明する。
ここで、以上の入力保持回路2とソーティング回路4で実行される処理は、本実施形態においては連想メモリ回路を用いて実現する。連想メモリ回路には被演算値Xiの値と、それぞれの被演算値Xiが有するラベルが保持されている。
これに対して、連想メモリ回路の一般的な機能を利用し、被演算値Xiの値の大きなもの順に、1つずつその値とラベルを読み出すことにより、前記の入力保持回路とソーティング回路で実行される処理を実現することが可能となる。
すなわち連想メモリ回路は、入力された検索値と、保持しているデータを比較し、両者の値が一致するものを出力する機能を有する。従って連想メモリ回路に対して、検索値を被演算値Xiの最大値に相当する値から大きいもの順に一つずつ入力し、値が一致するデータを順に読み出すことにより、ソーティング機能を実現することが可能となる。(逆に、被演算値Xiの値の小さなもの順に読み出すことも可能である。)
なお本実施形態では、前記の通り入力保持回路2とソーティング回路4の機能を連想メモリ回路で実現したが、具体的な回路構成は本発明の主眼とするところではなく、同様の処理が可能なものであれば、その他の回路構成を用いても良い。
次に、荷重値保持回路3から出力される複数の被演算値Wiはそれぞれ所定の演算回路に入力される。ここで本実施形態においては、被演算値Wiは、被演算値Xiと同様に被演算値Xiが有するラベルに応じてスイッチ回路5においてスイッチングが行なわれ、ラベルによって決定される所定の演算回路に入力される。
なお本実施形態とは異なり、被演算値Wiが入力される所定の演算回路が、被演算値Xiのラベルにはよらず事前に設定されている手法を用いることも可能である。また、各演算回路に入力される被演算値Wiの値は、演算毎に同一の場合も異なる場合もある。
本実施形態においては、前記荷重値保持回路3は一般的なSRAM回路によって構成しても良いが、前記の連想メモリと同じく、同様の処理が可能なものであれば、その他の回路構成を用いても良い。以上の処理を実行することにより、所定の演算回路に被演算値Xiと被演算値Wiが入力される。本実施形態においては、前記所定の演算回路(すなわち演算処理が実行される回路)は、図1中の演算回路3〜5としている。
続いて、被演算値Xiと被演算値Wiの両者が入力された前記所定の演算回路において行なわれる演算処理について説明する。なお、被演算値Xiが入力されない演算回路では演算処理は実行されない。
演算回路において、被演算値XiとWiは一旦レジスタaとレジスタbに保持され、続いて乗算器7によってXi×Wiが演算される。Xi×Wiの乗算結果は、続いて加減算器8に入力され、レジスタcに保持されている結果を加減算した後、レジスタcに保持される。
以上の処理を繰り返すことにより、複数のXiとWiとの乗算結果の累算値がレジスタcに保持され、所定数の累算が完了すると累算値が出力される。このように、前記レジスタaに保持される被演算値Xiは、ソーティング回路4における処理によって値が大きいもの順に入力され、かつ同じ値を持つものは連続して入力されるため、被演算値Xiがランダムに入力される場合よりもレジスタのデータ遷移頻度が少なくなり、データ遷移により生ずる電力消費を削減することが可能となる。
なお本実施形態においては、ソーティング回路4から演算回路に対して被演算値Xi自体を入力したが、連想メモリにおいて被演算値Xiを値の大きいもの順に検索していく際に、Xiの値が変化したときのみ演算回路内のレジスタaに保持された値を変更するようにしても構わない。この場合、ソーティング回路4から演算回路に対して、被演算値Xi自体では無く、レジスタaの値を適当に更新するよう指示するフラグ信号が入力される。
また本実施形態においては、ソーティング回路4は被演算値Xiを値の大きいもの順にソートしたが、値の小さいもの順にソートした場合でも、前記と同様の効果がある。
また本実施形態においては、連想メモリからの出力を直接演算回路1及びスイッチ回路5に入力しているが、連想メモリから出力される値の大きいもの順に出力される被演算値Xiのデータを一旦SRAM等のメモリに入力・保持し、さらにSRAMから演算回路1及びスイッチ回路5へ入力する構成としても良い。この場合は、メモリに被演算値のラベルと値を保持しても良いし、もしくは値の変わりに、上述したような大きいもの順に並んだ被演算値Xiの値が変化する位置を示すフラグを保持しても良い。SRAMにフラグを保持する場合の構成例を図4に示す。
続いて、本実施形態において入力値保持回路に対して、被演算値XiがPWM信号として入力される場合に関して、図5を用いて説明を行なう。
図5において、入力保持回路2の入力部にパルス幅・デジタル変換回路9を有すること以外は、本実施形態で前述した構成(図1)と全く同様である。
すなわち、PWM信号として入力される被演算値Xiは、パルス幅・デジタル変換回路9によってデジタル信号に変換された後に入力値保持回路2に保持される。
ここで、前記パルス幅・デジタル変換回路9に関して説明を行なう。
まず、前記PWM信号の特性について簡単に説明しておく。PWM(Pulse Width Modulation)信号は、情報をパルス波形の幅に持たせた変調方式であり、ノイズに強いデジタル的な特性(電圧方向にHighレベルとLowレベルの2値の情報を有するという特性)と、連続情報を1パルスで表現することができるアナログ的な特性(時間方向に連続情報を有するという特性)の両者を併せ持つものである。
図6はパルス幅・デジタル変換回路の構成を表す回路図である。
本実施形態におけるパルス幅・デジタル変換回路9は、カウンタ10、及びn個(n>2)の終端ラッチ回路11−0〜11−(n-1)を有している。パルス幅・デジタル変換回路9には、外部からクロックCLK、パルス出力トリガXRST、及びn個のPWM信号PW0〜PWn-1が入力される。また、電源電圧VDD及び基板電圧VSSが印加されている。
クロックCLKには、一定の周期のパルス列が入力される。パルス出力トリガXRSTは、入力パルスPW0〜PWn-1の出力開始を指示するトリガである。このパルス出力トリガXRSTには、クロックCLKの周期のM倍(M≧2m)の周期で、行くロック周期分の時間幅の反転パルスが出力される。
カウンタ10は、外部から入力されるクロックCLKを計数してその計数値CNT0〜CNTm-1をmビットのデジタル信号として出力する。各終端ラッチ回路11−i(i∈{0,1,…,n-1})は、外部から入力されるPWM信号PWiの終端においてカウンタ10が出力する計数値CNT0〜CNTm-1をラッチする。そして、各終端ラッチ回路11−iは、それぞれ、ラッチした計数値CNT0〜CNTm-1をmビットのデジタル出力Di,0〜Di,m-1として出力する。
図7は図6の終端ラッチ回路の内部構成を表す回路図である。
終端ラッチ回路11−i(i∈{0,1,…,n-1})は、m個のラッチ12−0〜12−(m-1)、及び1個のインバータ13により構成されている。終端ラッチ回路11−iに入力されるPWM信号PWiは、インバータ13によりレベル反転され、各ラッチ12−0〜12−(m-1)のクロック入力端子clkに入力される。また、カウンタ10の各計数値CNT0〜CNTm-1は、それぞれ、ラッチ12−0〜12−(m-1)のデータ入力端子Dに入力される。パルス出力トリガXRSTは、各ラッチ12−0〜12−(m-1)のリセット入力端子NOT(R)に入力される。各ラッチ12−0〜12−(m-1)の出力端子Qから出力されるデータは、mビットのデジタル出力データDi={Di,0〜Di,m-1}として外部に出力される。
尚、各ラッチ回路12−0〜12−(m-1)は、図8に示したような、非同期リセット入力付きの同期型Dフリップ・フロップが用いられる。
以上のように構成された本実施形態に係るパルス幅・デジタル変換回路9について、以下その動作を説明する。
図9は本実施形態に係るパルス幅・デジタル変換回路9の各信号レベルの変化を表すタイムチャートである。クロックCLKには、一定の周期Tで、幅T/2のパルスが連続的に入力されている。パルス出力トリガXRSTは、時刻t1において、幅Tの反転パルスを出力する。これにより、各ラッチ12−0〜12−(m-1)の出力はリセットされ、デジタル出力データDiは総て0リセットされる。
そして、パルス出力トリガXRSTの立ち上がり時点(時刻t2)から、各PWM信号PWi(i∈{0,1,…,n-1})の出力が開始される。また、それと同時に、カウンタ10は、クロックCLKの計数を開始する。カウンタ10は、クロックCLKの立ち上がりエッジにおいて、その計数値を1づつ増加させる。なおPWM信号PWiは、カウンタ10の計数開始と同期して入力される。
時刻t3において、PWM信号PWiはHレベルからLレベルに反転する。これにより、インバータ13の出力NOT(PWi)のレベルはLレベルからHレベルに立ち上がる。各ラッチ12−j(j∈{0,1,…,m-1})は、このインバータ13の出力NOT(PWi)の立ち上がりエッジにおいて、データ入力端子Dに入力される計数値CNTjのレベルをラッチして、これをデータ出力端子Qから出力する。
これにより、各終端ラッチ回路11−i(i∈{0,1,…,n-1})には、PWM信号PWiの立ち下がり時点におけるカウンタ10のカウント値CNT(i)={CNT(i)0, CNT(i)1,…, CNT(i)m-1}がラッチされる。このカウント値CNT(i)は、PWM信号PWiのパルス幅に比例した値となる。
カウンタ10が計数を開始してから少なくとも時間2m・Tだけ経過した時点で、総ての終端ラッチ回路11−0〜11−(n-1)のデジタル出力値が確定する(勿論、それ以前に確定する場合もある)。従って、この確定時点後に、各終端ラッチ回路11−0〜11−(n-1)のデジタル出力値を取り出すことにより、各PWM信号PW0〜PWn-1のパルス幅に比例したデジタル値を得ることができる。すなわち、パルス幅・デジタル変換が完了する。
このように、各終端ラッチ回路11−i(i∈{0,1,…,n-1})は、PWM信号PWiの終端で、共通のカウンタ10が出力する計数値CNTをラッチする。従って、カウンタ10は、それぞれの終端ラッチ回路11−iに対して計数値CNTを出力するための配線の寄生容量に抗して出力値(係数値CNT)の切り換えを行うだけであり、スイッチング時の消費電力は小さい。従って、上記従来のパルス幅・デジタル変換を使用した場合に比べると、大幅に消費電力を低減させることが可能である。
実際に計算機シミュレーションにより評価した結果、80個のPWM信号PW0〜PW79を並列にパルス幅・デジタル変換する場合、終端ラッチ回路として、図40に示したような従来のパルス幅・デジタル変換回路を使用すると、226mWの電力が消費されることが見積もられた。それに対して、本実施形態に係るパルス幅・デジタル変換回路9を使用した場合、同じ入力パルスをパルス幅・デジタル変換する場合の消費電力は6.6mWであった。従って、消費電力は約1/50に抑えることができることが分かった。
また、カウンタを一つにしたことによって、カウンタのスイッチング時に発生するスイッチング・ノイズを小さく抑えることができる。従って、回路のSN比が向上する。従って、パルス幅にジッタ・ノイズが加わることによりパルス幅・デジタル変換時に生じるジッタ誤差を最小限に抑えることができる。これにより、高速パルス幅・デジタル変換にも使用することができる。
また、各終端ラッチ回路11−0〜11−(n-1)は、共通のカウンタ10の出力値CNTをラッチするので、各入力パルスPW0〜PWn-1に対する計数値CNTの切り替わりのタイミングにばらつきが生じない。そのため、カウンタ10のスイッチング時のジッタによる各入力パルスPW0〜PWn-1間でのタイミング誤差がばらつくことを防止できる。
また、前記パルス幅・デジタル変換回路は、図6に示したパルス幅・デジタル変換回路9において、終端ラッチ回路11−0〜11−(n-1)の部分を、図10に示した回路に置き換えたものであっても良い。
以下で、パルス幅・デジタル変換回路9において、終端ラッチ回路11−0〜11−(n-1)の部分を、図10に示した回路に置き換えたものについて,詳しく説明する。図10において、終端ラッチ回路11−i(i∈{0,1,…,n-1})、ラッチ12−0〜12−(m-1)、及びインバータ13の構成は、図7と同様であるため説明は省略する。本実施形態に係るパルス幅・デジタル変換回路は、これらに加えて、更に、始端ラッチ回路14−i(i∈{0,1,…,n-1})及び減算回路15−iを備えていることを特徴としている。
始端ラッチ回路14−iは、PWM信号PWiの始端(立ち上がりエッジ)において、カウンタ10から出力される計数値CNTをラッチする。減算回路15−iは、終端ラッチ回路11−iのデジタル出力値Ei={Ei,0〜Ei,m-1}から始端ラッチ回路14−iのデジタル出力値Si={Si,0〜Si,m-1}を減算した減算値を演算して、デジタル出力値Di={Di,0〜Di,m-1}として出力する。
始端ラッチ回路14−iは、終端ラッチ回路11−iと同様に、mビットの計数値の各ビットCNT0〜CNTm-1の各々に対応してラッチ16−0〜16−(m-1)を備えている。これらのラッチ16−0〜16−(m-1)は、ラッチ12−0〜12−(m-1)と同様、図8に示した非同期リセット入力付きの同期型Dフリップ・フロップにより構成されている。
但し、始端ラッチ回路14−i内のラッチ16−0〜16−(m-1)のクロック端子clkには、インバータ13を通すことなく、PWM信号PWiが直接入力される。そのため、ラッチ16−0〜16−(m-1)は、PWM信号PWiの立ち上がりの時点におけるカウンタ10の計数値CNTをラッチする。
以上のように構成されたパルス幅・デジタル変換回路について、以下その動作を説明する。
図11は本実施形態におけるパルス幅・デジタル変換回路の各信号レベルの変化を表すタイムチャートである。
クロックCLKには、一定の周期Tで、幅T/2のパルスを連続的に入力されている。パルス出力トリガXRSTは、時刻t1において、幅Tの反転パルスを出力する。これにより、各ラッチ12−0〜12−(m-1),16−0〜16−(m-1)の出力はリセットされ、デジタル出力データEi,Siは総て0リセットされる。
そして、パルス出力トリガXRSTの立ち上がり時点(時刻t2)から、カウンタ10は、クロックCLKの計数を開始する。カウンタ10は、クロックCLKの立ち上がりエッジにおいて、その計数値を1づつ増加させる。
時刻t2以後の適当な時刻t3において、PWM信号PWi(i∈{0,1,…,n-1})の出力が開始される。この時刻t3におけるPWM信号PWiの立ち上がりにより、始端ラッチ回路14−iのラッチ16−j(j∈{0,1,…,m-1})は、カウンタ10の出力CNTjをラッチして、これをデータ出力端子Qからデジタル出力値Si={Si,0〜Si,m-1}として出力する。
時刻t4において、PWM信号PWiはHレベルからLレベルに反転する。これにより、インバータ13の出力NOT(PWi)のレベルはLレベルからHレベルに立ち上がる。各ラッチ12−j(j∈{0,1,…,m-1})は、このインバータ13の出力NOT(PWi)の立ち上がりエッジにおいて、データ入力端子Dに入力される計数値CNTjのレベルをラッチして、これをデータ出力端子Qからデジタル出力値Ei={Ei,0〜Ei,m-1}として出力する。
減算回路15−iは、終端ラッチ回路11−iのデジタル出力値Ei={Ei,0〜Ei,m-1}から始端ラッチ回路14−iのデジタル出力値Si={Si,0〜Si,m-1}を減算した減算値を演算して、デジタル出力値Di={Di,0〜Di,m-1}として出力する。従って、時刻t3以後において、このデジタル出力値Di={Di,0〜Di,m-1}は、PWM信号PWiのパルス幅に正比例した値となる。
カウンタ10が係数を開始してから少なくとも時間2m・Tだけ経過した時点で、総ての終端ラッチ回路11−0〜11−(n-1)及び減算回路15−0〜15−(n-1)のデジタル出力値が確定する(勿論、それ以前に確定する場合もある)。従って、この確定時点後に、各減算回路15−0〜15−(n-1)のデジタル出力値を取り出すことにより、各PWM信号PW0〜PWn-1のパルス幅に比例したデジタル値Di={Di,0〜Di,m-1}を得ることができる。すなわち、パルス幅・デジタル変換が完了する。
このように、本実施形態においては、各PWM信号の始端及び終端におけるカウンタ10の計数値をラッチして、両者の差を演算してデジタル出力値とすることで、各PWM信号PWiの立ち上がりを同期させる必要がなくなる。また、各PWM信号PWiの立ち上がりとカウンタ10の計数開始タイミングも同期させる必要がなくなる。
従って、非同期にPWM信号が入力されるような回路においても、本実施形態に係るパルス幅・デジタル変換回路を使用することが可能である。
なお、減算回路15−iを用意せずに、デジタル出力値Si及びEiをそのまま外部に出力し、外部に用意した減算器で減算を行ってもよい。
(第二の実施形態)
第二の実施形態を具体的な処理構成図を参照して説明する。本実施形態での積和演算方法を実行するための処理回路の構成図は、第一の実施形態と同様に図1によって示される。
図12は、前記演算回路をアナログ回路で構成したアナログ演算回路を示す。図12に示すように、本実施形態におけるアナログ演算回路は、アナログ乗算器17と、キャパシタ18と、出力バッファ19とから構成される。
図13は、前記入力値保持回路をアナログメモリで構成したものを示す。ここで、本実施形態においてはアナログメモリをキャパシタ20と出力バッファ21で構成することを想定しているが、同様の機能を有するものであればその他の回路を用いても構わない。
図14は、前記ソーティング回路をWTA回路22で構成したものを示す。
以上説明した図を用いて、本実施形態における積和演算方法を用いた処理過程を説明する。
まず図1に示す演算処理に関しては第一の実施形態と同様であるため説明を省略し、以下では第一の実施形態と異なる入力保持回路、荷重保持回路、ソーティング回路及び演算回路における個別の処理に関して説明を行なう。
なお本実施形態においては、第一の実施形態で説明したパルス幅・デジタル変換回路を有するケースは除外する。
まず本実施形態における入力保持回路2はキャパシタ20と出力バッファ21により構成されており、被演算値Xiの値をキャパシタ20に蓄積された電圧値として保持している。入力保持回路2に保持された被演算値Xiは、ソーティング回路4により値の大きいもの順にスイッチ回路5に入力される。
ここで、ソーティング回路4で実行される処理は、本実施形態においては図に示すようにWTA回路22を用いて実現する。WTA回路とは、Winner -Take-All回路の略称であり、入力値の中で最大の値を有するものを出力値とする機能を有する。
(逆に、最小の値を有するものを出力値とすることも可能である。)従って、WTA回路22に被演算値Xiを入力した場合、まずその中で最大の値を有する被演算値Xiが出力される。
次に、前回出力された被演算値Xiを除いて再度被演算値Xi群を入力すると2番目に大きな値を有する被演算値Xiが出力される。
以上の動作を繰り返すことにより、被演算値は随時値が大きなもの順に出力され、ソーティング動作が実行される。
ここで本実施形態においては、値が等しい被演算値Xiがある場合には、値が等しい被演算値間での出力の順番は任意としているが、事前に適当な順番を設定しておいても良い。なおこの際、各被演算値が有するラベルも同時に保持されるが、その保持回路はデジタルメモリを用いても良いし、同様の機能を実現するアナログメモリを使用しても良い。
また、本実施形態ではソーティング回路4としてアナログ回路を使用しているが、第一の実施形態で用いた様に連想メモリを使用しても良い。なおこの場合は、連メモリの出力はD/A変換された後に演算回路に入力される。ここで、D/A変換を行なうD/A変換回路として、図15に示すデジタル・パルス幅変換回路23と、スイッチド電流源24と、キャパシタ25と、バッファ26とから構成されるD/A変換回路について説明する。
図15に示すように、まずD/A変換回路において被演算値Xiに相当するデジタル値をデジタルメモリ(連想メモリ)からデジタル・パルス幅変換回路23に入力する。デジタル・パルス幅変換回路23においては、入力されたデジタル値を当該デジタル入力値に比例した時間幅のパルス信号に変換して出力する。
ここで図16に示すように、本実施形態に係るデジタル・パルス幅変換回路23は、並列配置された複数のパルス生成回路27-0〜27-(n-1)、及び一つのカウンタ28を有する。各パルス生成回路27-0〜27-(n-1)のデータ入力端子Dinには、mビットの各デジタル入力値x0〜xn-1が入力される。そして、各パルス生成回路27-0〜27-(n-1)のパルス出力端子Poutからは、各デジタル入力値x0〜xn-1に比例するPWM信号PWM0〜PWMn-1が出力される。
また、カウンタ28は、外部から入力されるクロックclockを計数し、mビットの計数値として出力する。このクロックclockは、各パルス生成回路27-0〜27-(n-1)のクロック入力端子clkにも共通に入力される。また、各パルス生成回路27-0〜27-(n-1)のカウンタ値入力端子CNTには、カウンタ28から出力される計数値が共通に入力される。
更に、各パルス生成回路27-0〜27-(n-1)の基準値入力端子Dbには、mビットの基準値xbが共通に入力される。この基準値xbは、出力PWM信号PWM0〜PWMn-1の立ち上がりのタイミングを指定する値である。
図17は図16の各パルス生成回路の構成を表すブロック図である。パルス生成回路27-i(i∈{0,1,…,n-1})は、基準値レジスタ29、加減算回路30、パルス幅レジスタ31、切換回路32、タイミングトリガ発生回路33、及び出力パルス反転回路34を有している。
基準値レジスタ29は、基準値xbをラッチして、そのラッチした基準値xbの値を出力する。加減算回路30は、基準値xbと外部から入力されるデジタル値である入力値xiとの加算値xi+xbを出力する。パルス幅レジスタ31は、加減算回路30の出力値(加算値xi+xb)を更新入力renewの立ち上がりにおいてラッチする。
切換回路32は、出力パルス反転回路34が出力する出力PWM信号PWMiが偽値(Lレベル)のときは、基準値レジスタ29がラッチしたデジタル値xbを出力し、出力パルス反転回路34が出力する出力PWM信号PWMiが真値(Hレベル)のときは、パルス幅レジスタ31がラッチしたデジタル値xi+xbを出力するように切り換えを行う。
タイミングトリガ発生回路33は、切換回路32から出力されるデジタル値の各ビットと、カウンタ28が出力する計数値CNTの各ビットとを比較して、両者が完全に一致したときにトリガを発生する。このタイミングトリガ発生回路33は、m個のEXORゲート35-0〜35-(m-1)、及び1個のNORゲート36により構成されている。各EXORゲート35-0〜35-(m-1) の入力の一方には、切換回路32からの出力ビットがそれぞれ入力され、他方の入力には、カウンタ28からの出力ビットがそれぞれ入力される。そして、各EXORゲート35-0〜35-(m-1)の出力P0〜Pm-1はNORゲート36に入力される。NORゲート36は、各EXORゲート35-0〜35-(m-1)の出力P0〜Pm-1の論理和の反転出力を出力パルス反転回路34に対して出力する。
すなわち、各デジタル入力値xi(i∈{0,1,…,n-1})、各基準値xb、カウンタの出力値CNTをそれぞれ式(1),(2),(3)により表した場合、タイミングトリガ発生回路16の出力Tiは、出力パルス反転回路17の出力値PoutがLレベルのときは式(4)、出力パルス反転回路17の出力値PoutがHレベルのときは式(5)のように表される。
xi=(xi,0,xi,1,…,xi,m-1) (1)
xb=(xb,0,xb,1,…,xb,m-1) (2)
CNTi=(CNTi,0,CNTi,1,…,CNTi,m-1) (3)
出力パルス反転回路34は、タイミングトリガ発生回路33がトリガを発生したときに、出力PWM信号PWMiの真理値を反転させる。この出力パルス反転回路34は、同期型Tフリップ・フロップ(以下、「T−FF」という。)により構成されている。出力パルス反転回路34のトリガ入力端子TにはNORゲート36からの出力値が入力される。また、T−FFのクロック端子clkには、共通のクロックclockが入力される。また、出力パルス反転回路34の出力端子Qからは、出力PWM信号PWMiが出力される。
以上のように構成された本実施形態に係るデジタル・パルス幅変換回路について、以下その動作を図18のタイミング・チャートを参照しながら説明する。
まず、時刻t1において、各パルス生成回路27-iに対して、外部回路から入力値xi及び基準値xbが入力される。次いで、時刻t2においてカウンタ28のリセット入力ノードR並びに各パルス生成回路27-iの基準値レジスタ29及びパルス幅レジスタ31のクロック入力ノードCLKに対して更新信号renewが入力される。基準値レジスタ29及びパルス幅レジスタ31は、更新信号renewが入力されると、その立ち上がり時点において、それぞれ、そのときの基準値xb及び入力値xiの値をラッチする。
そして、基準値レジスタ29は、ラッチされた基準値xbを出力し、パルス幅レジスタ31は、ラッチされた加算値xi+xbを出力する。一方、時刻t1においては、出力パルス反転回路34の出力はLレベルであるので、切換回路32は、基準値レジスタ29から入力される値xbを出力する。また、カウンタ28は、更新信号renewの立ち上がりにおいて、計数値CNTを0にリセットするとともに、計数を開始する。
次に、カウンタ28がカウントアップして、時刻t3においてカウンタ28の計数値CNTが切換回路32の出力値である基準値xbと一致する。このとき、タイミングトリガ発生回路33の出力TiはHレベルに反転する。これにより、出力パルス反転回路34の出力PoutがLレベルからHレベルに反転し、出力PWM信号PWMiの出力が開始される。
時刻t4において、出力パルス反転回路34の出力PoutがHレベルに反転すると、切換回路32の入力が切り換わって、パルス幅レジスタ31から入力される値xb+xiを出力するようになる。これに伴い各EXORゲート35-0〜35-(m-1)の出力値も変化するが、xi≠0であれば、EXORゲート35-0〜35-(m-1)の出力値が総て0となることはない。従って、タイミングトリガ発生回路33の出力TiはLレベルに反転する。
更にカウンタ28がカウントアップして、時刻t5において、カウンタ28の計数値CNTが切換回路32の出力値である加算値xb+xiと一致する。このとき、タイミングトリガ発生回路33の出力TiはHレベルに反転する。これにより、出力パルス反転回路34の出力PoutはHレベルからLレベルに反転し、出力PWM信号PWMiの出力が停止される。このようにして、デジタル入力値xiに比例した時間幅の出力PWM信号PWMiが生成され、デジタル・パルス幅変換が行なわれる。
時刻t6において、出力パルス反転回路34の出力がLレベルに反転すると、切換回路32の入力が切り換わり、切換回路32は基準値レジスタ29から入力される値xbを出力するようになる。これに伴い各EXORゲート35-0〜35-(m-1)の出力値も変化するが、xi≠0であれば、EXORゲート35-0〜35-(m-1)の出力値が総て0となることはない。従って、タイミングトリガ発生回路の出力TiはLレベルに反転する。
そして、カウンタ28はカウントアップするまで計数を続ける。この間、カウンタ値と切換回路の出力値xbとが一致することはないので、出力パルス反転回路34の出力はLレベルに保持される。カウンタ28がカウントアップすると計数を停止し、1サイクルが終了する。カウンタ28はカウントアップした後は、リセット入力ノードRが再度Hレベルに反転するまでは、カウントアップした時の出力値(総てHレベル)を維持する。
以上のようにして、各パルス生成回路27-iは、入力値xiの値に比例した時間幅の出力PWM信号PWMiを出力する。このとき、各パルス生成回路27-iは、共通のカウンタ28が出力する計数値を用いて、基準値xb又は加算値xb+xiとの比較を行う。従って、総てのパルス生成回路27-iにカウンタを備えた場合と比べると、消費電力が極めて小さくなるため、デジタル・パルス幅変換回路の低消費電力化が図られる。
また、本実施形態においては、基準値レジスタ29、パルス幅レジスタ31、及び切換回路32を用いて、出力PWM信号PWMiの立ち上がりと立ち下がりのタイミングを、共通のタイミングトリガ発生回路33を用いて発生させる構成としたことにより、回路遅延の影響を受けることなく、出力PWM信号PWMiのパルス幅を入力値xiに正確に比例させることが可能となる。
尚、本実施形態においては、基準値xbにより、各パルス生成回路27-0〜27-(n-1)における出力パルスの立ち上がり時点を合わせる構成例を示したが、本発明においては、出力パルスの立ち下がり時点を合わせる構成としてもよい。この場合、加減算回路30は、基準値xbから外部から入力されるデジタル値である入力値xiを減算した減算値xb−xiを出力する構成とする。また、切換回路32は、出力パルス反転回路34が出力する出力PWM信号PWMiが真値(Hレベル)のときは、基準値レジスタ29がラッチしたデジタル値xbを出力し、出力パルス反転回路34が出力する出力PWM信号PWMiが偽値(Lレベル)のときは、パルス幅レジスタ31がラッチしたデジタル値xb−xiを出力するように切り換えを行う構成とすればよい。
なお、各パルス生成回路2―i内に加減算回路11を用意せずに、デジタル入力信号xiとして、元々の入力値を基準値xbから加算または減算した結果を与えるようにしてもよい。また、本実施形態におけるデジタル・パルス幅変換回路は、以上で説明したものとは異なり、以下で説明するように別形態をとるものであっても良い。
すなわち図45に示すように、本実施形態に係る別形態のデジタル・パルス幅変換回路151は、並列配置された複数のパルス生成回路152−0〜152−(n-1)、及び一つのカウンタ153を有する。各パルス生成回路152−0〜152−(n-1)のデータ入力端子Dinには、mビットの各デジタル入力値x0〜xn-1が入力される。そして、各パルス生成回路152−0〜152−(n-1)のパルス出力端子Poutからは、各デジタル入力値x0〜xn-1に比例する時間幅のパルスPWM0〜PWMn-1が出力される。
また、カウンタ153は、外部から入力されるクロックclockを計数し、mビットの計数値として出力する。また、各パルス生成回路152−0〜152−(n-1)のカウンタ値入力端子CNTには、カウンタ153から出力される計数値が共通に入力される。
図46は図45の各パルス生成回路の構成を表すブロック図である。パルス生成回路152−i(i∈{0,1,…,n-1})は、パルス幅レジスタ162、タイミングトリガ発生回路164、及び出力パルス反転回路165を有している。
パルス幅レジスタ162は、外部から入力されるmビットのデジタル値である入力値xiを更新入力renewの立ち上がりにおいてラッチして、その値を出力ノードに出力する。タイミングトリガ発生回路164は、パルス幅レジスタ162から出力されるmビットのデジタル値の各ビットと、カウンタ153が出力するmビットの計数値の各ビットとを比較して、両者が完全に一致したときにトリガを発生する。
このタイミングトリガ発生回路164は、m個のEXORゲート166−0〜166−(m−1)と1個のNORゲート167により構成されている。各EXORゲート166−0〜166−(m−1)の入力の一方には、パルス幅レジスタ162からの出力ビットがそれぞれ入力され、入力の他方には、カウンタ153からの出力ビットがそれぞれ入力される。そして、各EXORゲート166−0〜166−(m−1)の出力P0〜Pm-1はNORゲート167に入力される。NORゲート167は、各EXORゲート166−0〜166−(m−1)の出力P0〜Pm-1の論理和の反転出力を出力パルス反転回路165に対して出力する。
すなわち、各デジタル入力値xi(i∈{0,1,…,n-1})、カウンタの出力値CNTを式(1),(3)により表した場合、タイミングトリガ発生回路64の出力Tiは式(6)のように表される。但し、ここでxiは0でないと仮定する。
式(6)より、タイミングトリガ発生回路64の出力Tiはデジタル入力値xiとカウンタの出力値CNTが、総てのビットにおいて一致したときに1となることが分かる。出力パルス反転回路65は、タイミングトリガ発生回路64がトリガを発生したときに、出力パルスPWMiの真理値を反転させる。この出力パルス反転回路65は、Tフリップ・フロップ(以下、「T−FF」という。)により構成されている。出力パルス反転回路65のトリガ入力端子TにはNORゲート67からの出力値が入力される。また、出力パルス反転回路65の出力端子Qからは、パルスPWMiが出力される。
以上のように構成された本実施形態に係るデジタル・パルス幅変換回路について、以下その動作を図47のタイミング・チャートを参照しながら説明する。
まず、電源を入れた直後の初期状態では、カウンタ153の総ての計数値CNTはHレベルにあるものとし、入力値xiは0であるとする。この状態で、時刻t0において、カウンタ153及びパルス幅レジスタ162に対して入力されているリセット入力resetを有効(Lレベル)とする。これにより、カウンタ153の計数値CNTは総て0リセットされる。また、パルス幅レジスタ162は、リセット信号resetがLレベルとされると、保持している記憶値を総て0にリセットする。そうすると、カウンタ153の計数値CNTとパルス幅レジスタ162の出力値とが一致し、タイミングトリガ発生回路164の出力TiはLレベルからHレベルに反転する。従って、出力パルス反転回路165の出力PoutiがHレベルに反転し、出力Poutiにパルスが出力され始める。
次に、時刻t1において、各パルス生成回路152−iに対して、外部回路から入力値xi(Xi≠(0,0,…,0))が入力される。このとき、パルス幅レジスタ162に入力されているリセット信号resetがLレベルなので、パルス幅レジスタ162の出力は総て0のままである。
次いで、時刻t2において、リセット入力resetが無効(Hレベル)とされるとともに、更新信号renewがLレベルからHレベルに反転される。更新信号renewは、各パルス幅レジスタ162のクロックCLK入力ノードに入力されており、更新信号renewがHレベルに反転した時点で、パルス幅レジスタ162はその時点の入力値xiの値をラッチする。これにより、パルス幅レジスタ162の出力値は入力値xiとなる。一方、カウンタ153の計数値CNTは依然として0なので、パルス幅レジスタ162の出力とカウンタ153の計数値CNTとは一致しなくなり、タイミングトリガ発生回路164の出力TはHレベルからLレベルに反転する。また、カウンタ153は、リセット信号resetがLレベルからHレベルに反転することにより、クロックclockの計数を開始する。尚、このとき、パルス幅レジスタ162は、ラッチされた加算値xiを出力し続ける。
クロックclockとともにカウンタ153がカウントアップし、時刻t3においてカウンタ153の計数値CNTが切換回路163の出力値であるxiと一致する。このとき、タイミングトリガ発生回路164の出力値TはLレベルからHレベルに反転する。これにより、出力パルス反転回路165の出力PoutiはHレベルからLレベルに反転する。これにより、出力パルス反転回路165の出力PoutiのパルスPWMiの幅が確定する。このパルス幅は、デジタル入力値xiに比例することから、デジタル・パルス幅変換が行われたこととなる。
更に、時刻t3から1クロック経過した時刻t4において、カウンタ153がカウントアップしてカウンタ153の計数値CNTが切換回路163の出力値xiと不一致となると、タイミングトリガ発生回路164の出力TiはHレベルからLレベルに反転する。
そして、カウンタ153はカウントアップするまで計数を続ける。この間、カウンタ153の計数値CNTと入力値xiとが一致することはないので、タイミングトリガ発生回路164の出力TiはLレベルを保持し、出力パルス反転回路165の出力もLレベルに保持される。カウンタ153がカウントアップするとカウンタ153の計数値は総て0となり、1サイクルが終了する。そして、続けて同様のサイクルが繰り返される。
以上のようにして、各パルス生成回路152−i(i=0,…,n−1)は、入力値xiの値に比例した時間幅の出力パルスPWMiを出力する。(ただし、この時間幅は、厳密にはreset信号がLの期間の2クロック分のオフセットが入る。これは、xiからあらかじめ2を引いておくなどの処理で対処できる。)このとき、各パルス生成回路152−iは、共通のカウンタ153が出力する計数値CNTを用いて、デジタル入力値xiとの比較を行う。従って、総てのパルス生成回路152−iにカウンタを備えた場合と比べると、消費電力が極めて小さくなる。
すなわち、総てのパルス生成回路152−iにカウンタを備えた場合には、各カウンタ内のスイッチング素子はクロックごとに少なくとも一つの素子の切換が行われる。従って、例えば、スイッチング素子としてCMOSを使用した場合、切換に伴って貫通電流や負荷への充放電電流が流れる。そのため、デジタル・パルス幅変換回路全体としての消費電力は大きくなる。
一方、本実施形態のように、一つのカウンタ153を駆動し、各パルス生成回路152−iはこの共通のカウンタ153の出力値を参照してパルスの切り換えを行うようにすると、カウンタ153内のスイッチング素子の切換に伴って生じる貫通電流や負荷への充放電電流も少なく、消費電力も小さい。従って、デジタル・パルス幅変換回路151の低消費電力化が図られる。また、カウンタ153を共通化したことにより、回路のレイアウト面積が小さくなり、デジタル・パルス幅変換回路151の小型化が図られる。
続いて、図15に示すように前記PWM信号はそれぞれスイッチド電流源24の動作のオン・オフを制御する。
すなわち本実施形態においては、PWM信号がHighの期間はスイッチがオンとなり、キャパシタ25に所定の電流が流れ込む。またPWM信号がLowの期間はスイッチがオフとなり、キャパシタ25への電流の電流の流入がストップする。結果として、キャパシタ25にはそれぞれのPWM信号の時間幅に比例した電荷量が蓄積される。
キャパシタ25においては、バッファ26を介して蓄積した電荷量は電圧値として参照することができるため、図15に示すようにアナログ演算回路に対して非演算値Xiに相当するアナログ電圧値として入力される。
なお上記で説明したソーティング回路の具体的な回路構成は、本発明の主眼とするところではなく、同様の機能を実現するものであれば、その他の回路構成を用いても構わない。
続いて、荷重保持回路について説明する。荷重保持回路は図19に示すように、入力保持回路と同様にキャパシタ37と出力バッファ38により構成されており、被演算値Wiの値をキャパシタ37に蓄積された電圧値として保持している。
また荷重保持回路に関しては、図20に示すようにデジタルメモリ(例えばSRAM)に保持された被演算値Wiの値をD/A変換してから、前述した荷重保持回路にアナログ値として保持するものであっても構わない。この場合のD/A変換回路の処理工程は、前述した連想メモリを使用する場合におけるD/A変換回路と全く同様であるため、説明を省略する。
続いて、被演算値Xiと被演算値Wiがアナログ電圧値として入力される前記所定の演算回路において行なわれる演算処理について説明する。
本実施形態における演算回路は図12に示すように、アナログ演算回路として、アナログ乗算器17とキャパシタ18と、出力バッファ19から構成される。ここで、被演算値XiとWiはアナログ電圧としてアナログ乗算器17に入力され、Xi×Wiが演算される。なお、各演算回路に入力される被演算値Wiの値は、演算毎に同一の場合も異なる場合もある。
続いて前記Xi×Wiの乗算結果は、電荷量で表現され、キャパシタ18に追加蓄積される。ここで、本実施形態ではアナログ乗算器17による乗算結果は、電荷量として出力されることを想定しているが、電圧値として出力される方法などその他の出力方法であっても同様の機能を実現できるものであれば構わない。
以上の処理を繰り返すことにより、複数のXiとWiとの乗算結果の累算値がキャパシタ18に保持され、所定の累算が完了すると出力バッファ19を介して累算値が出力される。
なお、デジタル値とアナログ値の違いはあるが、被演算値Xiに対応するアナログ電圧値が、被演算値Xiのラベルに対応してスイッチ回路を切り替えることにより、所定の演算回路に入力されることは第一の実施形態と同様である。また、被演算値Xiが入力されない演算回路では演算処理が行なわれないのも第一の実施形態と同様である。
またデジタル値とアナログ値の違いはあるが、本実施形態においては、被演算値Wiに相当するアナログ電圧値は、被演算値Xiと同様に、被演算値Xiが有するラベルに応じてスイッチ回路においてスイッチングが行なわれ、ラベルによって決定される所定の演算回路に入力されるが、本実施形態とは異なる手法として、被演算値Wiに相当するアナログ電圧値が入力される所定の演算回路が、被演算値Xiのラベルにはよらず事前に設定されている手法を用いることも可能であるのも、第一の実施形態と同様である。
このように、前記演算回路にアナログ電圧として入力される被演算値Xiは、ソーティング回路における処理によって値が大きいもの順に入力され、かつ同じ値を持つものは連続して入力されるため、被演算値Xiがランダムに入力される場合よりも電圧変動が小さくなり、電圧変動により生ずるタイムラグ及び電力消費を削減することが可能となる。
なお本実施形態においては、ソーティング回路は被演算値Xiを値の大きいもの順にソートしたが、値の小さいもの順にソートした場合にも、前記と同様の効果がある。
(第三の実施形態)
第三の実施形態を具体的な処理構成図を参照して説明する。本実施形態での積和演算方法を実行するための処理回路の構成図は、図21によって示される。
図22は、演算回路をアナログ回路で構成したアナログ演算回路を示す。図22に示すように、本実施形態におけるアナログ演算回路は、アナログ乗算器45と、キャパシタ46と、出力バッファ47とから構成される。図23は、ランプ生成回路を示す。
また、入力保持回路2とソーティング回路4は第一の実施形態と同様に連想メモリ回路で構成されている。またソーティング回路の後段には、メモリ回路43が構成され、さらにメモリ回路43の後段にランプ生成回路44が構成されており、ランプ生成回路44の出力がスイッチ回路5に入力されている。なお、本実施形態におけるメモリ回路43はSRAMにより構成される。
以上説明した図を用いて、本実施形態における積和演算方法を用いた処理過程について説明する。連想メモリ回路には、被演算値Xiの値と、それぞれの被演算値Xiが有するラベルが保持されている。
これに対して、連想メモリ回路の一般的な機能として、値の大きなもの順に被演算値Xiを検索していき、そのラベルを出力する。また同時に、被演算値Xiを値が大きいもの順に検索する際の検索値に関して、その検索値を1単位減らす時のみ、パルス信号のフラグを出力する(本実施形態においては、フラグ=1を出力する)。(なお、本実施形態とは別の手法として、被演算値Xiを値が小さいもの順に検索する際の検索値に関して、その検索値を1単位増やす時のみ、パルス信号のフラグを出力する手法も可能である。)
図21に示すように、前記ラベルとフラグは、それぞれ対応するものが、検索された順番に(つまり値の大きいもの順に)後段のSRAMに入力され保持される。続いてSRAMは、前記ラベルとフラグを保持している順に(つまり値の大きいもの順に)出力し、ラベルはスイッチ回路5に入力され、フラグはランプ生成回路44に入力される。
続いて、ランプ生成回路44について説明を行なう。ランプ生成回路44は、図23に示すように所定の電圧値Vbにバイアスされた電圧制御電流源48とキャパシタ50とスイッチ49とバッファ51により構成される。ここで、前記フラグがランプ生成回路44に入力され、スイッチ49をオンにすると、電圧制御電流源48から一定の電流が流れてキャパシタ50に蓄積される。
前記フラグは連想メモリにおける検索値が1単位減る時のみ1になるため、スイッチ49がオンになるのは、検索値が1単位減る時のみである。従って、ランプ生成回路44におけるノードの電圧値は図23の波形のように変化する。すなわち、被演算値Xiの値の大きいもの順に対応する、単調に増加する電圧値が生成される。(ここで「単調」とは、時間に対して一定値を示す場合を含んでいる。以下同様)
なお、ここで被演算値Xiの値の大きいもの順に対応した電圧値として、単調に増加する電圧値を設定したが、後述するアナログ乗算器によっては、単調に減少する電圧値を設定しても良い。この場合は、ランプ生成回路44において、初期状態として所定の電荷を蓄積したキャパシタ50から、電圧制御電流源によって電荷を引き抜くことにより実現することができる。
続いて、ランプ生成回路44で生成された単調に増加する電圧値は、スイッチ回路5に入力される。スイッチ回路5は、入力された前記ラベルに対応してスイッチングを行い、ラベルによって決定される所定の演算回路1に対して、単調に増加する電圧値を入力する。
ここで、演算回路1に関して考えると、その演算回路1が、ラベルによって決定される所定の演算回路に一致する場合のみ、単調に増加する電圧値が入力されることとなり、かつメモリ回路43から出力されるラベルが変化して、ラベルによって決定される所定の演算回路に一致しなくなった場合は、スイッチングにより、単調に増加する電圧値は入力されなくなる。つまり、演算回路1においては、ラベルの出力タイミングによって単調に増加する電圧値をサンプリングすることになり、これはすなわちラベルによるスイッチングのタイミングで被乗算値Xiに対応する適当な電圧値が入力されることを意味する。
なお、被演算値Xiが入力されない演算回路1では演算処理が行なわれないのは第二の実施形態と同様である。また、荷重保持回路3における演算処理は、第二の実施形態と同様であるため、説明を省略する。
続いて、アナログ演算回路においては、図22に示すとおりアナログ乗算器45に入力された被演算値Xiと被演算値Wiの乗算を行い、キャパシタ46に演算結果に相当する電荷が蓄積される。なお、アナログ演算回路における処理は第二の実施形態と同様であるため、説明を省略する。なお本実施形態においては、被演算値Xiが入力値保持回路2に対してPWM信号として入力されるものであっても構わない。この場合に関しては、PWM信号の入力処理工程は第一の実施形態と同様として、説明を省略する。
(第四の実施形態)
本実施形態では、第二、第三の実施形態におけるアナログ演算回路として別の回路構成を用いたものに関して説明を行なう。なお、アナログ演算回路以外に関しては、第二、第三の実施形態と同様である。
図24に本実施形態で説明するアナログ演算回路を示す。図24に示すように、アナログ演算回路は、電圧制御電流源52と電圧制御抵抗素子53とキャパシタ55により構成され、被演算値Xiとして時間に関して単調に増加する電圧値が制御電圧として電圧制御電流源52に入力される。
ここで入力される時間に関して単調に増加する電圧値は、図26に示すように、被演算値Xiに相当する電圧値をWTA回路56によって値の大きいもの順に出力する際に、連続したアナログ電圧値として出力することにより生成される。なお、時間に関して単調に増加する電圧値を第三の実施形態と同様にメモリ回路とランプ生成回路を用いて生成しても構わない。この場合は、入力値保持回路及びソーティング回路は、第三の実施形態と同様デジタル回路で構成される。
またこの場合は、被演算値Xiが入力値保持回路に対してPWM信号として入力されるものであっても構わない。この場合に関しては、PWM信号の入力処理工程は第一の実施形態と同様として、説明を省略する。
続いて図25に示すように、WTA回路56(ソーティング回路4)から出力された時間に関して単調に増加する電圧値は、スイッチ回路5を経て演算回路1に入力される。ここでアナログ演算回路においては、ある時間タイミングで単調に増加する電圧値を参照することにより、第二、第三の実施形態で説明したのと同様に、被演算値Xiに相当する電圧値が、大きいもの順に、ラベルに対応するアナログ演算回路の電圧制御電流源52の制御電圧として入力される。なお電圧制御電流源52は、MOSトランジスタの飽和特性を利用して構成しても良いし、また差動型構成にしても良い。
続いてアナログ演算回路の電圧制御抵抗素子53に対して、被演算値Wiに相当するアナログ電圧値を制御電圧として入力する。ここで電圧制御抵抗素子53は、入力されたアナログ電圧値に応じて所定の抵抗値Rを示す。なお電圧制御抵抗素子53は、MOSトランジスタの線形特性を利用して構成しても良いし、また差動型構成にしても良い。
続いて、所定の演算タイミングで参照された被演算値Xiに相当するアナログ電圧値で決定される電圧制御電流源52の電流Iが、被演算値Wiに相当するアナログ電圧値で決定される電圧制御抵抗素子53(この時の抵抗値をRとする)を流れることにより、Xi×Wiの演算結果が、図24中のノードにおいて、I×Rの電圧値として観察される。ノードの電圧は、さらに制御電圧として電圧制御電流源54に入力されることで、キャパシタにI×Rによって決定される電流iが流れる。
なお電圧制御電流源54は、MOSトランジスタの飽和特性を利用して構成しても良いし、また差動型構成にしても良い。ここで、スイッチ回路5のスイッチング間隔を一定時間に設定しておくことで、I×R×(スイッチング間隔)の電荷をキャパシタ55に蓄積することができる。
以上の演算動作を繰り返すことにより、累算結果が電荷量としてキャパシタ55に保持される。
このようにして、図25に示した積和演算回路によって、第二、第三の実施形態に示したものと同様の演算を行なう事ができる。なお、本実施形態においては被演算値Xiに相当するアナログ電圧を時間に対して単調に増加する電圧値としたが、演算目的に応じて、時間に対して単調に減少する電圧値としても良い。
また、被演算値Xiに対応するアナログ電圧値が、被演算値Xiのラベルに対応してスイッチ回路5を切り替えることにより、所定の演算回路に入力されることは第二、第三の実施形態と同様である。また、被演算値Xiが入力されない演算回路1では演算処理が行なわれないのも第二、第三の実施形態と同様である。
また、本実施形態においては、被演算値Wiに相当するアナログ電圧値は、被演算値Xiと同様に、被演算値Xiが有するラベルに応じてスイッチ回路5においてスイッチングが行なわれ、ラベルによって決定される所定の演算回路1に入力されるが、本実施形態とは異なる手法として、被演算値Wiに相当するアナログ電圧値が入力される所定の演算回路が、被演算値Xiのラベルにはよらず事前に設定されている手法を用いることも可能であるのも、第二、第三の実施形態と同様である。
(第五の実施形態)
本実施形態の構成を図27に示す。本実施形態は、第三または第四の実施形態で説明した、時間に関して単調に増加するアナログ電圧値を係数Ki倍することで、被演算値Xiに所定の係数Kiを掛け合わせた演算を行なうことが可能な点が、第三または第四の実施形態と異なっている。
従って本実施形態においては、第三または第四の実施形態と異なる点についてのみ説明を行い、その他に関しては第三または第四の実施形態と同様として説明を省略する。
すなわち図27に示すように、単調に増加するアナログ電圧値が係数Ki倍されることは、所定の演算タイミングで参照される電圧値(つまり被演算値Xi)に関して、所定の係数Kiが掛け合わせられていることを意味する。従って、演算回路1に入力する単調に増加するアナログ電圧値を係数Ki倍することで、Ki×Xi×Wiの3項の乗算を演算することが可能となる。
また、図27に示すように、それぞれ異なる値の係数Kiを掛けた単調に増加するアナログ電圧値を並列に入力することにより、それぞれの演算回路1において異なる3項の乗算を並列に演算することが可能となる。なお、それぞれの単調に増加するアナログ電圧値に対する係数Kiを変化させるためには、ソーティング回路4(WTA回路またはランプ生成回路)の後段にそれぞれのKiの値に対応する電圧増幅器57を置くことで実現される。図27では、WTA回路の後段に電圧増幅器57を置いた例を示している。
また、ランプ生成回路の後段に電圧増幅器57を置いた場合は、図21においてランプ生成回路44から出力される単調に増加するアナログ電圧値に対して、図21と同様にそれぞれのKiの値に対応する電圧増幅器57を置くことで実現される。また、本実施形態においては単調に増加するアナログ電圧値を用いた場合について説明を行なったが、単調に減少するアナログ電圧値を用いた場合も同様の演算が可能である。
なお、被演算値Xi×係数Kiに対応する単調に増加するアナログ電圧値が、被演算値Xiのラベルに対応してスイッチ回路5を切り替えることにより、所定の演算回路に入力されることは第三、第四の実施形態と同様である。
また、本実施形態においては、被演算値Wiに相当するアナログ電圧値は、被演算値Xiと同様に、被演算値Xiが有するラベルに応じてスイッチ回路5においてスイッチングが行なわれ、ラベルによって決定される所定の演算回路1に入力されるが、本実施形態とは異なる手法として、被演算値Wiに相当するアナログ電圧値が入力される所定の演算回路が、被演算値Xiのラベルにはよらず事前に設定されている手法を用いることも可能であるのも、第三、第四の実施形態と同様である。また本実施形態において、被演算値Xiが入力値保持回路2に対してPWM信号として入力される場合に関しては、第三、第四の実施形態と同様である。
(第六の実施形態)
第六の実施形態を図28及び図29を参照して説明する。本実施形態は、第三または第四の実施形態で説明した、時間に関して単調に増加するアナログ電圧値を係数Ki倍することで、被演算値Xiに所定の係数Kiを掛け合わせた演算を行なうことが可能な点が、第三または第四の実施形態と異なっている。
従って本実施形態においては、第三または第四の実施形態と異なる点についてのみ説明を行い、その他に関しては第三または第四の実施形態と同様として説明を省略する。
図28において、被演算値Xiを大きいもの順にソートするためには、第一の実施形態と同様にソーティング回路4として、連想メモリが用いられている。
また、連想メモリの後段には、被演算値Xiに関する同値判定回路58が接続されている。同値判定回路58は、内部にレジスタ等のメモリ機能を有しており、連想メモリから前回出力された被演算値Xiの値を記憶している。
ここで連想メモリから出力された次の被演算値Xi'が、同値判定回路58に入力されると、同値判定回路58においては、今回入力された被演算値Xi'と前回入力された被演算値Xiの値が比較され、両者の値が異なる場合には後述するランプ生成回路60のスイッチをオンにする検出信号を出力する。なお、両者の値が等しい際には、検出信号を出力しないため、ランプ生成回路60のスイッチはオフのままである。
続いて、演算回路1における演算処理は、第三または第四の実施形態と同様に実施される。ここで、演算回路1に入力される時間に対して単調に増加する電圧値は、図29のランプ生成回路によって作成される。ランプ生成回路60においては、係数Kiに相当する電圧値を制御電圧として電圧制御電流源61に与えることで一定の電流が流れ、キャパシタ50に電荷が蓄積される。
ここで、ランプ生成回路60のスイッチ49は前述した通りに同値判定回路58からの検出信号によりオンされる。すなわちランプ生成回路60は、連想メモリからの出力値が前回の出力値と等しい場合は、スイッチ49がオフになり前記のキャパシタ50への電荷蓄積動作を停止し、連想メモリからの出力値が前回の出力値と異なる場合だけスイッチ49がオンになり、ノードの電圧値が図29のように変化する。
この際、係数Kiに相当する電圧値を適当に設定することにより、第五の実施形態で説明したのと同様に、単調に増加する電圧値を係数Ki倍することができる。
これをバッファ51を介してアナログ演算回路に入力することによって、第五の実施形態と同様にKi×Xi×Wiの3項の乗算を演算することが可能となる。その他の演算処理動作は第三または第四の実施形態と同様であるため、説明を省略する。
なお電圧制御電流源61は、MOSトランジスタの飽和特性を利用して構成しても良いし、また差動型構成にしても良い。また、ランプ発生回路自体60も、同様の機能を実現できるものであれば、その他の回路構成を使用しても構わない。また、本実施形態においては単調に増加するアナログ電圧値を用いた場合について説明を行なったが、単調に減少するアナログ電圧値を用いた場合も同様の演算が可能である。
なお、被演算値Xi×係数Kiに対応する単調に増加するアナログ電圧値が、被演算値Xiのラベルに対応してスイッチ回路5を切り替えることにより、所定の演算回路に入力されることは第三、第四の実施形態と同様である。また、本実施形態においては、被演算値Wiに相当するアナログ電圧値は、被演算値Xiと同様に、被演算値Xiが有するラベルに応じてスイッチ回路5においてスイッチングが行なわれ、ラベルによって決定される所定の演算回路に入力されるが、本実施形態とは異なる手法として、被演算値Wiに相当するアナログ電圧値が入力される所定の演算回路が、被演算値Xiのラベルにはよらず事前に設定されている手法を用いることも可能であるのも、第三、第四の実施形態と同様である。
また本実施形態において、被演算値Xiが入力値保持回路2に対してPWM信号として入力される場合に関しては、第三または第四の実施形態と同様である。
(第七の実施形態)
第七の実施形態を図30及び図31を参照して説明する。本実施形態は、それぞれのランプ生成回路62に対して係数値保持回路59からの出力を入力すること以外は第三の実施形態と同様の構成を有する。そこで、本実施形態の説明においては第三の実施形態と異なる点についてのみ説明を行い、それ以外は第三の実施形態と同様として説明を省略する。
まず図30に示すように、係数値保持回路59から係数Kiに対応する電圧値をそれぞれのランプ生成回路62に入力する。ランプ生成回路においては、図23とは異なり図31に示すように係数Kiに対応する電圧値が電圧制御電流源61のゲートに与えられることで、係数Kiに応じた一定電流が電圧制御電流源61を流れる。すなわち、本実施形態と第三の実施形態との相違は、ランプ生成回路62における電圧制御電流源61の電流量を係数値保持回路59に保持した係数Kiによって制御することが出来る点にある。
電圧制御電流源61の電流値の変化は、キャパシタ50に蓄積される単位時間あたりの電荷量の変化量に相当し、すなわちこれはノードの電圧値の時間に対する変化の傾きが変わることを意味する。これは第五または第六の実施形態で説明したように、単調に増加する電圧値を係数Ki倍することに相当するため、これをバッファ51を介してアナログ演算回路に入力することによって、第五または第六の実施形態と同様にKi×Xi×Wiの3項の乗算を演算することが可能となる。また本実施形態において、被演算値Xiが入力値保持回路2に対してPWM信号として入力される場合に関しては、第三の実施形態と同様である。
(第八の実施形態)
第八の実施形態を図32〜図35を参照して説明する。本実施形態におけるニューラルネットワークモデルを図32に示す。
また、本実施形態におけるニューラルネットワークに対して第一、第二、第三及び第四の実施形態で説明した積和演算回路を適用する際の演算処理回路の構成を図33に示す(なお、図33は第三の実施形態で説明した積和演算回路を適用した場合を示している)。図33に示すように、本実施形態におけるニューラルネットワークの処理回路は、第一、第二、第三及び第四の実施形態で説明した積和演算回路による処理回路を含んでいる。
まず、図32に示すようにニューラルネットワークにおけるニューロン素子のモデルとしては、ニューロン素子63において、前段の複数のニューロン素子の出力値をシナプス荷重64で重み付けした値の総和を取り、ニューロン素子63の内部状態値を決定するものが一般的である。本実施形態におけるニューロン素子回路は、ニューロン素子のモデルとして、第一もしくは第二、第三、第四の実施形態で説明した演算処理回路を用いている。
すなわち第一もしくは第二、第三、第四の実施形態で説明した被演算値Xiが前段ニューロン素子の出力値に相当し、また被演算値Wiがシナプス荷重値64に相当し、ニューロン素子63の内部状態値を決定する。
続いて図33に示すように、各演算回路で算出された累算値は所定の関数処理を行なう関数処理回路65に入力される。関数処理回路65は、目的に応じて非線形関数処理を行なっても良いし、線形関数処理を行なっても良い。本実施形態では、一例として図34に示すシグモイド変換を行なう処理回路としている。
また前記関数処理回路65は、実際の回路構成としては、デジタル回路の場合はルックアップテーブルで実現することが可能であり、アナログ回路の場合はコンパレータで実現することが可能である。
また前記関数処理は、演算ブロック1で算出された累算結果に対して処理を行なうものであれば、関数処理回路65を接続する位置は、他の部位であっても構わない。関数処理回路65の回路構成としては、その他にも様々な回路構成が提案されているが、本発明の主眼とするところではないので、説明を省略する。
続いて、前記関数処理回路65によりシグモイド変換を施された結果の値(すなわち次の階層における被演算値Xiに相当)は、次の階層に相当する積和演算回路の入力保持回路に保持される。ここでは、前記の値(次の階層における被演算値Xiに相当)のラベルも、同時に保持される。
以上説明した演算処理を繰り返すことにより、図32に示したニューラルネットワークにおける演算処理を実現することが可能になる。ここでは、積和演算手法として第一、第二、第三及び第四の実施形態で説明した手法を用いているため、第一、第二、第三及び第四の実施形態で説明した効果を有するニューラルネットワーク回路を構成することが可能となる。
またさらに、各ニューロン素子間(積和演算回路間)の入出力においては、後段のニューロン素子回路(積和演算回路)に対して被演算値XiをPWM信号として入力することも可能であるのも、第一、第二、第三及び第四の実施形態と同様である。
この際、演算回路がアナログ演算回路の場合は、図35に示すように、キャパシタに蓄積された電荷量をコンパレータ66によってPWM信号として読み出し、後段のパルス幅・デジタル変換回路67に入力する。ここで、コンパレータ66によるPWM信号作成手法は広く知られている手法であり、詳しくは説明しないが、参照電圧としてランプ電圧波形を入力した場合は、電荷量に比例するPWM信号として読み出すことができ、また参照電圧として非線形な電圧波形を入力した場合は、電荷量に対して非線形に対応するPWM信号として読み出すことができ、つまり関数処理回路として機能させることができる。
また、キャパシタに蓄積された電荷量をコンパレータ66によって電荷量に比例するPWM信号として読み出し、さらに後段のパルス幅・デジタル変換回路67でデジタル値に変換した後に、ルックアップテーブルによって関数処理を行なうことも可能である。なお本実施形態におけるニューロン素子数及び階層数は、本発明におけるニューラルネットワークの構成を限定するものではなく、必要に応じて任意の数に設定することが可能である。
(第九の実施形態)
第九の実施形態を図36を参照して説明する。本実施形態におけるニューラルネットワークモデルは、シナプス荷重値が、被演算値Wiと係数Kiの積Wi×Kiで表されることを除いて、第八の実施形態で説明したニューラルネットワークモデルと同様である。
また、本実施形態におけるニューラルネットワークに対して第五、第六または第七の実施形態で説明した積和演算回路を適用する際の演算処理回路の構成を図36に示す(図は、第七の実施形態で説明した積和演算回路を適用した場合を示している)。本実施形態におけるニューロン素子のモデルは、ニューロン素子において、前段の複数のニューロン素子の出力値をWi×Kiで表されるシナプス荷重で重み付けした値の総和を取り、ニューロン素子の内部状態値を決定する。
そこで本実施形態におけるニューロン素子回路は、ニューロン素子のモデルとして、第五、第六または第七の実施形態で説明した演算処理回路を用いている。
すなわち第五、第六または第七の実施形態で説明した被演算値Xiが前段ニューロン素子の出力値に相当し、また被演算値WiとKiの積がシナプス荷重値に相当し、ニューロン素子の内部状態値を決定する。
なお、続いて行なう関数処理、及び関数処理後の演算値の入力・保持に関しては第八の実施形態と同様であるため、説明を省略する。また、各ニューロン素子間(積和演算回路間)の入出力において、後段のニューロン素子回路(積和演算回路)に対して被演算値XiをPWM信号として入力することに関しても第八の実施形態と同様であるため、説明を省略する。
ここでは、積和演算手法として第五、第六または第七の実施形態で説明した手法を用いているため、第五、第六または第七の実施形態で説明した効果を有するニューラルネットワーク回路を構成することが可能となる。また本実施形態におけるニューロン素子数及び階層数は、本発明におけるニューラルネットワークの構成を限定するものではなく、必要に応じて任意の数に設定することが可能である。
(第十の実施形態)
ニューラルネットワークの演算処理は、一般的に図32で示したモデルで説明されるが、実際の演算においては、ニューロン素子に入力される前段ニューロンの出力値のうち、所定値以上の値を有するものだけの演算処理を行なって内部状態を決定しても、最終的なニューラルネットワークの演算能力がほとんど変わらないケースが多い。その場合、前記所定値よりも小さい値を有する演算処理を省略した方が、ニューラルネットワークを回路化した場合には、消費電力や演算速度の点で有利となる。
本実施形態は、第八および第九の実施形態でニューラルネットワークに適用した第一〜第七の実施形態に関して、被演算値Xiをソーティング回路によって大きいもの順にソートした後、さらに所定値未満の値を有するXiに関する演算を省略する演算回路を説明するものである。図41は、第一〜第九の実施形態で説明した演算処理構成の図1、図5、図21、図25、図27、図28、図30、図33、図35および図36において、本実施形態の機能を実現するために、ソーティング回路4に対してさらに所定値保持メモリ171が付加されている部分のみを抽出して図示している。従って、図41に図示した部分以外は、図1、図5、図21、図25、図27、図28、図30、図33、図35および図36に図示した構成と同様である。
すなわち、ソーティングブロック4に対して、所定値保持メモリ171から所定値に関するデータが入力され、被演算値Xiに関するソーティング処理は所定値に達した時点で打ち切られる。
ここで、所定値未満の値を有するXiに関する積和演算の省略は、ソーティング回路として連想メモリを用いる場合においては、連想メモリにおける内容検索時に検索値を順番に小さくしていく際に、所定値に達した時点で処理を打ち切ることで実現される。またソーティング回路としてWTA回路を用いる場合においては、WTA回路によるソーティング時に、参照電圧値が所定値に達した時点で処理を打ち切ることで実現される。
なお本実施形態においては、所定値未満の値を有するXiに関する積和演算を省略する回路として上記2例を挙げたが、同様の効果を有するものであれば、その他の回路及び手法を用いても良い。
以上説明したように、所定値未満の値を有するXiに関する積和演算を省略することにより、実際の処理回路を構成する際の低消費電力化及び動作速度の向上が可能となる。
(第十一の実施形態)
ニューラルネットワークの演算処理能力に関しては、第十の実施形態において、ニューロン素子に入力される前段ニューロンの出力値のうち、所定値よりも小さい値を有する演算処理を省略せずに、一定値として演算を行なった方がより演算処理能力が向上するケースがある。そこで本実施形態は、第十の実施形態において被演算値Xiをソーティング回路によって大きいもの順にソートして出力した後、さらに所定値未満の値を有するXiに関しては、その値を一定値とする演算回路を説明するものである。
図42は、第十の実施形態で説明した図41のソーティングブロック4に対して、さらに一定値保持メモリ172が付加されている部分が異なっている。従って、図42に図示した部分以外に関しては、第十の実施形態で説明したものと同様である。すなわち、ソーティングブロック4に対して、所定値保持メモリ171から所定値に関するデータが入力され、被演算値Xiに関するソーティング処理は所定値に達した時点で打ち切られる。
さらに、ソーティングブロック4に対して、一定値保持メモリ172から一定値に関するデータが入力され、被演算値Xiの値として前記一定値が出力される。
ここで、所定値未満の値を有するXiを一定値として演算する回路は、第十の実施形態におけるソーティング回路として連想メモリを用いる場合においては、連想メモリにおける内容検索時に検索値を順番に小さくしていく際に、所定値に達した以降の被演算値Xiの値を事前に設定した一定値として出力することで実現できる。
この際には、事前に設定した一定値を別のメモリに用意し、被演算値Xiの値が所定値に達すると同時に連想メモリの処理を中止し、前記のメモリから事前に設定した一定値を出力すれば良い。また、同様の機能を実現できるのであればその他の回路及び方法を用いても良い。また第十の実施形態におけるソーティング回路としてWTA回路を用いる場合においては、WTA回路によるソーティング時に、参照電圧値が所定値に達した以降の被演算値Xiに相当する電圧値を事前に設定した一定値として出力することで実現できる。
この際には、事前に設定した一定値を別のアナログメモリに用意し、被演算値Xiの値が所定値に達すると同時にWTA回路の処理を中止し、前記のアナログメモリから事前に設定した一定値を出力すれば良い。また、同様の機能を実現できるのであればその他の回路及び方法を用いても良い。
(第十二の実施形態)
ニューラルネットワークの演算処理は、一般的に図32で示したモデルで説明されるが、実際の演算においては、ニューロン素子に入力される前段ニューロンの出力値のうち、値の大きいものから数えて所定の割合を占めるものだけの演算処理を行なって内部状態を決定しても、最終的なニューラルネットワークの演算能力がほとんど変わらないケースが多い。その場合、値の大きいものから数えて所定の割合を占めるもの以外に関する演算処理を省略した方が、ニューラルネットワークを回路化した場合には、消費電力や演算速度の点で有利となる。
本実施形態は、第八、第九の実施形態でニューラルネットワークに適用した第一〜第七の実施形態において、被演算値Xiをソーティング回路によって大きいもの順にソートした後、さらに値の大きいものから数えて所定の割合を占める被演算値Xi以外の被演算値Xiに関する演算を省略する演算回路を説明するものである。
図43は、第一〜第九の実施形態で説明した演算処理構成の図1、図5、図21、図25、図27、図28、図30、図33、図35および図36において、本実施形態の機能を実現するために、ソーティングブロック4に対してさらに所定数(割合)保持メモリ173が付加されている部分のみを抽出して図示している。従って、図43に図示した部分以外は、図1、図5、図21、図25、図27、図28、図30、図33、図35および図36に図示した構成と同様である。
すなわち、ソーティングブロック4に対して、所定数(割合)保持メモリ173から所定数(割合)に関するデータが入力され、被演算値Xiに関するソーティング処理は所定数(割合)に達した時点で打ち切られる。
ここで、値の大きいものから数えて所定の割合を占める被演算値Xi以外の被演算値Xiに関する積和演算の省略は、ソーティング回路として連想メモリを用いる場合においては、連想メモリにおける内容検索時に検索値を順番に小さくしていく際に、出力した被演算値Xiの数が所定数(割合)に達した時点で処理を打ち切ることで実現される。またソーティング回路としてWTA回路を用いる場合においては、WTAによるソーティング時に、参照電圧値が所定数(割合)の被演算値Xiに相当する電圧値に達した時点で処理を打ち切ることで実現される。
なお本実施形態においては、値の大きいものから数えて所定の割合を占める被演算値Xi以外の被演算値Xiに関する積和演算を省略する回路として上記2例を挙げたが、同様の効果を有するものであれば、その他の回路及び手法を用いても良い。
以上説明したように、値の大きいものから数えて所定の割合を占める被演算値Xi以外の被演算値Xiに関する積和演算を省略することにより、実際の処理回路を構成する際の低消費電力化及び動作速度の向上が可能となる。
(第十三の実施形態)
ニューラルネットワークの演算処理能力に関しては、第十二の実施形態において、ニューロン素子に入力される前段ニューロンの出力値のうち、値の大きいものから数えて所定の割合を占める出力値以外の出力値に関する演算処理を省略せずに、一定値として演算を行なった方がより演算処理能力が向上するケースがある。そこで本実施形態は、第十二の実施形態において被演算値Xiをソーティング回路によって大きいもの順にソートした後、さらに値の大きいものから数えて所定の割合を占める被演算値Xi以外の被演算値Xiに関しては、その値を一定値とする演算回路を説明するものである。
図44は、第十二の実施形態で説明した図43のソーティングブロック4に対して、さらに一定値保持メモリ174が付加されている部分が異なっている。
従って、図44に図示した部分以外に関しては、第十二の実施形態で説明したものと同様である。すなわち、ソーティングブロック4に対して、所定数(割合)保持メモリ173から所定数(割合)に関するデータが入力され、被演算値Xiに関するソーティング処理は所定数(割合)に達した時点で打ち切られる。
さらに、ソーティングブロック4に対して、一定値保持メモリ174から一定値に関するデータが入力され、被演算値Xiの値として前記一定値が出力される。ここで、値の大きいものから数えて所定の割合を占める被演算値Xi以外の被演算値Xiを一定値として演算する手法は、ソーティング回路として連想メモリを用いる場合においては、連想メモリにおける内容検索時に検索値を順番に小さくしていく際に、出力した被演算値Xiの数が所定数(割合)に達してから以降の被演算値Xiの値を事前に設定した一定値として出力することで実現できる。この際には、事前に設定した一定値を別のメモリに用意し、出力した被演算値Xiの数が所定数(割合)達すると同時に連想メモリの処理を中止し、前記のメモリから事前に設定した一定値を出力すれば良い。また、同様の機能を実現できるのであればその他の回路を用いても良い。
またソーティング回路としてWTA回路を用いる場合においては、WTA回路によるソーティング時に、参照電圧値が所定数(割合)の被演算値Xiに相当する電圧値に達してから以降の被演算値Xiに相当する電圧値を事前に設定した一定値として出力することで実現できる。この際には、事前に設定した一定値を別のアナログメモリに用意し、参照電圧値が所定数(割合)の被演算値Xiに相当する電圧に達すると同時にWTAの処理を中止し、前記のアナログメモリから事前に設定した一定値を出力すれば良い。また、同様の機能を実現できるのであればその他の回路及び手法を用いても良い。
(第十四の実施形態)
第十四の実施形態における画像処理を行なう積和演算回路の構成例を図37に示す。図37に示すように、本実施形態における画像処理を行なう積和演算回路は、第八〜第十三の実施形態で説明したニューラルネットワーク回路を含むことを特徴としている。なお図37では、階層構造の初段のみを示しており、それ以降の階層の記述を省略している。
ここで、積和演算回路に対して入力される信号は画像信号である。すなわち、本実施形態における積和演算回路は、入力された画像信号に対して、ニューラルネットワーク回路により所定の演算を行うことにより、所望の画像処理(例えばパターン検出およびパターン認識)を行うことを目的とするものである。
なお、実際に実現される画像処理の内容は、ニューラルネットワーク回路の被演算値Wi及び係数値Ki等を適当に調整することで、所望の処理内容(例えばパターン検出およびパターン認識)が実現されるよう設定することが可能であるが、その詳しい調整方法は、本発明の主眼とするところではないので、説明を省略する。
ここで本実施形態においては、撮像素子(例えばCCDまたはCMOSイメージセンサなど)から出力される前記画像信号は、第一〜第七の実施形態における被演算値Xiに相当する。従って、前期画像信号に対して行なわれる演算処理は、第一〜第十三の実施形態における被演算値Xiに対して行なわれる演算処理と同様である。なお前記画像信号は、アナログ信号、デジタル信号またはPWM信号として入力する。ここで、それぞれの種類の信号に対応する演算処理は、第一から第十三の実施形態で説明した被演算値Xiの信号の種類に対応している。従って、演算処理に関する説明は各実施形態と同様として省略する。
なお図37においては、アナログ信号である画像信号をコンパレータ69によってPWM信号に変換し、さらにパルス幅・デジタル変換回路70によってデジタル値に変換して、ニューラルネットワーク回路に入力する場合を示している。
なお本実施形態においては、撮像素子として、CCDまたはCMOSイメージセンサを想定しているが、その他の撮像素子を用いても問題は無い。また本実施形態における撮像素子数、ニューロン素子数及び階層数は、本発明における画像信号処理回路の構成を限定するものではなく、必要に応じて任意の数に設定することが可能である。
続いて図38は、以上で説明した演算処理フローを示している。
まず撮像素子から出力された画像信号を入力する工程S1を実行し、次に入力された信号を保持する入力値保持工程S2を実行する。続いて、保持された入力値を値が大きいもの順に出力するソーティング工程S3を実行し、フラグとラベルをメモリに保持するメモリ保持工程S4を実行する。続いて、ランプ生成工程S6においては、係数値入力工程S5から入力された係数値とメモリ保持工程S4から入力されたフラグによって、時間に関して単調に増加する電圧波形(ランプ波形)を生成し、スイッチング工程S7に入力する。
スイッチング工程S7においては、メモリ保持工程S4から入力されたラベルにより、ランプ波形を適当な演算回路に入力する。また、スイッチング工程S9においては、メモリ保持工程S4から入力されたラベルにより、荷重値入力工程S8によって入力された荷重値を適当な演算回路に入力する。
ランプ波形と荷重値を入力された演算回路においては、乗算・累算工程S10を実行し、累算値を関数処理工程S11に出力する。関数処理工程S11では、所定の関数処理を実行し、出力値を後段層へ入力する工程S12を実行する。後段層側では、以上説明した演算処理工程を必要な回数(階層数)繰り返す。
以上説明したように、ニューラルネットワーク回路による演算処理を画像信号に適用することにより、所望の演算処理(例えばパターン検出およびパターン認識など)を実現することができる。