(57)【特許請求の範囲】
【請求項１】
被演算値を表わすパルス幅を持つパルス信号をデジタル信号に変換するパルス幅・デジタル変換手段と、
前記パルス幅・デジタル変換手段によりデジタル信号に変換された複数の被演算値を降順にソートし、当該複数の被演算値のうち、当該ソートされた順で上位の一部のみを出力するソーティング手段と、
前記ソーティング手段よりソートされた順に出力される各被演算値に対して、それぞれに対応する演算値を順次乗じる乗算手段と、
前記乗算手段による乗算結果の累算和を算出する累算和手段とを備え、
前記パルス幅・デジタル変換手段が、
クロックを計数してその計数値をデジタル信号として出力する単一のカウンタと、
前記カウンタの出力する計数値が共通して入力され、複数のパルス信号のそれぞれに対応する各１つが並列に入力される複数の終端ラッチ回路とを有し、
前記複数の終端ラッチ回路の各々が、前記カウンタが出力する計数値を、それぞれに並列して入力される各パルス信号の終端においてラッチすることを特徴とする積和演算回路。
【請求項２】
前記パルス幅・デジタル変換回路が、
前記パルス信号の始端において前記カウンタが出力する計数値をラッチする始端ラッチ回路と、
前記終端ラッチ回路のデジタル出力値と前記始端ラッチ回路のデジタル出力値との差を演算して出力する減算回路と
を、前記複数の終端ラッチ回路の各々に対応して備えていることを特徴とする請求項１に記載の積和演算回路。
【請求項３】
前記ソーティング手段は、前記複数の被演算値のうち所定値以上の被演算値を出力することを特徴とする請求項１に記載の積和演算回路。
【請求項４】
前記ソーティング手段は、前記複数の被演算値のうち所定値未満の被演算値に代えて一定値を出力することを特徴とする請求項１に記載の積和演算回路。
【請求項５】
前記ソーティング手段は、前記複数の被演算値のうち降順または昇順で所定の割合を占める被演算値を出力することを特徴とする請求項１に記載の積和演算回路。
【請求項６】
前記ソーティング手段は、前記複数の被演算値のうち降順または昇順で所定の割合を占める被演算値以外の被演算値に代えて一定値を出力することを特徴とする請求項１に記載の積和演算回路。
【請求項７】
クロックを計数してその計数値をデジタル信号として出力する第２のカウンタと、
それぞれに外部からデジタル値として入力される各入力値と前記カウンタが出力する共通の計数値とを比較して、所定の時点から前記入力値と前記計数値とが一致する時点までの時間幅の出力パルス信号、又は所定の最大計数値から前記入力値を引いた値と前記計数値とが一致する時点から前記計数値が前記最大計数値に達する時点までの時間幅の出力パルス信号を生成する複数のパルス生成手段と
を備えるデジタル・パルス幅変換回路を有することを特徴とする請求項１〜６に記載の積和演算回路。
【請求項８】
前記複数のパルス生成手段の各々は、
外部から入力される前記入力値をラッチするパルス幅レジスタと、
前記パルス幅レジスタがラッチした前記入力値の各ビットと、前記カウンタが出力する計数値の各ビットとを比較して、両者が完全に一致したときにトリガを発生するタイミングトリガ発生回路と、
前記タイミングトリガ発生回路がトリガを発生したときに、前記出力パルス信号の真理値を反転させる出力パルス反転回路と、
を備えていることを特徴とする請求項７に記載の積和演算回路。
【請求項９】
前記複数のパルス生成手段の各々は、
前記出力パルスの立ち上がりのタイミングを表すデジタル値である基準値をラッチする基準値レジスタと、
前記基準値と外部から入力されるデジタル値である前記入力値との加算値を出力する加算回路と、
前記加算回路の出力値をラッチするパルス幅レジスタと、
前記基準値レジスタがラッチしたデジタル値又は前記パルス幅レジスタがラッチしたデジタル値の何れか一方を切り換えて出力する切換回路と、
前記切換回路から出力されるデジタル値の各ビットと、前記カウンタが出力する計数値の各ビットとを比較して、両者が完全に一致したときにトリガを発生するタイミングトリガ発生回路と、
前記タイミングトリガ発生回路がトリガを発生したときに、前記出力パルス信号の真理値を反転させる出力パルス反転回路と
を備え、
前記切換回路は、前記出力パルス反転回路が出力する出力パルスが偽値のときは、前記基準値レジスタがラッチしたデジタル値を出力し、前記出力パルス反転回路が出力する出力パルスが真値のときは、前記パルス幅レジスタがラッチしたデジタル値を出力するように切り換えを行うことを特徴とする請求項７に記載の積和演算回路。
【請求項１０】
前記乗算手段及び累算和手段が、それぞれ乗算及び累算和算出を行なう複数個の演算ブロックを有することを特徴とする請求項１〜９に記載の積和演算回路。
【請求項１１】
前記複数個の演算ブロックが並列に演算を行なうことを特徴とする請求項１０に記載の積和演算回路。
【請求項１２】
前記複数の被演算値がラベルを有し、各被演算値をラベルに対応する演算ブロックで乗算することを特徴とする請求項１０または１１に記載の積和演算回路。
【請求項１３】
スイッチにより各被演算値を入力する経路を切り替えて、当該被演算値をラベルに対応する演算ブロックに入力することを特徴とする請求項１２に記載の積和演算回路。
【請求項１４】
前記乗算手段は、各被演算値に対して荷重値を掛ける重み付け演算を行なうことを特徴とする請求項１〜１３に記載の積和演算回路。
【請求項１５】
前記複数の被演算値がデジタル信号であり、前記ソーティング手段が連想メモリを用いて当該複数の被演算値を降順に出力することを特徴とする請求項１〜１４に記載の積和演算回路。
【請求項１６】
前記ソーティング手段の出力に応じて、時間に対して単調に増加または減少する電圧信号を前記乗算手段に出力する信号出力手段を有することを特徴とする請求項１〜１５に記載の積和演算回路。
【請求項１７】
前記電圧信号を所定係数倍する手段を有することを特徴とする請求項１６に記載の積和演算回路。
【請求項１８】
前記乗算手段が、被演算値に相当する電圧値を、電圧制御電流源及び電圧制御抵抗素子の制御電圧として入力し、乗算結果を電圧値として出力することを特徴とする請求項１〜１７に記載の積和演算回路。
【請求項１９】
複数段のニューロン素子を有するニューラルネットワークであって、各ニューロン素子が請求項１〜１８に記載の積和演算回路を備え、当該積和演算回路が、
前段のニューロン素子の出力値を前記複数の被演算値として入力し、
前記乗算手段により各被演算値に対応する演算値としてシナプス荷重を乗じ、
前記累算和として内部状態値を算出することを特徴とするニューラルネットワーク。
【請求項２０】
積和演算回路により実行される積和演算方法であって、
パルス幅・デジタル変換手段が、被演算値を表わすパルス幅を持つパルス信号をデジタル信号に変換するパルス幅・デジタル変換工程と、
ソーティング手段が、前記パルス幅・デジタル変換工程によりデジタル信号に変換された複数の被演算値を降順にソートし、当該複数の被演算値のうち、当該ソートされた順で上位の一部のみを出力するソーティング工程と、
乗算手段が、前記ソーティング工程によりソートされた順に出力される各被演算値に対して、それぞれに対応する演算値を順次乗じる乗算工程と、
累算和手段が、前記乗算工程による乗算結果の累算和を算出する累算和工程とを備え、
前記パルス幅・デジタル変換工程が、
単一のカウンタが、クロックを計数してその計数値をデジタル信号として出力する工程と、
前記カウンタの出力する計数値が共通して入力され、複数のパルス信号のそれぞれに対応する各１つが並列に入力される複数の終端ラッチ回路が、それぞれに並列して入力される各パルス信号の終端において前記計数値をラッチする工程とを有することを特徴とする積和演算方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、乗算と累算を並列に行う積和演算回路及びその方法に関するものである。
【背景技術】
【０００２】
現在、コンピュータは大きな進展を見せ、世の中の様々な場面で使用されている。しかしながら、これらノイマン型と呼ばれるコンピュータは、その処理方式自体の特性により、ヒトが容易に行うことができる処理（リアルタイムでのヒトの顔の認識等）を非常に不得意としている。
【０００３】
これに対して、脳の情報処理様式を真似た演算処理モデルである、ニューラルネットワークの研究が行われている。
【０００４】
ニューラルネットワークを構成するニューロンのモデルとしては、ニューロンに相当するユニットに対して、他の複数のユニット（ニューロン）の出力値をシナプス荷重値で重み付けした乗算値が入力され、その入力値の総和値をさらに非線形変換した値を出力値とするものが一般的である。
【０００５】
すなわち、一般的なニューラルネットワークにおいては、各ユニット、及びユニット間における積和演算と非線形変換により、所望の処理が実現される。
【０００６】
このニューロンモデルを用いたニューラルネットワークアーキテクチャとしては、これまでに、積和演算を実行するユニットを相互に結合した連想メモリや、同じく積和演算を実行するユニットを階層的に結合したパターン認識モデル等が提案されている。
【０００７】
ここでニューラルネットワークは、超並列・分散型の情報処理モデルであるため、逐次処理方式であるノイマン型コンピュータでの実行は極めて効率が悪い。従って、ニューラルネットワークの実用化に際しては、専用のハードウェアとしての集積回路化が有効である。
【０００８】
また集積回路化に際しては、入力データの保存や制御性といった面ではデジタル回路によるデジタル的な処理が適しているものの、前記の積和演算や非線形変換を実現する演算回路としては、アナログ演算回路を使用することでデジタル演算回路に比較して、素子数の大幅な削減が可能である。
【０００９】
すなわち、ニューラルネットワークの実用化においては、デジタル回路とアナログ回路をそれぞれの特徴が有効に機能する演算処理部に適用し、最終的に両者を混載した集積回路化を目指す手法が有効である。
【００１０】
その場合、デジタル回路とアナログ回路の両者を結合するインターフェース部において、対応する回路に適した信号形式で入出力することが必要となる。
【００１１】
例えば、パルス幅に情報を持つPWM信号（Pulse Width Modulation）の値をデジタルメモリに保持する場合には、PWM信号をパルス幅・デジタル変換回路によってデジタル値に変換してからデジタルメモリに入力・保持する。
【００１２】
また、キャパシタに蓄えられたアナログ電圧値をPWM信号として出力するためには、コンパレータによってアナログ電圧値を当該アナログ電圧値に比例した時間幅のパルスに変換して出力する。
【００１３】
また、前述した手法を組み合わせて、アナログ電圧を一旦PWM信号に変換し、生成されたPWM信号をパルス幅・デジタル変換回路でデジタル値に変換すれば、A/D変換を実現することができる。
【００１４】
また、デジタル値をアナログ電圧値に変換するためのD/A変換回路としては、デジタル・パルス幅変換回路とスイッチド電流源とキャパシタを組み合わせたものがしばしば使用される。
【００１５】
すなわち、デジタル値をデジタル・パルス幅変換回路によって、パルス幅にデジタル値に比例する値をもつパルスに変換する。さらに前記パルスによってスイッチド電流源をオン・オフし、パルス幅に比例する電荷をキャパシタに蓄積することにより、最終的にデジタル値をキャパシタの電圧値としてアナログ値に変換する。
【００１６】
ここでまず、D/A変換回路におけるデジタル・パルス幅変換回路としては、デジタル入力値を当該デジタル入力値に比例した時間幅のパルスに変換する機能を有するものを指し、クロックによって動作するカウンタの出力する計数値とデジタル入力値とを比較して、両者が一致したタイミングでパルス出力を立ち下げるものが広く知られている（例えば特許文献１参照）。
【００１７】
図３９は従来のデジタル・パルス幅変換回路の一例を示す図である（特許文献１の図１参照）。図３９に示した従来のデジタル・パルス幅変換回路は、ストローブ検出回路101、ラッチ回路102、カウンタ103、デジタル・コンパレータ104、及びＪＫフリップ・フロップ105を備えた構成からなる。
【００１８】
ストローブ検出回路101は、ストローブ信号NOT(STB)が入力されると、その後の最初のクロックCLKの立ち上がりでタイミング・イネーブル信号E1，E2を出力する。タイミング・イネーブル信号E1は、更にその次のクロックの立ち上がりでＬレベルとなる。一方、タイミング・イネーブル信号E2は、クリア信号NOT(reset)がＨレベルの間は常時Ｈレベルとなっている。
【００１９】
また、ラッチ回路102は、外部から入力される１６ビットのデジタル・データD0〜D15をラッチし、ラッチデータQ0〜Q15として出力する。そして、１６ビットのカウンタ103は、クロックCLKを計数して、その計数値C0〜C15を出力する。また、カウンタ103は、その計数値がFFFFになると、カウント・アウト信号C.O.を出力する。
【００２０】
デジタル・コンパレータ104は、ラッチデータQ0〜Q15と計数値C0〜C15とを比較して、計数値C0〜C15がラッチデータQ0〜Q15を越えるまで、ＪＫフリップ・フロップ105にＨレベルを出力し、計数値C0〜C15がラッチデータQ0〜Q15を越えた時に、この出力値をＬレベルに反転する。
【００２１】
ＪＫフリップ・フロップ105は、処理サイクルの最初では、デジタル・コンパレータ104の出力信号が入力端子Ｊに入力され、出力ＱにＨレベルを保持する。また、デジタル・コンパレータ104の出力信号がＬレベルに反転した後の最初のクロックCLKの立ち上がりタイミングで、ＪＫフリップ・フロップ105は、出力ＱをＬレベルに反転する。そして、カウント・アウト信号C.O.が入力されると、ＪＫフリップ・フロップ105は出力ＱをＨレベルに復帰させる。
【００２２】
このような構成によって、ＪＫフリップ・フロップ105の出力Ｑにはデジタル・データD0〜D15の値に比例した時間幅のパルスが出力される。
【００２３】
次に、パルス幅・デジタル変換回路は、従来、積分型ＡＤ変換器において広く用いられている（例えば、特許文献２，３、非特許文献１参照）。
【００２４】
図４０は積分型ＡＤ変換器において用いられている従来のパルス幅・デジタル変換回路の回路図である。
【００２５】
従来のパルス幅・デジタル変換回路111は、ANDゲート回路112とカウンタ113とを有する簡単な構成からなる。ANDゲート回路112には、デジタル・パルス幅変換された入力パルスPWとクロックCLKとが入力される。ANDゲート回路112は、この入力パルスPWとクロックCLKの論理積からなるゲート信号gをカウンタ113に出力する。カウンタ113は、入力されるゲート信号gの立ち上がりエッジを計数し、その計数値をmビットのデジタル出力D={D0,…,Dm-1}として出力する。
【００２６】
この構成により、入力パルスPWがＨレベルのときにANDゲート112が有効となり、入力パルスPWがＬレベルのときにANDゲート112が無効となる。ANDゲート112が有効である間は、クロックCLKがゲート信号gとして出力される。そして、カウンタ113は、ゲート信号gとして出力されるクロックを計数する。これにより、入力パルスPWの幅に比例したカウント値がデジタル出力D={D0,…,Dm-1}として得られる。
【特許文献１】特開平４−２２２２号公報
【特許文献２】特開平８−２０４５６６号公報
【特許文献３】特開昭６２−２６５８２０号公報
【非特許文献１】鈴木八十二，吉田正廣著，「パルス・デジタル回路入門」，日刊工業新聞社，２００１年７月２６日発行，ｐ．２２５〜ｐ．２３２
【発明の開示】
【発明が解決しようとする課題】
【００２７】
乗算と累算を並列に行なう積和演算回路において、デジタル・パルス幅変換回路、デジタル・パルス幅変換回路を利用したD/A変換回路、及びパルス幅・デジタル変換回路を利用したA/D変換回路を使用することは、その構造が簡単であることから、非常に有効である。
【００２８】
しかしながら、多数のデジタル入力値を並列的にデジタル・パルス幅変換し、変調パルスを出力するような装置において、前記デジタル・パルス幅変換回路を使用すると、回路面積と消費電力が、並列的に動作するデジタル・パルス幅変換回路数に比例して大きくなるという問題がある。
【００２９】
すなわち、多数のデジタル入力値を並列的にデジタル・パルス幅変換する場合には、図３９に示した前記デジタル・パルス幅変換回路を複数個並列に配置して、それぞれのデジタル・パルス幅変換回路に対して各デジタル入力値を入力させればよい。そして、各デジタル・パルス幅変換回路から出力されるパルスを取り出すことで、並列的なデジタル・パルス幅変換が可能となる。
【００３０】
しかしこの場合、各デジタル・パルス幅変換回路において、回路面積が個数に比例して増大する。また、クロックによるスイッチング動作が頻繁に行われるため、総てのデジタル・パルス幅変換回路の駆動電力を合計すると、かなり大きな電力が消費されることとなる。従って、携帯機器のような省面積・低消費電力を要求される装置において、多数のデジタル入力値を並列的にデジタル・パルス幅変換する場合に使用することは困難である。
【００３１】
また同様に、多数のパルス入力を並列的にパルス幅デジタル変換し、デジタル値を出力するような装置において、図４０に示した前記パルス幅・デジタル変換回路を使用すると、各パルス幅・デジタル変換回路111の消費電力の総和がかなり大きくなるという問題がある。
【００３２】
すなわち、それぞれのパルス入力に対して、図４０に示したようなパルス幅・デジタル変換回路111を使用した場合、多数のカウンタ113が並列的にスイッチング動作を行うこととなる。そのため、例えば、カウンタ113をＣＭＯＳにより構成した場合でも、カウンタ113がスイッチング時の負荷容量を充放電する際の充放電電力消費が大きくなる。この充放電電力消費の増加は、パルス入力数が大きいほど顕著となる。
【００３３】
また、多数のカウンタ113が並列的に動作することにより、カウンタ113のスイッチングノイズが大きくなる。従って、回路全体のノイズ対策が必要となってくる。
【００３４】
そこで本発明の目的は、省面積・低消費電力で複数のデジタル入力値を並列的にパルス幅に変換するデジタル・パルス幅変換回路、及び低消費電力で動作し、回路から発生するノイズも小さいパルス幅・デジタル変換回路を用いた積和演算回路を提供することにある。
【課題を解決するための手段】
【００３５】
上記目的を達成するために、本発明に係る積和演算回路は、被演算値を表わすパルス幅を持つパルス信号をデジタル信号に変換するパルス幅・デジタル変換手段と、前記パルス幅・デジタル変換手段によりデジタル信号に変換された複数の被演算値を降順にソートし、当該複数の被演算値のうち、当該ソートされた順で上位の一部のみを出力するソーティング手段と、前記ソーティング手段よりソートされた順に出力される各被演算値に対して、それぞれに対応する演算値を順次乗じる乗算手段と、前記乗算手段による乗算結果の累算和を算出する累算和手段とを備え、前記パルス幅・デジタル変換手段が、クロックを計数してその計数値をデジタル信号として出力する単一のカウンタと、前記カウンタの出力する計数値が共通して入力され、複数のパルス信号のそれぞれに対応する各１つが並列に入力される複数の終端ラッチ回路とを有し、前記複数の終端ラッチ回路の各々が、前記カウンタが出力する計数値を、それぞれに並列して入力される各パルス信号の終端においてラッチすることを特徴とする。
【００３６】
また、本発明の他の態様によれば、積和演算回路により実行される積和演算方法に、パルス幅・デジタル変換手段が、被演算値を表わすパルス幅を持つパルス信号をデジタル信号に変換するパルス幅・デジタル変換工程と、ソーティング手段が、前記パルス幅・デジタル変換工程によりデジタル信号に変換された複数の被演算値を降順にソートし、当該複数の被演算値のうち、当該ソートされた順で上位の一部のみを出力するソーティング工程と、乗算手段が、前記ソーティング工程によりソートされた順に出力される各被演算値に対して、それぞれに対応する演算値を順次乗じる乗算工程と、累算和手段が、前記乗算工程による乗算結果の累算和を算出する累算和工程とを備え、前記パルス幅・デジタル変換工程が、単一のカウンタが、クロックを計数してその計数値をデジタル信号として出力する工程と、前記カウンタの出力する計数値が共通して入力され、複数のパルス信号のそれぞれに対応する各１つが並列に入力される複数の終端ラッチ回路が、それぞれに並列して入力される各パルス信号の終端において前記計数値をラッチする工程とを有することを特徴とする。
【発明の効果】
【００３７】
以上説明したように、本発明によれば、低消費電力かつ小型の積和演算回路を提供できるという効果がある。
【発明を実施するための最良の形態】
【００３８】
以下、添付図面を参照しながら、本発明の実施形態を説明する。
【００３９】
（第一の実施形態）
図１は、本実施形態での積和演算回路の構成図を示す。
【００４０】
図１に示すように、本実施形態における積和演算回路は、複数個の演算回路1と、被演算値Xiを保持する入力値保持回路2と、被演算値Wiを保持する荷重値保持回路3と、被演算値Xiを値の大きい順に出力するソーティング回路4と、被演算値Xiのラベルに対応する演算回路へ被演算値Xi、Wiを入力するためのスイッチ回路5とから構成される。なお、前記被演算値Xiと被演算値Wiのiは、それぞれ異なるXとWを表す添え字であり、1,2,3・・・の自然数をとる（以下同様）。
【００４１】
図２は、前記演算回路をデジタル回路で構成したデジタル演算回路を示す。図２に示すように、本実施形態におけるデジタル演算回路は、３つのレジスタ6と、乗算器7と、加減算器8とから構成される。
【００４２】
図３は、前記入力値保持回路と前記ソーティング回路の機能を連想メモリ回路で構成したものを示す。
【００４３】
以上説明した図を用いて、本実施形態における積和演算回路による演算処理工程を説明する。
【００４４】
まず図１に示すように、複数の被演算値Xiは入力保持回路2に保持され、さらにソーティング回路4により、値の大きいもの順にソートされ出力される。
ここで本実施形態においては、値が等しい被演算値Xiがある場合には、値が等しい被演算値間での出力の順番は任意としているが、事前に適当な順番を設定しておいても良い。
【００４５】
続いて、被演算値Xiが有するラベルがソーティング回路4からスイッチ回路5に入力され、前記ラベルに応じてスイッチ回路5がスイッチングを行い、ソーティング回路4から出力された被演算値Xiをそのラベルに対応する演算回路に入力する。なお、被演算値Xiのラベルに対応する演算回路の数は、１つの場合も複数の場合もあり得るが、本実施形態では複数の場合を説明する。
【００４６】
ここで、以上の入力保持回路2とソーティング回路4で実行される処理は、本実施形態においては連想メモリ回路を用いて実現する。連想メモリ回路には被演算値Xiの値と、それぞれの被演算値Xiが有するラベルが保持されている。
これに対して、連想メモリ回路の一般的な機能を利用し、被演算値Xiの値の大きなもの順に、１つずつその値とラベルを読み出すことにより、前記の入力保持回路とソーティング回路で実行される処理を実現することが可能となる。
【００４７】
すなわち連想メモリ回路は、入力された検索値と、保持しているデータを比較し、両者の値が一致するものを出力する機能を有する。従って連想メモリ回路に対して、検索値を被演算値Xiの最大値に相当する値から大きいもの順に一つずつ入力し、値が一致するデータを順に読み出すことにより、ソーティング機能を実現することが可能となる。（逆に、被演算値Xiの値の小さなもの順に読み出すことも可能である。）
なお本実施形態では、前記の通り入力保持回路2とソーティング回路4の機能を連想メモリ回路で実現したが、具体的な回路構成は本発明の主眼とするところではなく、同様の処理が可能なものであれば、その他の回路構成を用いても良い。
【００４８】
次に、荷重値保持回路3から出力される複数の被演算値Wiはそれぞれ所定の演算回路に入力される。ここで本実施形態においては、被演算値Wiは、被演算値Xiと同様に被演算値Xiが有するラベルに応じてスイッチ回路5においてスイッチングが行なわれ、ラベルによって決定される所定の演算回路に入力される。
【００４９】
なお本実施形態とは異なり、被演算値Wiが入力される所定の演算回路が、被演算値Xiのラベルにはよらず事前に設定されている手法を用いることも可能である。また、各演算回路に入力される被演算値Wiの値は、演算毎に同一の場合も異なる場合もある。
【００５０】
本実施形態においては、前記荷重値保持回路3は一般的なSRAM回路によって構成しても良いが、前記の連想メモリと同じく、同様の処理が可能なものであれば、その他の回路構成を用いても良い。以上の処理を実行することにより、所定の演算回路に被演算値Xiと被演算値Wiが入力される。本実施形態においては、前記所定の演算回路（すなわち演算処理が実行される回路）は、図１中の演算回路３〜５としている。
【００５１】
続いて、被演算値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にフラグを保持する場合の構成例を図４に示す。
【００５７】
続いて、本実施形態において入力値保持回路に対して、被演算値XiがPWM信号として入力される場合に関して、図５を用いて説明を行なう。
【００５８】
図５において、入力保持回路2の入力部にパルス幅・デジタル変換回路9を有すること以外は、本実施形態で前述した構成（図１）と全く同様である。
すなわち、PWM信号として入力される被演算値Xiは、パルス幅・デジタル変換回路9によってデジタル信号に変換された後に入力値保持回路2に保持される。
ここで、前記パルス幅・デジタル変換回路9に関して説明を行なう。
【００５９】
まず、前記PWM信号の特性について簡単に説明しておく。PWM（Pulse Width Modulation）信号は、情報をパルス波形の幅に持たせた変調方式であり、ノイズに強いデジタル的な特性（電圧方向にＨｉｇｈレベルとＬｏｗレベルの２値の情報を有するという特性）と、連続情報を１パルスで表現することができるアナログ的な特性（時間方向に連続情報を有するという特性）の両者を併せ持つものである。
【００６０】
図６はパルス幅・デジタル変換回路の構成を表す回路図である。
【００６１】
本実施形態におけるパルス幅・デジタル変換回路9は、カウンタ10、及びn個（n＞２）の終端ラッチ回路11−0〜11−（n-1）を有している。パルス幅・デジタル変換回路9には、外部からクロックCLK、パルス出力トリガXRST、及びn個のPWM信号PW0〜PWn-1が入力される。また、電源電圧VDD及び基板電圧VSSが印加されている。
【００６２】
クロックCLKには、一定の周期のパルス列が入力される。パルス出力トリガXRSTは、入力パルスPW0〜PWn-1の出力開始を指示するトリガである。このパルス出力トリガXRSTには、クロックCLKの周期のM倍（Ｍ≧2m）の周期で、行くロック周期分の時間幅の反転パルスが出力される。
【００６３】
カウンタ10は、外部から入力されるクロックCLKを計数してその計数値CNT0〜CNTm-1をmビットのデジタル信号として出力する。各終端ラッチ回路11−ｉ（i∈{0,1,…,n-1}）は、外部から入力されるPWM信号PWiの終端においてカウンタ10が出力する計数値CNT0〜CNTm-1をラッチする。そして、各終端ラッチ回路11−ｉは、それぞれ、ラッチした計数値CNT0〜CNTm-1をmビットのデジタル出力Di,0〜Di,m-1として出力する。
【００６４】
図７は図６の終端ラッチ回路の内部構成を表す回路図である。
【００６５】
終端ラッチ回路11−ｉ（i∈{0,1,…,n-1}）は、m個のラッチ12−0〜12−（m-1）、及び１個のインバータ13により構成されている。終端ラッチ回路11−ｉに入力される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）は、図８に示したような、非同期リセット入力付きの同期型Ｄフリップ・フロップが用いられる。
【００６７】
以上のように構成された本実施形態に係るパルス幅・デジタル変換回路9について、以下その動作を説明する。
【００６８】
図９は本実施形態に係るパルス幅・デジタル変換回路9の各信号レベルの変化を表すタイムチャートである。クロックCLKには、一定の周期Tで、幅T/2のパルスが連続的に入力されている。パルス出力トリガXRSTは、時刻t1において、幅Tの反転パルスを出力する。これにより、各ラッチ12−0〜12−（m-1）の出力はリセットされ、デジタル出力データDiは総て０リセットされる。
【００６９】
そして、パルス出力トリガXRSTの立ち上がり時点（時刻t2）から、各PWM信号PWi（i∈{0,1,…,n-1}）の出力が開始される。また、それと同時に、カウンタ10は、クロックCLKの計数を開始する。カウンタ10は、クロックCLKの立ち上がりエッジにおいて、その計数値を１づつ増加させる。なおPWM信号PWiは、カウンタ10の計数開始と同期して入力される。
【００７０】
時刻t3において、PWM信号PWiはＨレベルからＬレベルに反転する。これにより、インバータ13の出力NOT(PWi)のレベルはＬレベルからＨレベルに立ち上がる。各ラッチ12−ｊ（j∈{0,1,…,m-1}）は、このインバータ13の出力NOT(PWi)の立ち上がりエッジにおいて、データ入力端子Dに入力される計数値CNTjのレベルをラッチして、これをデータ出力端子Qから出力する。
【００７１】
これにより、各終端ラッチ回路11−ｉ（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∈{0,1,…,n-1}）は、PWM信号PWiの終端で、共通のカウンタ10が出力する計数値CNTをラッチする。従って、カウンタ10は、それぞれの終端ラッチ回路11−ｉに対して計数値CNTを出力するための配線の寄生容量に抗して出力値（係数値CNT）の切り換えを行うだけであり、スイッチング時の消費電力は小さい。従って、上記従来のパルス幅・デジタル変換を使用した場合に比べると、大幅に消費電力を低減させることが可能である。
【００７４】
実際に計算機シミュレーションにより評価した結果、８０個のPWM信号PW0〜PW79を並列にパルス幅・デジタル変換する場合、終端ラッチ回路として、図４０に示したような従来のパルス幅・デジタル変換回路を使用すると、226mWの電力が消費されることが見積もられた。それに対して、本実施形態に係るパルス幅・デジタル変換回路9を使用した場合、同じ入力パルスをパルス幅・デジタル変換する場合の消費電力は6.6mWであった。従って、消費電力は約1/50に抑えることができることが分かった。
【００７５】
また、カウンタを一つにしたことによって、カウンタのスイッチング時に発生するスイッチング・ノイズを小さく抑えることができる。従って、回路のＳＮ比が向上する。従って、パルス幅にジッタ・ノイズが加わることによりパルス幅・デジタル変換時に生じるジッタ誤差を最小限に抑えることができる。これにより、高速パルス幅・デジタル変換にも使用することができる。
【００７６】
また、各終端ラッチ回路11−0〜11−（n-1）は、共通のカウンタ10の出力値CNTをラッチするので、各入力パルスPW0〜PWn-1に対する計数値CNTの切り替わりのタイミングにばらつきが生じない。そのため、カウンタ10のスイッチング時のジッタによる各入力パルスPW0〜PWn-1間でのタイミング誤差がばらつくことを防止できる。
【００７７】
また、前記パルス幅・デジタル変換回路は、図６に示したパルス幅・デジタル変換回路9において、終端ラッチ回路11−0〜11−（n-1）の部分を、図１０に示した回路に置き換えたものであっても良い。
【００７８】
以下で、パルス幅・デジタル変換回路9において、終端ラッチ回路11−0〜11−（n-1）の部分を、図１０に示した回路に置き換えたものについて,詳しく説明する。図１０において、終端ラッチ回路11−ｉ（i∈{0,1,…,n-1}）、ラッチ12−0〜12−（m-1）、及びインバータ13の構成は、図７と同様であるため説明は省略する。本実施形態に係るパルス幅・デジタル変換回路は、これらに加えて、更に、始端ラッチ回路14−ｉ（i∈{0,1,…,n-1}）及び減算回路15−ｉを備えていることを特徴としている。
【００７９】
始端ラッチ回路14−ｉは、PWM信号PWiの始端（立ち上がりエッジ）において、カウンタ10から出力される計数値CNTをラッチする。減算回路15−ｉは、終端ラッチ回路11−ｉのデジタル出力値Ei={Ei,0〜Ei,m-1}から始端ラッチ回路14−ｉのデジタル出力値Si={Si,0〜Si,m-1}を減算した減算値を演算して、デジタル出力値Di={Di,0〜Di,m-1}として出力する。
【００８０】
始端ラッチ回路14−ｉは、終端ラッチ回路11−ｉと同様に、ｍビットの計数値の各ビットCNT0〜CNTm-1の各々に対応してラッチ16−0〜16−（m-1）を備えている。これらのラッチ16−0〜16−（m-1）は、ラッチ12−0〜12−（m-1）と同様、図８に示した非同期リセット入力付きの同期型Ｄフリップ・フロップにより構成されている。
【００８１】
但し、始端ラッチ回路14−ｉ内のラッチ16−0〜16−（m-1）のクロック端子clkには、インバータ13を通すことなく、PWM信号PWiが直接入力される。そのため、ラッチ16−0〜16−（m-1）は、PWM信号PWiの立ち上がりの時点におけるカウンタ10の計数値CNTをラッチする。
【００８２】
以上のように構成されたパルス幅・デジタル変換回路について、以下その動作を説明する。
【００８３】
図１１は本実施形態におけるパルス幅・デジタル変換回路の各信号レベルの変化を表すタイムチャートである。
【００８４】
クロックCLKには、一定の周期Tで、幅T/2のパルスを連続的に入力されている。パルス出力トリガXRSTは、時刻t1において、幅Tの反転パルスを出力する。これにより、各ラッチ12−0〜12−（m-1），16−0〜16−（m-1）の出力はリセットされ、デジタル出力データEi，Siは総て０リセットされる。
【００８５】
そして、パルス出力トリガXRSTの立ち上がり時点（時刻t2）から、カウンタ10は、クロックCLKの計数を開始する。カウンタ10は、クロックCLKの立ち上がりエッジにおいて、その計数値を１づつ増加させる。
【００８６】
時刻t2以後の適当な時刻t3において、PWM信号PWi（i∈{0,1,…,n-1}）の出力が開始される。この時刻t3におけるPWM信号PWiの立ち上がりにより、始端ラッチ回路14−ｉのラッチ16−ｊ（j∈{0,1,…,m-1}）は、カウンタ10の出力CNTjをラッチして、これをデータ出力端子Qからデジタル出力値Si={Si,0〜Si,m-1}として出力する。
【００８７】
時刻t4において、PWM信号PWiはＨレベルからＬレベルに反転する。これにより、インバータ13の出力NOT(PWi)のレベルはＬレベルからＨレベルに立ち上がる。各ラッチ12−ｊ（j∈{0,1,…,m-1}）は、このインバータ13の出力NOT(PWi)の立ち上がりエッジにおいて、データ入力端子Dに入力される計数値CNTjのレベルをラッチして、これをデータ出力端子Qからデジタル出力値Ei={Ei,0〜Ei,m-1}として出力する。
【００８８】
減算回路15−ｉは、終端ラッチ回路11−ｉのデジタル出力値Ei={Ei,0〜Ei,m-1}から始端ラッチ回路14−ｉのデジタル出力値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−ｉを用意せずに、デジタル出力値Si及びEiをそのまま外部に出力し、外部に用意した減算器で減算を行ってもよい。
【００９３】
（第二の実施形態）
第二の実施形態を具体的な処理構成図を参照して説明する。本実施形態での積和演算方法を実行するための処理回路の構成図は、第一の実施形態と同様に図１によって示される。
【００９４】
図１２は、前記演算回路をアナログ回路で構成したアナログ演算回路を示す。図１２に示すように、本実施形態におけるアナログ演算回路は、アナログ乗算器17と、キャパシタ18と、出力バッファ19とから構成される。
【００９５】
図１３は、前記入力値保持回路をアナログメモリで構成したものを示す。ここで、本実施形態においてはアナログメモリをキャパシタ20と出力バッファ21で構成することを想定しているが、同様の機能を有するものであればその他の回路を用いても構わない。
【００９６】
図１４は、前記ソーティング回路をWTA回路22で構成したものを示す。
【００９７】
以上説明した図を用いて、本実施形態における積和演算方法を用いた処理過程を説明する。
【００９８】
まず図１に示す演算処理に関しては第一の実施形態と同様であるため説明を省略し、以下では第一の実施形態と異なる入力保持回路、荷重保持回路、ソーティング回路及び演算回路における個別の処理に関して説明を行なう。
なお本実施形態においては、第一の実施形態で説明したパルス幅・デジタル変換回路を有するケースは除外する。
【００９９】
まず本実施形態における入力保持回路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変換回路として、図１５に示すデジタル・パルス幅変換回路23と、スイッチド電流源24と、キャパシタ25と、バッファ26とから構成されるD/A変換回路について説明する。
【０１０５】
図１５に示すように、まずD/A変換回路において被演算値Xiに相当するデジタル値をデジタルメモリ（連想メモリ）からデジタル・パルス幅変換回路23に入力する。デジタル・パルス幅変換回路23においては、入力されたデジタル値を当該デジタル入力値に比例した時間幅のパルス信号に変換して出力する。
【０１０６】
ここで図１６に示すように、本実施形態に係るデジタル・パルス幅変換回路23は、並列配置された複数のパルス生成回路27-0〜27-(n-1)、及び一つのカウンタ28を有する。各パルス生成回路27-0〜27-(n-1)のデータ入力端子Dinには、ｍビットの各デジタル入力値ｘ０〜ｘｎ-1が入力される。そして、各パルス生成回路27-0〜27-(n-1)のパルス出力端子Poutからは、各デジタル入力値ｘ０〜ｘｎ-1に比例するPWM信号PWM0〜PWMn-1が出力される。
【０１０７】
また、カウンタ28は、外部から入力されるクロックclockを計数し、ｍビットの計数値として出力する。このクロックclockは、各パルス生成回路27-0〜27-(n-1)のクロック入力端子clkにも共通に入力される。また、各パルス生成回路27-0〜27-(n-1)のカウンタ値入力端子CNTには、カウンタ28から出力される計数値が共通に入力される。
【０１０８】
更に、各パルス生成回路27-0〜27-(n-1)の基準値入力端子Dbには、ｍビットの基準値ｘｂが共通に入力される。この基準値ｘｂは、出力PWM信号PWM0〜PWMn-1の立ち上がりのタイミングを指定する値である。
【０１０９】
図１７は図１６の各パルス生成回路の構成を表すブロック図である。パルス生成回路27-ｉ（ｉ∈｛0,1,…,n-1｝）は、基準値レジスタ29、加減算回路30、パルス幅レジスタ31、切換回路32、タイミングトリガ発生回路33、及び出力パルス反転回路34を有している。
【０１１０】
基準値レジスタ29は、基準値ｘｂをラッチして、そのラッチした基準値ｘｂの値を出力する。加減算回路30は、基準値ｘｂと外部から入力されるデジタル値である入力値ｘｉとの加算値ｘｉ＋ｘｂを出力する。パルス幅レジスタ31は、加減算回路30の出力値（加算値ｘｉ＋ｘｂ）を更新入力renewの立ち上がりにおいてラッチする。
【０１１１】
切換回路32は、出力パルス反転回路34が出力する出力PWM信号PWMｉが偽値（Ｌレベル）のときは、基準値レジスタ29がラッチしたデジタル値ｘｂを出力し、出力パルス反転回路34が出力する出力PWM信号PWMｉが真値（Ｈレベル）のときは、パルス幅レジスタ31がラッチしたデジタル値ｘｉ＋ｘｂを出力するように切り換えを行う。
【０１１２】
タイミングトリガ発生回路33は、切換回路32から出力されるデジタル値の各ビットと、カウンタ28が出力する計数値CNTの各ビットとを比較して、両者が完全に一致したときにトリガを発生する。このタイミングトリガ発生回路33は、ｍ個のＥＸＯＲゲート35-0〜35-(ｍ-1)、及び１個のＮＯＲゲート36により構成されている。各ＥＸＯＲゲート35-0〜35-(m-１) の入力の一方には、切換回路32からの出力ビットがそれぞれ入力され、他方の入力には、カウンタ28からの出力ビットがそれぞれ入力される。そして、各ＥＸＯＲゲート35-0〜35-(ｍ-1)の出力P0〜Pm-1はＮＯＲゲート36に入力される。ＮＯＲゲート36は、各ＥＸＯＲゲート35-0〜35-(ｍ-1)の出力P0〜Pm-1の論理和の反転出力を出力パルス反転回路34に対して出力する。
【０１１３】
すなわち、各デジタル入力値xi（i∈｛0,1,…,n-1｝）、各基準値ｘｂ、カウンタの出力値CNTをそれぞれ式（１），（２），（３）により表した場合、タイミングトリガ発生回路16の出力Tiは、出力パルス反転回路17の出力値PoutがLレベルのときは式（４）、出力パルス反転回路17の出力値PoutがHレベルのときは式（５）のように表される。
【０１１４】
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)
【０１１５】
【数１】
0004620944.tif 000002
（4）
【０１１６】
【数２】
0004620944.tif 000003
（5）
【０１１７】
出力パルス反転回路34は、タイミングトリガ発生回路33がトリガを発生したときに、出力PWM信号PWMiの真理値を反転させる。この出力パルス反転回路34は、同期型Ｔフリップ・フロップ（以下、「Ｔ−ＦＦ」という。）により構成されている。出力パルス反転回路34のトリガ入力端子ＴにはＮＯＲゲート36からの出力値が入力される。また、Ｔ−ＦＦのクロック端子clkには、共通のクロックclockが入力される。また、出力パルス反転回路34の出力端子Ｑからは、出力PWM信号PWMiが出力される。
【０１１８】
以上のように構成された本実施形態に係るデジタル・パルス幅変換回路について、以下その動作を図１８のタイミング・チャートを参照しながら説明する。
【０１１９】
まず、時刻t1において、各パルス生成回路27-ｉに対して、外部回路から入力値ｘｉ及び基準値ｘｂが入力される。次いで、時刻t2においてカウンタ28のリセット入力ノードR並びに各パルス生成回路27-ｉの基準値レジスタ29及びパルス幅レジスタ31のクロック入力ノードCLKに対して更新信号renewが入力される。基準値レジスタ29及びパルス幅レジスタ31は、更新信号renewが入力されると、その立ち上がり時点において、それぞれ、そのときの基準値ｘｂ及び入力値ｘｉの値をラッチする。
【０１２０】
そして、基準値レジスタ29は、ラッチされた基準値ｘｂを出力し、パルス幅レジスタ31は、ラッチされた加算値ｘｉ＋ｘｂを出力する。一方、時刻ｔ１においては、出力パルス反転回路34の出力はＬレベルであるので、切換回路32は、基準値レジスタ29から入力される値ｘｂを出力する。また、カウンタ28は、更新信号renewの立ち上がりにおいて、計数値CNTを0にリセットするとともに、計数を開始する。
【０１２１】
次に、カウンタ28がカウントアップして、時刻ｔ3においてカウンタ28の計数値CNTが切換回路32の出力値である基準値ｘｂと一致する。このとき、タイミングトリガ発生回路33の出力TiはＨレベルに反転する。これにより、出力パルス反転回路34の出力PoutがＬレベルからＨレベルに反転し、出力PWM信号PWMiの出力が開始される。
【０１２２】
時刻ｔ4において、出力パルス反転回路34の出力PoutがＨレベルに反転すると、切換回路32の入力が切り換わって、パルス幅レジスタ31から入力される値ｘｂ＋ｘｉを出力するようになる。これに伴い各ＥＸＯＲゲート35-0〜35-(ｍ-1)の出力値も変化するが、xi≠0であれば、ＥＸＯＲゲート35-0〜35-(ｍ-1)の出力値が総て０となることはない。従って、タイミングトリガ発生回路33の出力TiはＬレベルに反転する。
【０１２３】
更にカウンタ28がカウントアップして、時刻ｔ5において、カウンタ28の計数値CNTが切換回路32の出力値である加算値ｘｂ＋ｘｉと一致する。このとき、タイミングトリガ発生回路33の出力TiはＨレベルに反転する。これにより、出力パルス反転回路34の出力PoutはＨレベルからＬレベルに反転し、出力PWM信号PWMiの出力が停止される。このようにして、デジタル入力値xiに比例した時間幅の出力PWM信号PWMiが生成され、デジタル・パルス幅変換が行なわれる。
【０１２４】
時刻ｔ6において、出力パルス反転回路34の出力がＬレベルに反転すると、切換回路32の入力が切り換わり、切換回路32は基準値レジスタ29から入力される値ｘｂを出力するようになる。これに伴い各ＥＸＯＲゲート35-0〜35-(ｍ-1)の出力値も変化するが、xi≠0であれば、ＥＸＯＲゲート35-0〜35-(ｍ-1)の出力値が総て０となることはない。従って、タイミングトリガ発生回路の出力TiはＬレベルに反転する。
【０１２５】
そして、カウンタ28はカウントアップするまで計数を続ける。この間、カウンタ値と切換回路の出力値ｘｂとが一致することはないので、出力パルス反転回路34の出力はＬレベルに保持される。カウンタ28がカウントアップすると計数を停止し、１サイクルが終了する。カウンタ28はカウントアップした後は、リセット入力ノードRが再度Hレベルに反転するまでは、カウントアップした時の出力値（総てHレベル）を維持する。
【０１２６】
以上のようにして、各パルス生成回路27-ｉは、入力値ｘｉの値に比例した時間幅の出力PWM信号ＰＷＭｉを出力する。このとき、各パルス生成回路27-ｉは、共通のカウンタ28が出力する計数値を用いて、基準値ｘｂ又は加算値ｘｂ＋ｘｉとの比較を行う。従って、総てのパルス生成回路27-ｉにカウンタを備えた場合と比べると、消費電力が極めて小さくなるため、デジタル・パルス幅変換回路の低消費電力化が図られる。
【０１２７】
また、本実施形態においては、基準値レジスタ29、パルス幅レジスタ31、及び切換回路32を用いて、出力PWM信号PWMiの立ち上がりと立ち下がりのタイミングを、共通のタイミングトリガ発生回路33を用いて発生させる構成としたことにより、回路遅延の影響を受けることなく、出力PWM信号PWMiのパルス幅を入力値ｘｉに正確に比例させることが可能となる。
【０１２８】
尚、本実施形態においては、基準値xbにより、各パルス生成回路27-0〜27-(n-1)における出力パルスの立ち上がり時点を合わせる構成例を示したが、本発明においては、出力パルスの立ち下がり時点を合わせる構成としてもよい。この場合、加減算回路30は、基準値ｘｂから外部から入力されるデジタル値である入力値ｘｉを減算した減算値xb−ｘiを出力する構成とする。また、切換回路32は、出力パルス反転回路34が出力する出力PWM信号PWMiが真値（Hレベル）のときは、基準値レジスタ29がラッチしたデジタル値ｘｂを出力し、出力パルス反転回路34が出力する出力PWM信号PWMiが偽値（Lレベル）のときは、パルス幅レジスタ31がラッチしたデジタル値xb−ｘiを出力するように切り換えを行う構成とすればよい。
【０１２９】
なお、各パルス生成回路2―i内に加減算回路11を用意せずに、デジタル入力信号xiとして、元々の入力値を基準値xbから加算または減算した結果を与えるようにしてもよい。また、本実施形態におけるデジタル・パルス幅変換回路は、以上で説明したものとは異なり、以下で説明するように別形態をとるものであっても良い。
【０１３０】
すなわち図４５に示すように、本実施形態に係る別形態のデジタル・パルス幅変換回路151は、並列配置された複数のパルス生成回路152−0〜152−（n-1）、及び一つのカウンタ153を有する。各パルス生成回路152−0〜152−（n-1）のデータ入力端子Dinには、mビットの各デジタル入力値ｘ０〜ｘｎ-1が入力される。そして、各パルス生成回路152−0〜152−（n-1）のパルス出力端子Poutからは、各デジタル入力値ｘ０〜ｘｎ-1に比例する時間幅のパルスPWM0〜PWMn-1が出力される。
【０１３１】
また、カウンタ153は、外部から入力されるクロックclockを計数し、mビットの計数値として出力する。また、各パルス生成回路152−0〜152−（n-1）のカウンタ値入力端子CNTには、カウンタ153から出力される計数値が共通に入力される。
【０１３２】
図４６は図４５の各パルス生成回路の構成を表すブロック図である。パルス生成回路152−ｉ（i∈｛0,1,…,n-1｝）は、パルス幅レジスタ162、タイミングトリガ発生回路164、及び出力パルス反転回路165を有している。
【０１３３】
パルス幅レジスタ162は、外部から入力されるmビットのデジタル値である入力値ｘｉを更新入力renewの立ち上がりにおいてラッチして、その値を出力ノードに出力する。タイミングトリガ発生回路164は、パルス幅レジスタ162から出力されるmビットのデジタル値の各ビットと、カウンタ153が出力するmビットの計数値の各ビットとを比較して、両者が完全に一致したときにトリガを発生する。
【０１３４】
このタイミングトリガ発生回路164は、m個のＥＸＯＲゲート166−0〜166−（ｍ−1）と１個のＮＯＲゲート167により構成されている。各ＥＸＯＲゲート166−0〜166−（ｍ−1）の入力の一方には、パルス幅レジスタ162からの出力ビットがそれぞれ入力され、入力の他方には、カウンタ153からの出力ビットがそれぞれ入力される。そして、各ＥＸＯＲゲート166−0〜166−（ｍ−1）の出力P0〜Pm-1はＮＯＲゲート167に入力される。ＮＯＲゲート167は、各ＥＸＯＲゲート166−0〜166−（ｍ−1）の出力P0〜Pm-1の論理和の反転出力を出力パルス反転回路165に対して出力する。
【０１３５】
すなわち、各デジタル入力値ｘi（i∈｛0,1,…,n-1｝）、カウンタの出力値CNTを式（１），（３）により表した場合、タイミングトリガ発生回路64の出力Tiは式（６）のように表される。但し、ここでxiは0でないと仮定する。
【０１３６】
【数３】
0004620944.tif 000004
（6）
【０１３７】
式（６）より、タイミングトリガ発生回路64の出力Tiはデジタル入力値ｘiとカウンタの出力値CNTが、総てのビットにおいて一致したときに１となることが分かる。出力パルス反転回路65は、タイミングトリガ発生回路64がトリガを発生したときに、出力パルスPWMiの真理値を反転させる。この出力パルス反転回路65は、Ｔフリップ・フロップ（以下、「Ｔ−ＦＦ」という。）により構成されている。出力パルス反転回路65のトリガ入力端子ＴにはＮＯＲゲート67からの出力値が入力される。また、出力パルス反転回路65の出力端子Ｑからは、パルスPWMiが出力される。
【０１３８】
以上のように構成された本実施形態に係るデジタル・パルス幅変換回路について、以下その動作を図４７のタイミング・チャートを参照しながら説明する。
【０１３９】
まず、電源を入れた直後の初期状態では、カウンタ153の総ての計数値CNTはHレベルにあるものとし、入力値xｉは0であるとする。この状態で、時刻t0において、カウンタ153及びパルス幅レジスタ162に対して入力されているリセット入力resetを有効（Lレベル）とする。これにより、カウンタ153の計数値CNTは総て０リセットされる。また、パルス幅レジスタ162は、リセット信号resetがLレベルとされると、保持している記憶値を総て０にリセットする。そうすると、カウンタ153の計数値CNTとパルス幅レジスタ162の出力値とが一致し、タイミングトリガ発生回路164の出力TiはLレベルからHレベルに反転する。従って、出力パルス反転回路165の出力PoutiがHレベルに反転し、出力Poutiにパルスが出力され始める。
【０１４０】
次に、時刻t1において、各パルス生成回路152−ｉに対して、外部回路から入力値ｘｉ（Xi≠（０，０，…，０））が入力される。このとき、パルス幅レジスタ162に入力されているリセット信号resetがLレベルなので、パルス幅レジスタ162の出力は総て０のままである。
【０１４１】
次いで、時刻t2において、リセット入力resetが無効（Hレベル）とされるとともに、更新信号renewがLレベルからHレベルに反転される。更新信号renewは、各パルス幅レジスタ162のクロックCLK入力ノードに入力されており、更新信号renewがHレベルに反転した時点で、パルス幅レジスタ162はその時点の入力値ｘｉの値をラッチする。これにより、パルス幅レジスタ162の出力値は入力値ｘｉとなる。一方、カウンタ153の計数値CNTは依然として０なので、パルス幅レジスタ162の出力とカウンタ153の計数値CNTとは一致しなくなり、タイミングトリガ発生回路164の出力TはHレベルからLレベルに反転する。また、カウンタ153は、リセット信号resetがLレベルからHレベルに反転することにより、クロックclockの計数を開始する。尚、このとき、パルス幅レジスタ162は、ラッチされた加算値ｘｉを出力し続ける。
【０１４２】
クロックclockとともにカウンタ153がカウントアップし、時刻ｔ3においてカウンタ153の計数値CNTが切換回路163の出力値であるｘiと一致する。このとき、タイミングトリガ発生回路164の出力値TはLレベルからHレベルに反転する。これにより、出力パルス反転回路165の出力PoutiはHレベルからLレベルに反転する。これにより、出力パルス反転回路165の出力PoutiのパルスPWMiの幅が確定する。このパルス幅は、デジタル入力値ｘｉに比例することから、デジタル・パルス幅変換が行われたこととなる。
【０１４３】
更に、時刻t3から１クロック経過した時刻t4において、カウンタ153がカウントアップしてカウンタ153の計数値CNTが切換回路163の出力値ｘiと不一致となると、タイミングトリガ発生回路164の出力TiはHレベルからLレベルに反転する。
【０１４４】
そして、カウンタ153はカウントアップするまで計数を続ける。この間、カウンタ153の計数値CNTと入力値ｘiとが一致することはないので、タイミングトリガ発生回路164の出力TiはLレベルを保持し、出力パルス反転回路165の出力もＬレベルに保持される。カウンタ153がカウントアップするとカウンタ153の計数値は総て０となり、１サイクルが終了する。そして、続けて同様のサイクルが繰り返される。
【０１４５】
以上のようにして、各パルス生成回路152−ｉ（ｉ＝０，…，ｎ−１）は、入力値ｘｉの値に比例した時間幅の出力パルスPWMｉを出力する。（ただし、この時間幅は、厳密にはreset信号がLの期間の2クロック分のオフセットが入る。これは、xiからあらかじめ2を引いておくなどの処理で対処できる。）このとき、各パルス生成回路152−ｉは、共通のカウンタ153が出力する計数値CNTを用いて、デジタル入力値ｘｉとの比較を行う。従って、総てのパルス生成回路152−ｉにカウンタを備えた場合と比べると、消費電力が極めて小さくなる。
【０１４６】
すなわち、総てのパルス生成回路152−ｉにカウンタを備えた場合には、各カウンタ内のスイッチング素子はクロックごとに少なくとも一つの素子の切換が行われる。従って、例えば、スイッチング素子としてＣＭＯＳを使用した場合、切換に伴って貫通電流や負荷への充放電電流が流れる。そのため、デジタル・パルス幅変換回路全体としての消費電力は大きくなる。
【０１４７】
一方、本実施形態のように、一つのカウンタ153を駆動し、各パルス生成回路152−ｉはこの共通のカウンタ153の出力値を参照してパルスの切り換えを行うようにすると、カウンタ153内のスイッチング素子の切換に伴って生じる貫通電流や負荷への充放電電流も少なく、消費電力も小さい。従って、デジタル・パルス幅変換回路151の低消費電力化が図られる。また、カウンタ153を共通化したことにより、回路のレイアウト面積が小さくなり、デジタル・パルス幅変換回路151の小型化が図られる。
【０１４８】
続いて、図１５に示すように前記ＰＷＭ信号はそれぞれスイッチド電流源24の動作のオン・オフを制御する。
【０１４９】
すなわち本実施形態においては、ＰＷＭ信号がHighの期間はスイッチがオンとなり、キャパシタ25に所定の電流が流れ込む。またＰＷＭ信号がLowの期間はスイッチがオフとなり、キャパシタ25への電流の電流の流入がストップする。結果として、キャパシタ25にはそれぞれのＰＷＭ信号の時間幅に比例した電荷量が蓄積される。
【０１５０】
キャパシタ25においては、バッファ26を介して蓄積した電荷量は電圧値として参照することができるため、図１５に示すようにアナログ演算回路に対して非演算値Xiに相当するアナログ電圧値として入力される。
【０１５１】
なお上記で説明したソーティング回路の具体的な回路構成は、本発明の主眼とするところではなく、同様の機能を実現するものであれば、その他の回路構成を用いても構わない。
【０１５２】
続いて、荷重保持回路について説明する。荷重保持回路は図１９に示すように、入力保持回路と同様にキャパシタ37と出力バッファ38により構成されており、被演算値Wiの値をキャパシタ37に蓄積された電圧値として保持している。
また荷重保持回路に関しては、図２０に示すようにデジタルメモリ（例えばSRAM）に保持された被演算値Wiの値をD/A変換してから、前述した荷重保持回路にアナログ値として保持するものであっても構わない。この場合のD/A変換回路の処理工程は、前述した連想メモリを使用する場合におけるD/A変換回路と全く同様であるため、説明を省略する。
【０１５３】
続いて、被演算値Xiと被演算値Wiがアナログ電圧値として入力される前記所定の演算回路において行なわれる演算処理について説明する。
【０１５４】
本実施形態における演算回路は図１２に示すように、アナログ演算回路として、アナログ乗算器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を値の大きいもの順にソートしたが、値の小さいもの順にソートした場合にも、前記と同様の効果がある。
【０１６１】
（第三の実施形態）
第三の実施形態を具体的な処理構成図を参照して説明する。本実施形態での積和演算方法を実行するための処理回路の構成図は、図２１によって示される。
【０１６２】
図２２は、演算回路をアナログ回路で構成したアナログ演算回路を示す。図２２に示すように、本実施形態におけるアナログ演算回路は、アナログ乗算器45と、キャパシタ46と、出力バッファ47とから構成される。図２３は、ランプ生成回路を示す。
【０１６３】
また、入力保持回路2とソーティング回路4は第一の実施形態と同様に連想メモリ回路で構成されている。またソーティング回路の後段には、メモリ回路43が構成され、さらにメモリ回路43の後段にランプ生成回路44が構成されており、ランプ生成回路44の出力がスイッチ回路5に入力されている。なお、本実施形態におけるメモリ回路43はSRAMにより構成される。
【０１６４】
以上説明した図を用いて、本実施形態における積和演算方法を用いた処理過程について説明する。連想メモリ回路には、被演算値Xiの値と、それぞれの被演算値Xiが有するラベルが保持されている。
【０１６５】
これに対して、連想メモリ回路の一般的な機能として、値の大きなもの順に被演算値Xiを検索していき、そのラベルを出力する。また同時に、被演算値Xiを値が大きいもの順に検索する際の検索値に関して、その検索値を1単位減らす時のみ、パルス信号のフラグを出力する（本実施形態においては、フラグ＝１を出力する）。（なお、本実施形態とは別の手法として、被演算値Xiを値が小さいもの順に検索する際の検索値に関して、その検索値を1単位増やす時のみ、パルス信号のフラグを出力する手法も可能である。）
【０１６６】
図２１に示すように、前記ラベルとフラグは、それぞれ対応するものが、検索された順番に（つまり値の大きいもの順に）後段のSRAMに入力され保持される。続いてSRAMは、前記ラベルとフラグを保持している順に（つまり値の大きいもの順に）出力し、ラベルはスイッチ回路5に入力され、フラグはランプ生成回路44に入力される。
【０１６７】
続いて、ランプ生成回路44について説明を行なう。ランプ生成回路44は、図２３に示すように所定の電圧値Vbにバイアスされた電圧制御電流源48とキャパシタ50とスイッチ49とバッファ51により構成される。ここで、前記フラグがランプ生成回路44に入力され、スイッチ49をオンにすると、電圧制御電流源48から一定の電流が流れてキャパシタ50に蓄積される。
【０１６８】
前記フラグは連想メモリにおける検索値が１単位減る時のみ１になるため、スイッチ49がオンになるのは、検索値が１単位減る時のみである。従って、ランプ生成回路44におけるノードの電圧値は図２３の波形のように変化する。すなわち、被演算値Xiの値の大きいもの順に対応する、単調に増加する電圧値が生成される。（ここで「単調」とは、時間に対して一定値を示す場合を含んでいる。以下同様）
【０１６９】
なお、ここで被演算値Xiの値の大きいもの順に対応した電圧値として、単調に増加する電圧値を設定したが、後述するアナログ乗算器によっては、単調に減少する電圧値を設定しても良い。この場合は、ランプ生成回路44において、初期状態として所定の電荷を蓄積したキャパシタ50から、電圧制御電流源によって電荷を引き抜くことにより実現することができる。
【０１７０】
続いて、ランプ生成回路44で生成された単調に増加する電圧値は、スイッチ回路5に入力される。スイッチ回路5は、入力された前記ラベルに対応してスイッチングを行い、ラベルによって決定される所定の演算回路1に対して、単調に増加する電圧値を入力する。
【０１７１】
ここで、演算回路1に関して考えると、その演算回路1が、ラベルによって決定される所定の演算回路に一致する場合のみ、単調に増加する電圧値が入力されることとなり、かつメモリ回路43から出力されるラベルが変化して、ラベルによって決定される所定の演算回路に一致しなくなった場合は、スイッチングにより、単調に増加する電圧値は入力されなくなる。つまり、演算回路1においては、ラベルの出力タイミングによって単調に増加する電圧値をサンプリングすることになり、これはすなわちラベルによるスイッチングのタイミングで被乗算値Xiに対応する適当な電圧値が入力されることを意味する。
【０１７２】
なお、被演算値Xiが入力されない演算回路1では演算処理が行なわれないのは第二の実施形態と同様である。また、荷重保持回路3における演算処理は、第二の実施形態と同様であるため、説明を省略する。
【０１７３】
続いて、アナログ演算回路においては、図２２に示すとおりアナログ乗算器45に入力された被演算値Xiと被演算値Wiの乗算を行い、キャパシタ46に演算結果に相当する電荷が蓄積される。なお、アナログ演算回路における処理は第二の実施形態と同様であるため、説明を省略する。なお本実施形態においては、被演算値Xiが入力値保持回路2に対してPWM信号として入力されるものであっても構わない。この場合に関しては、PWM信号の入力処理工程は第一の実施形態と同様として、説明を省略する。
【０１７４】
（第四の実施形態）
本実施形態では、第二、第三の実施形態におけるアナログ演算回路として別の回路構成を用いたものに関して説明を行なう。なお、アナログ演算回路以外に関しては、第二、第三の実施形態と同様である。
【０１７５】
図２４に本実施形態で説明するアナログ演算回路を示す。図２４に示すように、アナログ演算回路は、電圧制御電流源52と電圧制御抵抗素子53とキャパシタ55により構成され、被演算値Xiとして時間に関して単調に増加する電圧値が制御電圧として電圧制御電流源52に入力される。
【０１７６】
ここで入力される時間に関して単調に増加する電圧値は、図２６に示すように、被演算値Xiに相当する電圧値をWTA回路56によって値の大きいもの順に出力する際に、連続したアナログ電圧値として出力することにより生成される。なお、時間に関して単調に増加する電圧値を第三の実施形態と同様にメモリ回路とランプ生成回路を用いて生成しても構わない。この場合は、入力値保持回路及びソーティング回路は、第三の実施形態と同様デジタル回路で構成される。
【０１７７】
またこの場合は、被演算値Xiが入力値保持回路に対してPWM信号として入力されるものであっても構わない。この場合に関しては、PWM信号の入力処理工程は第一の実施形態と同様として、説明を省略する。
【０１７８】
続いて図２５に示すように、WTA回路56（ソーティング回路4）から出力された時間に関して単調に増加する電圧値は、スイッチ回路5を経て演算回路1に入力される。ここでアナログ演算回路においては、ある時間タイミングで単調に増加する電圧値を参照することにより、第二、第三の実施形態で説明したのと同様に、被演算値Xiに相当する電圧値が、大きいもの順に、ラベルに対応するアナログ演算回路の電圧制御電流源52の制御電圧として入力される。なお電圧制御電流源52は、MOSトランジスタの飽和特性を利用して構成しても良いし、また差動型構成にしても良い。
【０１７９】
続いてアナログ演算回路の電圧制御抵抗素子53に対して、被演算値Wiに相当するアナログ電圧値を制御電圧として入力する。ここで電圧制御抵抗素子53は、入力されたアナログ電圧値に応じて所定の抵抗値Rを示す。なお電圧制御抵抗素子53は、MOSトランジスタの線形特性を利用して構成しても良いし、また差動型構成にしても良い。
【０１８０】
続いて、所定の演算タイミングで参照された被演算値Xiに相当するアナログ電圧値で決定される電圧制御電流源52の電流Iが、被演算値Wiに相当するアナログ電圧値で決定される電圧制御抵抗素子53（この時の抵抗値をRとする）を流れることにより、Xi×Wiの演算結果が、図２４中のノードにおいて、I×Rの電圧値として観察される。ノードの電圧は、さらに制御電圧として電圧制御電流源54に入力されることで、キャパシタにI×Rによって決定される電流iが流れる。
【０１８１】
なお電圧制御電流源54は、MOSトランジスタの飽和特性を利用して構成しても良いし、また差動型構成にしても良い。ここで、スイッチ回路5のスイッチング間隔を一定時間に設定しておくことで、I×R×（スイッチング間隔）の電荷をキャパシタ55に蓄積することができる。
【０１８２】
以上の演算動作を繰り返すことにより、累算結果が電荷量としてキャパシタ55に保持される。
【０１８３】
このようにして、図２５に示した積和演算回路によって、第二、第三の実施形態に示したものと同様の演算を行なう事ができる。なお、本実施形態においては被演算値Xiに相当するアナログ電圧を時間に対して単調に増加する電圧値としたが、演算目的に応じて、時間に対して単調に減少する電圧値としても良い。
【０１８４】
また、被演算値Xiに対応するアナログ電圧値が、被演算値Xiのラベルに対応してスイッチ回路5を切り替えることにより、所定の演算回路に入力されることは第二、第三の実施形態と同様である。また、被演算値Xiが入力されない演算回路1では演算処理が行なわれないのも第二、第三の実施形態と同様である。
【０１８５】
また、本実施形態においては、被演算値Wiに相当するアナログ電圧値は、被演算値Xiと同様に、被演算値Xiが有するラベルに応じてスイッチ回路5においてスイッチングが行なわれ、ラベルによって決定される所定の演算回路1に入力されるが、本実施形態とは異なる手法として、被演算値Wiに相当するアナログ電圧値が入力される所定の演算回路が、被演算値Xiのラベルにはよらず事前に設定されている手法を用いることも可能であるのも、第二、第三の実施形態と同様である。
【０１８６】
（第五の実施形態）
本実施形態の構成を図２７に示す。本実施形態は、第三または第四の実施形態で説明した、時間に関して単調に増加するアナログ電圧値を係数Ki倍することで、被演算値Xiに所定の係数Kiを掛け合わせた演算を行なうことが可能な点が、第三または第四の実施形態と異なっている。
【０１８７】
従って本実施形態においては、第三または第四の実施形態と異なる点についてのみ説明を行い、その他に関しては第三または第四の実施形態と同様として説明を省略する。
【０１８８】
すなわち図２７に示すように、単調に増加するアナログ電圧値が係数Ki倍されることは、所定の演算タイミングで参照される電圧値（つまり被演算値Xi）に関して、所定の係数Kiが掛け合わせられていることを意味する。従って、演算回路1に入力する単調に増加するアナログ電圧値を係数Ki倍することで、Ki×Xi×Wiの3項の乗算を演算することが可能となる。
【０１８９】
また、図２７に示すように、それぞれ異なる値の係数Kiを掛けた単調に増加するアナログ電圧値を並列に入力することにより、それぞれの演算回路1において異なる３項の乗算を並列に演算することが可能となる。なお、それぞれの単調に増加するアナログ電圧値に対する係数Kiを変化させるためには、ソーティング回路4（WTA回路またはランプ生成回路）の後段にそれぞれのKiの値に対応する電圧増幅器57を置くことで実現される。図２７では、WTA回路の後段に電圧増幅器57を置いた例を示している。
【０１９０】
また、ランプ生成回路の後段に電圧増幅器57を置いた場合は、図２１においてランプ生成回路44から出力される単調に増加するアナログ電圧値に対して、図２１と同様にそれぞれのKiの値に対応する電圧増幅器57を置くことで実現される。また、本実施形態においては単調に増加するアナログ電圧値を用いた場合について説明を行なったが、単調に減少するアナログ電圧値を用いた場合も同様の演算が可能である。
【０１９１】
なお、被演算値Xi×係数Kiに対応する単調に増加するアナログ電圧値が、被演算値Xiのラベルに対応してスイッチ回路5を切り替えることにより、所定の演算回路に入力されることは第三、第四の実施形態と同様である。
【０１９２】
また、本実施形態においては、被演算値Wiに相当するアナログ電圧値は、被演算値Xiと同様に、被演算値Xiが有するラベルに応じてスイッチ回路5においてスイッチングが行なわれ、ラベルによって決定される所定の演算回路1に入力されるが、本実施形態とは異なる手法として、被演算値Wiに相当するアナログ電圧値が入力される所定の演算回路が、被演算値Xiのラベルにはよらず事前に設定されている手法を用いることも可能であるのも、第三、第四の実施形態と同様である。また本実施形態において、被演算値Xiが入力値保持回路2に対してPWM信号として入力される場合に関しては、第三、第四の実施形態と同様である。
【０１９３】
（第六の実施形態）
第六の実施形態を図２８及び図２９を参照して説明する。本実施形態は、第三または第四の実施形態で説明した、時間に関して単調に増加するアナログ電圧値を係数Ki倍することで、被演算値Xiに所定の係数Kiを掛け合わせた演算を行なうことが可能な点が、第三または第四の実施形態と異なっている。
【０１９４】
従って本実施形態においては、第三または第四の実施形態と異なる点についてのみ説明を行い、その他に関しては第三または第四の実施形態と同様として説明を省略する。
【０１９５】
図２８において、被演算値Xiを大きいもの順にソートするためには、第一の実施形態と同様にソーティング回路4として、連想メモリが用いられている。
また、連想メモリの後段には、被演算値Xiに関する同値判定回路58が接続されている。同値判定回路58は、内部にレジスタ等のメモリ機能を有しており、連想メモリから前回出力された被演算値Xiの値を記憶している。
【０１９６】
ここで連想メモリから出力された次の被演算値Xi'が、同値判定回路58に入力されると、同値判定回路58においては、今回入力された被演算値Xi'と前回入力された被演算値Xiの値が比較され、両者の値が異なる場合には後述するランプ生成回路60のスイッチをオンにする検出信号を出力する。なお、両者の値が等しい際には、検出信号を出力しないため、ランプ生成回路60のスイッチはオフのままである。
【０１９７】
続いて、演算回路1における演算処理は、第三または第四の実施形態と同様に実施される。ここで、演算回路1に入力される時間に対して単調に増加する電圧値は、図２９のランプ生成回路によって作成される。ランプ生成回路60においては、係数Kiに相当する電圧値を制御電圧として電圧制御電流源61に与えることで一定の電流が流れ、キャパシタ50に電荷が蓄積される。
【０１９８】
ここで、ランプ生成回路60のスイッチ49は前述した通りに同値判定回路58からの検出信号によりオンされる。すなわちランプ生成回路60は、連想メモリからの出力値が前回の出力値と等しい場合は、スイッチ49がオフになり前記のキャパシタ50への電荷蓄積動作を停止し、連想メモリからの出力値が前回の出力値と異なる場合だけスイッチ49がオンになり、ノードの電圧値が図２９のように変化する。
【０１９９】
この際、係数Kiに相当する電圧値を適当に設定することにより、第五の実施形態で説明したのと同様に、単調に増加する電圧値を係数Ki倍することができる。
これをバッファ51を介してアナログ演算回路に入力することによって、第五の実施形態と同様にKi×Xi×Wiの３項の乗算を演算することが可能となる。その他の演算処理動作は第三または第四の実施形態と同様であるため、説明を省略する。
【０２００】
なお電圧制御電流源61は、MOSトランジスタの飽和特性を利用して構成しても良いし、また差動型構成にしても良い。また、ランプ発生回路自体60も、同様の機能を実現できるものであれば、その他の回路構成を使用しても構わない。また、本実施形態においては単調に増加するアナログ電圧値を用いた場合について説明を行なったが、単調に減少するアナログ電圧値を用いた場合も同様の演算が可能である。
【０２０１】
なお、被演算値Xi×係数Kiに対応する単調に増加するアナログ電圧値が、被演算値Xiのラベルに対応してスイッチ回路5を切り替えることにより、所定の演算回路に入力されることは第三、第四の実施形態と同様である。また、本実施形態においては、被演算値Wiに相当するアナログ電圧値は、被演算値Xiと同様に、被演算値Xiが有するラベルに応じてスイッチ回路5においてスイッチングが行なわれ、ラベルによって決定される所定の演算回路に入力されるが、本実施形態とは異なる手法として、被演算値Wiに相当するアナログ電圧値が入力される所定の演算回路が、被演算値Xiのラベルにはよらず事前に設定されている手法を用いることも可能であるのも、第三、第四の実施形態と同様である。
【０２０２】
また本実施形態において、被演算値Xiが入力値保持回路2に対してPWM信号として入力される場合に関しては、第三または第四の実施形態と同様である。
【０２０３】
（第七の実施形態）
第七の実施形態を図３０及び図３１を参照して説明する。本実施形態は、それぞれのランプ生成回路62に対して係数値保持回路59からの出力を入力すること以外は第三の実施形態と同様の構成を有する。そこで、本実施形態の説明においては第三の実施形態と異なる点についてのみ説明を行い、それ以外は第三の実施形態と同様として説明を省略する。
【０２０４】
まず図３０に示すように、係数値保持回路59から係数Kiに対応する電圧値をそれぞれのランプ生成回路62に入力する。ランプ生成回路においては、図２３とは異なり図３１に示すように係数Kiに対応する電圧値が電圧制御電流源61のゲートに与えられることで、係数Kiに応じた一定電流が電圧制御電流源61を流れる。すなわち、本実施形態と第三の実施形態との相違は、ランプ生成回路62における電圧制御電流源61の電流量を係数値保持回路59に保持した係数Kiによって制御することが出来る点にある。
【０２０５】
電圧制御電流源61の電流値の変化は、キャパシタ50に蓄積される単位時間あたりの電荷量の変化量に相当し、すなわちこれはノードの電圧値の時間に対する変化の傾きが変わることを意味する。これは第五または第六の実施形態で説明したように、単調に増加する電圧値を係数Ki倍することに相当するため、これをバッファ51を介してアナログ演算回路に入力することによって、第五または第六の実施形態と同様にKi×Xi×Wiの３項の乗算を演算することが可能となる。また本実施形態において、被演算値Xiが入力値保持回路2に対してPWM信号として入力される場合に関しては、第三の実施形態と同様である。
【０２０６】
（第八の実施形態）
第八の実施形態を図３２〜図３５を参照して説明する。本実施形態におけるニューラルネットワークモデルを図３２に示す。
【０２０７】
また、本実施形態におけるニューラルネットワークに対して第一、第二、第三及び第四の実施形態で説明した積和演算回路を適用する際の演算処理回路の構成を図３３に示す（なお、図３３は第三の実施形態で説明した積和演算回路を適用した場合を示している）。図３３に示すように、本実施形態におけるニューラルネットワークの処理回路は、第一、第二、第三及び第四の実施形態で説明した積和演算回路による処理回路を含んでいる。
【０２０８】
まず、図３２に示すようにニューラルネットワークにおけるニューロン素子のモデルとしては、ニューロン素子63において、前段の複数のニューロン素子の出力値をシナプス荷重64で重み付けした値の総和を取り、ニューロン素子63の内部状態値を決定するものが一般的である。本実施形態におけるニューロン素子回路は、ニューロン素子のモデルとして、第一もしくは第二、第三、第四の実施形態で説明した演算処理回路を用いている。
【０２０９】
すなわち第一もしくは第二、第三、第四の実施形態で説明した被演算値Xiが前段ニューロン素子の出力値に相当し、また被演算値Wiがシナプス荷重値64に相当し、ニューロン素子63の内部状態値を決定する。
【０２１０】
続いて図３３に示すように、各演算回路で算出された累算値は所定の関数処理を行なう関数処理回路65に入力される。関数処理回路65は、目的に応じて非線形関数処理を行なっても良いし、線形関数処理を行なっても良い。本実施形態では、一例として図３４に示すシグモイド変換を行なう処理回路としている。
【０２１１】
また前記関数処理回路65は、実際の回路構成としては、デジタル回路の場合はルックアップテーブルで実現することが可能であり、アナログ回路の場合はコンパレータで実現することが可能である。
【０２１２】
また前記関数処理は、演算ブロック1で算出された累算結果に対して処理を行なうものであれば、関数処理回路65を接続する位置は、他の部位であっても構わない。関数処理回路65の回路構成としては、その他にも様々な回路構成が提案されているが、本発明の主眼とするところではないので、説明を省略する。
続いて、前記関数処理回路65によりシグモイド変換を施された結果の値（すなわち次の階層における被演算値Xiに相当）は、次の階層に相当する積和演算回路の入力保持回路に保持される。ここでは、前記の値（次の階層における被演算値Xiに相当）のラベルも、同時に保持される。
【０２１３】
以上説明した演算処理を繰り返すことにより、図３２に示したニューラルネットワークにおける演算処理を実現することが可能になる。ここでは、積和演算手法として第一、第二、第三及び第四の実施形態で説明した手法を用いているため、第一、第二、第三及び第四の実施形態で説明した効果を有するニューラルネットワーク回路を構成することが可能となる。
【０２１４】
またさらに、各ニューロン素子間（積和演算回路間）の入出力においては、後段のニューロン素子回路（積和演算回路）に対して被演算値XiをPWM信号として入力することも可能であるのも、第一、第二、第三及び第四の実施形態と同様である。
【０２１５】
この際、演算回路がアナログ演算回路の場合は、図３５に示すように、キャパシタに蓄積された電荷量をコンパレータ66によってPWM信号として読み出し、後段のパルス幅・デジタル変換回路67に入力する。ここで、コンパレータ66によるPWM信号作成手法は広く知られている手法であり、詳しくは説明しないが、参照電圧としてランプ電圧波形を入力した場合は、電荷量に比例するPWM信号として読み出すことができ、また参照電圧として非線形な電圧波形を入力した場合は、電荷量に対して非線形に対応するPWM信号として読み出すことができ、つまり関数処理回路として機能させることができる。
【０２１６】
また、キャパシタに蓄積された電荷量をコンパレータ66によって電荷量に比例するPWM信号として読み出し、さらに後段のパルス幅・デジタル変換回路67でデジタル値に変換した後に、ルックアップテーブルによって関数処理を行なうことも可能である。なお本実施形態におけるニューロン素子数及び階層数は、本発明におけるニューラルネットワークの構成を限定するものではなく、必要に応じて任意の数に設定することが可能である。
【０２１７】
（第九の実施形態）
第九の実施形態を図３６を参照して説明する。本実施形態におけるニューラルネットワークモデルは、シナプス荷重値が、被演算値Wiと係数Kiの積Wi×Kiで表されることを除いて、第八の実施形態で説明したニューラルネットワークモデルと同様である。
【０２１８】
また、本実施形態におけるニューラルネットワークに対して第五、第六または第七の実施形態で説明した積和演算回路を適用する際の演算処理回路の構成を図３６に示す（図は、第七の実施形態で説明した積和演算回路を適用した場合を示している）。本実施形態におけるニューロン素子のモデルは、ニューロン素子において、前段の複数のニューロン素子の出力値をWi×Kiで表されるシナプス荷重で重み付けした値の総和を取り、ニューロン素子の内部状態値を決定する。
【０２１９】
そこで本実施形態におけるニューロン素子回路は、ニューロン素子のモデルとして、第五、第六または第七の実施形態で説明した演算処理回路を用いている。
すなわち第五、第六または第七の実施形態で説明した被演算値Xiが前段ニューロン素子の出力値に相当し、また被演算値WiとKiの積がシナプス荷重値に相当し、ニューロン素子の内部状態値を決定する。
【０２２０】
なお、続いて行なう関数処理、及び関数処理後の演算値の入力・保持に関しては第八の実施形態と同様であるため、説明を省略する。また、各ニューロン素子間（積和演算回路間）の入出力において、後段のニューロン素子回路（積和演算回路）に対して被演算値XiをPWM信号として入力することに関しても第八の実施形態と同様であるため、説明を省略する。
【０２２１】
ここでは、積和演算手法として第五、第六または第七の実施形態で説明した手法を用いているため、第五、第六または第七の実施形態で説明した効果を有するニューラルネットワーク回路を構成することが可能となる。また本実施形態におけるニューロン素子数及び階層数は、本発明におけるニューラルネットワークの構成を限定するものではなく、必要に応じて任意の数に設定することが可能である。
【０２２２】
（第十の実施形態）
ニューラルネットワークの演算処理は、一般的に図３２で示したモデルで説明されるが、実際の演算においては、ニューロン素子に入力される前段ニューロンの出力値のうち、所定値以上の値を有するものだけの演算処理を行なって内部状態を決定しても、最終的なニューラルネットワークの演算能力がほとんど変わらないケースが多い。その場合、前記所定値よりも小さい値を有する演算処理を省略した方が、ニューラルネットワークを回路化した場合には、消費電力や演算速度の点で有利となる。
【０２２３】
本実施形態は、第八および第九の実施形態でニューラルネットワークに適用した第一〜第七の実施形態に関して、被演算値Xiをソーティング回路によって大きいもの順にソートした後、さらに所定値未満の値を有するXiに関する演算を省略する演算回路を説明するものである。図４１は、第一〜第九の実施形態で説明した演算処理構成の図１、図５、図２１、図２５、図２７、図２８、図３０、図３３、図３５および図３６において、本実施形態の機能を実現するために、ソーティング回路4に対してさらに所定値保持メモリ171が付加されている部分のみを抽出して図示している。従って、図４１に図示した部分以外は、図１、図５、図２１、図２５、図２７、図２８、図３０、図３３、図３５および図３６に図示した構成と同様である。
すなわち、ソーティングブロック4に対して、所定値保持メモリ171から所定値に関するデータが入力され、被演算値Xiに関するソーティング処理は所定値に達した時点で打ち切られる。
【０２２４】
ここで、所定値未満の値を有するXiに関する積和演算の省略は、ソーティング回路として連想メモリを用いる場合においては、連想メモリにおける内容検索時に検索値を順番に小さくしていく際に、所定値に達した時点で処理を打ち切ることで実現される。またソーティング回路としてWTA回路を用いる場合においては、WTA回路によるソーティング時に、参照電圧値が所定値に達した時点で処理を打ち切ることで実現される。
【０２２５】
なお本実施形態においては、所定値未満の値を有するXiに関する積和演算を省略する回路として上記２例を挙げたが、同様の効果を有するものであれば、その他の回路及び手法を用いても良い。
【０２２６】
以上説明したように、所定値未満の値を有するXiに関する積和演算を省略することにより、実際の処理回路を構成する際の低消費電力化及び動作速度の向上が可能となる。
【０２２７】
（第十一の実施形態）
ニューラルネットワークの演算処理能力に関しては、第十の実施形態において、ニューロン素子に入力される前段ニューロンの出力値のうち、所定値よりも小さい値を有する演算処理を省略せずに、一定値として演算を行なった方がより演算処理能力が向上するケースがある。そこで本実施形態は、第十の実施形態において被演算値Xiをソーティング回路によって大きいもの順にソートして出力した後、さらに所定値未満の値を有するXiに関しては、その値を一定値とする演算回路を説明するものである。
【０２２８】
図４２は、第十の実施形態で説明した図４１のソーティングブロック4に対して、さらに一定値保持メモリ172が付加されている部分が異なっている。従って、図４２に図示した部分以外に関しては、第十の実施形態で説明したものと同様である。すなわち、ソーティングブロック4に対して、所定値保持メモリ171から所定値に関するデータが入力され、被演算値Xiに関するソーティング処理は所定値に達した時点で打ち切られる。
【０２２９】
さらに、ソーティングブロック4に対して、一定値保持メモリ172から一定値に関するデータが入力され、被演算値Xiの値として前記一定値が出力される。
ここで、所定値未満の値を有するXiを一定値として演算する回路は、第十の実施形態におけるソーティング回路として連想メモリを用いる場合においては、連想メモリにおける内容検索時に検索値を順番に小さくしていく際に、所定値に達した以降の被演算値Xiの値を事前に設定した一定値として出力することで実現できる。
【０２３０】
この際には、事前に設定した一定値を別のメモリに用意し、被演算値Xiの値が所定値に達すると同時に連想メモリの処理を中止し、前記のメモリから事前に設定した一定値を出力すれば良い。また、同様の機能を実現できるのであればその他の回路及び方法を用いても良い。また第十の実施形態におけるソーティング回路としてWTA回路を用いる場合においては、WTA回路によるソーティング時に、参照電圧値が所定値に達した以降の被演算値Xiに相当する電圧値を事前に設定した一定値として出力することで実現できる。
【０２３１】
この際には、事前に設定した一定値を別のアナログメモリに用意し、被演算値Xiの値が所定値に達すると同時にWTA回路の処理を中止し、前記のアナログメモリから事前に設定した一定値を出力すれば良い。また、同様の機能を実現できるのであればその他の回路及び方法を用いても良い。
【０２３２】
（第十二の実施形態）
ニューラルネットワークの演算処理は、一般的に図３２で示したモデルで説明されるが、実際の演算においては、ニューロン素子に入力される前段ニューロンの出力値のうち、値の大きいものから数えて所定の割合を占めるものだけの演算処理を行なって内部状態を決定しても、最終的なニューラルネットワークの演算能力がほとんど変わらないケースが多い。その場合、値の大きいものから数えて所定の割合を占めるもの以外に関する演算処理を省略した方が、ニューラルネットワークを回路化した場合には、消費電力や演算速度の点で有利となる。
【０２３３】
本実施形態は、第八、第九の実施形態でニューラルネットワークに適用した第一〜第七の実施形態において、被演算値Xiをソーティング回路によって大きいもの順にソートした後、さらに値の大きいものから数えて所定の割合を占める被演算値Xi以外の被演算値Xiに関する演算を省略する演算回路を説明するものである。
【０２３４】
図４３は、第一〜第九の実施形態で説明した演算処理構成の図１、図５、図２１、図２５、図２７、図２８、図３０、図３３、図３５および図３６において、本実施形態の機能を実現するために、ソーティングブロック4に対してさらに所定数（割合）保持メモリ173が付加されている部分のみを抽出して図示している。従って、図４３に図示した部分以外は、図１、図５、図２１、図２５、図２７、図２８、図３０、図３３、図３５および図３６に図示した構成と同様である。
【０２３５】
すなわち、ソーティングブロック4に対して、所定数（割合）保持メモリ173から所定数（割合）に関するデータが入力され、被演算値Xiに関するソーティング処理は所定数（割合）に達した時点で打ち切られる。
【０２３６】
ここで、値の大きいものから数えて所定の割合を占める被演算値Xi以外の被演算値Xiに関する積和演算の省略は、ソーティング回路として連想メモリを用いる場合においては、連想メモリにおける内容検索時に検索値を順番に小さくしていく際に、出力した被演算値Xiの数が所定数（割合）に達した時点で処理を打ち切ることで実現される。またソーティング回路としてWTA回路を用いる場合においては、WTAによるソーティング時に、参照電圧値が所定数（割合）の被演算値Xiに相当する電圧値に達した時点で処理を打ち切ることで実現される。
【０２３７】
なお本実施形態においては、値の大きいものから数えて所定の割合を占める被演算値Xi以外の被演算値Xiに関する積和演算を省略する回路として上記２例を挙げたが、同様の効果を有するものであれば、その他の回路及び手法を用いても良い。
【０２３８】
以上説明したように、値の大きいものから数えて所定の割合を占める被演算値Xi以外の被演算値Xiに関する積和演算を省略することにより、実際の処理回路を構成する際の低消費電力化及び動作速度の向上が可能となる。
【０２３９】
（第十三の実施形態）
ニューラルネットワークの演算処理能力に関しては、第十二の実施形態において、ニューロン素子に入力される前段ニューロンの出力値のうち、値の大きいものから数えて所定の割合を占める出力値以外の出力値に関する演算処理を省略せずに、一定値として演算を行なった方がより演算処理能力が向上するケースがある。そこで本実施形態は、第十二の実施形態において被演算値Xiをソーティング回路によって大きいもの順にソートした後、さらに値の大きいものから数えて所定の割合を占める被演算値Xi以外の被演算値Xiに関しては、その値を一定値とする演算回路を説明するものである。
【０２４０】
図４４は、第十二の実施形態で説明した図４３のソーティングブロック4に対して、さらに一定値保持メモリ174が付加されている部分が異なっている。
従って、図４４に図示した部分以外に関しては、第十二の実施形態で説明したものと同様である。すなわち、ソーティングブロック4に対して、所定数（割合）保持メモリ173から所定数（割合）に関するデータが入力され、被演算値Xiに関するソーティング処理は所定数（割合）に達した時点で打ち切られる。
【０２４１】
さらに、ソーティングブロック4に対して、一定値保持メモリ174から一定値に関するデータが入力され、被演算値Xiの値として前記一定値が出力される。ここで、値の大きいものから数えて所定の割合を占める被演算値Xi以外の被演算値Xiを一定値として演算する手法は、ソーティング回路として連想メモリを用いる場合においては、連想メモリにおける内容検索時に検索値を順番に小さくしていく際に、出力した被演算値Xiの数が所定数（割合）に達してから以降の被演算値Xiの値を事前に設定した一定値として出力することで実現できる。この際には、事前に設定した一定値を別のメモリに用意し、出力した被演算値Xiの数が所定数（割合）達すると同時に連想メモリの処理を中止し、前記のメモリから事前に設定した一定値を出力すれば良い。また、同様の機能を実現できるのであればその他の回路を用いても良い。
【０２４２】
またソーティング回路としてWTA回路を用いる場合においては、WTA回路によるソーティング時に、参照電圧値が所定数（割合）の被演算値Xiに相当する電圧値に達してから以降の被演算値Xiに相当する電圧値を事前に設定した一定値として出力することで実現できる。この際には、事前に設定した一定値を別のアナログメモリに用意し、参照電圧値が所定数（割合）の被演算値Xiに相当する電圧に達すると同時にWTAの処理を中止し、前記のアナログメモリから事前に設定した一定値を出力すれば良い。また、同様の機能を実現できるのであればその他の回路及び手法を用いても良い。
【０２４３】
（第十四の実施形態）
第十四の実施形態における画像処理を行なう積和演算回路の構成例を図３７に示す。図３７に示すように、本実施形態における画像処理を行なう積和演算回路は、第八〜第十三の実施形態で説明したニューラルネットワーク回路を含むことを特徴としている。なお図３７では、階層構造の初段のみを示しており、それ以降の階層の記述を省略している。
【０２４４】
ここで、積和演算回路に対して入力される信号は画像信号である。すなわち、本実施形態における積和演算回路は、入力された画像信号に対して、ニューラルネットワーク回路により所定の演算を行うことにより、所望の画像処理（例えばパターン検出およびパターン認識）を行うことを目的とするものである。
【０２４５】
なお、実際に実現される画像処理の内容は、ニューラルネットワーク回路の被演算値Ｗｉ及び係数値Ｋｉ等を適当に調整することで、所望の処理内容（例えばパターン検出およびパターン認識）が実現されるよう設定することが可能であるが、その詳しい調整方法は、本発明の主眼とするところではないので、説明を省略する。
【０２４６】
ここで本実施形態においては、撮像素子（例えばＣＣＤまたはＣＭＯＳイメージセンサなど）から出力される前記画像信号は、第一〜第七の実施形態における被演算値Ｘｉに相当する。従って、前期画像信号に対して行なわれる演算処理は、第一〜第十三の実施形態における被演算値Ｘｉに対して行なわれる演算処理と同様である。なお前記画像信号は、アナログ信号、デジタル信号またはＰＷＭ信号として入力する。ここで、それぞれの種類の信号に対応する演算処理は、第一から第十三の実施形態で説明した被演算値Ｘｉの信号の種類に対応している。従って、演算処理に関する説明は各実施形態と同様として省略する。
【０２４７】
なお図３７においては、アナログ信号である画像信号をコンパレータ69によってPWM信号に変換し、さらにパルス幅・デジタル変換回路70によってデジタル値に変換して、ニューラルネットワーク回路に入力する場合を示している。
【０２４８】
なお本実施形態においては、撮像素子として、ＣＣＤまたはＣＭＯＳイメージセンサを想定しているが、その他の撮像素子を用いても問題は無い。また本実施形態における撮像素子数、ニューロン素子数及び階層数は、本発明における画像信号処理回路の構成を限定するものではなく、必要に応じて任意の数に設定することが可能である。
【０２４９】
続いて図３８は、以上で説明した演算処理フローを示している。
【０２５０】
まず撮像素子から出力された画像信号を入力する工程S1を実行し、次に入力された信号を保持する入力値保持工程S2を実行する。続いて、保持された入力値を値が大きいもの順に出力するソーティング工程S3を実行し、フラグとラベルをメモリに保持するメモリ保持工程S4を実行する。続いて、ランプ生成工程S6においては、係数値入力工程S5から入力された係数値とメモリ保持工程S4から入力されたフラグによって、時間に関して単調に増加する電圧波形（ランプ波形）を生成し、スイッチング工程S7に入力する。
【０２５１】
スイッチング工程S7においては、メモリ保持工程S4から入力されたラベルにより、ランプ波形を適当な演算回路に入力する。また、スイッチング工程S9においては、メモリ保持工程S4から入力されたラベルにより、荷重値入力工程S8によって入力された荷重値を適当な演算回路に入力する。
【０２５２】
ランプ波形と荷重値を入力された演算回路においては、乗算・累算工程S10を実行し、累算値を関数処理工程S11に出力する。関数処理工程S11では、所定の関数処理を実行し、出力値を後段層へ入力する工程S12を実行する。後段層側では、以上説明した演算処理工程を必要な回数（階層数）繰り返す。
【０２５３】
以上説明したように、ニューラルネットワーク回路による演算処理を画像信号に適用することにより、所望の演算処理（例えばパターン検出およびパターン認識など）を実現することができる。
【図面の簡単な説明】
【０２５４】
【図１】第一の実施形態における積和演算回路の全体構成図である。
【図２】第一の実施形態におけるデジタル演算回路の構成図である。
【図３】第一の実施形態におけるソーティング回路の構成図である。
【図４】第一の実施形態におけるメモリの構成図である。
【図５】第一の実施形態におけるもう一つの積和演算回路の全体構成図である。
【図６】第一の実施形態におけるパルス幅・デジタル変換回路の構成図である。
【図７】第一の実施形態における終端ラッチ回路の内部構成図である。
【図８】第一の実施形態におけるラッチ回路の内部構成図である。
【図９】第一の実施形態におけるパルス幅・デジタル変換回路の各信号レベルの変化を表すタイムチャートである。
【図１０】第一の実施形態におけるもう一つのパルス幅・デジタル変換回路の終端ラッチ回路、始端ラッチ回路、及び減算回路の構成図である。
【図１１】第一の実施形態におけるもう一つのパルス幅・デジタル変換回路の各信号レベルの変化を表すタイムチャートである。
【図１２】第二の実施形態におけるアナログ演算回路の構成図である。
【図１３】第二の実施形態における入力値保持回路の構成図である。
【図１４】第二の実施形態におけるソーティング回路の構成図である。
【図１５】第二の実施形態におけるD/A変換回路の構成図である。
【図１６】第二の実施形態におけるデジタル・パルス幅変換回路の構成図である。
【図１７】第二の実施形態における各パルス生成回路の構成図である。
【図１８】第二の実施形態におけるデジタル・パルス幅変換回路の動作を表すタイミングチャートである。
【図１９】第二の実施形態における荷重保持回路の構成図である。
【図２０】第二の実施形態におけるD/A変換回路の構成図である。
【図２１】第三の実施形態における積和演算回路の全体構成図である。
【図２２】第三の実施形態におけるアナログ演算回路の構成図である。
【図２３】第三の実施形態におけるランプ生成回路の構成図である。
【図２４】第四の実施形態におけるアナログ演算回路の構成図である。
【図２５】第四の実施形態における積和演算回路の全体構成図である。
【図２６】第四の実施形態におけるランプ生成回路の構成図である。
【図２７】第五の実施形態における積和演算回路の全体構成図である。
【図２８】第六の実施形態における積和演算回路の全体構成図である。
【図２９】第六の実施形態におけるランプ生成回路の構成図である。
【図３０】第七の実施形態における積和演算回路の全体構成図である。
【図３１】第七の実施形態におけるランプ生成回路の構成図である。
【図３２】ニューラルネットワークモデル図である。
【図３３】第八の実施形態における積和演算回路の全体構成図である。
【図３４】シグモイド変換を示す図である。
【図３５】第八の実施形態におけるもう一つの積和演算回路の全体構成図である。
【図３６】第九の実施形態における積和演算回路の全体構成図である。
【図３７】第十四の実施形態における積和演算回路の全体構成図である。
【図３８】第十四の実施形態における演算処理工程のフローチャートである。
【図３９】従来のデジタル・パルス幅変換回路の一例を示す図である。
【図４０】従来のパルス幅・デジタル変換回路の一例を示す図である。
【図４１】第十の実施形態における積和演算方法の部分図である。
【図４２】第十一の実施形態における積和演算方法の部分図である。
【図４３】第十二の実施形態における積和演算方法の部分図である。
【図４４】第十三の実施形態における積和演算方法の部分図である。
【図４５】第二の実施形態における別形態のデジタル・パルス幅変換回路である。
【図４６】第二の実施形態における別形態の各パルス生成回路の構成図である。
【図４７】第二の実施形態における別形態のデジタル・パルス幅変換回路の動作を表すタイミングチャートである。
【符号の説明】
【０２５５】
1  演算回路
2  入力値保持回路
3  荷重値保持回路
4  ソーティング回路
5  スイッチ回路
6  レジスタ
7  乗算器
8  加減算器
9  パルス幅・デジタル変換回路
10  カウンタ
11-1〜11-(n-1)  終端ラッチ回路
12-1〜12-(m-1)  ラッチ
13  インバータ
14-0〜14-(n-1)  始端ラッチ回路
15-0〜15-(n-1)  減算回路
16-0〜16-(n-1)  ラッチ
17  アナログ乗算器
18  キャパシタ
19  出力バッファ
20  キャパシタ
21  出力バッファ
22  WTA回路
23  デジタル・パルス幅変換回路
24  電流源
25  キャパシタ
26  出力バッファ
27-0〜27-(n-1)  パルス生成回路
28  カウンタ
29  基準値レジスタ
30  加算回路
31  パルス幅レジスタ
32  切換回路
33  タイミングトリガ発生回路
34  出力パルス反転回路
35-0〜35-(m-1)  ＥＸＯＲゲート
36  ＮＯＲゲート
37  キャパシタ
38  出力バッファ
39  デジタル・パルス幅変換回路
40  電流源
41  キャパシタ
42  出力バッファ
43  メモリ回路
44  ランプ生成回路
45  アナログ乗算器
46  キャパシタ
47  出力バッファ
48  電圧制御電流源
49  スイッチ
50  キャパシタ
51  バッファ
52  電圧制御電流源
53  電圧制御抵抗素子
54  電圧制御電流源
55  キャパシタ
56  WTA回路
57  電圧増幅器
58  同値判定回路
59  係数値保持回路
60  ランプ生成回路
61  電圧制御電流源
62  ランプ生成回路
63  ニューロン素子
64  シナプス荷重
65  関数処理回路
66  関数処理回路
67  パルス幅・デジタル変換回路
68  撮像素子アレイ
69  コンパレータ
70  パルス幅・デジタル変換回路
101  ストローブ検出回路
102  ラッチ回路
103  カウンタ
104  デジタル・コンパレータ
105  JKフリップ・フロップ
111  従来のパルス幅・デジタル変換回路
112  ゲート回路
113  カウンタ
151  デジタル・パルス幅変換回路
152-0〜152-(n-1)  パルス生成回路
153  カウンタ
162  パルス幅レジスタ
164  タイミングトリガ発生回路
165  出力パルス反転回路
166-0〜166-(m-1)  ＥＸＯＲゲート
167  ＮＯＲゲート
171  所定値保持メモリ
172  一定値保持メモリ
173  所定数（割合）保持メモリ
174  一定値保持メモリ
【図１】
0004620944.tif 000005
【図２】
0004620944.tif 000006
【図３】
0004620944.tif 000007
【図４】
0004620944.tif 000008
【図５】
0004620944.tif 000009
【図６】
0004620944.tif 000010
【図７】
0004620944.tif 000011
【図８】
0004620944.tif 000012
【図９】
0004620944.tif 000013
【図１０】
0004620944.tif 000014
【図１１】
0004620944.tif 000015
【図１２】
0004620944.tif 000016
【図１３】
0004620944.tif 000017
【図１４】
0004620944.tif 000018
【図１５】
0004620944.tif 000019
【図１６】
0004620944.tif 000020
【図１７】
0004620944.tif 000021
【図１８】
0004620944.tif 000022
【図１９】
0004620944.tif 000023
【図２０】
0004620944.tif 000024
【図２１】
0004620944.tif 000025
【図２２】
0004620944.tif 000026
【図２３】
0004620944.tif 000027
【図２４】
0004620944.tif 000028
【図２５】
0004620944.tif 000029
【図２６】
0004620944.tif 000030
【図２７】
0004620944.tif 000031
【図２８】
0004620944.tif 000032
【図２９】
0004620944.tif 000033
【図３０】
0004620944.tif 000034
【図３１】
0004620944.tif 000035
【図３２】
0004620944.tif 000036
【図３３】
0004620944.tif 000037
【図３４】
0004620944.tif 000038
【図３５】
0004620944.tif 000039
【図３６】
0004620944.tif 000040
【図３７】
0004620944.tif 000041
【図３８】
0004620944.tif 000042
【図３９】
0004620944.tif 000043
【図４０】
0004620944.tif 000044
【図４１】
0004620944.tif 000045
【図４２】
0004620944.tif 000046
【図４３】
0004620944.tif 000047
【図４４】
0004620944.tif 000048
【図４５】
0004620944.tif 000049
【図４６】
0004620944.tif 000050
【図４７】
0004620944.tif 000051