(57)【特許請求の範囲】
【請求項１】
複数のアナログ信号より構成される一組の入力信号群に対し所定のコードを選び出す演算回路において、前記一組の入力信号群を前記アナログ信号の数より少数のアナログ変数もしくは多値の変数より構成される一組の入力変数群に変換する手段と、あらかじめ定められたアナログもしくは多値の変数複数個を一組として構成されるデータを複数個記憶保持するメモリ回路と、前記入力変数群と前記メモリ回路に保持されている複数のデータを並列処理により同時に所定の比較演算を行う回路と、前記比較演算の結果所定の条件を満たすデータに対応したコードを少なくとも一つ選び出す手段を備えたことを特徴とする瞬時認識機能を有する演算回路。
【請求項２】
前記比較演算を行う回路は、ソース電極が互いに接続された複数のＭＯＳ型トランジスタを有し、前記ＭＯＳ型トランジスタのゲート電極はスイッチ素子を介して所定の電位を有する信号線に接続され、前記ゲート電極と容量結合する入力電極を少なくとも一つ有し、前記複数のＭＯＳ型トランジスタ中の少なくとも第１及び第２のＭＯＳ型トランジスタからなるペアに対し、第１、第２の入力電圧がそれぞれ前記第１及び第２のＭＯＳ型トランジスタの入力電極に加えられるとともに前記スイッチ素子を導通させて前記ゲート電極の電位を前記信号線の電位と等しくする手段を有し、前記スイッチ素子を遮断して前記ゲート電極を電気的にフローティングとした後前記第１及び第２のＭＯＳ型トランジスタの入力電極にそれぞれ前記第２及び第１の入力電圧を入力する手段を有したことを特徴とする請求項１に記載の瞬時認識機能を有する演算回路。
【請求項３】
前記メモリ回路は、電気的に絶縁された第１のフローティングゲートを有する第３のＭＯＳ型トランジスタと、前記第１のフローティングゲートと容量結合する第１の電極と、前記第１のフローティングゲートとトンネル接合を介して設けられた第２の電極と、前記第２の電極と容量結合する第３の電極と、前記第１及び第２の電極と接続する第４のＭＯＳ型トランジスタとを有し、前記第１及び第３の電極間に所定の電位差を与える事により前記トンネル接合にトンネル電流を流し、前記の第１のフローティングゲート内の電荷量を変化させるとともに、前記電荷量が所定の値になったときに前記第４のＭＯＳ型トランジスタを導通させる手段を備えたことを特徴とする請求項１又は２に記載の瞬時認識機能を有する演算回路。
【請求項４】
前記メモリ回路は、電気的に絶縁された第１のフローティングゲートを有する第３のＭＯＳ型トランジスタと、前記第１のフローティングゲートと容量結合する第１の電極と、前記第１のフローティングゲートとトンネル接合を介して設けられた第２の電極と、前記第２の電極とスイッチを介して接続されている第３の電極からなる半導体装置を２つ以上有し、それぞれの半導体装置の前記第３の電極同士を共通に接続した第４の電極と、それぞれの前記第３のＭＯＳ型トランジスタのソース電極同士を共通に接続した第５の電極と、前記第４の電極と容量結合する第６の電極と、前記第４の電極とスイッチを介して接続する第７の電極とを備えたことを特徴とする請求項１又は２に記載の瞬時認識機能を有する演算回路。
【請求項５】
複数のアナログ信号より構成される一組の入力信号群に対し、前記入力信号群の特徴を抽出し前記アナログ信号の数より少数のスカラー変数により表現し、前記スカラー変数の組を複数のあらかじめ定められた特徴量変数の組と比較し、その差が最小となる前記特徴量変数の組を見い出すことにより入力信号群の特定を行うことを特徴とする瞬時認識方式。
【請求項６】
所定の特徴を表す前記特徴量変数が連続するコード番号で表され、番号が近いほど特徴に差が少なく、番号が離れるに従ってより大きな特徴の差を有するごとくコード化されていることを特徴とする請求項５に記載の瞬時認識方式。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、瞬時認識機能を有する演算回路及び瞬時認識方式に係わり、特に外界情報を取り入れ、これを瞬時に認識する機能を持った演算回路に関する。
【０００２】
【関連技術】
エレクトロニクスの進歩は実に目覚ましいが、人間のように外界の状況を判断し適切な行動をとるといった知的な機能を持った電子システムはまだ存在しない。現在のコンピュータシステムは、四則演算を非常に高速に実行できるが、例えば蛙のような生物が飛んでくる蝿を見つけて即座に行動を起こし獲物を一瞬のうちにとらえる、あるいは敵が来たのを見つけてすぐに逃げ出すといった実時間の応答は全く不可能である。その理由は、すべてを厳密なブール代数にもとずくバイナリデジタル演算で情報処理を行っているからである。
【０００３】
そもそも外界の情報はすべてアナログ量であり、非常に冗長な表現となっている。例えば飛んでいる蝿を網膜上に画像としてとらえ、これを蝿と認識する場合を考えてみる。蝿はいろんな方向を向くので、その画素レベルの信号値は様々な値をとりうる。また動きが速いと像が流れてしまい画像の精度が落ちる。つまり一つ一つの画素（網膜の視細胞）レベルのアナログ信号値は、きわめて曖昧であり、また多くのノイズを含んでいるといえる。さらに背景の情報も入ってくるので、実世界の情報は、そのままでは極めて膨大である。これを一画素ごと逐一Ａ／Ｄ変換してすべてを０と１のデジタル変数で表現し、逐次演算処理するのが現在のデジタルコンピュータ技術である。
【０００４】
ちなみに５００×５００の画素をもつイメージセンサを考えてみると画素数にして２５万画素、一画素あたり三原色Ｒ、Ｇ、Ｂの信号を各１バイト（８ビット）で表現するとその情報量は１画面だけで７５万バイトという膨大なものとなる。こんな膨大な情報が時々刻々入力されるためどんなスーパーコンピュータを持ってしても実時間で画像の認識を行うことは不可能なのである。
【０００５】
これには、例えばイメージセンサの２次元アレイの各セルごとに小型のプロセサを配し、並列処理によって高速化を実現するいわゆるインテリジェントセンサ技術が開発されている。近傍画素のデータを用いてのノイズの除去、エッジの検出、エッジの強調、方位の検出等の演算が高速に処理できるようになっている。しかしこのような画像処理ができても、その画像がいったい何であるか、またその画像入力に対していかなる行動をとるのかといった、いわゆる認識や判断といった機能の実現は未だ全く現実のものとはなっていない。知識ベースのソフトウェア処理によってコンピュータを用いて認識を行う技術もあるが、演算処理量が膨大であり大型のスーパコンピュータを用いてもとうてい実時間に答えを出すことは不可能である。
【０００６】
すなわち、現在の電子システムに人間のような知的な機能を持たせるためには、認識・判断といった機能を持つハードウェアの開発が必須である。
【０００７】
【発明が解決しようとする課題】
本発明は、以上の点に鑑みなされたものであり、実時間で外界情報の認識や、判断を行う知的な電子システム、即ち、瞬時認識機能を有する演算回路及び瞬時認識方式を提供するものである。
【０００８】
【課題を解決するための手段】
本発明の瞬時認識機能を有する演算回路は、複数のアナログ信号より構成される一組の入力信号群に対し所定のコードを選び出す演算回路において、前記一組の入力信号群を前記アナログ信号の数より少数のアナログ変数もしくは多値の変数より構成される一組の入力変数群に変換する手段と、あらかじめ定められたアナログもしくは多値の変数複数個を一組として構成されるデータを複数個記憶保持するメモリ回路と、前記入力変数群と前記メモリ回路に保持されている複数のデータを並列処理により同時に所定の比較演算を行う回路と、前記比較演算の結果所定の条件を満たすデータに対応したコードを少なくとも一つ選び出す手段を備えたことを特徴とする。
【０００９】
本発明の瞬時認識方式は、複数のアナログ信号より構成される一組の入力信号群に対し、前記入力信号群の特徴を抽出し前記アナログ信号の数より少数のスカラー変数により表現し、前記スカラー変数の組を複数のあらかじめ定められた特徴量変数の組と比較し、その差が最小となる前記特徴量変数の組を見い出すことにより入力信号群の特定を行うことを特徴とする。
【００１０】
【発明の実施の形態】
本発明の実施の形態を図１のブロック図を用いて説明する。
【００１１】
図１において、１０１は、例えば５００画素Ｘ５００画素の２次元イメージセンサであり、各画素１０２は、例えば、光信号を電圧信号に変換するとともにその信号を記憶する機能を持ったバイポーラ型イメージセンサＢＡＳＩＳ１０３とニューロンＭＯＳトランジスタ（νＭＯＳ）を用いて構成されたプロセサ１０４の２つの要素によって構成されている。νＭＯＳはフローティングゲートを有するＭＯＳ型トランジスタで、フローティングゲートと容量結合した複数の電極が入力ターミナルとなった素子であり、多入力演算素子の機能を持っており、生体神経細胞ニューロンと類似の機能を有することからニューロンＭＯＳと名付けられた（T.Shibata and T.Ohmi, IEEE Trans. Electron Devices, Vol.39, No.6, pp1444-1455(1992)）。νＭＯＳデータプロセサ１０４は、周り８近傍の画素からのデータを受け取り演算処理により、ノイズの除去、エッジの検出、方位の検出等の画像処理演算を行う。全画素並列処理を行うため極めて短時間に処理を行うことができる。またこれらのデータをさらに圧縮することにより画像の特徴を捉え、例えば１６個の多値信号の組：Ｃ１〜Ｃ１６から成る特徴ベクトルＣ（１０５）を出力する。Ｃ１〜Ｃ１６は、例えば、０Ｖ〜電源電圧５Ｖの間の１０個の離散値をとる多値の電圧信号である。具体的な回路構成の一例は、図２にて説明する。
【００１２】
しかしながら、このような２次元画像の圧縮システムは様々な回路構成が提案されている。例えば、Christof Koch と Hua Li著、「Implementing Vision Algorithms with Analog VLSI Circuits」（IEEE Computer Society Press, Washington, 1995, ISBNO-8186-6492-4）等々に掲載されている公知技術を用いてもよい。
【００１３】
また、いわゆるニューラルネットワーク技術を用いれば極めて効率よくデータ処理を行うことができる。また、νＭＯＳを用いてプロセサ１０４を構成すると、高度な機能が少数の素子で実現されるため超高集積化には極めて有利であるが、これは従来のＭＯＳトランジスタ等を用いたアナログ演算回路若しくはデジタル演算回路を用いてもよい。
【００１４】
また、Ｃ１〜Ｃ１６は０〜５Ｖの間で連続的に変化するアナログ変数でもよい。要するに、入力の画像信号に対し、その重要な特徴を全画素数に比べ圧倒的に少ないスカラー量の変数Ｃ１〜Ｃ１６で表現することであり、その手段はいかなる従来技術を用いてもよい。本発明において重要なのは、このスカラー変数Ｃ１〜Ｃ１６で表されたコードを瞬時に認識・判断することであり、これに関しては次に説明する。
【００１５】
特徴ベクトルＣ（１０５）は、比較演算器１０６によって様々な鋳型のデータと比較される。１０７は、大規模メモリであり、鋳型のデータをたとえば１０万組記憶保持している。大規模メモリ１０７中、例えば１０００組のデータが一括して比較演算器１０６に転送され一時的に記憶されるとともに、特徴ベクトルＣ（１０５）との比較演算が行われる。この比較演算器１０６の構成法の一例、並びに大規模メモリ１０７の構成法の一例については、それぞれ図３及び図６、８に於いて説明する。
【００１６】
比較演算器１０６の機能は、例えば、特徴ベクトルＣの各要素Ｃ１〜Ｃ１６とメモリ内のそれぞれのデータの各要素Ｍ１〜Ｍ１６との一致度を計算する回路である。例えば、Ｄ＝｜Ｃ１−Ｍ１｜＋｜Ｃ２−Ｍ２｜＋・・・・・・＋｜Ｃ１６−Ｍ１６｜を計算し、その値に比例した電圧値を出力する。
【００１７】
１０８はいわゆるウィナー・テークオール回路であり、１０００個のデータに対しＤの値が最小値をとるデータを特定する機能を持っている。つまり、特徴ベクトルＣにもっとも似通ったデータが自動的の選び出されてくるのである。各データには、それぞれコード番号が例えばバイナリーコードで付与されており、そのコードは、２次元イメージセンサ１０１に投影された画像が何であるかを示している。
【００１８】
本例では、１０００個のデータとの比較演算について述べたが、これは全データについて順次行ってもよい。そのときは、１０００個のデータとの比較演算を１００回繰り返し、各比較演算で得られたもっともに通った候補を、最後にもう一度比較して最終的な候補を見つければよい。
【００１９】
一回の比較演算は、約１００ナノ秒で実行できるので、すべてのデータとの比較を行っても約１０マイクロ秒で画像が何であるかを特定できる。人間の実時間応答は、０．１秒程度であり、一方ロボットにおける機械的な制御の速度は最も速くて１ミリ秒程度である。これらのことを考慮すると、本発明のシステムが、いかに高速に認識を行えるかが分かる。
【００２０】
【実施例】
次にこのシステムの具体的な応用例への適用を説明することにより、本発明の特徴を明らかにする。
【００２１】
（実施例１）
図２は、本発明の第１の実施例を示すブロック図であり、人間の顔を認識するシステムへの応用を示したものである。２０１は、１０１と同様の２次元イメージセンサであり、例えばある企業の顧客の顔をとらえるものである。センサのほぼ中心部にだいたい大きさをそろえて画像を写すため、光学系は、ズームレンズを備え、ズーミング及びオートフォーカス動作により自動的にこれを行う。これには、従来のカメラの技術とコンピュータによる制御を用いれば、従来技術で容易に実現することができる。
【００２２】
２０２は、このイメージセンサの機能を模式的に示したものである。まずノイズの除去、エッジの検出等を行った後、顔の特徴が抽出される。つまり、「顔の輪郭」、「髪の形」、「目の形」、「鼻の形」、「口の形」等が、それぞれ予め例えば５０種類に分類されたどの形に一番近いかを見つけだし、その番号を多値変数として特定する。例えば、図の例では「顔」、「髪」、「目」、「鼻」、「口」に対し、それぞれ４、２、１１、５０、４という番号が選択されている。この多値変数の組２０３が、図１の特徴ベクトルＣ（１０５）に相当する。ここで大切なことは、５０種類の分類の仕方である。これは形状の似たものが近い番号となるように分類することが本質的に重要である。例えば、顔の輪郭の番号４と番号５はよく似かよった形に対応している。しかし、番号４と十分に離れた番号、例えば２０や３０は、かなり異なった形を表している。
【００２３】
このように、分類された形状の中から、入力画像の各部分に最も似かよったものを見い出すのは、例えば、次のようにして行われる。ここでは、顔の輪郭についてのやり方を説明する。
【００２４】
２０４は入力画像の中から抽出された顔の輪郭であり、５０種類のマッチング用のパターンとほぼ同じ大きさになるようノーマライズされ、２次元の画素データとして表現されている。一方、マッチング用の５０種類の各パターンも２次元の画素データとして用意されており、両者の差の絶対値を各画素ごとに求め、それを全部合計した値が最小となるパターンをウィナー・テーク・オール回路２０５で選び出せばよい。このやり方は、図１で説明したコードの選び方と全く同様である。図１の説明では、１６個のデータの比較であったが、ここでは２次元の画素データであるから、その数が多いことの違いだけである。しかし、形状の特徴を捜すだけであるから、せいぜい３０×３０＝９００、即ち９００画素程度のデータを用意すれば十分である。
【００２５】
このようにして選ばれた入力画像の特徴ベクトル２０３は、次に大規模連想メモリ２０６に記憶されている２０万人分の顔のデータと比較され、最も似かよったコードが選び出される。その選び方は、図１で説明したのと同じである。ここでは、全てのデータが絶対値演算機能を持ったメモリセル２０７にＲＯＭとして記憶されており、ウィナー・テーク・オール回路２０８、２０９を用いて２段の処理で最も近いものが並列演算で見つけ出される。
【００２６】
つまり、各列ごとの最も近いコードがウィナー・テーク・オール回路群２０８によって選び出され、次にその中で最も近いコードがウィナー・テーク・オール２０９によって選び出される。
【００２７】
こうして選び出されたコードは、各個人を特定する番号であり、例えばこの番号をアドレスとして、別のメモリにアクセスすれば、そこに特定された人物に関する個人データが全て格納されているのである。
【００２８】
従来のメモリ（磁気メモリ、半導体メモリ等）は全てアドレスによってアクセスし、必要なデータがすぐに引き出せるものであるが、このアドレスを見つけ出すことが非常に困難なのである。しかし、本発明のシステムを用いれば、例えば顧客の顔を見ただけで、その顧客の個人データが格納されているメモリのアドレスが即座に分かるのである。
【００２９】
本方式の優れている点を次に述べる。
【００３０】
２０２は、顔の５つの特徴それぞれに対し、５０個の番号のうち１つの番号をあてはめるわけだから、表現しうる場合の数は、５０の５乗、即ち約３億通りある。しかし、連想メモリ２０６に登録されている顔のデータは、２０万人分である。言い換えれば、各個人に対して３億÷２０万＝１５００、即ち１５００通りもの組み合わせが対応することになる。これは、非常に冗長な表現となっており、同一人物の顔が１５００種類もの異なった特徴ベクトルで表されてもよいことになる。他と比較して最も似かよった個人が特定されるのであるから、画像に少々の変化があっても正確に特定される。
【００３１】
個人特定の確度をもっと上げるためには、例えば次のようにすればよい。各個人のコードをたった１種類で表現するのではなく、いろいろな見え方に対しそれぞれコードを選び、例えば１０種類のコードで表現しておくのである。こうすれば、この１０種類のどれか１つに近ければ、全て同一人物として特定されるのである。従って、よく似た他の人物と間違う確立を非常に小さくすることができる。
【００３２】
以上のように本発明のシステムによれば、これまでデジタルコンピュータを用いた方法では、非常に多くの演算を必要とすることから、到底実時間応答が不可能であった個人の顔の認識が瞬時に行えるようになり、ここで述べた顧客の確認以外にも、防犯や個人ＩＤの認識等に幅広い応用が可能となる。
【００３３】
尚、コードの比較は絶対値演算の場合のみを述べたが、これ以外にも、絶対値の２乗を全ての成分に対して加算し、その平方根をとった値について行ってもよい。つまり、ユークリッド距離の最小値を求めてもよい。これ以外にいかなる距離の定義を用いてもよいことはいうまでもない。
【００３４】
（実施例２）
図３は本発明の第２の実施例であり、比較演算器１０６の構成をニューロンＭＯＳを用いて実現したものである。
【００３５】
３０１、３０２はＮＭＯＳトランジスタであり、３０３、３０４はそれぞれ例えばＮ+ポリシリコンで形成されたゲート電極で、ゲート電極３０３はＮＭＯＳ トランジスタ３０１の、ゲート電極３０４はＮＭＯＳトランジスタ３０２のＯＮ・ＯＦＦ状態をそれぞれ制御している。
【００３６】
ＮＭＯＳ３０１、３０２のドレイン３０５、３０６はここでは互いに接続され、例えばＰＭＯＳスイッチ３０７をスイッチ素子として介し、ここでは５Ｖの信号線３０８に接続されている。一方、ＮＭＯＳ３０１、３０２のソース３０９、３１０は互いに接続され、ＮＭＯＳ３１１をスイッチ素子として介し、ここでは０Ｖの接地電位３１２に接続されている。ＮＭＯＳ３０１のゲート電極３０３は例えばＮＭＯＳ３１３をスイッチ素子として介しここでは０Ｖの接地電位３１４に接続され、ＮＭＯＳ３１３をスイッチ素子として用いることによりゲート電極３０３を所定の電位と等しくすることができ、さらにまたＮＭＯＳ３１３をＯＦＦ状態にすることにより電気的にフローティングとすることができる。
【００３７】
ＮＭＯＳ３０２のゲート電極３０４は、例えばＮＭＯＳ３１５をスイッチ素子として介し、ここでは０Ｖの接地電位３１６に接続され、ＮＭＯＳ３１５をスイッチとして用いることによりゲート電極３０４を所定の電位と等しくすることができ、さらにまたＮＭＯＳ３１５をＯＦＦ状態にすることにより電気的にフローティングとすることができる。ＮＭＯＳトランジスタ３０１のゲート電極３０３に入力電極３１７が容量結合され、ＮＭＯＳトランジスタ３０２のゲート電極３０４に入力電極３１８が容量結合されている。
【００３８】
入力電極３１７は、ここでは例えばＣＭＯＳ構成のトランスミションゲート３１９をスイッチ素子として入力電極３２３に接続され、またここでは例えばＣＭＯＳ構成のトランスミションゲート３２０をスイッチ素子として入力電極３２４に接続されている。入力電極３１８は、ここでは例えばＣＭＯＳ構成のトランスミションゲート３２１をスイッチ素子として入力電極３２３に接続され、またここでは例えばＣＭＯＳ構成のトランスミションゲート３２２をスイッチ素子として入力電極３２４に接続されている。ここでは入力電極３２３、３２４と入力電極３１７、３１８を接続するためにＣＭＯＳ構成のトランスミションゲート３１９、３２０、３２１、３２２をスイッチ素子として用いているが、これはこの半導体演算回路が精度よく演算できるように用いただけであり、他のスイッチ素子をＣＭＯＳ構成のトランスミションゲート３１９、３２０、３２１、３２２の代わりに用いても本発明の効果に全く変化は生じない。
【００３９】
また、ＮＭＯＳトランジスタ３０１、３０２のソース３０９、３１０は、例えば外部の容量負荷３２５に接続され、ソース・フォロワ回路としてゲート電極３０３の電位ＶFG1、ゲート電極３０４の電位ＶFG2のうち高い方の電位を外部にＶOUTとして読み出すことができる構成になっている。ここでＶOUTはＶFG1−ＶTH1あるいはＶFG2−ＶTH2のうち高い方の電圧であり、ＶTH1はＮＭＯＳ３０１のゲ ート電極３０３から、ＶTH2はＮＭＯＳ３０２のゲート電極３０４からみた閾値 電圧である。例えば、ＶTH1＝ＶTH2＝０Ｖとしておけば、ＶOUTはＶFG1あるいはＶFG2のうち高い方の電圧となる。ここでは簡単のためにＶTH1＝ＶTH2＝０Ｖと しており、０Ｖ以外の値でも本発明の効果に全く変化はない。
【００４０】
出力電位ＶOUTはここではＮＭＯＳトランジスタ３１１をＯＦＦ状態とするこ とで得られる。この時、出力電位ＶOUTはＮＭＯＳトランジスタ３１１がＯＮ状 態の時０Ｖだったが、ＮＭＯＳトランジスタ３１１をＯＦＦ状態にしたことで０Ｖから上昇を始め、ＮＭＯＳトランジスタ３０１、３０２のそれぞれのゲート電極とそれぞれのソースの間のそれぞれの電位差が閾値になり、ＮＭＯＳトランジスタ３０１、３０２の両方のトランジスタがＯＦＦ状態となるまで上昇するため、結果的に出力電位ＶOUTはＶFG1、ＶFG2のうち高い方の電圧が出力されるのである。
【００４１】
ここではＮＭＯＳトランジスタ３０１、３０２のドレイン３０５、３０６はここでは互いに接続され、ＰＭＯＳトランジスタ３０７をスイッチ素子として介し、５Ｖの信号線３０８に接続されているが、これはＮＭＯＳトランジスタ３１２がＯＮ状態の時に５Ｖの信号線３０８から電流が流れることを防ぎ、消費電力を抑さえるために設置したものである。従って、ＰＭＯＳトランジスタ３０７の代わりに他のスイッチ素子を用いても、本発明の効果に全く変化はない。
【００４２】
また、ＰＭＯＳトランジスタ３０７のスイッチ素子の代わりに抵抗、コンデンサを使用してもよいし、何も使用せずＮＭＯＳトランジスタ３０１、３０２のドレイン３０５、３０６を直接５Ｖの信号線３０８に接続されていても、本発明の効果に全く変化はない。さらに、ドレイン３０５、３０６は特に互いを接続する必要はなく、別々に先に述べたような手段を用いて５Ｖの信号線３０８に接続しても何ら問題は生じない。ここでは回路設計上便宜を図るため、ドレイン３０５、３０６を互いに接続しただけである。
【００４３】
次に、この回路の動作について説明する。
【００４４】
ＮＭＯＳトランジスタ３０１のゲート電極３０３に容量結合している入力電極３１７には、まずはじめに入力電極３２３の電位（ＶA）がＣＭＯＳ構成のトラ ンスミションゲート３１９を介して入力されるとともに、ＮＭＯＳトランジスタ３０２のゲート電極３０４に容量結合している入力電極３１８には、入力電極３２４の電位（ＶX）がＣＭＯＳ構成のトランスミションゲート３２２を介して入 力される。その時、ゲート電極３０３、３０４はＮＭＯＳトランジスタ３１３、３１４をそれぞれ導通させることにより、ここでは例えば０Ｖの接地電位に等しくしておく。そして、現在導通しているスイッチ素子３１９、３２２が遮断される前に、現在導通しているＮＭＯＳトランジスタのスイッチ素子３１３、３１５を遮断し、ゲート電極３０３、３０４を電気的にフローティング状態にする。
【００４５】
その後、導通しているスイッチ素子３１９、３２２を遮断し、ともに今度はスイッチ素子３２０、３２１を導通させ、入力電極３２３の電位を入力電極３１８に、また入力電極３２４の電位を入力電極３１７に入力する。つまり、はじめゲート電極３０３、３０４を接地電位に等しくしておき、入力電極３２３、３２４の電位をそれぞれ入力電極３１７、３１８に入力する。
【００４６】
そしてゲート電極３０３、３０４を電気的にフローティングとした後に、入力電極３２３、３２４の電位をはじめの状態とは入れ替えて、それぞれ入力電極３１８、３１７に入力する。ここでは入力電極３２３の電位をまず入力電極３１７に、入力電極３２４の電位を入力電極３１８に入力した。しかし、入力電極３１７、３１８に入力する順序は、先に述べた順序と反対にしても何ら問題がないのはいうまでもない。この回路の動作の本質が入力電極３１７、３１８に入力する際、１度目と２度目で入力を入れ替えることであるからである。
【００４７】
入力を入れ替えた後、ゲート電極３０３の電位はＶX−ＶA、ゲート電極３０４の電位はＶA−ＶXとなっている。これは、入力を入れ替える前にゲート電極３０３、３０４が電気的にフローティングとなっているため、入力を入れ替えるとはじめ入力されていた電位とあとから入力された電位の差の分だけゲート電極３０３、３０４が引き上げられるためである。これにより、互いの入力に関して差分をとったことになる。
【００４８】
出力動作になると、ここでは先に述べたようにＮＭＯＳトランジスタ３１１がＯＦＦ状態となることで、ゲート電極３０３の電位（ＶX−ＶA）、ゲート電極３０４の電位（ＶA−ＶX）のうち大きな電位が出力されるのである。これにより、入力に対して互いに差分をとり、その結果のうち大きな値を出力することができるので、最大値を検出したことになる。そして、最終的な出力結果ＶOUTを数式 で表すと、｜ＶA−ＶX｜となる。
【００４９】
ここでは、例えば入力電極３２３の電位ＶAを４Ｖ、入力電極３２４の電位ＶXを１Ｖとして考える。まず、スイッチ素子３１９を導通することで入力電極３１７に入力電極３２３の電位４Ｖを入力し、またスイッチ素子３２２を導通することで入力電極３１８に入力電極３２４の電位１Ｖを入力する。その時、ゲート電極３０３、３０４はそれぞれＮＭＯＳトランジスタ３１３、３１５を導通させることで接地電位０Ｖと等しくしておく。
【００５０】
３０ｎｓｅｃたったあと、ＮＭＯＳトランジスタ３１３、３１５を遮断し、ゲート電極３０３、３０４を電気的にフローティング状態にし、ゲート電極３０３、３０４をそれぞれ接地電位０Ｖに保っておく。そして、２ＮＳＥＣたったあとスイッチ素子３１９、３２２をＯＦＦ状態とし、ともにスイッチ素子３２０、３２１をＯＮ状態とすることで入力電極３２３の電位４Ｖを入力電極３１８に、入力電極３２４の電位１Ｖを入力電極３１７にそれぞれ入力する。
【００５１】
この時、ゲート電極３０３の電位ははじめ４Ｖ入力されていたのがつぎに１Ｖ入力されたことで、その差の３Ｖだけゲート電極３０３の電位が引き下げられ−３Ｖとなる。しかし、実際にはＮＭＯＳトランジスタ３１３を構成しているＰＮ接合が順方向バイアスになるので、０Ｖからビルトインポテンシャル分までしか下がらないが、回路上問題にはならない。一方、ゲート電極３０４の電位ははじめ１Ｖ入力されていたのがつぎに４Ｖ入力されたことで、その差の３Ｖだけゲート電極３０４の電位が引き上げられ３Ｖとなる。
【００５２】
最後に、出力動作でＮＭＯＳトランジスタ３１１をＯＦＦ状態とし、ＰＭＯＳトランジスタ３０７をＯＮ状態とすることでＮＭＯＳトランジスタ３０１、３０２がソースフォロワ回路として動作し、ゲート電極３０３、３０４のうち大きな電位を保っているゲート電極３０４の電位３Ｖが出力される。
【００５３】
この例について、回路シミューレーション（商品名：ＨＳＰＩＣＥシミュレーション）を使ってシミュレーションを行った。その結果を図４に示す。図４では入力電極３２３、３２４に与える入力電圧を４Ｖ、１Ｖとしたが他の場合についても例として同時にシミュレーションを行っている。図４より、明らかなようにすべての例について正しく動作していることが分かる。
【００５４】
ここでは具体的な例として、入力電極３２３の電位を４Ｖ、入力電極３２４の電位を１Ｖとして扱ったが、もちろん任意のアナログ値で演算可能であることは言うまでもない。
【００５５】
ここでは、ＮＭＯＳトランジスタ３１１、３１３、３１５をスイッチ素子として用いているが、その代わりにＰＭＯＳトランジスタ、ＣＭＯＳ構成のトランスミッションゲートなどを他のスイッチ素子として用いても何ら問題は生じない。また、ＮＭＯＳトランジスタ３１１について、ここではスイッチ素子を用いているがスイッチ素子の代わりに抵抗、コンデンサなどを用いても何ら問題は生じない。また、接地電位３１２についてもここでは回路設計上便宜を図るため０Ｖとしたが、接地電位を０Ｖ以外の他の電圧としても、本発明の効果に影響を与えるものではない。
【００５６】
以上述べたように、本発明の回路では、入力を入れ替えることとゲート電極３０３、３０４にスイッチ素子３１３、３１５をつけゲート電極３０３、３０４を接地電位と等しくしたり電気的にフローティング状態とすることで、入力データについて互いの差分をとることができ、また差分をとった結果大きな値を選び出すことができるため最終的に入力されたデータの差分絶対値を実時間でしかも高精度で演算できる回路を実現できる。
【００５７】
図５は、例えば本実施例で述べた差分絶対値回路を複数並べ、それぞれの出力をウィナーテークオール回路の入力端子に入力することにより、それぞれの差分絶対値回路の演算結果の中でどの結果がもっとも小さい値であるかを演算する回路である。
【００５８】
このウィナーテークオール回路を差分絶対値回路と組み合わせて用いることにより、入力されてきたデータが今までに蓄積されていた膨大な数のデータの中のどのデータに近いかが高速で且つ高精度で演算することができる。
【００５９】
また、ここでは例えば３つの差分絶対値回路と３入力のウィナーテークオール回路を組み合わせた回路構成をしているが、もちろん差分絶対値回路をいくつ用いても、その数だけウィナーテークオール回路の入力数を組み合わせれば問題がないことは言うまでもない。ウィナーテークオール回路は、同じ機能を持った回路であれば、この実施例のウィナーテークオール回路の代わりに用いても問題がないことは言うまでもない。ウィナーテークオール回路については、例えば特願平４−２２２１６６号に開示されているものを用いればよい。
【００６０】
（実施例３）
図６、図８は、本発明の第３の実施例を示したもので、大規模メモリ１０７の構成について述べたものである。つまり、所定のアナログ若しくは所定の多値の変数を正確に書き込み、不揮発的に記憶・保持するメモリである。
【００６１】
図６において、６０１はＮＭＯＳトランジスタであり、６０２は例えばＮ+ポリシリコンで形成されたフローティングゲート電極 で、ＮＭＯＳ６０１のオン・オフ状態を制御している。ＮＭＯＳのドレイン６０３は、電源ライン６０４に接続され、一方ソース６０５は、例えば外部の容量負荷６０６に接続され、ソース・フォロワ回路としてフローティングゲート６０２の電位ＶFGを外部にＶOUTとして読み出す構成になっている。ここでＶOUT＝ＶFG−ＶTHであり、ＶTHはＮＭＯＳ６０１のフローティングゲートから見た閾電圧である。例えばＶTH＝０としておけば、ＶOUT＝ＶFGとなる。ここでは簡単のため にＶTHを０としているが、０以外の値でも本発明の効果に全く変化はない。ＶTHは製造時に決定される一定の値であり、それを考慮してフローティングゲートの電圧ＶFG、電荷ＱFを求めればよいからである。ＶFG＝ＱF／ＣTOT（ＱFはフローティングゲート６０２の電荷、ＣTOTはフローティングゲート６０２につながる容量の総和）と表せるから、
Ｖout＝ＱF／ＣTOT  ・・・（１）
によって、メモリの内容を外部に読み出すことができる。６０７はフローティングゲート６０２と容量結合した電極であり、例えばこの例では接地されている。この容量結合係数をＣ1とする。６０８は、電荷注入電極であり、トンネル接合 ６０９を介してフローティングゲートにつながっている。このトンネル接合は、例えばＮ+ポリシリコンで形成されたフローティングゲートの表面を熱酸化して １０ｎｍの酸化膜を形成し、この上に例えばＮ+ポリシリコンのゲート電極６０ ８を設置することで形成することができる。しかし、これはあくまでもトンネル接合形成の一例であり、他のいかなる材料・方法を用いて形成してもよいことは言うまでもない。このトンネル接合部６０９の容量をＣ2と表す。電荷注入電極 ６０８は容量６１０（その大きさをＣ3とする）を介してプログラム電圧（ＶEXT）印加用端子６１１に接続されている。６１２はＮＭＯＳトランジスタであり、そのオン・オフ状態はフローティングゲート６１３によって制御されている。フローティングゲート６１３はスイッチ６１４を介して信号線６１５に接続されており、スイッチ６１４がオンの状態ではその電位は信号線６１５の電位ＶSに固定され、オフの時はフローティング状態となり、その電位はフローティングゲート６０２の電位とそれとの容量結合係数によって決まるようになっている（フローティングゲート６０２とフローティングゲート６１３との間の容量結合係数をＣ4とする）。
【００６２】
次に、この回路の動作について説明する。今、フローティングゲート６０２にＶFG＝Ｖmなるデータを書き込むことを考える。即ち、フローティングゲート６ ０２に、ＱFG＝ＣTOTＶmなる電荷を注入することになる。これは次のような方法で行う。
【００６３】
まずＶS＝−Ｖmとし、スイッチ６１４をオンしてフローティングゲート６１３の電位ФC＝−Ｖmとする。そしてスイッチ６１４をオフするとフローティングゲート６１３にはＱC＝−Ｃ4Ｖmなる電荷が蓄えられた状態となる。（ここでは簡 単のためにフローティングゲート６１３の全容量をＣ4に等しいと仮定した。）フローティングゲート６１３より見たＮＭＯＳ６１２の閾電圧を０Ｖに設定しておくと、この時ＮＭＯＳ６１２はオフの状態にあり、電極６０７、６０８は互いに電気的に切り離されている。
【００６４】
この状態で端子６１１にプログラム電圧として例えばＶEXT＝２５Ｖを印加す ると、容量分割によりトンネル接合６０９の両端には次式で与えられる電圧ＶT がかかる。
【００６５】
ＶT＝（１／Ｃ2）ＶEXT／（１／Ｃ1＋１／Ｃ2＋１／Ｃ3）  ・・・（２）
いまＣ2＜＜Ｃ1、Ｃ3であるとすると、ＶT＝ＶEXTとなり大きな電界がトンネル 接合６０９に発生して電流が流れ、電子がフローティングゲート６０２より電荷注入電極６０８へ移動する。その結果ＶFGは正の値で大きくなる。この時間変化をＨＳＰＩＣＥシミュレーションで求めた結果を図７に示す。ＶFGは時間と共に増加し、ＶPPはｔ＝０でのＶPP＝２５Ｖより時間とともに減少しており、電荷の移動が起こっていることがわかる。
【００６６】
さて、ＶFGが増加するためにフローティングゲート６１３の電位もそれとの容量結合により増加し、その値は、
Φc＝（Ｃ4ＶFG＋Ｑc）／Ｃ4＝ＶFG−Ｖm  ・・・（３）
と表される。即ち、ＶFGが増加しＶFG≧ＶmとなったところでΦC≧０となり、ＮＭＯＳ６１２の閾電圧０Ｖを越えるのでＮＭＯＳ６１２がオンする。そうすると電極６０７、６０８がＮＭＯＳ６１２を介して電気的に接続されるため、電極６０８の正電荷はアースに流れ、ＶPPは急速に減少する。その結果ＶTが減少して トンネル電流は流れなくなり、ＶFGは一定値となる。即ちＶFG＝Ｖmの値にプロ グラムされたことになる。
【００６７】
図７では、Ｖm＝＋４．０Ｖと設定している。パルス印加後約１．２μｓｅｃ でＶFGは一定値（約３．５Ｖ）に達しているのがわかる。従来例では秒単位の長い時間を必要としていたことからも、書き込み時間が劇的に減少していることがわかる。ここで書き込みの目標値Ｖmと実際のＶFGの収束値との間には約０．５ Ｖの差があるが、あらかじめこの差を考慮してＶmの値を設定すれば正確な制御 を行うことができる。
【００６８】
以上述べたように、本発明の回路では、フローティングゲート６０２に電荷注入が生じてそれにより変化するＶFGを実時間で連続的にモニターしながら所定の値となったときに自動的に注入を終結する機能が実現されており、所定の値を正確にかつ超高速に書き込むことができた。
【００６９】
上ではＣ2＜＜Ｃ1、Ｃ3という仮定の下で説明したが、この回路はそのような条 件に限定されない。まず、Ｃ2＜＜Ｃ3という条件は、ＶTをＶEXTにできるだけ近づけるためにだけ必要であり、例えばＶEXTを大きくするか、またはトンネル酸化 膜を薄くするなどしてトンネル注入部にかかる電界を大きくし、必要な電界の値を得られるようにすればその条件は完全に不必要になる。Ｃ2＜＜Ｃ1という条件は、上の理由と併せてさらに、ＶEXTが印加されたときに、その電圧によってフローティングゲート６０２が持ち上げられる効果を無視できるようにするために定めた。例えばＶEXT＝２５Ｖを印加すると、Ｃ1、Ｃ2、Ｃ3の容量結合により端子６０７に対するフローティングゲートの電位ΦFGはＶEXTによって
ＶFG＝（１／Ｃ2）ＶEXT／（１／Ｃ1＋１／Ｃ2＋１／Ｃ3）  ・・・（４）
だけ持ち上げられる。もしＣ2＜＜Ｃ1ならば上で述べているようにΦFGはほぼ０に等しくなる。もしＣ2がＣ1に比べて無視できるほど小さくないとしても、ΦFGはＣ1、Ｃ2、Ｃ3、ＶEXTという、あらかじめわかった値で決定されるので、この値を見越して書き込むデータを設定することによってＣ2＜＜Ｃ1、Ｃ3としたときと 全く同じような制御を行うことができる。ΦFGが無視できないときの具体的な影響は（３）式の場合でＶFG→ＶFG＋ΦFGと置き換えた式で表される。つまりΦC ＝ＶFG＋ΦFG−Ｖm＝０となったときに書き込みが終了するので、フローティングゲート６０２にはＶFG＝Ｖm−ΦFGなるデータが書き込まれる。つまりセットした値Ｖmより、ある決まった値だけ少ない値が書き込まれることになる。この ΦFGの分だけ大きなデータを書き込むような制御を行えばなんら変わりない制御を行える。
【００７０】
書き込まれたデータを読み出す時にはＮＭＯＳ６０１（フローティングゲート６０２からみたそれの閾電圧ＶTHをたとえば０Ｖとする）を用いたソースフォロワ回路を動作させることによって、ＶOUT＝ＶFGとして直接フローティングゲー ト６０２の電圧をアナログ電圧として読み出すことができる。上記ＮＭＯＳ６０１の閾電圧ＶTHが必ず０Ｖである必要はなく、有限の値ＶTHを持つときはＶOUT ＝ＶFG−ＶTHがアナログデータとして読み出される。
【００７１】
また図６の例では、ソースフォロワの負荷素子として容量（Ｃ0とする）を用 いる場合を例として示してあるが、もちろんこれに限定されず、例えば抵抗でもよいし、あるいはＭＯＳトランジスタを用いて構成された負荷素子を用いてもよいことは言うまでもない。
【００７２】
また多数のメモリセルをマトリクス状に集積して、所定のセルのデータのみ選択的に読み出すには、例えば電源ライン６０４を選択的にＶDDまで持ち上げることにより、その電源ラインに接続されているソースフォロワのみを活性化して読み出してもよいし、あるいは６０４は常にＶDD一定電圧とし、ＶOUT端子６０５ に各セル毎に選択用のＭＯＳトランジスタを配置してもよい。
【００７３】
上記例では、Ｖmの値を書き込むには、ＶSとして負の値−Ｖmを与 える必要があったが、負の信号発生を行わないために例えば次のようにしてもよい。
【００７４】
ＮＭＯＳ６１２の閾電圧をＶTH’とすると、（３）式よりこれがオンする条件は、
ΦC  ＝  ＶFG  ＋  ＶS  ＞ＶTH'     ・・・（５）
となる。すなわち、ＶS＞ＶTH’−ＶFGであり、ＶFGをゲートに書き込むには 、
ＶS  ＞ＶTH'−  ＶFG          ・・・（６）
とすればよい。ここで例えばＶTH’＝５Ｖとすれば、ＶFGとして、０、１、２、３、４［Ｖ］を書き込むにはＶS＝５、４、３、２、１［Ｖ］とすればよく、ＶSに設定すべき書き込み制御用の電圧はすべて 正の電位となり、負の信号を発生する必要はなくなる。
【００７５】
図６の回路における書き込みデータの設定法としてまた別の方法を用いてもよい。それを次に説明する。まずスイッチ６１４をオンした後ＶSを０Ｖに設定し、電極６０７の電位をＶmに設定する。今Ｃ1＞＞Ｃ2としておくと、ＶFG＝Ｖmとなる。その後スイッチ６１４をオフにするとフローティングゲート６１３にはＱC ＝−Ｃ4Ｖmの電荷が蓄えられたことになる。ここで書き込みを始めると（３）式に従ってΦCが変化するため、ＮＭＯＳ６１２の閾電圧を例えば０Ｖに設定しておけばΦC＝０即ちＶFG＝ＶmとなったときにＮＭＯＳ６１２がオンしてフローティングゲート６０２への電荷注入が終了することになる。この方法を用いればＮＭＯＳ６１２の閾電圧を特別高い値にせずとも、書き込み制御のための電圧として非負の値を用いることができる。
【００７６】
さらにＮＭＯＳ６１２の閾電圧が０Ｖではなく有限の値をもっていてもよく、その時にはＶm−ＶTH’の値がフローティングゲート６０２に書き込まれること になる。あるいはスイッチ６１４をオンして電極６０７の電位をＶmとする際に ＶS＝ＶTH’と定めれば、フローティングゲート６０２にはＶmの値がそのまま 書き込まれることになる。
【００７７】
以上述べたいかなるデータの設定法を用いても、本発明は有効な効果を与えることは言うまでもない。
【００７８】
以上の説明は、プログラミング電圧印加用端子６１１にプログラム電圧（ＶEXT）を初めて印加する前の状態において、フローティングゲート６０２には一切 チャージが存在していない場合にのみ当てはまる説明である。即ち、最初に説明した書き込み方法は、ＶS＝−Ｖmとしてフローティングゲート６１３にチャージをセットした時にＶFG＝０Ｖである場合にのみ正しい説明である。もしこのときフローティングゲート６０２に電荷が存在し、ＶFG＝ＶFGO≠０であったとする と、ＶS＝−Ｖmとして書き込み制御用の電圧をフローティングゲート６１３にセットしＶEXTにプログラミング電圧をかけると、ＶFG＝Ｖm＋ＶFGOにまで上昇し たときに初めて制御トランジスタ６１２がオンすることになり、フローティングゲート６０２にはＶm＋ＶFGOの電圧が書き込まれることになる。従ってそこに電荷があらかじめ存在する場合には、例えばＮＭＯＳ６０１のソースフォロワ動作を利用してＶFGOをあらかじめ読みだし、ＶSの値としてこのＶFGOの効果を考慮 した設定値、即ちＶS＝−（Ｖm−ＶFGO）を設定すればよい。こうすれば最初に 電荷が存在してもＶFG＝Ｖmの値を書き込むことができる。
【００７９】
次に、一度データが書き込まれたフローティングゲート上のデータを書き換える様々な方法について説明する。
【００８０】
ＶFG＝０、つまりフローティングゲート６０２の電荷を０とすることは簡単であり、例えば電極６０７の電位を０とした状態で紫外光（ＵＶ光）を照射してやればよい。
【００８１】
一方、電気的にフローティングゲート６０２の保持するデータを消去する方法として、例えばＶEXTに負の電圧を加え、電子をフローティング電極に注入する 方法がある。あるいはプログラミング電圧印加用端子６１１を接地した状態で電極６０７に正の電位を加え、電子をフローティングゲートに注入する方法でもよい。さらに別な方法として電子注入用のトンネル接合部を６０９以外に別途設け、いくつかのセルを一括して消去する方式を用いてもよい。また、例えば図６でＶOUT端子６０５を０Ｖにリセットした状態で電源ライン６０４をＶDDより大き な電圧にセットし、ＮＭＯＳ６０１のドレイン端でホットエレクトロンを発生させ、フローティングゲート６０２へそのホットエレクトロンを注入することにより正の電荷を打ち消す方法でもよい。この時電極６０７を様々な電位に定めることにより、その注入量を制御することができる。フローティングゲートへのホットエレクトロン注入の他の方法として、トランジスタ６０１を用いなくとも、ホットエレクトロンを発生しやすいショートチャネルトランジスタを別途注入専用に設けてそのゲート電極をフローティングゲートと共用させてもよい。以上のような様々な電気的方法では通常フローティングゲート６０２内の電荷が正確に０にはならず、負の値にまでふれこんでしまうので、このときはやはりソースフォロワ動作でチャージ量を読み出しこれを考慮してＶSもしくは電極６０７ に与える電圧値を調整してやる必要がある。
【００８２】
以上、様々なデータ更新の方法を説明したが、上の方法いずれを用いてもよいことは言うまでもない。
【００８３】
また、図８において、８０１はＮＭＯＳトランジスタであり、８０２は例えばＮ+ポリシリコンで形成されたフローティングゲート電極で、ＮＭＯＳ８０１のオン・オフ状態を制御している。ＮＭＯＳのドレイン８０３は、電源ライン８０４に接続され、一方ソース８０５は、ＮＭＯＳトランジスタ８０６のドレインに接続され、トランジスタ８０６のソースは共通読み出し電圧線８０７に接続されている。そして電極８０８はトランジスタ８０６のゲート電極である。このトランジスタ８０６の閾電圧をＶFG1とし、読み出し選択用トランジスタと呼ぶことにする。８１０はフローティングゲートと容量結合する電極であり、その容量係数はＣ1であり、その電位は接地電位となるように設定する。８１１はＮＭＯＳトランジスタで、そのソース電極部はトンネル酸化膜を介してフローティングゲート８０２と容量結合しており、その容量係数をＣ2とする。トランジスタ８１１のドレインは共通書き込み電圧発生線８１２に接続されており、８１３をトランジスタ８１１のゲート電極とする。このトランジスタ８１１の閾電圧をＶFG2とし、書き込み選択用トランジスタと呼ぶことにする。上に述べたような構成が一つのメモリセルとなっており、そこに一つのアナログ量を保持するようになっている。それぞれのセルを図の上から８１４、８１５、８１６とする。
【００８４】
このように同一に作られたメモリセルが複数集まり、各セルの読み出し選択用トランジスタのソース電極を共通読み出し電圧線８０７に接続するような構成になっている。また各セルの書き込み選択用トランジスタのドレインは共通書き込み電圧発生線８１２に接続されている。８１７は共通書き込み電圧発生線８１２と容量結合する電極であり、その容量結合係数をＣ3とする。また共通書き込み 電圧発生線８１２はノーマリーオフ型ＮＭＯＳトランジスタ８１８のドレインと接続され、トランジスタ８１８のソース電極８１９は接地されている。またゲート電極８２０をもち、閾電圧をＶFG3とする。電圧線８０７はＮＭＯＳトランジ スタ８２１を介して制御回路の入力電極８２２と接続されている。入力電極８２２はインバータ８２３の入力８２４と容量結合されており、また入力８２４はＮＭＯＳトランジスタ８２５を介してインバータ８２３の出力８２６と接続されるようになっている。その出力は更にもう一つのインバータを介してトランジスタ８１８のゲート電極８２０と接続されている。
【００８５】
今回すべてのトランジスタをＮチャネル型としているが、特定のトランジスタをＰチャネル型ＭＯＳトランジスタで置き換えても回路の効果には全く変化無いことは言うまでもなく、また図８ではメモリセルを３つ並べて一つのブロックを構成しているが、これは紙面の都合からで、２つ以上のいかなる数においても同様の回路の効果を得られることは言うまでもない。また、説明の便宜上、番号をつけていないメモリセルの書き込み選択用トランジスタのゲート電極、読み出し選択用トランジスタのゲート電極にそれぞれ８２７、８２８、８２９、８３０と番号をつけ、トンネル注入口には８３１、８３２と番号をつけることにする。なお、電極８１０、８１９は接地電位に定められているが、この値にのみ限定することはなく、任意の値を与えるならばそれを基準として他の電圧をすべて調節すればよい。
【００８６】
次に、回路の動作原理について説明する。いま、メモリセル８１４にのみ電圧ＶTARを書き込むことを考える。
【００８７】
まず、外部に一つだけある制御回路にＶREFを参照電圧として入力する。その 後トランジスタ８２５をオンさせ、その後オフさせる。するとこの回路は参照電圧を記憶し、次に参照値と等しい値が入力されたときにゲート８２０に電源電圧を出力する。この値ＶREFは、書き込み中にメモリセルにＶTARだけ書き込まれたら出力される値であり、ＶTARにあるオフセット電圧を足した値となる。このオ フセット値は設計によって決まる値なのでＶTARからＶREFを逆算する事は容易である。また電極８０８には閾電圧ＶFG1以上の値、８２９、８３０には閾電圧ＶFG1以下の値を加える。このようにすると書き込み対象のメモリセルの内容のみを共通読み出し電圧線８０７に読み出すことができる。
【００８８】
電極８１３には閾電圧ＶFG2以上の値、８２７、８２８には閾電圧ＶFG2以下の値を入力する。また共通書き込み電圧発生線８１２の電位は接地電位としておく。このようにすることによってメモリセル８１５、８１６のトンネル注入電極８３１、８３２は常に接地電位となるように電荷が保持され、以降、もし共通書き込み電圧発生線８１２の電位が変化しようとも電極８３１、８３２の電位は変化しない。
【００８９】
次に、トランジスタ８２１を導通させたのち、電極８１７に十分高い電圧を加える。その値はメモリセルのトンネル接合部に書き込みに十分な電流を流す程度の値である。そうするとメモリセル８１４のトンネル接合部に電流が流れてフローティングゲート８０２から電子が引き抜かれフローティングゲートの電圧は上昇し続ける。その電圧の値はソースフォロア構成になっているトランジスタ８０１から、読み出し選択トランジスタを通じて制御回路の入力８２２に読み出される。そのセルの書き込み進行中、他のメモリセルはどのようになっているかというと、電極８２７、８２８にＶFG2以下の値を与えているので、それらの書き込 み選択用トランジスタはオフの状態にあり、トンネル注入電極は以前の状態、つまり接地電位を保持している。つまりメモリセル８１４が書き込まれようともセル８１５、８１６には書き込みは行われていない。ここで書き込みが選択的に行われていることがわかる。書き込みがある程度の時間行われＶTARが書き込まれると、その時メモリセルはＶREFを出力するようになる。
【００９０】
値は随時制御回路によってモニタされており、ＶREFが出力されたときに制御 回路は電源電圧を出力し、ゲート電極８２０には閾電圧以上の電圧が加わる。するとトランジスタ８１８はオンの状態になり、共通書き込み電圧発生線は放電され、接地電位となる。そして書き込みは終了する。
【００９１】
また、読み出し時の選択性についても、各読み出し選択用トランジスタのオン・オフ状態を制御することにより容易に実現することができる。
【００９２】
この回路構成を用いた結果はあきらかである。従来同様、容量Ｃ3は他の容量 Ｃ1、Ｃ2より大きくなくてはならないという用件があるが、その容量Ｃ3をブロ ック当たり一つだけにし、そのかわりセル一つ毎に書き込み選択用トランジスタを用いることにより、書き込み時、読み出し時の選択性を失わずに集積度の大幅な向上を実現できた。トランジスタ数も従来例と代わり無く、１セル当たり３トランジスタとなっている。
【００９３】
また、本実施例では制御回路部にインバータの出力と入力を短絡するスイッチを持った回路を用いたが、従来用いている他の制御回路を用いても全く本発明の効果には影響がない。これは本発明の効果があくまでも複数のセルの持つ素子の共通化による高集積化であり、制御回路の機構には依存しないことからもいうまでもない。
【００９４】
（実施例４）
図９は本発明の第４の実施例を表すブロック図であり、基本的な構成は図１のと同じである。異なるのは、新たに優先順位決定回路９０１を加えた点である。なお、同図には、図１と同じ機能ブロックに関しては同一の番号が付してある。優先順位決定回路９０１は、特徴ベクトルを入力として受けとり、大規模メモリ１０７内のどのグループのデータから比較を始めるのがよいかを決定する回路である。つまり、特徴ベクトルの値から判断して候補のいる確率の高いブロックを最初に相関器１０６にダウンロードし検索を始めるのである。
【００９５】
これは例えば次のようにすればよい。図２の例で、顔の輪郭が丸いもの、即ち丸顔は番号が２５〜４０の間に分類されており、長い髪が例えば４０〜５０に分類されているとすると、特徴ベクトルがこの範囲に入っていることを検出して、丸顔で髪が長いという分類に入っている人のデータをまず一括して相関器にロードダウンすれば、見つけ出すのが速くなるのである。
【００９６】
この限られた範囲の探索で候補が絞り込まれ、その時の一致度、即ち、各番号の差の合計が、例えば２０以下ならばそれ以上捜すのをやめるようにしてもよい。あるいは、もう少し観点を変えて捜すようにしてもよい。即ち、髪の毛は前は短かったが、今は長くなっている可能性があるので、この項目は評価からはずして探索することもできる。
【００９７】
このように、本システムは、ちょうど人間が他人の顔を見て、順次思い出していくように、非常に知的な処理ができるのである。このような情報処理は、例えば、デジタル計算器（マイクロプロセサ）９０２と情報を交換にながら行ってもよい。マイクロプロセサ９０２は、一致度等を見て、もっと探索を続けるきか否かを判断する。これに対し、本発明の主要部である相関器１０６やウィナー・テーク・オール１０８は、並列に大量のデータ検索を行い、最も近い事例を見つけ出してくるのである。ちょうどマイクロプロセサが人間の脳の左脳であれば、１０６、１０７、１０８は大枠の判断をする右脳であるといえる。このように、正しく人間の頭脳に相当する機能を電子回路で実現することができるのである。
【００９８】
【発明の効果】
本発明によって、外界情報を取り入れ、これを瞬時に認識する機能を持った演算回路が実現し、これにより、人間のように外界の状況を判断し適切な行動をとるといった知的な機能を持った電子システムの実現が可能になる。
【図面の簡単な説明】
【図１】本発明の構成を説明するための概念図である。
【図２】顔の認識システムを説明する概念図である。
【図３】本発明の比較演算回路の一例を示す回路図である。
【図４】比較演算回路の動作を示すグラフである。
【図５】比較演算回路の演算結果の中から最小値を選択する回路である。
【図６】大規模メモリ回路の一例を示す回路図である。
【図７】図６の大規模メモリ回路の動作を示すグラフである。
【図８】大規模メモリ回路の他の例を示す回路図である。
【図９】本発明の構成の他の例を示す概念図である。
【符号の説明】
１０１  ２次元イメージセンサ、
１０２  画素、
１０３  バイーポーラ型イメージセンサ（ＢＡＳＩＳ）、
１０４  νＭＯＳデータプロセサ、
１０５  特徴ベクトル、
１０６  比較演算器１、
１０７  大規模メモリ、
１０８  ウィナー・テーク・オール（ＷＴＡ）回路、
２０１  ２次元イメージセンサ、
２０２  イメージセンサの機能
２０３  多値変数、
２０４  入力画像の中から抽出された顔の輪郭、
２０６  大規模連想メモリ、
２０７  メモリセル、
２０８、２０９  ウィナー・テーク・オール回路、
３０１、３０２  ＮＭＯＳトランジスタ、
３０３、３０４  ゲート電極、
３０５、３０６  ＮＭＯＳ３０１、３０２のドレイン、
３０７  ＰＭＯＳスイッチ、
３０８  信号線、
３０９、３１０  ＮＭＯＳ３０１、３０２のソース、
３１１、３１３、３１５  スイッチ素子、
３１２、３１４、３１６  接地電位、
３１３  スイッチ素子、
３１７、３１８、３２３、３２４  入力電極、
３１９、３２０、３２１、３２２  トランスミションゲート、
３２５  外部の容量負荷、
６０１  ＮＭＯＳトランジスタ、
６０２  フローティングゲート電極、
６０３  ドレイン、
６０４  電源ライン、
６０５  ソース、
６０６  外部の容量負荷、
６０７  フローティングゲート６０２と容量結合した電極、
６０８  電荷注入電極、
６０９  トンネル接合、
６１０  容量、
６１１  プログラム電圧（ＶEXT）印加用端子、
６１２  ＮＭＯＳトランジスタ、
６１３  フローティングゲート、
６１４  スイッチ、
６１５  信号線、
８０１  ＮＭＯＳトランジスタ、
８０２  フローティングゲート電極、
８０３  ドレイン、
８０４  電源ライン、
８０５  ソース、
８０６  ＮＭＯＳトランジスタ、
８０７  共通読み出し電圧線、
８０８  ゲート電極、
８１０  フローティングゲートと容量結合する電極、
８１１  ＮＭＯＳトランジスタ、
８１２  書き込み電圧発生線、
８１４、８１５、８１６  メモリセル、
８１７  共通書き込み電圧発生線８１２と容量結合する電極、
８１８  ＮＭＯＳトランジスタ、
８１９  ソース電極、
８２０  ゲート電極、
８２１  ＮＭＯＳトランジスタ、
８２２  入力電極、
８２３  インバータ、
８２４  インバータの入力、
８２５  ＮＭＯＳトランジスタ、
８２６  インバータの出力、
９０１  優先順位決定回路、
９０２  マイクロプロセサ。
【図１】
0003639883.tif 000002
【図２】
0003639883.tif 000003
【図３】
0003639883.tif 000004
【図４】
0003639883.tif 000005
【図５】
0003639883.tif 000006
【図６】
0003639883.tif 000007
【図７】
0003639883.tif 000008
【図８】
0003639883.tif 000009
【図９】
0003639883.tif 000010