(57)【特許請求の範囲】
【請求項１】
変数の対称性を取り込むことが可能な複数のしきい素子と；複数のメモリと；上記複数のしきい素子によって生成された信号を入力するスイッチであって、２分岐を持つ木構造のスイッチと；上記しきい素子の出力に基づいて、上記スイッチの導通と遮断とを制御する制御手段と；上記複数のメモリの中から、所定の入力状態に対応する１つのメモリを選択するように、上記複数のメモリのそれぞれの出力と上記スイッチとを接続する接続手段と；を有することを特徴とする論理関数機能再構成可能集積回路。
【請求項２】
任意のｋ入力変数対称関数（ただし、ｋ＋１は２のべき乗、かつｋ≧２）を実現する論理関数機能再構成集積回路であって、
ｋ入力変数の全てを少なくとも入力とするｌｏｇ（ｋ＋１）個のしきい素子と；
上記しきい素子の出力信号によって制御され、上記メモリに接続されているスイッチ回路と；
を有することを特徴とする論理関数機能再構成集積回路。
【請求項３】
請求項2において、
上記スイッチ回路は、ｌｏｇ（ｋ＋１）段の木構造をなる回路であることを特徴とする論理関数機能再構成製集積回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、集積回路を製造した後であっても、関数機能を再構成することができ、しきい素子回路を構成要素とする集積回路に係り、特に、任意の対称関数を実現する関数機能再構成可能集積回路に関するものである。
【０００２】
【従来の技術】
論理関数機能再構成可能集積回路は、集積回路を製造した後であっても、集積回路が有する論理関数機能を再構成することができる論理関数再構成可能デバイスの可変論理部（論理関数生成部とも呼ぶ）に適用される。
【０００３】
入力変数がｋ個である場合、上記入力変数が作る２k個の入力ベクトルのうちの任意の１つの入力ベクトルが与えられ、論理的１または０を選択的に出力することが可能であるときに、上記ｋ入力変数に対する任意の論理関数を実現することが可能である。
【０００４】
現在、広く使用されている可変論理部は、真理値表を実装しているＳＲＡＭメモリで実現するルックアップテーブル（ＬＵＴ）によって構成されている。
【０００５】
図９は、ｋ入力変数の任意の論理関数を生成可能な従来のＬＵＴ１０００の回路構成を示す図である。
【０００６】
ＬＵＴ１０００は、所定の入力ベクトルに対応する１つのメモリに保持されているデータを、入力ベクトルが木構造のスイッチ回路のスイッチを制御することによって、所定の信号経路を生成し、この生成された信号経路を介して、出力することができる。
【０００７】
また、２k個のメモリ
【０００８】
【数１】
0003871965.tif 000002
に保持するデータを変えることによって、２の２k個の論理関数を実現することができる。
【０００９】
しかし、論理関数の全てを実現することは、必ずしも必要ではない。論理演算や数値演算において最もよく用いられる関数クラスは、対称関数である。
【００１０】
上記「対称関数」は、入力変数を任意に置換しても、関数値が不変である関数である。たとえば、ＡＮＤ、ＯＲ、ＸＯＲ等、または加算器等は、全て対称関数であるか、または対称関数のみで構成される。
【００１１】
ｋ入力変数対称関数は、２(k+1)個存在し、ＬＵＴと同様の原理で、回路を構成すると、メモリ数は、（ｋ＋１）個と非常に少ない。このために、任意の対称関数を実現する論理関数機能再構成可能集積回路は、非常に効率的である。
【００１２】
しきい素子は、変数の対称性を容易に取り込むことが可能なデバイスである。しきい素子内部では、入力変数に対して重みが乗算され、この重みが乗算された値が全て加算される入力変数について、積和演算され、この積和演算の結果と、しきい素子が有するしきい値とが比較され、その大小関係に基づいて、しきい素子の出力値が決まる。上記演算においては、重みを等しくすることによって、入力変数の対称性を実現することができる。
【００１３】
しきい素子を用いた対称関数回路は、特開２００１−３４５９８公報「ニューロンＭＯＳ回路による対称関数生成方法及び対称関数ニューロンＭＯＳ回路およびプリインバータ回路」に開示されている。
【００１４】
図１０は、特開２００１−３４５９８公報に記載されているしきい素子を用いた従来の関数回路２０００の構成を示す図である。
【００１５】
図１０に記載されているしきい素子を用いた従来の関数回路２０００では、ｋ入力変数対称関数回路を構成するしきい素子数を、少なくとも（ｋ＋２）個必要とする。しきい素子は、標準的な単体トランジスタに比べて面積が大きいので、面積コストを低減する必要があり、この面積コストを低減するためには、しきい素子数を低減することが望ましい。
【００１６】
上記の回路構成と類似の２段論理フィードフォワード回路と、関数を構成するデータ（コンフィギュレーションデータ）を多値化する方法とを用いて、しきい素子数を低減する方法と回路構成とが、「ニューロンＭＯＳによる論理関数回路の一設計手法、第１３回、回路とシステムワークショップ、２０００年４月、ｐｐ．１１３−１１８」に記載されている。
【００１７】
図１１は、「ニューロンＭＯＳによる論理関数回路の一設計手法」に開示されている従来の対称関数回路３０００を示す図である。
【００１８】
この回路構成では、少なくとも｛３（ｋ＋１）／４＋１｝個のしきい素子が必要である。
【００１９】
上記のように、２段論理フィードフォワード型しきい素子回路網において、任意のｋ入力変数論理関数を実現するためには、少なくとも（３／４）・２k＋１個のしきい素子が必要である。
【００２０】
【発明が解決しようとする課題】
上記従来例では、関数機能再構成可能集積回路を２段論理フィードフォワード型しきい素子回路によって構成する場合、任意のｋ入力変数論理関数を実現するためには、｛（３／４）・２k＋１｝個のしきい素子が必要である。
【００２１】
しきい素子は、標準的な単体トランジスタに比べて面積が大きく、面積コストをさらに低減することが望まれている。
【００２２】
本発明は、対称関数機能を再構成することが可能な集積回路を、少ないしきい素子数によって構成することができる関数機能再構成可能集積回路および関数機能構成方法を提供することを目的とするものである。
【００２３】
【課題を解決するための手段】
本発明は、しきい素子回路を、入力ベクトルから入力状態を生成するデコーダとして使用し、デコードされた信号によって、木構造のスイッチ回路を制御する回路構成を用いることによって、しきい素子数を低減する。また、本発明では、ｋ入力変数の任意の対称関数を実現する場合に必要なしきい素子の数は、ｌｏｇ（ｋ＋１）であり、しきい素子の数を大幅に低減することができる。
【００２４】
【発明の実施の形態および実施例】
［第１の実施例］
対称関数とは、入力変数の任意の交換に対して、関数値が不変である論理関数である。入力変数が対称性を有するので、入力変数のベクトル表記である入力ベクトルは、論理的１である入力変数の数によって区別される。
【００２５】
ここで、「入力状態」は、論理的１である入力変数の数であると定義する。ｋ入力変数を持つある回路が、各入力状態に対して、論理的１または０を選択的に出力する場合、上記ｋ入力変数を持つ回路は、ｋ入力変数に対する任意の対称関数を生成することができる対称関数回路である。
【００２６】
たとえば、ｋ入力変数に対して、入力ベクトルが２k個存在するのに対して、入力状態は、０，１，…，ｋの（ｋ＋１）個である。ｋ入力変数の各入力ベクトルに、論理的１または０が割り当てられることによって、２の２k個の論理関数が生成されるのと同様に、（ｋ＋１）個の入力状態のそれぞれに、論理的１または０が割り当てられることによって、２(k+1)個の対称関数が生成される。すなわち、メモリに保存されている（ｋ＋１）ビットの値を、入力状態に応じて選択する回路によって、対称関数回路が実現される。
【００２７】
所定のメモリを選択する入力状態を表現する信号を生成するために、しきい素子を用いる。（ｋ＋１）個の任意の入力状態を表す信号は、ｌｏｇ（ｋ＋１）個のしきい素子によって生成される。上記ｌｏｇ（ｋ＋１）個のしきい素子によって生成される信号を、２分岐を持つ木構造のスイッチ回路に適用することによって、所定の入力状態に対応する１つのメモリを選択することができる。
【００２８】
本発明において使用するしきい素子は、入力信号と重みとの積和演算結果を、しきい値と比較し、上記積和演算結果がしきい値よりも大であるときに、論理的０を出力し、その他の場合に、論理的１を出力する機能を有する。
【００２９】
実施例においては、上記しきい素子の代わりに、比較結果と出力される論理値との対応が逆であるしきい素子を使用するようにしてもよい。つまり、しきい値が積和演算結果よりも大である場合に、論理的１を出力し、その他の場合に、論理的０を出力するしきい素子を使用するようにしてもよい。
【００３０】
さらに、本発明で用いるしきい素子は、特許第２６６２５５９号「半導体装置」に記載されているフローティングゲートデバイスに実装することができる。
【００３１】
（ｋ入力変数対称関数回路の構成）
図１は、本発明の第１の実施例である任意のｋ入力変数対称関数を実現する論理関数機能再構成可能集積回路１００の構成を示す図である。
【００３２】
論理関数機能再構成可能集積回路１００は、主に、ｋ入力変数によって作られる（ｋ＋１）の入力状態のそれぞれに対応する（ｋ＋１）個のメモリＭｅｍ(0)〜Ｍｅｍ(k)と、メモリに接続されているｌｏｇ（ｋ＋１）段構成のスイッチ（ｌｏｇ（ｋ＋１）段構成パストランジスタ）ＰＴ［１０］，ＰＴ［１１］，…，ＰＴ［１ｋ］、ＰＴ［２０］，…，ＰＴ［（ｌｏｇ（ｋ＋１））０］と、ｌｏｇ（ｋ＋１）個のしきい素子ＴＥ［１］，ＴＥ［２］，…，ＴＥ［ｌｏｇ（ｋ＋１）］とを有する。
【００３３】
上記ｌｏｇ（ｋ＋１）段構成パストランジスタと、上記ｌｏｇ（ｋ＋１）個のしきい素子ＴＥ［１］，ＴＥ［２］，…，ＴＥ［ｌｏｇ（ｋ＋１）］とが、ｋ個の入力変数Ｘi、（ｉ＝１，２，…，ｋ）の値によって定まるある入力状態に応じて、所定の１つのメモリを選択し、保持されているデータを出力する。
【００３４】
次に、上記しきい素子ＴＥ［１］，ＴＥ［２］，…，ＴＥ［ｌｏｇ（ｋ＋１）］の構造について説明する。
【００３５】
各しきい素子に入力される入力変数Ｘiに対する重みｗは、等しく１である（ｗ＝１）。
【００３６】
図２は、しきい素子ＴＥ［ｌｏｇ（ｋ＋１）］の構造を示す図である。
【００３７】
しきい素子ＴＥ［ｌｏｇ（ｋ＋１）］は、ｋ個の入力変数Ｘi、（ｉ＝１，２，…，ｋ）のみを入力する。また、このしきい素子ＴＥ［ｌｏｇ（ｋ＋１）］のしきい値Ｔｈ[log(k+1)]は、Ｔｈ[log(k+1)]＝（ｋ＋１）／２1−（１／２）である。このしきい素子ＴＥ［ｌｏｇ（ｋ＋１）］の出力信号Ｙ[log(k+1)]は、次の式（１）で表される。
【００３８】
【数２】
0003871965.tif 000003
図３は、しきい素子ＴＥ［１］の構造を表す図である。
【００３９】
しきい素子ＴＥ［１］は、ｋ個の入力変数Ｘi以外に、しきい素子ＴＥ［ｊ］、（１＜ｊ≦ｌｏｇ（ｋ＋１））の出力信号Ｙ[j]をも入力する。これらの各出力に対する重みｗ1[j]は、次の式（２）で表される。
【００４０】
ｗ1[j]＝（ｋ＋１）／２[[log(k+1)]+1-j]  …  式（２）
しきい素子ＴＥ［１］のしきい値Ｔｈ[1]は、次の式（３）で表される。
【００４１】
【数３】
0003871965.tif 000004
しきい素子ＴＥ［１］の出力信号Ｙ［１］は、次の式（４）で表される。
【００４２】
【数４】
0003871965.tif 000005
次に、一般のしきい素子ＴＥ［ｈ］、（ｈ＝２，３，…ｌｏｇ（ｋ＋１）−１）の構造について説明する。
【００４３】
しきい素子ＴＥ［ｈ］は、ｋ個の入力変数Ｘi以外に、しきい素子ＴＥ［ｊ］、（ｈ＜ｊ≦ｌｏｇ（ｋ＋１））の出力信号Ｙ[j]をも入力する。これらの各出力信号に対する重みｗh[j]は、次の式（５）で表される。
【００４４】
ｗh[j]＝（ｋ＋１）／２[[log(k+1)]+1-j]  …  式（５）
しきい素子ＴＥ［ｈ］のしきい値Ｔｈ[h]は、次の式（６）で表される。
【００４５】
【数５】
0003871965.tif 000006
しきい素子ＴＥ［ｈ］の出力信号Ｙ［ｈ］は、次の式（７）で表される。
【００４６】
【数６】
0003871965.tif 000007
以上、ｋ＋１が、２のべき乗で表される整数であり、パストランジスタＰＴ［１０］，ＰＴ［１１］，…，ＰＴ［１ｋ］、ＰＴ［２０］，…，ＰＴ［（ｌｏｇ（ｋ＋１））０］によって構成されるパストランジスタ回路の構造が、完全な２分岐の木構造を持つ場合における対称関数回路の構造について説明した。
【００４７】
ｋ＋１が２のべき乗でない場合についても、不完全な木構造のパストランジスタ回路を用いて、上記と同様の方法で、対称関数回路を実現することができる。
【００４８】
（回路動作）
次に、入力状態Ｚが（ｋ＋１）／２であり、ｋ≧７である場合における回路動作について説明する。
【００４９】
始めに、しきい素子ＴＥ［ｌｏｇ（ｋ＋１）］に着目する。Ｚ＞Ｔｈ[log(k+1)]＝（ｋ＋１）／２−（１／２）であるので、しきい素子ＴＥ［ｌｏｇ（ｋ＋１）］の出力信号は、Ｙ[log(k+1)]＝０になる。この出力信号は、パストランジスタＰＴ［ｌｏｇ（ｋ＋１）０］を遮断し、ＰＴ［ｌｏｇ（ｋ＋１）１］を導通する。
【００５０】
次に、しきい素子ＴＥ［ｌｏｇ（ｋ＋１）−１］の動作について説明する。
【００５１】
しきい素子ＴＥ［ｌｏｇ（ｋ＋１）］の出力信号Ｙ[log(k+1)]に重みｗ(log(k+1)-1)[log(k+1)]を乗算した値と、入力状態Ｚとの和（積和）が、しきい値Ｔｈ[log(k+1)-1]と比較される。積和演算結果は、次の式（８）で表される。
【００５２】
Ｚ＋ｗ(log(k+1)-1)[log(k+1)]・Ｙ[log(k+1)]＝（ｋ＋１）／２＋｛（ｋ＋１）／２｝×０＝（ｋ＋１）／２  …  式（８）
また、上記式（６）を用いると、しきい値は、次の式（９）の通りである。
【００５３】
Ｔｈ[log(k+1)-1]＝（３ｋ＋１）／４  …  式（９）
したがって、ｋ＞１において、Ｚ＋ｗ(log(k+1)-1)[log(k+1)]・Ｙ[log(k+1)＜Ｔｈ[log(k+1)-1]であり、しきい素子ＴＥ［ｌｏｇ（ｋ＋１）−１］の出力信号Ｙ[log(k+1)-1]は、出力信号Ｙ[log(k+1)-1]＝１となる。この値は、パストランジスタＰＴ［（ｌｏｇ（ｋ＋１）−１）０］、ＰＴ［（ｌｏｇ（ｋ＋１）−１）２］を導通し、パストランジスタＰＴ［（ｌｏｇ（ｋ＋１）−１）１］、ＰＴ［（ｌｏｇ（ｋ＋１）−１）３］を遮断する。
【００５４】
これまでに説明した２つのしきい素子ＴＥ［ｌｏｇ（ｋ＋１）］、ＴＥ［ｌｏｇ（ｋ＋１）−１］と、パストランジスタＰＴ［（ｌｏｇ（ｋ＋１））１］、ＰＴ［（ｌｏｇ（ｋ＋１）−１）２］とによって、信号経路が確保されている。
【００５５】
上記操作を、各しきい素子において実行することによって、信号経路が順次、確保される。この確保された信号経路は、所定のメモリに接続され、入力状態が、（ｋ＋１）／２であるときに、所定のメモリに保持されているデータが出力される。
【００５６】
次に、入力状態Ｚと選択されるメモリとが、１対１で対応していること（所定の入力状態のときに選択されるメモリと、別の入力状態のときに選択されるメモリとが、必ず互いに異なること）について説明する。
【００５７】
まず、入力状態Ｚ＝０であるときに、メモリＭｅｍ［０］が選択され、入力状態Ｚ＝１であるときに、メモリＭｅｍ［１］が選択されることを示し、次に、入力状態Ｚ＝ｐ，（ｐ≧１）であるときに、所定のメモリＭｅｍ［ｐ］が選択されていると仮定し、入力状態Ｚ＝ｐ＋１であるときに、メモリＭｅｍ［ｐ］とは異なるメモリであるメモリＭｅｍ［ｐ＋１］が選択されることについて、説明する。
【００５８】
なお、このように説明すれば、入力状態Ｚとメモリとが１対１で対応していることを説明したことになる。
【００５９】
入力変数の数ｋ＝１、ｋ＝３である場合は、入力状態Ｚとメモリとが１対１で対応している。
【００６０】
つまり、まず、入力変数の数ｋ＝１である場合（入力変数がＸ1のみである場合）、回路は２つのメモリＭｅｍ[0]、Ｍｅｍ[1]と、２つのパストランジスタと、１つのしきい素子ＴＥ［１］とによって構成される。上記２つのパストランジスタは、しきい素子ＴＥ［１］の正出力と負出力とによって制御される。したがって、１個の入力変数Ｘ1が論理的１と０とのいずれか一方であれば、いずれか一方のみが選択され、メモリと入力状態とが１対１で対応する。
【００６１】
入力変数ｋ＝３である場合、回路は、４つのメモリと、２つのしきい素子ＴＥ［１］、ＴＥ［２］と、しきい素子ＴＥ［１］に制御される４つのパストランジスタと、しきい素子ＴＥ［２］に制御される２つのパストランジスタとによって構成される。また、しきい素子ＴＥ［１］のしきい値は、２．５に設定され、しきい素子ＴＥ［２］のしきい値は、１．５に設定されている。さらに、しきい素子ＴＥ［１］は、しきい素子ＴＥ［２］からの出力値に、重み２が乗算された値をも入力とする。しきい素子ＴＥ［１］は、入力状態に上記値を加算した値を、しきい値と比較する。したがって、入力状態が０である場合、パストランジスタＰＴ［１０］、ＰＴ［１３］、ＰＴ［２０］が導通し、パストランジスタＰＴ［１０］、ＰＴ［２０］による信号経路が形成される。残りの入力状態１〜３の場合についても、上記と同様に確かめることができる。
【００６２】
上記のように、入力変数の数ｋ＝１、ｋ＝３である場合は、入力状態Ｚとメモリとが１対１で対応しているので、以下では、入力変数の数ｋ≧７であると仮定する。
【００６３】
まず、入力状態Ｚ＝０である場合、選択されるメモリがメモリＭｅｍ[0]であることについて、説明する。
【００６４】
しきい素子ＴＥ［ｌｏｇ（ｋ＋１）］において、入力状態Ｚ＝０である場合、しきい値Ｔｈ[log(k+1)]＝（ｋ＋１）／２−（１／２）≧３．５であるので、出力信号Ｙ[log(k+1)]＝１になる。
【００６５】
次に、しきい素子ＴＥ［ｈ］、（１＜ｈ＜ｌｏｇ（ｋ＋１））のしきい値は、次の式（６）で表される。
【００６６】
【数７】
0003871965.tif 000008
上記式（６）は、次の式（１０）に変形することができる。
【００６７】
【数８】
0003871965.tif 000009
上記式（１０）の第２項は、２log(k+1)＝（ｋ＋１）、（１＜ｈ＜ｌｏｇ（ｋ＋１））であることを考慮すると、以下の不等式を満たす。
【００６８】
１／２＜（１／２）（２h−１）＜ｋ／２  …  式（１１）
一方、入力に積和演算結果は、次の式（１２）の通りである。
【００６９】
【数９】
0003871965.tif 000010
式（１２）の第２項において、出力信号Ｙ[log(k+1)+1-i]＝１が成立したときに、この項は、上記式（１０）の第１項と等しい。したがって、入力状態Ｚ＝０である場合は、しきい値と積和演算結果との間には、次の式（１３）の関係が成り立つ。
【００７０】
【数１０】
0003871965.tif 000011
この関係より、しきい素子ＴＥ［ｈ］の出力信号Ｙ[h]＝１になる。最後に、しきい素子ＴＥ［１］の出力信号Ｙ[1]＝１になることによって、選択されるパストランジスタが全て決定される。全てのしきい素子が論理的１を出力しているので、パストランジスタＰＴ［ｌｏｇ（ｋ＋１）０］、ＰＴ［ｈ０］、ＰＴ［１０］によって信号経路が形成され、メモリＭｅｍ[0]に保持されているデータが出力される。
【００７１】
次に、入力状態Ｚ＝１である場合に、メモリＭｅｍ[1]が選択されることについて示す。
【００７２】
しきい素子ＴＥ［ｌｏｇ（ｋ＋１）］のしきい値と、入力の積和演算結果とを比較する。入力状態Ｚ＝０であるときと同様に、Ｚ＜Ｔｈ[h]であり、しきい素子ＴＥ［ｌｏｇ（ｋ＋１）］の出力信号Ｙ[log(k+1)]＝１になる。上記式（１１）において、しきい素子の数ｈ≧２である場合、（２h−１）／２≧（３／２）＞１である。
【００７３】
したがって、しきい素子ＴＥ［ｈ］、（ｈ≧２）においては、しきい値が、入力の積和演算結果よりも大であり、出力信号Ｙ[h]＝１になる。一方、しきい素子ＴＥ［１］において、しきい値は、式（３）で表され、次の式（１４）のように変形される。
【００７４】
【数１１】
0003871965.tif 000012
入力の積和演算結果は、次の式（１５）になる。
【００７５】
【数１２】
0003871965.tif 000013
今、入力状態Ｚ＝１を、上記式（１５）に代入し、上記式（１５）と上記式（１４）とを比較することによって、入力の積和演算結果よりも、しきい値が小さいことがわかる。したがって、出力信号Ｙ[1]＝０になる。導通しているパストランジスタを、Ｚ＝０である場合と比較すると、メモリに最も近いパストランジスタが異なるだけになり、ＰＴ［１１］が導通し、メモリＭｅｍ[1]が選択される。
【００７６】
次に、入力状態Ｚ＝ｐ、（１≦ｐ≦ｋ）であるときに、メモリＭｅｍ[p]が選択されていると仮定した場合、入力状態Ｚ＝ｐ＋１であるときに、メモリＭｅｍ[p+1]が選択されることについて説明する。
【００７７】
まず、上記を説明する際に重要である各しきい素子のしきい値と回路の動作原理とについて、簡単に説明する。
【００７８】
【数１３】
0003871965.tif 000014
しきい素子に与えられた数ｈの増加に伴い、しきい素子のしきい値が減少する。Ｔｈ[h+1]−Ｔｈ[h]に着目すると、このしきい値は、（−２(h-1)）になり、２のべき乗になることが、上記式（１７）から判る。
【００７９】
図４は、ｋ入力変数対称関数回路の動作原理を示す概念図である。
【００８０】
図４の横軸には、各しきい素子が記載され、その縦軸には、入力状態（０，…，ｋ）と、各しきい素子のしきい値Ｔｈと、各しきい素子における積和演算結果の取り得る値（図４に四角で表示されている範囲の値）とが記載されている。
【００８１】
所定の入力状態Ｚが入力された場合、しきい素子ＴＥ［ｌｏｇ（ｋ＋１）］では、しきい値（ｋ＋１）／２と比較され、入力状態Ｚが大きければ、０を出力し、入力状態Ｚが小さければ、１を出力する。この値は、しきい素子［ｌｏｇ（ｋ＋１）−１］に重み（ｋ＋１）／２が乗算され入力される。このことは、入力状態Ｚが、しきい素子ＴＥ［ｌｏｇ（ｋ＋１）−１］においては、（ｋ＋１）／２とｋとの間で評価されることを意味している。この処理が順次、繰り返され、しきい素子ＴＥ［１］においては、積和演算結果が（ｋ＋１）であるか、ｋであるかが、しきい値Ｔｈ[1]＝（ｋ−１／２）によって評価される。
【００８２】
ｋ入力変数対称関数回路における入力状態と、しきい素子のしきい値との関係が、所定の入力状態Ｚが入力されたときに、０〜ｋまでのどの領域に分類されるかを決定する。
【００８３】
次に、入力状態Ｚ＝ｐであるときにおいて、しきい素子ＴＥ［１］の出力信号Ｙ[1]＝１であり、メモリＭｅｍ[p]が選択されている場合と、出力信号Ｙ[1]＝０であり、メモリＭｅｍ[p]が選択されている場合とに分けて考察する。
【００８４】
・出力信号Ｙ[1]＝１である場合
しきい素子ＴＥ［１］における入力状態Ｚ＝ｐの積和演算結果が、（ｋ−１）である。積和演算結果が（ｋ−１）になる場合は、しきい素子ＴＥ［２］の出力信号との関係によって、第１の場合と第２の場合とがある。
【００８５】
上記第１の場合は、しきい素子ＴＥ［２］において、積和検算結果が（ｋ−１）の場合であり、上記第２の場合は、（ｋ−３）の場合である。
【００８６】
上記第１の場合、入力状態Ｚ＝ｐ＋１にしても、しきい素子ＴＥ［２］の出力の状態は変化せず、しきい素子ＴＥ［１］での積和演算結果がｋになり、しきい値を超え、出力信号が０になる。
【００８７】
上記第２の場合も、しきい素子ＴＥ［２］の出力信号の状態は、１のままで変化せず、しきい素子ＴＥ［１］での積和演算結果は、ｋになり、しきい値を超え、出力信号が０になる。したがって、いずれの場合においても、入力状態Ｚ＝ｐの場合とは異なる信号経路が生成される。
【００８８】
・出力信号Ｙ[1]＝０である場合
しきい素子ＴＥ［１］における入力状態Ｚ＝ｐの積和演算結果がｋである。積和演算結果がｋになる場合は、しきい素子ＴＥ［２］の出力との関係によって、第１の場合と第２の場合とがある。上記第１の場合は、しきい素子ＴＥ［２］において、積和演算結果がｋの場合であり、上記第２の場合は、ｋ−２の場合である。
【００８９】
上記第２の場合、入力状態Ｚ＝ｐ＋１にすると、しきい素子ＴＥ［２］の積和演算結果は、（ｋ−１）になり、出力の状態が０に変化する。このために、しきい素子ＴＥ［１］での積和演算結果が（ｋ−１）になり、しきい値を超えず、出力が１になる。
【００９０】
上記第１の場合、しきい素子ＴＥ［２］の積和演算結果がｋになると、しきい素子ＴＥ［３］の出力信号との関係によって、２つの場合がある。１つの場合は、しきい素子ＴＥ［３］において、積和演算結果がｋになる場合であり、他の場合は、ｋ−４になる場合である。
【００９１】
後者の場合（しきい素子ＴＥ［３］の積和演算結果がｋ−４になる場合）、入力状態Ｚ＝ｐ＋１にすると、しきい素子ＴＥ［３］の積和演算結果が（ｋ−３）になり、しきい素子ＴＥ［３］のしきい値を超え、出力の状態が０に変化する。このために、しきい素子ＴＥ［２］での積和演算結果が（ｋ−３）になり、しきい値を超えず、出力が１になり、しきい素子ＴＥ［１］での積和検算結果が、（ｋ−１）になり、しきい値を超えず、出力は１となる。
【００９２】
前者の場合（しきい素子ＴＥ［３］の積和演算結果がｋになる場合）、しきい素子ＴＥ［４］の出力との関係によって２つの場合がある。上記しきい素子ＴＥ［３］に適用した方法を順次、繰り返すことによって、所定のしきい素子において、上記後者に分類される。このように、しきい素子ＴＥ［１］での積和演算結果が（ｋ−１）になり、しきい値を超えず、出力が１になる。したがって、どの場合においても、入力状態Ｚ＝ｐである場合とは異なる信号経路が生成される。
【００９３】
上記のように、入力状態Ｚが、ｐである場合と、ｐ＋１である場合とでは、信号経路が必ず異なる。
【００９４】
したがって、入力状態と選択されるメモリとは、１対１に対応する。
【００９５】
上記回路構成と回路パラメータの設定とによって、（ｋ＋１）個のメモリの中の１つが、入力状態によって選択され、このメモリが保持するデータに応じて、任意の対称関係が生成される。
【００９６】
［第２の実施例］
（７入力変数対称関数回路の構成）
図５は、本発明の第２の実施例である任意の７入力変数対称関数を実現する論理関数機能再構成可能集積回路２００の構成を示す回路図である。
【００９７】
論理関数機能再構成可能集積回路２００は、主に、７入力変数によって作られる８つの入力状態のそれぞれに対応する８つのメモリＭｅｍ(0)〜Ｍｅｍ(7)と、メモリに接続された３段構成のスイッチ（パストランジスタ）と、３つのしきい素子ＴＥ［１］、ＴＥ［２］、ＴＥ［３］とを有する。
【００９８】
３段構成パストランジスタと３つのしきい素子とが、７つの入力変数の値によって定まる所定の入力状態に応じて、所定の１つのメモリを選択し、保持されているデータを出力する。
【００９９】
各しきい素子に入力される入力変数に対する重みｗは、等しく１とされる（ｗ＝１）。また、しきい素子ＴＥ［１］は、しきい素子ＴＥ［２］とＴＥ［３］との出力信号を入力する。各出力信号に対する重みｗ1[2]、ｗ1[3]は、ｗ1[2]＝２、ｗ1[3]＝４である。
【０１００】
図５に示す集積回路２００において、しきい素子ＴＥ［３］には、入力変数Ｘi、（ｉ＝１，２，…，７）のみが入力される。一方、しきい素子ＴＥ［２］には、入力変数以外に、しきい素子ＴＥ［３］の出力値Ｙ[3]が入力される。上記出力値Ｙ[3]は、定数ではなく、変数である
しきい素子ＴＥ［３］の出力に対する重みｗ2[3]は、ｗ2[3]＝４である。
【０１０１】
しきい素子ＴＥ［１］、ＴＥ［２］、ＴＥ［３］のしきい値Ｔｈ［１］、Ｔｈ［２］、Ｔｈ［３］は、Ｔｈ［１］＝６．５、Ｔｈ［２］＝５．５、Ｔｈ［３］＝３．５に設定される。
【０１０２】
（回路動作）
次に、入力状態Ｚが３である（Ｚ＝３）の場合における論理関数機能再構成可能集積回路２００の回路動作について説明する。
【０１０３】
第１に、しきい素子ＴＥ［３］において、入力状態Ｚ＜Ｔｈ[3]＝３．５であるので、しきい素子ＴＥ［３］の出力信号Ｙ[3]＝１になる。この出力信号は、パストランジスタＰＴ［３０］を導通し、パストランジスタＰＴ［３１］を遮断する。
【０１０４】
第２に、しきい素子ＴＥ［２］において、入力状態Ｚと、しきい素子ＴＥ［３］の出力信号Ｙ［３］に重みｗ２［３］を乗算した値との和が、しきい値Ｔｈ［２］と比較される。Ｚ＋ｗ２［３］・Ｙ［３］＝３＋４×１＝７であり、Ｔｈ［２］＝５．５であるので、Ｚ＋ｗ２［３］・Ｙ［３］＞Ｔｈ［２］であり、しきい素子ＴＥ［２］の出力信号Ｙ［２］＝０になる。
【０１０５】
この出力信号Ｙ[2]の値は、パストランジスタＰＴ［２０］を遮断し、パストランジスタＰＴ［２１］を導通する。
【０１０６】
第３に、しきい素子ＴＥ［１］において、入力状態Ｚと、出力信号Ｙ[3]に重みｗ1[3]＝４を乗算した値と、出力信号Ｙ[2]に重みｗ1[2]＝２を乗算した値との３つの値の和と、しきい値Ｔｈ［１］との値が比較される。
【０１０７】
Ｚ＋ｗ1[3]・Ｙ[3]＋ｗ1[2]・Ｙ[2]＝３＋４×１＋２×０＝７であり、Ｔｈ［１］＝６．５であるので、Ｚ＋ｗ1[3]・Ｙ[3]＋ｗ1[2]・Ｙ[2]＞Ｔｈ［１］である。しきい素子ＴＥ［１］の出力信号Ｙ[1]＝０である。この値は、パストランジスタＰＴ［１２］を遮断し、パストランジスタＰＴ［１３］を導通する。導通したパストランジスタＰＴ［１３］、ＰＴ［２１］、ＰＴ［３０］によって、メモリＭｅｍ[3]に保存されているデータ値が出力される。
【０１０８】
上記回路構成と回路パラメータの設定とによって、８つのメモリに保持されている値に応じて、任意の対称関数を生成することができる。
【０１０９】
［第３の実施例］
（ｋ入力変数対称関数回路の構成）
図６は、図１に示す論理関数機能再構成可能集積回路１００における信号経路を示す図である。
【０１１０】
論理関数機能再構成可能集積回路１００は、入力変数を取り込み、始めにしきい素子ＴＥ［ｌｏｇ（ｋ＋１）］が出力し、その出力を用いてしきい素子ＴＥ［ｌｏｇ（ｋ＋１）−１］が出力し、これらの２つのしきい素子の出力を用いてしきい素子［ｌｏｇ（ｋ＋１）−２］が出力するというように、出力側のしきい素子から順次、出力値が決定される。
【０１１１】
しきい素子ＴＥ［１］の出力値が決定された後に、メモリの信号がパストランジスタ回路を通って、回路の出力端子に達する。すなわち、信号経路は、入力変数用端子から、一旦出力に最も近いしきい素子まで到達し、その後に出力側からメモリに向かって、しきい素子の出力が決定され、メモリから回路出力端子まで、図６に矢印で示す通りに流れる。回路出力端子側からメモリまで、メモリに保持されているデータが出力される経路とは逆向きに、制御信号が流れ、遅延時間が大きくなる。
【０１１２】
図７は、本発明の第３の実施例である任意のｋ入力変数対称関数を実現する論理関数機能再構成可能集積回路３００の構成を示す図である。
【０１１３】
論理関数機能再構成可能集積回路３００におけるパストランジスタ回路部は、論理関数機能再構成可能集積回路１００におけるパストランジスタ回路部と同じである。論理関数機能再構成可能集積回路３００が論理関数機能再構成可能集積回路１００と主に相違する点は、次の２つである。
【０１１４】
第１の相違点は、メモリの並び方である。論理関数機能再構成可能集積回路３００において、メモリＭｅｍ[j]は、入力状態Ｚ＝ｊであるときに選択されるメモリを表している。
【０１１５】
第２の相違点は、しきい素子の接続である。入力変数用端子とメモリとの側から、回路の出力端子に向かって、フィードフォワードに信号が流れる。
【０１１６】
まず、しきい素子ＴＥ［ｈ］、（１≦ｈ≦ｌｏｇ（ｋ＋１））の構造について説明する。
【０１１７】
しきい素子ＴＥ［ｈ］は、ｋ個の入力変数を入力信号とし、入力変数のそれぞれに乗算される重みは１である。また、他のしきい素子ＴＥ［ｊ］、（０≦ｊ≦ｈ−１）の出力信号Ｙ[j]も入力信号とする。出力信号Ｙ[j]に乗算される重みｗh[j]は、次の式（１８）で表される。
【０１１８】
ｗh[j]＝（ｋ＋１）／２j  …  式（１８）
ただし、ｊ＝０である場合、出力信号Ｙ[0]が存在しないので、ｗh[0]＝０とする。入力状態を、Ｚで表すと、しきい素子ＴＥ［ｈ］における入力と重みとの積和演算結果は、次の式（１９）、式（２０）で表される。
【０１１９】
【数１４】
0003871965.tif 000015
しきい素子ＴＥ［ｈ］のしきい値Ｔｈ[h]は、次の式（２１）で表される。
【０１２０】
【数１５】
0003871965.tif 000016
以上、しきい素子ＴＥ［ｈ］の構造について説明した。
【０１２１】
次に、メモリについて説明する。
【０１２２】
図７に示すように、ｉ＝０，１，２，…，（ｋ−１）／２としたときに、メモリＭｅｍ[i]とＭｅｍ[i+(k+1)/2]とが、しきい素子ＴＥ［１］を制御するパストランジスタによって、いずれか一方が選択されるペアになる。
【０１２３】
以上が、対称関数回路の回路構成である。
【０１２４】
（回路動作）
ｋ≧７を仮定する。入力状態Ｚが、（ｋ＋１）／２である場合（Ｚ＝（ｋ＋１）／２である場合）における回路動作について説明する。
【０１２５】
第１に、しきい素子ＴＥ［１］において、入力状態Ｚ＞Ｔｈ［１］＝ｋ／２であるので、しきい素子ＴＥ［１］の出力信号Ｙ［１］＝０になる。この出力信号Ｙ［１］は、パストランジスタＰＴ［１１］、ＰＴ［１３］、ＰＴ［１５］、ＰＴ［１７］、…を導通し、パストランジスタＰＴ［１０］、ＰＴ［１２］、ＰＴ［１４］、ＰＴ［１６］、…を遮断する。
【０１２６】
第２に、しきい素子ＴＥ［２］において、入力状態Ｚと、しきい素子ＴＥ［１］の出力信号Ｙ[1]に重みｗ2[1]を乗算した値との和を、しきい素子Ｔｈ［２］と比較する。この積和演算結果は、次の式（２２）で表される。
【０１２７】
Ｚ＋ｗ2[1]・Ｙ[1]＝（ｋ＋１）／２  …  式（２２）
また、しきい値は、Ｔｈ[2]＝（３ｋ＋１）／４であるので、Ｚ＋ｗ2[1]・Ｙ[1]＜Ｔｈ[2]であり、しきい素子ＴＥ［２］の出力信号Ｙ[2]＝１になる。この出力信号Ｙ[2]の値は、パストランジスタＰＴ［２０］、ＰＴ［２２］、…を導通し、パストランジスタＰＴ［２１］、ＰＴ［２３］、…を遮断する。
【０１２８】
上記動作を順次、繰り返すことによって、しきい素子ＴＥ［ｌｏｇ（ｋ＋１）］によって制御される２つのパストランジスタまでの全てのパストランジスタが導通または遮断される。
【０１２９】
このことによって、所定の入力状態に対して唯一の信号経路が生成される。上記操作を実行することによって、入力状態Ｚに対して、生成された信号経路が、図７に示すメモリＭｅｍ[Z]に接続され、メモリＭｅｍ[Z]に保持されているデータが出力されることを確認することができる。
【０１３０】
この回路構成と回路パラメータの設定とによって、８つのメモリに保持されている値に応じて、任意の対称関数を生成することができる。
【０１３１】
［第４の実施例］
（７入力変数対称関数回路の構成）
図８は、図７に示す論理関数機能再構成可能集積回路３００において、ｋ＝７とした場合に、７入力変数対称関数を実現する論理関数機能再構成可能集積回路４００（第４の実施例）の構成を示す図である。
【０１３２】
まず、論理関数機能再構成可能集積回路４００において、回路構造と回路パラメータとについて説明する。
【０１３３】
各しきい素子に入力される入力変数に対する重みｗは、等しく１とされる（ｗ＝１）。しきい素子ＴＥ［１］は、入力変数のみを入力し、しきい値Ｔｈ[1]＝３．５である。しきい素子ＴＥ［２］は、入力変数と、しきい素子ＴＥ［１］の出力信号Ｙ[1]とを入力する。出力信号Ｙ[1]に対する重みｗ2[1]は、ｗ2[1]＝４である。しきい値は、Ｔｈ[2]＝５．５である。しきい素子ＴＥ［３］は、入力変数と、しきい素子ＴＥ［１］とＴＥ［２］との出力信号Ｙ[1]、Ｙ[2]とを入力する。出力信号Ｙ[1]、Ｙ[2]に対する重みｗ3[1]、ｗ3[2]は、ｗ3[1]＝４、ｗ3[2]＝２である。しきい値は、Ｔｈ[3]＝６．５である。
【０１３４】
（回路動作）
入力状態Ｚが４である（Ｚ＝４）場合における回路動作について説明する。
【０１３５】
第１に、しきい素子ＴＥ［１］において、Ｚ＞Ｔｈ[1]＝３．５であるので、しきい素子ＴＥ［１］の出力信号Ｙ[1]＝０になる。この出力信号は、パストランジスタＰＴ［１１］、ＰＴ［１３］、ＰＴ［１５］、ＰＴ［１７］を導通し、パストランジスタＰＴ［１０］、ＰＴ［１２］、ＰＴ［１４］、ＰＴ［１６］を遮断する。
【０１３６】
第２に、しきい素子ＴＥ［２］において、入力状態Ｚと、しきい素子ＴＥ［１］の出力信号Ｙ[1]に重みｗ2[1]を乗算した値との和が、しきい値Ｔｈ［２］と比較される。Ｚ＋ｗ2[1]・Ｙ[1]＝４＋４×０＝４であり、Ｔｈ［２］＝５．５であるので、Ｚ＋ｗ2[1]・Ｙ[1]＜Ｔｈ［２］であり、しきい素子ＴＥ［２］の出力信号Ｙ[2]＝１になる。
【０１３７】
この出力信号Ｙ[2]の値は、パストランジスタＰＴ［２０］、ＰＴ［２２］を遮断し、パストランジスタＰＴ［２１］、ＰＴ［２３］を導通する。
【０１３８】
第３に、しきい素子ＴＥ［３］において、入力状態Ｚと、出力信号Ｙ[1]に重みｗ3[1]＝４を乗算した値と、出力信号Ｙ[2]に重みｗ3[2]＝２を乗算した値との３つの値の和と、しきい値Ｔｈ[3]との値が比較される。Ｚ＋ｗ3[1]・Ｙ[1]＋ｗ3[2]・Ｙ[2]＝４＋４×０＋２×１＝６であり、Ｔｈ［３］＝６．５であるので、Ｚ＋ｗ3[1]・Ｙ[1]＋ｗ3[2]・Ｙ[2]＜Ｔｈ［３］である。しきい素子ＴＥ［３］の出力信号Ｙ[3]＝１である。
【０１３９】
この出力信号は、パストランジスタＰＴ［３０］を導通し、パストランジスタＰＴ［３１］を遮断する。導通したパストランジスタＰＴ［１１］、ＰＴ［２０］、ＰＴ［３０］によって、メモリＭｅｍ[4]から出力端子Ｙまで、唯一の信号経路が形成される。この経路によって、Ｍｅｍ[4]に保持されているデータ値が出力される。
【０１４０】
この回路構成と回路パラメータの設定とによって、８つのメモリに保持する値に応じて、任意の対称関数を生成することができる。
【０１４１】
並列処理を行う再構成可能集積回路にとって、面積コストの低減は、重要な課題である。しきい素子は、標準的な単体トランジスタと比較して、面積コストが大きくなる。したがって、しきい素子数の低減と、単体トランジスタ数との増加を比較した場合、しきい素子数を低減する方が、面積コスト的には有利である。
【０１４２】
ところで、従来例であるＬＵＴは、上記実施例と類似の構造であるが、スイッチ回路の制御を、入力ベクトルで行っている点が異なる。入力ベクトルを用いているので、対称関数を生成する変数間の対称性を抽出するには、付加的な回路が必要であるという問題がある。
【０１４３】
そして、しきい素子を使用した２段論理フィードフォワード型回路によって、対称関数を生成することができる点が、従来から知られている。しかし、公知の回路構成では、任意のｋ入力変数対称関数を実現する場合、少なくとも｛３（ｋ＋１）／４＋１｝個のしきい素子が必要である。
【０１４４】
上記実施例においては、ＬＵＴが入力ベクトルを使用している部分を、対称性を容易に抽出するしきい素子回路を使用している構造と、しきい値の設定方法とが特徴である。そして、任意のｋ入力変数対称関数を生成するために必要なしきい素子の数は、ｌｏｇ（ｋ＋１）個である。
【０１４５】
【発明の効果】
本発明によれば、ｋ入力変数の任意の対称関数を再構成することが可能な集積回路を、ｌｏｇ（ｋ＋１）個のしきい素子によって構成することができるという効果を奏する。
【図面の簡単な説明】
【図１】本発明の第１の実施例である任意のｋ入力変数対称関数を実現する論理関数機能再構成可能集積回路１００の構成を示す図である。
【図２】しきい素子ＴＥ［ｌｏｇ（ｋ＋１）］の構造を示す図である。
【図３】しきい素子ＴＥ［１］の構造を表す図である。
【図４】ｋ入力変数対称関数回路の動作原理を示す概念図である。
【図５】本発明の第２の実施例である任意の７入力変数対称関数を実現する論理関数機能再構成可能集積回路２００の構成を示す回路図である。
【図６】図１に示す論理関数機能再構成可能集積回路１００における信号経路を示す図である。
【図７】図７は、本発明の第３の実施例である任意のｋ入力変数対称関数を実現する論理関数機能再構成可能集積回路３００の構成を示す図である。
【図８】図７に示す論理関数機能再構成可能集積回路３００において、ｋ＝７とした場合に、７入力変数対称関数を実現する論理関数機能再構成可能集積回路４００（第４の実施例）の構成を示す図である。
【図９】ｋ入力変数の任意の論理関数を生成可能な従来のＬＵＴ１０００の回路構成を示す図である。
【図１０】特開２００１−３４５９８公報に記載されているしきい素子を用いた従来の関数回路２０００の構成を示す図である。
【図１１】「ニューロンＭＯＳによる論理関数回路の一設計手法」に開示されている従来の対称関数回路３０００を示す図である。
【符号の説明】
１００、２００、３００、４００…論理関数機能再構成可能集積回路、
Ｍｅｍ(0)〜Ｍｅｍ(k)…メモリ、
ＰＴ［１０］，ＰＴ［１１］，〜，ＰＴ［１ｋ］、ＰＴ［２０］，〜，ＰＴ［（ｌｏｇ（ｋ＋１））０］…パストランジスタ、
ＴＥ［１］，ＴＥ［２］，〜，ＴＥ［ｌｏｇ（ｋ＋１）］…しきい素子、
Ｘi（ｉ＝１，２，…，ｋ）…ｋ個の入力変数、
ｗ…各しきい素子に入力される入力変数Ｘiに対する重み、
Ｙ…出力信号。
【図１】
0003871965.tif 000017
【図２】
0003871965.tif 000018
【図３】
0003871965.tif 000019
【図４】
0003871965.tif 000020
【図５】
0003871965.tif 000021
【図６】
0003871965.tif 000022
【図７】
0003871965.tif 000023
【図８】
0003871965.tif 000024
【図９】
0003871965.tif 000025
【図１０】
0003871965.tif 000026
【図１１】
0003871965.tif 000027