(57)【特許請求の範囲】
【請求項１】
電気的にフローティング状態とされたゲート電極を有し、このゲート電極に与えられる入力変数の状態量が、設定されているしきい値を越えた時にその出力を論理反転するしきい素子と、
このしきい素子のゲート電極に容量結合され、前記入力変数を伝搬する第１〜第ｋ（ｋ＞１）の入力変数用端子と、
前記しきい素子のゲート電極と第１の端子との間に接続され、このゲート電極と第１の端子との間を接続／遮断する第１のスイッチと、
前記しきい値を選択する構成データを保持する構成データ保持回路と、
前記しきい素子のゲート電極に容量結合されたしきい値選択用入力端子と、
このしきい値選択用入力端子と前記構成データ保持回路の出力端子との間に接続され、しきい値選択用入力端子と構成データ保持回路の出力端子との間を接続／遮断する第２のスイッチと、
前記第１のスイッチおよび第２のスイッチのオン／オフを制御し、前記しきい素子のゲート電極に蓄積されている電荷の初期化および前記構成データ保持回路に保持されている構成データを用いての前記しきい値の再設定を行うリフレッシュ手段と
を備えたことを特徴とする可変しきい値しきい素子回路。
【請求項２】
請求項１に記載された可変しきい値しきい素子回路において、前記リフレッシュ手段は、所定の時間間隔で前記しきい値の再設定を行うことを特徴とする可変しきい値しきい素子回路。
【請求項３】
請求項１に記載された可変しきい値しきい素子回路において、前記リフレッシュ手段は、現在設定されている前記しきい値の変動を監視し、このしきい値の変動が所定値を超えた場合に前記しきい値の再設定を行うことを特徴とする可変しきい値しきい素子回路。
【請求項４】
請求項１〜３の何れか１項に記載された可変しきい値しきい素子回路において、前記第１の端子が固定電位に接続された端子であることを特徴とする可変しきい値しきい素子回路。
【請求項５】
請求項４において、前記固定電位が電源電位およびグランド電位の何れか一方であることを特徴とする可変しきい値しきい素子回路。
【請求項６】
請求項１〜３の何れか１項に記載された可変しきい値しきい素子回路において、前記第１の端子が前記しきい素子の出力端子であることを特徴とする可変しきい値しきい素子回路。
【請求項７】
可変しきい値しきい素子回路を多段接続して構成された関数機能再構成可能集積回路において、
多段接続された可変しきい値しきい素子回路の少なくとも１つが請求項１〜６の何れか１項に記載された可変しきい値しきい素子回路とされている
ことを特徴とする関数機能再構成可能集積回路。
【請求項８】
可変しきい値しきい素子回路を多段接続して構成された関数機能再構成可能集積回路において、
複数の可変しきい値しきい素子回路によって初段の可変しきい値しきい素子回路が構成され、
この初段の可変しきい値しきい素子回路の全てが請求項１〜６の何れか１項に記載された可変しきい値しきい素子回路とされている
ことを特徴とする関数機能再構成可能集積回路。
【請求項９】
請求項１に記載された可変しきい値しきい素子回路に適用されるしきい値リフレッシュ方法であって、
前記第１のスイッチをオンとし、前記しきい素子のゲート電極と第１の端子との間を接続する第１のステップと、
前記第１〜第ｋの入力変数用端子から所定の入力変数の組合せを入力する第２のステップと、
前記第２のスイッチをオンとし、前記しきい値選択用入力端子と前記構成データ保持回路の出力端子との間を接続する第３のステップと、
前記第１のステップ，第２のステップおよび第３のステップの実行後、前記第１のスイッチおよび前記第２のスイッチをオフとする第４のステップと
を有することを特徴とするしきい値リフレッシュ方法。
【請求項１０】
請求項１に記載された可変しきい値しきい素子回路に適用されるしきい値リフレッシュ方法であって、
前記第１のスイッチをオンとし、前記しきい素子のゲート電極と第１の端子との間を接続する第１のステップと、
前記第１〜第ｋの入力変数用端子から所定の入力変数の組合せを入力する第２のステップと、
前記第２のスイッチをオフとし、前記しきい値選択用入力端子と前記構成データ保持回路の出力端子との間を遮断する第３のステップと、
前記第１のステップ，第２のステップおよび第３のステップの実行後、前記第１のスイッチをオフ、前記第２のスイッチをオンとする第４のステップと
を有することを特徴とするしきい値リフレッシュ方法。
【請求項１１】
請求項８に記載された関数機能再構成可能集積回路に適用される関数機能構成方法であって、
前記初段の可変しきい値しきい素子回路のしきい素子のゲート電極と第１の端子との間を前記第１のスイッチによって遮断している期間に、
その可変しきい値しきい素子回路の第１〜第ｋの入力変数用端子の一部に同じ入力変数を入力することによって部分対称関数機能を実現するようにした
ことを特徴とする関数機能構成方法。
【請求項１２】
請求項８に記載された関数機能再構成可能集積回路に適用される関数機能構成方法であって、
前記初段の可変しきい値しきい素子回路のしきい素子のゲート電極と第１の端子との間を前記第１のスイッチによって遮断している期間に、
その可変しきい値しきい素子回路の第１〜第ｋの入力変数用端子のうち、（ｋ＋１）≧２m を満たす正の整数ｍにより表される２j-1 個（ｊはｊ≦ｍを満たす正の整数）の端子に対して同じ入力変数を入力することによってｍ入力変数論理関数を実現するようにした
ことを特徴とする関数機能構成方法。
【請求項１３】
請求項８に記載された関数機能再構成可能集積回路に適用される関数機能構成方法であって、
前記初段の可変しきい値しきい素子回路のしきい素子のゲート電極と第１の端子との間を前記第１のスイッチによって遮断している期間に、
その可変しきい値しきい素子回路の第１〜第ｋの入力変数用端子の全てに同じ入力変数を入力することによって配線機能を実現するようにした
ことを特徴とする関数機能構成方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、しきい値を安定的に保持する機能を有する可変しきい値しきい素子回路、この可変しきい値しきい素子回路を用いて構成され回路作製後であっても関数機能を構成することの可能な関数機能再構成可能集積回路、前記可変しきい値しきい素子回路に適用されるしきい値リフレッシュ方法および前記関数機能再構成可能集積回路に適用される関数機能構成方法に関するものである。
【０００２】
【従来の技術】
ＣＭＯＳプロセス技術により作製されるしきい素子（非線形素子）として、例えば文献１（特許第２６６２５５９号：半導体装置）に開示されたニューロンＭＯＳトランジスタ（νＭＯＳトランジスタ）によって構成されたインバータがある。図１２に文献１に記載されたＣ−νＭＯＳ(Complementary MOS )インバータを示す。以降、このインバータをνＭＯＳインバータと呼ぶ。
【０００３】
νＭＯＳインバータを構成するνＭＯＳトランジスタＱ１，Ｑ２はフローティングゲートデバイスである。すなわち、図１２において、νＭＯＳトランジスタＱ１，Ｑ２は電気的にフローティング状態とされたゲート電極（フローティングゲート）ＦＧを有し、このフローティングゲートＦＧに信号入力端子inptut〔１〕〜inptut〔３〕が容量結合されている。フローティングゲートデバイスは、ＥＥＰＲＯＭやＦＥＥＰＲＯＭ（Flash EEPROM）の中でも使用されているように、不揮発性メモリを構成することが可能である。
【０００４】
一方、フローティングゲートデバイスはその製造過程においてフローティングゲートに電荷が残留したり、デバイスの動作時にフローティングゲートに電荷が注入されることによって、フローティングゲートに存在する電荷量が必ずしも電気的中性でなかったり、変化したりすることが知られている。これらの余剰電荷を除去する方法としては、ＵＶ(ultraviolet photons )照射や高電圧の印加による電荷制御がある。これらの方法は典型的なＣＭＯＳ論理回路に付加的な周辺回路や高電位を必要とし、また、高速に余剰電荷を除去することが難しいという問題もある。
【０００５】
ＣＭＯＳ論理回路と整合性が良く、高速性も確保できる方法の１つにフローティングゲート制御がある。図１３に文献２（特開平７−１６１９４２号公報（特願平５−３０２９１８号：半導体集積回路）に開示されたフローティングゲート制御されるνＭＯＳインバータを示す。
このνＭＯＳインバータにおいては、フローティングゲートＦＧとグランドとの間にスイッチＳＷ１を設け、信号入力端子inptut〔１〕〜inptut〔３〕とフローティングゲートＦＧとの間に切換スイッチＳＷａ〜ＳＷｃを設け、切換スイッチＳＷａ〜ＳＷｃの第１の切換接点端子ａを信号入力端子inptut〔１〕〜inptut〔３〕に接続し、切換スイッチＳＷａ〜ＳＷｃの第２の切換接点端子ｂをグランドに接続し、切換スイッチＳＷａ〜ＳＷｃのコモン端子をフローティングゲートＦＧに容量結合している。
このνＭＯＳインバータでは、スイッチＳＷ１や切換スイッチＳＷａ〜ＳＷｃのオン／オフを制御することによって、フローティングゲートＦＧの余剰電荷を除去する。以降、このスイッチＳＷ１が接続されたフローティングゲートＦＧを制御型フローティングゲートと呼ぶ。
【０００６】
図１３に示されたνＭＯＳインバータでは、スイッチＳＷ１をＣＭＯＳ回路で構成するために、その要素はＭＯＳトランジスタになる。実際、上述した文献２では、スイッチＳＷ１の例としてパストランジスタが用いられている。ＭＯＳトランジスタは遮断時であっても、ソースからドレインへのサブスレッショルド電流とＰＮ接合逆飽和電流というリーク電流を持つ。このために、フローティングゲートＦＧは、過渡的には浮遊状態とみなせるが、定常状態における電気的浮遊状態は完全なものではない。即ち、スイッチＳＷ１を設けることによって、νＭＯＳトランジスタＱ１，Ｑ２が不揮発性メモリの構成要素とならなくなる。まとめると、フローティングゲートデバイスのフローティングゲート中の電荷量を一定に保持し、かつ、高速書き換えを行うために、制御型フローティングゲートを用いる場合、フローティングゲートデバイスはもはや不揮発性メモリの構成要素としては機能しない。
【０００７】
〔しきい値可変機能を備えたしきい素子回路（可変しきい値しきい素子回路）〕図１４は、しきい値可変機能を備えたしきい素子回路（可変しきい値しきい素子回路）として動作する、典型的なｋ入力変数の可変しきい値しきい素子回路を示す回路図である。この可変しきい値しきい素子回路１４０においては、標準的なＣＭＯＳインバータのゲートＦＧに、入力変数用の信号入力端子（以下、入力変数用端子と呼ぶ）input1〔１〕〜input1〔ｋ〕、しきい値を選択するしきい値選択用の入力端子（以下、しきい値選択用端子と呼ぶ）input2、電源電位Ｖddに接続された固定電位端子Ｐvdd 、グランド電位に接続された固定電位端子Ｐgnd を容量結合している。
【０００８】
可変しきい値しきい素子回路１４０のしきい値は、しきい値選択用端子input2とフローティングゲートＦＧとの間の容量値Ｃv と、固定電位端子Ｐvdd とフローティングゲートＦＧとの間の容量値Ｃvdd と、固定電位端子Ｐgnd とフローティングゲートＦＧとの間の容量値Ｃgnd と、入力変数用端子input1〔１〕〜input1〔ｋ〕とフローティングゲートＦＧとの間の容量値Ｃ1 〜Ｃk と、しきい値選択用端子input2に印加する電位Ｖv とによって決まる。この可変しきい値しきい素子回路１４０においては、しきい値選択用端子input2に印加する電位Ｖv を電源電位Ｖdd（論理値「１」）とするかグランド電位（論理値「０」）とするかによって、入力変数の組合せが形成する入力状態上の任意の値にしきい値を設定することが可能である。
【０００９】
〔回路状態保持機能を備えた可変しきい値しきい素子回路〕
文献３（特開２００１−１９６９２０号：関数機能構成データ保持方法及びその方法を用いた集積回路）には、フローティングゲートデバイス固有の構造を利用し、設定されたしきい値を保持する方法とその方法を利用した回路構成が開示されている。図１５は回路状態保持機能を備えたｋ入力変数の可変しきい値しきい素子回路の代表的な回路構成を示す図である。
【００１０】
この可変しきい値しきい素子回路１５０においては、フローティングゲートＦＧとグランド側の固定電位端子Ｐgnd との間に、状態制御端子ctl2からの制御信号によってオン／オフされるＮＭＯＳ型のパストランジスタｓｗｎを付加している。また、しきい値選択用端子input2とフローティングゲートＦＧに容量結合される端子（以下、この端子をしきい値選択用入力端子と呼ぶ）input2ａとの間にトランスミッションゲートtgin２を設け、しきい値選択用入力端子input2ａと電源側の固定電位端子Ｐvdd との間にＰＭＯＳ型のパストランジスタｓｗｐを設けている。また、状態制御端子ctl1とトランスミッションゲートtgin２との間にインバータinv1を設けている。トランスミッションゲートtgin２およびパストランジスタｓｗｐは状態制御端子ctl1からの制御信号によってオン／オフされる。
【００１１】
このような回路構成とすることにより、しきい値選択用端子input2に与えられる電位Ｖv （以下、この電位Ｖv を構成データと呼ぶ）によって選択されるしきい値を設定し、保持することが可能となる。
【００１２】
〔回路状態保持動作〕
図１５におけるしきい値の保持動作について簡単に説明する。先ず、状態制御端子ctl2を論理値「１」である電源電位にし、パストランジスタｓｗｎを導通ささせ、フローティングゲートＦＧの電位をグランド電位にする。次に、状態制御端子ctl1を電源電位にし、パストランジスタｓｗｐを遮断し、トランスミッションゲートtgin２を導通させる。この時、入力変数用端子input1〔１〕〜input1〔ｋ〕から入力される入力変数は全て論理値「０」であるグランド電位にする。
【００１３】
今、第１の状態制御端子ctl1と第２の状態制御端子ctl2とが論理値「１」である時を初期化時と呼ぶ。また、完全フローティングゲートを持つ図１４の可変しきい値しきい素子回路１４０のしきい値選択用端子input2から論理値「１」が入力された場合のフローティングゲートＦＧの電位を第１のフローティングゲート電位と呼び、同様に、論理値「０」が入力された場合の電位を第２のフローティングゲート電位と呼ぶ。
【００１４】
初期化時に前記の操作を行い、しきい値選択用端子input2に論理値「０」を入力し続ける。この時、フローティングゲートＦＧに容量結合するしきい値選択用入力端子input2ａにはしきい値選択用端子input2の入力と同様に論理値「０」が与えられる。即ち、フローティングゲートＦＧがグランド電位の時に論理値「０」の入力変数と構成データとが与えられる。この入力状態を保ったままで、第１の状態制御端子ctl1と第２の状態制御端子ctl2との入力を論理値「１」から論理値「０」に切り替える。第１の状態制御端子ctl1と第２の状態制御端子ctl2とが論理値「０」の時を関数演算時と呼ぶ。
【００１５】
関数演算時に、パストランジスタｓｗｎが遮断され、フローティングゲートＦＧは高インピーダンス状態になり、過渡的にはほぼフローティング状態（電気的に浮遊状態）になる。同時に、トランスミッションゲートtgin２は遮断され、パストランジスタｓｗｐが導通し、しきい値選択用入力端子input2ａには論理値「１」である電源電位が印加される。このため、フローティングゲートＦＧ上で電荷の再分配が生じ、フローティングゲートＦＧは第１のフローティングゲート電位になる。
【００１６】
同様に、初期化時にしきい値選択用端子input2に論理値「１」である電源電位を与えた場合、関数演算時には、初期化時と同じ電源電位がしきい値選択用入力端子input2ａに与えられるために、フローティングゲートＦＧは第２のフローティングゲート電位となる。
【００１７】
このように、初期化時に構成データとして与える論理値に依存して、関数演算時のフローティングゲート電位が決まる。つまり、初期化時に入力された構成データが関数演算時に保持されることを意味している。この構成データの保持動作とそれに必要な要素を次に述べる。
【００１８】
初期化時にフローティングゲート電位がグランド電位に固定されているために、構成データである所定の電位がしきい値選択用入力端子input2ａに与えられた時、フローティングゲートＦＧにグランド側から電荷の注入が起こる。
【００１９】
次に、関数演算時には注入された電荷がフローティングゲートＦＧ中に保持され、入力変数の論理値によって電荷再分配が生じ、フローティングゲート電位が決まる。構成データの保持に必要な要素は２つあり、１つは、フローティングゲートＦＧに接続されたある端子からの電荷の注入であり、他の１つは、フローティングゲートＦＧが高インピーダンスの時に、注入された電荷が保持されることである。
【００２０】
〔関数機能再構成可能集積回路〕
図１６は、図１５に示した可変しきい値しきい素子回路１５０を用いた２入力変数の場合の任意の対称関数を実現する関数機能再構成可能集積回路（２入力変数可変関数回路）を示す図である。この２入力変数可変関数回路１６０は、２段論理フィードフォワード型回路であり、１段目は３つの可変しきい値しきい素子回路ＦＴＥ〔１〕，ＦＴＥ〔２〕，ＦＴＥ〔３〕によって構成され、２段目は１つの可変しきい値しきい素子回路ＳＴＥによって構成されている。
【００２１】
この２入力変数可変関数回路１６０において、２つの入力変数は、入力変数用端子input1〔１〕，input1〔２〕から１段目の可変しきい値しきい素子回路ＦＴＥ〔１〕，ＦＴＥ〔２〕，ＦＴＥ〔３〕のフローティングゲートＦＧ〔１〕，ＦＧ〔２〕，ＦＧ〔３〕、および２段目の可変しきい値しきい素子回路ＳＴＥのフローティングゲートＦＧ〔Ｓ〕に与えられ、１段目の可変しきい値しきい素子回路ＦＴＥ〔１〕，ＦＴＥ〔２〕，ＦＴＥ〔３〕の出力値はバッファＢＦ〔１〕，ＢＦ〔２〕，ＢＦ〔３〕により増幅および波形整形され、２段目の可変しきい値しきい素子回路ＳＴＥのフローティングゲートＦＧ〔Ｓ〕に与えられる。
【００２２】
なお、１段目の可変しきい値しきい素子回路ＦＴＥ〔１〕，ＦＴＥ〔２〕，ＦＴＥ〔３〕と２段目の可変しきい値しきい素子回路ＳＴＥとの間には、ＳＴＥのフローティングゲートＦＧ〔Ｓ〕を初期化する際に全ての入力信号をグランド電位にするために、トランスミッションゲートtgs1，tgs2，tgs3とパストランジスタswi1，swi2，swi3が挿入されている。
【００２３】
また、ＦＴＥ〔１〕，ＦＴＥ〔２〕，ＦＴＥ〔３〕，ＳＴＥにおいて、各入力変数用端子とフローティングゲートとの間の容量値は等しく設定されている。また、ＳＴＥにおいては、ＦＴＥ〔１〕，ＦＴＥ〔２〕，ＦＴＥ〔３〕の出力値が与えられる端子とフローティングゲートとの間の容量値は、入力変数が与えられる端子とフローティングゲートとの間の容量値と等しく設定されている。この設定によって、ＳＴＥの入力状態、即ち、入力変数と重みとの積和は、「０」，「１」，「２」の３つになる。この入力状態に対応する数を入力変数の状態数（入力状態数）と呼ぶ。また、この入力変数の状態数の上位の言葉として、入力変数の状態量（入力状態量）を用いる。
【００２４】
ＦＴＥ〔１〕を例に取ると、ＦＴＥ〔１〕とＳＴＥとの間には、ＳＴＥのフローティングゲートＦＧ〔Ｓ〕を初期化する際に全ての入力端子の入力信号をグランド電位にするために、トランスミッションゲートtgs1とパストランジスタswi1が挿入されている。ＦＴＥ〔２〕，ＦＴＥ〔３〕についても同様である。ＳＴＥにも、ＦＴＥ〔１〕，ＦＴＥ〔２〕，ＦＴＥ〔３〕と同様に初期化時と関数演算時の２つの期間を用いる。
【００２５】
初期化時には、第１の状態制御端子ctl1と第２の状態制御端子ctl2とに論理値「１」を与え、フローティングゲートＦＧ〔Ｓ〕に接続されたパストランジスタｓｗｓを導通させる。同時に、トランスミッションゲートtgs1が遮断され、パストランジスタswi1が導通し、バッファＢＦ〔１〕を介して、論理値「０」であるグランド電位が容量結合されたフローティングゲートＦＧ〔Ｓ〕に与えられる。また、入力変数として状態数「０」を与える場合、全ての入力が論理値「０」である。この状態を保ったままで、第１の状態制御端子ctl1と第２の状態制御端子ctl2とに論理値「１」を与えることで、関数演算時の状態を形成できる。
【００２６】
次に、可変しきい値によって任意の関数が実現可能であることをＸＯＲ（Exclusive-OR ）を実現する場合を例に取り、説明する。ＦＴＥ〔１〕，ＦＴＥ〔２〕，ＦＴＥ〔３〕のしきい値は、各々入力状態数０の前後、１の前後、２の前後の２つのしきい値のいずれか一方を選択できるように設定できる。ＦＴＥ〔１〕，ＦＴＥ〔２〕，ＦＴＥ〔３〕において、初期化時に構成データとして論理値「０」を与えた場合に小さい方のしきい値を選択でき、逆に論理値「１」を与えた場合に大きい方のしきい値が選択される。
【００２７】
ＦＴＥ〔１〕のしきい値として、入力状態数０より大きく１より小さい値を選択し、ＦＴＥ〔２〕のしきい値として、入力状態数１より小さく０より大きい値を選択し、ＦＴＥ〔３〕のしきい値として、入力状態数２より大きい値を選択する。この時、ＦＴＥ〔１〕の出力の論理値は、入力状態数０，１，２に対して「１」，「０」，「０」であり、ＦＴＥ〔２〕の出力の論理値は、入力状態数０，１，２に対して「１」，「０」，「０」であり、ＦＴＥ〔３〕の出力の論理値は、入力状態数０，１，２に対して「１」，「１」，「１」である。
【００２８】
入力状態数が０，１，２の各々の場合、ＳＴＥの５つの入力端子中、論理値「１」である端子の数は、各々３，２，３となる。ＳＴＥの出力値は入力の多数決の結果の論理反転であるから、入力状態数０，１，２に対して出力値は「０」，「１」，「０」となり、ＸＯＲを実現している。これは、各入力状態数の前後にしきい値を持つＦＴＥ、入力状態数が０であればＦＴＥ〔１〕、入力状態数が１であればＦＴＥ〔２〕、入力状態数が２であればＦＴＥ〔３〕について、初期化時に構成データとして与えた論理値の論理反転が出力されることを意味している。
【００２９】
上述したＸＯＲの実現例で分かるように、図１６に示した２入力変数可変関数回路１６０によれば、ＦＴＥ〔１〕，ＦＴＥ〔２〕，ＦＴＥ〔３〕，ＳＴＥのフローティングゲートＦＧ〔１〕，ＦＧ〔２〕，ＦＧ〔３〕，ＦＧ〔Ｓ〕を初期化する期間にしきい値選択用端子input2〔１〕〜input2〔３〕に入力されている構成データによって決定される回路の状態を保持することによって、任意の対称関数を実現できる。
【００３０】
但し、対称関数とは、ＡＮＤ，ＯＲ，ＮＡＮＤ，ＮＯＲ，ＸＯＲ，ＸＮＯＲ，０，１関数に代表されるように、関数値が入力状態数によって規定される論理関数であり、変数を相互に入れ換えても関数値が不変であるという特徴を持つ。
【００３１】
【発明が解決しようとする課題】
〔回路状態保持可能な機能を備えた可変しきい値しきい素子回路の問題点〕
図１５に示された可変しきい値しきい素子回路１５０において、回路状態を保持するために必要な２つの要素は、すなわちフローティングゲートＦＧへの電荷の注入と注入された電荷の保持は、フローティングゲートＦＧに接続されるスイッチであるパストランジスタｓｗｎを操作することによって一時的に達成される。
【００３２】
しかしながら、パストランジスタｓｗｎは状態制御端子ctl2が論理値「０」のグランド電位であっても、サブスレッショレド電流と、ドレイン端子と基板（またはウェル）との間にあるＰＮ接合逆飽和電流という２つのリーク電流を持つ。このため、フローティングゲートＦＧに保持されている電荷量は経時変化する。そして、この変化はしきい値を他の値に変える。即ち、しきい値の保持期間が有限であり、時間の経過に伴い徐々にしきい値が変化し、このしきい値の変化がしきい値処理回路ＩＮＶの経時的誤動作という問題を引き起こす。
【００３３】
〔関数機能再構成可能集積回路の問題点〕
図１６に示された２入力変数可変関数回路１６０において、実現される関数機能は、初期化時にＦＴＥ〔１〕，ＦＴＥ〔２〕，ＦＴＥ〔３〕に入力される構成データの論理値によって定まるしきい値によって決められている。このしきい値の保持状態は上述したように経時変化を起こす。このために、２入力変数可変関数回路１６０においては、時間経過に伴い実現される関数が変化し、当初実現していた機能の実現ができなくなるという問題、つまり、経時的誤動作の問題が起きる。
【００３４】
本発明はこのような課題を解決するためになされたもので、その目的とするところは、簡単な回路構成でしきい値を安定的に保持し、経時的誤動作の問題を解消することの可能な可変しきい値しきい素子回路、この可変しきい値しきい素子回路に適用されるしきい値リフレッシュ方法、この可変しきい値しきい素子回路を用いた関数機能再構成可能集積回路およびこの関数機能再構成可能集積回路に適用される関数機能構成方法を提供することにある。
【００３５】
【課題を解決するための手段】
このような目的を達成するために、本発明の可変しきい値しきい素子回路は、電気的にフローティング状態とされたゲート電極を有し、このゲート電極に与えられる入力変数の状態量が、設定されているしきい値を越えた時にその出力を論理反転するしきい素子と、このしきい素子のゲート電極に容量結合され、入力変数を伝搬する第１〜第ｋ（ｋ＞１）の入力変数用端子と、しきい素子のゲート電極と第１の端子との間に接続され、このゲート電極と第１の端子との間を接続／遮断する第１のスイッチと、しきい値を選択する構成データを保持する構成データ保持回路と、しきい素子のゲート電極に容量結合されたしきい値選択用入力端子と、このしきい値選択用入力端子と構成データ保持回路の出力端子との間に接続され、しきい値選択用入力端子と構成データ保持回路の出力端子との間を接続／遮断する第２のスイッチと、第１のスイッチおよび第２のスイッチのオン／オフを制御し、しきい素子のゲート電極に蓄積されている電荷の初期化および構成データ保持回路に保持されている構成データを用いてのしきい値の再設定を行うリフレッシュ手段とを設けたものである（第１発明）。
【００３６】
この発明によれば、リフレッシュ手段によって、第１のスイッチおよび第２のスイッチのオン／オフが制御され、しきい素子のゲート電極に蓄積されている電荷の初期化が行われるとともに、構成データ保持回路に保持されている構成データを用いてのしきい値の再設定（しきい値のリフレッシュ）が行われる。
このしきい値の再設定は、所定の時間間隔で行うようにしてもいし（第２発明）、現在設定されているしきい値の変動を監視し、このしきい値の変動が所定値を超えた場合に行うようにしてもよい（第３発明）。
また、第１の端子は電源電位やグランド電位などの固定電位に接続された端子としてもよいし（第４，第５発明）、しきい素子の出力端子としてもよい（第６発明）。
【００３７】
また、本発明のしきい値リフレッシュ方法（第９発明）は、上述した可変しきい値しきい素子回路において、しきい値のリフレッシュを行う場合、第１のスイッチをオンとし、しきい素子のゲート電極と第１の端子との間を接続し（第１のステップ）、第１〜第ｋの入力変数用端子から所定の入力変数の組合せを入力し（第２のステップ）、第２のスイッチをオンとし、しきい値選択用入力端子と構成データ保持回路の出力端子との間を接続し（第３のステップ）、この第１のステップ，第２のステップおよび第３のステップの実行後、第１のスイッチおよび第２のスイッチをオフとすることによって（第４のステップ）、しきい素子のゲート電極に蓄積されている電荷の初期化および構成データを用いてのしきい値の再設定を行うようにしたものである。
【００３８】
なお、第１のスイッチをオンとし、しきい素子のゲート電極と第１の端子との間を接続し（第１のステップ）、第１〜第ｋの入力変数用端子から所定の入力変数の組合せを入力し（第２のステップ）、第２のスイッチをオフとし、しきい値選択用入力端子と構成データ保持回路の出力端子との間を遮断し（第３のステップ）、この第１のステップ，第２のステップおよび第３のステップの実行後、第１のスイッチをオフ、第２のスイッチをオンとすることによって（第４のステップ）、しきい素子のゲート電極に蓄積されている電荷の初期化および構成データを用いてのしきい値の再設定を行うようにしてもよい（第１０発明）。
【００３９】
また、本発明の関数機能再構成可能集積回路（第７発明）は、多段接続された可変しきい値しきい素子回路の少なくとも１つを本発明の可変しきい値しきい素子回路としたものである。
例えば、可変しきい値しきい素子回路を２段接続して構成し、１段目の可変しきい値しきい素子回路を、その第１〜第ｋの入力変数用端子が共通に接続された複数の可変しきい値しきい素子回路により構成し、２段目の可変しきい値しきい素子回路を、１つの可変しきい値しきい素子回路により構成し、この可変しきい値しきい素子回路の第１〜第ｋの入力変数用端子を１段目の各可変しきい値しきい素子回路の第１〜第ｋの入力変数用端子と共通に接続し、１段目の各可変しきい値しきい素子回路からの出力信号を２段目の可変しきい値しきい素子回路のゲート電極に容量結合された各入力端子に与える構造とする。
このような構造において、例えば初段の可変しきい値しきい素子回路の少なくとも１つに、上述した本発明の可変しきい値しきい素子回路を用いる。なお、初段の可変しきい値しきい素子回路の全てに、上述した本発明の可変しきい値しきい素子回路を用いるようにしてもよい（第８発明）。
【００４０】
また、本発明の関数機能構成方法は、初段の可変しきい値しきい素子回路の全てに本発明の可変しきい値しきい素子回路を用いた関数機能再構成可能集積回路において、初段の可変しきい値しきい素子回路のしきい素子のゲート電極と第１の端子との間を第１のスイッチによって遮断している期間に、その可変しきい値しきい素子回路の第１〜第ｋの入力変数用端子の一部に同じ入力変数を入力することによって部分対称関数機能を実現するようにしたものである（第１１発明）。
【００４１】
また、本発明の関数機能構成方法は、初段の可変しきい値しきい素子回路のしきい素子のゲート電極と第１の端子との間を前記第１のスイッチによって遮断している期間に、その可変しきい値しきい素子回路の第１〜第ｋの入力変数用端子のうち、（ｋ＋１）≧２m を満たす正の整数ｍにより表される２j-1 個（ｊはｊ≦ｍを満たす正の整数）の端子に対して同じ入力変数を入力することによってｍ入力変数論理関数を実現するようにしたものである（第１２発明）。
【００４２】
また、本発明の関数機能構成方法は、初段の可変しきい値しきい素子回路のしきい素子のゲート電極と第１の端子との間を第１のスイッチによって遮断している期間に、その可変しきい値しきい素子回路の第１〜第ｋの入力変数用端子の全てに同じ入力変数を入力することによって配線機能を実現するようにしたものである（第１３発明）。
これにより、関数機能として、任意の対象関数のみならず、部分対称関数、任意の論理関数、配線機能などの機能を実現することができる。
【００４３】
【発明の実施の形態】
以下、本発明を図面に基づいて詳細に説明する。
〔実施の形態１：リフレッシュ機能を備えた可変しきい値しきい素子回路（その１）〕
図１はこの発明の一実施の形態を示すリフレッシュ機能を備えたｋ入力変数の可変しきい値しきい素子回路の回路構成を示す図である。同図において、図１５と同一符号は同一或いは同等構成要素を示し、その説明は省略する。
【００４４】
この可変しきい値しきい素子回路１００は、主な構成要素として、しきい値処理回路ＩＮＶと、メモリ回路ＭＥＭと、スイッチＳＷ１〜ＳＷ６と、リフレッシュ回路ＲＥＦとを有し、端子Ｐ１，Ｐ２やしきい値調整用端子input3が設けられている。しきい値処理回路ＩＮＶは、文献４（特開２００１−０４４８２３号公報（特願平−１１−２１０８０１号））に開示されている可変しきい値生成方法と同様の方法によって設計されており、しきい値処理回路ＩＮＶ中のインバータ回路ＩＶはフローティングゲートを入力ゲートとする標準的なＣＭＯＳインバータ回路によって構成される。このインバータ回路ＩＶが本発明でいうしきい素子に対応する。
【００４５】
この可変しきい値しきい素子回路１００において、メモリ回路ＭＥＭはしきい値選択用端子input2としきい値選択用入力端子input2ａとの間に設けられており、しきい値選択用端子input2とメモリ回路ＭＥＭの入力端子Ｐinとの間にスイッチＳＷ３が、メモリ回路ＭＥＭの出力端子Ｐout としきい値選択用入力端子input2ａとの間にスイッチＳＷ２が設けられている。
【００４６】
また、端子Ｐ２とフローティングゲートＦＧとの間には、スイッチＳＷ１が設けられている。スイッチＳＷ１を導通状態にし、フローティングゲートＦＧを端子Ｐ２に接続すると、フローティングゲートＦＧの電位が端子Ｐ２の電位に固定される。しきい値処理回路ＩＮＶの製造過程においてフローティングゲートＦＧに残留する電荷と、しきい値処理回路ＩＮＶが動作する際にフローティングゲートＦＧに注入される電荷とは、しきい値に影響を与える。スイッチＳＷ１を導通状態にし、フローティングゲートＦＧを端子Ｐ２に接続するという操作は、これらの電荷のしきい値に与える影響を除去することを可能とする。
【００４７】
しきい値調整用端子input3としきい値調整用入力端子input3ａとの間にはスイッチＳＷ５が設けられている。しきい値調整用入力端子input3ａはしきい値処理回路ＩＮＶのフローティングゲートＦＧに容量結合されている。端子Ｐ１としきい値選択用入力端子input2ａとの間にはスイッチＳＷ４が設けられおり、端子Ｐ２としきい値調整用入力端子input3ａとの間にはスイッチＳＷ６が設けられている。スイッチＳＷ２とスイッチＳＷ４とは導通と遮断に関して互いに逆の動作をする。すなわち、スイッチＳＷ２が導通状態とされると、スイッチＳＷ４は遮断状態とされる。スイッチＳＷ５とスイッチＳＷ６も導通と遮断に関して互いに逆の動作をする。
【００４８】
リフレッシュ回路ＲＥＦは、後述するリフレッシュ機能の実行に際して、スイッチＳＷ１，ＳＷ２，ＳＷ４〜ＳＷ６のオン／オフ動作の制御や入力変数用端子input１〔１〕〜input１〔４〕への所定の組合せの変数の入力を行う。
【００４９】
〔図１の具体的な回路例Ａ：構成〕
図２は図１の可変しきい値しきい素子回路１００の具体的な回路例（回路例Ａ）を示す図である。この可変しきい値しきい素子回路２００では、図１のメモリ回路ＭＥＭをラッチ回路ＬＡＴに、スイッチＳＷ１をＮＭＯＳ型のパストランジスタswn1に、スイッチＳＷ３をＮＭＯＳ型のパストランジスタswn2に置き換えている。また、スイッチＳＷ２，ＳＷ４〜ＳＷ６に代えて、トランスミッションゲートtgin２やインバータinv1，パストランジスタswn3，遅延回路ＤＥＬＹなどを設けている。なお、この回路例Ａでは、フローティングゲートＦＧをパストランジスタswn1を介してグランド電位に接続しているが、電源電位に接続するようにしてもよい。また、フローティングゲートＦＧの接続先は固定電位であればよく、グランド電位や電源電位に限られるものでもない。
【００５０】
また、状態制御端子ctl1を設け、この状態制御端子ctl1からの制御信号をパストランジスタswn1へ与えるようにしている。また、状態制御端子ctl1からの制御信号を遅延回路ＤＥＬＹを介し、トランスミッションゲートtgin２やインバータinv1，パストランジスタswn3へ与えるようにしている。また、状態制御端子ctl2を設け、この状態制御端子ctl2からの制御信号をパストランジスタswn2へ与えるようにしている。
【００５１】
この可変しきい値しきい素子回路２００において、リフレッシュ回路ＲＥＦは、後述するリフレッシュ機能の実行に際して、状態制御端子ctl1への制御信号の生成や入力変数用端子input１〔１〕〜input１〔４〕への所定の組合せの変数の入力を行う。
【００５２】
ラッチ回路ＬＡＴは以下の理由で重要である。フローティングゲートＦＧに存在する電荷量が、パストランジスタswn1のサブスレッショルド電流またはＰＮ接合逆飽和電流などのリーク電流によって、パストランジスタswn1が遮断状態であっても経時的に変化する。これはしきい値の変化に通じる。この経時変化分を補正するために、ラッチ回路ＬＡＴにしきい値を設定するための構成データを保持する。
【００５３】
このラッチ回路ＬＡＴにおける構成データの保持により、後述するように、所定の時間間隔で、または、しきい値変動（フローティングゲートＦＧ中の電荷量変動または、フローティングゲートＦＧの電位変動）を検知するセンサ回路（図示せず）と連動し定期的に、ラッチ回路ＬＡＴから構成データを読み出し、フローティングゲートＦＧの初期化を行うことによって、正しいしきい値を保持することが可能となる。
【００５４】
この可変しきい値しきい素子回路２００では、簡単化のために入力変数の数は４つとし、入力変数用端子input1〔１〕〜input1〔４〕とフローティングゲートＦＧとの間の容量Ｃ1 〜Ｃ4 の値は全て等しくＣとしている。文献４に開示されているように、Ｃ1 〜Ｃ4 ＝Ｃの場合、入力変数によって作られる異なる入力状態数は、入力変数中で論理値「１」を取る変数の数である０，１，２，３のように４つとなる。
【００５５】
また、しきい値選択用入力端子input2ａとフローティングゲートＦＧとの間の容量（しきい値選択容量）Ｃv1の値も容量Ｃ1 〜Ｃ4 と等しくＣとする。これによって、入力状態数Ｚと「Ｚ±１」との間に、しきい値選択用入力端子input2ａの論理値によって決まるしきい値を設けることができる。容量Ｃv1の値がＣでない場合は、しきい値選択用入力端子input2ａの２つの論理値に応じて決まるしきい値間の入力状態数上の距離が１ではなくなり、Ｃに乗算される値に応じた距離になる。
【００５６】
更に、この可変しきい値しきい素子回路２００では、しきい値選択用入力端子input2ａの値に応じて決まる２つのしきい値が入力状態数「０＜Ｚ＜１」と「１＜Ｚ＜２」とにあるとする。これを実現するためにしきい値調整用入力端子input3ａとフローティングゲートＦＧとの間の容量（しきい値調整容量）Ｃv2の値を２Ｃとする。
【００５７】
また、しきい値処理回路ＩＮＶにおけるインバータ回路ＩＶの論理しきい値は「１／２」とする。状態制御端子ctl1からの制御信号を論理値「１」とし、パストランジスタswn1を導通させることによって、フローティングゲートＦＧ中に含まれる残留電荷をグランドに逃すことができ、しきい値処理回路ＩＮＶ中のインバータ回路ＩＶの論理しきい値を一定に保つことができる。
【００５８】
しきい値選択用端子input2とラッチ回路ＬＡＴとの間に、状態制御端子ctl2の電位によって制御されるパストランジスタswn2を設け、ラッチ回路ＬＡＴの出力端子Ｐout としきい値選択用入力端子input2ａとの間にトランスミッションゲートtgin２を設けている。トランスミッションゲートtgin２は遅延回路ＤＥＬＹの出力電位と、この出力電位をインバータinv1によって反転したしきい値調整用入力端子input3ａとの電位によって、その導通及び遮断が制御される。
【００５９】
〔回路例Ａの動作〕
図２に示した可変しきい値しきい素子回路２００の動作上の主な特徴は、しきい関数演算中にラッチ回路ＬＡＴに保持されているしきい値を選択する構成データが、しきい値処理回路ＩＮＶに供給し続けられること、しきい値を選択する構成データの書き換えはフローティングゲートＦＧを初期化する期間においてのみ可能であること、フローティングゲートＦＧの初期化およびしきい値の再設定（しきい値のリフレッシュ）が定期的に行われること、である。
【００６０】
以下、図３に示すフローチャートを参照しながら、図２に示された可変しきい値しきい素子回路２００の特徴的な動作について説明する。可変しきい値しきい素子回路２００の動作は、フローティングゲートＦＧの初期化と、しきい値を選択するための構成データの書き換えと、しきい関数演算との３つの操作に分類できる。
【００６１】
まず、状態制御端子ctl1とctl2とにグランド電位を与えることによって、パストランジスタswn1とswn2とを遮断状態にする（ステップ３０１）。この場合、遅延回路ＤＥＬＹの出力電位は所定時間遅れて論理値「０」となり、これによりトランスミッションゲートtgin２がオンとされ、ラッチ回路ＬＡＴに保持されている構成データがしきい値処理回路ＩＮＶへ供給される。また、インバータinv1の出力が論理値「１」となることから、しきい値調整用入力端子input3ａが論理値「１」とされる。
【００６２】
この状態は、図１の回路において、スイッチＳＷ１，ＳＷ３がオフ、スイッチＳＷ２，ＳＷ５がオン、スイッチＳＷ４，ＳＷ６がオフとされた状態に対応する。但し、この場合、図１の回路の端子Ｐ１，Ｐ２は共にグランド電位に接続され、しきい値調整用端子input3には論理値「１」が与えられているものとする。以下、図２の回路と図１の回路とを対応させる場合、端子Ｐ１，Ｐ２，input3はこの状態に設定されているものとする。
【００６３】
〔フローティングゲートの初期化およびしきい値のリフレッシュ〕
リフレッシュ回路ＲＥＦは、所定の時間間隔で、または、しきい値変動（フローティングゲートＦＧ中の電荷量変動または、フローティングゲートＦＧの電位変動）を検知するセンサ回路（図示せず）と連動し定期的に、リフレッシュ機能を実行する。このリフレッシュ機能の実行により、フローティングゲートＦＧに蓄積されている電荷の初期化とラッチ回路ＬＡＴに保持されている構成データを用いてのしきい値の再設定が行われる。
【００６４】
リフレッシュ回路ＲＥＦは、リフレッシュ機能の実行命令が出されると（ステップ３０２のＹＥＳ）、状態制御端子ctl1に電源電位を印加する。すなわち、状態制御端子ctl1への制御信号を論理値「１」とする。また、入力変数用端子input1〔１〕〜input1〔４〕へグランド電位を印加する（ステップ３０３）。
【００６５】
状態制御端子ctl1への制御信号が論理値「１」とされると、パストランジスタswn1がオンとされ、フローティングゲートＦＧがグランド電位とされる。また、状態制御端子ctl1からの制御信号は、所定時間遅れて遅延回路ＤＥＬＹから出力される。これにより、トランスミッションゲートtgin２がオフとされ、パストランジスタswn3がオンとされ、しきい値選択用入力端子input2ａがグランド電位になる。この場合、しきい値選択容量Ｃv1の両端の電位は共にグランド電位となり、しきい値選択容量Ｃv1に電荷は誘起されない。
【００６６】
また、遅延回路ＤＥＬＹからの論理値「１」の出力電位はインバータ回路inv1によって反転され、しきい値調整用入力端子input3ａに供給される。この場合、しきい値調整容量Ｃv2の両端の電位は共にグランド電位となり、しきい値調整容量Ｃv2に電荷は誘起されない。この状態を図１に示された回路で言えば、スイッチＳＷ１がオン、スイッチＳＷ２，ＳＷ５がオフ、スイッチＳＷ４，ＳＷ６がオンとされた状態に対応する。
【００６７】
この状態において、入力変数用端子input1〔１〕〜input1〔４〕にはグランド電位が設定されており、しきい値処理回路ＩＮＶの全ての入力端子の電位はグランド電位になり、同時にフローティングゲートＦＧの電位もグランド電位であるため、フローティングゲートＦＧには電荷は誘起されず、製造上フローティングゲートＦＧに生じた電荷と回路動作によってフローティングゲートＦＧに注入された電荷とをグランドに逃すことができ、フローティングゲートＦＧに蓄積されれている電荷の初期化が行われる。
【００６８】
この後、リフレッシュ回路ＲＥＦは、状態制御端子ctl1へグランド電位を印加する（ステップ３０４）。これにより、パストランジスタswn1がオフとされ、フローティングゲートＦＧがグランド電位から切り離される。また、遅延回路ＤＥＬＹの出力電位が所定時間遅れて論理値「０」となり、パストランジスタswn3がオフ、トランスミッションゲートtgin２がオンとされ、ラッチ回路ＬＡＴに保持されている構成データがしきい値処理回路ＩＮＶへ供給される。また、インバータinv1の出力が論理値「１」となることから、しきい値調整用入力端子input3ａのレベルも論理値「１」とされる。
【００６９】
これにより、フローティングゲートＦＧに蓄積されている電荷の初期化の終了と同時に、ラッチ回路ＬＡＴに保持されている構成データを用いてのしきい値の再設定が行われる。この状態は、図１の回路において、スイッチＳＷ１がオフ、スイッチＳＷ２，ＳＷ５がオン、スイッチＳＷ４，ＳＷ６がオフとされた状態に対応する。
【００７０】
〔構成データの書き換え〕
フローティングゲートＦＧの初期化を行っている期間には、しきい値を選択する構成データの書き換えを行うことが可能である。フローティングゲートＦＧの初期化を行っている期間中には、トランスミッションゲートtgin２が遮断状態にあり、ラッチ回路ＬＡＴの構成データはしきい値処理回路ＩＮＶには供給されておらず、ラッチ回路ＬＡＴの状態変化はしきい値処理回路ＩＮＶに影響しない。
【００７１】
状態制御端子ctl2の電位を電源電位にし（ステップ３０６）、パストランジスタswn2を導通状態にし、しきい値選択用端子input2からデータを入力することによって（ステップ３０７）、ラッチ回路ＬＡＴに保持される構成データを書き換えることができる。
【００７２】
選択可能な２つのしきい値の中で、入力状態数「０＜Ｚ＜１」にあるしきい値を選択する場合は、しきい値選択用端子input2から入力するデータを論理値「１」、即ち、電源電位とし、「１＜Ｚ＜２」にあるしきい値を選択する場合は、しきい値選択用端子input2から入力するデータを論理値「０」、即ち、グランド電位にする。データ入力が終了した後に（ステップ３０８のＹＥＳ）、状態制御端子ctl2をグランド電位にし（ステップ３０９）、パストランジスタswn2を遮断する。これによって構成データの書き換えが終了する。
【００７３】
〔しきい値関数演算〕
フローティングゲートＦＧの初期化を行なっていない期間には、しきい関数演算を行うことが可能である。この場合、状態制御端子ctl1がグランド電位になっているため、パストランジスタswn1は遮断状態であり、フローティングゲートＦＧは他の入力端子と電気的に高インピーダンスで接続されているので、過渡的には電気的浮遊状態とみなせる。
【００７４】
また、状態制御端子ctl1がグランド電位であるため、しきい値調整用入力端子input3ａは電源電位になり、しきい値調整容量Ｃv2には電荷が誘起される。また、トランスミッションゲートtgin２が導通状態であり、ラッチ回路ＬＡＴに保持されている構成データがしきい値選択用入力端子input2ａに供給される。また、入力変数用端子input1〔１〕〜input1〔４〕に変数を入力することによって（ステップ３１１）、各容量Ｃ1 〜Ｃ4 に電荷が誘起される。
【００７５】
この誘起電荷によって、フローティングゲートＦＧ上にも逆極性の電荷が誘起される。フローティングゲートＦＧにおいて電荷量が保存されるため、電荷の再分配が起こり、フローティングゲートＦＧの電位が決まる。この電位がインバータ回路ＩＶの入力となり、しきい処理がなされる（ステップ３１２）。
【００７６】
〔図１の具体的な回路例Ｂ：構成〕
図４は図１の可変しきい値しきい素子回路１００の具体的な別の回路例（回路例Ｂ）を示す図である。この可変しきい値しきい素子回路４００では、図１のメモリ回路ＭＥＭをラッチ回路ＬＡＴに、スイッチＳＷ１をＮＭＯＳ型のパストランジスタswn1に、スイッチＳＷ３をＮＭＯＳ型のパストランジスタswn2に置き換えている。また、スイッチＳＷ２，ＳＷ４〜ＳＷ６に代えて、トランスミッションゲートtgin２やインバータinv1，ＰＭＯＳ型のパストランジスタswp1，遅延回路ＤＥＬＹなどを設けている。なお、この回路例Ｂでは、フローティングゲートＦＧをパストランジスタswn1を介してグランド電位に接続しているが、電源電位に接続するようにしてもよい。また、フローティングゲートＦＧの接続先は固定電位であればよく、グランド電位や電源電位に限られるものでもない。
【００７７】
また、状態制御端子ctl1を設け、この状態制御端子ctl1からの制御信号をパストランジスタswn1へ与えるようにしている。また、状態制御端子ctl1からの制御信号を遅延回路ＤＥＬＹを介し、トランスミッションゲートtgin２やインバータinv1，パストランジスタswp1へ与えるようにしている。また、状態制御端子ctl2を設け、この状態制御端子ctl2からの制御信号をパストランジスタswn2へ与えるようにしている。
【００７８】
なお、この可変しきい値しきい素子回路４００におけるしきい値処理回路ＩＮＶにおいても、図２に示した可変しきい値しきい素子回路２００と同様、入力変数用端子input1〔１〕〜input1〔４〕とフローティングゲートＦＧとの間の容量Ｃ1 〜Ｃ4 の値およびしきい値選択容量Ｃv1を全て等しくＣとし、しきい値調整容量Ｃv2の値を２Ｃとしている。また、しきい値処理回路ＩＮＶ中のインバータ回路ＩＶの論理しきい値も「１／２」としている。
【００７９】
回路４００と回路２００との相違点は、回路４００中のトランスミッションゲートtgin２の制御信号が回路２００中のトランスミッションゲートtgin２の制御信号の論理反転である点と、回路２００ではしきい値選択用入力端子input2ａに接続されるスイッチとしてグランド電位に接続されるＮＭＯＳ型のパストランジスタswn3を用いているのに対し、回路４００ではしきい値選択用入力端子input2ａに接続されるスイッチとして電源電位に接続されるＰＭＯＳ型のパストランジスタswp1を用いている点との２点である。
【００８０】
この回路構成は、文献５（特開２００１−１９６９２０号公報（特願２０００−５９４２号））に開示されている回路と類似であり、ラッチ回路ＬＡＴを含む点において異なる。本実施の形態の可変しきい値しきい素子回路４００では、関数演算期間にしきい値選択用入力端子input2ａに常に電源電位を与え、フローティングゲートＦＧの初期化時にラッチ回路ＬＡＴに保持されている構成データをしきい値選択用入力端子input2ａに与える。この動作により、フローティングゲート初期化期間よりも時間的に長い関数演算期間を構成データの書き換えに用いることが可能になる。
【００８１】
図５は、図４に示した可変しきい値しきい素子回路４００中の回路部４０１を置換する回路部４０１’を示す図である。回路部４０１’は、トランスミッションゲートtgin２とパストランジスタswp1とを制御する制御信号が、他の信号端子とは独立した状態制御端子ctl3から与えられる点において、回路部４０１とは異なる。
【００８２】
回路部４０１では、トランスミッションゲートtgin２及びパストランジスタswp1が、パストランジスタswn1を制御する信号と同じ信号源である状態制御端子ctl1からの制御信号によって同期して制御されていた。回路部４０１’において、トランスミッションゲートtgin２とパストランジスタswp1とは、フローティングゲートＦＧの初期化を制御するパストランジスタswn1とは非同期で制御されるため、関数演算期間であってもトランスミッションゲートtgin２を導通させ、パストランジスタswp1を遮断することが可能である。これは、しきい値選択用端子input2から入力される信号、または、ラッチ回路ＬＡＴに保持されている構成データのいずれか一方を入力変数として処理できることを意味している。
【００８３】
〔回路例Ｂの動作〕
図４に示された可変しきい値しきい素子回路４００の動作上の主な特徴は、ラッチ回路ＬＡＴに保持されているしきい値を選択する構成データがフローティングゲートＦＧを初期化する際に用いられ、しきい関数演算中にはしきい値選択用入力端子input2ａには電源電位が供給されること、しきい値を選択する構成データの書き換えが関数演算期間においてのみ可能であること、フローティングゲートＦＧの初期化およびしきい値の再設定（しきい値のリフレッシュ）が定期的に行われることである。
【００８４】
以下、図６に示すフローチャートを参照しながら、図４に示された可変しきい値しきい素子回路４００の特徴的な動作について説明する。可変しきい値しきい素子回路４００の動作は、フローティングゲートＦＧの初期化と、しきい値を選択するための構成データの書き換えと、しきい関数演算との３つの操作に分類できる。
【００８５】
まず、状態制御端子ctl1にグランド電位を与えることによって、パストランジスタswn1を遮断状態にする（ステップ６０１）。この場合、遅延回路ＤＥＬＹの出力電位は所定時間遅れて論理値「０」となり、これによりトランスミッションゲートtgin２がオフとされ、パストランジスタswp1がオンとされ、しきい値選択用入力端子input2ａが論理値「１」となる。また、インバータinv1の出力が論理値「１」となることから、しきい値調整用入力端子input3ａも論理値「１」となる。
【００８６】
この状態は、図１示された回路において、スイッチＳＷ１がオフ、スイッチＳＷ２，ＳＷ６がオフ、スイッチＳＷ４，ＳＷ５がオンとされた状態に対応する。但し、この場合、図１の回路の端子Ｐ１は電源電位に接続され、端子Ｐ２はグランド電位に接続され、しきい値調整用端子input3には論理値「１」が与えられているものとする。以下、図４の回路と図１の回路とを対応させる場合、端子Ｐ１，Ｐ２，input3はこの状態に設定されているものとする。
【００８７】
〔フローティングゲートの初期化およびしきい値のリフレッシュ〕
リフレッシュ回路ＲＥＦは、所定の時間間隔で、または、しきい値変動（フローティングゲートＦＧ中の電荷量変動または、フローティングゲートＦＧの電位変動）を検知するセンサ回路（図示せず）と連動し定期的に、リフレッシュ機能を実行する。このリフレッシュ機能の実行により、フローティングゲートＦＧに蓄積されている電荷の初期化と、ラッチ回路ＬＡＴに保持されている構成データを用いてのしきい値の再設定が行われる。
【００８８】
リフレッシュ回路ＲＥＦは、リフレッシュ機能の実行命令が出されると（ステップ６０３のＹＥＳ）、状態制御端子ctl1に電源電位を印加する。また、入力変数用端子input1〔１〕〜input1〔４〕へグランド電位を印加する（ステップ６０４）。
【００８９】
状態制御端子ctl1への制御信号が論理値「１」とされると、パストランジスタswn1がオンとされ、フローティングゲートＦＧがグランド電位とされる。同時に、状態制御端子ctl1からの制御信号は、所定時間遅れて遅延回路ＤＥＬＹから出力される。これにより、トランスミッションゲートtgin２がオンとされ、パストランジスタswp1がオフとされ、しきい値選択用入力端子input2ａにラッチ回路ＬＡＴに保持されている構成データが供給される。また、遅延回路ＤＥＬＹからの論理値「１」の出力電位がインバータ回路inv1によって反転され、しきい値調整用入力端子input3ａに論理値「０」が供給される。この状態は、図１に示された回路において、スイッチＳＷ１がオン、スイッチＳＷ２，ＳＷ６がオン、スイッチＳＷ４，ＳＷ５がオフとされた状態に対応する。
【００９０】
この状態において、入力変数用端子input1〔１〕〜input1〔４〕にはグランド電位が設定されており、しきい値選択用入力端子input2ａの電位はラッチ回路ＬＡＴに保持されている構成データに応じた電位となり、しきい値調整用入力端子input3ａの電位はグランド電位になり、同時にフローティングゲートＦＧの電位もグランド電位になる。これにより、フローティングゲートＦＧに蓄積されている電荷の初期化としきい値の再設定が行われる。
【００９１】
本回路４００は、図２に示した回路２００とはしきい値選択がなされる期間において異なり、回路２００が関数演算期間にしきい値選択用入力端子input2ａに与えられている電位によってしきい値選択がなされるのに対して、回路４００では、フローティングゲート初期化時にしきい値選択用入力端子input2ａに与えられる電位によって選択される。
【００９２】
選択可能な２つのしきい値の中で、入力状態数「０＜Ｚ＜１」にあるしきい値を選択する場合は、ラッチ回路ＬＡＴが保持するデータを論理値「０」、即ち、グランド電位とし、「１＜Ｚ＜２」にあるしきい値を選択する場合は、ラッチ回路ＬＡＴが保持するデータを論理値「１」、即ち、電源電位にする。フローティングゲートＦＧの電位が安定するだけの時間の後、リフレッシュ回路ＲＥＦは、状態制御端子ctl1をグランド電位にする（ステップ６０５）。
【００９３】
これにより、パストランジスタswn1がオフとされ、フローティングゲートＦＧがグランド電位から切り離される。また、遅延回路ＤＥＬＹの出力電位が所定時間遅れて論理値「０」となり、トランスミッションゲートtgin２がオフ、パストランジスタswp1がオンとされ、しきい値選択用入力端子input2ａの電位が電源電位すなわち論理値「１」とされる。また、インバータinv1の出力が論理値「１」となることから、しきい値調整用入力端子input3ａのレベルも論理値「１」とされる。
【００９４】
これにより、フローティングゲートＦＧに蓄積されている電荷の初期化とラッチ回路ＬＡＴに保持されている構成データを用いてのしきい値の再設定が終了する。この状態は、図１に示された回路において、スイッチＳＷ１がオフ、スイッチＳＷ２，ＳＷ６がオフ、スイッチＳＷ４，ＳＷ５がオンの状態に対応する。
【００９５】
〔しきい値関数演算〕
フローティングゲートＦＧの初期化を行なっていない期間には、しきい関数演算を行うことが可能である。この場合、状態制御端子ctl1がグランド電位になっているため、パストランジスタswn1は遮断状態であり、フローティングゲートＦＧは他の入力端子と電気的に高インピーダンスで接続されているので、過渡的には電気的浮遊状態とみなせる。
【００９６】
また、状態制御端子ctl1がグランド電位であるため、しきい値調整用入力端子input3ａは電源電位になり、しきい値調整容量Ｃv2には電荷が誘起される。また、トランスミッションゲートtgin２が遮断状態であり、パストランジスタswp1が導通状態であり、電源電位がしきい値選択用入力端子input2ａに供給される。また、入力変数用端子input1〔１〕〜input1〔４〕に変数を入力することによって（ステップ６１１）、各容量Ｃ1 〜Ｃ4 に電荷が誘起される。
【００９７】
この誘起電荷によって、フローティングゲートＦＧ上にも逆極性の電荷が誘起される。フローティングゲートＦＧにおいて電荷量が保存されるため、電荷の再分配が起こり、フローティングゲートＦＧの電位が決まる。この電位がインバータ回路ＩＶの入力となり、しきい処理がなされる（ステップ６１２）。
【００９８】
〔構成データの書き換え〕
この回路４００においては、しきい値演算を行っている期間に、しきい値を選択する構成データの書き換えを行うことが可能である。しきい値演算を行っている期間中には、トランスミッションゲートtgin２が遮断状態にあり、ラッチ回路ＬＡＴの構成データはしきい値処理回路ＩＮＶには供給されておらず、ラッチ回路ＬＡＴの状態変化はしきい値処理回路ＩＮＶに影響しない。
【００９９】
状態制御端子ctl2の電位を電源電位にし（ステップ６０６）、パストランジスタswn2を導通状態にし、しきい値選択用端子input2からデータを入力することによって（ステップ６０７）、ラッチ回路ＬＡＴに保持される構成データを書き換えることができる。
【０１００】
選択可能な２つのしきい値の中で、入力状態数「０＜Ｚ＜１」にあるしきい値を選択する場合は、しきい値選択用端子input2から入力するデータを論理値「０」、即ち、グランド電位とし、「１＜Ｚ＜２」にあるしきい値を選択する場合は、しきい値選択用端子input2から入力するデータを論理値「１」、即ち、電源電位にする。このデータの与え方は、回路２００の場合の論理反転である。これは、フローティングゲート初期化時に与えた電位と関数演算時に与えられる電位との差分が実際の電位として加わるためである。データ入力が終了した後に（ステップ６０８のＹＥＳ）、状態制御端子ctl2をグランド電位にし（ステップ６０９）、パストランジスタswn2を遮断する。これによって構成データの書き換えが終了する。
【０１０１】
〔実施の形態２：リフレッシュ機能を備えた可変しきい値しきい素子回路（その２）〕
図７はこの発明の他の実施の形態を示すリフレッシュ機能を備えたｋ入力変数の可変しきい値しきい素子回路の回路構成を示す図である。同図において、図１５と同一符号は同一或いは同等構成要素を示し、その説明は省略する。
【０１０２】
この可変しきい値しきい素子回路７００は、主な構成要素として、しきい値処理回路ＩＮＶと、メモリ回路ＭＥＭと、スイッチＳＷ１，ＳＷ３，ＳＷ７，ＳＷ８と、リフレッシュ回路ＲＥＦとを有している。図１に示した回路１００とは、しきい値処理回路ＩＮＶの出力端子ＯＵＴとフローティングゲートＦＧとの間にスイッチＳＷ１が設けられている点において、大きく異なる。なお、しきい値処理回路ＩＮＶを用いた可変しきい値生成方法は、実施の形態１で引用した文献４に開示されている方法とは異なっている。
【０１０３】
まず初めに、回路７００の特徴的な構成を述べる。スイッチＳＷ１によって、しきい値処理回路ＩＮＶのフローティングゲートＦＧと出力端子ＯＵＴとの導通、遮断の接続状態を制御することができる。
また、しきい値選択用入力端子input2ａは、スイッチＳＷ８の切り換えによって、電源電位とメモリ回路ＭＥＭの出力端子Ｐout とのいずれか一方に接続される。即ち、スイッチＳＷ８は、しきい値選択用入力端子input2ａの値をメモリ回路ＭＥｍに保持されている構成データと論理値「１」との間で切り替える役割を果たす。
また、しきい値調整用入力端子input3ａは、スイッチＳＷ７の切り換えによって、グランド電位と電源電位とのいずれか一方に接続される。即ち、スイッチＳＷ７は、しきい値調整用入力端子input3ａの値を論理値「０」と論理値「１」との間で切り替える役割を果たす。
【０１０４】
また、メモリ回路ＭＥＭの入力端子Ｐinとしきい値選択用端子input2との間にスイッチＳＷ３が設けられている。これによって、メモリ回路ＭＥＭに保存されている値は、端子input2の値からは独立になる。メモリ回路ＭＥＭによって、しきい値を設定するための電位（構成データ）を保持することが可能になる。加えて、後述する手続きを周期的に繰り返すことにより、フローティングゲートＦＧ上の電荷量の変動に伴うしきい値の変動を補正することが可能になる。
【０１０５】
次に、しきい値処理回路ＩＮＶにおける可変しきい値生成方法を簡単に説明する。実現する関数は、実施の形態１の場合と同様に任意の対称関数とする。任意の対称関数を実現する回路は、しきい値処理回路ＩＮＶの入力変数に対する重みを変更することによって、任意の論理関数を実現する回路に容易に拡張される。また、実現可能な２つのしきい値の中からいずれか一方を選択できるとし、前記２つのしきい値は、実施の形態１の場合と同様に、ある入力状態数とその前後の入力状態数との間にあるとする（以降、ある入力状態数の前後にある、と略す）。
【０１０６】
この２つのしきい値候補の入力状態数上の距離も重みの大きさを変更することによって容易に調整できる。実施の形態１と同様に、ｋ個の入力変数用端子input1〔１〕〜input1〔ｋ〕とフローティングゲートＦＧとの間の容量Ｃ1 〜Ｃk の値を全て等しくＣとし、しきい値選択用入力端子input2ａとフローティングゲートＦＧとの間の容量（しきい値選択容量）Ｃv1の値を容量Ｃ1 〜Ｃk の値と等しくＣとし、しきい値調整用入力端子input3ａとフローティングゲートＦＧとの間の容量（しきい値調整容量）Ｃv2の値を０．５Ｃとする。但し、容量Ｃv2の値は、０＜Ｃv2＜Ｃであれば良いが、動作マージンを確保するため、０．５Ｃとしている。
【０１０７】
図８はしきい値を設定する際の操作手順を示すフローチャートである。なお、ここではその原理を説明するために、メモリ回路ＭＥＭが設けられておらず、スイッチＳＷ８にはしきい値選択用端子input2がダイレクトに接続されているものとする。
【０１０８】
今、入力状態数ｊと「ｊ＋１」との間「ｊ＋１／２」にしきい値を設定すると仮定する。第１に、スイッチＳＷ１を導通状態にする。スイッチＳＷ８によりしきい値選択用端子input2としきい値選択用入力端子input2ａを接続し、スイッチＳＷ７により電源電位にしきい値調整用入力端子input3ａを接続し、入力状態数をｊにする（ステップ８０２）。
【０１０９】
第２に、しきい値選択用端子input2に論理値「０」であるグランド電位を印加する（ステップ８０４）。第３に、スイッチＳＷ１を遮断する（ステップ８０５）。これによって、前記の電位状態の時にフローティングゲートＦＧが電源電位とグランド電位との「１／２」電位になる。
【０１１０】
第４に、所定の時間の後、スイッチＳＷ８によって電源電位にしきい値選択用入力端子input2ａを接続し、スイッチＳＷ７によってしきい値調整用入力端子input3ａをグランド電位に接続する（ステップ８０７）。以上の手続きによって、しきい値を「ｊ＋１／２」に設定することができる。
【０１１１】
一方、しきい値を「ｊ−１／２」に設定する場合は、前記第２の手続きにおいて、しきい値選択用端子input2に電源電位を印加する（ステップ８０５）。また、前記第１の手続きにおいて（ステップ８０２）、入力状態数ｊを「０≦Ｚ≦ｋ」のある値に設定することによって、任意の入力状態数の前後にしきい値を設定することが可能になる。これにより可変しきい値しきい素子が実現できる。
【０１１２】
〔図７の具体的な回路例Ｃ：構成〕
図９は図７の可変しきい値しきい素子回路７００の具体的な回路例（回路例Ｃ）を示す図である。この可変しきい値しきい素子回路９００では、図７のメモリ回路ＭＥＭがラッチ回路ＬＡＴに、スイッチＳＷ１がトランスミッションゲートtg１に、スイッチＳＷ３がＮＭＯＳ型のパストランジスタswn2に置き換えられている。しきい値処理回路ＩＮＶの入力端子とフローティングゲートＦＧとの間の容量の値は図７の回路７００で用いられる容量の値と同じである。また、簡単化のために入力変数の数は４つとしてある。
【０１１３】
トランスミッションゲートtg１は状態制御端子ctl1の電位とctl1に接続されるインバータinv3の出力電位との２つの電位によって制御される。回路７００中のスイッチＳＷ７は回路９００中には存在せず、状態制御端子ctl1の値が代替として使用される。また、状態制御端子ctl1の論理値が「１」から「０」に変化する際、トランスミッションゲートtg１が完全に遮断状態になるまでしきい値処理回路ＩＮＶに対する入力の値が変化するのを防ぐために、遅延回路ＤＥＬＹを設けてある。回路７００中のスイッチＳＷ８は、トランスミッションゲートtgin２とＰＭＯＳ型のパストランジスタswp1によって置換されている。
【０１１４】
トランスミッションゲートtgin２は遅延回路ＤＥＬＹの出力電位とその出力電位をインバータinv1によって論理反転した電位によって制御され、パストランジスタswp1は遅延回路ＤＥＬＹの出力電位によって制御される。また、ラッチ回路ＬＡＴの入力端子Ｐinとしきい値選択用端子input2との間のスイッチは、ＮＭＯＳ型のパストランジスタswn2によって実現されている。パストランジスタswn2は、状態制御端子ctl2の電位によって制御される。状態制御端子ctl2の状態と状態制御端子ctl1の状態とは同期していても良いが、非同期にすることによって回路９００の持つ機能を向上することができる。
【０１１５】
更に、回路９００では状態制御端子ctl1の値と遅延回路ＤＥＬＹの出力値とはある遅延時間を持った同期信号であるが、遅延回路ＤＥＬＹを削除し、この遅延回路ＤＥＬＹの出力端子Ｐａを独立した端子とすることによっても同じ機能を果たすことができる。また、状態制御端子ctl1と独立させた端子Ｐａを非同期で操作することによって、フローティングゲートＦＧが電気的浮遊状態である時に、トランスミッションゲートtgin２を導通状態にすることが可能になり、新しい機能が追加される。
【０１１６】
〔回路例Ｃの動作〕
図９に示された可変しきい値しきい素子回路９００の動作上の主な特徴は、図６に示した可変しきい値しきい素子回路６００と同様であり、ラッチ回路ＬＡＴに保持されているしきい値を選択する構成データがフローティングゲートＦＧを初期化する際に用いられ、しきい関数演算中にはしきい値選択用入力端子input2ａには電源電位が供給されること、しきい値を選択する構成データの書き換えが関数演算期間においてのみ可能であること、フローティングゲートＦＧの初期化およびしきい値の再設定（しきい値のリフレッシュ）が定期的に行われることである。
【０１１７】
以下、図１０に示すフローチャートを参照しながら、図９に示された可変しきい値しきい素子回路９００の特徴的な動作について説明する。可変しきい値しきい素子回路９００の動作は、フローティングゲートＦＧの初期化と、しきい値を選択するための構成データの書き換えと、しきい関数演算との３つの操作に分類できる。
【０１１８】
まず、状態制御端子ctl1にグランド電位を与えることによって、トランスミッションゲートtg１を遮断状態にする（ステップ１０１）。この場合、遅延回路ＤＥＬＹの出力電位は所定時間遅れて論理値「０」となり、これによりトランスミッションゲートtgin２がオフとされ、パストランジスタswp1がオンとされ、しきい値選択用入力端子input2ａが論理値「１」となる。また、遅延回路ＤＥＬＹの出力が論理値「０」となることから、しきい値調整用入力端子input3ａも論理値「０」となる。この状態は、図７に示された回路において、スイッチＳＷ１がオフ、スイッチＳＷ７がグランド電位側、スイッチＳＷ８が電源電位側とされた状態に対応する。
【０１１９】
〔フローティングゲートの初期化およびしきい値のリフレッシュ〕
リフレッシュ回路ＲＥＦは、所定の時間間隔で、または、しきい値変動（フローティングゲートＦＧ中の電荷量変動または、フローティングゲートＦＧの電位変動）を検知するセンサ回路（図示せず）と連動し定期的に、リフレッシュ機能を実行する。このリフレッシュ機能の実行により、フローティングゲートＦＧに蓄積されている電荷の初期化と、ラッチ回路ＬＡＴに保持されている構成データを用いてのしきい値の再設定が行われる。
【０１２０】
リフレッシュ回路ＲＥＦは、リフレッシュ機能の実行命令が出されると（ステップ１０３のＹＥＳ）、状態制御端子ctl1に電源電位を印加するまた、入力変数用端子input1〔１〕〜input1〔４〕のｊ個の端子に電源電圧を印加する（ステップ１０４）。すなわち、ｊ個の入力変数を論理値「１」とし、入力状態数をｊに設定する。
【０１２１】
状態制御端子ctl1への制御信号が論理値「１」とされると、トランスミッションゲートtg１がオンとされ、フローティングゲートＦＧがグランド電位とされる。同時に、状態制御端子ctl1からの制御信号は、遅延回路ＤＥＬＹより所定時間遅れて出力される。これにより、トランスミッションゲートtgin２がオンとされ、パストランジスタswp1がオフとされ、ラッチ回路ＬＡＴの出力端子Ｐｏｕｔとしきい値選択用入力端子input2ａとの間が導通状態とされ、ラッチ回路ＬＡＴに保持されている構成データがしきい値処理回路ＩＮＶへ供給される。また、遅延回路ＤＥＬＹを介する状態制御端子ctl1からの制御信号により、しきい値調整用入力端子input3ａが論理値「１」とされる。この状態は、図７に示された回路において、スイッチＳＷ１がオン、スイッチＳＷ７が電源電位側、スイッチＳＷ８がメモリ回路ＭＥＭの出力端子Ｐout とされた状態に対応する。
【０１２２】
この状態において、入力変数用端子input1〔１〕〜input1〔４〕にはｊ個の端子に電源電位が設定されており、しきい値選択用入力端子input2ａの電位はラッチ回路ＬＡＴに保持されている構成データに応じた電位となり、しきい値調整用入力端子input3ａの電位は電源電位となり、ローティングゲートＦＧの電位は「１／２」電位となる。これにより、フローティングゲートＦＧに蓄積されている電荷の初期化としきい値の再設定が行われる。
【０１２３】
フローティングゲートＦＧの電位が安定するだけの時間の後、リフレッシュ回路ＲＥＦは、状態制御端子ctl1をグランド電位にする（ステップ１０５）。これにより、トランスミッションゲートtg１がオフとされ、フローティングゲートＦＧが出力端子から切り離される。また、遅延回路ＤＥＬＹの出力電位が所定時間遅れて論理値「０」となり、トランスミッションゲートtgin２がオフ、パストランジスタswp1がオンとされ、しきい値選択用入力端子input2ａの電位が電源電位すなわち論理値「１」とされる。また、しきい値調整用入力端子input3ａのレベルが論理値「０」とされる。これにより、フローティングゲートＦＧに蓄積されている電荷の初期化と、ラッチ回路ＬＡＴに保持されている構成データを用いてのしきい値の再設定が終了する。この状態は、図７に示された回路において、スイッチＳＷ１がオフ、スイッチＳＷ７がグランド電位側、スイッチＳＷ８が電源電位側に接続された状態に対応する。
【０１２４】
〔しきい値関数演算〕
フローティングゲートＦＧの初期化を行なっていない期間には、しきい関数演算を行うことが可能である。この場合、状態制御端子ctl1がグランド電位になっているため、トランスミッションゲートｔｇ１は遮断状態であり、フローティングゲートＦＧは他の入力端子と電気的に高インピーダンスで接続されているので、過渡的には電気的浮遊状態とみなせる。
【０１２５】
また、状態制御端子ctl1がグランド電位であるため、しきい値調整用入力端子input3ａはグランド電位になる。また、トランスミッションゲートtgin２が遮断状態であり、パストランジスタswp1が導通状態であり、電源電位がしきい値選択用入力端子input2ａに供給される。
【０１２６】
この状態で、入力変数用端子input1〔１〕〜input1〔４〕に変数を入力することによって（ステップ１１１）、各容量Ｃ1 〜Ｃ4 に電荷が誘起され、この誘起電荷によってフローティングゲートＦＧ上に逆極性の電荷が誘起され、フローティングゲートＦＧにおいて電荷量が保存されるため、電荷の再分配が起こり、フローティングゲートＦＧの電位が決まる。この電位がインバータ回路ＩＶの入力となり、しきい処理がなされる。
【０１２７】
〔構成データの書き換え〕
しきい値演算を行っている期間には、しきい値を選択する構成データの書き換えを行うことが可能である。しきい値演算を行っている期間中には、トランスミッションゲートtgin２が遮断状態にあり、ラッチ回路ＬＡＴの構成データはしきい値処理回路ＩＮＶには供給されておらず、ラッチ回路ＬＡＴの状態変化はしきい値処理回路ＩＮＶに影響しない。
【０１２８】
状態制御端子ctl2の電位を電源電位にし（ステップ１０６）、パストランジスタswn2を導通状態にし、しきい値選択用端子input2からデータを入力することによって（ステップ１０７）、ラッチ回路ＬＡＴに保持される構成データを書き換えることができる。データ入力が終了した後に（ステップ１０８のＹＥＳ）、状態制御端子ctl2をグランド電位にし（ステップ１０９）、パストランジスタswn2を遮断する。これによって構成データの書き換えが終了する。
【０１２９】
［具体的な回路例Ｃにおけるトランスミッションゲートの適用制約条件と代替回路］
回路７００のスイッチＳＷ１に対してトランスミッションゲートを適用するにはある条件がある。まずこの条件を示し、次に条件を満たさない場合の代替回路を示す。
【０１３０】
注意すべき点は、フローティングゲート電位と電源電位またはグランド電位との間の大小関係である。トランスミッションゲートのウェル（または基板）が基板バイアス回路に接続されており、トランスミッションゲートのＮＭＯＳトランジスタのＰ型ウェルが電源電位よりも適度な高電位されており、または、トランスミッションゲートtg１のＰＭＯＳトランジスタのＮ型ウェルがグランド電位よりも適度な低電位に設定されている場合は以下の考察から除外される。
【０１３１】
フローティングゲートの電位が電源電位とグランド電位に対して大きいまたは小さい場合、トランスミッションゲートのＰＭＯＳまたはＮＭＯＳトランジスタの少なくともいずれか一方のウェルとフローティングゲートとがＰＮ接合順方向バイアスになり、リーク電流が流れるという問題が起こる。この問題が発生する条件を導く。
【０１３２】
今、回路９００と同じ回路構成であり、入力変数の数が４個からｋ個に一般化された回路を考える。この回路のフローティングゲートの初期化実行時において、入力状態ｊの前後「ｊ±１／２」にしきい値を設定し、しきい関数演算実行時に入力状態数がＺであると仮定する。また、フローティングゲートとＭＯＳトランジスタとの間の容量値は一括してＣmos で表され、グランド電位に接続されており、入力端子とフローティングゲートとの間の容量値Ｃより小さいと仮定する。
【０１３３】
電源電位をＶdd、フローティングゲート電位をＶfg、フローティングゲート初期化時のフローティングゲートの電荷量をＱ0 、しきい関数演算時のフローティングゲートの電荷量をＱ1 とする。この時、次式が成り立つ。
【０１３４】
【数１】
0003662887.tif 000002
【０１３５】
電荷保存（Ｑ0 ＝Ｑ1 ）より、フローティングゲート電位は次のように表される。
【０１３６】
【数２】
0003662887.tif 000003
【０１３７】
従って、Ｖfg＞ＶddとＶfg＜０の各々の場合について以下の不等式が成り立つ。
【０１３８】
【数３】
0003662887.tif 000004
【０１３９】
なお、上述した式（１）〜（５）の「プラス・マイナス（±）」，「マイナス・プラス」の符号は、設定されるしきい値「ｊ±１／２」の符号にそれぞれ対応する。
【０１４０】
不等式（４）が成立する条件の場合は、トランスミッションゲート中のフローティングゲートに接続されているＰＭＯＳトランジスタのソース／ドレインとウェルとの間のＰＮ接合が順方向バイアスになり、ＰＮ接合電流が流れフローティングゲートＦＧの電荷量は保持されなくなり、しきい値は変化する。
【０１４１】
従って、不等式（４）の条件が成り立つ場合は、トランスミッションゲートではなく、ＮＭＯＳパストランジスタを用いる。一方、不等式（５）が成立する場合は、トランスミッションゲート中のＮＭＯＳトランジスタのＰＮ接合が順方向バイアスになるため、ＰＭＯＳパストランジスタを用いる。例えば、ｊ＝０でありしきい値を±（１／２）に設定する場合、Ｚは演算によってはＺ＝ｋとなることがあるため、ｋ＞３の回路においてはＮＭＯＳパストランジスタを用いるべきである。ｋが固定されている場合は、大雑把な目安として、しきい値設定時の入力状態数と演算時の入力状態数の差の絶対値が「ｋ／２」よりも大きくなる可能性のある回路はＰ型またはＮ型のいずれか一方のパストランジスタを使用するべきである。
【０１４２】
〔実施の形態３：関数機能再構成可能集積回路〕
実施の形態３では、実施の形態１と実施の形態２で示した可変しきい値しきい素子回路を構成要素とする関数機能際構成可能集積回路の回路構成と関数機能を実現する操作手順とについて説明する。実施の形態１と実施の形態２とでは、異なる回路構成と異なるしきい値設定方法とを持つ可変しきい値しきい素子回路を示したが、実施の形態３ではそれらの代表として、実施の形態２で示した具体的な回路例Ｃの構成要素とした場合についてのみ述べる。他の可変しきい値しきい素子回路についても同様の方法または容易に類推可能な方法によって、関数機能再構成可能集積回路は構成され、操作される。
【０１４３】
〔回路構成〕
図１１は、ｋ入力変数の関数機能再構成可能集積回路の構成図である。この回路１１００は、２段論理回路であり、１段目に実施の形態２で示した可変しきい値しきい素子回路ＦＴＥ〔１〕〜ＦＴＥ〔ｎ〕を、２段目に実施の形態２で示した可変しきい値しきい素子回路と類似の可変しきい値しきい素子回路ＳＴＥを設けている。なお、この例では、ｎ＝ｋ＋１とされている。すなわち、１段目にｋ＋１個のＦＴＥが用いられている。なお、この例ではＦＴＥ〔１〕〜ＦＴＥ〔ｎ〕を全て実施の形態２で示した可変しきい値しきい素子回路としたが、実施の形態１で示した可変しきい値しきい素子回路を混ぜてもよい。また、ＦＴＥ〔１〕〜ＦＴＥ〔ｎ〕の全てに本発明の可変しきい値しきい素子回路を用いなくてもよく、ＦＴＥ〔１〕〜ＦＴＥ〔ｎ〕の一部に本発明の可変しきい値しきい素子回路を用いるようにしてもよい。
【０１４４】
更に、ＦＴＥ〔１〕〜ＦＴＥ〔ｎ〕の後段にバッファ回路ＢＦ〔１〕〜ＢＦ〔ｎ〕を設け、ＳＴＥの後段にバッファ回路ＢＦ〔Ｓ〕を設け、出力電位の増幅と波形整形とを行うようにしている。また、図９の回路９００中のパストランジスタswn2はトランスミッションゲートtgi２1〜tgi２nに置換し、入力変数用端子input1〔１〕〜input1〔ｋ〕をＳＴＥのフローティングゲートＦＧ〔Ｓ〕に遅延制御回路ＤＥＬ〔１〕〜ＤＥＬ〔ｋ〕を介して容量結合している。
【０１４５】
ＦＴＥ〔１〕〜ＦＴＥ〔ｎ〕のしきい値は、「ｋ＋１」個の入力状態数の中から重なることなく１対１対応する１つの入力状態数ｊの前後の２つの値、即ち、「ｊ−１」とｊとの間、ｊと「ｊ＋１」との間の２つの値のいずれか一方を選択できるように設定する。
【０１４６】
例として、ＦＴＥ〔１〕、ＦＥＥ〔２〕、．．．ＦＴＥ〔ｎ〕の順に入力状態数「０」の前後、入力状態数「１」の前後、．．．、入力状態数「ｋ」の前後に設定する。以降、前記設定がなされているとする。ＳＴＥの基本的回路構成はＦＴＥと同じであるが、ＦＴＥに入力される信号の他にＦＴＥからの出力信号も入力されている点が異なる。
【０１４７】
ＳＴＥは入力として、ｋ個の入力変数と、「ｋ＋１」個のＦＴＥの出力値と、容量Ｃv1〔Ｓ〕と容量Ｃv2〔Ｓ〕とに入力されるしきい値制御信号との４種類を持つ。今、容量Ｃv1〔Ｓ〕及び容量Ｃv2〔Ｓ〕を除く、ＳＴＥの入力端子とフローティングゲートＦＧ〔Ｓ〕との間の「２ｋ＋１」個の容量の値を全て等しくＣとし、容量Ｃv1〔Ｓ〕の値をＣとし、容量Ｃv2〔Ｓ〕の値を０．５Ｃとする。
【０１４８】
また、ＳＴＥのフローティングゲートＦＧ〔Ｓ〕と出力端子ＯＵＴ〔Ｓ〕との間にスイッチとしてトランスミッションゲートｔｇ１〔Ｓ〕を用いる。実施の形態２で説明したように、ここでも式（４）、（５）が適用される条件の時は、トランスミッションゲートｔｇ１〔Ｓ〕をパストランジスタに置換する必要がある。しかしながら、ＳＴＥは、しきい値が「ｋ＋１／２」に設定され、しきい値近傍での動作が多いため、ＳＴＥのフローティングゲートＦＧ〔Ｓ〕と出力端子ＯＵＴ〔Ｓ〕との間のスイッチはトランスミッションゲートでも良い。
【０１４９】
このトランスミッションゲートｔｇ１〔Ｓ〕と容量Ｃv1〔Ｓ〕と容量Ｃv2〔Ｓ〕とは実施の形態２の可変しきい値しきい素子回路において示した方法と同様の方法で端子ctl1〔Ｓ〕，ctl3〔Ｓ〕の信号によって制御される。また、ＦＴＥ〔１〕〜ＦＴＥ〔ｎ〕およびＳＴＥの後段に設けられているバッファ回路ＢＦ〔１〕〜ＢＦ〔ｎ〕およびＢＦ〔Ｓ〕は、ＦＴＥ〔１〕〜ＦＴＥ〔ｎ〕およびＳＴＥから出力される電位が中間電位であるために、この電位を電源電位とグランド電位との２値に増幅、波形整形するために設けられている。また、遅延制御回路ＤＥＬ〔１〕〜ＤＥＬ〔ｋ〕は、ＳＴＥに入力される信号の各々の遅延時間が異なるために発生するハザードを回避、抑制するために設けられている。
【０１５０】
〔任意の対称関数を構成する方法〕
図１１の関数機能再構成可能集積回路１１００を用いて、任意のｋ入力変数対称関数を実現するための操作について述べる。まず初めに、ＦＴＥ〔１〕〜ＦＴＥ〔ｎ〕のしきい値の設定を順番に行う。ここでは、ＦＴＥ〔１〕からＦＴＥ〔ｎ〕までの「ｋ＋１」個のしきい素子回路のしきい値を「０±１／２」から「ｋ±１／２」までの順で設定する。
【０１５１】
ＦＴＥのしきい値設定時には入力状態数を用いるため、ＦＴＥのしきい値の設定を同時に行うことはできず、時間軸上に時間区分０、時間区分１、時間区分２、．．．、時間区分「ｋ−１」、時間区分ｋまでの「ｋ＋１」個の時間区分において逐次的に、実施の形態２に記載の方法を用いて行う。
【０１５２】
例えば、対称関数の１つであるｋ入力ＸＯＲ（Exclusive-OR）を実現する場合は以下のように操作する。時間区分０においてしきい値設定されるＦＴＥ〔１〕のしきい値を、input2〔１〕をグランド電位にすることによって、「０±１／２」に設定する。時間区分１においてしきい値設定されるＦＴＥ〔２〕のしきい値を、input2〔２〕を電源電位にすることによって、 「１−１／２」に設定する。
【０１５３】
時間区分２においてしきい値設定されるＦＴＥ〔３〕のしきい値を、input2〔３〕をグランド電位にすることによって、「２＋１／２」に設定する。この操作、即ち、時間区分ｊのｊが奇数の場合はしきい値を「ｊ−１／２」に、偶数の場合はしきい値を「ｊ＋１／２」に設定するという操作を時間区分ｋまで繰り返す。時間区分ｋにおいて、しきい値の設定が終了した後、状態制御端子ctl2の電位をグランド電位にし、input2〔１〕〜input2〔ｎ〕からのＦＴＥ〔１〕〜ＦＴＥ〔ｎ〕への入力を遮断する。
【０１５４】
次に、ＦＴＥ〔１〕〜ＦＴＥ〔ｎ〕への「ｋ＋１」個のしきい値の設定が終了した後、ＳＴＥのしきい値を「ｋ＋１／２」に設定する。第１に、入力状態数をＦＴＥ〔ｎ〕のしきい値を設定した時と同じくｋのままにしておく。次に、状態制御端子ctl1〔Ｓ〕とctl3〔Ｓ〕の電位を電源電位にし、トランスミッションゲートtg１〔Ｓ〕を導通させ、フローティングゲートＦＧ〔Ｓ〕の電位を電源電位の半分の「Ｖdd／２」にし、トランスミッションゲートｔｇ２〔Ｓ〕を導通させ、input2〔ｎ〕から入力されていた電位を容量Ｃv1〔Ｓ〕に与える。
【０１５５】
一般的に、input2〔ｎ〕の電位が論理値「１」であれ、論理値「０」であれ、容量Ｃv1〔Ｓ〕に与えられる電位は、しきい値を「ｋ±１／２」に設定されたＦＴＥ〔ｎ〕の出力電位とは論理反転の電位になる。この操作により、入力状態数ｋの時、ＳＴＥの入力の中で、入力変数用端子inptu1〔１〕〜inptu1〔ｋ〕に接続されているｋ個の容量に与えられる電位は電源電位（論理値「１」）であり、「０＋１／２」のしきい値を持つＦＴＥ〔１〕から昇順にｋ個のＦＴＥの出力値はグランド電位（論理値「０」）であり、「ｋ＋１」番目のＦＴＥ〔ｎ〕の出力値と容量Ｃv1〔Ｓ〕に与えられる論理値のいずれか一方が論理値「１」であり、容量Ｃv2〔Ｓ〕に与えられる論理値が「１」である。
【０１５６】
従って、２（ｋ＋１）個の容量値Ｃの容量の中で、論理値「１」を入力される容量が「ｋ＋１」個、論理値「０」を入力される容量が「ｋ＋１」個、０．５Ｃの容量値の容量に与えられる論理値が「１」である。次に、状態制御端子ctl1〔Ｓ〕をグランド電位にすることによって、ＳＴＥのフローティングゲートＦＧ〔Ｓ〕と出力端子ＯＵＴ〔Ｓ〕との間が遮断される。次に、状態制御端子ctl3〔Ｓ〕をグランド電位にすることによって、トランスミッションゲートｔｇ２〔Ｓ〕が遮断され、ＰＭＯＳパストランジスタswp1〔Ｓ〕が導通し、容量Ｃv1〔Ｓ〕に与えられる電位は電源電位で固定される。この手順によって、ＳＴＥのしきい値を「ｋ＋１／２」に設定することができる。
【０１５７】
これにより、関数機能再構成可能集積回路１１００は、入力状態数が奇数の時は論理値「１」を出力し、偶数の時は論理値「０」を出力することができる。即ち、ＸＯＲを実現できる。
要するに、入力状態数ｊにおいて出力値が論理値「１」である関数を実現する場合は、時間区分ｊにおいて対象となるＦＴＥ〔ｊ＋１〕のしきい値を「ｊ−１／２」に設定するために、端子input2〔ｊ＋１〕の電位を電源電位にする、ことである。以上説明したように、本実施例の回路と方法を用いることにより、任意の対称関数を実現することが可能になる。
【０１５８】
〔任意の論理関数を構成する方法〕
入力変数に対して対称性を持たない非対称関数を必要とする場合がある。ここでは、非対称関数を含む全ての論理関数を実現する方法について述べる。前記の対称関数を実現する関数機能再構成可能集積回路１１００を用いて、（ｋ＋１）≧２m を満たす正の整数ｍにより表される２j-1 個（ｊはｊ≦ｍを満たす正の整数）の端子に対して同じ入力変数を入力することによってｍ入力変数論理関数を実現することができる。
【０１５９】
前記の条件が成り立つ場合、関数機能再構成可能集積回路１１００の入力変数用端子input1の数ｋは、少なくとも２0 ，２1 ，２2 ，・・・，２(m-1) の数の端子を持つｍ個の部分集合からなる。この分類に従い、各部分集合の端子を１つの端子に結合しまとめる。これにより、前記部分集合に属する端子には、ｍ個の変数が入力されることになる。例えば、２(m-1) 個の端子は１つにまとめられ、この端子に入力される変数に対する重みは、２0 個の端子がまとめられた端子の重みの２(m-1) 倍である。この重みづけによって、ｍ個の入力変数が形成する２m 個の入力ベクトルが各々識別可能になる。即ち、入力ベクトルに対する２進数・１０進数変換が行われる。
【０１６０】
前記任意の対称関数を実現する方法と同様の手続きによって、各入力ベクトルに対する出力値に論理値「１」または論理値「０」を選択的に設定することができるため、ｍ入力変数の任意の論理関数を実現できる。ここでは、「端子を１つにする」と表現したが、実際に複数の回路１１００を結合する際に、端子を物理的に結合しても良いし、同じ変数を各端子に入力するという方法でも良い。
【０１６１】
例題として、ｋ＝７の場合を挙げる。条件式を満たす最大のｍであるｍ＝３を選ぶ。回路１１００の入力変数用端子input1〔１〕からinput1〔ｋ〕までを順に、端子「１」、端子「２」、端子「３」、．．．、端子「７」とする。端子「２と」端子「３」とを１つの端子にし、端子「２Ａ」とする。端子「４」，「５」，「６」，「７」を１つの端子として端子「３Ａ」とする。この時、端子「１」とフローティングゲートＦＧ〔Ｓ〕との間の容量値をＣとすると、端子「２Ａ」との間の容量値は２Ｃとなり、端子「３Ａ」との間の容量値は４Ｃとなる。各端子に入力される入力変数をｘ１，ｘ２，ｘ３とすると、ｉ＝１〜３として計算されるＣΣ（２i-1 ・ｘｉ）がしきい素子回路の積和の結果となり、これは、２進１０進変換であり、異なる入力ベクトルを異なる１０進数にマッピングしている。これによって入力ベクトルが識別可能になる。
【０１６２】
〔部分対称関数を構成する方法〕
部分対称関数は、入力変数中のある変数の値と別の変数の値を置換しても関数値が変化しない関数である。全ての入力変数に対して前記の関係が成り立つ場合にその関数は完全対称関数（対称関数）と呼ばれる。前記任意の論理関数を実現した場合と同じ手法を用いて、ある端子Ａと別の端子Ｂとを結合し、端子Ｃとする。端子Ａと端子Ｂとは複数の端子でも良い。この時、端子Ｃに対する重みは明らかに単独の端子の重みとは異なる。このように、入力変数の重みとして複数の値が存在する時、重みの等しい端子に入力される変数に対してのみ、変数値を置換しても関数値は不変である。この場合、重みの等しい端子に入力される変数に対して対称であり、部分対称関数となる。
【０１６３】
〔メモリ回路を構成する方法〕
図１１の関数機能再構成可能集積回路１１００はメモリ回路として機能する。任意の対称関数を実現する場合は、しきい値を安定的に保持するためにラッチ回路を使用していた。回路１１００は見方を変えると、入力状態数をアドレス選択信号として、選択信号に対応するＦＴＥのラッチ回路ＬＡＴに保持されているデータまたはその論理反転を出力していると言える。例えば、入力状態数が０の場合は、しきい値が「０±１／２」に設定されているＦＴＥ〔１〕のラッチ回路ＬＡＴ〔１〕に保持されているデータを出力している。このようにメモリ回路としても使用できる。
【０１６４】
〔配線機能を実現する方法〕
配線機能は、入力値と出力値との論理値が等しい関数機能である。図１１の関数機能再構成可能集積回路１１００の入力変数用端子input1〔１〕〜input1〔ｋ〕のｋ個の端子を１つにする。または、１つの端子とみなせるように、全ての入力変数用端子に同じ入力変数を入力する。これは回路１１００の入力状態数がＺ＝０またはＺ＝ｋのいずれか一方であることを意味する。
【０１６５】
今、回路１１００のＦＴＥ〔１〕〜ＦＴＥ〔ｎ〕のしきい値を任意の対称関数を実現するための方法と同じ方法で設定する。この時、回路１１００のＦＴＥのしきい値をＺ＝ｊの前後に設定するとし、ｊ＝０の前後にしきい値を持つＦＴＥをＦＴＥ〔１〕として、ｊの昇順にＦＴＥ〔２〕、．．．、ｊ＝ｋにＦＴＥ〔ｎ〕を対応させる。このしきい値設定によって、入力状態数０の場合は、ＦＴＥ〔１〕の出力値の論理反転が回路１１００の出力値となり、入力状態数ｋの場合は、ＦＴＥ〔ｎ〕の出力値の論理反転が回路１１００の出力値となる。
【０１６６】
従って、ＦＴＥ〔１〕のしきい値を「０＋１／２」に設定するために、ＦＴＥ〔１〕のフローティングゲートＦＧ〔１〕の初期化時にinput2〔１〕から論理値「０」であるグランド電位を入力し、ＦＴＥ〔ｎ〕のしきい値を「ｋ−１／２」に設定するために、ＦＴＥ〔ｎ〕のフローティングゲートＦＧ〔ｎ〕の初期化時にinput2〔ｎ〕から論理値「１」である電源電位を入力することによって、入力変数が論理値「０」の場合、回路１１００の出力値は論理値「０」になり、入力変数が論理値「１」の場合、回路１１００の出力値は論理値「１」となり、配線機能を達成できる。但し、前記２つのＦＴＥ〔１〕，ＦＴＥ〔ｎ〕以外のＦＴＥのしきい値は「ｊ±１／２」のどちらが選択されていても良い。
【０１６７】
〔リフレッシュ機能〕
実施の形態１と実施の形態２で述べたように、フローティングゲートを他の端子に接続する回路構成の可変しきい値しきい素子回路は、フローティングゲートに電荷を蓄積することによって、一時的に可変しきい値しきい素子回路のしきい値を保持すると同時に、余剰電荷などを除去することが可能である。
【０１６８】
しかしながら、関数機能再構成可能集積回路として利用する場合には、一旦、関数機能を規定した後は次に関数機能を変更するまで、前記関数機能を保持していることが要求される。この要求を満たすために、各可変しきい値しきい素子回路にラッチ回路が設けられた。ここでは、このラッチ回路に保持されているデータによって、しきい処理回路のフローティングゲートに蓄積されている電荷をリフレッシュ（しきい値設定時の状態に回復すること）する手順について、図１１の関数機能再構成可能集積回路１１００を例に取り、述べる。
【０１６９】
現在の回路１１００の状態は関数演算を行っている状態であると仮定する。この時、ＦＴＥ〔１〕〜〔ｎ〕のしきい値処理回路ＩＮＶ〔１〕〜〔ｎ〕のフローティングゲートＦＧ〔１〕〜〔ｎ〕とその出力端子ＯＵＴ〔１〕〜〔ｎ〕との間のスイッチ（パストランジスタまたはトランスミッションゲート）、ＳＴＥのしきい値処理回路ＩＮＶ〔Ｓ〕のフローティングゲートＦＧ〔Ｓ〕とその出力端子ＯＵＴ〔Ｓ〕との間のスイッチ（パストランジスタまたはトランスミッションゲート）は遮断されている。
【０１７０】
また、トランスミッションゲートtgi２1〜tgi２nによって、しきい値選択用端子input2〔１〕〜input2〔ｎ〕とラッチ回路ＬＡＴ〔１〕〜ＬＡＴ〔ｎ〕との間は遮断されており、ＦＴＥ〔１〕〜ＦＴＥ〔ｎ〕のラッチ回路ＬＡＴ〔１〕〜ＬＡＴ〔ｎ〕としきい値処理回路ＩＮＶ〔１〕〜ＩＮＶ〔ｎ〕との間にあるトランスミッションゲートtgin21〜tgin22は遮断され、このトランスミッションゲートtgin21〜tgin22の一方の端子に接続されているＰＭＯＳパストランジスタswp1〔１〕〜swp1〔ｎ〕が導通している。
【０１７１】
まず初めに、関数演算を一時的に中止する。次に、ＦＴＥ〔１〕〜ＦＴＥ〔ｎ〕のしきい値を、任意の対称関数を実現する方法において説明した方法と類似の方法を用いて、順次再設定する。状態制御端子ctl2の電位はグランド電位に固定したままで、ＦＴＥ〔１〕〜〔ｎ〕のラッチ回路ＬＡＴ〔１〕〜〔ｎ〕に保存している構成データを利用する。
【０１７２】
時間区分０において、入力状態数を０にし、状態制御端子ctl1〔１〕を電源電位にし、状態制御端子ctl3〔１〕を電源電位にし、ラッチ回路ＬＡＴ〔１〕の構成データを読み込んでいる時に、フローティングゲートＦＧ〔１〕の電位を（Ｖdd／２）にする。この操作を時間区分ｋまで順次繰り返す。
最後に、ＳＴＥのしきい値の再設定を前記と同様の方法で行う。このＳＴＥのしきい値の再設定後、再び関数演算を開始する。この一連の操作により、フローティングゲートＦＧ〔１〕〜〔ｎ〕およびＦＧ〔Ｓ〕のリフレッシュが完了する。
【０１７３】
以上詳しく説明したように、図１１に示す関数機能再構成可能集積回路１１００は、ＦＴＥ〔１〕〜〔ｎ〕およびＳＴＥのしきい値の安定的な保持がリフレッシュ機能により可能になっており、関数機能として、任意の対称関数、任意の論理関数、部分対称関数、メモリ機能、配線機能などの機能を実現できる。
【０１７４】
【発明の効果】
以上説明したことから明らかなように本発明によれば、リフレッシュ手段によって、第１のスイッチおよび第２のスイッチのオン／オフが制御され、しきい素子のゲート電極に蓄積されている電荷の初期化が行われるとともに、構成データ保持回路に保持されている構成データを用いてのしきい値の再設定（しきい値のリフレッシュ）が行われるものとなり、このしきい値のリフレッシュを所定の時間間隔で行ったり、しきい値の変動が所定値を超えた場合に行うなどすることによって、しきい値を安定的に保持し、経時的誤動作の問題を解消することができる。
【図面の簡単な説明】
【図１】  本発明の一実施の形態（実施の形態１）を示すリフレッシュ機能を備えたｋ入力変数の可変しきい値しきい素子回路の回路構成を示す図である。
【図２】  図１の可変しきい値しきい素子回路の具体的な回路例（回路例Ａ）を示す図である。
【図３】  図２に示した回路例Ａの特徴的な動作を説明するためのフローチャートである。
【図４】  図１の可変しきい値しきい素子回路の具体的な別の回路例（回路例Ｂ）を示す図である。
【図５】  図４に示した回路例Ｂにおける回路部４０１を置換する回路部４０１’を示す図である。
【図６】  図４に示した回路例Ｂの特徴的な動作を説明するためのフローチャートである。
【図７】  この発明の他の実施の形態（実施の形態２）を示すリフレッシュ機能を備えたｋ入力変数の可変しきい値しきい素子回路の回路構成を示す図である。
【図８】  図７に示した可変しきい値しきい素子回路においてしきい値を設定する際の操作手順を示すフローチャートである。
【図９】  図７の可変しきい値しきい素子回路の具体的な回路例（回路例Ｃ）を示す図である。
【図１０】  図７に示した回路例Ｃの特徴的な動作を説明するためのフローチャートである。
【図１１】  実施の形態２で示した具体的な回路例Ｃを構成要素とするｋ入力変数の関数機能再構成可能集積回路の構成図である。
【図１２】  文献１に開示されたνＭＯＳインバータを示す回路図である。
【図１３】  文献２に開示されたフローティングゲート制御されるνＭＯＳインバータを示す回路図である。
【図１４】  従来のしきい値可変機能を備えたｋ入力変数の可変しきい値しきい素子回路を示す回路図である。
【図１５】  従来の回路状態保持機能を備えたｋ入力変数の可変しきい値しきい素子回路の代表的な回路構成を示す図である。
【図１６】  図１５に示した可変しきい値しきい素子回路を用いた関数機能再構成可能集積回路（２入力変数可変関数回路）を示す図である。
【符号の説明】
ＩＮＶ…しきい値処理回路、ＦＧ…フローティングゲート、ＩＶ…インバータ回路、input1〔１〕〜input1〔ｋ〕…入力変数用端子、input2…しきい値選択用端子、input2ａ…しきい値選択用入力端子、input3…しきい値調整用端子、input3ａ…しきい値調整用入力端子、ＳＷ１〜ＳＷ８…スイッチ、ＭＥＭ…メモリ回路、Ｐ１，Ｐ２…端子、ＲＥＦ…リフレッシュ回路、swn1，swn2…ＮＭＯＳ型のパストランジスタ、tgin２…トランスミッションゲート、inv1，inv2，inv3…インバータ回路、ctl1，ctl2…状態制御端子、ＬＡＴ…ラッチ回路、swp1…ＰＭＯＳ型のパストランジスタ、１００，２００，４００，７００，９００…可変しきい値しきい素子回路、ＦＴＥ〔１〕〜ＦＴＥ〔ｎ〕…１段目の可変しきい値しきい素子回路、ＳＴＥ…２段目の可変しきい値しきい素子回路、ＦＧ〔１〕〜ＦＧ〔ｎ〕，ＦＧ〔Ｓ〕…フローティングゲート、ＢＦ〔１〕〜ＢＦ〔ｎ〕，ＢＦ〔Ｓ〕…バッファ回路、ＤＥＬ〔１〕〜ＤＥＬ〔ｋ〕…遅延制御回路、ＩＮＶ〔１〕〜ＩＮＶ〔３〕，ＩＮＶ〔Ｓ〕…しきい値処理回路、ＤＥＬＹ〔１〕〜ＤＥＬＹ〔ｎ〕，ＤＥＬＹ〔Ｓ〕…遅延回路、ＬＡＴ〔１〕〜ＬＡＴ〔ｎ〕…ラッチ回路、１１００…関数機能再構成可能集積回路。
【図１】
0003662887.tif 000005
【図２】
0003662887.tif 000006
【図３】
0003662887.tif 000007
【図４】
0003662887.tif 000008
【図５】
0003662887.tif 000009
【図６】
0003662887.tif 000010
【図７】
0003662887.tif 000011
【図８】
0003662887.tif 000012
【図９】
0003662887.tif 000013
【図１０】
0003662887.tif 000014
【図１１】
0003662887.tif 000015
【図１２】
0003662887.tif 000016
【図１３】
0003662887.tif 000017
【図１４】
0003662887.tif 000018
【図１５】
0003662887.tif 000019
【図１６】
0003662887.tif 000020