関数デバイス
ファジィ機能の実現は、AD変換器、DA変換器、マイクロプロセッサのソフトウエアの協同でなされ、ソフトハード両面の開発を要する。ソフトウエアを介するため、動作速度も制限される。所望のファジィ機能をしきい値付きの増幅器で実現する。左側の6個のトランジスタM11−16は、インバータとして利用される総和増幅器の本体に対応し、右側の10個のトランジスタM1−10は、総和増幅器の本体に相当する(図8)。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、関数を実行する関数デバイスに関する。
【背景技術】
【0002】
従来の関数デバイスおいて、所定の関数を処理する処理ブロックは、通常マイクロプロセッサのソフトウエアとして実装される。例えば、関数デバイスの一つであるファジィデバイス(ファジィ制御機能をもつコントローラまたはデバイス)は、ファジィ化器、ファジィ推論ブロック(処理ブロック)、およびデファジィ化器を有する。ファジィ化器とデファジィ化器は、通常ハードウエアで実装され、ファジィ推論ブロックは通常マイクロプロセッサのソフトウエアとして実装される。
【特許文献1】特開平7−334369号公報
【発明の開示】
【発明が解決しようとする課題】
【0003】
上述の関数デバイスは、以下の課題を有する。
1.処理ブロックがマイクロプロセッサにとって負荷となる。
2.処理ブロックの入力側および出力側に、それぞれADコンバータおよびDAコンバータが必要になる。
3.ハードウエアとソフトウエアの両方の開発が必要になる。
4.処理速度が、マイクロプロセッサによって処理ブロックへの入力変数を検出する時間間隔によって制限される。
【0004】
この発明はこうした点に鑑みてなされたもので、上記いずれかの、または複数の課題を解決することを目的とする。
【課題を解決するための手段】
【0005】
本発明の関数デバイスは、入力電圧に対してアナログのしきい値素子として作用し、前記入力電圧に対する重み付け演算の結果を出力電圧として生成する演算増幅器を備え、前記演算増幅器は、前記出力電圧が入力電圧に対して線形的に振る舞い、かつ所定の電源電圧で制限されるよう制御することにより、所望の関数を実現する。
【0006】
「演算増幅器」は総和型増幅器(summing amplifier)でもよいし、それ以外の例えば差動型増幅器などでもよい。「所定の電源電圧」の例は、この演算増幅器の動作電源の電圧である。また、関数は、数式を用いて表されるものの他、ルックアップテーブル等を用いて表されるものであってもよい。なお、ルックアップテーブルは、1次元あるいは2次元(すなわち入力変数の数が1あるいは2)に限らず、3次元以上(すなわち入力変数の数が3以上)であってもよい。
【0007】
前記出力電圧の上下限が前記演算増幅器の飽和特性を定めてもよく、また、演算増幅器の動作点が前記電源電圧の1/2の電圧であってもよい。
【0008】
本発明の別の態様も関数デバイスであり、複数の演算増幅器によって構成され、それら演算増幅器の入力と出力の多値電圧信号が、複数のアナログしきい値関数の重ね合わせとして所定の関数に対応するものである。
【0009】
このとき、前記演算増幅器は、入力電圧の組合せが前記関数を表現したルックアップテーブルに含まれる最大値または最小値となる出力電圧に対応するとき、その出力電圧が飽和レベルになるよう制御してもよい。ここで、ルックアップテーブルの例としては、多値論理における真理値表、およびファジィ論理におけるファジィ規則表などが挙げられる。
【0010】
また、前記関数を表現したルックアップテーブルを構成する離散的な点(当該テーブル中の要素)の間で、線形的な出力による近似がなされてもよい。ところで、ファジィ論理において、ファジィ規則が言語的な表現による場合、ある変数が「大きい」「中ぐらい」「小さい」など、間のない離散的な表現になる。そのため、それらを数値化したときにも、当然離散的になり、ファジィ規則を行列として表したとき、例えば3×3の離散的な9点による表現となる。そのため、そうした離散的な点の間の点については、離散的な点に関して定まる出力電圧の間を線形的に補間する等、近似すればよい。
【0011】
上記関数デバイスは、ソフトウエア的な処理を廃したアナログ回路として構成されてもよい。この場合、処理の高速化、回路規模の縮小等が可能になる。
【0012】
また、本発明による関数デバイスは、入力電圧を入力する入力端子と、前記入力端子から入力された前記入力電圧を処理し、前記入力電圧に対して出力すべき出力電圧を生成する処理回路部と、前記処理回路部により生成された前記出力電圧を出力する出力端子と、を備え、前記処理回路部は、入力された電圧の線形和を出力する複数のしきい値要素回路を含んでおり、前記各しきい値要素回路から出力される電圧の重ね合わせが前記出力電圧となるように、前記各しきい値要素回路に、前記入力電圧および/または他の前記しきい値要素回路から出力される電圧が入力されるように構成されていてもよい。
【0013】
「入力された電圧の線形和」は、入力される電圧をV1,V2,…,Vnとしたとき、c0+c1V1+c2V2+…+cnVnで表される。ここで、ci(i=0,1,…,n)は定数である。なお、しきい値要素回路への入力は1つ(すなわち上記n=1)でもよい。しきい値要素回路としては、例えば演算増幅器を用いることができる。
【0014】
前記しきい値要素回路は、前記線形和が所定範囲内にあるときに当該線形和を出力し、前記線形和が前記所定範囲の上限値以上であるときに当該上限値を出力し、前記線形和が前記所定範囲の下限値以下であるときに当該下限値を出力してもよい。「所定範囲」とは、例えば、しきい値要素回路の飽和レベル内の範囲(飽和レベルの下限電圧から上限電圧までの範囲)である。
【0015】
前記しきい値要素回路は、第1の電源端子にソースが接続されたPMOSトランジスタと、前記第1の電源端子よりも低い電圧が印加される第2の電源端子にソースが接続され、前記PMOSトランジスタのドレインにドレインが接続されたNMOSトランジスタとから構成されるCMOSトランジスタをp(p:奇数)段有しており、各段の前記CMOSトランジスタを構成する前記PMOSトランジスタおよび前記NMOSトランジスタの各ドレインは、次段の前記CMOSトランジスタを構成する前記PMOSトランジスタおよび前記NMOSトランジスタの各ゲートと接続されており、第1段の前記CMOSトランジスタを構成する前記PMOSトランジスタおよび前記NMOSトランジスタの各ゲートと、第p段の前記CMOSトランジスタを構成する前記PMOSトランジスタおよび前記NMOSトランジスタの各ドレインとは、フィードバック抵抗を介して接続されており、前記第1段の前記各ゲートに、当該しきい値要素回路へ入力すべき電圧が入力抵抗を通じて入力し、前記第p段の前記各ドレインから、当該しきい値要素回路から出力すべき電圧が出力されるように構成されていてもよい。この場合、簡略な構成で上記しきい値要素回路を実現することができる。
【0016】
ここで、上記p=1、すなわちしきい値要素回路に設けられるCMOSトランジスタは1つでもよい。この場合、その1つのCMOSトランジスタが第1段のCMOSトランジスタでもあり第p段(最終段)のCMOSトランジスタでもある。また、処理回路部に含まれる複数のしきい値要素回路のそれぞれに設けられるCMOSトランジスタの数(上記pのこと)は、等しい必要はなく、相異なっていてもよい。
【0017】
前記第1の電源端子に印加される電圧が前記所定範囲の上限値を定め、前記第2の電源端子に印加される電圧が前記所定範囲の下限値を定めてもよい。第2の電源端子は、接地してもよい。このとき、第2の電源端子に印加される電圧は0ということになる。
【0018】
前記入力電圧および前記出力電圧は共にアナログ信号であり、前記処理回路部は、前記入力電圧をアナログ信号のまま処理してもよい。
【0019】
上記関数デバイスは、ファジィ制御を実行するもの(ファジィデバイス)であってもよい。このとき、当該デバイスは、A/D変換器であるファジィ化器、D/A変換器であるデファジィ化器、およびマイクロプロセッサによるソフトウエア的な処理を廃したアナログ回路として構成されていてもよい。
【0020】
本発明による関数デバイスは、当該デバイスの出力が第1の直線上に乗っている第1出力区間を実現する第1の回路と、前記出力が第2の直線上に乗っている第2出力区間を実現する第2の回路と、を含むことを特徴としてもよい。この関数デバイスにおいては、入力に対して線形的な出力特性をもつ回路が複数合成されることにより、所望の関数が実装される。上記第1および第2の回路は、例えば、1または2以上のしきい値要素回路を含んで構成される。
【0021】
前記第1の回路の出力は、前記第1出力区間以外の区間において一定値をとり、前記第2の回路の出力は、前記第2出力区間以外の区間において一定値をとってもよい。この場合、第1の回路は、第1出力区間以外の区間において、当該デバイスの出力が乗っている直線の傾きに影響を与えない。第2の回路についても同様である。したがって、特に設計容易な関数デバイスが実現される。
【0022】
本発明のファジーデバイスは、入力電圧に対してアナログのしきい値素子として作用し、前記入力電圧に対する重み付け演算の結果の反転を出力電圧として生成する演算増幅器を備え、前記演算増幅器は、前記出力電圧が入力電圧に対して線形的に振る舞い、かつ所定の電源電圧で制限されるよう制御することにより、所望のファジー機能を実現する。
【0023】
本発明の別の態様もファジーデバイスであり、複数の演算増幅器によって構成され、それら演算増幅器の入力と出力の多値電圧信号が、複数のアナログしきい値機能の重ね合わせとして所定のファジー機能に対応するものである。
【0024】
このとき、前記演算増幅器は、入力電圧の組合せがファジー規則を表現した行列に含まれる最大値または最小値となる出力電圧に対応するとき、その出力電圧が飽和レベルになるよう制御してもよい。
【0025】
また、ファジー規則の仕様を構成する離散的な点の間で、線形的な出力による近似がなされてもよい。
【0026】
以上のいずれかのファジーデバイスにおいて、このデバイスは、A/D変換器であるファジー化器、D/A変換器であるデファジー化器、およびマイクロプロセッサによるソフトウエア的な処理を廃したアナログ回路として構成されてもよい。この場合、処理の高速化、回路規模の縮小等が可能になる。
【0027】
本発明の多値論理デバイスは、入力電圧に対してアナログのしきい値素子として作用し、前記入力電圧に対する重み付け演算の結果を出力電圧として生成する演算増幅器を備え、前記演算増幅器は、前記出力電圧が入力電圧に対して線形的に振る舞い、かつ所定の電源電圧で制限されるよう制御することにより、所望の多値論理関数を実現する。
【0028】
本発明の別の態様も多値論理デバイスであり、複数の演算増幅器によって構成され、それら演算増幅器の入力と出力の多値電圧信号が、複数のアナログしきい値関数の重ね合わせとして所定の多値論理関数に対応するものである。
【0029】
このとき、前記演算増幅器は、入力電圧の組合せが多値論理規則を表現した行列に含まれる最大値または最小値となる出力電圧に対応するとき、その出力電圧が飽和レベルになるよう制御してもよい。ここで、「多値論理規則を表現した行列」の例としては、多値論理における真理値表が挙げられる。
【0030】
また、多値論理規則の仕様を構成する離散的な点の間で、線形的な出力による近似がなされてもよい。
【0031】
上記多値論理デバイスは、ソフトウエア的な処理を廃したアナログ回路として構成されてもよい。この場合、処理の高速化、回路規模の縮小等が可能になる。
【0032】
また、本発明による多値論理デバイスは、入力論理値に対応付けられた入力電圧を入力する入力端子と、前記入力端子から入力された前記入力電圧を処理し、前記入力論理値に対して出力すべき出力論理値に対応付けられた出力電圧を生成する処理回路部と、前記処理回路部により生成された前記出力電圧を出力する出力端子と、を備え、前記処理回路部は、入力された電圧の線形和を出力する複数の演算増幅器を含んでおり、前記処理回路部における最終段の前記演算増幅器から出力される電圧が前記出力電圧となるように、前記各演算増幅器に、前記入力電圧および/または他の前記演算増幅器から出力される電圧が入力されるように構成されていることを特徴としてもよい。
【0033】
「最終段の演算増幅器」は、上述の通り、その出力が上記出力電圧となる演算増幅器であり、これに該当する演算増幅器が処理回路部に複数設けられていてもよい。すなわち、多値論理における出力変数が複数ある場合には、最終段の演算増幅器を複数設ければよい。
【図面の簡単な説明】
【0034】
【図1】図1(a)は、総和増幅器の一般構造、図1(b)はそのCMOSによる実装の例を示す図である。
【図2】図2(a)は総和増幅器の振る舞いを電圧座標系で示し、図2(b)は同様に多値変数座標系で示す図である。
【図3】図3(a)はfa(x)、図3(b)は−maj(x,−a,−k)をそれぞれ示す図である。
【図4】関数(x+1)modmの実装を示す図である。
【図5】従来のファジィデバイスの構造を示す図である。
【図6】表1によって特定される関数を模式的に示す図である。
【図7】表1と表2によって特定されるファジィコントローラのCMOSによる実装を示す図である。
【図8】wash_time行列によって特定されるファジィコントローラのCMOSによる実装を示す図である。
【図9】図8のファジィコントローラの動作のSPICEシミュレーション結果を示す図である。
【図10】(a)は7値関数の一例をフラグメントコンスタントで、(b)はフラグメントリニアで示した図である。
【図11】k=7の場合の関数M−1(x)を示す図である。
【図12】(22)式を実装した回路を示す図である。
【図13】(a)〜(c)は、図12の回路の振る舞いの一例を示す図である。
【図14】(a)〜(d)は、(25)式に対応する回路の振る舞いの一例を示す図である。
【図15】入力変数のメンバーシップ関数を示す図である。
【図16】(a)は表8のF1(y)を示し、(b)はF2(y)を示す図である。
【図17】F1(y)を構築する手順を示す図である。
【図18】(37)式に従って実装された回路の構成を示す図である。
【図19】(a)および(b)は、それぞれ3ステージおよび5ステージのプッシュプルCMOS演算増幅器を用いて構成された総和増幅器の一例を示す図である。
【図20】SPICEシミュレーションに用いるコントローラ回路を示す図である。
【図21】3ステージの増幅器を用いてコントローラを構成した場合のシミュレーション結果を示す図である。
【図22】5ステージの増幅器を用いてコントローラを構成した場合のシミュレーション結果を示す図である。
【図23】関数f1(z)を表すグラフである。
【図24】関数f1(z)の5つの構成要素を表すグラフである。
【図25】関数α1(z)の求め方を説明するためのグラフである。
【図26】関数α2(z)の求め方を説明するためのグラフである。
【図27】マトリクスM3の実装の仕方を説明するための図である。
【図28】(a)は、関数ε1(z)を表すグラフである。(b)は、関数ε2(w)を表すグラフである。
【図29】(a)は、関数ε3(y)を表すグラフである。(b)は、関数−ε4(x)を表すグラフである。
【図30】関数f4を表すグラフである。
【図31】関数Φ1(x)を表すグラフである。
【図32】関数f5を表すグラフである。
【図33】関数Φ2(x)を表すグラフである。
【図34】ピラミッド関数を表すグラフである。
【図35】図34に示すピラミッド関数の実装の仕方を説明するための図である。
【図36】関数γ(x)を表すグラフである。
【図37】ピラミッド関数の変形例を示すグラフである。
【図38】(a)は、図34のピラミッド関数のy軸に垂直な断面を示すグラフである。(b)は、図34のピラミッド関数のx軸に垂直な断面を示すグラフである。
【図39】(a)−(c)は、ピラミッド関数の断面形状を説明するための図である。
【図40】(a)−(d)は、関数f6(x,y)の実装の仕方を説明するための図である。
【図41】(a)−(f)は、関数f6(x,y)の実装の仕方を説明するための図である。
【図42】(a)は、図43中のHS3−HS33の構成例を示す図である。(b)は、図43中のPHS1およびPHS2の構成例を示す図である。
【図43】表9に示す関数を実装したコントローラ回路を示す図である。
【図44】図43に示す回路についてのSPICEシミュレーションの結果を示すグラフである。
【図45】図43に示す回路についてのSPICEシミュレーションの結果を示すグラフである。
【図46】図43に示す回路についてのSPICEシミュレーションの結果を示すグラフである。
【図47】図43に示す回路についてのSPICEシミュレーションの結果を示すグラフである。
【図48】図43に示す回路についてのSPICEシミュレーションの結果を示すグラフである。
【図49】図43に示す回路についてのSPICEシミュレーションの結果を示すグラフである。
【図50】図43に示す回路についてのSPICEシミュレーションの結果を示すグラフである。
【図51】関数F1(X,V)を示す図である。
【図52】関数F2(X,V)を示す図である。
【図53】関数F1(X,V)を示すグラフである。
【図54】表10に示す関数を実装したファジィコントローラ回路を示す図である。
【図55】図54に示す回路についてのSPICEシミュレーションの結果を示すグラフである。
【図56】図54に示す回路についてのSPICEシミュレーションの結果を示すグラフである。
【図57】図54に示す回路についてのSPICEシミュレーションの結果を示すグラフである。
【図58】図54に示す回路についてのSPICEシミュレーションの結果を示すグラフである。
【図59】図54に示す回路についてのSPICEシミュレーションの結果を示すグラフである。
【図60】図54に示す回路についてのSPICEシミュレーションの結果を示すグラフである。
【図61】(a)は、任意の関数y=f(x)を表すグラフである。(b)は、関数y=f(x)に対応する関数q=h(p)を表すグラフである。
【図62】関数q=h(p)がサンプリングされた様子を示すグラフである。
【図63】副関数ηi(p)を表すグラフである。
【図64】(a)は、各サンプリング点に対応する副関数を示すグラフである。(b)は、全ての副関数を重ね合わせて得られるグラフである。
【図65】被実装関数が直線の場合を説明するための図である。
【図66】y=sin(x)の実装例を説明するための図である。
【図67】y=sin(x)を実装した回路(関数デバイス)を示す図である。
【図68】図67中の副関数η2(p)を実装した回路を示す図である。
【符号の説明】
【0035】
M1−24…トランジスタ、R1−93…抵抗、S1−S11,HS1−33,PHS1,2,7…総和増幅器(しきい値要素回路)。
【発明を実施するための最良の形態】
【0036】
1.総和増幅器の多値論理要素回路としての利用
総和増幅器の振る舞いは、図1(a)のような非接続状態で正確に決まり、以下のごとく記述される。ここでは、この回路に含まれるメンバーのinfinitesimal orderが増幅ファクターによって決まる。
【0037】
ここで、Vddは電源電圧、Vjはj番目の入力電圧、Rjはj番目の抵抗の値、R0はフィードバック抵抗値、Vdd/2は増幅器の動作中間点である。このような総和増幅器のCMOSによる実装例を図1(b)に示す。
に対するVOUTの依存性は図2(a)に示される。すなわち、この演算増幅器は、入力された電圧(V1,V2,…,Vn)の線形和:
を出力する。ただし、この演算増幅器は、当該線形和が所定範囲の上限値(=Vdd)以上であるときには当該上限値を出力し、当該線形和が所定範囲の下限値(=0)以上であるときには当該下限値を出力する。
【0038】
以下のようなm=2k+1個の電圧レベル値を多値変数として有する回路を考える。なお、このように多値論理における値の数(ここではm)が奇数であると仮定しても、議論の一般性は保たれる。
【0039】
また、R0/Rj=ωjとおく。すると(1)式は、以下のように表現できる。
図2(b)は(3)式を模式的に示す。
【0040】
以降、振る舞いが(3)式のシステムによって規定される機能要素回路を「多値しきい値要素回路」とよぶ。特に、最も簡単なケースであるωj=1、j=1,2,3(n=3)の場合について、(3)式を多数決関数とよび、y=maj(x1,x2,x3)と表すことにする。
【0041】
2.多値論理におけるしきい値要素回路の関数完全性
基本演算またはその組は、その論理が基本演算の重ね合わせで表現できるとき、任意の多値論理において関数完全性を有すると言える。関数完全性を有する集合は、いくつか知られている。そのため、ある新規の関数の関数完全性を証明するためには、その関数の重ね合わせによって関数完全性を有する既知の集合が表現できることを言えば足りる。m値論理において関数完全性を有するものとして、以下のWebb関数が知られている。
【0042】
多値論理におけるしきい値演算の関数完全性を証明するには、しきい値または多数決関数によってWebb関数が表現できることを言えば足りる。
【0043】
まず、max(x1,x2)という関数をしきい値関数で表現する。このために、関数fa(x)を以下のようにとる。
【0044】
この関数は図3(a)に示される。また、−maj(x,−a,−k)という関数は図3(b)に示される。実際、x<aであれば、x−a−k<−kゆえ、−maj(x,−a,−k)=−kとなる。よって、すべてのxについて、fa(x)+maj(x,−a,−k)=a+kが成り立つことがわかる(図3参照)。その結果、
となる。いま、−maj(a,b,c)=maj(−a,−b,−c)であることを考慮すれば、(6)式から以下の式が導かれる。
【0045】
続いて、関数(x+1)modmをしきい値関数で表すことを考える。これは、図4を参照すれば簡単に行うことができる。念のため説明しておくと、
(x+1)modm=−maj(−maj(x,1,0),2k・maj(−maj(x,1−k,−k),k,0),0)
と表せる。この式のxに(7)式を代入すると、(4)式のWebb関数が多数決関数によって表現されることがわかる。
【0046】
3.多値のアナログ回路としてのファジィデバイス
従来のファジィデバイスまたはファジィコントローラ、すなわちファジィ制御機能を有する回路は、たいてい図5に示す構成をもつ。
【0047】
アナログ変数X={x1,x2,...,xn}がファジィデバイスの入力である。ファジィ化器(Fuzzificator)はアナログ変数xjを重み付けされた言語表現によるデジタル変数A={a1,a2,...,an}に変換する。例えば、「変数xjは平均的な正の値に関しては重み0.3をもち、大きな正の値に関しては重み0.4をもつ」などである。
【0048】
ファジィ推論ブロックは、「もしajが平均的な正の値をもち、aiが小さな負の値をもつなら、bkは小さな正の値をもつ」等のファジィ規則に基づき、重み付けされた、言語表現によるデジタル変数値B={b1,b2,...,bk}を生成する。
【0049】
デファジィ化器(Defuzzificator)は、重み付けされた言語表現によるデジタル変数B={b1,b2,...,bk}を出力アナログ変数Y={y1,y2,...,yk}に変換する。
【0050】
一般に、ファジィ化器とデファジィ化器はADA、すなわちアナログ−デジタル−アナログコンバータにより、ハードウエア実装され、ファジィ推論は通常マイクロプロセッサのソフトウエアで実装される。
【0051】
一方、各入力アナログ変数に曖昧さなく対応する一組の出力アナログ変数が存在する。したがって、ファジィデバイスは以下のごとき関数を実行するアナログ信号コンバータと考えることができる。
【0052】
(8)式は、n次元曲面系を表す。これらの曲面を区間ごとに線形な近似によって特定する可能性を考える。m=2k+1個の言語表現による変数aj値がアナログ変数xjに対応するとする。ファジィ規則系に則り、m値の論理関数系を以下のように表すことができる。
【0053】
このことから明らかなごとく、もしファジィコントローラが(9)式で表現されるなら、それは多値しきい値要素回路の重ね合わせで表現できる。この場合、飽和レベル((3)式および図2(b)参照)以内の領域(所定範囲)におけるしきい値要素回路の線形的な振る舞いにより、仕様を決める離散点の間で自然な線形近似がなされる。
【0054】
4.しきい値要素回路を用いたファジィコントローラ実装例
4.1 題材として″Design of a Rule−Based fuzzy controller for the Pitch Axis of an Unmanned Research Vehicle″,Deepak Sabharwal and Kuldip S.Rattan,Department of Electrical Engineering,Wright State University,Dayton,OH 45435,CH3158−3/92/0000−0449(1992 IEEE,Fuzzy Control Systems,CRC Press LLC,Abraham Kandel(Edited by),Lofti A.Zadeh(Foreword by),September 1993,pp81−86を考える。
【0055】
このファジィ制御の規則は、誤差e=ref−outputと誤差の変化率
に基づく。
ファジィ化器は7レベルの言語表現による変数に対応する。各レベルは、NB−負の大(−3);NM−負の中(−2);NS−負の小(−1);ZO−ゼロ(0);PS−正の小(1);PM−正の中(2);PB−正の大(3)である。出力は均一な勾配をもつ。
【0056】
デファジィ化の際、NB値はVOUT=0V、ZO値はVOUT=1.75V、PB値はVOUT=3.5Vをそれぞれ生成する。ここで電源電圧Vdd=3.5Vである。49のファジィ規則は表1に示される。
【0057】
表2は7値論理関数として表1を示したルックアップテーブル(LUT)である。
【0058】
表1から、ファジィ関数は北西から南東へ向かう対角線について対称であり、e−ceに依存する。この依存性を図6に示す。図2と図6の比較から明らかなとおり、表2の関数を再現するために、ひとつの二入力総和増幅器とひとつのインバータを準備するだけでよい。−kから+kの間にある論理変数の反転は、
なる演算に当たり、総和増幅器の出力電圧の空間においては、
なる演算に相当する。
【0059】
図7は、所望の関数に対応するCMOS回路(関数デバイス)であり、16個のトランジスタと5個の抵抗を有する。同図において、″0.4u″と″0.6u″は半導体のプロセス、すなわちトランジスタのサイズを示す。左側の6個のトランジスタM11−16は、インバータとして利用される総和増幅器の本体に対応し、右側の10個のトランジスタM1−10は、総和増幅器の本体に相当する。具体的には、この関数デバイスは、トランジスタM1−10および抵抗R1,2,5が適宜接続されて構成された演算増幅器と、トランジスタM11−16および抵抗R3−4適宜接続されて構成された演算増幅器との2つの演算増幅器(しきい値要素回路)を含む処理回路部を備えている。これらの演算増幅器のうち図中右側が最終段の演算増幅器に該当する。また、図中VeおよびVceと記載されている部分が関数デバイスの入力端子、Voutputと記載されている部分が出力端子、R1−3が入力抵抗、R4−5がフィードバック抵抗、M6−10およびM14−16のソースに接続されている端子が第1の電源端子(電源電圧Vddが印加されている)、M1−5およびM11−13のソースに接続されている端子が第2の電源端子(接地されている)である。
【0060】
4.2 ″Manipulator for Man−Robot Cooperation(control method of Manipulator/Vehicle System with fuzzy inference)″,Yoshio Fujisawa,Toshio Fukuda,Kazushiro Kosuge,Fumihito Arai(Nagoya University);Eiji Muro,Haruo Hoshino,Takashi Miyazaki(Takenaka Corporation Technical Research Laboratory); Kazuhiko Ohtsubo,Kazuo Uehara(Komatsu Ltd,Technical Research Center,Kanagawa,Japan);0−7801−0582−5/92(1992 IEEE,fuzzy control Systems,CRC Press LLC,Abraham Kandel(Edited by),Lofti A.Zadeh(Foreword by),September 1993,pp168−172の例。
【0061】
この例では、実験的に考えられたマニュピレータがふたつの力/トルクのセンサをもつ。センサの一方は、演算力センサFhで、他方は「環境力センサ」ωである。これらの値は、3つの言語表現による変数−S(小さい),M(中ぐらい)およびB(大きい)をもち、また以下の5つのファジィ規則をもつ。
【0062】
もし ω=S なら 出力=B;
もし ω=B なら 出力=S;
もし ω=M およびFh=S なら出力=S;
もし ω=M およびFh=M なら出力=M;
もし ω=M および Fh=B なら出力=B;
【0063】
この例の場合、出力は表3のごとく、3値論理関数となる。
【0064】
簡単な置き換えOutput=maj(2ω,−Fh,0)により、CMOSによる実装が図7に示すものと同じになることがわかる。なお、Vc=VFh,Vcc=Vωという置換をなし、かつR2=0.5Mオームとする。
【0065】
4.3 洗濯機のためのファジィ制御
Aptronix Incorporated社のwww.aptronix.com/fuzzynet.の例である。
【0066】
4.3.1 コントローラ仕様
入力変数:
dirtness_of_clothes(服の汚れ)の″程度″
大きい(L),中ぐらい(M),小さい(S);
type_of_dirt(汚れの種類)の″程度″
脂っぽい(G),中ぐらい(M),脂っぽくない(NG).
【0067】
出力変数:
wash_time(洗濯時間)″分″
非常に長く(VL)、長(L)、中(M)、短(S)、非常に短く(VS);
【0068】
ファジィ規則:
もし dirtness_of_clothesが大きく、type_of_dirtが脂っぽいならwash_timeは非常に長く;
もし dirtness_of_clothesが中ぐらいで、type_of_dirtが脂っぽいなら wash_timeは長く;
もし dirtness_of_clothesが小さく、type_of_dirtが脂っぽいなら wash_timeは長く;
もし dirtness_of_clothesが大きく、type_of_dirtが中ぐらいなら wash_timeは長く;
もし dirtness_of_clothesが中ぐらいで、type_of_dirtも中ぐらいなら wash_timeは中ぐらい;
もし dirtness_of_clothesが小さく、type_of_dirtが中ぐらいなら wash_timeは中ぐらい;
もし dirtness_of_clothesが大きく、type_of_dirtが脂っぽくないなら wash_timeは中ぐらい;
もし dirtness_of_clothesが中ぐらいで、type_of_dirtが脂っぽくないならwash_timeは短く;
もし dirtness_of_clothesが小さく、type_of_dirtが脂っぽくないなら wash_timeは非常に短く
【0069】
以上を言語表現による変数の行列で示せば、表4となる。
また、多値変数の行列で示せば表5となる。
【0070】
4.3.2関数の分解
「wash_time」の仕様は以下のように分解される。
【0071】
したがって、以下のように書ける。
【0072】
いま、1変数のある関数を考える。
【0073】
(11)式において、Yはdirtness_of_clothesに対応する。しかし、Yは−2から+2まで変化する。なぜなら、多値変数の行列に示される出力値(これはフィードバックループを通じて入力値XとYになる)が−2から+2まで変化するためである。この仮定は、出力値の範囲と入力値の範囲が異なるため、必要である。このため、Yはここで以下のとおりとなる。
【0074】
(11a)式から、数値を−2と+2で飽和させることにより、(11)式が得られる。ここで、以下の中間的な和を導入する。
【0075】
Xはtype_of_dirtに対応し、以下のように、−2から+2までとりうる。
【0076】
その結果、wash_timeは以下のように表記できる。
【0077】
さて、ここで次の関数を導入する。
【0078】
(12)式同様、以下の中間的な和を導入する。
【0079】
最後に、wash_timeが以下のように定式化される。
【0080】
図8はこうして得られたCMOS回路であり、(16)式、(11)式および(14)式に基づく。この回路は、4個の多値しきい値要素回路の重ね合わせで実装される。この関数デバイスは、トランジスタM1−6および抵抗R1−3が適宜接続されて構成された演算増幅器(図中左上部分)と、トランジスタM7−12ならびに抵抗R4−6およびR10が適宜接続されて構成された演算増幅器(図中左下部分)と、トランジスタM13−18および抵抗R7−8が適宜接続されて構成された演算増幅器(図中右下部分)と、トランジスタM19−24および抵抗R11−15が適宜接続されて構成された演算増幅器(図中右上部分)との4つの演算増幅器を含む処理回路部を備えている。これらの演算増幅器のうち図中右上のものが最終段の演算増幅器に該当する。また、図中XおよびYと記載されている部分が関数デバイスの入力端子、wash_timeと記載されている部分が出力端子である。
【0081】
図8の左上部分は(16)式の
に対応する。抵抗R2は20000kオームで、R1の倍である。その結果、Y/2が実現される。抵抗R3は理想的には10000kオームであるが、実際には9300kオームとしてこの回路部分の増幅ゲインに合わせた調整をしている。R3は飽和値の下限である、
における−2を実現する。
【0082】
左下の回路部分は、(16)式の
に対応する。抵抗R5およびR10は9500kオームだが、理想的には10000kオームのものである。抵抗R6は5000kオームで、R4の半分である。これにより、飽和値の上限の倍である、
における4を実現する。抵抗R15は、左下回路と右上回路を接続し、18000kオームである。その理想値は20000kオームである。R15はR11の約倍であり、
における0.5を実現する。
【0083】
右上の回路は、総和増幅器本体に対応し、(16)式における−1の機能を自身が備える。抵抗R13は20000kオームで、R11の倍である。その結果、飽和値の下限である−2にR11/R13である1/2が乗じられ、−1が実現する。
【0084】
右下の回路は、(16)式における−0.5Xに対応する。0.5は抵抗R12をR11の倍の20000kオームとすることで実現する。
【0085】
図9は図8の回路の動作をSPICEシミュレーションした結果を示す。横軸と縦軸は、それぞれ変数Yと出力電圧を示す。同図で出力値が「−2」のとき、出力電圧が0Vになる。その例は同図の(0V,0V)の点にある。同様に、出力値が「−1」のとき、出力電圧は0.9Vになる。これは(1.75V,0.9V)の点に見られる。以下、出力値が「0」「1」「2」のとき、出力電圧はそれぞれ1.8V、2.5V、3.2Vになる。
【0086】
5.″masking of the input″の導入
以上示したように、総和増幅器は、(任意の値の)任意の多値論理において関数完全性を有するしきい値要素回路であり、アナログファジィデバイスを実装するための基底となることができる。以下では、「入力のマスキング(masking of the input)」と呼ばれる手法を用いた、関数回路の設計について述べる。引き続き、値の数は、奇数(k=2a+1)個であるとする。
【0087】
ファジィコントローラの振る舞いを記述した関数は、次の第1又は第2の方法によって適切に表すことができる。第1の方法は、「もしAであるならば、Bとする」というタイプのファジィ規則によって表す方法である。ここで、AやBは、言語表現による変数(言語変数)である。第2の方法は、一組の言語変数が一つの出力に対応するテーブルとして表す方法である。
【0088】
いま、X={x0,x1,…,xn−1}を一組の入力多値変数とし、Y=F(X)を出力変数とする。ここで、−a≦xj≦aである。すると、2値論理におけるShannon分解(Shannon’s decomposition)と同様に、多値論理においても下記式を構築することができる。
【0089】
(17)式は、更に拡張することができ、したがって変数除去法(method of exclusion of variables)により、ファジィ回路を構築できることを示している。そのためには、下記(18)式に対応する副回路(sub−circuit)が必要となる。
ここで、Z⊂Xであり、Aは変数Zの値の組合せである。
【0090】
(18)式を実行する基本的な要素(副回路)があれば、ファジィ規則の体系に従って直ちにファジィデバイスを得ることができる。しかしながら、(17)式および(18)式は、いわゆるフラグメントコンスタント(fragment−constant)タイプの多値関数を表している。図10(a)および図10(b)は、7値関数の一例を示している。フラグメントコンスタントである図10(a)の関数は、ファジィ規則を表すテーブル(ファジィ規則表)に完全に対応するが、ファジィ化およびデファジィ化のプロセスを考慮に入れていない。これらのプロセスを考慮するのであれば、上記関数は、図10(b)に示すようなフラグメントリニア(fragment−linear)であるべきである。このようなフラグメントリニアな関数によれば、ファジィ化およびデファジィ化においてそれぞれ入力変数および出力変数が適当に分配される。
【0091】
6.総和増幅器による入力のマスキング
下記式で表される振る舞いを示す反転型の総和増幅器を考えることにする。
ここで、A={α1,α2,…,αn}は重み係数(weight coefficients)、X={x1,x2,…,xn}はアナログ変数または多値変数、βはしきい値を象徴する定数、±aは飽和値(k値論理:k=2a+1の場合)をそれぞれ表している。
【0092】
いま、下記式で表されるマスキング関数(masking function)Mα(x)を導入する。
ここで、α(−a≦α≦a)は、変数xについてのある特定の値である。x=αのときMα(α)=0であることがわかる。図11には、例としてk=7の場合のM−1(x)を示す。
【0093】
電源電圧Vddが論理値のaに対応し、接地電位のVgndが論理値の−aに対応することを考えると、マスキング関数は、総和増幅器を用いて下記式のように実装することができる。
ここで、|α|は、αの絶対値を意味している。
【0094】
このようなマスキング関数を用いることにより、下記式で表されるファジィ規則に対応する回路を構築することができる。
この規則は、x=αにおいて関数F(x=α,Y)を出力として抽出することを意味する。図12は、この式に対応する回路を示している。同図においては、4つの総和増幅器が設けられている。また、同図の回路は、下記式で表される。
例として、α=−1、F(x=−1,Y)=2、k=7の場合を考える。すなわち、図12の回路は、「If x=−1 then y=2 else y=0」というファジィ規則を実行する。このとき、図12の回路の振る舞いは、図13(a)〜図13(c)に示されるとおりである。図13(a)はM−1(x)およびM1(x)を示し、図13(b)はS(−M−1(x);2)およびS(M1(x);2)を示し、図13(c)は図12の回路における最終的な出力(すなわち(23)式におけるy)を示す。
【0095】
次に、If−Then規則の前件部((22)式ではx=αのこと)において、下記式のように、変数xがある一定の範囲を持つ場合を考える。
この規則は、(23)式と同様、下記式(「y=」で始まる一番下の式)で表される。
図12においてMα(x)およびF(x=α,Y)をそれぞれMλ,δ(x)およびΦ(Y)で置き換えることにより、(25)式に対応する回路を構築することができる。
【0096】
例として、λ=−2、δ=1、Φ(Y)=−2、k=9の場合について、(25)式に対応する回路の振る舞いを図14(a)〜図14(d)に示す。図14(a)はM−3(x)およびM2(x)を示し、図14(b)はM−2,+1(x)を示し、図14(c)はS(−M−2,+1(x);−2)およびS(M−2,+1(x);−2)を示し、図14(d)は最終的な出力((25)式におけるy)を示す。
【0097】
7.マスキング関数を用いた実装例
「A Fuzzy Logic Force Controller for a Stepper Motor Robot,of J.G.Hollinger,R.A.Bergstrom,and J.S.Bay,Bradley Department of Electrical Engineering,Virginia Polytechnic Institute and State University,Blacksburg,Virginia..」から引用したファジィコントローラについて、上述のマスキング関数を用いた実装例を示す。
【0098】
このファジィコントローラは、「位置誤差(posiaon error)」および「力誤差(force error)」という2つの言語変数をもつ関数を実装する。以下、これらの変数をそれぞれx,yと表す。変数x,yはそれぞれ、NL、NM、NS、ZE、PS、PM、PLという7つの値を有する。また、それらのメンバーシップ関数は図15に示されるとおりである。
【0099】
出力言語変数に対するファジィ推論エンジンのルールを示すマトリクスは、表6に示すとおりである。
【0100】
表6を対応する多値論理関数の値で表したものが表7である。
【0101】
表7は、表8に示す2種類の列から構成されていることがわかる。
【0102】
図16(a)および図16(b)は、表8に示す2種類の列を、それぞれ力誤差yの関数として描いたものである。
【0103】
(20)式および(21)式ならびに図14(a)および図14(b)のアナロジーにより、図17(a)および図17(b)に示すように、F1(y)を構築することができる。よって、F1(y)およびF2(y)は、下記式のように実装することができる。
【0104】
表6および表7より、コントローラの出力は、変数xについて場合分けすると、次のように表される。
【0105】
(27)式で表される規則は、次の2つの規則に分けることができる。
【0106】
(28)式の規則は、(25)式、(26)式および(23)式に従って、次のように実装できる。
【0107】
(29)式の規則を実装するために、先ずは下記式で表される規則を実装することを考える。
この規則は、下記式のように実装される。
続いて、(29)式の規則を次のように表す。
したがって、(32)式および(33)式より、(29)式の規則は下記式のように実装することができる。
ゆえに、コントローラの出力((27)式におけるOutput)は、下記式となる。
【0108】
(32)式においてS10で表される総和増幅器が常に飽和レベル以内の領域で動作する(すなわちS10の括弧内が常に−3以上3以下の値をとる)ことを考慮すれば、(35)式を一層簡略化することが可能である。いま、−Φ2を下記式のように表す。
すると、コントローラの実装を表す式は、次のようになる。
(37)式に従って実装された回路の構成を図18に示す。同図においては、各加算増幅器の入力の重みを表す係数が記載されている。例えば、S1で表される総和増幅器について見ると、2つの入力(Vddおよびy)それぞれが3/2倍されることを示している。この関数デバイスは、S1−S11ならびにM+3(x)およびM−3(x)の13個の演算増幅器を含む処理回路部を備えている。これらの演算増幅器のうちS11が最終段の演算増幅器に該当する。また、図中xおよびyと記載されている部分が関数デバイスの入力端子、Voutと記載されている部分が出力端子である。
【0109】
8.SPICEシミュレーションの結果
図18に示すコントローラ回路における各基底として、3ステージおよび5ステージのプッシュプルCMOS演算増幅器を用いる。これらの増幅器においてフィードバック経路に挿入される抵抗の抵抗値は、2メガΩである。このような増幅器の一例を図19(a)および図19(b)に示す。図19(a)は、3ステージのプッシュプルCMOS演算増幅器を用いて構成された総和増幅器を示す。図19(b)は、5ステージのプッシュプルCMOS演算増幅器を用いて構成された総和増幅器を示す。
【0110】
シミュレーションに用いるコントローラ回路を図20に示す。SPICEシミュレーション(MSIM 8)により、図20のコントローラの振る舞いをチェックした。トランジスタとしては、0.4μmのMOSIS BSIM3v3.1,7levelモデルを用いた。
【0111】
シミュレーションにおいて電源電圧は3.5Vとした。入力xを0Vから3.5Vまで線形に変化させ、入力yをその論理値に従って離散的に変化させた。xを0Vから3.5Vまでの1サイクルを変化させる間、yの値を一定とした。
【0112】
3ステージの増幅器を用いてコントローラを構成した場合のシミュレーション結果を図21に示す。コントローラの振る舞いは正しい(表7に従って出力変数の論理値が入力変数の論理値に依存している)ことがわかる。
【0113】
図22は、5ステージの増幅器を用いてコントローラを構成した場合のシミュレーション結果である。図21の場合に比して、出力信号の電圧レベルとその論理値とが一層高い精度で対応していることがわかる。それゆえ、ステージ数の多い増幅器を用いることにより、論理値の数k(=2a+1)の値が大きい場合(例えば9以上の場合)にも好適な振る舞いを呈するコントローラを実現することができる。
【0114】
9.さらなる実装例
次に、表9のファジィ規則表により表される関数を実装する。
【0115】
(ステップ1:対称成分の抽出)
まず、(50)式に示すように、表9に示すマトリクスMを2つのマトリクスM1,M2に分解する。M1はMから対称成分を抽出したものであり、M2はその残余成分であり非対称となっている。M2において、例えば「≦0」は、0以下の値であれば任意の値としてよいことを意味している。同様に、「≧2」は、2以上の任意の値としてよいことを意味している。これは、演算増幅器の飽和特性に由来している。
対称成分(M1)は、1変数:z=(x+y)/2の関数f1(z)として表すことができる。この関数を図23に示す。
【0116】
関数f1(z)を実装すべく、図24に示す5つの関数αj(z)の和としてf1(z)を表す。すなわち、
である。また、α1を例にとって、総和増幅器を用いてαjを構築することを考える。図25からわかるように、β1は、β1=−S(k1z+a1)と実装できる。z=−2.25のときβ1=0となるべきなので、a1=2.25k1となる。k1=6/0.5=12であることを考慮すると、a1=27が求まり、β1=−S(6x+6y+27),δ1(z)=β1(x,y)/6となる。よって、
である。
【0117】
続いて、図26を参照しつつ、α2(z)の構築を考える。β2=−S(k2z+a2)とおくと、z=−1のときβ2=0ゆえ、a2=k2となる。k2=6を考慮すると、a2=6が求まり、β2=−S(3x+3y+6),δ2(z)=β2(z)/3となる。よって、
である。
【0118】
同様の手法により、下記式が得られる。
(52)式および(53)式に示す演算は飽和することなく実行されるので、(51)式は1つの総和増幅器で演算することができる。以上より、下記式が得られる。
【0119】
関数f1(z)を表すマトリクスM1は、後述する図43に示すコントローラ回路において、6個の総和増幅器(HS3−HS8)で実装される。
【0120】
(ステップ2)
(56)式に示すように、マトリクスM2を2つのマトリクスM3,M4に分解する。
【0121】
図27を参照しつつ、マトリクスM3の実装を考える。同図に示すように、M3中の非ゼロ要素とゼロ要素とは直線x−3y+8=0によって分離することができる。ここで、
で定義される変数wを導入する。
図27の座標平面中の点(x、y)におけるwの値は、上記直線からこの点までの距離に依存する。上記直線よりも図中で上に位置する全ての点(直線上の点も含む)について、w≦0が成り立つ。また、図中に破線で示す直線(x−3y+7=0)よりも下に位置する全ての点(直線上の点も含む)について、w≧1が成り立つ。
【0122】
関数f2(x,y)を表すマトリクスM3は下記式のように実装することができることがわかる。
この実装においては、全ての非ゼロ要素を3としている。図43のコントローラ回路において、f2(x,y)は、2つの総和増幅器HS8およびHS9で実現される。なお、HS8は、f1(x,y)の実装にも用いられている。これが可能なのは、f2(x,y)=0のときHS8の出力F1はf1(x,y)となるからである。それ以外のときは、F1=f1(x,y)+f2(x,y)となる。
【0123】
(ステップ3)
(59)式に示すように、マトリクスM4を2つのマトリクスM5,M6に分解する。
マトリクスM5を実装するために、下記式に示す補助的なマトリクスM5,1を導入する。
マトリクスM5,2において、ゼロ要素は直線x+y−2=0上に位置している。また、マトリクスM5,3において、非ゼロ要素(ここでは全て「3」)は直線x−y=0上に位置している。これら2つのマトリクスの和は、上記2直線の交点において所望の要素(「3」)を含んでいる。マトリクスM5,2,M5,3は、それぞれ1変数関数ε1(z),ε2(w)として表すことができる。ここで、z=(x+y)/2、w=(x−y)/2である。これらの関数を図28(a)および図28(b)に示す。
【0124】
ε1(x,y)は下記式のように実装することができる。
図43のコントローラ回路において、3つの総和増幅器HS18−HS20がこの式に対応する。
【0125】
ε2(x,y)も3つの総和増幅器で実装できる。そのうち1つは、ε1(x,y)を出力する増幅器と共有することができる。このアプローチによれば、コントローラ中の増幅器の数を抑えることができる。
【0126】
格子点(1,1)と隣接する格子点との間においてより良好な補間が行われるようにするため、ε2(x,y)およびM5,3をそれぞれ別のものに変えることにする。マトリクスM5,3の代わりに、y=1の列のみが非ゼロ要素であるようなマトリクスM5,4、またはx=1の行のみが非ゼロ要素であるようなマトリクスM5,5を用いることができる。これらのマトリクスM5,4,M5,5に対応する関数をそれぞれε3(y),ε4(y)とする。そして、ε2(x,y)を改めて下記式のように定義する。これにより、図28(b)に示すε2(x,y)を用いた場合よりも、格子点間における良好な補間が実現される。
【0127】
この関数は、下記式に示すように、2つの増幅器で実装することができる。
この式の右辺には2つの式が示されているが、これらのうち何れを用いてもよい。1番目の式を用いる場合を考える。ε3(y)および−ε4(x)は、それぞれ図29(a)および図29(b)のようになり、下記式のように実装することができる。
【0128】
図43のコントローラ回路において増幅器HS21−HS24が(64)式に対応する。関数:ε2(x,y)=S(S(ε3(y)−ε4(x)+3)−ε4(x)+3)は、2つの増幅器HS25およびHS20で実装される。増幅器HS20は、(61)式に示される関数ε1(x,y)の実装においても用いられている。また、(61)式中の定数「−3」および(63)式中の定数「3」は、これら2つの関数を足し合わせる際に互いに打ち消し合っている。この増幅器HS20は、マトリクスM5,1を表す関数S(ε1(x,y)+ε2(x,y))を実装している。
【0129】
以上より、関数f3=S(S(ε1(x,y)+ε2(x,y))−3)とすると、下記式のようにマトリクスM5が得られる。
また、関数f3は、HS17で実装される。
【0130】
(ステップ4)
(66)式に示すように、マトリクスM6を2つのマトリクスM7,M8に分解する。
マトリクスM7は、「IF x=−3 and y≧0 THEN Output=1 ELSE Output=0」という規則に対応する。このマトリクスをM7=f4/3と表すと、関数f4は図30に示すようになる。x=−3且つy≧0を満たす全ての格子点(マトリクスM7の要素)とそれらに隣接する格子点との間で良好な補間が行われる。関数f4は、下記式のように実装することができる。
ここで、関数φ1(x)は、図31に示される通りであり、φ1=S(−3x−9)と実装される。図43のコントローラにおいて関数f4は、増幅器HS29−HS31およびHS17で実装されている。
【0131】
(ステップ5)
(68)式に示すように、マトリクスM8において非ゼロ要素は、座標(x=3,y=−3)および(x=−2,y=−1)にのみ存在している。これら2つの要素に対応する関数をそれぞれ、f5およびf6とする。
【0132】
まず、関数f5の実装を考える。関数f5の候補としてはいくつか考えられるが、ここでは図32に示されるものを用いる。これにより、格子点(3,−3)とそれに隣接する格子点との間で特に良好な補間がなされる。この関数f5は、下記式のように実装される。
ここで、関数φ2(x)は、図33に示される通りであり、φ2=S(3x−9)と実装される。図43のコントローラにおいて関数f5は、増幅器HS26−HS28およびHS17で実装されている。
【0133】
(ステップ6)
関数f6の実装を考えるに先立って、ピラミッド関数を導入する。ピラミッド関数とは、(70)式に示されるタイプの条件を実装する要素ブロックの関数である。この関数の一例を図34に示す。
【0134】
ピラミッド関数は、点(a,b)においてある値cをとり、隣りの点において値0をとる。cから0までの変化は線形である。図35を参照しつつ、ピラミッド関数を構築する。同図においては、2つの関数β1(x)およびβ2(x)が示されている。これらは、(2k+1)値論理(−k≦x≦k)において、下記式のように実装される。
下記式のように、変数yについても同様の関数を考える。
【0135】
下記式により、図36に示す関数が得られる。
γ(x)は、x=aのとき0、xがa以外の整数値のときkをとる。2変数の場合にも、同様にして、下記式のようにγ(x,y)を構築できる。
【0136】
関数γ(x,y)は、格子点(x=a,y=b)において0、その他の格子点においてkをとる。よって、下記式により、図34に示すピラミッド関数(高さk)を得ることができる。
【0137】
π(x,y)を入力する増幅器の入力ゲインファクターを調整することにより、任意の高さのピラミッドを得ることができる。例えば入力抵抗をフィードバック抵抗の2倍に設定することにより、高さがk/2のピラミッドを実現することができる。また、βj(x),βi(y)を構築する段階で符号を適宜設定することにより、x−y平面に関して図34に示すピラミッドと対称なピラミッド(すなわち頂点の3次元座標が(x,y,−k)であるようなピラミッド)を容易に得ることができる。なお、ピラミッド関数は図34に示されるものに限らず、様々なものが考えられる。例えば、z=x+y、w=x−yという変数変換を行い、(71)式および(72)式を変数z,wについて作ることにより、図37に示すピラミッドを得ることができる。どのピラミッド関数を用いるかは、隣接する格子点間での良好な補間が実現されるようにSPICEシミュレーション等で確認しつつ決定すればよい。また、図34および図37等に示されるような四角錘形状のものに限らず、四角錘台形状のものも容易に実装することができる。すなわち、β関数((71)式、(72)式参照)において定数を適宜変更することにより、下記式で表されるタイプの条件を実装することができる。
【0138】
なお、変数の数が3つ以上であっても、(74)式と同様の式を構築することができる。2変数の場合、ピラミッド関数の実装には6個の増幅器が必要とされる。変数の数が1つ増える毎に、さらに2つの増幅器が必要となる。
【0139】
関数f6の実装を考える。SPICEシミュレーションの結果、図34および図37の何れを用いた場合も、点(x=−2,y=−1)とそれに隣接する点との間における補間に若干の向上の余地があることがわかった。図34に示すピラミッド関数f(x,y)の断面を図38(a)および図38(b)に示す。前者はy軸に垂直な断面を、後者はx軸に垂直な断面をそれぞれ示している。ピラミッド関数を他の関数と重ね合わせて隣接する2点間で単調な線形補間を実現したい場合、ピラミッド関数のタイプは図39(a)〜図39(c)の中から適宜選ぶことができる。図39(a)〜図39(c)に示される断面をそれぞれ「中央台形型」、「右台形型」および「左台形型」と呼ぶ。これに対し、図38(a)および図38(b)に示される断面を「三角型」と呼ぶ。
【0140】
シミュレーションの結果によると、本例においてピラミッド関数f6は、yについては図38(b)に示す断面となり、xについては図39(b)に示す断面となるように、構築するのが好ましい。このような関数f6は、下記式のように実装すればよい。
図40(a)〜図40(d)は、それぞれ(77)式中のφ5(y)、φ6(x)、φ7(y)およびφ8(x)を示す。図41(a)〜図41(c)は、それぞれφ3、φ4およびf6を示す。これらはx軸に垂直な断面を示している。また、図41(d)〜図41(f)も、それぞれφ3、φ4およびf6を示す。これらはy軸に垂直な断面を示している。
【0141】
図41(a)〜図41(c)からわかるように、f6のx軸に垂直な断面は、x≦−2のとき三角型となっている。これにより、関数f6と関数f3との良好な重ね合わせが実現される。一方、上記断面は、−2≦x≦−1のとき中央台形型となっている。図41(d)〜図41(f)からわかるように、f6のy軸に垂直な断面は、右台形型となっている。これにより、関数f6と関数f1との良好な重ね合わせが実現される。
【0142】
図43のコントローラ回路において、関数f6(x,y)は、増幅器HS10−HS17で実装されている。増幅器HS17は、飽和することなく動作するため、F2=f3+f4+f5+f6の計算に用いられている。増幅器HS32およびHS33は、このコントローラの最終出力Fを計算する。Fは下記式で表される。
図43は、表9に示す関数を実装したコントローラ回路である。このコントローラは、33個の増幅器と93個の抵抗素子とを含んでいる。また、図43において、高出力増幅器PHS1およびPHS2は、それぞれ−yおよび−xに対応する電圧信号を生成している。図42(a)はHS3−HS33の構成例を示し、図42(b)はPHS1およびPHS2の構成例を示している。
【0143】
図44〜図50は、図43に示す回路についてのSPICEシミュレーションの結果を示
すグラフである。図44〜図46においては、変数xを固定し、変数yに対する出力の依存性を示している。一方、図47〜図49においては、変数yを固定し、変数xに対する出力の依存性を示している。図44および図47では、それぞれ変数xおよびyを0.5833Vずつすなわち論理値にして約1ずつ、−3から+3まで変化させている。図45および図48では、それぞれ変数xおよびyを0.29166Vずつすなわち論理値にして約0.5ずつ、−3から+3まで変化させている。図46および図49では、変数xおよびyを0.145833Vずつすなわち論理値にして約0.25ずつ、−3から+3まで変化させている。また、図50は、図43に示す回路についてのSPICEシミュレーションの結果を3次元座標系で示している。
【0144】
続いて、表10のファジィ規則表により表される関数を実装する。
表10中の言語表現による変数をそれぞれ電圧値に対応させたものが表11である。
ただし、電圧の範囲は0−3.5Vとしている。
表10を論理値で表現したものが表12である。ただし、論理値の数は−3から3までの7個としている。すなわち、各論理値の−3,−2,−1,0,1,2,3は、それぞれ電圧
値の0,Vdd/6,Vdd/3,Vdd/2,2Vdd/3,5Vdd/6,Vddに対応する。ここで、Vdd=3.5Vである。
【0145】
表12に記載されていない入力変数の組み合わせ(例えばdX=−3,X=1,V=0)については、出力を任意の妥当な値に設定することができる。いま、表12を下記式のように分解する。
この式は、dXが−3から3まで変化するとき、出力FがF1(X,V)からF2(X,V)まで線形的に変化することを意味している。F1(X,V)およびF2(X,V)をそれぞれ図51および図52に示す。
【0146】
図51中の左のマトリクスにおいて空欄を適当な値で補うことにより、同図中の右のマトリクスに示すように対称的な関数F1(X,V)が定義される。関数F1(X,V)は、図53に示すように、変数(X+Y)についての1変数関数と見ることができる。同図からわかるように、この関数F1((X+Y)/2)は、値が変化する領域を2つ有し、3つの増幅器を用いて下記式のように実装することができる。
関数F1は、後述する図54に示すコントローラ回路において、3個の総和増幅器(HS1、HS2およびHS17)で実装されている。
【0147】
図52からわかるように、F2(X,V)は、F1(X,V)とF3(X,V)に2/3を乗じたものとの和で表すことができる。すなわち、
である。
【0148】
ここで、下記式に示すように、F3(X,V)を表すマトリクスを2つのマトリクスに分解する。
つまり、F3=F4+F5である。関数F4は、(83)式で表される規則に従って、2変数X,Vについてのピラミッド関数として実装することができる。すなわち、関数F4は、(84)式のように実装される。
ここで、kは、正または負の論理値の数である。aおよびbは、それぞれ変数XおよびVの値を表す。本例においては、k=3,a=0,b=−1である。V≧1の条件下ではβ5=k=3であるので、(84)式は次のようになる。
関数F4は、図54に示すコントローラ回路において、5個の総和増幅器(HS9−HS12ならびにHS16)で実装されている。
【0149】
関数F5は、下記式により表される規則に従って、実装することができる。
0<X<1において関数F5を関数F4とカップリングさせるためには、F5のV軸に平行な断面が中央台形型であることが好ましい。これにより、F4の減少分がF5の増加分によって補償され、F5の減少分がF4の増加分によって補償されることになる。関数F5は、下記式のように実装される。
関数F5は、図54に示すコントローラ回路において、4個の総和増幅器(HS13−HS16)で実装されている。ここで、増幅器HS16は、両関数F4,F5の実装に共通して用いられており、下記式を実現している。
【0150】
コントローラの出力Fは、下記式で表すことができる。
この式中の規則(右辺第2項)は、次のように実装することができる。
(90)式は、図54に示すコントローラ回路において、5個の総和増幅器(HS3−HS6ならびにHS17)で実装されている。
【0151】
増幅器HS17の出力は、図54のコントローラの出力であり、下記式のようになる。
図54は、表10に示す関数を実装したファジィコントローラ回路である。増幅器PHS7およびHS8は、それぞれ入力変数XおよびVの符号を反転させるのに用いられている。増幅器PHS7は、高出力増幅器である。
【0152】
図55〜図60は、図54に示す回路についてのSPICEシミュレーションの結果を示すグラフである。何れのグラフも変数Xを固定し、変数Vに対する出力の依存性を示している。図55および図56はdX=0V(ZR)の場合である。図57および図58は、dX=1.75Vの場合である。また、図59および図60は、dX=3.5V(PL)の場合である。図55、図57および図59においては、変数Xを論理値にして3ずつ、−3から+3まで変化させている。また、図56、図58および図60においては、変数Xを論理値にして1ずつ、−3から+3まで変化させている。
【0153】
以上の例ではLUTで表される関数を扱ってきた。ここでは、数式で表される関数の実装例を示す。まず、図61(a)に示すy=f(x)(a≦x≦b)に変数変換を施すことにより、図61(b)に示す関数q=h(p)を得る。ここで、入力変数xとpとの関係は、下記式の通りである。
また、出力変数yとqとの関係は、下記式の通りである。
ここで、ymaxおよびyminは、a≦x≦bにおけるy=f(x)の最大値および最小値をそれぞれ表している。要するに、上記変数変換においては、x軸方向およびy軸方向それぞれについて、必要に応じて平行移動と縮小または拡大とを行うことにより、被実装関数の定義域および値域をそれぞれ閉区間[−k,k]内に収めている。これにより、関数y=f(x)は、上述のしきい値要素回路を用いた実装に適した形となる。なお、本例のように被実装関数の定義域および値域がそれぞれ閉区間[−k,k]内に丁度収まるようにすることは必須ではない。ここで、定義域が丁度収まるとは、x=aのときp=−k、且つx=bのときp=kとなる場合をいう。また、値域が丁度収まるとは、y=yminのときq=−k、且つy=ymaxのときq=kとなる場合をいう。
【0154】
入力変数pと電圧Vとの関係は、下記式の通りである。
すなわち、p=−kのときV=Vssとなり、p=kのときV=Vddとなる。VssおよびVddは、それぞれ飽和レベルの下限電圧および上限電圧である。なお、出力変数qと電圧Vとの関係は、入力変数pと電圧Vとの上記関係と同様であり、(94)式のpをqで置き換えることにより得られる。また、入力変数xと電圧Vとの関係は、下記式の通りである。
また、入力変数yと電圧Vとの関係は、下記式の通りである。
【0155】
次に、図62に示すように、q−h(p)を適当な間隔でサンプリングする。サンプリング点のp座標を小さい方から順にp1,p2,…,pnとする。なお、サンプリング間隔は、一定である必要はない。すなわち、pi−pi−1≠pi+1−piであってもよい。また、h(−k)≠0の場合、p1=−kとする、すなわち関数q=h(p)の定義域の最小値においてサンプリングすることが好ましい。同様に、h(k)≠0の場合、pn=kとする、すなわち関数q=h(p)の定義域の最大値においてサンプリングすることが好ましい。こうすることより、関数q=h(p)の実装精度を高めることができる。
【0156】
続いて、各サンプリング点(pi,h(pi))について、下記式で定義される関数(副関数と呼ぶ)を準備する(図63)。
この式において、i=1,2,…,nであるため、便宜的にp0およびpn+1を定義しておく必要がある。p0は、p1よりも小さい任意の値である。また、pn+1は、pnよりも大きい任意の値である。
【0157】
副関数ηi(p)は、しきい値要素回路を用いて下記式のように実装することができる。
図64(a)には、全てのiについて、副関数ηi(p)を図示している。この図からもわかるように、これらの副関数ηi(p)を重ね合わせることにより、近似的にq=h(p)を得ることができる。すなわち、Σiηi(p)は、図64(b)に示すように、隣り合うサンプリング点間を直線でつないで得られる折れ線グラフを表す。なお、図64(b)においては、pについて定義域[−k,k]の範囲内のみでグラフを図示している。ここで、output=Σiηi(p)は、下記式のように実装することができる。
【0158】
上述のように、副関数を重ね合わせることにより、しきい値要素回路を用いて任意の関数を実装することができる。被実装関数が曲線的な場合には、近似的に実装することになるが、サンプリング間隔を適当に設定することにより、誤差を許容範囲内に収めることができる。また、サンプリング間隔は一定である必要はないので、グラフ上で曲率半径の比較的小さいところではサンプリング間隔を比較的狭くし、曲率半径の比較的大きいところではサンプリング間隔を比較的広くすることも可能である。こうすることにより、サンプリング数の増大(回路素子数の増大につながる)を抑制しつつ、関数の実装精度を高めることができる。なお、図65に示すように、被実装関数が直線的な場合には、理論上誤差なく任意の関数を実装することができる。この場合、微分不可能点(直線の傾きが変化する点)をサンプリング点とすればよい。ここで、微分不可能点には、定義域の最小値および最大値に対応する点も含まれるものとする。
【0159】
例として、正弦関数:y=sin(x)を実装する。まず、(92)式および(93)式を用いて、この関数をq=h(p)の形にする。この場合、a=0、b=2π、ymin=−1、ymax=1である。また、k=1とすると、y=sin(x)は、下記式のようになる。
【0160】
次に、図66に示すように、(100)式の関数をサンプリングする。ここでは、簡単のため、サンプリング間隔を一定(=1/8)としている。各サンプリング点のp座標は、pi=(i−9)/8(i=1,2,…,17)と表される。また、この場合、副関数ηi(p)は、下記式のように実装される。
したがって、(100)式の関数は、図67に示すように実装することができる。この図中でηiと記されている記号は、(101)式に対応する回路を表しており、その回路構成は図68に示す通りである。図68は、具体例としてi=2の場合を示している。なお、図67においては、η1、η9およびη17に対応する回路が設けられていない。これは、本例においてh(η1)=h(η9)=h(η17)=0であるため、η1、η9およびη17は恒等的に0となり、したがってこれらに対応する回路を設ける必要がないからである。
【0161】
また、本例においては、Σiηi(p)に相当する演算が2段階に分けて実行される。すなわち、増幅器SF1はη2、η3およびη4の重ね合わせ演算を実行し、増幅器SF2はη5、η6、η7およびη8の重ね合わせ演算を実行し、増幅器SF3はη10、η11およびη12の重ね合わせ演算を実行し、増幅器SF4はη13、η14、η15およびη16の重ね合わせ演算を実行する。そして、増幅器Fは、増幅器SF1−SF4からの出力を重ね合わせることにより、Σiηi(p)すなわちq=h(p)を出力する。なお、Σiηi(p)に相当する演算は、1段階で行ってもよく、3段階以上に分けて実行してもよい。ただし、反転型の増幅器を用いる場合、段階数が奇数ならば、最終段の増幅器からの出力が−Σiηi(p)となることに注意すべきである。その場合、例えば、インバータを用いて上記出力の符号を反転させればよい。あるいは、予め副関数ηi(p)の符号を反転させておく、すなわち(98)式中のh(pi)を−h(pi)で置き換えたものを実装しておけばよい。図67において、増幅器SF1−SF4ならびに増幅器Fの入力重みは、全て1である。
【0162】
上記各実施形態のデバイス(図7,8,18,43,54等参照)においては、関数がハードウエアで実現されており、マイクロプロセッサ等によるソフトウエア的な処理を必要としない。マイクロプロセッサを搭載する必要がないため、本デバイスは、低コストで製造することができる。マイクロプロセッサが搭載された装置(例えば、電化製品、自動車など)に本デバイスを組み込む場合にも、そのマイクロプロセッサに負担を掛けることがない。
【0163】
また、本デバイスは、マイクロプロセッサに比して少ない数のトランジスタにより構築することが可能である。したがって、マイクロプロセッサを必要とするデバイスに比して、小型化、低消費電力化が可能であるとともに、熱暴走等による誤動作が発生する可能性が低い。さらに、所望の関数を実装するために、ハードウエアのみ開発すればよく、ソフトウエアを開発する必要がない。このため、ソフトウエアバグに起因する誤動作等の恐れがなく、したがって信頼性、安全性に優れている。
【0164】
また、マイクロプロセッサを必要とする従来の関数デバイスにおいては、関数の処理速度が、マイクロプロセッサにより入力変数を検出する時間間隔によって律速されてしまう。これに対し、ハードウエアで構成された本デバイスは、ナノ秒オーダーの高速処理が可能である。
【0165】
また、本デバイスは、アナログ信号を入力し、アナログ信号を出力するものであるため、AD変換器やDA変換器を必要としない。このため、一層簡略な構成で、関数を処理することができる。
【0166】
本デバイスにおいては、しきい値要素回路を用いて所定の関数を実装している。しきい値要素回路は、上述の通り、任意の多値論理において関数完全性を有する。したがって、しきい値要素回路の出力の重ね合わせが所望の関数の出力になるようにしきい値要素回路を組み合わせることにより、任意の多値論理関数を実装することができる。しかも、このしきい値要素回路の出力は、フラグメントコンスタント(図10(a)参照)ではなく、フラグメントリニア(図10(b)参照)である。このため、上記しきい値要素回路は、アナログのしきい値素子として用いることができ、その出力をアナログしきい値関数と呼ぶことができる。つまり、本デバイスは、このような出力特性をもつしきい値要素回路を用いているため、デジタル関数のみならずアナログ関数をも実装することができるのである。これに対して、フラグメントコンスタントな出力特性をもつ要素回路を用いた場合には、デジタル関数しか実装することができない。
【0167】
以上、本発明を実施の形態をもとに説明したが、さまざまな変形例が存在し、それらの変形例もまた本発明に含まれることは、当業者には理解されるところである。たとえば、実施の形態ではプッシュプルタイプの総和増幅器が利用されたが、これらはプッシュプルに限らず、差動タイプその他の増幅器であってもよい。
【0168】
図1(b)では、10個のトランジスタが利用されたが、この数も当然いろいろと選択の余地がある。たとえば6個のトランジスタを用いてもよく、増幅率との関係で定めればよい。
【0169】
上記実施形態においては反転型の演算増幅器をしきい値要素回路として用いたが、非反転型の演算増幅器をしきい値要素回路として用いてもよい。その場合、(3)式は、次のようになる。
また、しきい値要素回路として演算増幅器を用いることは必須ではない。図2(a)に示すような出力特性をもつその他の回路をしきい値要素回路として用いてもよい。
【0170】
ファジィ制御関数および三角関数を例にとって説明したが、本発明は、それ以外の任意の関数にも適用可能であることは上述の一連の説明から明らかである。上記実施形態において多値論理におけるしきい値要素回路の関数完全性を証明したとおり、総和増幅器を適宜組み合わせることにより、任意の関数に対応するデバイスを得ることが可能である。例えば、表7において出力論理値が任意の値であった場合、1変数(ここではxとする)を固定し、(26)式のように、xの各値について表7の縦の列をyの関数で表す。それにより、F(x=−3,y)、F(x=−2,y)、F(x=−1,y)、F(x=0,の、F(x=1,y)、F(x=2,y)、F(x=3,y)という7個の関数を得る。次に、(23)式に従って、xの各値について次の7つの式を準備する。
(i)φx(x=−3)=S(S(M−3(x);F(x=−3,y));S(−M−3(x);F(x=−3,y));F(x=−3,y))
(ii)φx(x=−2)=S(S(M−2(x);F(x=−2,y));S(−M−2(x);F(x=−2,y));F(x=−2,y))
(iii)φx(x=−1)=S(S(M−1(x);F(x=−1,y));S(−M−1(x);F(x=−1,y));F(x=−1,y))
(iv)φx(x=0)=S(S(M0(x);F(x=0,y));S(−M0(x);F(x=0,y));F(x=0,y))
(v)φx(x=1)=S(S(M1(x);F(x=1,y));S(−M1(x);F(x=1,y));F(x=1,y))
(vi)φx(x=2)=S(S(M2(x);F(x=2,y));S(−M2(x);F(x=2,y));F(x=2,y))
(vii)φx(x=3)=S(S(M3(x);F(x=3,y));S(−M3(x);F(x=3,y));F(x=3,y))
【0171】
上記(i)−(vii)は、それぞれ、次の規則に対応する。
if x=−3 then Output=F(x=−3,y)else Output=0
if x=−2 then Output=F(x=−2,y)else Output=0
if x=−1 then Output=F(x=−1,y)else Output=0
if x=0 then Output=F(x=0,y)else Output=0
if x=1 then Output=F(x=1,y)else Output=0
if x=2 then Output=F(x=2,y)else Output=0
if x=3 then Output=F(x=3,y)else Output=0
【0172】
よって、下記式:
Output=S(S(φx(x=−3);φx(x=−2);φx(x=−1);φx(x=0);φx(x=1);φx(x=2);φx(x=3)))…(38)
に従って総和増幅器を組むことにより、任意の関数に対応するデバイスを得ることができる。
【0173】
なお、F(x=α,y)を実装する際にも、(23)式を用いることができる。例えば、表7においてx=1の列の出力値が上から順に、y−3、y−2、y−1、y0、y1、y2、y3であるとすると、F(x=1,y)は下記式に従って実装すればよい。
F(x=1,y)=S(S(φy(y=−3);φy(y=−2);φy(y=−1);φy(y=0);φy(y=1);φy(y=2);φy(y=3)))
ここで、
φy(y=−3)=S(S(M−3(y);y−3);S(−M−3(y);y−3);y−3)、
φy(y=−2)=S(S(M−2(y);y−2);S(−M−2(y);y−2);y−2)、
φy(y=−1)=S(S(M−1(y);y−1);S(−M−1(y);y−1);y−1)、
φy(y=0)=S(S(M0(y);y0);S(−M0(y);y0);y0)、
φy(y=1)=S(S(M1(y);y1);S(−M1(y);y1);y1)、
φy(y=2)=S(S(M2(y);y2);S(−M2(y);y2);y2)、
φy(y=3)=S(S(M3(y);y3);S(−M3(y);y3);y3)
である。
【0174】
入力変数の数が2の場合を例にとって説明したが、入力変数の数は1つでもよく、3つ以上でもよい。例えば、入力変数がx、y、zの3つの場合、先ず1変数(ここではzとする)を固定し、zの各値について、残りの変数の関数を作る。つまり、F(x,y,z=γ)(γ=−3,−2,…,3)を作る。また、(23)式を用いて、下記式:
φz(z=γ)=S(S(Mγ(z);F(x,y,z=γ));S(−Mγ(z);F(x,y,z=γ));F(x,y,z=γ))
を作る。
そして、下記式:
Output=S(S(φz(z=−3);φz(z=−2);φz(z=−1);φz(z=0);φz(z=1);φz(z=2);φz(z−3)))
に従って総和増幅器を組めばよい。
【0175】
なお、F(x,y,z=γ)の実装の仕方は、2変数の場合について説明したとおりであり、(38)式と同様に実装すればよい。4変数以上の場合にも、変数を1つずつ固定し、上述の作業を繰り返せばよい。
【0176】
出力論理値の最大値および/または最小値が入力論理値の範囲を超える場合、表5の例で示したように、入力論理値を便宜的に定数倍して考えればよい(表5の例では2倍している)。このときの定数は、定数倍された入力論理値の範囲内に、出力論理値の最大値および最小値が収まるように決定する。また、出力論理値を定数(<1)倍することにより、入力論理値の範囲内に、定数倍された出力論理値の最大値および最小値が収まるようにしてもよい。
【0177】
論理値の数が3の場合(3値論理)または7の場合(7値論理)の場合を例にとって説明したが、論理値の数はその他の値でもよいことは言うまでもない。なお、上記実施形態において、LUTの要素を「論理値」と便宜的に表現しているが、入力変数および出力変数がデジタル変数に限らずアナログ変数であってもよいことは上述の一連の説明から明らかである。
【技術分野】
【0001】
本発明は、関数を実行する関数デバイスに関する。
【背景技術】
【0002】
従来の関数デバイスおいて、所定の関数を処理する処理ブロックは、通常マイクロプロセッサのソフトウエアとして実装される。例えば、関数デバイスの一つであるファジィデバイス(ファジィ制御機能をもつコントローラまたはデバイス)は、ファジィ化器、ファジィ推論ブロック(処理ブロック)、およびデファジィ化器を有する。ファジィ化器とデファジィ化器は、通常ハードウエアで実装され、ファジィ推論ブロックは通常マイクロプロセッサのソフトウエアとして実装される。
【特許文献1】特開平7−334369号公報
【発明の開示】
【発明が解決しようとする課題】
【0003】
上述の関数デバイスは、以下の課題を有する。
1.処理ブロックがマイクロプロセッサにとって負荷となる。
2.処理ブロックの入力側および出力側に、それぞれADコンバータおよびDAコンバータが必要になる。
3.ハードウエアとソフトウエアの両方の開発が必要になる。
4.処理速度が、マイクロプロセッサによって処理ブロックへの入力変数を検出する時間間隔によって制限される。
【0004】
この発明はこうした点に鑑みてなされたもので、上記いずれかの、または複数の課題を解決することを目的とする。
【課題を解決するための手段】
【0005】
本発明の関数デバイスは、入力電圧に対してアナログのしきい値素子として作用し、前記入力電圧に対する重み付け演算の結果を出力電圧として生成する演算増幅器を備え、前記演算増幅器は、前記出力電圧が入力電圧に対して線形的に振る舞い、かつ所定の電源電圧で制限されるよう制御することにより、所望の関数を実現する。
【0006】
「演算増幅器」は総和型増幅器(summing amplifier)でもよいし、それ以外の例えば差動型増幅器などでもよい。「所定の電源電圧」の例は、この演算増幅器の動作電源の電圧である。また、関数は、数式を用いて表されるものの他、ルックアップテーブル等を用いて表されるものであってもよい。なお、ルックアップテーブルは、1次元あるいは2次元(すなわち入力変数の数が1あるいは2)に限らず、3次元以上(すなわち入力変数の数が3以上)であってもよい。
【0007】
前記出力電圧の上下限が前記演算増幅器の飽和特性を定めてもよく、また、演算増幅器の動作点が前記電源電圧の1/2の電圧であってもよい。
【0008】
本発明の別の態様も関数デバイスであり、複数の演算増幅器によって構成され、それら演算増幅器の入力と出力の多値電圧信号が、複数のアナログしきい値関数の重ね合わせとして所定の関数に対応するものである。
【0009】
このとき、前記演算増幅器は、入力電圧の組合せが前記関数を表現したルックアップテーブルに含まれる最大値または最小値となる出力電圧に対応するとき、その出力電圧が飽和レベルになるよう制御してもよい。ここで、ルックアップテーブルの例としては、多値論理における真理値表、およびファジィ論理におけるファジィ規則表などが挙げられる。
【0010】
また、前記関数を表現したルックアップテーブルを構成する離散的な点(当該テーブル中の要素)の間で、線形的な出力による近似がなされてもよい。ところで、ファジィ論理において、ファジィ規則が言語的な表現による場合、ある変数が「大きい」「中ぐらい」「小さい」など、間のない離散的な表現になる。そのため、それらを数値化したときにも、当然離散的になり、ファジィ規則を行列として表したとき、例えば3×3の離散的な9点による表現となる。そのため、そうした離散的な点の間の点については、離散的な点に関して定まる出力電圧の間を線形的に補間する等、近似すればよい。
【0011】
上記関数デバイスは、ソフトウエア的な処理を廃したアナログ回路として構成されてもよい。この場合、処理の高速化、回路規模の縮小等が可能になる。
【0012】
また、本発明による関数デバイスは、入力電圧を入力する入力端子と、前記入力端子から入力された前記入力電圧を処理し、前記入力電圧に対して出力すべき出力電圧を生成する処理回路部と、前記処理回路部により生成された前記出力電圧を出力する出力端子と、を備え、前記処理回路部は、入力された電圧の線形和を出力する複数のしきい値要素回路を含んでおり、前記各しきい値要素回路から出力される電圧の重ね合わせが前記出力電圧となるように、前記各しきい値要素回路に、前記入力電圧および/または他の前記しきい値要素回路から出力される電圧が入力されるように構成されていてもよい。
【0013】
「入力された電圧の線形和」は、入力される電圧をV1,V2,…,Vnとしたとき、c0+c1V1+c2V2+…+cnVnで表される。ここで、ci(i=0,1,…,n)は定数である。なお、しきい値要素回路への入力は1つ(すなわち上記n=1)でもよい。しきい値要素回路としては、例えば演算増幅器を用いることができる。
【0014】
前記しきい値要素回路は、前記線形和が所定範囲内にあるときに当該線形和を出力し、前記線形和が前記所定範囲の上限値以上であるときに当該上限値を出力し、前記線形和が前記所定範囲の下限値以下であるときに当該下限値を出力してもよい。「所定範囲」とは、例えば、しきい値要素回路の飽和レベル内の範囲(飽和レベルの下限電圧から上限電圧までの範囲)である。
【0015】
前記しきい値要素回路は、第1の電源端子にソースが接続されたPMOSトランジスタと、前記第1の電源端子よりも低い電圧が印加される第2の電源端子にソースが接続され、前記PMOSトランジスタのドレインにドレインが接続されたNMOSトランジスタとから構成されるCMOSトランジスタをp(p:奇数)段有しており、各段の前記CMOSトランジスタを構成する前記PMOSトランジスタおよび前記NMOSトランジスタの各ドレインは、次段の前記CMOSトランジスタを構成する前記PMOSトランジスタおよび前記NMOSトランジスタの各ゲートと接続されており、第1段の前記CMOSトランジスタを構成する前記PMOSトランジスタおよび前記NMOSトランジスタの各ゲートと、第p段の前記CMOSトランジスタを構成する前記PMOSトランジスタおよび前記NMOSトランジスタの各ドレインとは、フィードバック抵抗を介して接続されており、前記第1段の前記各ゲートに、当該しきい値要素回路へ入力すべき電圧が入力抵抗を通じて入力し、前記第p段の前記各ドレインから、当該しきい値要素回路から出力すべき電圧が出力されるように構成されていてもよい。この場合、簡略な構成で上記しきい値要素回路を実現することができる。
【0016】
ここで、上記p=1、すなわちしきい値要素回路に設けられるCMOSトランジスタは1つでもよい。この場合、その1つのCMOSトランジスタが第1段のCMOSトランジスタでもあり第p段(最終段)のCMOSトランジスタでもある。また、処理回路部に含まれる複数のしきい値要素回路のそれぞれに設けられるCMOSトランジスタの数(上記pのこと)は、等しい必要はなく、相異なっていてもよい。
【0017】
前記第1の電源端子に印加される電圧が前記所定範囲の上限値を定め、前記第2の電源端子に印加される電圧が前記所定範囲の下限値を定めてもよい。第2の電源端子は、接地してもよい。このとき、第2の電源端子に印加される電圧は0ということになる。
【0018】
前記入力電圧および前記出力電圧は共にアナログ信号であり、前記処理回路部は、前記入力電圧をアナログ信号のまま処理してもよい。
【0019】
上記関数デバイスは、ファジィ制御を実行するもの(ファジィデバイス)であってもよい。このとき、当該デバイスは、A/D変換器であるファジィ化器、D/A変換器であるデファジィ化器、およびマイクロプロセッサによるソフトウエア的な処理を廃したアナログ回路として構成されていてもよい。
【0020】
本発明による関数デバイスは、当該デバイスの出力が第1の直線上に乗っている第1出力区間を実現する第1の回路と、前記出力が第2の直線上に乗っている第2出力区間を実現する第2の回路と、を含むことを特徴としてもよい。この関数デバイスにおいては、入力に対して線形的な出力特性をもつ回路が複数合成されることにより、所望の関数が実装される。上記第1および第2の回路は、例えば、1または2以上のしきい値要素回路を含んで構成される。
【0021】
前記第1の回路の出力は、前記第1出力区間以外の区間において一定値をとり、前記第2の回路の出力は、前記第2出力区間以外の区間において一定値をとってもよい。この場合、第1の回路は、第1出力区間以外の区間において、当該デバイスの出力が乗っている直線の傾きに影響を与えない。第2の回路についても同様である。したがって、特に設計容易な関数デバイスが実現される。
【0022】
本発明のファジーデバイスは、入力電圧に対してアナログのしきい値素子として作用し、前記入力電圧に対する重み付け演算の結果の反転を出力電圧として生成する演算増幅器を備え、前記演算増幅器は、前記出力電圧が入力電圧に対して線形的に振る舞い、かつ所定の電源電圧で制限されるよう制御することにより、所望のファジー機能を実現する。
【0023】
本発明の別の態様もファジーデバイスであり、複数の演算増幅器によって構成され、それら演算増幅器の入力と出力の多値電圧信号が、複数のアナログしきい値機能の重ね合わせとして所定のファジー機能に対応するものである。
【0024】
このとき、前記演算増幅器は、入力電圧の組合せがファジー規則を表現した行列に含まれる最大値または最小値となる出力電圧に対応するとき、その出力電圧が飽和レベルになるよう制御してもよい。
【0025】
また、ファジー規則の仕様を構成する離散的な点の間で、線形的な出力による近似がなされてもよい。
【0026】
以上のいずれかのファジーデバイスにおいて、このデバイスは、A/D変換器であるファジー化器、D/A変換器であるデファジー化器、およびマイクロプロセッサによるソフトウエア的な処理を廃したアナログ回路として構成されてもよい。この場合、処理の高速化、回路規模の縮小等が可能になる。
【0027】
本発明の多値論理デバイスは、入力電圧に対してアナログのしきい値素子として作用し、前記入力電圧に対する重み付け演算の結果を出力電圧として生成する演算増幅器を備え、前記演算増幅器は、前記出力電圧が入力電圧に対して線形的に振る舞い、かつ所定の電源電圧で制限されるよう制御することにより、所望の多値論理関数を実現する。
【0028】
本発明の別の態様も多値論理デバイスであり、複数の演算増幅器によって構成され、それら演算増幅器の入力と出力の多値電圧信号が、複数のアナログしきい値関数の重ね合わせとして所定の多値論理関数に対応するものである。
【0029】
このとき、前記演算増幅器は、入力電圧の組合せが多値論理規則を表現した行列に含まれる最大値または最小値となる出力電圧に対応するとき、その出力電圧が飽和レベルになるよう制御してもよい。ここで、「多値論理規則を表現した行列」の例としては、多値論理における真理値表が挙げられる。
【0030】
また、多値論理規則の仕様を構成する離散的な点の間で、線形的な出力による近似がなされてもよい。
【0031】
上記多値論理デバイスは、ソフトウエア的な処理を廃したアナログ回路として構成されてもよい。この場合、処理の高速化、回路規模の縮小等が可能になる。
【0032】
また、本発明による多値論理デバイスは、入力論理値に対応付けられた入力電圧を入力する入力端子と、前記入力端子から入力された前記入力電圧を処理し、前記入力論理値に対して出力すべき出力論理値に対応付けられた出力電圧を生成する処理回路部と、前記処理回路部により生成された前記出力電圧を出力する出力端子と、を備え、前記処理回路部は、入力された電圧の線形和を出力する複数の演算増幅器を含んでおり、前記処理回路部における最終段の前記演算増幅器から出力される電圧が前記出力電圧となるように、前記各演算増幅器に、前記入力電圧および/または他の前記演算増幅器から出力される電圧が入力されるように構成されていることを特徴としてもよい。
【0033】
「最終段の演算増幅器」は、上述の通り、その出力が上記出力電圧となる演算増幅器であり、これに該当する演算増幅器が処理回路部に複数設けられていてもよい。すなわち、多値論理における出力変数が複数ある場合には、最終段の演算増幅器を複数設ければよい。
【図面の簡単な説明】
【0034】
【図1】図1(a)は、総和増幅器の一般構造、図1(b)はそのCMOSによる実装の例を示す図である。
【図2】図2(a)は総和増幅器の振る舞いを電圧座標系で示し、図2(b)は同様に多値変数座標系で示す図である。
【図3】図3(a)はfa(x)、図3(b)は−maj(x,−a,−k)をそれぞれ示す図である。
【図4】関数(x+1)modmの実装を示す図である。
【図5】従来のファジィデバイスの構造を示す図である。
【図6】表1によって特定される関数を模式的に示す図である。
【図7】表1と表2によって特定されるファジィコントローラのCMOSによる実装を示す図である。
【図8】wash_time行列によって特定されるファジィコントローラのCMOSによる実装を示す図である。
【図9】図8のファジィコントローラの動作のSPICEシミュレーション結果を示す図である。
【図10】(a)は7値関数の一例をフラグメントコンスタントで、(b)はフラグメントリニアで示した図である。
【図11】k=7の場合の関数M−1(x)を示す図である。
【図12】(22)式を実装した回路を示す図である。
【図13】(a)〜(c)は、図12の回路の振る舞いの一例を示す図である。
【図14】(a)〜(d)は、(25)式に対応する回路の振る舞いの一例を示す図である。
【図15】入力変数のメンバーシップ関数を示す図である。
【図16】(a)は表8のF1(y)を示し、(b)はF2(y)を示す図である。
【図17】F1(y)を構築する手順を示す図である。
【図18】(37)式に従って実装された回路の構成を示す図である。
【図19】(a)および(b)は、それぞれ3ステージおよび5ステージのプッシュプルCMOS演算増幅器を用いて構成された総和増幅器の一例を示す図である。
【図20】SPICEシミュレーションに用いるコントローラ回路を示す図である。
【図21】3ステージの増幅器を用いてコントローラを構成した場合のシミュレーション結果を示す図である。
【図22】5ステージの増幅器を用いてコントローラを構成した場合のシミュレーション結果を示す図である。
【図23】関数f1(z)を表すグラフである。
【図24】関数f1(z)の5つの構成要素を表すグラフである。
【図25】関数α1(z)の求め方を説明するためのグラフである。
【図26】関数α2(z)の求め方を説明するためのグラフである。
【図27】マトリクスM3の実装の仕方を説明するための図である。
【図28】(a)は、関数ε1(z)を表すグラフである。(b)は、関数ε2(w)を表すグラフである。
【図29】(a)は、関数ε3(y)を表すグラフである。(b)は、関数−ε4(x)を表すグラフである。
【図30】関数f4を表すグラフである。
【図31】関数Φ1(x)を表すグラフである。
【図32】関数f5を表すグラフである。
【図33】関数Φ2(x)を表すグラフである。
【図34】ピラミッド関数を表すグラフである。
【図35】図34に示すピラミッド関数の実装の仕方を説明するための図である。
【図36】関数γ(x)を表すグラフである。
【図37】ピラミッド関数の変形例を示すグラフである。
【図38】(a)は、図34のピラミッド関数のy軸に垂直な断面を示すグラフである。(b)は、図34のピラミッド関数のx軸に垂直な断面を示すグラフである。
【図39】(a)−(c)は、ピラミッド関数の断面形状を説明するための図である。
【図40】(a)−(d)は、関数f6(x,y)の実装の仕方を説明するための図である。
【図41】(a)−(f)は、関数f6(x,y)の実装の仕方を説明するための図である。
【図42】(a)は、図43中のHS3−HS33の構成例を示す図である。(b)は、図43中のPHS1およびPHS2の構成例を示す図である。
【図43】表9に示す関数を実装したコントローラ回路を示す図である。
【図44】図43に示す回路についてのSPICEシミュレーションの結果を示すグラフである。
【図45】図43に示す回路についてのSPICEシミュレーションの結果を示すグラフである。
【図46】図43に示す回路についてのSPICEシミュレーションの結果を示すグラフである。
【図47】図43に示す回路についてのSPICEシミュレーションの結果を示すグラフである。
【図48】図43に示す回路についてのSPICEシミュレーションの結果を示すグラフである。
【図49】図43に示す回路についてのSPICEシミュレーションの結果を示すグラフである。
【図50】図43に示す回路についてのSPICEシミュレーションの結果を示すグラフである。
【図51】関数F1(X,V)を示す図である。
【図52】関数F2(X,V)を示す図である。
【図53】関数F1(X,V)を示すグラフである。
【図54】表10に示す関数を実装したファジィコントローラ回路を示す図である。
【図55】図54に示す回路についてのSPICEシミュレーションの結果を示すグラフである。
【図56】図54に示す回路についてのSPICEシミュレーションの結果を示すグラフである。
【図57】図54に示す回路についてのSPICEシミュレーションの結果を示すグラフである。
【図58】図54に示す回路についてのSPICEシミュレーションの結果を示すグラフである。
【図59】図54に示す回路についてのSPICEシミュレーションの結果を示すグラフである。
【図60】図54に示す回路についてのSPICEシミュレーションの結果を示すグラフである。
【図61】(a)は、任意の関数y=f(x)を表すグラフである。(b)は、関数y=f(x)に対応する関数q=h(p)を表すグラフである。
【図62】関数q=h(p)がサンプリングされた様子を示すグラフである。
【図63】副関数ηi(p)を表すグラフである。
【図64】(a)は、各サンプリング点に対応する副関数を示すグラフである。(b)は、全ての副関数を重ね合わせて得られるグラフである。
【図65】被実装関数が直線の場合を説明するための図である。
【図66】y=sin(x)の実装例を説明するための図である。
【図67】y=sin(x)を実装した回路(関数デバイス)を示す図である。
【図68】図67中の副関数η2(p)を実装した回路を示す図である。
【符号の説明】
【0035】
M1−24…トランジスタ、R1−93…抵抗、S1−S11,HS1−33,PHS1,2,7…総和増幅器(しきい値要素回路)。
【発明を実施するための最良の形態】
【0036】
1.総和増幅器の多値論理要素回路としての利用
総和増幅器の振る舞いは、図1(a)のような非接続状態で正確に決まり、以下のごとく記述される。ここでは、この回路に含まれるメンバーのinfinitesimal orderが増幅ファクターによって決まる。
【0037】
ここで、Vddは電源電圧、Vjはj番目の入力電圧、Rjはj番目の抵抗の値、R0はフィードバック抵抗値、Vdd/2は増幅器の動作中間点である。このような総和増幅器のCMOSによる実装例を図1(b)に示す。
に対するVOUTの依存性は図2(a)に示される。すなわち、この演算増幅器は、入力された電圧(V1,V2,…,Vn)の線形和:
を出力する。ただし、この演算増幅器は、当該線形和が所定範囲の上限値(=Vdd)以上であるときには当該上限値を出力し、当該線形和が所定範囲の下限値(=0)以上であるときには当該下限値を出力する。
【0038】
以下のようなm=2k+1個の電圧レベル値を多値変数として有する回路を考える。なお、このように多値論理における値の数(ここではm)が奇数であると仮定しても、議論の一般性は保たれる。
【0039】
また、R0/Rj=ωjとおく。すると(1)式は、以下のように表現できる。
図2(b)は(3)式を模式的に示す。
【0040】
以降、振る舞いが(3)式のシステムによって規定される機能要素回路を「多値しきい値要素回路」とよぶ。特に、最も簡単なケースであるωj=1、j=1,2,3(n=3)の場合について、(3)式を多数決関数とよび、y=maj(x1,x2,x3)と表すことにする。
【0041】
2.多値論理におけるしきい値要素回路の関数完全性
基本演算またはその組は、その論理が基本演算の重ね合わせで表現できるとき、任意の多値論理において関数完全性を有すると言える。関数完全性を有する集合は、いくつか知られている。そのため、ある新規の関数の関数完全性を証明するためには、その関数の重ね合わせによって関数完全性を有する既知の集合が表現できることを言えば足りる。m値論理において関数完全性を有するものとして、以下のWebb関数が知られている。
【0042】
多値論理におけるしきい値演算の関数完全性を証明するには、しきい値または多数決関数によってWebb関数が表現できることを言えば足りる。
【0043】
まず、max(x1,x2)という関数をしきい値関数で表現する。このために、関数fa(x)を以下のようにとる。
【0044】
この関数は図3(a)に示される。また、−maj(x,−a,−k)という関数は図3(b)に示される。実際、x<aであれば、x−a−k<−kゆえ、−maj(x,−a,−k)=−kとなる。よって、すべてのxについて、fa(x)+maj(x,−a,−k)=a+kが成り立つことがわかる(図3参照)。その結果、
となる。いま、−maj(a,b,c)=maj(−a,−b,−c)であることを考慮すれば、(6)式から以下の式が導かれる。
【0045】
続いて、関数(x+1)modmをしきい値関数で表すことを考える。これは、図4を参照すれば簡単に行うことができる。念のため説明しておくと、
(x+1)modm=−maj(−maj(x,1,0),2k・maj(−maj(x,1−k,−k),k,0),0)
と表せる。この式のxに(7)式を代入すると、(4)式のWebb関数が多数決関数によって表現されることがわかる。
【0046】
3.多値のアナログ回路としてのファジィデバイス
従来のファジィデバイスまたはファジィコントローラ、すなわちファジィ制御機能を有する回路は、たいてい図5に示す構成をもつ。
【0047】
アナログ変数X={x1,x2,...,xn}がファジィデバイスの入力である。ファジィ化器(Fuzzificator)はアナログ変数xjを重み付けされた言語表現によるデジタル変数A={a1,a2,...,an}に変換する。例えば、「変数xjは平均的な正の値に関しては重み0.3をもち、大きな正の値に関しては重み0.4をもつ」などである。
【0048】
ファジィ推論ブロックは、「もしajが平均的な正の値をもち、aiが小さな負の値をもつなら、bkは小さな正の値をもつ」等のファジィ規則に基づき、重み付けされた、言語表現によるデジタル変数値B={b1,b2,...,bk}を生成する。
【0049】
デファジィ化器(Defuzzificator)は、重み付けされた言語表現によるデジタル変数B={b1,b2,...,bk}を出力アナログ変数Y={y1,y2,...,yk}に変換する。
【0050】
一般に、ファジィ化器とデファジィ化器はADA、すなわちアナログ−デジタル−アナログコンバータにより、ハードウエア実装され、ファジィ推論は通常マイクロプロセッサのソフトウエアで実装される。
【0051】
一方、各入力アナログ変数に曖昧さなく対応する一組の出力アナログ変数が存在する。したがって、ファジィデバイスは以下のごとき関数を実行するアナログ信号コンバータと考えることができる。
【0052】
(8)式は、n次元曲面系を表す。これらの曲面を区間ごとに線形な近似によって特定する可能性を考える。m=2k+1個の言語表現による変数aj値がアナログ変数xjに対応するとする。ファジィ規則系に則り、m値の論理関数系を以下のように表すことができる。
【0053】
このことから明らかなごとく、もしファジィコントローラが(9)式で表現されるなら、それは多値しきい値要素回路の重ね合わせで表現できる。この場合、飽和レベル((3)式および図2(b)参照)以内の領域(所定範囲)におけるしきい値要素回路の線形的な振る舞いにより、仕様を決める離散点の間で自然な線形近似がなされる。
【0054】
4.しきい値要素回路を用いたファジィコントローラ実装例
4.1 題材として″Design of a Rule−Based fuzzy controller for the Pitch Axis of an Unmanned Research Vehicle″,Deepak Sabharwal and Kuldip S.Rattan,Department of Electrical Engineering,Wright State University,Dayton,OH 45435,CH3158−3/92/0000−0449(1992 IEEE,Fuzzy Control Systems,CRC Press LLC,Abraham Kandel(Edited by),Lofti A.Zadeh(Foreword by),September 1993,pp81−86を考える。
【0055】
このファジィ制御の規則は、誤差e=ref−outputと誤差の変化率
に基づく。
ファジィ化器は7レベルの言語表現による変数に対応する。各レベルは、NB−負の大(−3);NM−負の中(−2);NS−負の小(−1);ZO−ゼロ(0);PS−正の小(1);PM−正の中(2);PB−正の大(3)である。出力は均一な勾配をもつ。
【0056】
デファジィ化の際、NB値はVOUT=0V、ZO値はVOUT=1.75V、PB値はVOUT=3.5Vをそれぞれ生成する。ここで電源電圧Vdd=3.5Vである。49のファジィ規則は表1に示される。
【0057】
表2は7値論理関数として表1を示したルックアップテーブル(LUT)である。
【0058】
表1から、ファジィ関数は北西から南東へ向かう対角線について対称であり、e−ceに依存する。この依存性を図6に示す。図2と図6の比較から明らかなとおり、表2の関数を再現するために、ひとつの二入力総和増幅器とひとつのインバータを準備するだけでよい。−kから+kの間にある論理変数の反転は、
なる演算に当たり、総和増幅器の出力電圧の空間においては、
なる演算に相当する。
【0059】
図7は、所望の関数に対応するCMOS回路(関数デバイス)であり、16個のトランジスタと5個の抵抗を有する。同図において、″0.4u″と″0.6u″は半導体のプロセス、すなわちトランジスタのサイズを示す。左側の6個のトランジスタM11−16は、インバータとして利用される総和増幅器の本体に対応し、右側の10個のトランジスタM1−10は、総和増幅器の本体に相当する。具体的には、この関数デバイスは、トランジスタM1−10および抵抗R1,2,5が適宜接続されて構成された演算増幅器と、トランジスタM11−16および抵抗R3−4適宜接続されて構成された演算増幅器との2つの演算増幅器(しきい値要素回路)を含む処理回路部を備えている。これらの演算増幅器のうち図中右側が最終段の演算増幅器に該当する。また、図中VeおよびVceと記載されている部分が関数デバイスの入力端子、Voutputと記載されている部分が出力端子、R1−3が入力抵抗、R4−5がフィードバック抵抗、M6−10およびM14−16のソースに接続されている端子が第1の電源端子(電源電圧Vddが印加されている)、M1−5およびM11−13のソースに接続されている端子が第2の電源端子(接地されている)である。
【0060】
4.2 ″Manipulator for Man−Robot Cooperation(control method of Manipulator/Vehicle System with fuzzy inference)″,Yoshio Fujisawa,Toshio Fukuda,Kazushiro Kosuge,Fumihito Arai(Nagoya University);Eiji Muro,Haruo Hoshino,Takashi Miyazaki(Takenaka Corporation Technical Research Laboratory); Kazuhiko Ohtsubo,Kazuo Uehara(Komatsu Ltd,Technical Research Center,Kanagawa,Japan);0−7801−0582−5/92(1992 IEEE,fuzzy control Systems,CRC Press LLC,Abraham Kandel(Edited by),Lofti A.Zadeh(Foreword by),September 1993,pp168−172の例。
【0061】
この例では、実験的に考えられたマニュピレータがふたつの力/トルクのセンサをもつ。センサの一方は、演算力センサFhで、他方は「環境力センサ」ωである。これらの値は、3つの言語表現による変数−S(小さい),M(中ぐらい)およびB(大きい)をもち、また以下の5つのファジィ規則をもつ。
【0062】
もし ω=S なら 出力=B;
もし ω=B なら 出力=S;
もし ω=M およびFh=S なら出力=S;
もし ω=M およびFh=M なら出力=M;
もし ω=M および Fh=B なら出力=B;
【0063】
この例の場合、出力は表3のごとく、3値論理関数となる。
【0064】
簡単な置き換えOutput=maj(2ω,−Fh,0)により、CMOSによる実装が図7に示すものと同じになることがわかる。なお、Vc=VFh,Vcc=Vωという置換をなし、かつR2=0.5Mオームとする。
【0065】
4.3 洗濯機のためのファジィ制御
Aptronix Incorporated社のwww.aptronix.com/fuzzynet.の例である。
【0066】
4.3.1 コントローラ仕様
入力変数:
dirtness_of_clothes(服の汚れ)の″程度″
大きい(L),中ぐらい(M),小さい(S);
type_of_dirt(汚れの種類)の″程度″
脂っぽい(G),中ぐらい(M),脂っぽくない(NG).
【0067】
出力変数:
wash_time(洗濯時間)″分″
非常に長く(VL)、長(L)、中(M)、短(S)、非常に短く(VS);
【0068】
ファジィ規則:
もし dirtness_of_clothesが大きく、type_of_dirtが脂っぽいならwash_timeは非常に長く;
もし dirtness_of_clothesが中ぐらいで、type_of_dirtが脂っぽいなら wash_timeは長く;
もし dirtness_of_clothesが小さく、type_of_dirtが脂っぽいなら wash_timeは長く;
もし dirtness_of_clothesが大きく、type_of_dirtが中ぐらいなら wash_timeは長く;
もし dirtness_of_clothesが中ぐらいで、type_of_dirtも中ぐらいなら wash_timeは中ぐらい;
もし dirtness_of_clothesが小さく、type_of_dirtが中ぐらいなら wash_timeは中ぐらい;
もし dirtness_of_clothesが大きく、type_of_dirtが脂っぽくないなら wash_timeは中ぐらい;
もし dirtness_of_clothesが中ぐらいで、type_of_dirtが脂っぽくないならwash_timeは短く;
もし dirtness_of_clothesが小さく、type_of_dirtが脂っぽくないなら wash_timeは非常に短く
【0069】
以上を言語表現による変数の行列で示せば、表4となる。
また、多値変数の行列で示せば表5となる。
【0070】
4.3.2関数の分解
「wash_time」の仕様は以下のように分解される。
【0071】
したがって、以下のように書ける。
【0072】
いま、1変数のある関数を考える。
【0073】
(11)式において、Yはdirtness_of_clothesに対応する。しかし、Yは−2から+2まで変化する。なぜなら、多値変数の行列に示される出力値(これはフィードバックループを通じて入力値XとYになる)が−2から+2まで変化するためである。この仮定は、出力値の範囲と入力値の範囲が異なるため、必要である。このため、Yはここで以下のとおりとなる。
【0074】
(11a)式から、数値を−2と+2で飽和させることにより、(11)式が得られる。ここで、以下の中間的な和を導入する。
【0075】
Xはtype_of_dirtに対応し、以下のように、−2から+2までとりうる。
【0076】
その結果、wash_timeは以下のように表記できる。
【0077】
さて、ここで次の関数を導入する。
【0078】
(12)式同様、以下の中間的な和を導入する。
【0079】
最後に、wash_timeが以下のように定式化される。
【0080】
図8はこうして得られたCMOS回路であり、(16)式、(11)式および(14)式に基づく。この回路は、4個の多値しきい値要素回路の重ね合わせで実装される。この関数デバイスは、トランジスタM1−6および抵抗R1−3が適宜接続されて構成された演算増幅器(図中左上部分)と、トランジスタM7−12ならびに抵抗R4−6およびR10が適宜接続されて構成された演算増幅器(図中左下部分)と、トランジスタM13−18および抵抗R7−8が適宜接続されて構成された演算増幅器(図中右下部分)と、トランジスタM19−24および抵抗R11−15が適宜接続されて構成された演算増幅器(図中右上部分)との4つの演算増幅器を含む処理回路部を備えている。これらの演算増幅器のうち図中右上のものが最終段の演算増幅器に該当する。また、図中XおよびYと記載されている部分が関数デバイスの入力端子、wash_timeと記載されている部分が出力端子である。
【0081】
図8の左上部分は(16)式の
に対応する。抵抗R2は20000kオームで、R1の倍である。その結果、Y/2が実現される。抵抗R3は理想的には10000kオームであるが、実際には9300kオームとしてこの回路部分の増幅ゲインに合わせた調整をしている。R3は飽和値の下限である、
における−2を実現する。
【0082】
左下の回路部分は、(16)式の
に対応する。抵抗R5およびR10は9500kオームだが、理想的には10000kオームのものである。抵抗R6は5000kオームで、R4の半分である。これにより、飽和値の上限の倍である、
における4を実現する。抵抗R15は、左下回路と右上回路を接続し、18000kオームである。その理想値は20000kオームである。R15はR11の約倍であり、
における0.5を実現する。
【0083】
右上の回路は、総和増幅器本体に対応し、(16)式における−1の機能を自身が備える。抵抗R13は20000kオームで、R11の倍である。その結果、飽和値の下限である−2にR11/R13である1/2が乗じられ、−1が実現する。
【0084】
右下の回路は、(16)式における−0.5Xに対応する。0.5は抵抗R12をR11の倍の20000kオームとすることで実現する。
【0085】
図9は図8の回路の動作をSPICEシミュレーションした結果を示す。横軸と縦軸は、それぞれ変数Yと出力電圧を示す。同図で出力値が「−2」のとき、出力電圧が0Vになる。その例は同図の(0V,0V)の点にある。同様に、出力値が「−1」のとき、出力電圧は0.9Vになる。これは(1.75V,0.9V)の点に見られる。以下、出力値が「0」「1」「2」のとき、出力電圧はそれぞれ1.8V、2.5V、3.2Vになる。
【0086】
5.″masking of the input″の導入
以上示したように、総和増幅器は、(任意の値の)任意の多値論理において関数完全性を有するしきい値要素回路であり、アナログファジィデバイスを実装するための基底となることができる。以下では、「入力のマスキング(masking of the input)」と呼ばれる手法を用いた、関数回路の設計について述べる。引き続き、値の数は、奇数(k=2a+1)個であるとする。
【0087】
ファジィコントローラの振る舞いを記述した関数は、次の第1又は第2の方法によって適切に表すことができる。第1の方法は、「もしAであるならば、Bとする」というタイプのファジィ規則によって表す方法である。ここで、AやBは、言語表現による変数(言語変数)である。第2の方法は、一組の言語変数が一つの出力に対応するテーブルとして表す方法である。
【0088】
いま、X={x0,x1,…,xn−1}を一組の入力多値変数とし、Y=F(X)を出力変数とする。ここで、−a≦xj≦aである。すると、2値論理におけるShannon分解(Shannon’s decomposition)と同様に、多値論理においても下記式を構築することができる。
【0089】
(17)式は、更に拡張することができ、したがって変数除去法(method of exclusion of variables)により、ファジィ回路を構築できることを示している。そのためには、下記(18)式に対応する副回路(sub−circuit)が必要となる。
ここで、Z⊂Xであり、Aは変数Zの値の組合せである。
【0090】
(18)式を実行する基本的な要素(副回路)があれば、ファジィ規則の体系に従って直ちにファジィデバイスを得ることができる。しかしながら、(17)式および(18)式は、いわゆるフラグメントコンスタント(fragment−constant)タイプの多値関数を表している。図10(a)および図10(b)は、7値関数の一例を示している。フラグメントコンスタントである図10(a)の関数は、ファジィ規則を表すテーブル(ファジィ規則表)に完全に対応するが、ファジィ化およびデファジィ化のプロセスを考慮に入れていない。これらのプロセスを考慮するのであれば、上記関数は、図10(b)に示すようなフラグメントリニア(fragment−linear)であるべきである。このようなフラグメントリニアな関数によれば、ファジィ化およびデファジィ化においてそれぞれ入力変数および出力変数が適当に分配される。
【0091】
6.総和増幅器による入力のマスキング
下記式で表される振る舞いを示す反転型の総和増幅器を考えることにする。
ここで、A={α1,α2,…,αn}は重み係数(weight coefficients)、X={x1,x2,…,xn}はアナログ変数または多値変数、βはしきい値を象徴する定数、±aは飽和値(k値論理:k=2a+1の場合)をそれぞれ表している。
【0092】
いま、下記式で表されるマスキング関数(masking function)Mα(x)を導入する。
ここで、α(−a≦α≦a)は、変数xについてのある特定の値である。x=αのときMα(α)=0であることがわかる。図11には、例としてk=7の場合のM−1(x)を示す。
【0093】
電源電圧Vddが論理値のaに対応し、接地電位のVgndが論理値の−aに対応することを考えると、マスキング関数は、総和増幅器を用いて下記式のように実装することができる。
ここで、|α|は、αの絶対値を意味している。
【0094】
このようなマスキング関数を用いることにより、下記式で表されるファジィ規則に対応する回路を構築することができる。
この規則は、x=αにおいて関数F(x=α,Y)を出力として抽出することを意味する。図12は、この式に対応する回路を示している。同図においては、4つの総和増幅器が設けられている。また、同図の回路は、下記式で表される。
例として、α=−1、F(x=−1,Y)=2、k=7の場合を考える。すなわち、図12の回路は、「If x=−1 then y=2 else y=0」というファジィ規則を実行する。このとき、図12の回路の振る舞いは、図13(a)〜図13(c)に示されるとおりである。図13(a)はM−1(x)およびM1(x)を示し、図13(b)はS(−M−1(x);2)およびS(M1(x);2)を示し、図13(c)は図12の回路における最終的な出力(すなわち(23)式におけるy)を示す。
【0095】
次に、If−Then規則の前件部((22)式ではx=αのこと)において、下記式のように、変数xがある一定の範囲を持つ場合を考える。
この規則は、(23)式と同様、下記式(「y=」で始まる一番下の式)で表される。
図12においてMα(x)およびF(x=α,Y)をそれぞれMλ,δ(x)およびΦ(Y)で置き換えることにより、(25)式に対応する回路を構築することができる。
【0096】
例として、λ=−2、δ=1、Φ(Y)=−2、k=9の場合について、(25)式に対応する回路の振る舞いを図14(a)〜図14(d)に示す。図14(a)はM−3(x)およびM2(x)を示し、図14(b)はM−2,+1(x)を示し、図14(c)はS(−M−2,+1(x);−2)およびS(M−2,+1(x);−2)を示し、図14(d)は最終的な出力((25)式におけるy)を示す。
【0097】
7.マスキング関数を用いた実装例
「A Fuzzy Logic Force Controller for a Stepper Motor Robot,of J.G.Hollinger,R.A.Bergstrom,and J.S.Bay,Bradley Department of Electrical Engineering,Virginia Polytechnic Institute and State University,Blacksburg,Virginia..」から引用したファジィコントローラについて、上述のマスキング関数を用いた実装例を示す。
【0098】
このファジィコントローラは、「位置誤差(posiaon error)」および「力誤差(force error)」という2つの言語変数をもつ関数を実装する。以下、これらの変数をそれぞれx,yと表す。変数x,yはそれぞれ、NL、NM、NS、ZE、PS、PM、PLという7つの値を有する。また、それらのメンバーシップ関数は図15に示されるとおりである。
【0099】
出力言語変数に対するファジィ推論エンジンのルールを示すマトリクスは、表6に示すとおりである。
【0100】
表6を対応する多値論理関数の値で表したものが表7である。
【0101】
表7は、表8に示す2種類の列から構成されていることがわかる。
【0102】
図16(a)および図16(b)は、表8に示す2種類の列を、それぞれ力誤差yの関数として描いたものである。
【0103】
(20)式および(21)式ならびに図14(a)および図14(b)のアナロジーにより、図17(a)および図17(b)に示すように、F1(y)を構築することができる。よって、F1(y)およびF2(y)は、下記式のように実装することができる。
【0104】
表6および表7より、コントローラの出力は、変数xについて場合分けすると、次のように表される。
【0105】
(27)式で表される規則は、次の2つの規則に分けることができる。
【0106】
(28)式の規則は、(25)式、(26)式および(23)式に従って、次のように実装できる。
【0107】
(29)式の規則を実装するために、先ずは下記式で表される規則を実装することを考える。
この規則は、下記式のように実装される。
続いて、(29)式の規則を次のように表す。
したがって、(32)式および(33)式より、(29)式の規則は下記式のように実装することができる。
ゆえに、コントローラの出力((27)式におけるOutput)は、下記式となる。
【0108】
(32)式においてS10で表される総和増幅器が常に飽和レベル以内の領域で動作する(すなわちS10の括弧内が常に−3以上3以下の値をとる)ことを考慮すれば、(35)式を一層簡略化することが可能である。いま、−Φ2を下記式のように表す。
すると、コントローラの実装を表す式は、次のようになる。
(37)式に従って実装された回路の構成を図18に示す。同図においては、各加算増幅器の入力の重みを表す係数が記載されている。例えば、S1で表される総和増幅器について見ると、2つの入力(Vddおよびy)それぞれが3/2倍されることを示している。この関数デバイスは、S1−S11ならびにM+3(x)およびM−3(x)の13個の演算増幅器を含む処理回路部を備えている。これらの演算増幅器のうちS11が最終段の演算増幅器に該当する。また、図中xおよびyと記載されている部分が関数デバイスの入力端子、Voutと記載されている部分が出力端子である。
【0109】
8.SPICEシミュレーションの結果
図18に示すコントローラ回路における各基底として、3ステージおよび5ステージのプッシュプルCMOS演算増幅器を用いる。これらの増幅器においてフィードバック経路に挿入される抵抗の抵抗値は、2メガΩである。このような増幅器の一例を図19(a)および図19(b)に示す。図19(a)は、3ステージのプッシュプルCMOS演算増幅器を用いて構成された総和増幅器を示す。図19(b)は、5ステージのプッシュプルCMOS演算増幅器を用いて構成された総和増幅器を示す。
【0110】
シミュレーションに用いるコントローラ回路を図20に示す。SPICEシミュレーション(MSIM 8)により、図20のコントローラの振る舞いをチェックした。トランジスタとしては、0.4μmのMOSIS BSIM3v3.1,7levelモデルを用いた。
【0111】
シミュレーションにおいて電源電圧は3.5Vとした。入力xを0Vから3.5Vまで線形に変化させ、入力yをその論理値に従って離散的に変化させた。xを0Vから3.5Vまでの1サイクルを変化させる間、yの値を一定とした。
【0112】
3ステージの増幅器を用いてコントローラを構成した場合のシミュレーション結果を図21に示す。コントローラの振る舞いは正しい(表7に従って出力変数の論理値が入力変数の論理値に依存している)ことがわかる。
【0113】
図22は、5ステージの増幅器を用いてコントローラを構成した場合のシミュレーション結果である。図21の場合に比して、出力信号の電圧レベルとその論理値とが一層高い精度で対応していることがわかる。それゆえ、ステージ数の多い増幅器を用いることにより、論理値の数k(=2a+1)の値が大きい場合(例えば9以上の場合)にも好適な振る舞いを呈するコントローラを実現することができる。
【0114】
9.さらなる実装例
次に、表9のファジィ規則表により表される関数を実装する。
【0115】
(ステップ1:対称成分の抽出)
まず、(50)式に示すように、表9に示すマトリクスMを2つのマトリクスM1,M2に分解する。M1はMから対称成分を抽出したものであり、M2はその残余成分であり非対称となっている。M2において、例えば「≦0」は、0以下の値であれば任意の値としてよいことを意味している。同様に、「≧2」は、2以上の任意の値としてよいことを意味している。これは、演算増幅器の飽和特性に由来している。
対称成分(M1)は、1変数:z=(x+y)/2の関数f1(z)として表すことができる。この関数を図23に示す。
【0116】
関数f1(z)を実装すべく、図24に示す5つの関数αj(z)の和としてf1(z)を表す。すなわち、
である。また、α1を例にとって、総和増幅器を用いてαjを構築することを考える。図25からわかるように、β1は、β1=−S(k1z+a1)と実装できる。z=−2.25のときβ1=0となるべきなので、a1=2.25k1となる。k1=6/0.5=12であることを考慮すると、a1=27が求まり、β1=−S(6x+6y+27),δ1(z)=β1(x,y)/6となる。よって、
である。
【0117】
続いて、図26を参照しつつ、α2(z)の構築を考える。β2=−S(k2z+a2)とおくと、z=−1のときβ2=0ゆえ、a2=k2となる。k2=6を考慮すると、a2=6が求まり、β2=−S(3x+3y+6),δ2(z)=β2(z)/3となる。よって、
である。
【0118】
同様の手法により、下記式が得られる。
(52)式および(53)式に示す演算は飽和することなく実行されるので、(51)式は1つの総和増幅器で演算することができる。以上より、下記式が得られる。
【0119】
関数f1(z)を表すマトリクスM1は、後述する図43に示すコントローラ回路において、6個の総和増幅器(HS3−HS8)で実装される。
【0120】
(ステップ2)
(56)式に示すように、マトリクスM2を2つのマトリクスM3,M4に分解する。
【0121】
図27を参照しつつ、マトリクスM3の実装を考える。同図に示すように、M3中の非ゼロ要素とゼロ要素とは直線x−3y+8=0によって分離することができる。ここで、
で定義される変数wを導入する。
図27の座標平面中の点(x、y)におけるwの値は、上記直線からこの点までの距離に依存する。上記直線よりも図中で上に位置する全ての点(直線上の点も含む)について、w≦0が成り立つ。また、図中に破線で示す直線(x−3y+7=0)よりも下に位置する全ての点(直線上の点も含む)について、w≧1が成り立つ。
【0122】
関数f2(x,y)を表すマトリクスM3は下記式のように実装することができることがわかる。
この実装においては、全ての非ゼロ要素を3としている。図43のコントローラ回路において、f2(x,y)は、2つの総和増幅器HS8およびHS9で実現される。なお、HS8は、f1(x,y)の実装にも用いられている。これが可能なのは、f2(x,y)=0のときHS8の出力F1はf1(x,y)となるからである。それ以外のときは、F1=f1(x,y)+f2(x,y)となる。
【0123】
(ステップ3)
(59)式に示すように、マトリクスM4を2つのマトリクスM5,M6に分解する。
マトリクスM5を実装するために、下記式に示す補助的なマトリクスM5,1を導入する。
マトリクスM5,2において、ゼロ要素は直線x+y−2=0上に位置している。また、マトリクスM5,3において、非ゼロ要素(ここでは全て「3」)は直線x−y=0上に位置している。これら2つのマトリクスの和は、上記2直線の交点において所望の要素(「3」)を含んでいる。マトリクスM5,2,M5,3は、それぞれ1変数関数ε1(z),ε2(w)として表すことができる。ここで、z=(x+y)/2、w=(x−y)/2である。これらの関数を図28(a)および図28(b)に示す。
【0124】
ε1(x,y)は下記式のように実装することができる。
図43のコントローラ回路において、3つの総和増幅器HS18−HS20がこの式に対応する。
【0125】
ε2(x,y)も3つの総和増幅器で実装できる。そのうち1つは、ε1(x,y)を出力する増幅器と共有することができる。このアプローチによれば、コントローラ中の増幅器の数を抑えることができる。
【0126】
格子点(1,1)と隣接する格子点との間においてより良好な補間が行われるようにするため、ε2(x,y)およびM5,3をそれぞれ別のものに変えることにする。マトリクスM5,3の代わりに、y=1の列のみが非ゼロ要素であるようなマトリクスM5,4、またはx=1の行のみが非ゼロ要素であるようなマトリクスM5,5を用いることができる。これらのマトリクスM5,4,M5,5に対応する関数をそれぞれε3(y),ε4(y)とする。そして、ε2(x,y)を改めて下記式のように定義する。これにより、図28(b)に示すε2(x,y)を用いた場合よりも、格子点間における良好な補間が実現される。
【0127】
この関数は、下記式に示すように、2つの増幅器で実装することができる。
この式の右辺には2つの式が示されているが、これらのうち何れを用いてもよい。1番目の式を用いる場合を考える。ε3(y)および−ε4(x)は、それぞれ図29(a)および図29(b)のようになり、下記式のように実装することができる。
【0128】
図43のコントローラ回路において増幅器HS21−HS24が(64)式に対応する。関数:ε2(x,y)=S(S(ε3(y)−ε4(x)+3)−ε4(x)+3)は、2つの増幅器HS25およびHS20で実装される。増幅器HS20は、(61)式に示される関数ε1(x,y)の実装においても用いられている。また、(61)式中の定数「−3」および(63)式中の定数「3」は、これら2つの関数を足し合わせる際に互いに打ち消し合っている。この増幅器HS20は、マトリクスM5,1を表す関数S(ε1(x,y)+ε2(x,y))を実装している。
【0129】
以上より、関数f3=S(S(ε1(x,y)+ε2(x,y))−3)とすると、下記式のようにマトリクスM5が得られる。
また、関数f3は、HS17で実装される。
【0130】
(ステップ4)
(66)式に示すように、マトリクスM6を2つのマトリクスM7,M8に分解する。
マトリクスM7は、「IF x=−3 and y≧0 THEN Output=1 ELSE Output=0」という規則に対応する。このマトリクスをM7=f4/3と表すと、関数f4は図30に示すようになる。x=−3且つy≧0を満たす全ての格子点(マトリクスM7の要素)とそれらに隣接する格子点との間で良好な補間が行われる。関数f4は、下記式のように実装することができる。
ここで、関数φ1(x)は、図31に示される通りであり、φ1=S(−3x−9)と実装される。図43のコントローラにおいて関数f4は、増幅器HS29−HS31およびHS17で実装されている。
【0131】
(ステップ5)
(68)式に示すように、マトリクスM8において非ゼロ要素は、座標(x=3,y=−3)および(x=−2,y=−1)にのみ存在している。これら2つの要素に対応する関数をそれぞれ、f5およびf6とする。
【0132】
まず、関数f5の実装を考える。関数f5の候補としてはいくつか考えられるが、ここでは図32に示されるものを用いる。これにより、格子点(3,−3)とそれに隣接する格子点との間で特に良好な補間がなされる。この関数f5は、下記式のように実装される。
ここで、関数φ2(x)は、図33に示される通りであり、φ2=S(3x−9)と実装される。図43のコントローラにおいて関数f5は、増幅器HS26−HS28およびHS17で実装されている。
【0133】
(ステップ6)
関数f6の実装を考えるに先立って、ピラミッド関数を導入する。ピラミッド関数とは、(70)式に示されるタイプの条件を実装する要素ブロックの関数である。この関数の一例を図34に示す。
【0134】
ピラミッド関数は、点(a,b)においてある値cをとり、隣りの点において値0をとる。cから0までの変化は線形である。図35を参照しつつ、ピラミッド関数を構築する。同図においては、2つの関数β1(x)およびβ2(x)が示されている。これらは、(2k+1)値論理(−k≦x≦k)において、下記式のように実装される。
下記式のように、変数yについても同様の関数を考える。
【0135】
下記式により、図36に示す関数が得られる。
γ(x)は、x=aのとき0、xがa以外の整数値のときkをとる。2変数の場合にも、同様にして、下記式のようにγ(x,y)を構築できる。
【0136】
関数γ(x,y)は、格子点(x=a,y=b)において0、その他の格子点においてkをとる。よって、下記式により、図34に示すピラミッド関数(高さk)を得ることができる。
【0137】
π(x,y)を入力する増幅器の入力ゲインファクターを調整することにより、任意の高さのピラミッドを得ることができる。例えば入力抵抗をフィードバック抵抗の2倍に設定することにより、高さがk/2のピラミッドを実現することができる。また、βj(x),βi(y)を構築する段階で符号を適宜設定することにより、x−y平面に関して図34に示すピラミッドと対称なピラミッド(すなわち頂点の3次元座標が(x,y,−k)であるようなピラミッド)を容易に得ることができる。なお、ピラミッド関数は図34に示されるものに限らず、様々なものが考えられる。例えば、z=x+y、w=x−yという変数変換を行い、(71)式および(72)式を変数z,wについて作ることにより、図37に示すピラミッドを得ることができる。どのピラミッド関数を用いるかは、隣接する格子点間での良好な補間が実現されるようにSPICEシミュレーション等で確認しつつ決定すればよい。また、図34および図37等に示されるような四角錘形状のものに限らず、四角錘台形状のものも容易に実装することができる。すなわち、β関数((71)式、(72)式参照)において定数を適宜変更することにより、下記式で表されるタイプの条件を実装することができる。
【0138】
なお、変数の数が3つ以上であっても、(74)式と同様の式を構築することができる。2変数の場合、ピラミッド関数の実装には6個の増幅器が必要とされる。変数の数が1つ増える毎に、さらに2つの増幅器が必要となる。
【0139】
関数f6の実装を考える。SPICEシミュレーションの結果、図34および図37の何れを用いた場合も、点(x=−2,y=−1)とそれに隣接する点との間における補間に若干の向上の余地があることがわかった。図34に示すピラミッド関数f(x,y)の断面を図38(a)および図38(b)に示す。前者はy軸に垂直な断面を、後者はx軸に垂直な断面をそれぞれ示している。ピラミッド関数を他の関数と重ね合わせて隣接する2点間で単調な線形補間を実現したい場合、ピラミッド関数のタイプは図39(a)〜図39(c)の中から適宜選ぶことができる。図39(a)〜図39(c)に示される断面をそれぞれ「中央台形型」、「右台形型」および「左台形型」と呼ぶ。これに対し、図38(a)および図38(b)に示される断面を「三角型」と呼ぶ。
【0140】
シミュレーションの結果によると、本例においてピラミッド関数f6は、yについては図38(b)に示す断面となり、xについては図39(b)に示す断面となるように、構築するのが好ましい。このような関数f6は、下記式のように実装すればよい。
図40(a)〜図40(d)は、それぞれ(77)式中のφ5(y)、φ6(x)、φ7(y)およびφ8(x)を示す。図41(a)〜図41(c)は、それぞれφ3、φ4およびf6を示す。これらはx軸に垂直な断面を示している。また、図41(d)〜図41(f)も、それぞれφ3、φ4およびf6を示す。これらはy軸に垂直な断面を示している。
【0141】
図41(a)〜図41(c)からわかるように、f6のx軸に垂直な断面は、x≦−2のとき三角型となっている。これにより、関数f6と関数f3との良好な重ね合わせが実現される。一方、上記断面は、−2≦x≦−1のとき中央台形型となっている。図41(d)〜図41(f)からわかるように、f6のy軸に垂直な断面は、右台形型となっている。これにより、関数f6と関数f1との良好な重ね合わせが実現される。
【0142】
図43のコントローラ回路において、関数f6(x,y)は、増幅器HS10−HS17で実装されている。増幅器HS17は、飽和することなく動作するため、F2=f3+f4+f5+f6の計算に用いられている。増幅器HS32およびHS33は、このコントローラの最終出力Fを計算する。Fは下記式で表される。
図43は、表9に示す関数を実装したコントローラ回路である。このコントローラは、33個の増幅器と93個の抵抗素子とを含んでいる。また、図43において、高出力増幅器PHS1およびPHS2は、それぞれ−yおよび−xに対応する電圧信号を生成している。図42(a)はHS3−HS33の構成例を示し、図42(b)はPHS1およびPHS2の構成例を示している。
【0143】
図44〜図50は、図43に示す回路についてのSPICEシミュレーションの結果を示
すグラフである。図44〜図46においては、変数xを固定し、変数yに対する出力の依存性を示している。一方、図47〜図49においては、変数yを固定し、変数xに対する出力の依存性を示している。図44および図47では、それぞれ変数xおよびyを0.5833Vずつすなわち論理値にして約1ずつ、−3から+3まで変化させている。図45および図48では、それぞれ変数xおよびyを0.29166Vずつすなわち論理値にして約0.5ずつ、−3から+3まで変化させている。図46および図49では、変数xおよびyを0.145833Vずつすなわち論理値にして約0.25ずつ、−3から+3まで変化させている。また、図50は、図43に示す回路についてのSPICEシミュレーションの結果を3次元座標系で示している。
【0144】
続いて、表10のファジィ規則表により表される関数を実装する。
表10中の言語表現による変数をそれぞれ電圧値に対応させたものが表11である。
ただし、電圧の範囲は0−3.5Vとしている。
表10を論理値で表現したものが表12である。ただし、論理値の数は−3から3までの7個としている。すなわち、各論理値の−3,−2,−1,0,1,2,3は、それぞれ電圧
値の0,Vdd/6,Vdd/3,Vdd/2,2Vdd/3,5Vdd/6,Vddに対応する。ここで、Vdd=3.5Vである。
【0145】
表12に記載されていない入力変数の組み合わせ(例えばdX=−3,X=1,V=0)については、出力を任意の妥当な値に設定することができる。いま、表12を下記式のように分解する。
この式は、dXが−3から3まで変化するとき、出力FがF1(X,V)からF2(X,V)まで線形的に変化することを意味している。F1(X,V)およびF2(X,V)をそれぞれ図51および図52に示す。
【0146】
図51中の左のマトリクスにおいて空欄を適当な値で補うことにより、同図中の右のマトリクスに示すように対称的な関数F1(X,V)が定義される。関数F1(X,V)は、図53に示すように、変数(X+Y)についての1変数関数と見ることができる。同図からわかるように、この関数F1((X+Y)/2)は、値が変化する領域を2つ有し、3つの増幅器を用いて下記式のように実装することができる。
関数F1は、後述する図54に示すコントローラ回路において、3個の総和増幅器(HS1、HS2およびHS17)で実装されている。
【0147】
図52からわかるように、F2(X,V)は、F1(X,V)とF3(X,V)に2/3を乗じたものとの和で表すことができる。すなわち、
である。
【0148】
ここで、下記式に示すように、F3(X,V)を表すマトリクスを2つのマトリクスに分解する。
つまり、F3=F4+F5である。関数F4は、(83)式で表される規則に従って、2変数X,Vについてのピラミッド関数として実装することができる。すなわち、関数F4は、(84)式のように実装される。
ここで、kは、正または負の論理値の数である。aおよびbは、それぞれ変数XおよびVの値を表す。本例においては、k=3,a=0,b=−1である。V≧1の条件下ではβ5=k=3であるので、(84)式は次のようになる。
関数F4は、図54に示すコントローラ回路において、5個の総和増幅器(HS9−HS12ならびにHS16)で実装されている。
【0149】
関数F5は、下記式により表される規則に従って、実装することができる。
0<X<1において関数F5を関数F4とカップリングさせるためには、F5のV軸に平行な断面が中央台形型であることが好ましい。これにより、F4の減少分がF5の増加分によって補償され、F5の減少分がF4の増加分によって補償されることになる。関数F5は、下記式のように実装される。
関数F5は、図54に示すコントローラ回路において、4個の総和増幅器(HS13−HS16)で実装されている。ここで、増幅器HS16は、両関数F4,F5の実装に共通して用いられており、下記式を実現している。
【0150】
コントローラの出力Fは、下記式で表すことができる。
この式中の規則(右辺第2項)は、次のように実装することができる。
(90)式は、図54に示すコントローラ回路において、5個の総和増幅器(HS3−HS6ならびにHS17)で実装されている。
【0151】
増幅器HS17の出力は、図54のコントローラの出力であり、下記式のようになる。
図54は、表10に示す関数を実装したファジィコントローラ回路である。増幅器PHS7およびHS8は、それぞれ入力変数XおよびVの符号を反転させるのに用いられている。増幅器PHS7は、高出力増幅器である。
【0152】
図55〜図60は、図54に示す回路についてのSPICEシミュレーションの結果を示すグラフである。何れのグラフも変数Xを固定し、変数Vに対する出力の依存性を示している。図55および図56はdX=0V(ZR)の場合である。図57および図58は、dX=1.75Vの場合である。また、図59および図60は、dX=3.5V(PL)の場合である。図55、図57および図59においては、変数Xを論理値にして3ずつ、−3から+3まで変化させている。また、図56、図58および図60においては、変数Xを論理値にして1ずつ、−3から+3まで変化させている。
【0153】
以上の例ではLUTで表される関数を扱ってきた。ここでは、数式で表される関数の実装例を示す。まず、図61(a)に示すy=f(x)(a≦x≦b)に変数変換を施すことにより、図61(b)に示す関数q=h(p)を得る。ここで、入力変数xとpとの関係は、下記式の通りである。
また、出力変数yとqとの関係は、下記式の通りである。
ここで、ymaxおよびyminは、a≦x≦bにおけるy=f(x)の最大値および最小値をそれぞれ表している。要するに、上記変数変換においては、x軸方向およびy軸方向それぞれについて、必要に応じて平行移動と縮小または拡大とを行うことにより、被実装関数の定義域および値域をそれぞれ閉区間[−k,k]内に収めている。これにより、関数y=f(x)は、上述のしきい値要素回路を用いた実装に適した形となる。なお、本例のように被実装関数の定義域および値域がそれぞれ閉区間[−k,k]内に丁度収まるようにすることは必須ではない。ここで、定義域が丁度収まるとは、x=aのときp=−k、且つx=bのときp=kとなる場合をいう。また、値域が丁度収まるとは、y=yminのときq=−k、且つy=ymaxのときq=kとなる場合をいう。
【0154】
入力変数pと電圧Vとの関係は、下記式の通りである。
すなわち、p=−kのときV=Vssとなり、p=kのときV=Vddとなる。VssおよびVddは、それぞれ飽和レベルの下限電圧および上限電圧である。なお、出力変数qと電圧Vとの関係は、入力変数pと電圧Vとの上記関係と同様であり、(94)式のpをqで置き換えることにより得られる。また、入力変数xと電圧Vとの関係は、下記式の通りである。
また、入力変数yと電圧Vとの関係は、下記式の通りである。
【0155】
次に、図62に示すように、q−h(p)を適当な間隔でサンプリングする。サンプリング点のp座標を小さい方から順にp1,p2,…,pnとする。なお、サンプリング間隔は、一定である必要はない。すなわち、pi−pi−1≠pi+1−piであってもよい。また、h(−k)≠0の場合、p1=−kとする、すなわち関数q=h(p)の定義域の最小値においてサンプリングすることが好ましい。同様に、h(k)≠0の場合、pn=kとする、すなわち関数q=h(p)の定義域の最大値においてサンプリングすることが好ましい。こうすることより、関数q=h(p)の実装精度を高めることができる。
【0156】
続いて、各サンプリング点(pi,h(pi))について、下記式で定義される関数(副関数と呼ぶ)を準備する(図63)。
この式において、i=1,2,…,nであるため、便宜的にp0およびpn+1を定義しておく必要がある。p0は、p1よりも小さい任意の値である。また、pn+1は、pnよりも大きい任意の値である。
【0157】
副関数ηi(p)は、しきい値要素回路を用いて下記式のように実装することができる。
図64(a)には、全てのiについて、副関数ηi(p)を図示している。この図からもわかるように、これらの副関数ηi(p)を重ね合わせることにより、近似的にq=h(p)を得ることができる。すなわち、Σiηi(p)は、図64(b)に示すように、隣り合うサンプリング点間を直線でつないで得られる折れ線グラフを表す。なお、図64(b)においては、pについて定義域[−k,k]の範囲内のみでグラフを図示している。ここで、output=Σiηi(p)は、下記式のように実装することができる。
【0158】
上述のように、副関数を重ね合わせることにより、しきい値要素回路を用いて任意の関数を実装することができる。被実装関数が曲線的な場合には、近似的に実装することになるが、サンプリング間隔を適当に設定することにより、誤差を許容範囲内に収めることができる。また、サンプリング間隔は一定である必要はないので、グラフ上で曲率半径の比較的小さいところではサンプリング間隔を比較的狭くし、曲率半径の比較的大きいところではサンプリング間隔を比較的広くすることも可能である。こうすることにより、サンプリング数の増大(回路素子数の増大につながる)を抑制しつつ、関数の実装精度を高めることができる。なお、図65に示すように、被実装関数が直線的な場合には、理論上誤差なく任意の関数を実装することができる。この場合、微分不可能点(直線の傾きが変化する点)をサンプリング点とすればよい。ここで、微分不可能点には、定義域の最小値および最大値に対応する点も含まれるものとする。
【0159】
例として、正弦関数:y=sin(x)を実装する。まず、(92)式および(93)式を用いて、この関数をq=h(p)の形にする。この場合、a=0、b=2π、ymin=−1、ymax=1である。また、k=1とすると、y=sin(x)は、下記式のようになる。
【0160】
次に、図66に示すように、(100)式の関数をサンプリングする。ここでは、簡単のため、サンプリング間隔を一定(=1/8)としている。各サンプリング点のp座標は、pi=(i−9)/8(i=1,2,…,17)と表される。また、この場合、副関数ηi(p)は、下記式のように実装される。
したがって、(100)式の関数は、図67に示すように実装することができる。この図中でηiと記されている記号は、(101)式に対応する回路を表しており、その回路構成は図68に示す通りである。図68は、具体例としてi=2の場合を示している。なお、図67においては、η1、η9およびη17に対応する回路が設けられていない。これは、本例においてh(η1)=h(η9)=h(η17)=0であるため、η1、η9およびη17は恒等的に0となり、したがってこれらに対応する回路を設ける必要がないからである。
【0161】
また、本例においては、Σiηi(p)に相当する演算が2段階に分けて実行される。すなわち、増幅器SF1はη2、η3およびη4の重ね合わせ演算を実行し、増幅器SF2はη5、η6、η7およびη8の重ね合わせ演算を実行し、増幅器SF3はη10、η11およびη12の重ね合わせ演算を実行し、増幅器SF4はη13、η14、η15およびη16の重ね合わせ演算を実行する。そして、増幅器Fは、増幅器SF1−SF4からの出力を重ね合わせることにより、Σiηi(p)すなわちq=h(p)を出力する。なお、Σiηi(p)に相当する演算は、1段階で行ってもよく、3段階以上に分けて実行してもよい。ただし、反転型の増幅器を用いる場合、段階数が奇数ならば、最終段の増幅器からの出力が−Σiηi(p)となることに注意すべきである。その場合、例えば、インバータを用いて上記出力の符号を反転させればよい。あるいは、予め副関数ηi(p)の符号を反転させておく、すなわち(98)式中のh(pi)を−h(pi)で置き換えたものを実装しておけばよい。図67において、増幅器SF1−SF4ならびに増幅器Fの入力重みは、全て1である。
【0162】
上記各実施形態のデバイス(図7,8,18,43,54等参照)においては、関数がハードウエアで実現されており、マイクロプロセッサ等によるソフトウエア的な処理を必要としない。マイクロプロセッサを搭載する必要がないため、本デバイスは、低コストで製造することができる。マイクロプロセッサが搭載された装置(例えば、電化製品、自動車など)に本デバイスを組み込む場合にも、そのマイクロプロセッサに負担を掛けることがない。
【0163】
また、本デバイスは、マイクロプロセッサに比して少ない数のトランジスタにより構築することが可能である。したがって、マイクロプロセッサを必要とするデバイスに比して、小型化、低消費電力化が可能であるとともに、熱暴走等による誤動作が発生する可能性が低い。さらに、所望の関数を実装するために、ハードウエアのみ開発すればよく、ソフトウエアを開発する必要がない。このため、ソフトウエアバグに起因する誤動作等の恐れがなく、したがって信頼性、安全性に優れている。
【0164】
また、マイクロプロセッサを必要とする従来の関数デバイスにおいては、関数の処理速度が、マイクロプロセッサにより入力変数を検出する時間間隔によって律速されてしまう。これに対し、ハードウエアで構成された本デバイスは、ナノ秒オーダーの高速処理が可能である。
【0165】
また、本デバイスは、アナログ信号を入力し、アナログ信号を出力するものであるため、AD変換器やDA変換器を必要としない。このため、一層簡略な構成で、関数を処理することができる。
【0166】
本デバイスにおいては、しきい値要素回路を用いて所定の関数を実装している。しきい値要素回路は、上述の通り、任意の多値論理において関数完全性を有する。したがって、しきい値要素回路の出力の重ね合わせが所望の関数の出力になるようにしきい値要素回路を組み合わせることにより、任意の多値論理関数を実装することができる。しかも、このしきい値要素回路の出力は、フラグメントコンスタント(図10(a)参照)ではなく、フラグメントリニア(図10(b)参照)である。このため、上記しきい値要素回路は、アナログのしきい値素子として用いることができ、その出力をアナログしきい値関数と呼ぶことができる。つまり、本デバイスは、このような出力特性をもつしきい値要素回路を用いているため、デジタル関数のみならずアナログ関数をも実装することができるのである。これに対して、フラグメントコンスタントな出力特性をもつ要素回路を用いた場合には、デジタル関数しか実装することができない。
【0167】
以上、本発明を実施の形態をもとに説明したが、さまざまな変形例が存在し、それらの変形例もまた本発明に含まれることは、当業者には理解されるところである。たとえば、実施の形態ではプッシュプルタイプの総和増幅器が利用されたが、これらはプッシュプルに限らず、差動タイプその他の増幅器であってもよい。
【0168】
図1(b)では、10個のトランジスタが利用されたが、この数も当然いろいろと選択の余地がある。たとえば6個のトランジスタを用いてもよく、増幅率との関係で定めればよい。
【0169】
上記実施形態においては反転型の演算増幅器をしきい値要素回路として用いたが、非反転型の演算増幅器をしきい値要素回路として用いてもよい。その場合、(3)式は、次のようになる。
また、しきい値要素回路として演算増幅器を用いることは必須ではない。図2(a)に示すような出力特性をもつその他の回路をしきい値要素回路として用いてもよい。
【0170】
ファジィ制御関数および三角関数を例にとって説明したが、本発明は、それ以外の任意の関数にも適用可能であることは上述の一連の説明から明らかである。上記実施形態において多値論理におけるしきい値要素回路の関数完全性を証明したとおり、総和増幅器を適宜組み合わせることにより、任意の関数に対応するデバイスを得ることが可能である。例えば、表7において出力論理値が任意の値であった場合、1変数(ここではxとする)を固定し、(26)式のように、xの各値について表7の縦の列をyの関数で表す。それにより、F(x=−3,y)、F(x=−2,y)、F(x=−1,y)、F(x=0,の、F(x=1,y)、F(x=2,y)、F(x=3,y)という7個の関数を得る。次に、(23)式に従って、xの各値について次の7つの式を準備する。
(i)φx(x=−3)=S(S(M−3(x);F(x=−3,y));S(−M−3(x);F(x=−3,y));F(x=−3,y))
(ii)φx(x=−2)=S(S(M−2(x);F(x=−2,y));S(−M−2(x);F(x=−2,y));F(x=−2,y))
(iii)φx(x=−1)=S(S(M−1(x);F(x=−1,y));S(−M−1(x);F(x=−1,y));F(x=−1,y))
(iv)φx(x=0)=S(S(M0(x);F(x=0,y));S(−M0(x);F(x=0,y));F(x=0,y))
(v)φx(x=1)=S(S(M1(x);F(x=1,y));S(−M1(x);F(x=1,y));F(x=1,y))
(vi)φx(x=2)=S(S(M2(x);F(x=2,y));S(−M2(x);F(x=2,y));F(x=2,y))
(vii)φx(x=3)=S(S(M3(x);F(x=3,y));S(−M3(x);F(x=3,y));F(x=3,y))
【0171】
上記(i)−(vii)は、それぞれ、次の規則に対応する。
if x=−3 then Output=F(x=−3,y)else Output=0
if x=−2 then Output=F(x=−2,y)else Output=0
if x=−1 then Output=F(x=−1,y)else Output=0
if x=0 then Output=F(x=0,y)else Output=0
if x=1 then Output=F(x=1,y)else Output=0
if x=2 then Output=F(x=2,y)else Output=0
if x=3 then Output=F(x=3,y)else Output=0
【0172】
よって、下記式:
Output=S(S(φx(x=−3);φx(x=−2);φx(x=−1);φx(x=0);φx(x=1);φx(x=2);φx(x=3)))…(38)
に従って総和増幅器を組むことにより、任意の関数に対応するデバイスを得ることができる。
【0173】
なお、F(x=α,y)を実装する際にも、(23)式を用いることができる。例えば、表7においてx=1の列の出力値が上から順に、y−3、y−2、y−1、y0、y1、y2、y3であるとすると、F(x=1,y)は下記式に従って実装すればよい。
F(x=1,y)=S(S(φy(y=−3);φy(y=−2);φy(y=−1);φy(y=0);φy(y=1);φy(y=2);φy(y=3)))
ここで、
φy(y=−3)=S(S(M−3(y);y−3);S(−M−3(y);y−3);y−3)、
φy(y=−2)=S(S(M−2(y);y−2);S(−M−2(y);y−2);y−2)、
φy(y=−1)=S(S(M−1(y);y−1);S(−M−1(y);y−1);y−1)、
φy(y=0)=S(S(M0(y);y0);S(−M0(y);y0);y0)、
φy(y=1)=S(S(M1(y);y1);S(−M1(y);y1);y1)、
φy(y=2)=S(S(M2(y);y2);S(−M2(y);y2);y2)、
φy(y=3)=S(S(M3(y);y3);S(−M3(y);y3);y3)
である。
【0174】
入力変数の数が2の場合を例にとって説明したが、入力変数の数は1つでもよく、3つ以上でもよい。例えば、入力変数がx、y、zの3つの場合、先ず1変数(ここではzとする)を固定し、zの各値について、残りの変数の関数を作る。つまり、F(x,y,z=γ)(γ=−3,−2,…,3)を作る。また、(23)式を用いて、下記式:
φz(z=γ)=S(S(Mγ(z);F(x,y,z=γ));S(−Mγ(z);F(x,y,z=γ));F(x,y,z=γ))
を作る。
そして、下記式:
Output=S(S(φz(z=−3);φz(z=−2);φz(z=−1);φz(z=0);φz(z=1);φz(z=2);φz(z−3)))
に従って総和増幅器を組めばよい。
【0175】
なお、F(x,y,z=γ)の実装の仕方は、2変数の場合について説明したとおりであり、(38)式と同様に実装すればよい。4変数以上の場合にも、変数を1つずつ固定し、上述の作業を繰り返せばよい。
【0176】
出力論理値の最大値および/または最小値が入力論理値の範囲を超える場合、表5の例で示したように、入力論理値を便宜的に定数倍して考えればよい(表5の例では2倍している)。このときの定数は、定数倍された入力論理値の範囲内に、出力論理値の最大値および最小値が収まるように決定する。また、出力論理値を定数(<1)倍することにより、入力論理値の範囲内に、定数倍された出力論理値の最大値および最小値が収まるようにしてもよい。
【0177】
論理値の数が3の場合(3値論理)または7の場合(7値論理)の場合を例にとって説明したが、論理値の数はその他の値でもよいことは言うまでもない。なお、上記実施形態において、LUTの要素を「論理値」と便宜的に表現しているが、入力変数および出力変数がデジタル変数に限らずアナログ変数であってもよいことは上述の一連の説明から明らかである。
【特許請求の範囲】
【請求項1】
入力電圧に対してアナログのしきい値素子として作用し、前記入力電圧に対する重み付け演算の結果を出力電圧として生成する演算増幅器を備え、
前記演算増幅器は、前記出力電圧が入力電圧に対して線形的に振る舞い、かつ所定の電源電圧で制限されるよう制御することにより、所望の関数を実現することを特徴とする関数デバイス。
【請求項2】
請求項1に記載の関数デバイスにおいて、
前記出力電圧の上下限が前記演算増幅器の飽和特性を定める関数デバイス。
【請求項3】
請求項1に記載の関数デバイスにおいて、
前記演算増幅器の動作点が前記電源電圧の1/2の電圧である関数デバイス。
【請求項4】
複数の演算増幅器によって構成され、それら演算増幅器の入力と出力の多値電圧信号が、複数のアナログしきい値関数の重ね合わせとして所定の関数に対応することを特徴とする関数デバイス。
【請求項5】
請求項4に記載の関数デバイスにおいて、
前記演算増幅器は、入力電圧の組合せが前記関数を表現したルックアップテーブルに含まれる最大値または最小値となる出力電圧に対応するとき、その出力電圧が飽和レベルになるよう制御する関数デバイス。
【請求項6】
請求項4に記載の関数デバイスにおいて、
前記関数を表現したルックアップテーブルを構成する離散的な点の間で、線形的な出力による近似がなされる関数デバイス。
【請求項7】
請求項1から6のいずれかに記載の関数デバイスにおいて、
当該デバイスは、ソフトウエア的な処理を廃したアナログ回路として構成される関数デバイス。
【請求項8】
入力電圧を入力する入力端子と、
前記入力端子から入力された前記入力電圧を処理し、前記入力電圧に対して出力すべき出力電圧を生成する処理回路部と、
前記処理回路部により生成された前記出力電圧を出力する出力端子と、を備え、
前記処理回路部は、入力された電圧の線形和を出力する複数のしきい値要素回路を含んでおり、
前記各しきい値要素回路から出力される電圧の重ね合わせが前記出力電圧となるように、前記各しきい値要素回路に、前記入力電圧および/または他の前記しきい値要素回路から出力される電圧が入力されるように構成されていることを特徴とする関数デバイス。
【請求項9】
請求項8に記載の関数デバイスにおいて、
前記しきい値要素回路は、前記線形和が所定範囲内にあるときに当該線形和を出力し、前記線形和が前記所定範囲の上限値以上であるときに当該上限値を出力し、前記線形和が前記所定範囲の下限値以下であるときに当該下限値を出力する関数デバイス。
【請求項10】
請求項9に記載の関数デバイスにおいて、
前記しきい値要素回路は、第1の電源端子にソースが接続されたPMOSトランジスタと、前記第1の電源端子よりも低い電圧が印加される第2の電源端子にソースが接続され、前記PMOSトランジスタのドレインにドレインが接続されたNMOSトランジスタとから構成されるCMOSトランジスタをp(p:奇数)段有しており、
各段の前記CMOSトランジスタを構成する前記PMOSトランジスタおよび前記NMOSトランジスタの各ドレインは、次段の前記CMOSトランジスタを構成する前記PMOSトランジスタおよび前記NMOSトランジスタの各ゲートと接続されており、
第1段の前記CMOSトランジスタを構成する前記PMOSトランジスタおよび前記NMOSトランジスタの各ゲートと、第p段の前記CMOSトランジスタを構成する前記PMOSトランジスタおよび前記NMOSトランジスタの各ドレインとは、フィードバック抵抗を介して接続されており、
前記第1段の前記各ゲートに、当該しきい値要素回路へ入力すべき電圧が入力抵抗を通じて入力し、前記第p段の前記各ドレインから、当該しきい値要素回路から出力すべき電圧が出力されるように構成されている関数デバイス。
【請求項11】
請求項10に記載の関数デバイスにおいて、
前記第1の電源端子に印加される電圧が前記所定範囲の上限値を定め、前記第2の電源端子に印加される電圧が前記所定範囲の下限値を定める関数デバイス。
【請求項12】
請求項8から11のいずれかに記載の関数デバイスにおいて、
前記入力電圧および前記出力電圧は共にアナログ信号であり、前記処理回路部は、前記入力電圧をアナログ信号のまま処理する関数デバイス。
【請求項13】
請求項1から12のいずれかに記載の関数デバイスにおいて、
当該デバイスは、ファジィ制御を実行するものである関数デバイス。
【請求項14】
請求項13に記載の関数デバイスにおいて、
当該デバイスは、A/D変換器であるファジィ化器、D/A変換器であるデファジィ化器、およびマイクロプロセッサによるソフトウエア的な処理を廃したアナログ回路として構成される関数デバイス。
【請求項15】
当該デバイスの出力が第1の直線上に乗っている第1出力区間を実現する第1の回路と、前記出力が第2の直線上に乗っている第2出力区間を実現する第2の回路と、を含むことを特徴とする関数デバイス。
【請求項16】
請求項15に記載の関数デバイスにおいて、
前記第1および第2の回路の出力は、それぞれ前記第1および第2出力区間以外の区間において一定値をとる関数デバイス。
【請求項1】
入力電圧に対してアナログのしきい値素子として作用し、前記入力電圧に対する重み付け演算の結果を出力電圧として生成する演算増幅器を備え、
前記演算増幅器は、前記出力電圧が入力電圧に対して線形的に振る舞い、かつ所定の電源電圧で制限されるよう制御することにより、所望の関数を実現することを特徴とする関数デバイス。
【請求項2】
請求項1に記載の関数デバイスにおいて、
前記出力電圧の上下限が前記演算増幅器の飽和特性を定める関数デバイス。
【請求項3】
請求項1に記載の関数デバイスにおいて、
前記演算増幅器の動作点が前記電源電圧の1/2の電圧である関数デバイス。
【請求項4】
複数の演算増幅器によって構成され、それら演算増幅器の入力と出力の多値電圧信号が、複数のアナログしきい値関数の重ね合わせとして所定の関数に対応することを特徴とする関数デバイス。
【請求項5】
請求項4に記載の関数デバイスにおいて、
前記演算増幅器は、入力電圧の組合せが前記関数を表現したルックアップテーブルに含まれる最大値または最小値となる出力電圧に対応するとき、その出力電圧が飽和レベルになるよう制御する関数デバイス。
【請求項6】
請求項4に記載の関数デバイスにおいて、
前記関数を表現したルックアップテーブルを構成する離散的な点の間で、線形的な出力による近似がなされる関数デバイス。
【請求項7】
請求項1から6のいずれかに記載の関数デバイスにおいて、
当該デバイスは、ソフトウエア的な処理を廃したアナログ回路として構成される関数デバイス。
【請求項8】
入力電圧を入力する入力端子と、
前記入力端子から入力された前記入力電圧を処理し、前記入力電圧に対して出力すべき出力電圧を生成する処理回路部と、
前記処理回路部により生成された前記出力電圧を出力する出力端子と、を備え、
前記処理回路部は、入力された電圧の線形和を出力する複数のしきい値要素回路を含んでおり、
前記各しきい値要素回路から出力される電圧の重ね合わせが前記出力電圧となるように、前記各しきい値要素回路に、前記入力電圧および/または他の前記しきい値要素回路から出力される電圧が入力されるように構成されていることを特徴とする関数デバイス。
【請求項9】
請求項8に記載の関数デバイスにおいて、
前記しきい値要素回路は、前記線形和が所定範囲内にあるときに当該線形和を出力し、前記線形和が前記所定範囲の上限値以上であるときに当該上限値を出力し、前記線形和が前記所定範囲の下限値以下であるときに当該下限値を出力する関数デバイス。
【請求項10】
請求項9に記載の関数デバイスにおいて、
前記しきい値要素回路は、第1の電源端子にソースが接続されたPMOSトランジスタと、前記第1の電源端子よりも低い電圧が印加される第2の電源端子にソースが接続され、前記PMOSトランジスタのドレインにドレインが接続されたNMOSトランジスタとから構成されるCMOSトランジスタをp(p:奇数)段有しており、
各段の前記CMOSトランジスタを構成する前記PMOSトランジスタおよび前記NMOSトランジスタの各ドレインは、次段の前記CMOSトランジスタを構成する前記PMOSトランジスタおよび前記NMOSトランジスタの各ゲートと接続されており、
第1段の前記CMOSトランジスタを構成する前記PMOSトランジスタおよび前記NMOSトランジスタの各ゲートと、第p段の前記CMOSトランジスタを構成する前記PMOSトランジスタおよび前記NMOSトランジスタの各ドレインとは、フィードバック抵抗を介して接続されており、
前記第1段の前記各ゲートに、当該しきい値要素回路へ入力すべき電圧が入力抵抗を通じて入力し、前記第p段の前記各ドレインから、当該しきい値要素回路から出力すべき電圧が出力されるように構成されている関数デバイス。
【請求項11】
請求項10に記載の関数デバイスにおいて、
前記第1の電源端子に印加される電圧が前記所定範囲の上限値を定め、前記第2の電源端子に印加される電圧が前記所定範囲の下限値を定める関数デバイス。
【請求項12】
請求項8から11のいずれかに記載の関数デバイスにおいて、
前記入力電圧および前記出力電圧は共にアナログ信号であり、前記処理回路部は、前記入力電圧をアナログ信号のまま処理する関数デバイス。
【請求項13】
請求項1から12のいずれかに記載の関数デバイスにおいて、
当該デバイスは、ファジィ制御を実行するものである関数デバイス。
【請求項14】
請求項13に記載の関数デバイスにおいて、
当該デバイスは、A/D変換器であるファジィ化器、D/A変換器であるデファジィ化器、およびマイクロプロセッサによるソフトウエア的な処理を廃したアナログ回路として構成される関数デバイス。
【請求項15】
当該デバイスの出力が第1の直線上に乗っている第1出力区間を実現する第1の回路と、前記出力が第2の直線上に乗っている第2出力区間を実現する第2の回路と、を含むことを特徴とする関数デバイス。
【請求項16】
請求項15に記載の関数デバイスにおいて、
前記第1および第2の回路の出力は、それぞれ前記第1および第2出力区間以外の区間において一定値をとる関数デバイス。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図32】
【図33】
【図34】
【図35】
【図36】
【図37】
【図38】
【図39】
【図40】
【図41】
【図42】
【図43】
【図44】
【図45】
【図46】
【図47】
【図48】
【図49】
【図50】
【図51】
【図52】
【図53】
【図54】
【図55】
【図56】
【図57】
【図58】
【図59】
【図60】
【図61】
【図62】
【図63】
【図64】
【図65】
【図66】
【図67】
【図68】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図32】
【図33】
【図34】
【図35】
【図36】
【図37】
【図38】
【図39】
【図40】
【図41】
【図42】
【図43】
【図44】
【図45】
【図46】
【図47】
【図48】
【図49】
【図50】
【図51】
【図52】
【図53】
【図54】
【図55】
【図56】
【図57】
【図58】
【図59】
【図60】
【図61】
【図62】
【図63】
【図64】
【図65】
【図66】
【図67】
【図68】
【国際公開番号】WO2005/004032
【国際公開日】平成17年1月13日(2005.1.13)
【発行日】平成19年9月20日(2007.9.20)
【国際特許分類】
【出願番号】特願2005−511364(P2005−511364)
【国際出願番号】PCT/JP2004/009442
【国際出願日】平成16年7月2日(2004.7.2)
【出願人】(304036880)有限会社Advanced Logic Projects (4)
【国際公開日】平成17年1月13日(2005.1.13)
【発行日】平成19年9月20日(2007.9.20)
【国際特許分類】
【国際出願番号】PCT/JP2004/009442
【国際出願日】平成16年7月2日(2004.7.2)
【出願人】(304036880)有限会社Advanced Logic Projects (4)
[ Back to top ]