以下、本発明を実施するための形態について、図面を参照しながら説明する。
本実施例では、式(13a)〜(13d)で説明した平面四方格子状のガボール型フィルタ演算をアナログ回路によって高速に演算することが可能となるように構成する例について説明する。
〔1〕全体構成
図1は、本発明の実施例1に係る情報処理装置の全体構成を表す図である。情報処理装置1は、節点ユニットネットワーク2、基準位相発生部2a、入力部3、出力部4、及び全体制御部5を備えている。
節点ユニットネットワーク2は、複数の節点ユニット(後述)が並進対称な格子状に相互結合したネットワーク構造を有している。基準位相発生部2aは、基準位相信号の生成を行う。入力部3は、節点ユニットネットワーク2の各節点ユニットに、位相状態値の初期値を設定する。出力部4は、節点ユニットネットワーク2の各節点ユニットの位相状態値を出力する。全体制御部5は、節点ユニットネットワーク2の各節点ユニットに、更新係数やパルス遅延量などのパラメータを設定するとともに、それら節点ユニットの動作制御を行う。
図2は、節点ユニットネットワーク2の構成を示す図である。図3は、図2のピクセル・アレイ13の内部構成を表す図である。図4は、各節点ユニット6の全体構成を表す図である。各節点ユニット6は、図4に示したように、実部節点ユニット7と虚部節点ユニット8とを備えている。ここで、節点ユニット6は、2次元ガボール型フィルタの状態値を保持する各節点に対応する。また、実部節点ユニット7は、節点の状態値の実部を保持・更新する部分、虚部節点ユニット8は状態値の虚部を保持・更新する部分である。
節点ユニットネットワーク2は、N行M列に配列されたM×N個の節点ユニット6を備えている。各節点ユニット6は、図2のように、平面四方格子点状に配列されている。これをピクセル・アレイ13と呼ぶ。各節点ユニット6は、図3に示すように、上下左右に隣接する4つの節点ユニット6と互いに結合されている。以下、n行m列目の節点ユニット6を、「節点ユニットUm,n」と呼ぶことにする。
また、節点ユニットネットワーク2は、図2のように、列セレクタ14と2つのドライバ15,16を備えている。
ドライバ15は、ピクセル・アレイ13のすべての列の各節点ユニット6に対して、自己更新係数G0に対応する電圧を印加するためのドライバである。
ピクセル・アレイ13の各列の節点ユニット6には、共通の列選択信号線9(図4参照)が接続されている。列選択信号線9は全部でM本ある。列セレクタ14は、各列の列選択信号線9の何れかに対して、選択列を指定するための列選択信号を入力する(Hレベルにする)ことによって、ピクセル・アレイ13の列の選択を行う。
ピクセル・アレイ13の各行の実部節点ユニット7には、図4に示したように、共通の初期値入力線10が接続されている。初期値入力線10は全部でN本である。各初期値入力線10には、入力部3から、位相状態値の初期値を設定するための初期化信号が入力される。ガボール型フィルタの演算を実行するのに先立ち、全体制御部5が、列セレクタ14により列を選択した後、入力部3が各初期値入力線10から各行の実部節点ユニット7の位相状態値の初期値(初期化信号)を入力することにより、各実部節点ユニット7に位相状態値の初期値を設定することができる。
ピクセル・アレイ13の各行の実部節点ユニット7と虚部節点ユニット8には、図4に示したように、それぞれ、共通の実部外部出力線11及び虚部外部出力線12が接続されている。実部外部出力線11及び虚部外部出力線12も、それおれ、全部でN本ずつある。
各実部外部出力線11及び各虚部外部出力線12は、ドライバ16を介して、出力部4に接続されている。ドライバ16は、列セレクタ14により選択された列にある各行の実部節点ユニット7及び虚部節点ユニット8が発火したときに出力するスパイク・パルス(spike pulse)spk_fを、外部回路である出力部4に出力するための出力バッファである。ガボール型フィルタの演算がすべて終了した後に、全体制御部5が、列セレクタ14により列を選択した後、出力部4が各行の実部外部出力線11及び虚部外部出力線12から各行の実部節点ユニット7及び虚部節点ユニット8の位相状態値を読み出して出力することができる。
尚、本実施例では、もっとも一般に用いられる例として、節点ユニット6が平面四方格子状に結合した例を説明するが、本発明では、節点ユニットネットワーク2の構成としてこれ以外にも、目的に応じて、三方格子状、六方格子状等の様々なネットワーク構造を採ることができる。
図3に示すように、各節点ユニット6には、隣接する各節点ユニット6から、表1のようなパルス(更新トリガ又は自己更新トリガ)が入力される。表1において、「隣接節点方位」欄は、注目する節点ユニットUm,nに対しパルス(更新トリガ)を出力する隣接節点ユニットUm’,n’の方位(節点ユニットUm,nから見た方位)である。例えば、「上」は隣接節点ユニットUm-1,nを指す。「隣接節点種類」欄は、パルスを出力する隣接節点ユニットUm’,n’の種類(「実部節点ユニット7」又は「虚部節点ユニット8」)を表す。例えば、節点ユニットUm,nに対し左側の隣接節点ユニットUm-1,nの実部節点ユニット7が更新項−G1xθm,n r(t)δ(tp(m-1,n) r∈[t,t+Δt])が出力される場合において、当該更新係数G1xが正の場合(すなわち、−G1xが負の場合)、節点ユニットUm,nに対しパルスR_left_m_gx1が入力される。
尚、表1の最下段のg0_p,g0_mは、すべての節点ユニットUm,nに対し共通に入力されるパルス(自己更新トリガ)であり、式(13c),(13d)の自己更新係数−G0が負の場合g0_mが、自己更新係数−G0が正の場合g0_pが入力される。
また、各節点ユニット6からは、隣接する各節点ユニット6に対し、表2のようなパルス(更新トリガ又は自己更新トリガ)が出力される。表2において、「隣接節点方位」欄は、注目する節点ユニットUm,nからパルス(更新トリガ)を出力する隣接節点ユニットUm’,n’の方位(節点ユニットUm,nから見た方位)である。「隣接節点種類」欄は、パルスを出力する隣接節点ユニットUm’,n’の種類(「実部節点ユニット7」又は「虚部節点ユニット8」)を表す。
ここで、上記各入力パルスの記号法について説明すると、先頭の「R」又は「I」は、実部節点ユニット7の出力(R)か虚部節点ユニット8の出力(I)かを表す。先頭から2番目の「left」,「right」,「top」,「bottom」はトリガパルスが入力される隣接方向を表し、それぞれ「left」が左隣接,「right」が右隣接,「top」が上隣接,「bottom」が下隣接の隣接節点ユニット6から入力されるトリガパルスであることを表す。先頭から3番目の「p」,「m」はトリガパルスの正負(すなわち更新係数Gikの符号)を表し、「p」が正,「m」が負であることを表す。末尾の「gx1」,「gx2」,「gy1」,「gy2」は、トリガパルスに乗算されている更新係数の種類を表し、それぞれ、「gx1」がG1x,「gx2」がG2x,「gy1」がG1y,「gy2」がG2yが乗算されていることを表す。例えば、「R_left_p_gx1」は、左隣接の実部節点ユニット7から出力される正のトリガパルスに更新係数G1xを乗算した入力パルスであることを表す。
また、上記各出力パルスの記号法について説明すると、先頭の「R」又は「I」は、実部節点ユニット7の出力(R)か虚部節点ユニット8の出力(I)かを表す。先頭から2番目の「OUT」はトリガパルスが出力パルスであることを表す。先頭から3番目の「P」,「M」はトリガパルスの正負(すなわち更新係数Gikの符号)を表し、「P」が正,「M」が負であることを表す。末尾の「gx1」,「gx2」,「gy1」,「gy2」は、トリガパルスに乗算されている更新係数の種類を表し、それぞれ、「gx1」がG1x,「gx2」がG2x,「gy1」がG1y,「gy2」がG2yが乗算されていることを表す。例えば、「I_OUT_M_gy2」は、虚部節点ユニット8から出力される負のトリガパルスに更新係数G2yを乗算した出力パルスであることを表す。
図5は、図4の実部節点ユニット7の内部構成を表すブロック図である。尚、虚部節点ユニット8の内部構成についてもこれと同様であるため、ここでは、代表として実部節点ユニット7についてのみ説明する。
実部節点ユニット7(虚部節点ユニット8)は、スパイク・ニューロン回路20、遅延パルス生成器21、更新許可スイッチ22、セレクタ付きパルス生成器23,24,25,26、状態値更新回路27、及び列選択スイッチ28,29を備えている。
スパイク・ニューロン回路20は、実部節点ユニット7(虚部節点ユニット8)に固有の位相状態値を保持する位相状態値保持手段として機能するとともに、位相状態値保持手段が保持する位相状態値を一定の位相速度ωで経時的に変化させる位相進行手段、位相状態値保持手段が保持する位相状態値が最大位相状態値に達したときに、位相状態値を最小位相状態値にリセットする位相復位手段、及び位相状態値が零位相状態値を過ぎたときに発火して更新トリガを出力するトリガ発生手段として機能する。このスパイク・ニューロン回路20は、発火したときにスパイク・パルスspk_fを出力し、このスパイク・パルスspk_fは更新許可スイッチ22を介してセレクタ付きパルス生成器23,24,25,26に入力される。
更新許可スイッチ22は、AND回路で構成され、一方の入力がスパイク・ニューロン回路20の出力に接続され、他方の入力には、全体制御部5から出力される更新許可信号update_enaが入力される。更新許可スイッチ22は、更新許可信号update_enaがHレベルのときには、スパイク・ニューロン回路20が出力するスパイク・パルスspk_fをセレクタ付きパルス生成器23,24,25,26に伝達し、更新許可信号update_enaがLレベルのときは伝達しない。これにより、状態値の更新を実行するかしないかを切り替えることができる。
セレクタ付きパルス生成器23,24,25,26は、スパイク・パルスspk_fが入力されると、それぞれ、各更新係数G1xの大きさに比例したパルス幅を持つトリガパルス(更新トリガ)R_OUT_P_gx1, R_OUT_M_gx1,G2xの大きさに比例したパルス幅を持つトリガパルス(更新トリガ)R_OUT_P_gx2, R_OUT_M_gx2,G1yの大きさに比例したパルス幅を持つトリガパルス(更新トリガ)R_OUT_P_gy1, R_OUT_M_gy1,G2yの大きさに比例したパルス幅を持つトリガパルス(更新トリガ)R_OUT_P_gy2, R_OUT_M_gy2を出力する。
状態値更新回路27は、隣接節点ユニット6から各トリガパルスが入力されると、それらのトリガパルスの符号及びパルス幅に応じて、スパイク・ニューロン回路20内の位相状態値保持手段が保持する位相状態値を増加又は減少させることにより、状態値の更新を行う。
従って、本実施例では、セレクタ付きパルス生成器23,24,25,26及び状態値更新回路27が協働することによって、隣接する隣接節点ユニットのトリガ発生手段がトリガ(更新トリガ)を出力したとき、当該隣接節点ユニットの隣接方位に応じて、その時点で保持する位相状態値を、当該位相状態値に隣接方位により予め設定された更新係数を乗じた値だけ変化させることにより、状態値の更新を行う位相更新手段として機能することになる。
次に、図5の実部節点ユニット7(虚部節点ユニット8)の各部の詳細な構成とその動作について述べる。
〔2〕実部節点ユニット7及び虚部節点ユニット8の各部の詳細構成と動作
(1)スパイク・ニューロン回路20
図6は、実部節点ユニット7及び虚部節点ユニット8のスパイク・ニューロン回路20の構成例(a)及びその動作(b)を示す図である。図6に示したスパイク・ニューロン回路20は、位相状態値保持用キャパシタC0、2つの電流源I1,I2、2つのコンパレータCMP1,CMP2、2つのトリガパルス生成器PG1,PG2、及び3つのスイッチ回路S1,S2,S3を備えている。
位相状態値保持用キャパシタC0は一端が接地され、他端が出力ノードn1に接続されている。電流源I1は、出力ノードn1を介して位相状態値保持用キャパシタC0に接続されており、他端子がスイッチ回路S1を介して電源に接続されている。スイッチ回路S2は、一端が出力ノードn1に接続され、他端には、位相の最小値(最小位相値)θminに相当する電圧である最小値電圧Vlowが入力されている。
コンパレータCMP1は、プラス側入力端子が出力ノードn1に接続され、マイナス側入力端子に最大値電圧Vhighが入力されている。最大値電圧Vhighは、位相の最大値(最大位相値)θmaxに相当する電圧であり、全体制御部5で生成され入力される。また、コンパレータCMP1の出力は、トリガパルス生成器PG1を介してスイッチ回路S1,S2の制御端子に接続されている。トリガパルス生成器PG1が生成するパルス幅は、キャパシタの電荷を放電してVlowに設定するのに要する時間を決定する。コンパレータCMP1の出力がHレベルのときは、スイッチ回路S1が開路(切断)状態、スイッチ回路S2が閉路(接続)状態となり、Lレベルのときはその逆となる。
コンパレータCMP2は、プラス側入力端子が出力ノードn1に接続され、マイナス側入力端子に零値電圧Vmiddleが入力されている。零値電圧Vmiddleは、位相が零値であることを表す電圧であり、全体制御部5で生成され入力される。また、コンパレータCMP2の出力は、トリガパルス生成器PG2に接続されている。
トリガパルス生成器PG2は、コンパレータCMP2が出力するパルス波形の立ち上がりにおいて、短時間幅のスパイク・パルスspk_fを出力する回路である。トリガパルス生成器PG2の出力側は、スパイク・ニューロン回路20の出力端子に接続されている。
電流源I2は、一端が出力ノードn1を介して位相状態値保持用キャパシタC0に接続されており、他端がスイッチ回路S3を介して電源に接続されている。スイッチ回路S3の制御端子には、初期値入力線10が接続されている。スイッチ回路S3は、入力部3から入力される初期化信号がHレベルのときに閉路状態、Lレベルのときに開路状態となる。
この回路では、出力ノードn1の電圧(位相状態値電圧)Vr又は位相状態値保持用キャパシタC0に充電された電荷量Qr=C0Vrが、この実部節点ユニット7又は虚部節点ユニット8の「位相状態値」となる。
状態値更新回路27が状態値の更新を行っていない(すなわち、出力ノードn1に状態値更新回路27からの電流の入出力がない)状態では、出力ノードn1の位相状態値電圧Vr、コンパレータCMP1の出力電圧spk_r、及びスパイク・ニューロン回路20の出力電圧spk_fは、図6(b)に示したような時間変化をする。すなわち、まず、コンパレータCMP1の出力電圧spk_rがHレベルとなると、スイッチ回路S2が閉路するとともにスイッチ回路S1が開路して、位相状態値保持用キャパシタC0が放電され、Vr=Vlow(すなわち、位相値θ=θmin<0)にリセットされる。次に、前記トリガパルス幅の時間後にコンパレータCMP1の出力電圧spk_rはLレベルとなり、スイッチ回路S2が開路しスイッチ回路S1が閉路される。そうすると、電流源I1により、位相状態値保持用キャパシタC0に一定の充電電流Isが供給され、出力ノードn1の位相状態値電圧Vrは一定の勾配で上昇し始める。すなわち、位相θがθmin+ωtで変化する。このとき、Vr<Vmiddleなので、コンパレータCMP2の出力電圧はLレベルである。
位相状態値電圧Vrが零値電圧Vmiddleを過ぎた直後(すなわち、位相θが0を過ぎたとき)、コンパレータCMP2の出力電圧がLレベルからHレベルに反転する。トリガパルス生成器PG2は、このコンパレータCMP2の出力電圧の立ち上がりにおいて、短時間のスパイク・パルスspk_fを出力する。すなわち、スパイク・ニューロン回路20が「発火(fire)」する。
位相状態値電圧Vrがさらに上昇して最大値電圧Vhighに達したとき(すなわち、位相θが最大値θmaxに達したとき)、コンパレータCMP1の出力がHレベルとなる。これに伴って、スイッチ回路S1が開路して、スイッチ回路S2が閉路され、位相状態値保持用キャパシタC0に充電された電荷は瞬時に放電されて、Vr=Vlowとなる。この放電に伴って、コンパレータCMP1,CMP2の出力が再びLレベルとなり、再びスイッチ回路S2が開路しスイッチ回路S1が閉路されて、電流源I1により、位相状態値保持用キャパシタC0に一定の電流I1が供給される。従って、状態値更新回路27が状態値の更新を行っていない状態では、位相θは、式(6a)に示したように常にθmin+ωtで鋸歯波状に変化し、スパイク・ニューロン回路20は、常に一定の時間間隔(更新周期)T=(θmax−θmin)/ωで発火して、一定の更新周期Tのスパイク・パルスspk_fを出力することになる。(ここでは、コンパレータCMP1のトリガパルス生成器PG1を介した出力パルスの時間幅は十分短いものとしている。)
図7は、実部節点ユニット7及び虚部節点ユニット8のスパイク・ニューロン回路20の他の構成例を示す図である。図7に示したスパイク・ニューロン回路20は、位相状態値保持用キャパシタC0、2つの電流源I1,I2、2つのコンパレータCMP1,CMP2、2つのトリガパルス生成器PG1,PG2、スイッチ回路S1,S2,S3、バッファ回路BUF1,BUF2,BUF3、及びインバータINV3,INV4を備えている。また、コンパレータCMP1は、キャパシタC3、インバータINV1、及びスイッチ回路S4,S5,S6を備え、コンパレータCMP2は、キャパシタC4、インバータINV2、及びスイッチ回路S7,S8,S9を備えている。尚、図7において、図6に対応する構成部分については、図6と同符号を付している。また、図6の場合と同様に、図7の回路のノードn1は状態更新回路27の出力端子に接続されており、ノードn10(トリガパルス生成器PG2の出力ノード)は列選択スイッチ29及び更新許可スイッチ22の一方の入力端子に接続されている(図5参照)。
図7の回路では、コンパレータCMP1,CMP2が、サンプルホールド機能を有するチョッパ型比較器として設計されている。
図8は、図7のスパイク・ニューロン回路20の各スイッチ及び各ノードに入力される信号のタイミング図である。図8は、状態更新回路27から出力ノードn1に電流の入出力がない(状態値の更新が行われていない)定常状態に於ける動作を表している。以下、図7のスパイク・ニューロン回路20の動作を図8に従って説明する。
(フェーズ1)
まず、フェーズ1において、コンパレータCMP1の出力電圧spk_rがHレベルであるとする。このとき、スイッチ回路S2,S5,S6,S8,S9は閉路(接続)状態、スイッチ回路S1,S4,S7は開路(切断)状態となる。スイッチ回路S1が開路することにより、電流源I1からノードn1への電流の供給は停止される。スイッチ回路S2が閉路することにより、ノードn1の位相状態値電圧Vrは最小値電圧Vlowとなる。スイッチ回路S4が開路しスイッチ回路S5が閉路することにより、キャパシタC3の入力側ノードn3の電圧V3は最大値電圧Vhighとなる。スイッチ回路S7が開路しスイッチ回路S8が閉路することにより、キャパシタC4の入力側ノードn7の電圧V7は零値電圧Vmiddle=(Vhigh+Vlow)/2となる。スイッチ回路S6が閉路することにより、インバータINV1の入力ノードn4と出力ノードn5とが接続されて同電位となり、ノードn4,n5の電圧V4,V5は、それぞれ、インバータINV1の閾値電圧Vth1となる。同様に、スイッチ回路S9が閉路することにより、インバータINV2の入力ノードn8と出力ノードn9とが接続されて同電位となり、ノードn8,n9の電圧V8,V9は、それぞれ、インバータINV2の閾値電圧Vth2となる。このとき、トリガパルス生成器PG2の出力はLレベルである。
フェーズ1において、キャパシタC3には電圧Vhigh−Vth1が印加されるため、電荷Q31=C3(Vhigh−Vth1)が充電される。また、キャパシタC4には電圧Vmiddle−Vth2が印加されるため、キャパシタC4の充電電荷はQ41=C3(Vmiddle−Vth2)となる。
(フェーズ2)
時刻t1において、コンパレータCMP1の出力電圧spk_rがLレベルに立ち下がりフェーズ2に移行する。フェーズ2では、スイッチ回路S2,S5,S6,S8,S9は開路状態、スイッチ回路S1,S4,S7は閉路状態となる。スイッチ回路S4が閉路しスイッチ回路S5が開路することにより、キャパシタC3の入力側ノードn3には、ノードn1の位相状態値電圧Vrが印加される。同様に、スイッチ回路S7が閉路しスイッチ回路S8が開路することにより、キャパシタC4の入力側ノードn7にも、ノードn1の位相状態値電圧Vrが印加される。
一方、スイッチ回路S6,S9が開路することによって、インバータINV1,INV2の入力側ノードn4,n8はフローティング状態となる。従って、キャパシタC3,C4の充電電荷Q31,Q41は放電されることがないため、ノードn4,n8の電圧V4,V8はノードn3,n7の電圧V3,V7に追随して変化する。時刻t1では、Vr=Vlowなので、スイッチ回路S4,S7の閉路とともに、電圧V3,V7は、それぞれVhigh−Vth1,Vmiddle−Vth2だけ降下する。従って、それに追随して、電圧V4,V8は、時刻t1で、それぞれVlow−(Vhigh−Vth1),Vlow−(Vmiddle−Vth2)となる。それに伴い、インバータINV1,INV2の出力V5,V9はHレベル(Vhigh)となる。
また、時刻t1にコンパレータCMP1の出力電圧spk_rがLレベルになると、スイッチ回路S1が閉路して、電流源I1によりノードn1への電流供給が開始される。従って、フェーズ2では、ノードn1の位相状態値電圧Vrは最小値電圧Vlowから最大値電圧Vhighに向かって一定勾配で上昇する。そして、それに追随してノードn4,n8の電圧V4,V8も、それぞれVlow−Vmiddle,Vlowから同じ勾配で上昇する。
(フェーズ3)
時刻t2において、ノードn8の電圧V8がインバータINV2の閾値電圧Vth2に達すると、インバータINV2の出力電圧V9がLレベル(Vlow)に反転し、フェーズ3に移行する。フェーズ3では、インバータINV2の出力電圧V9の立ち下がりに伴って、トリガパルス生成器PG2から一定の時間幅(t3−t2)のスパイク・パルスが出力電圧spk_fに出力される。このとき、各スイッチ回路の切り替わりはなく、引き続き電圧Vr,V3,V4,V7,V8は一定勾配で上昇を続ける。
(フェーズ4)
フェーズ4では、トリガパルス生成器PG2の出力は再びLレベルに戻り、引き続き電圧Vr,V3,V4,V7,V8は一定勾配で上昇を続ける。
(フェーズ1)
時刻t4において、ノードn4の電圧V4がインバータINV1の閾値電圧Vth1に達すると、インバータINV1の出力電圧V5がLレベル(Vlow)に反転し、フェーズ5に移行する。フェーズ5では、インバータINV1の出力電圧V5の立ち下がりに伴って、トリガパルス生成器PG1から一定の時間幅(t5−t4)のスパイク・パルスが出力電圧spk_rに出力される。
出力電圧spk_rはHレベル(Vhigh)となると、スイッチ回路S2,S5,S6,S8,S9は閉路(接続)状態、スイッチ回路S1,S4,S7は開路(切断)状態となる。スイッチ回路S4が開路しスイッチ回路S5が閉路することにより、ノードn3の電圧V3は最大値電圧Vhighとなる。スイッチ回路S7が開路しスイッチ回路S8が閉路することにより、ノードn7の電圧V7は零値電圧Vmiddleとなる。
また、スイッチ回路S6,S9が開路することにより、ノードn4,n5,n8,n9の電圧V4,V5,V8,V9はすぐにそれぞれのインバータの閾値電圧に引き戻される。以下は、上述したとおりの同様の動作が繰り返される。
(2)セレクタ付きパルス生成器23,24,25,26
図9は、実部節点ユニット7及び虚部節点ユニット8のセレクタ付きパルス生成器23,24,25,26の構成(a)及び動作(b)を表す図である。セレクタ付きパルス生成器23,24,25,26は、p型の電界効果トランジスタ(MOSFET)M1,M2、n型の電界効果トランジスタM3、インバータ回路30,31、NOR回路32、及びデマルチプレクサ33を備えている。
トランジスタM1,M2及びトランジスタM3は、電源と接地面との間にこの順序で直列に接続されている。セレクタ付きパルス生成器23,24,25,26のトランジスタM2のゲートには、それぞれ、更新係数G1x,G2x,G1y,G2yの大きさを決定するための更新係数電圧Vgが入力される。尚、更新係数電圧Vgは全体制御部5において生成され、全ての節点ユニット6に共通に入力される。
トランジスタM1,M3のゲートには、更新許可スイッチ22を介してスパイク・ニューロン回路20が発火したときに出力するスパイク・パルスspk_fが入力される。インバータ回路30,31は直列接続されており、インバータ回路30の入力側はトランジスタM2,M3の共通接続ノード(以下「中間ノードn2」という。)に接続され、インバータ回路31の出力側は、NOR回路32の一方の入力端子に接続される。NOR回路32の他方の入力端子には、スパイク・ニューロン回路20が発火したときに出力するスパイク・パルスspk_fが直接入力される。NOR回路32の出力端子は、デマルチプレクサ33の入力端子に接続されている。デマルチプレクサ33の選択制御入力端子には、更新係数G1x,G1y,G2x,G2yの符号(正負)を決定する更新係数符号信号signが入力される。更新係数符号信号signは全体制御部5において生成され、全ての節点ユニット6に共通に入力される。デマルチプレクサ33の2つの出力端子は、セレクタ付きパルス生成器23,24,25,26の出力端子OUT_P, OUT_Mとなっている。デマルチプレクサ33は、更新係数符号信号signが「正」を表すとき(ここでは、Hレベルとする。)は出力端子OUT_Pを出力先に選択し、更新係数符号信号signが「負」を表すとき(ここでは、Lレベルとする。)は出力端子OUT_Mを出力先に選択する。
スパイク・ニューロン回路20からのスパイク・パルスspk_fの入力がない(spk_fが常時Lレベルの)初期状態では、トランジスタM1,M3のゲートはLレベルであり、トランジスタM1がオン、トランジスタM3がオフである。従って、トランジスタM1,M2を介して、電源から中間ノードn2に電荷が流入し、中間ノードn2と接地面間の寄生容量が充電され、中間ノードn2の電圧はほぼ電源電圧V0となる。このとき、インバータ回路31の出力側のノード(以下「中間ノードn3」という。)の電圧VcはHレベルであり、NOR回路32の出力側のノード(以下「中間ノードn4」という。)の電圧OUT_PMはLレベルである。従って、出力端子OUT_P, OUT_Mの電圧もLレベルである。
スパイク・ニューロン回路20が発火して、スパイク・パルスspk_fがHレベルに立ち上がると、トランジスタM1がオフ、トランジスタM3がオンとなり、中間ノードn2と接地面間の寄生容量が瞬時に放電されて中間ノードn2の電圧は0となる。中間ノードn2の電圧が0となるのに伴い、中間ノードn3の電圧VcもLレベルとなる。しかし、スパイク・パルスspk_fがHレベルであるため、NOR回路32の出力電圧である中間ノードn4の電圧OUT_PMはLレベルのままである。
次に、スパイク・パルスspk_fがすぐにLレベルに立ち下がると、NOR回路32の出力電圧である中間ノードn4の電圧OUT_PMはHレベルとなる。それと共に、再びトランジスタM1がオン、トランジスタM3がオフとなるので、トランジスタM1,M2を介して、電源から中間ノードn2に電荷が流入し、中間ノードn2の電圧は電源電圧V0となるまで上昇する。ここで、中間ノードn2の電圧が0からV0まで上昇する時間は、トランジスタM2のゲート電圧により制御され、更新係数電圧Vgに依存する。この過程で中間ノードn2の電圧がインバータ回路30の閾値電圧を過ぎた瞬間に、インバータ回路30及びインバータ回路31の出力電圧が切り替わり、中間ノードn3の電圧VcはHとなり、NOR回路32の出力電圧である中間ノードn4の電圧OUT_PMは再びLレベルとなる。中間ノードn4の電圧OUT_PMがHレベルに立ち上がってから再びLレベルに立ち下がるまでの時間をパルス幅tgとすると、パルス幅tgは更新係数電圧Vgの大きさに依存する。従って、中間ノードn4の出力パルスの時間軸上の位置は位相θが0を過ぎる時刻を表し、出力パルスのパルス幅tgは更新係数G1x,G1y,G2x,G2yの大きさを表すことになる。
最後に、デマルチプレクサ33は、更新係数符号信号signに従って、中間ノードn4に出力される出力パルスの出力方向を切り替える。更新係数G1x,G1y,G2x,G2yの符号が正のときは、出力端子OUT_Pにパルス幅tgの出力パルスが出力され、更新係数G1x,G1y,G2x,G2yが負のときは、出力端子OUT_Mにパルス幅tgの出力パルスが出力される。
尚、出力端子OUT_Pは、状態値更新回路27の入力端子R_top_p_gy1, R_bottom_p_gy1, R_right_p_gx1, R_left_p_gx1, I_top_p_gy2, I_bottom_p_gy2, I_right_p_gx2, I_left_p_gx2の何れかに接続される。また、出力端子OUT_Mは、状態値更新回路27の入力端子R_top_m_gy1, R_bottom_m_gy1, R_right_m_gx1, R_left_m_gx1, I_top_m_gy2, I_bottom_m_gy2, I_right_m_gx2, I_left_m_gx2の何れかに接続される。
また、後述する状態値更新回路27において、正パルス更新回路35と負パルス更新回路36を合体した図17の回路を使用する場合には、中間ノードn4の電圧OUT_PMと更新係数符号信号signを、隣接する節点ユニット6の状態値更新回路27へ出力すればよいことになる。従って、その場合には、図9のデマルチプレクサ33は省略することができる。
(3)状態値更新回路27
図10は、実部節点ユニット7及び虚部節点ユニット8の状態値更新回路27の全体構成を表す図である。状態値更新回路27は、更新係数の符号が正の場合の各入力パルスg0_p,R_left_p_gx1,R_left_p_gx2,I_left_p_gx1,I_left_p_gx2,R_right_p_gx1,R_right_p_gx2,I_right_p_gx1,I_right_p_gx2,R_top_p_gy1,R_top_p_gy2,I_top_p_gy1,I_top_p_gy2,R_bottom_p_gy1,R_bottom_p_gy2,I_bottom_p_gy1,I_bottom_p_gy2のそれぞれに対応して、17個の正パルス更新回路35を備え、また、更新係数の符号が負の場合の各入力パルスg0_m,R_top_m_gy1,R_top_m_gy2,I_top_m_gy1,I_top_m_gy2,R_bottom_m_gy1,R_bottom_m_gy2,I_bottom_m_gy1,I_bottom_m_gy2,R_left_m_gx1,R_left_m_gx2,I_left_m_gx1,I_left_m_gx2,R_right_m_gx1,R_right_m_gx2,I_right_m_gx1,I_right_m_gx2のそれぞれに対応して、17個の負パルス更新回路36を備えている。各正パルス更新回路35及び各負パルス更新回路36の入力側端子は、それぞれ、対応する入力パルスを出力する節点ユニット6,7のセレクタ付きパルス生成器23,24,25,26の何れかの出力端子OUT_Pに接続される。また、各正パルス更新回路35及び各負パルス更新回路36の入力側端子は、スパイク・ニューロン回路20の出力ノードn1に共通に接続されている。
図11は、図10の正パルス更新回路35の(a)構成を表す回路図(b)電圧電流特性図、及び(c),(d)動作を表す図である。正パルス更新回路35の入力端子OUT_Pからは、隣接する節点ユニット6のセレクタ付きパルス生成器23,24,25,26が出力する出力パルスOUT_Pが入力される。但し、入力端子G0_pに対応する正パルス更新回路の入力端子OUT_Pからは、全体制御部5内に設けられたセレクタ付きパルス生成器が出力する出力パルスOUT_Pが入力される。全体制御部5内に設けられたセレクタ付きパルス生成器も図9と同様の構成であり、このセレクタ付きパルス生成器からが、更新係数G0に対応する出力パルスが出力される。
正パルス更新回路35は、p型の電界効果トランジスタM4、n型の電界効果トランジスタM5、及びスイッチ回路S4,S5を備えている。スイッチ回路S4,トランジスタM4,トランジスタM5,スイッチ回路S5は、電源と接地面との間にこの順序で直列に接続されている。正パルス更新回路35の入力OUT_PのレベルがHレベルのときに、スイッチ回路S4,S5が閉路され、Lレベルのときに、スイッチ回路S4,S5が開路される。また、トランジスタM4,M5はダイオード接続されている。すなわち、トランジスタM4,M5のゲートは、トランジスタM4,M5のドレインの共通接続ノードである出力ノードn1に接続されている。
この回路の電圧−電流特性は、図11(b)に示したようになる。位相状態値電圧Vrは0から電源電圧V0の間で変動する。これに対して、トランジスタM4のドレイン電流は、図11(b)のIM4で示した曲線のように変化し、トランジスタM5のドレイン電流は、図11(b)のIM5で示した曲線のように変化する。尚、図11(b)において、電流の向きについては、出力ノードn1に流入する方向を正、出力ノードn1から流出する方向を負としている。
トランジスタM4のドレイン電流IM4は、出力ノードn1の位相状態値電圧Vrが0のときに最大となり、位相状態値電圧Vrが上昇するにつれて減少し、位相状態値電圧Vrが電源電圧V0では0となる。一方、トランジスタM5のドレイン電流IM5は、出力ノードn1の位相状態値電圧Vrが0のときに0となり、位相状態値電圧Vrが上昇するにつれて増加し、位相状態値電圧Vrが電源電圧V0では最大となる。トランジスタM5のドレイン電流IM5の電圧−電流特性は、上記ドレイン電流IM4の電圧−電流特性の左右を反転し、正負を反転した形となっている。従って、正パルス更新回路35全体として出力ノードn1に流出入する電流Itotalは、ドレイン電流IM4,IM5の電圧−電流特性を足し合わせたものであり、図11(b)に示したようになる。電流Itotalは、トランジスタM4,M5のサイズを調整してドレイン電流IM4,IM5の電圧−電流特性を調節することにより、図11(b)に示したように線形化される。図11(b)では、出力ノードn1に流出入する電流Itotalは、位相状態値電圧Vrが0のときに流入方向に最大Ip0となり、位相状態値電圧Vrが上昇するにつれて直線的に減少し、位相状態値電圧Vrが零値電圧Vmiddleになったときに0となる。さらに位相状態値電圧Vrが上昇すると、今度は、電流Itotalは流出方向に直線的に増加し、位相状態値電圧Vrが電源電圧V0のときに流出方向に最大|−Ip0|となる。出力ノードn1の位相状態値電圧Vrと流出入する電流Itotalとの関係を近似的に次式のように表す。
尚、本実施例においては、図11(a)の回路においてトランジスタM4,M5のサイズを調整して、図11(b)に示したように電圧−電流特性を線形化しているが、実現したいフィルタ計算モデルによっては、この電圧−電流特性を非線形とすることもできる。この場合、図11(a)の回路でも各トランジスタのサイズを変えて所望の関数Itotal=f(Vr−Vmiddle)で表される非線形特性を実現すればよい。また,別の電圧電流特性をもつ回路を用いて、前述の関数Itotal=f(Vr−Vmiddle)を実現するようにすることももちろん可能である。
次に、図11(a)の回路の動作について説明する。まず、セレクタ付きパルス生成器23,24,25,26からパルスが入力されていない状態では、スイッチ回路S4,S5は開路した状態であり、トランジスタM4,M5には電流は流れない。従って、出力ノードn1の位相状態値電圧Vrは、スパイク・ニューロン回路20によって、図6(b)に示したような鋸歯波状の変化を続ける。
セレクタ付きパルス生成器23,24,25,26からパルス幅tgのパルスOUT_Pが入力された場合、正パルス更新回路35は次のように動作する。
(I)パルスOUT_Pの入力時に位相状態値電圧Vrが零値電圧Vmiddleより小さい場合
パルスOUT_MがHレベルに立ち上がると、スイッチ回路S4,S5が閉路される。この場合、図11(b)に示したように、Vr<Vmiddleでは、全体として出力ノードn1に電流が流入する。従って、パルスOUT_PがHレベルの間、スパイク・ニューロン回路20の位相状態値保持用キャパシタC0に電荷が流入し、位相状態値電圧Vrは引き上げられる。すなわち、図11(c)に示したように、パルスOUT_Pの入力時に位相状態値電圧Vrは位相が進む方向に更新される。
このとき、図11(b)より、流入する電流Itotalの大きさは、位相状態値電圧Vrと零値電圧Vmiddleとの差電圧の絶対値|Vr−Vmiddle|に比例する。ここで、位相状態値電圧Vrは、実部節点ユニット7又は虚部節点ユニット8の位相θiに対応し、零値電圧Vmiddleは位相0に対応する。従って、絶対値|Vr−Vmiddle|は位相θiに対応する位相状態量である。また、位相状態値保持用キャパシタC0に電荷が流入する時間は、パルスOUT_Pのパルス幅tgであるが、これは、更新係数Gikの大きさに比例する。
時刻tpkにおいて、パルス幅tgのパルスOUT_Pが、隣接節点ユニットUkのセレクタ付きパルス生成器23,24,25,26から隣接節点ユニットUiの正パルス更新回路35に入力された場合、パルス幅tgのパルスOUT_Pによる位相状態値保持用キャパシタC0の更新電荷量δQはパルス幅tgが十分に狭い場合、次式(15)のように近似することができる。
式(15)より、更新電荷量δQは|Gik|θi(tpk)に比例する。従って、パルスOUT_Pに対し、Vr<Vmiddleの場合には、正パルス更新回路35により式(13a)〜(13d)に示したような位相の更新演算が実行されることがわかる。
(II)パルスOUT_Pの入力時に位相状態値電圧Vrが零値電圧Vmiddleより大きい場合
この場合、図11(b)に示したように、全体として出力ノードn1から電流が流入する。従って、パルスOUT_PがHレベルの間、スパイク・ニューロン回路20の位相状態値保持用キャパシタC0から電荷が流出し、位相状態値電圧Vrは引き下げられる。すなわち、図11(d)に示したように、パルスOUT_Pの入力時に位相状態値電圧Vrは位相が遅れる方向に更新される。
この場合も、同様に、パルス幅tgが十分に狭く、Ip0tg/C0Vmiddle<<1の場合、更新電荷量δQは式(15)のように近似することができる。
故に、パルスOUT_Pに対し、Vr>Vmiddleの場合にも、正パルス更新回路35により式(13a)〜(13d)に示したような位相の更新演算が実行されることがわかる。
図12は、図10の負パルス更新回路36の(a)構成を表す回路図、(b)電圧電流特性図、及び(c),(d)動作を表す図である。負パルス更新回路36の入力端子OUT_Mからは、隣接する節点ユニット6のセレクタ付きパルス生成器23,24,25,26が出力する出力パルスOUT_Mが入力される。但し、入力端子g0_mに対応する負パルス更新回路の入力端子OUT_Mからは、全体制御部5内に設けられたセレクタ付きパルス生成器が出力する出力パルスOUT_Mが入力される。
負パルス更新回路36は、p型の電界効果トランジスタM6,M8、n型の電界効果トランジスタM7,M9、及びスイッチ回路S6,S7,S8,S9,S10を備えている。トランジスタM6,トランジスタM7の直列接続回路とトランジスタM8,トランジスタM9の直列接続回路との並列回路が、スイッチ回路S6,S7の間に接続されている。スイッチ回路S6の他端は電源に接続され、スイッチ回路S7の他端は接地面に接続されている。トランジスタM8はダイオード接続されている。また、トランジスタM6,M8のゲートは、トランジスタM8,M9のドレインの共通接続ノード(以下「中間ノードn5」という。)に接続されている。中間ノードn5は、スイッチ回路S9を介して、電源に接続されている。また、トランジスタM7のゲートは、スイッチ回路S10を介して接地面に接続されるとともに、スイッチ回路S8を介して中間ノードn5に接続されている。また、トランジスタM9のゲートは、トランジスタM6,M7のドレインの共通接続ノード(以下「出力ノードn1」という。)に接続されている。この出力ノードn1は、負パルス更新回路36の出力となり、図6のスパイク・ニューロン回路20の出力ノードn1と共通となるように接続されている(図10参照)。スイッチ回路S6,S7,S8は、負パルス更新回路36の入力OUT_MのレベルがHレベルのときに閉路され、Lレベルのときに開路される。一方、スイッチ回路S9,S10は、負パルス更新回路36の入力OUT_MのレベルがHレベルのときに開路され、Lレベルのときに閉路される。
この回路の電圧−電流特性は、図12(b)に示したようになる。図12(b)は、図12(a)に示した負パルス更新回路36の出力ノードn1の位相状態値電圧Vrに対するトランジスタM6,M7のドレイン電流の大信号特性を表したものである。位相状態値電圧Vrは0から電源電圧V0の間で変動する。これに対して、トランジスタM6のドレイン電流は、図12(b)のIM6で示した曲線のように変化し、トランジスタM7のドレイン電流は、図12(b)のIM7で示した曲線のように変化する。尚、図12(b)において、電流の向きについては、出力ノードn1に流入する方向を正、出力ノードn1から流出する方向を負としている。
トランジスタM6のドレイン電流IM6は、出力ノードn1の位相状態値電圧Vrが0のときは0であり、位相状態値電圧Vrが増加するにつれて下に凸の曲線に沿って増加する。そして、位相状態値電圧VrがV0/2を越えた付近で、ドレイン電流IM6は、今度は上に凸の放物曲線状に変化し、最大値に達する。そしてさらに位相状態値電圧Vrが増加するに従って、ドレイン電流IM6は減少し、位相状態値電圧Vrが電源電圧V0となったときに0となる。トランジスタM7のドレイン電流IM7の電圧−電流特性は、上記ドレイン電流IM6の電圧−電流特性の左右を反転し、正負を反転した形となる。従って、負パルス更新回路36全体として出力ノードn1に流出入する電流Itotalは、ドレイン電流IM4,IM5の電圧−電流特性を足し合わせたものであり、図12(b)に示したようになる。出力ノードn1に流出入する電流Itotalの特性曲線は、位相状態値電圧Vrが零値電圧Vmiddleのときに0となり、Vr<Vmiddleにおいて極小値、Vr>Vmiddleにおいて極大値をもつ曲線となる。また、Vr=Vmiddleの近傍のVmiddle−ΔVL<Vr<Vmiddle+ΔVLの領域においては、電流Itotalは電圧Vrに対してほぼ線形となる。そこで、Vmiddle−ΔVL<Vr<Vmiddle+ΔVLの領域における位相状態値電圧Vrと電流Itotalとの関係を近似的に次式のように表す。
尚、図12(a)の回路では、位相状態値の更新は、出力ノードn1の位相状態値電圧VrがVmiddle−ΔVL<Vr<Vmiddle+ΔVLの領域内にあるときにのみ実行されるものとする。Vr<Vmiddle−ΔVL及びVr>Vmiddle+ΔVLの領域では、図12(b)の電圧Vr−電流Itotal特性が非線形となり、正常な更新演算が行われないからである。
尚、本実施例においては、図12(a)の回路において各トランジスタのサイズを調整して、図12(b)に示したように電圧−電流特性を線形化しているが、実現したいフィルタ計算モデルによっては、この電圧−電流特性を非線形とすることもできる。この場合、図12(a)の回路でも各トランジスタのサイズを変えて所望の関数Itotal=f(Vr−Vmiddle)で表される非線形特性を実現すればよい。また,別の電圧電流特性をもつ回路を用いて、前述の関数Itotal=f(Vr−Vmiddle)を実現するようにすることももちろん可能である。
次に、図12(a)の回路の動作について説明する。まず、セレクタ付きパルス生成器23,24,25,26からパルスOUT_Mが入力されていない状態では、スイッチ回路S6,S7は開路した状態であり、トランジスタM6,M7には電流は流れない。従って、出力ノードn1の位相状態値電圧Vrは、スパイク・ニューロン回路20によって、図6(b)に示したような鋸歯波状の変化を続ける。また、このとき、スイッチ回路S9が閉路した状態、スイッチ回路S8が開路した状態にあるため、中間ノードn5は電源に接続され、中間ノードn5と接地面との間の浮遊容量が充電され、中間ノードn5の電圧は電源電圧V0にある。
セレクタ付きパルス生成器23,24,25,26からパルス幅tgのパルスOUT_Mが入力された場合、負パルス更新回路は次のように動作する。
(I)パルスOUT_Mの入力時に位相状態値電圧Vrが零値電圧Vmiddleより小さい場合
パルスOUT_MがHレベルに立ち上がると、スイッチ回路S8,S9が開路し、スイッチ回路S5,S6,S7が閉路される。この場合、図12(b)に示したように、Vr<Vmiddleでは、全体として出力ノードn1から電流が流出する。従って、パルスOUT_MがHレベルの間、スパイク・ニューロン回路20の位相状態値保持用キャパシタC0から電荷が流出し、位相状態値電圧Vrは引き下げられる。すなわち、図12(c)に示したように、パルスOUT_Mの入力時に位相状態値電圧Vrは位相が遅れる方向に更新される。
このとき、図12(b)より、流出する電流Itotalの大きさは、位相状態値電圧Vrと零値電圧Vmiddleとの差電圧の絶対値|Vr−Vmiddle|に比例する。ここで、位相状態値電圧Vrは、実部節点ユニット7又は虚部節点ユニット8の位相θiに対応し、零値電圧Vmiddleは位相0に対応する。従って、絶対値|Vr−Vmiddle|は位相θiに対応する位相状態量である。また、位相状態値保持用キャパシタC0に電荷が流入する時間は、パルスOUT_Mのパルス幅tgであるが、これは、更新係数Gikの大きさに比例する。
時刻tpkにおいて、パルス幅tgのパルスOUT_Mが、隣接節点ユニットUkのセレクタ付きパルス生成器23,24,25,26から隣接節点ユニットUiの負パルス更新回路36に入力された場合、パルス幅tgのパルスOUT_Mによる位相状態値保持用キャパシタC0の更新電荷量δQはパルス幅tgが十分に狭く、Im0tg/C0ΔVL<<1の場合、次式(17)のように近似することができる。
式(17)より、更新電荷量δQは−|Gik|θi(tpk)に比例する。従って、パルスOUT_Mに対し、Vr<Vmiddleの場合には、負パルス更新回路36により式(13a)〜(13d)に示したような位相の更新演算が実行されることがわかる。
(II)パルスOUT_Mの入力時に位相状態値電圧Vrが零値電圧Vmiddleより大きい場合
この場合、図12(b)に示したように、全体として出力ノードn1へ電流が流入する。従って、パルスOUT_MがHレベルの間、スパイク・ニューロン回路20の位相状態値保持用キャパシタC0へ電荷が流入し、位相状態値電圧Vrは引き上げられる。すなわち、図12(d)に示したように、パルスOUT_Mの入力時に位相状態値電圧Vrは位相が進む方向に更新される。
この場合も、同様に、パルス幅tgが十分に狭く、Im0tg/C0ΔVL<<1の場合、更新電荷量δQは式(17)のように近似することができる。
故に、パルスOUT_Mに対し、Vr>Vmiddleの場合にも、負パルス更新回路36により式(13a)〜(13d)に示したような位相の更新演算が実行されることがわかる。
(3.1)正パルス更新回路35の他の構成例
次に、図11の正パルス更新回路35を改良した回路構成例を示す。図13は、図10の正パルス更新回路35の他の構成例を表す回路図(a)及び電圧電流特性図(b)である。
図13(a)の正パルス更新回路35は、p型の電界効果トランジスタM4、n型の電界効果トランジスタM5、オフセット補償用キャパシタCoff、及びスイッチ回路S1,S2,S3,S4を備えている。各スイッチ回路S1,S2,S3,S4の制御入力端子には、隣接する節点ユニット6のセレクタ付きパルス生成器23,24,25,26が出力する出力パルスOUT_Pが入力される。スイッチ回路S1,S2は、制御入力がLレベルで閉路しHレベルで開路する。また、スイッチ回路S3,S4は、制御入力がHレベルで閉路しLレベルで開路する。
トランジスタM4,トランジスタM5は、電源と接地面との間にこの順序で直列に接続されている。また、トランジスタM4,M5のゲートは、ノードn3に共通に接続されている。トランジスタM4,M5のドレインが共通に接続されたノードn4は、スイッチ回路S2を介してノードn3に接続されている。また、オフセット補償用キャパシタCoffの一端はノードn3に接続され、他端はノードn2に接続されている。このノードn2には、スイッチ回路S1を介して零値電圧Vmiddleが入力される。
さらに、ノードn2はスイッチ回路S3を介して、図6又は図7のスパイク・ニューロン回路20のノードn1に接続されており、また、ノードn4はスイッチ回路S4を介して当該ノードn1に接続されている。このノードn1の電圧は位相状態値電圧Vrとなっている。また、この回路においては、ノードn4からスイッチ回路S4を介して当該ノードn1に電流iVrが出力される。
図13(a)の回路において、パルスOUT_PがHレベルのときのVr−iVr特性は、図13(b)のようになり、トランジスタM4,M5がカットオフ状態でない領域で出力電流iVrは位相状態値電圧Vrに対し線形(負勾配)である。
図14は、図13の回路の各部の動作を表すタイミング・チャートである。図14(a)は、パルスOUT_Pの入力時に位相状態値電圧Vrが零値電圧Vmiddleより小さい場合を示し、図14(b)は、パルスOUT_Pの入力時に位相状態値電圧Vrが零値電圧Vmiddleより大きい場合を示している。
パルスOUT_PがLレベルの状態では、スイッチ回路S1,S2が閉路し、スイッチ回路S3,S4が開路する。従って、ノードn2及びノードn4は、ノードn1から切り離される。スイッチ回路S1が閉路することで、ノードn2の電圧V2は零値電圧Vmiddleに設定される。一方、ノードn4はノードn3と接続され、トランジスタM4,M5はダイオード接続となる。そのため、ノードn3,n4の電位V3,V4は、トランジスタM4,M5で構成されるインバータの閾値電圧Vinv=Vmiddle+Voffとなる。故に、オフセット補償用キャパシタCoffには、オフセット電圧Voff=Vinv−Vmiddleが加わり、電荷Qoff=CoffVoffが充電される。
パルスOUT_PがHレベルの状態となると、スイッチ回路S1,S2が開路し、スイッチ回路S3,S4が閉路する。これにより、ノードn3はノードn4から切り離されてフローティング状態となる。一方、ノードn2,n4には位相状態値電圧Vrが印加される。このとき、オフセット補償用キャパシタCoffの充電電荷Qoffは保存されるため、ノードn3の電圧V3は、Vr+Voffとなり、トランジスタM4,M5のゲート電圧のオフセット補償がされる。トランジスタM4,M5のゲートに電圧V3=Vr+Voffが加わることにより、図13(b)の特性に従ってノードn4からノードn1へ電流iVrが出力される。
パルスOUT_Pの入力時に位相状態値電圧Vrが零値電圧Vmiddleより小さい場合(図14(a))、ノードn4からノードn1へ電流iVrが供給され、パルスOUT_Pの入力時に位相状態値電圧Vrが零値電圧Vmiddleより大きい場合(図14(b))、ノードn1からノードn4へ電流iVrが引き抜かれる。これにより、図11の正パルス更新回路35と同様に、更新電荷量δQが図6又は図7のスパイク・ニューロン回路20の位相状態値保持用キャパシタC0に供給されて、位相の更新演算が実行される。
(3.2)負パルス更新回路36の他の構成例
次に、図12の負パルス更新回路36を改良した回路構成例を示す。図15は、図10の負パルス更新回路36の他の構成例を表す回路図(a)及び電圧電流特性図(b)である。
図15(a)の負パルス更新回路36は、p型の電界効果トランジスタM4、n型の電界効果トランジスタM5,M6,M7、オフセット補償用キャパシタCoff、及びスイッチ回路S1,S2,S3,S4を備えている。各スイッチ回路S1,S2,S3,S4の制御入力端子には、隣接する節点ユニット6のセレクタ付きパルス生成器23,24,25,26が出力する出力パルスOUT_Mが入力される。スイッチ回路S1,S2は、制御入力がLレベルで閉路しHレベルで開路する。また、スイッチ回路S3,S4は、制御入力がHレベルで閉路しLレベルで開路する。
トランジスタM4,トランジスタM5は、電源と接地面との間にこの順序で直列に接続されている。また、トランジスタM4,M5のゲートは、ノードn3に共通に接続されている。トランジスタM4,M5のドレインが共通に接続されたノードn4は、スイッチ回路S2を介してノードn3と接続されている。
トランジスタM6,トランジスタM7は、電源と接地面との間にこの順序で直列に接続されている。トランジスタM6のゲートには、最小値電圧Vlowと最大値電圧Vhighとの和電圧Vb=Vlow+Vhighが印加されている。トランジスタM6の基板バイアス端子は、トランジスタM6,M7のドレインが共通に接続されたノードn2に接続されている。トランジスタM7のゲートは、ノードn5に接続されている。このノードn5は、スイッチ回路S1を介して零値電圧Vmiddleが入力される。また、ノードn5は、スイッチ回路S3を介して図6又は図7のスパイク・ニューロン回路20のノードn1に接続されており、このノードn1の電圧は位相状態値電圧Vrとなっている。
また、オフセット補償用キャパシタCoffの一端はノードn3に接続され、他端はノードn2に接続されている。
この回路においては、ノードn4からスイッチ回路S4を介してノードn1に電流iVrが出力される。
図15(a)の回路において、パルスOUT_MがHレベルのときのVr−iVr特性は、図15(b)のようになり、トランジスタM4,M5がカットオフ状態でない動作領域で出力電流iVrは位相状態値電圧Vrに対し線形(正勾配)である。
また、トランジスタM6,M7は、電圧反転回路を構成しており、ノードn2の電圧V2は、V2=Vb−Vrで表される(図15(b)参照)。
図16は、図15の回路の各部の動作を表すタイミング・チャートである。図16(a)は、パルスOUT_Mの入力時に位相状態値電圧Vrが零値電圧Vmiddleより小さい場合を示し、図16(b)は、パルスOUT_Mの入力時に位相状態値電圧Vrが零値電圧Vmiddleより大きい場合を示している。
パルスOUT_PがLレベルの状態では、スイッチ回路S1,S2が閉路し、スイッチ回路S3,S4が開路する。従って、ノードn4及びノードn5は、ノードn1から切り離される。スイッチ回路S1が閉路することで、ノードn5の電圧V2は零値電圧Vmiddleに設定される。従って、ノードn2の電圧V2は、図5(b)より零値電圧Vmiddleに設定される。一方、ノードn4はノードn3と接続され、トランジスタM4,M5はダイオード接続となる。そのため、ノードn3,n4の電位V3,V4は、トランジスタM4,M5で構成されるインバータの閾値電圧Vinv=Vmiddle+Voffとなる。故に、オフセット補償用キャパシタCoffには、オフセット電圧Voff=Vinv−Vmiddleが加わり、電荷Qoff=CoffVoffが充電される。
パルスOUT_PがHレベルの状態となると、スイッチ回路S1,S2が開路し、スイッチ回路S3,S4が閉路する。これにより、ノードn3はノードn4から切り離されてフローティング状態となる。一方、ノードn5,n4には位相状態値電圧Vrが印加される。
ノードn5に電圧Vrが印加されると、図15(b)より、ノードn2の電圧V2はV2=Vb−Vrとなる。ノードn3はフローティング状態なのでオフセット補償用キャパシタCoffの充電電荷Qoffは保存されるため、ノードn3の電圧V3は、V2+Voff=Vb−Vr+Voffとなり、トランジスタM4,M5のゲート電圧のオフセット補償がされる。トランジスタM4,M5のゲートに電圧V3=Vb−Vr+Voffが加わることにより、図13(b)の特性に従ってノードn4からノードn1へ電流iVrが出力される。
パルスOUT_Pの入力時に位相状態値電圧Vrが零値電圧Vmiddleより小さい場合(図16(a))、ノードn1からノードn4へ電流iVrが引き抜かれ、パルスOUT_Pの入力時に位相状態値電圧Vrが零値電圧Vmiddleより大きい場合(図16(b))、ノードn4からノードn1へ電流iVrが供給される。これにより、図12の負パルス更新回路36と同様に、更新電荷量δQが図6又は図7のスパイク・ニューロン回路20の位相状態値保持用キャパシタC0に供給されて、位相の更新演算が実行される。
(3.3)正パルス更新回路35と負パルス更新回路36を合体した構成例
図13(a)の正パルス更新回路35と図15(a)の負パルス更新回路36は、回路構成に共通部分が多いため、部品の共有化が可能である。図17は、正パルス更新回路35と負パルス更新回路36を合体した回路の構成例である。図17の回路において、図13(a),図15(a)と共通する構成部分については同符号を付している。また、正パルス更新回路35と負パルス更新回路36を合体したことにより、新たに、セレクタSEL及びスイッチ回路S5,S6が追加されている。
セレクタSELは、スイッチ回路S1,S3の共通接続ノードn6を、トランジスタM7のゲートノードn5又はオフセット補償用キャパシタCoffの入力ノードn2のいずれかに選択的に接続する。セレクタSELの制御信号として、更新係数符号信号sign(図9参照)が入力される。更新係数符号信号signがHレベル(「正」)のときセレクタSELはノードn6をノードn2に接続し、Lレベル(「負」)のときセレクタSELはノードn6をノードn5に接続する。
スイッチ回路S5は、トランジスタM6のゲートに接続されており、当該ゲートに和電圧Vb=Vlow+Vhighを印加するか否かを切り替える。スイッチ回路S5の制御端子には更新係数符号信号signが入力される。スイッチ回路S5は、更新係数符号信号sign(図9参照)がHレベル(「正」)のとき開路し、Lレベル(「負」)のとき閉路する。
スイッチ回路S6は、トランジスタM6のドレインとトランジスタM7のドレインとが共通に接続されたノードn21と、オフセット補償用キャパシタCoffの一端に接続するノードn2との間に接続されている。スイッチ回路S6の制御端子には、更新係数符号信号sign(図9参照)が入力される。スイッチ回路S6は、更新係数符号信号signがHレベル(「正」)のとき開路し、Lレベル(「負」)のとき閉路する。
更新係数符号信号signがHレベル(「正」)のときには、図17の回路は図13の回路と等価になる。また、更新係数符号信号signがLレベル(「負」)のときには、図17の回路は図15の回路と等価になる。従って、図17の回路は正パルス更新回路35と負パルス更新回路36を合体した回路となっていることが分かる。図10に示したように、状態値更新回路27は、隣接する節点ユニット6から入力される各入力パルスと入力パルスg0_p,g0_mに対応して、正パルス更新回路35と負パルス更新回路36の組を17組備えている。従って、それぞれの正パルス更新回路35と負パルス更新回路36の組を図17の回路により置き換えればよい。
このように、正パルス更新回路35と負パルス更新回路36を合体した回路構成を採るとにより、正パルス更新回路35と負パルス更新回路36のオフセット補償用キャパシタCoffを共有することができ、状態値更新回路27の回路規模を削減することができる。
(4)基準位相発生部2a
基準位相発生部2a(図1参照)の構成も、基本的に図6(a)に示したスパイク・ニューロン回路20と同様であるので、説明は省略する。
〔3〕全体動作
(1)初期化
ガボール型フィルタ演算を開始する前に、全体制御部5は初期化処理を行う。初期化処理では、まず、全体制御部5が、更新許可信号update_ena(図5参照)をL状態として、セレクタ付きパルス生成器23,24,25,26のパルス出力を停止することによって、状態値更新回路27によるスパイク・ニューロン回路20の位相状態値電圧Vrの更新を停止する。この状態で、入力部3が、各スパイク・ニューロン回路20の位相状態値保持用キャパシタC0に初期電荷を与える。
位相状態値保持用キャパシタC0に初期電荷を与える場合、全体制御部5は、まず、列選択信号線9に列選択信号を与えて(すなわち、列選択信号を順次Hレベルとして)各列を順次選択する。列選択信号がHレベルとなると、列選択スイッチ28(図5参照)が接続される。そして、入力部3は、選択した列の各実部節点ユニット7内のスパイク・ニューロン回路20に対して、初期値入力線10から初期化パルスを与える。各スパイク・ニューロン回路20の位相状態値保持用キャパシタC0には、初期化パルスのパルス幅に比例して電荷が充電され、これにより初期化がされる。
初期化処理が終了すると、入力部3は、すべての列選択信号をLレベルとし、全体制御部5は、更新許可信号update_ena(図5参照)をH状態とする。
(2)ガボール型フィルタ演算
ガボール型フィルタ演算を開始する場合、全体制御部5は、更新許可信号update_ena(図5参照)をH状態とする。これにより、各節点ユニットUi,jの実部節点ユニット7及び虚部節点ユニット8において、位相θi,j r,θi,j iに対応する位相状態量の更新処理が非同期的に並列に実行される。各節点ユニットに於ける位相状態量の更新処理の回路動作については、〔2〕(3)で既に説明した通りである。
(3)ガボール型フィルタ演算の終了
一定の時間、ガボール型フィルタ演算を実行した後、ガボール型フィルタ演算を終了する。ガボール型フィルタ演算を打ち切る場合、全体制御部5は、更新許可信号update_ena(図5参照)をL状態とする。これにより、セレクタ付きパルス生成器23,24,25,26のパルス出力が停止され、状態値更新回路27によるスパイク・ニューロン回路20の位相状態値電圧Vrの更新が行われなくなる。ガボール型フィルタ演算の結果は、各スパイク・ニューロン回路20の位相状態値電圧Vrの位相θi,j r,θi,j iとして保持されているので、出力部4がこの位相θi,j r,θi,j iをパルスとして取り出すことによって演算結果を得ることができる。
位相θi,j r,θi,j iの取り出しは、具体的には、例えば、次のようにして行う。まず、スパイク・ニューロン回路20の位相状態値電圧Vrの更新が行われない状態では、各節点ユニット6の実部節点ユニット7及び虚部節点ユニット8のスパイク・ニューロン回路20は、図6(b)に示したように一定の周期Tでスパイク・パルスspk_fを出力し続ける状態にある。各実部節点ユニット7及び虚部節点ユニット8の保持する状態値は、このスパイク・パルスspk_fの位相θi,j r,θi,j iの差として保持されている。一方、基準位相発生部2aは、位相状態値の更新がされないため、基準位相θb(t)=ωtのスパイク・パルスspk_fを出力し続けている。ここで、ω=(θmax−θmin)/T∝(Vhigh−Vlow)/Tである。
出力部4は、まず、列選択信号線9に列選択信号を与えて(すなわち、列選択信号を順次Hレベルとして)各列を順次選択する。選択された列の実部節点ユニット7及び虚部節点ユニット8では、列選択信号がHレベルとなると、列選択スイッチ29が接続して、スパイク・ニューロン回路20が出力するスパイク・パルスspk_fが、それぞれ、実部外部出力線11及び虚部外部出力線12へ出力される。いま、節点ユニットUm,nの実部節点ユニット7が出力するスパイク・パルスをspk_fm,n r、虚部節点ユニット8が出力するスパイク・パルスをspk_fm,n iと記す。また、基準位相発生部2aが出力するスパイク・パルスを基準パルスspk_fbと記す。
これらの信号をもとに、例えば、図18(a)のような回路を使用すれば、各節点の状態値に比例する時間幅のパルスを容易に生成することができる。図18(a)において、状態値パルス生成回路40は、パルス遅延回路41、EXOR論理回路42、OR論理回路43、トリガー・フリップフロップ44,45、及びデマルチプレクサ45を備えている。パルス遅延回路41は入力されたパルスを時間T/2だけ遅延させる回路である。パルス遅延回路41とOR論理回路43により逓倍器が構成されている。パルス遅延回路41には、周期Tの基準パルスspk_fbが入力される。パルス遅延回路41からは、半周期T/2だけ遅延した遅延パルスD(spk_fb)が出力される。OR論理回路43には、基準パルスspk_fbと遅延パルスD(spk_fb)が入力され、OR論理回路43からは周期T/2の逓倍パルスが出力される。そして、この逓倍パルスがトリガー・フリップフロップ44に入力され、トリガー・フリップフロップ44からは図18(b),(c)に示したような符号切替信号signが出力される。符号切替信号signは、基準パルスspk_fbにより立ち上がり、遅延パルスD(spk_fb)により立ち下がるパルスである。
一方、EXOR論理回路42には、実部節点ユニット7又は虚部節点ユニット8から出力されるスパイク・パルスspk_fm,n r/iと基準パルスspk_fbとが入力され、これらのパルスのEXOR論理をとった合成パルスが出力される。この合成パルスはトリガー・フリップフロップ45に入力され、トリガー・フリップフロップ45からは図18(b),(c)に示したような状態値の絶対値に比例する幅の状態値パルスoutm,n r/iが出力される。この状態値パルスoutm,n r/iはデマルチプレクサ45に入力される。デマルチプレクサ45は、符号切替信号signにより出力方向を切り替える。図18(b),(c)に示したように、符号切替信号signがHレベル(正)のときは、正値状態値パルスout_pm,n r/iが出力され、符号切替信号signがLレベル(負)のときは、負値状態値パルスout_mm,n r/iが出力される。このようにして、各節点の状態値の大きさに比例する幅のパルスを生成することができる。
尚、図18(a)の回路は、各節点の状態値を取り出す回路の一例であり、各節点の状態値の取り出し方はこれに限るものではない。
出力部4は、こうして生成された正値状態値パルスout_pm,n r/i、負値状態値パルスout_mm,n r/iのパルス幅を量子化することによってデジタル化し、状態値をデジタル値として出力する。パルス幅を量子化回路に関しては、公知の回路が使用される。
〔4〕回路シミュレーション結果
図19は、本実施例の情報処理装置により、ガボール型フィルタ演算を実行し、インパルス応答を求めた結果を表す図である。尚、図19の結果は、回路の数値シミュレーションによって得た結果である。図19(a)は、上述した回路を使用して演算処理を行ったシミュレーション結果そのものである。
原理的にガボール型フィルタのインパルス応答(実部と虚部の二乗和)は、インパルス入力点に対して等方的に広がるが、図19(a)の計算結果は等方的ではない。これは、各節点のスパイク・ニューロン回路20の発火の順番が更新量に及ぼす影響によるものと考えられる。このため、実数部と虚数部の出力で、正負のバランスが崩れてしまうという問題が生じる。ガボール型フィルタの結果は、実数部・虚数部の出力の二乗和(エネルギー)を用いることが多いため、正負のバランスの崩れは結果に大きな影響を及ぼすと考えられる。
この問題は、時間領域で非同期的に更新演算を行う演算処理では、必然的に生じる因果関係によるものである。
そこで、出力部4に、最終的に出力される状態値に対して、実数部と虚数部の正負の最大振幅が揃うように、負方向の値を一定の倍率で引き延ばす補正処理機能を持たせる。
接点ユニットネットワーク2から最終的に出力される状態値を{(xi,j,yi,j)|i=1,…,M,j=1,…,N}とする。ここで、xi,j=θi,j r−θbは節点Ui,jの状態値の実数部、yi,j=θi,j i−θbは節点Ui,jの状態値の虚数部である。出力部4は、これら状態値の実数部{xi,j}及び虚数部{yi,j}の最大値xmax,ymax(>0)及び最小値xmin,ymin(<0)を求める。そして、Rx=xmax/|xmin|,Ry=xmax/|xmin|を計算し、実数部{xi,j}のうちxi,j<0のものをRx倍、虚数部{yi,j}のうちyi,j<0のものをRy倍する補正処理を行い、この補正がされた状態値を出力する。
図19(b)に、インパルス応答について上記補正処理を加えた結果を示す。この補正処理によって、インパルス入力点に対してほぼ等方的に広がる結果が得られることがわかる。
図20は、本実施例の情報処理装置によりガボール型フィルタ演算を実行した際の各節点ユニットのパルス位置の変化の一例である。図20において、横軸は時間、縦軸は各実部節点ユニット7及び各虚部節点ユニット8が出力する電圧OUT_PMのパルス位相値を表す。なお、図20のガボール型フィルタ演算に際しては、図3のような正方格子型のフィルタを用い、初期値として中央の節点ユニット(#5,#5)の実部にインパルス(図20の“input”)を入力し、その応答を経時的に測定した。図20は、節点ユニット(#1,0)〜(#9,0)の出力電圧OUT_PMを示したものである。スパイク・ニューロン回路20の更新周期Tは1.1μsとし、ガボール関数の周期は4pixcelとした。
図20の上段のタイムチャートは各節点ユニット(#n,0)(n=1〜9)の実部節点ユニット7が出力する電圧OUT_PMであり、下段のタイムチャートは各節点ユニット(#n,0)(n=1〜9)の虚部節点ユニット8が出力する電圧OUT_PMである。また、右端の折線グラフは、30回更新が行われた時点に於ける各実部節点ユニット7及び各虚部節点ユニット8が出力する電圧パルスOUT_PMの位相差を表している。ガボール型フィルタ演算の結果は、各実部節点ユニット7及び各虚部節点ユニット8の出力電圧OUT_PMのパルスの位相差として得られる。
図21は、図20のガボール型フィルタ演算結果例(30回更新)と理論値との比較を表す図である。図21において、実線(A)は図20の位相差として得られたガボール型フィルタ演算の結果を示す。点線(B)は、理想的なガボール関数の値を表す。また、図21(a)は実部、図21(b)は虚部の値である。
図21より、本実施例の情報処理装置により、ガボール型フィルタ特性が得られていることが確認できる。尚、図21の両端のピクセル(1,2及び8,9)において理論値とのずれが見られるが、これは格子の大きさが有限であることによる影響と考えられ、このずれの補正は可能である。
以上のように、本実施例の情報処理装置では、各節点ユニットUi,jの実部節点ユニット7及び虚部節点ユニット8において、位相状態量θi,j r,θi,j iの更新処理が非同期的に並列に実行される。従って、ガボール型フィルタ演算を高速に演算することが可能となる。また、従来のように、隣接節点ユニットの状態値と自己の状態値との減算回路などを必要としないため、回路構成が単純となり、実装面積も縮小される。
実施例2では、スパイク・ニューロン回路20を1個のコンパレータを使用して構成する例について説明する。
図22は、本発明の実施例2に係る情報処理装置における実部節点ユニット7及び虚部節点ユニット8のスパイク・ニューロン回路20の構成(a)及び動作(b)を示す図である。なお、本実施例の情報処理装置は、スパイク・ニューロン回路20以外の構成は実施例1と同様である。
本実施例のスパイク・ニューロン回路20は、位相状態値保持用キャパシタC0、2つの電流源I1,I2、コンパレータCMP3、トリガパルス生成器PG、9つのスイッチ回路S1,S2,S3,S10,S11,S12,S13,S14,S15、パルス遅延器D、トリガー・フリップフロップT−FF、及びインバータINV1を備えている。
位相状態値保持用キャパシタC0は一端が接地され、他端が出力ノードn1に接続されている。電流源I1は、カソード側端子が出力ノードn1を介して位相状態値保持用キャパシタC0に接続されており、アノード側端子がスイッチ回路S1を介して電源に接続されている。スイッチ回路S2は、一端が出力ノードn1に接続され、他端には、位相の最小値(最小位相値)θminに相当する電圧である最小値電圧Vlowが入力されている。スイッチ回路S1,S2にはn型MOSFETが用いられている。尚、スイッチ回路S1の制御端子は、インバータINV1の出力側に接続されている。スイッチ回路S2の制御端子は、中間ノードn8に接続されている。
電流源I2は、カソード側端子が出力ノードn1を介して位相状態値保持用キャパシタC0に接続されており、アノード側端子がスイッチ回路S3を介して電源に接続されている。スイッチ回路S3にはn型MOSFETが用いられている。スイッチ回路S3の制御には、初期値入力線10が接続されている。スイッチ回路S3は、入力部3から入力される初期化信号がHレベルのときに閉路状態、Lレベルのときに開路状態となる。
コンパレータCMP1は、プラス側入力端子が出力ノードn1に接続され、マイナス側入力端子に中間ノードn6に接続されている。中間ノードn6には、対照電圧Vrefが印加される。また、コンパレータCMP3の出力は、トリガパルス生成器PGに接続されている。
中間ノードn6は、スイッチ回路S10を介して、位相が零値であることを表す零値電圧Vmiddleが印加され、また、スイッチ回路S11を介して、位相の最大値(最大位相値)θmaxに相当する最大値電圧Vhighが印加される。従って、中間ノードn6に印加される対照電圧Vrefは、位相の最大値(最大位相値)θmaxに相当する最大値電圧Vhigh、又は位相が零値であることを表す零値電圧Vmiddleの何れかとなる。尚、スイッチ回路S10には、n型MOSFETが用いられている。スイッチ回路S11には、p型MOSFETが用いられている。
トリガパルス生成器PGは、コンパレータCMP3が出力するパルス波形の立ち上がりにおいて、短時間幅のスパイク・パルスspkを出力する回路である。トリガパルス生成器PGの出力側は、中間ノードn7に接続されている。
スイッチ回路S13は、一端が中間ノードn7に接続され、他端がスパイク・ニューロン回路20の出力端子に接続されている。また、スイッチ回路S13は、一端がスパイク・ニューロン回路20の出力端子に接続され、他端が接地されている。スイッチ回路S12,S13にはn型MOSFETが用いられている。
スイッチ回路S14は、一端が中間ノードn7に接続され、他端が中間ノードn8に接続されている。スイッチ回路S15は、一端が中間ノードn8に接続され、他端が接地されている。スイッチ回路S14,S15にはn型MOSFETが用いられている。また、インバータINV1は、入力側が中間ノードn8に接続され、出力側がスイッチ回路S1の制御端子に接続されている。
パルス遅延器Dは、入力側が中間ノードn7に、出力側がトリガー・フリップフロップT−FFの入力側に接続されている。パルス遅延器Dは、トリガパルス生成器PGから中間ノードn7にスパイク・パルスspkが入力されると、それを遅延した遅延パルスDelay-spkを出力する。
トリガー・フリップフロップT−FFは、1つの入力端子と2つの出力端子Q,¬Qを備えており、入力端子からパルスが入力されると、そのパルスの立ち上がりエッジにおいて、出力端子Q,¬Qのレベルを反転させる。尚、出力端子¬Qには、出力端子Qの出力電圧の反転電圧が出力される。トリガー・フリップフロップT−FFの出力端子Qは、スイッチ回路S10,S12,S15の制御端子に接続されている。また、トリガー・フリップフロップT−FFの出力端子¬Qは、スイッチ回路S11,S13,S14の制御端子に接続されている。
この回路では、出力ノードn1の位相状態値電圧Vr又は位相状態値保持用キャパシタC0に充電された電荷量Qr=C0Vrが、この実部節点ユニット7又は虚部節点ユニット8の「位相状態値」となる。
以上のように構成された本実施例の情報処理装置のスパイク・ニューロン回路20について、以下その動作を説明する。
位相状態値保持用キャパシタC0に初期値を設定する動作については、実施例1と同様である。すなわち、全体制御部5(図1参照)が列選択信号線9に列選択信号を与えて(すなわち、列選択信号を順次Hレベルとして)各列を順次選択し、入力部3が、選択した列の各実部節点ユニット7内のスパイク・ニューロン回路20に対して、初期の状態値の大きさに比例するパルス幅の初期化パルスを初期値入力線10から入力する(図22参照)。これにより、初期化パルスのパルス幅の時間だけスイッチ回路S3が接続状態となり、電流源I2から位相状態値保持用キャパシタC0に電流が供給され、位相状態値保持用キャパシタC0に初期の状態値に比例する量の電荷が充電される。
次に、状態値更新回路27が状態値の更新を行っていない(すなわち、出力ノードn1に状態値更新回路27からの電流の入出力がない)状態(定常状態)の動作について説明する。
まず、時刻0において、出力ノードn1の位相状態値電圧VrがVlow、スイッチ回路S1が閉路(接続)状態、スイッチ回路S2が開路(切断)状態とする。このとき、電流源I1から位相状態値保持用キャパシタC0に一定の充電電流Isが供給される。これにより、出力ノードn1の位相状態値電圧Vrは、一定の時間勾配で上昇する(図22(b)参照)。
このとき、コンパレータCMP3の出力はLレベルでトリガパルス生成器PGからはパルスが出力されていない。また、トリガー・フリップフロップT−FFの出力端子Qの出力電圧はHレベル、出力端子¬Qの出力電圧はLレベルである。従って、スイッチ回路S10,S12,S15は閉路状態、スイッチ回路S11,S13,S14は開路状態である。従って、中間ノードn6の対照電圧Vrefは零値電圧Vmiddleである。また、中間ノードn8はスイッチ回路S15が閉路状態となることで接地されるので、スイッチ回路S2は開路状態、スイッチ回路S1は閉路状態が維持される。
位相状態値電圧Vrが上昇し、時刻T/2で零値電圧Vmiddleを超えると、コンパレータCMP3の出力はHレベルに反転する。このコンパレータCMP3の立ち上がりエッジにおいて、トリガパルス生成器PGは短時間幅のスパイク・パルスspkを出力する。このとき、スイッチ回路(出力スイッチ回路)S12は閉路状態にあるので、スパイク・パルスspkはスパイク・ニューロン回路20の出力端子には伝達され、スパイク・ニューロン回路20からスパイク・パルスspk_fが出力される。すなわち、スパイク・ニューロン回路20が発火する。
スパイク・パルスspkが出力されると、パルス遅延器Dは、スパイク・パルスspkを時間T/4だけ遅延させ、時刻3T/4に遅延パルスDelay-spkを出力する(図22(b)参照)。
遅延パルスDelay-spkが出力されると、トリガー・フリップフロップT−FFの出力端子Qの出力電圧はLレベル、出力端子¬Qの出力電圧はHレベルに反転される。これにより、スイッチ回路S10,S13,S15は開路状態スイッチ回路S11,S12,S14は閉路状態となる。従って、中間ノードn6の対照電圧Vrefは最大値電圧Vhighとなり、これにより、コンパレータCMP3の出力電圧は再びLレベルとなる。また、中間ノードn7はスパイク・ニューロン回路20の出力端子に接続される。また、中間ノードn8は接地面から切り離され、中間ノードn7に接続される。
さらに位相状態値電圧Vrが上昇し、時刻Tで最大値電圧Vhighを超えると、コンパレータCMP3の出力はHレベルに反転する。このコンパレータCMP3の立ち上がりエッジにおいて、トリガパルス生成器PGは短時間幅のスパイク・パルスspkを出力する。このとき、スイッチ回路(出力スイッチ回路)S12は開路状態にあるので、スパイク・パルスspkはスパイク・ニューロン回路20の出力端子には伝達されない。
また、このとき、スイッチ回路S14は閉路状態、スイッチ回路S15は開路状態にあるので、スパイク・パルスspkは中間ノードn8に伝達され、このスパイク・パルスspkがHレベルとなる時間幅だけ、スイッチ回路S1が開路され、スイッチ回路S2が閉路される。これにより、位相状態値保持用キャパシタC0に蓄電された電荷が放電され、出力ノードn1の位相状態値電圧Vrは最小値電圧Vlowにリセットされる。これにより、コンパレータCMP3の出力電圧は再びLレベルとなる。
さらに、スパイク・パルスspkが出力されると、パルス遅延器Dは、スパイク・パルスspkを時間T/4だけ遅延させ、時刻5T/4に遅延パルスDelay-spkを出力する(図22(b)参照)。
遅延パルスDelay-spkが出力されると、トリガー・フリップフロップT−FFの出力端子Qの出力電圧はHレベル、出力端子¬Qの出力電圧はLレベルに反転される。これにより、スイッチ回路S10,S13,S15は閉路状態スイッチ回路S11,S12,S14は開路状態となる。従って、中間ノードn6の対照電圧Vrefは零値電圧Vmiddleとなる。また、中間ノードn7はスパイク・ニューロン回路20の出力端子から切り離される。また、中間ノードn8は接地面に接続され、中間ノードn7から切り離される。
以降は、同様の動作が繰り返される。
以上のように、本実施例のスパイク・ニューロン回路20では、1個のコンパレータCMP3を用いて、実施例1のスパイク・ニューロン回路20と同等の機能の回路を実現することができる。
実施例3では、チョッパー型コンパレータを使用してスパイク・ニューロン回路20を構成する例について説明する。
図23は、本発明の実施例3に係る情報処理装置における実部節点ユニット7及び虚部節点ユニット8のスパイク・ニューロン回路20の構成を示す図である。なお、本実施例の情報処理装置は、スパイク・ニューロン回路20以外の構成は実施例1と同様である。
本実施例のスパイク・ニューロン回路20は、位相状態値保持用キャパシタC1、ゼロオフセット用キャパシタC2、2つの電流源I1,I2、5つのインバータINV1,INV2,INV3,INV4,INV5、トリガパルス生成器PG、パルス遅延器D、2つのトリガー・フリップフロップT−FF1,T−FF2、バッファbuff、及び15個のスイッチ回路S1,S2,S3,S10,S11,S12,S13,S14,S15,S20,S21,S22,S23,S24,S25を備えている。
位相状態値保持用キャパシタC1は一端が接地され、他端が出力ノードn1に接続されている。電流源I1は、一端が出力ノードn1を介して位相状態値保持用キャパシタC1に接続されており、他端がスイッチ回路S1を介して電源に接続されている。スイッチ回路S2は、一端がバッファbuffを介して出力ノードn1に接続され、他端には、位相の最小値(最小位相値)θminに相当する電圧である最小値電圧Vlowが入力されている。スイッチ回路S2にはn型MOSFETが用いられている。尚、スイッチ回路S1の制御端子は、インバータINV1の出力側に接続されている。スイッチ回路S2の制御端子は、中間ノードn8に接続されている。尚、バッファbuffは、スイッチ回路S20のオンオフで、位相状態値保持用キャパシタC1の電荷が漏れてしまうことを防止するために挿入されたものである。
電流源I2は、一端が出力ノードn1を介して位相状態値保持用キャパシタC1に接続されており、他端がスイッチ回路S3を介して電源に接続されている。スイッチ回路S3の制御には、初期値入力線10が接続されている。スイッチ回路S3は、入力部3から入力される初期化信号がHレベルのときに閉路状態、Lレベルのときに開路状態となる。
また、出力ノードn1は、スイッチ回路20を介して中間ノードn9に接続されている。また、中間ノードn9には、スイッチ回路S10を介して零値電圧Vmiddleが印加され、また、スイッチ回路S11を介して最大値電圧Vhighが印加される。さらに、中間ノードn9は、ゼロオフセット用キャパシタC2の一方の端子に接続されている。
ゼロオフセット用キャパシタC2の他方の端子は、中間ノードn10を介して、比較用インバータINV2の入力端子に接続され、当該インバータINV2の出力信号は、出力用インバータINV3,INV4を介してトリガパルス生成器PGの入力端子に入力される。トリガパルス生成器PGに入力されるデジタル出力信号をDoutと記す。
トリガパルス生成器PGは、デジタル出力信号をDoutの立ち下がりエッジにおいて、短時間幅のパルスを出力する。
また、インバータINV2にはゼロオフセット設定用のスイッチ回路S21が接続されている。
これらスイッチ回路S10,S11,S20,S21、インバータINV2,INV3,INV4、及びゼロオフセット用キャパシタC2により、チョッパー型コンパレータが構成されている。
トリガパルス生成器PGの出力端子は、中間ノードn7に接続されており、この中間ノードn7は、スイッチ回路(出力スイッチ回路)S12を介して、スパイク・ニューロン回路20の出力端子Toutに接続されている。出力端子Toutは、また、スイッチ回路S13を介して接地面に接続されている。
また、中間ノードn7は、トリガー・フリップフロップT−FF1の入力端子に接続されている。トリガー・フリップフロップT−FF1は、1つの入力端子と2つの出力端子Q,¬Qを備えており、トリガー・フリップフロップT−FF1は、入力端子からパルスが入力されると、そのパルスの立ち上がりエッジにおいて、出力端子Q1,¬Q1のレベルを反転させる。出力端子Q1には、出力端子¬Q1の出力の反転値が出力される。トリガー・フリップフロップT−FF1の出力端子¬Q1は、スイッチ回路S22,S25の制御端子に接続されている。トリガー・フリップフロップT−FF1の出力端子Q1は、スイッチ回路S23,S24の制御端子に接続されている。
また、中間ノードn7は、スイッチ回路S14を介してスイッチ回路S2の制御端子に接続されており、スイッチ回路S14及びインバータINV1を介してスイッチ回路S1の制御端子に接続されている。
また、中間ノードn7は、パルス遅延器Dの入力端子に接続されている。パルス遅延器Dの出力端子は、トリガー・フリップフロップT−FF2の入力端子に接続されている。また、中間ノードn7は、インバータINV5を介してスイッチ回路S20の制御端子に接続されている。
さらに、中間ノードn7は、スイッチ回路S22を介してスイッチ回路S10の制御端子に接続されており、スイッチ回路S23を介してスイッチ回路S11の制御端子に接続されている。また、中間ノードn7は、スイッチ回路S23及びスイッチ回路S25を介して接地面に接続されており、スイッチ回路S22及びスイッチ回路S24を介して接地面に接続されている。
トリガー・フリップフロップT−FF2は、1つの入力端子と2つの出力端子Q,¬Qを備えており、トリガー・フリップフロップT−FF2は、入力端子からパルスが入力されると、そのパルスの立ち上がりエッジにおいて、出力端子Q2,¬Q2のレベルを反転させる。出力端子Q2には、出力端子¬Q2の出力の反転値が出力される。トリガー・フリップフロップT−FF2の出力端子¬Q2は、スイッチ回路S12,S15の制御端子に接続されている。トリガー・フリップフロップT−FF1の出力端子Q2は、スイッチ回路S14,S13の制御端子に接続されている。
以上のように構成された本実施例のスパイク・ニューロン回路20について、その構成を説明する。図24は、図23のスパイク・ニューロン回路20の各部の動作を表すタイミング・チャートである。
(1)まず、時刻0において、スイッチ回路S20,S11が開路され、スイッチ回路S10,S21が閉路される。すると、スイッチ回路S10の閉路により、ゼロオフセット用キャパシタC2の端子n9の電位V9は零値電圧Vmiddleとなり、スイッチ回路S21の閉路によりゼロオフセット用キャパシタC2の端子n10の電位V10は、インバータINV2の閾値電圧Vthとなる。従って、ゼロオフセット用キャパシタC2には、Vmiddle−Vthに相当する電荷が充電され、これにより、チョッパー型コンパレータのゼロオフセット動作が行われる。
このとき、スイッチ回路S1は開路され、スイッチ回路S2が閉路されている。従って、位相状態値保持用キャパシタC1が放電され、出力ノードn1の位相状態値電圧Vrは最小値電圧Vlowにリセットされる。
(2)次いで、スイッチ回路S10,S21が開路され、スイッチ回路S20が閉路される。また、スイッチ回路S1が閉路され、スイッチ回路S2が開路される。また、スイッチ回路S12,S15は閉路状態、スイッチ回路S13,S14は開路状態にある。
これにより、中間ノードn9が出力ノードn1と接続される。スイッチ回路S21が開路されているので、ゼロオフセット用キャパシタC2の端子間電圧VC2はVmiddle−Vthに維持される。従って、中間ノードn10の電圧V10は、(Vlow−Vmiddle)+Vthに引き下げられる。初期状態ではVr<Vmiddleなので、中間ノードn10の電圧V10は、インバータINV2の閾値電圧Vthよりも低い電圧となる。従って、インバータINV4のデジタル出力信号DoutはHレベルとなる。
(3)続いて、電流源I1から位相状態値保持用キャパシタC1に充電電流Isが給電され、出力ノードn1の位相状態値電圧Vrが一定の勾配で上昇する。
(4)隣接ユニットからのスパイク入力がない場合、時刻T/2で出力ノードn1の位相状態値電圧Vrが零値電圧Vmiddleに達すると、中間ノードn10の電圧V10は閾値電圧Vthに達し、インバータINV4のデジタル出力信号DoutはLレベルに反転する。デジタル出力信号Doutの立ち下がりエッジで、トリガパルス生成器PGが中間ノードn7にスパイク・パルスspkを出力する。このとき、スイッチ回路S14は開路されているので、スパイク・パルスspkは中間ノードn8には伝達されない。スイッチ回路(出力スイッチ回路)S12は閉路されているので、スパイク・パルスspkは出力端子Toutにスパイク・パルスspk_fとして出力される。
また、このスパイク・パルスspkの立ち上がりエッジにおいて、トリガー・フリップフロップT−FF1の出力値は反転する。これにより、出力端子Q1の電圧はHレベル、出力端子¬Q1の電圧はLレベルとなり、スイッチ回路S23,S24は閉路状態、スイッチ回路S22,S25は開路状態となる。また、このスパイク・パルスspkはパルス遅延器Dに入力される。
(5)パルス遅延器Dは、時刻T/2でスパイク・パルスspkが入力された後、適当な時間後、例えば時間T/4だけ遅延して、時刻3T/4に、短時間の遅延パルスDelay-spkを出力する。遅延パルスDelay-spkの立ち上がりエッジにおいて、パルス時間だけスイッチ回路S21が閉路、スイッチ回路S20が開路される。このとき、スイッチ回路S22,S25は開路状態、スイッチ回路S23,S24は閉路状態にあるため、遅延パルスDelay-spkはスイッチ回路S11の制御端子に伝達され、パルス時間だけスイッチ回路S11が閉路される。スイッチ回路S11の閉路により、中間ノードn9にはパルス時間だけ最大値電圧Vhighが印加される。また、スイッチ回路S21の閉路により、中間ノードn10にはパルス時間だけ閾値電圧Vthとなる。従って、ゼロオフセット用キャパシタC2の端子間電圧VC2はVth−Vhighとなり、これにより、チョッパー型コンパレータのゼロオフセット動作が行われる。
また、この遅延パルスDelay-spkにより、トリガー・フリップフロップT−FF2の出力値は反転する。これにより、出力端子Q2の電圧はHレベル、出力端子¬Q2の電圧はLレベルとなり、スイッチ回路S13,S14は閉路状態、スイッチ回路S12,S15は開路状態となる。これにより、出力端子Toutは中間ノードn7から切り離されて接地され、中間ノードn8は接地面から切り離されて中間ノードn7に接続される。
(6)遅延パルスDelay-spkが立ち下がると、スイッチ回路S20が閉路状態、スイッチ回路S21,S11が開路状態となる。これにより、中間ノードn9は最大値電圧Vhighから切り離され、中間ノードn9は出力ノードn1に接続され、中間ノードn9の電圧V9は位相状態値保持用キャパシタC1の位相状態値電圧Vrとなる。また、スイッチ回路S21の開路により、ゼロオフセット用キャパシタC2の充電電荷は保存されるので、中間ノードn9の電圧V9が位相状態値電圧Vrとなるのに伴い、中間ノードn10の電圧V10は(Vr−Vhigh)+Vthとなる。
(7)続いて、電流源I1から位相状態値保持用キャパシタC1に充電電流Isが給電されることで、出力ノードn1の位相状態値電圧Vrが一定勾配で上昇する。
(8)時刻Tにおいて、中間ノードn10の電圧V10は閾値電圧Vthに達する。これにより、インバータINV2の出力はLレベルに反転し、インバータINV4のデジタル出力信号DoutもLレベルに反転する。デジタル出力信号Doutの立ち下がりエッジで、トリガパルス生成器PGが中間ノードn7にスパイク・パルスspkを出力する。このとき、スイッチ回路(出力スイッチ回路)S12は開路されているので、スパイク・パルスspkは出力端子Toutには伝達されない。また、スイッチ回路S14は閉路されているので、スパイク・パルスspkは中間ノードn8には伝達される。従って、スパイク・パルスspkのパルス幅の期間中、スイッチ開路S1が開路され、スイッチ開路S2は閉路される。これにより、電流源I1の通電は遮断され、出力ノードn1に最小値電圧Vlowが印加されるため、位相状態値保持用キャパシタC1が放電されて位相状態値電圧Vrは最小値電圧Vlowにリセットされる。このとき、スイッチ開路S20は閉路状態にあるため、中間ノードn9の電圧V9も位相状態値電圧Vrに連動して最小値電圧Vlowとなる。中間ノードn9の電圧V9が閾値電圧Vth以下となることに伴い、インバータINV2の出力が再びHレベルに戻り、それに伴って、インバータINV4のデジタル出力信号Doutも再びHレベルに戻る。従って、デジタル出力信号Doutは、上記スイッチング動作が行われる短い時間だけ、Lレベルとなる。
また、このときスイッチ開路S21は開路状態にあるため、中間ノードn9の電圧V9が最小値電圧Vlowとなるのに連動して、電圧V9は(Vr−Vlow)+Vthに引き下げられる。
また、このスパイク・パルスspkの立ち上がりエッジにおいて、トリガー・フリップフロップT−FF1の出力値は反転する。これにより、出力端子Q1の電圧はLレベル、出力端子¬Q1の電圧はHレベルとなり、スイッチ回路S23,S24は開路状態、スイッチ回路S22,S25は閉路状態となる。また、このスパイク・パルスspkはパルス遅延器Dに入力される。
(9)スパイク・パルスspkが立ち下がると、スイッチ開路S1が閉路され、スイッチ開路S2は開路される。従って、出力ノードn1は接地面から切り離されて、電流源I1に再び通電がされ、位相状態値保持用キャパシタC1への充電が開始される。
(10)続いて、電流源I1から位相状態値保持用キャパシタC1に充電電流Isが給電され、出力ノードn1の位相状態値電圧Vrが一定の勾配で上昇する。
(11)パルス遅延器Dは、時刻Tでスパイク・パルスspkが入力された後、時間T/4だけ遅延して、時刻5T/4に、短時間の遅延パルスDelay-spkを出力する。遅延パルスDelay-spkの立ち上がりエッジにおいて、パルス時間だけスイッチ回路S21が閉路、スイッチ回路S20が開路される。このとき、スイッチ回路S22,S25は閉路状態、スイッチ回路S23,S24は開路状態にあるため、遅延パルスDelay-spkはスイッチ回路S10の制御端子に伝達され、パルス時間だけスイッチ回路S10が閉路される。スイッチ回路S10の閉路により、中間ノードn9にはパルス時間だけ零値電圧Vmiddleが印加される。また、スイッチ回路S21の閉路により、中間ノードn10にはパルス時間だけ閾値電圧Vthとなる。従って、ゼロオフセット用キャパシタC2の端子間電圧VC2はVth−Vmiddleとなり、これにより、チョッパー型コンパレータのゼロオフセット動作が行われる。
また、この遅延パルスDelay-spkにより、トリガー・フリップフロップT−FF2の出力値は反転する。これにより、出力端子Q2の電圧はLレベル、出力端子¬Q2の電圧はHレベルとなり、スイッチ回路S13,S14は開路状態、スイッチ回路S12,S15は閉路状態となる。これにより、出力端子Toutは中間ノードn7に接続され、中間ノードn8は中間ノードn7から切り離されて接地される。
(12)遅延パルスDelay-spkが立ち下がると、スイッチ回路S20が閉路状態、スイッチ回路S21,S10が開路状態となる。これにより、中間ノードn9は零値電圧Vmiddleから切り離され、中間ノードn9は出力ノードn1に接続され、中間ノードn9の電圧V9は位相状態値保持用キャパシタC1の位相状態値電圧Vrとなる。また、スイッチ回路S21の開路により、ゼロオフセット用キャパシタC2の充電電荷は保存されるので、中間ノードn9の電圧V9が位相状態値電圧Vrとなるのに伴い、中間ノードn10の電圧V10は(Vr−Vmiddle)+Vthまで引き上げられる。
(13)以降は、上記(3)〜(12)と同様の動作を繰り返すことになる。
以上の動作によって、スパイク・ニューロン回路20は、状態値更新回路27による状態値の更新がなければ、位相状態値保持用キャパシタC1の位相状態値電圧Vrが周期Tの鋸歯波関数となり、位相状態値電圧Vrが零値電圧Vmiddleを過ぎた時刻に発火して、出力端子Toutからスパイク・パルスspk_fを出力する。状態値更新回路27による状態値の更新があれば、位相状態値電圧Vrの鋸歯波関数の位相が、状態値の更新時点で進行又は遅延されるだけで、上記と同様の動作が行われる。
従って、本実施例のスパイク・ニューロン回路20では、チョッパー型コンパレータを用いて、実施例1のスパイク・ニューロン回路20と同等の機能の回路を実現することができる。
実施例1〜3においては、スパイク・ニューロン回路20が、位相状態値保持用キャパシタC0(又はC1)の位相状態値電圧Vrが零値電圧Vmiddleとなったときに発火してスパイク・パルスspk_fを出力する回路構成の例について説明した。本実施例では、これとは異なり、スパイク・ニューロン回路20が、位相状態値保持用キャパシタC0の位相状態値電圧Vrが最小値電圧Vlowにリセットされた時刻からTdだけ遅延した時刻に発火してスパイク・パルスspk_fを出力する回路構成の例について説明する。Tdとしては周期の半分T/2が適当である。
〔1〕全体構成
本実施例に係る情報処理装置の全体構成は図1と同様であり、また、節点ユニットネットワーク2の内部構成は図2と同様であり、ピクセル・アレイ13の内部構成は図3と同様であるとする。また、ピクセル・アレイ13内の各節点ユニット6の全体構成についても図4と同様であるとする。
図25は、実施例4に係る情報処理装置の実部節点ユニット7の内部構成を表すブロック図である。尚、虚部節点ユニット8の内部構成についても同様であるため、ここでは、代表として実部節点ユニット7についてのみ説明する。
実部節点ユニット7(虚部節点ユニット8)は、スパイク・ニューロン回路20、遅延パルス生成器21、更新許可スイッチ22、セレクタ付きパルス生成器23,24,25,26、状態値更新回路27、及び列選択スイッチ28,29を備えている。尚、図5と対応する構成部分については、同符号を付してある。
本実施例のスパイク・ニューロン回路20は、実部節点ユニット7(虚部節点ユニット8)に固有の位相状態値を保持する位相状態値保持手段として機能するとともに、位相状態値保持手段が保持する位相状態値を一定の位相速度ωで経時的に変化させる位相進行手段、及び位相状態値保持手段が保持する位相状態値が最大位相状態値に達したときに、位相状態値を最小位相状態値にリセットする位相復位手段として機能する。スパイク・ニューロン回路20は、スパイク・パルスspkを出力し、このスパイク・パルスspkは遅延パルス生成器21に入力される。
パルス生成器21は、スパイク・ニューロン回路20がスパイク・パルスspkを出力すると、その時点から所定の遅延時間Tdだけ遅延してトリガ(更新トリガ)を出力するトリガ発生手段として機能する。遅延パルス生成器21は、遅延パルスD_spkを出力する。
更新許可スイッチ22は、AND回路で構成され、一方の入力が遅延パルス生成器21の出力に接続され、他方の入力には、全体制御部5から出力される更新許可信号update_enaが入力される。
セレクタ付きパルス生成器23,24,25,26は、遅延パルスD_spkによるトリガが入力されると、それぞれ、各更新係数G1xの大きさに比例したトリガパルス(更新トリガ)R_OUT_P_gx1, R_OUT_M_gx1,G2xの大きさに比例したトリガパルス(更新トリガ)R_OUT_P_gx2, R_OUT_M_gx2,G1yの大きさに比例したトリガパルス(更新トリガ)R_OUT_P_gy1, R_OUT_M_gy1,G2yの大きさに比例したトリガパルス(更新トリガ)R_OUT_P_gy2, R_OUT_M_gy2を出力する。
状態値更新回路27は、隣接節点ユニット6から各トリガパルス(更新トリガ)が入力されると、それらのトリガパルスの符号及びパルス幅に応じて、スパイク・ニューロン回路20内の位相状態値保持手段が保持する位相状態値を増加又は減少させることにより、位相状態値の更新を行う。
従って、本実施例では、状態値更新回路27と隣接節点ユニット6のセレクタ付きパルス生成器23,24,25,26とが協働することによって、隣接節点ユニット6の遅延パルス生成器21がトリガを出力したとき、該節点ユニットの隣接位置に応じて、位相状態値保持手段が保持する位相状態値を、当該位相状態値に当該位相状態値を所定倍した値を加えた値だけ変化させる位相更新手段として機能することになる。
〔2〕実部節点ユニット7及び虚部節点ユニット8の各部構成と動作
(1)スパイク・ニューロン回路20
図26は、図25のスパイク・ニューロン回路20の構成(a)及び動作(b)を表す図である。スパイク・ニューロン回路20は、位相状態値保持用キャパシタC0、電流源I1,I2、コンパレータCMP1、パルス生成回路PG、及びスイッチ回路S1,S2,S3を備えている。
位相状態値保持用キャパシタC0は一端が接地され、他端が出力ノードn1に接続されている。この出力ノードn1には、状態値更新回路27の出力端子が接続されている。電流源I1は、一端が出力ノードn1を介して位相状態値保持用キャパシタC0に接続されており、他端がスイッチ回路S1を介して電源に接続されている。スイッチ回路S2は、一端が出力ノードn1に接続され、他端には、位相の最小値(最小位相値)θminに相当する電圧である最小値電圧Vlowが入力されている。初期値電圧Vlowは、位相状態値の初期値θminに相当する電圧であり、全体制御部5で生成され入力される。尚、スイッチ回路S2にはn型MOSFETが用いられている。
コンパレータCMP1は、プラス側入力端子が出力ノードn1に接続され、マイナス側入力端子に最大値電圧Vhighが入力されている最大値電圧Vhighは、位相状態値の最大値θmaxに相当する電圧であり、全体制御部5で生成され入力される。また、コンパレータCMP1の出力は、パルス生成回路PGを介してスパイク・ニューロン回路20の出力端子Toutに接続されている。また、コンパレータCMP1の出力は、スイッチ回路S1,S2の制御端子に接続されている。スイッチ回路S1は、コンパレータCMP1の出力電圧がLレベルのときに閉路され、Hレベルのときに開路される。また、スイッチ回路S2は、コンパレータCMP1の出力電圧がHレベルのときに閉路され、Lレベルのときに開路される。
電流源I2は、一端が出力ノードn1を介して位相状態値保持用キャパシタC0に接続されており、他端がスイッチ回路S3を介して電源に接続されている。スイッチ回路S3の制御端子には、初期値入力線10が接続されている。スイッチ回路S3は、入力部3から入力される初期化信号がHレベルのときに閉路状態、Lレベルのときに開路状態となる。
この回路では、出力ノードn1の位相状態値電圧Vr又は位相状態値保持用キャパシタC0に充電された電荷量Qr=C0Vrがこの節点ユニットの「位相状態値」を表しているものとみなされる。
このスパイク・ニューロン回路20は、次のように動作する。状態値更新回路27が状態値の更新を行っていない(すなわち、出力ノードn1に状態値更新回路27からの電流の入出力がない)状態では、出力ノードn1の位相状態値電圧Vr及びスパイク・ニューロン回路20の出力電圧spkは、図26(b)に示したような時間変化をする。すなわち、まず、コンパレータCMP1の出力電圧spkがHレベルとなると、スイッチ回路S2が短時間閉路されるとともにスイッチ回路S1が開路して、Vr=Vlow(すなわち、位相状態値θ=θmin<0)にリセットされる。
次に、Vr<Vhighなので、即座にコンパレータCMP1の出力電圧spkはLレベルとなり、スイッチ回路S2が開路しスイッチ回路S1が閉路される。そうすると、電流源I1により、位相状態値保持用キャパシタC0に一定の充電電流Isが供給され、出力ノードn1の位相状態値電圧Vrは一定の勾配で上昇する。すなわち、位相状態値θがθmin+ωtで変化する。このとき、Vr<Vmiddleなので、コンパレータCMP2の出力電圧はLレベルである。
位相状態値電圧Vrが最大値電圧Vhighに達したとき(すなわち、位相状態値θが最大値θmaxに達したとき)、コンパレータCMP1の出力がHレベルに反転する。これに伴って、スイッチ回路S1が開路して、スイッチ回路S2が閉路し、位相状態値保持用キャパシタC0に充電された電荷は即座に放電されて、位相状態値電圧Vrは初期値電圧ノードVlowとなる。それに伴って、コンパレータCMP1の出力が再びLレベルに反転し、再びスイッチ回路S2が開路し、スイッチ回路S1が閉路して、再び電流源I1により、位相状態値保持用キャパシタC0に一定の電流が供給され始める。
コンパレータCMP1の出力がHレベルとなる短時間に、スパイク・ニューロン回路20の出力端子にスパイク・パルスspkが出力される。すなわち、スパイク・ニューロン回路20が「発火」する。従って、状態値の更新が行われないときには、位相状態値θは常にθmin+ωtで鋸歯波状に変化し、スパイク・ニューロン回路20からは、常に一定の時間間隔Tでスパイク・パルスspkが出力されることになる。
尚、ガボール型フィルタ演算を開始するにあたって、スパイク・ニューロン回路20の位相状態値を初期値に設定する場合には、初期値入力線10から、初期の位相状態値に比例する幅のパルスを入力する。これにより、電流源I2から位相状態値保持用キャパシタC0に、初期の位相状態値に比例する量の電荷が供給され、初期値が設定されることになる。
(2)遅延パルス生成器21
図27は、図25の遅延パルス生成器21の構成(a)及び動作(b)を表す図である。遅延パルス生成器21は、p型の電界効果トランジスタM7,M8、n型の電界効果トランジスタM9、インバータ回路INV5,INV6、及びNOR回路51を備えている。
トランジスタM7,M8及びトランジスタM9は、電源と接地面との間にこの順序で直列に接続されている。トランジスタM7のゲートには、パルスの遅延量を決定するための遅延電圧Vdelayが入力される。遅延電圧Vdelayは全体制御部5において生成され、全ての節点ユニット6に共通に入力される。トランジスタM8,M9のゲートには、前述のスパイク・ニューロン回路20が出力するスパイク・パルスspkが入力される。インバータ回路INV5,INV6は直列接続されており、インバータ回路INV5の入力側はトランジスタM8,M9の共通接続ノード(以下「中間ノードn11」という。)に接続され、インバータ回路INV6の出力側は、NOR回路51の一方の入力端子に接続される。NOR回路51の他方の入力端子には、スパイク・ニューロン回路20が出力するスパイク・パルスspkが直接入力される。NOR回路51の出力端子は、遅延パルス生成器21の出力端子Toutとなっている。
スパイク・ニューロン回路20からスパイク・パルスspkが入力されていない初期状態では、トランジスタM8,M9のゲートはLレベルであり、トランジスタM8がオン、トランジスタM9がオフである。従って、トランジスタM7,M8を介して、電源から中間ノードn11に電荷が流入し、中間ノードn11と接地面間の寄生容量が充電され、中間ノードn11の電圧Vaはほぼ電源電圧V0となる。このとき、インバータ回路INV6の出力側のノード(以下「中間ノードn12」という。)の電圧VbはHレベルであり、NOR回路51の出力電圧(遅延パルス)D_spkはLレベルである。
スパイク・ニューロン回路20からスパイク・パルスspkが入力されると、スパイク・パルスspkがHレベルの短期間だけ、トランジスタM8がオフ、トランジスタM9がオンとなり、中間ノードn11と接地面間の寄生容量が放電されて中間ノードn11の電圧Vaは0となる。中間ノードn11の電圧Vaが0となるのに伴い、中間ノードn12の電圧VbはLレベルとなる。しかし、スパイク・パルスspkがHレベルであるため、NOR回路51の出力電圧(遅延パルス)D_spkはLレベルのままである。
スパイク・パルスspkが立下ると、NOR回路51の出力電圧(遅延パルス)D_spkはHレベルとなる。それと共に、再びトランジスタM8がオン、トランジスタM9がオフとなるので、トランジスタM7,M8を介して、電源から中間ノードn11に電荷が流入し、図27(b)に示すように、中間ノードn11の電圧Vaはほぼ一定の勾配で電源電圧V0となるまで上昇する。この過程で中間ノードn11の電圧Vaがインバータ回路INV5の閾値電圧を過ぎった瞬間に、インバータ回路INV6の出力はHレベルとなり、NOR回路51の出力電圧(遅延パルス)D_spkは再びLレベルとなる。スパイク・パルスspkの立ち上がり時刻から、NOR回路51の出力電圧(遅延パルス)D_spkの立ち下がり時刻までをTdとすると、NOR回路51の出力電圧(遅延パルス)D_spkの立ち下がりエッジにより、スパイク・パルスspkの立ち上がり時刻から時間Tdだけ遅延したトリガを得ることができる。尚、遅延時間Tdは、遅延電圧Vdelayを調整することによって調整することができる。
尚、遅延パルスD_spkの立ち下がりエッジの時間軸上の位置は、ほぼ位相状態値θが0となる時刻を表す。
(3)セレクタ付きパルス生成器23,24,25,26
セレクタ付きパルス生成器23,24,25,26の構成は、実施例1の図9に示したものと同様であり、回路構成についての説明は省略する。ここでは、回路動作についてのみ説明する。
図28は、本実施例4に於けるセレクタ付きパルス生成器23,24,25,26の動作を表すタイミング・チャートである。
遅延パルス生成器21から遅延パルスD_spkが入力されていない(D_spkがLレベルの)初期状態では、トランジスタM1,M3のゲートはLレベルであり、トランジスタM1がオン、トランジスタM3がオフである。また、トランジスタM2のゲートには、更新係数電圧Vgが印加されており、このトランジスタM2は線形領域で動作する。従って、トランジスタM1,M2を介して、電源から中間ノードn2に電荷が流入し、中間ノードn2と接地面間の寄生容量が充電され、中間ノードn2の電圧はほぼ電源電圧V0となる。このとき、インバータ回路31の出力側のノード(以下「中間ノードn3」という。)の電圧VcはHレベルであり、NOR回路32の出力側のノード(以下「中間ノードn4」という。)の電圧OUT_PMはLレベルである。
遅延パルスD_spkがHレベルに立ち上がると、トランジスタM1がオフ、トランジスタM3がオンとなり、中間ノードn2と接地面間の寄生容量が放電されて中間ノードn2の電圧は0となる。中間ノードn2の電圧が0となるのに伴い、中間ノードn3の電圧VcもLレベルとなる。しかし、遅延パルスD_spkがHレベルであるため、NOR回路32の出力電圧である中間ノードn4の電圧OUT_PMはLレベルのままである。
次に、遅延パルスD_spkがLレベルに立ち下がると、NOR回路32の出力電圧である中間ノードn4の電圧OUT_PMはHレベルとなる。それと共に、再びトランジスタM1がオン、トランジスタM3がオフとなるので、トランジスタM1,M2を介して、電源から中間ノードn2に、更新係数電圧Vgに比例する電流が流入し、中間ノードn2の電圧はほぼ一定の勾配で電源電圧V0になるまで上昇する。この過程で中間ノードn2の電圧がインバータ回路30の閾値電圧を過ぎった瞬間に、インバータ回路30及びインバータ回路31の出力電圧が反転し、中間ノードn3の電圧VcはHレベルとなり、NOR回路32の出力電圧である中間ノードn4の電圧OUT_PMは再びLレベルとなる。中間ノードn4の電圧OUT_PMがHレベルに立ち上がってから再びLレベルに立ち下がるまでの時間をパルス幅tgとすると、パルス幅tgは更新係数電圧Vgの大きさに比例する。従って、出力パルスの時間軸上の位置はほぼ位相状態値θが0となる時刻を表し、出力パルスのパルス幅tgは更新係数G1x,G1y,G2x,G2yの大きさを表すことになる。
最後に、デマルチプレクサ33は、更新係数符号信号signに従って、中間ノードn4に出力されるパルスの出力方向を切り替える。更新係数G1x,G1y,G2x,G2yが正のときは、出力端子OUT_Pにパルス幅tgの出力パルスが出力され、更新係数G1x,G1y,G2x,G2yが負のときは、出力端子OUT_Mにパルス幅tgの出力パルスが出力される。
尚、出力端子OUT_Pは、状態値更新回路27の入力端子R_top_p_gy1, R_bottom_p_gy1, R_right_p_gx1, R_left_p_gx1, I_top_p_gy2, I_bottom_p_gy2, I_right_p_gx2, I_left_p_gx2の何れかに接続される。また、出力端子OUT_Mは、状態値更新回路27の入力端子R_top_m_gy1, R_bottom_m_gy1, R_right_m_gx1, R_left_m_gx1, I_top_m_gy2, I_bottom_m_gy2, I_right_m_gx2, I_left_m_gx2の何れかに接続される。
(4)状態値更新回路27
状態値更新回路27の構成及び動作は、実施例1と同様であり、既に説明したため、ここでは説明は省略する。
〔3〕全体動作
(1)初期化
ガボール型フィルタ演算を開始する前に、全体制御部5は初期化処理を行う。初期化処理では、まず、更新許可信号update_enaをL状態として、セレクタ付きパルス生成器23,24,25,26のパルス出力を停止することによって、状態値更新回路27によるスパイク・ニューロン回路20の位相状態値電圧Vrの更新を停止する。この状態で、各スパイク・ニューロン回路20の位相状態値保持用キャパシタC0に初期電荷を与える。尚、位相状態値保持用キャパシタC0に初期電荷を与える方法については、〔2〕(1)で既に説明した通りである。
(2)ガボール型フィルタ演算
ガボール型フィルタ演算を開始する場合には、全体制御部5は更新許可信号update_enaをH状態とする。これにより、各節点ユニットUi,jの実部節点ユニット7及び虚部節点ユニット8において、位相状態量θi,j r,θi,j iの更新処理が非同期的に並列に実行される。各節点ユニットに於ける位相状態量θi,j r,θi,j iの更新処理の回路動作については、実施例1で既に説明した通りである。
(3)ガボール型フィルタ演算の終了
ガボール型フィルタ演算を打ち切る場合には、全体制御部5は更新許可信号update_enaをL状態とする。これにより、セレクタ付きパルス生成器23,24,25,26のパルス出力が停止され、状態値更新回路27によるスパイク・ニューロン回路20の位相状態値電圧Vrの更新が行われなくなる。ガボール型フィルタ演算の結果は、各スパイク・ニューロン回路20の位相状態値電圧Vrの位相として保持されているので、出力部4がこの位相をパルスとして取り出すことによって演算結果を得ることができる。尚、位相パルス変換回路については図1では図示していないが、例えば、図18のような回路を使用することができる。
以上のように、本実施例の情報処理装置では、各節点ユニットUi,jの実部節点ユニット7及び虚部節点ユニット8において、位相状態量θi,j r,θi,j iの更新処理が非同期的に並列に実行される。従って、ガボール型フィルタ演算を高速に演算することが可能となる。また、従来のように、隣接節点ユニットの状態値と自己の状態値との減算回路などを必要としないため、回路構成が単純となり、実装面積も縮小される。
本実施例では、本発明の情報処理装置の各節点ユニットをデジタル回路で構成する例について説明する。尚、本実施例5の情報処理装置の全体構成については、実施例1の図1〜図3と同様であるものとする。
図29は、実施例5に係る情報処理装置の各節点ユニット6の全体構成を表す図である。尚、図29において、実施例1に対応する各部構成については同符号を付している。
各節点ユニット6には、左側に隣接する節点ユニット6の実部節点ユニット7及び虚部節点ユニット8から、それぞれ更新トリガR_left, I_left、右側に隣接する節点ユニット6の実部節点ユニット7及び虚部節点ユニット8から、それぞれ更新トリガR_right, I_right、上側に隣接する節点ユニット6の実部節点ユニット7及び虚部節点ユニット8から、それぞれ更新トリガR_top, I_top、下側に隣接する節点ユニット6の実部節点ユニット7及び虚部節点ユニット8から、それぞれ更新トリガR_bottom, I_bottomが入力される。
また、各節点ユニット6の実部節点ユニット7及び虚部節点ユニット8からは、それぞれ、左側に隣接する節点ユニット6に対し更新トリガR_OUT_left, I_OUT_left、右側に隣接する節点ユニット6に対し更新トリガR_OUT_right, I_OUT_right、上側に隣接する節点ユニット6に対し更新トリガR_OUT_top, I_OUT_top、下側に隣接する節点ユニット6に対し更新トリガR_OUT_bottom, I_OUT_ bottomが出力される。
また、全体制御部5から各節点ユニット6に対しては、自己更新トリガg0が入力される。
図30は、実部節点ユニット7(及び虚部節点ユニット8)の内部構成を表すブロック図である。実部節点ユニット7(及び虚部節点ユニット8)は、位相状態値保持手段61、位相進行手段62、位相復位手段63、トリガ発生手段64、及び位相更新手段65を備えている。
位相状態値保持手段61は、そのモジュールに固有の位相状態値θi(iは実部節点ユニット7又は虚部節点ユニット8を特定するインデックス)を保持する。
位相進行手段62は、位相状態値保持手段61が保持する位相状態値θiを一定の位相速度ωで経時的に増加させる。
位相復位手段63は、位相状態値保持手段61が保持する位相状態値θiが所定の最大値θmaxに達すると、位相状態値θiを最小位相状態値θminにリセットする。
トリガ発生手段64は、位相状態値保持手段61が保持する位相状態値θiが位相が零値であることを表す所定の零位相状態値θmiddleを過ぎったときに、更新トリガtrigger_OUTを出力する。この更新トリガtrigger_OUTは、上下左右に隣接する各節点ユニット6の実部節点ユニット7及び虚部節点ユニット8に対して、それぞれ、更新トリガR_OUT_top, I_OUT_top、更新トリガR_OUT_bottom, I_OUT_ bottom、更新トリガR_OUT_left, I_OUT_left、更新トリガR_OUT_right, I_OUT_rightとして出力される。
位相更新手段65は、隣接する節点ユニット6のトリガ発生手段64が更新トリガtrigger_OUTを出力したとき、該節点ユニット6の隣接位置kに応じて、位相状態値保持手段61が保持する位相状態値θi(tk)を、当該位相状態値θi(tk)に当該位相状態値を所定倍した値Gikθi(tk)を加えた値(1+Gik)θi(tk)に更新する。図30において、上側に隣接する実部節点ユニット7及び虚部節点ユニット8のトリガ発生手段64から入力される更新トリガを、それぞれ、更新トリガR_top, I_top、下側に隣接する実部節点ユニット7及び虚部節点ユニット8のトリガ発生手段64から入力される更新トリガを、それぞれ、更新トリガR_bottom, I_ bottom、左側に隣接する実部節点ユニット7及び虚部節点ユニット8のトリガ発生手段64から入力される更新トリガを、それぞれ、更新トリガR_left, I_left、右側に隣接する実部節点ユニット7及び虚部節点ユニット8のトリガ発生手段64から入力される更新トリガを、それぞれ、更新トリガR_right, I_rightと表記している。
また、位相更新手段65は、全体制御部5から自己更新トリガg0が入力されると、その時点における自己の位相状態値θi(t0)を、当該位相状態値θi(t0)に当該位相状態値θi(t0)をG0倍した値を加えた値(θi(t0)+G0θi(t0))に更新する。
以上のように構成された本実施例の情報処理装置について、以下その動作を説明する。尚、本実施例の情報処理装置はデジタル信号で演算処理を行うため、位相の更新式(10)は時間について離散化する必要がある。式(10)を時間について離散化して差分方程式に書き直すと、次式のようになる。
ここで、tp(m’,n’) r,tp(m’,n’) iは、時間区間(tp,tp+1)の間で位相θm’,n’ r(t),θm’,n’ i(t)が0となる時刻である。また、δ(t∈[t1,t2])は、クロネッカ記号を表し、tが区間[t1,t2]に含まれるときには1、それ以外のときには0となることを表す。また、Δtは任意に設定できるので、Δt=1としてよい。
図31は、本実施例に係る情報処理装置の各実部節点ユニット7及び虚部節点ユニット8における位相の進行・更新処理を表すフローチャートである。
まず、ステップS1において、全体制御部5は、内部変数として有する時刻tを0にリセットする。尚、時刻tについては、すべての節点ユニット6について共通とし、全体制御部5において管理され、クロック信号として各節点ユニット6に入力されるものとする。
次に、ステップS2において、入力部3は、外部から入力される初期値(例えば、画像データ)を各節点ユニット6の実部節点ユニット7の位相状態値保持手段61に、位相状態値θとして設定する。この初期値の設定の仕方は、実施例1と同様であり、全体制御部5が、列セレクタ14により列を選択した後、入力部3が各初期値入力線10から各行の実部節点ユニット7の位相状態値の初期値(初期化信号)を入力することにより、各実部節点ユニット7に位相状態値の初期値を設定することができる。また、全ての節点ユニット6の虚部節点ユニット8の位相状態値保持手段61の位相状態値θはθmin(<0)にリセットされる。
次に、以下のステップS3〜S8が反復実行される。
まず、ステップS3において、全体制御部5は、時刻tを1だけインクリメントする。
次いで、ステップS4において、全体制御部5は、t+ts mod T0(tsはθ0を決めるシフト量、T0は周期(=(θmax−θmin)/ω))が0か否かを判定し、t+ts mod T0=0の場合には、ステップS5において全体制御部5は自己更新トリガg0を出力し(g0 = Trueとする)、それ以外の場合はステップS6において自己更新トリガg0を出力しない(g0 = Falseとする)。
ステップS7において、各実部節点ユニット7及び各虚部節点ユニット8の位相更新手段65は、位相状態値の更新処理を実行する。この更新処理の詳細については、後述する(図32,図33参照)。尚、この処理は、すべての節点ユニット6において並列に同時実行される。
ステップS8において、全体制御部5は、時刻tが所定の計算終了時刻tendに達したか否かを判定する。計算終了時刻tendに達していない場合には、ステップS3に戻り、計算終了時刻tendに達した場合には、反復処理を終了してステップS9に移行する。
ステップS9において、出力部4は、全ての節点ユニット6の実部節点ユニット7及び虚部節点ユニット8に保持された位相状態値θを出力し、処理を終了する。これにより、出力された各位相状態値θとして、ガボール型フィルタにより処理されたデータが得られる。尚、この出力の仕方は、全体制御部5が、列セレクタ14により列を選択した後、出力部4が実部外部出力線11及び虚部外部出力線12各行の実部節点ユニット7及び虚部節点ユニット8の位相状態値を読み出すことにより行われる。
次に、上記ステップS7における位相状態値の更新処理の詳細について説明する。尚、ここでは、実部節点ユニット7と虚部節点ユニット8の両方をまとめて説明する。
図32,図33は、各節点ユニット6における位相状態値の更新処理の流れを表すフローチャートである。ここでは、節点ユニットUi,j(i∈{1,…,M},j∈{1,…,N})の実部節点ユニット7及び虚部節点ユニット8について記述する。節点ユニットUi,jの実部節点ユニット7及び虚部節点ユニット8の位相状態値保持手段61は、それぞれ、内部変数として位相状態値θi,j r,θi,j r(0)及び位相状態値θi,j i,θi,j i(0)を有しているものとする。
(1)前時刻の位相状態値のバックアップ
まず、ステップS11において、実部節点ユニット7及び虚部節点ユニット8は、前時刻の位相状態値θi,j r,θi,j iを、それぞれ内部変数θi,j r(0),θi,j i(0)に複写して保存する。これらは、後のステップS31,S34において自己節点が発火するか否かの判定に使用される。
(2)位相状態値の進行
次に、ステップS12において、実部節点ユニット7及び虚部節点ユニット8の位相進行手段62は、自己の位相状態値保持手段61に保持された位相状態値θi,j r,θi,j iをωだけ進行させる。すなわち、θi,j r←θi,j r+ω,θi,j i←θi,j i+ωの演算を実行する。これは、式(18a),(18b)の位相進行項(右辺第3項)の演算に相当する。
(3)更新演算及び発火処理
次に、以下の(3−1)〜(3−11)の処理が並列に実行される。
(3−1)自己更新演算
ステップS13において、実部節点ユニット7及び虚部節点ユニット8の位相更新手段65は、全体制御部5から入力される自己更新トリガg0が真値(True)であるか否かを判定する。自己更新トリガg0が真値(True)の場合には、ステップS14において、位相状態値θi,j r,θi,j iに、それぞれ、−G0θi,j r,−G0θi,j iを加えて更新をし、次のステップS15に移行する。これは、式(18c),(18d)の累算括弧内の自己更新項(右辺括弧内第1項)の演算に相当する。また、自己更新トリガg0が偽値(False)の場合には、自己更新は行わず、次のステップS37,S39に移行する。
(3−2)左隣接節点の実部の発火による更新演算
ステップS15において、実部節点ユニット7及び虚部節点ユニット8の位相更新手段65は、左側の隣接節点ユニットUi-1,jから入力される更新トリガR_leftが真値(True)であるか否かを判定する。更新トリガR_leftが真値(True)の場合には、ステップS16において、位相状態値θi,j r,θi,j iに、それぞれ、−G1xθi,j r,−G2xθi,j iを加えて更新をし、次のステップS17に移行する。これは、式(18c)の累算括弧内の右辺第2項の更新項及び式(18d)の累算括弧内の右辺第6項の更新項の演算に相当する。また、更新トリガR_leftが偽値(False)の場合には、自己更新は行わず、次のステップS37,S39に移行する。
(3−3)右隣接節点の実部の発火による更新演算
ステップS17において、実部節点ユニット7及び虚部節点ユニット8の位相更新手段65は、右側の隣接節点ユニットUi+1,jから入力される更新トリガR_rightが真値(True)であるか否かを判定する。更新トリガR_rightが真値(True)の場合には、ステップS18において、位相状態値θi,j r,θi,j iに、それぞれ、−G1xθi,j r,+G2xθi,j iを加えて更新をし、次のステップS19に移行する。これは、式(18c)の累算括弧内の右辺第3項の更新項及び式(18d)の累算括弧内の右辺第7項の更新項の演算に相当する。また、更新トリガR_rightが偽値(False)の場合には、自己更新は行わず、次のステップS37,S39に移行する。
(3−4)上隣接節点の実部の発火による更新演算
ステップS19において、実部節点ユニット7及び虚部節点ユニット8の位相更新手段65は、上側の隣接節点ユニットUi,j-1から入力される更新トリガR_topが真値(True)であるか否かを判定する。更新トリガR_topが真値(True)の場合には、ステップS20において、位相状態値θi,j r,θi,j iに、それぞれ、−G1yθi,j r,+G2yθi,j iを加えて更新をし、次のステップS21に移行する。これは、式(18c)の累算括弧内の右辺第4項の更新項及び式(18d)の累算括弧内の右辺第8項の更新項の演算に相当する。また、更新トリガR_topが偽値(False)の場合には、自己更新は行わず、次のステップS37,S39に移行する。
(3−5)下隣接節点の実部の発火による更新演算
ステップS21において、実部節点ユニット7及び虚部節点ユニット8の位相更新手段65は、下側の隣接節点ユニットUi,j+1から入力される更新トリガR_bottomが真値(True)であるか否かを判定する。更新トリガR_bottomが真値(True)の場合には、ステップS22において、位相状態値θi,j r,θi,j iに、それぞれ、−G1yθi,j r,−G2yθi,j iを加えて更新をし、次のステップS23に移行する。これは、式(18c)の累算括弧内の右辺第5項の更新項及び式(18d)の累算括弧内の右辺第9項の更新項の演算に相当する。また、更新トリガR_bottomが偽値(False)の場合には、自己更新は行わず、次のステップS37,S39に移行する。
(3−6)左隣接節点の虚部の発火による更新演算
ステップS23において、実部節点ユニット7及び虚部節点ユニット8の位相更新手段65は、左側の隣接節点ユニットUi-1,jから入力される更新トリガI_leftが真値(True)であるか否かを判定する。更新トリガI_leftが真値(True)の場合には、ステップS24において、位相状態値θi,j r,θi,j iに、それぞれ、+G2xθi,j r,−G1xθi,j iを加えて更新をし、次のステップS25に移行する。これは、式(18c)の累算括弧内の右辺第6項の更新項及び式(18d)の累算括弧内の右辺第2項の更新項の演算に相当する。また、更新トリガI_leftが偽値(False)の場合には、自己更新は行わず、次のステップS37,S39に移行する。
(3−7)右隣接節点の虚部の発火による更新演算
ステップS25において、実部節点ユニット7及び虚部節点ユニット8の位相更新手段65は、右側の隣接節点ユニットUi+1,jから入力される更新トリガI_rightが真値(True)であるか否かを判定する。更新トリガI_rightが真値(True)の場合には、ステップS26において、位相状態値θi,j r,θi,j iに、それぞれ、−G2xθi,j r,−G1xθi,j iを加えて更新をし、次のステップS27に移行する。これは、式(18c)の累算括弧内の右辺第7項の更新項及び式(18d)の累算括弧内の右辺第3項の更新項の演算に相当する。また、更新トリガI_rightが偽値(False)の場合には、自己更新は行わず、次のステップS37,S39に移行する。
(3−8)上隣接節点の虚部の発火による更新演算
ステップS27において、実部節点ユニット7及び虚部節点ユニット8の位相更新手段65は、上側の隣接節点ユニットUi,j-1から入力される更新トリガI_topが真値(True)であるか否かを判定する。更新トリガI_topが真値(True)の場合には、ステップS28において、位相状態値θi,j r,θi,j iに、それぞれ、−G2yθi,j r,−Giyθi,j iを加えて更新をし、次のステップS29に移行する。これは、式(18c)の累算括弧内の右辺第8項の更新項及び式(18d)の累算括弧内の右辺第4項の更新項の演算に相当する。また、更新トリガI_topが偽値(False)の場合には、自己更新は行わず、次のステップS37,S39に移行する。
(3−9)下隣接節点の虚部の発火による更新演算
ステップS29において、実部節点ユニット7及び虚部節点ユニット8の位相更新手段65は、下側の隣接節点ユニットUi,j+1から入力される更新トリガI_bottomが真値(True)であるか否かを判定する。更新トリガI_bottomが真値(True)の場合には、ステップS30において、位相状態値θi,j r,θi,j iに、それぞれ、+G2yθi,j r,−G1yθi,j iを加えて更新をし、次のステップS31に移行する。これは、式(18c)の累算括弧内の右辺第9項の更新項及び式(18d)の累算括弧内の右辺第5項の更新項の演算に相当する。また、更新トリガI_bottomが偽値(False)の場合には、自己更新は行わず、次のステップS37,S39に移行する。
(3−10)実部の自己発火の判定と更新パルスの出力
ステップS31において、実部節点ユニット7のトリガ発生手段64は、自己の位相状態値θi,j rが零位相状態値θmiddleを過ぎったか否かを判定する。すなわち、前時刻の位相状態値θi,j r(0)が零位相状態値θmiddleより小さく、現時刻の位相状態値θi,j rが零位相状態値θmiddle以上であるか否かを判定する。零位相状態値θmiddleを過ぎった場合には、ステップS32において、トリガ発生手段64は、左右上下に隣接する隣接節点ユニットUi-1,j,Ui+1,j,Ui,j-1,Ui,j+1に対して、更新トリガR_OUT_left,R_OUT_right,R_OUT_top,R_OUT_bottomを出力し(これらの値をTrueとし)、次のステップS34に移行する。一方、位相状態値θi,j rが零位相状態値θmiddleを過ぎっていない場合には、ステップS33において、更新トリガR_OUT_left,R_OUT_right,R_OUT_top,R_OUT_bottomの値をFalseとし、次のステップS37,S39に移行する。
(3−11)虚部の自己発火の判定と更新パルスの出力
ステップS34において、虚部節点ユニット8のトリガ発生手段64は、自己の位相状態値θi,j iが零位相状態値θmiddleを過ぎったか否かを判定する。すなわち、前時刻の位相状態値θi,j i(0)が零位相状態値θmiddleより小さく、現時刻の位相状態値θi,j iが零位相状態値θmiddle以上であるか否かを判定する。零位相状態値θmiddleを過ぎった場合には、ステップS35において、トリガ発生手段64は、左右上下に隣接する隣接節点ユニットUi-1,j,Ui+1,j,Ui,j-1,Ui,j+1に対して、更新トリガI_OUT_left,I_OUT_right,I_OUT_top,I_OUT_bottomを出力し(これらの値をTrueとし)、次のステップS37に移行する。一方、位相状態値θi,j iが零位相状態値θmiddleを過ぎっていない場合には、ステップS36において、更新トリガI_OUT_left,I_OUT_right,I_OUT_top,I_OUT_bottomの値をFalseとし、次のステップS37,S39に移行する。
(4)状態値のリセット処理
次に、以下の(4−1),(4−2)の処理が並列に実行される。
(4−1)実部位相状態値のリセット
ステップS37において、実部節点ユニット7の位相復位手段63は、自己の位相状態値θi,j rが最大値θmaxを越えたか否かを検査し、θi,j r>θmaxの場合には、ステップS38において、θi,j rをリセットして(尚、この場合、発火更新に伴う位相ずれ量も保存するため、θi,j r=θminではなくθi,j r=θi,j r−(θmax−θmin)としてある)、次のステップS39に移行し、そうでない場合にはそのまま位相状態値の更新処理を終了する。
(4−2)虚部位相状態値のリセット
ステップS39において、虚部節点ユニット8の位相復位手段63は、自己の位相状態値θi,j iが最大値θmaxを越えたか否かを検査し、θi,j i>θmaxの場合には、ステップS40において、θi,j iをリセットして(尚、この場合、発火更新に伴う位相ずれ量も保存するため、θi,j i=θminではなくθi,j i=θi,j i−(θmax−θmin)としてある)、位相状態値の更新処理を終了し、そうでない場合にはそのまま位相状態値の更新処理を終了する。
以上のような動作により、本実施例5の情報処理装置は、式(18a)〜(18d)に示したようなガボール型フィルタ演算を実行することができる。
尚、本実施例5の情報処理装置は、デジタル回路で構成されるため、回路そのものとして構成することもできるが、プログラマブル論理デバイス(PLD)の再構成プログラムとして提供し、このプログラムに基づきPLDを再構成することにより構成することも可能である。
実施例6では、本発明に係る情報処理装置を、ガボール型フィルタ以外のセルラー構造ネットワーク演算に適用した例について説明する。ここでは、一例として、大局的画像領域分割(coarse image region segmentation)を行うための領域ベース結合マルコフ確率場モデル(region-based coupled Markov Random Field model:以下「領域ベース結合MRFモデル」という。)を実現するフィルタに適用した例を示す。
〔1〕領域ベース結合MRFモデル
最初に、領域ベース結合MRFモデルについて簡単に説明する。従来、大局的画像領域分割を行う画像処理モデルとして、結合MRFモデルが提案されている(非特許文献4参照)。結合MRFモデルでは、画素に対応する素子間の相互作用を適応的に変化させることにより、画像の平滑化とエッジ強調とを同時に行うことができる。素子間の相互作用は隠れ変数(hidden variable)によって決定される。
領域ベース結合MRFモデルでは、隠れ変数はラベル過程(label process)として表される。各ラベルは画素に1対1対応しており、ラベルそのもので領域を取り出すことができる。しかしながら、領域ベースモデルは、収束の過程で局所平衡状態に陥りやすいという欠点がある。そこで、この問題を克服するため、隠れ変数に位相を導入したモデルが提案されている(非特許文献4,93頁)。
図34は、1次元の領域ベース結合MRFのニューラル・ネットワーク・モデルを示す図である。領域ベース結合MRFモデルは、図34に示すように、強度過程(intensity process)とラベル過程(label process)とが相互に結合した構造を採用している。そして、相互作用は、隣接ピクセルとの状態値の差を用いて表現される。
領域ベース結合MRFモデルにおけるエネルギー関数(コスト関数)E(f,φ|d)は、次式のように定義される(非特許文献4,5参照)。
ここで、di(i=1,…,N:Nは画素数)はi段目の節点(画素)の入力値である。強度値fiはdiに対応する推定値であり、「強度過程」と呼ばれる。位相変数φiはi段目の節点(画素)に対応する隠れ変数としての位相(スパイク・ニューロン回路20における「位相」との用語の混乱を避けるため、以下では「ラベル位相」とよぶ。)であり、「ラベル過程」と呼ばれる。領域ベース結合MRFモデルでは、φiは強度過程fiの領域を表す。このラベル位相変数φiは、対応する強度値fi及び隣接節点のラベル位相変数φjと互いに制御し合う。λ,Jは、それぞれ式(19a)の右辺第2項,第3項の影響を調整するためのパラメータ(定数)である。なお、式(19a)のiに関する和は画像内のすべての画素に対してとられ、jに関する和は注目画素iに隣接するすべての画素に対してとられる。
式(19a)の第1項は、データフィッティング項を表し、fiをdiに近づけるように作用する項である。第2項は強度過程の滑らかさを表す項である。この第2項は、隣接する節点は同じ強度値をとる傾向(滑らかさ)があるという経験的仮定に基づいて導入されている。滑らかさは、ラベル位相差Δφj,iにより制御される。Δφj,iが0近傍のとき、注目画素と隣接画素は同一の領域にあることを表し、第2項(滑らかさの拘束条件)は有効となる。従って、同一の領域内では強度変化は滑らかとなる方向に制御される。一方、Δφj,iがπ近傍のとき、注目画素と隣接画素は異なる領域にあることを表し、第2項(滑らかさの拘束条件)は無効となる。従って、異なる領域では強度変化は不連続となる方向に制御される。第3項は、ラベル位相変数φjがcos(Δφj,i)=-1となるのを抑制する項である。この第3項は、画像内には領域がそれほど多くは存在しないという経験的仮定に基づいて導入されている。ラベル過程における領域数は、第3項によって増大が抑制される。
式(19a)のエネルギー関数E(f,φ|d)が最小となるような{fi,φj}の組み合わせが求めるべき推定値である。そこで、この推定値{fi,φj}を、最急降下法を用いて逐次的に求める。この場合、(fi,φj)の更新式は次のようになる。
ここで、ε
f,ε
φは更新定数であり、適当な微小値に設定される。
このモデルの大局的領域分割としての性能を向上させるため、および回路化に適したものとするために、非特許文献6に従って近似を行うと、(fi,φj)の更新式(20a),(20b)は、次式(21a),(21b)のように表される。
ここで、hf,hφは更新量を調整するための定数である。関数A(Δfj,i)は次式(22a)で表され、関数B(Δfj,i)は次式(22b)により表される。図35(a),(b)に関数A(Δfj,i),B(Δfj,i)を示す。
ここで、Qは、平滑化とエッジ強調とを切り替える閾値を決める制御パラメータであり、√(2J/λ)の代わりに導入したものである。
また、関数S(Δφj,i)は式(23a)で表され、関数C(Δφj,i)は式(23b)で表される。図35(c),(d)に関数S(Δφj,i),C(Δφj,i)を示す。
ここで、α,βは更新量が0となる幅を表すパラメータであり、区間α,βは収束点及び発散点の周りに設定される。これにより、更新が収束点を飛び越えて動作が不安定になることが防止される。
以上に説明したような領域ベース結合MRFモデルに基づきセルラー構造ネットワーク演算を行うための装置を、本発明に係る情報処理装置により実現する。そこで、次に、上記式(21a),(21b)を、さらに本発明に係る情報処理装置に基づく回路実装に適した形となるように変形する。
〔2〕スパイク駆動方式セルラー構造ネットワーク回路による演算式
実施例1の場合と同様に、本発明の情報処理装置が採用するスパイク駆動方式セルラー構造ネットワーク回路への実装するために、まず、節点iの状態値(fi,φj)を位相(θ,ξ)の位相差を用いて、次式のように表現する。
ここで、θ0(t),ξ0(t)は周期Tの基準位相であり、式(6b)と同様に次式で表される。
また、θi(t),ξi(t)は、節点iにおける強度過程,ラベル過程の位相である。mod演算による位相のリセットがされない区間(連続区間)において、各節点の位相(θi,ξi)の更新が行われない限り位相差θi(t)−θ0(t),ξi(t)−ξ0(t)は一定値を保つので、当該連続区間内においてはθi(t)−θ0(t),ξi(t)−ξ0(t)は時間シフトに対して不変である。そこで、状態の更新を基準位相の周期Tごとに行うこととし、更新時間を離散化する。θ0(t+T)=θ0(t),ξ0(t+T)=ξ0(t)であることを考慮して、式(21a),(21b)を次式のように書き直す。
さらに、連続区間内において更新時刻はシフト可能であるので、前述のガボール・フィルタの場合と同様(式(9)参照)、更新時刻を非同期化し、ξi(t)=0となる時刻tiξにおいて位相(θi,ξi)の更新を行うこととする。これにより、式(26a),(26b)は次のように書き直される。
さらに、関数A(θj(t)−θi(t)),B(θj(t)−θi(t))の確定時刻は関数C(tiξ),S(tiξ)の確定時刻とは独立に決めることができるので、θi(t)=0となる時刻tiθにおいて関数A(θj(t)−θi(t)),B(θj(t)−θi(t))の値の確定を行うこととする。これにより、式(27a),(27b)は次のように書き直される。
以下、この更新式(28a),(28b)を用いて情報処理装置を具体的に構成する。
〔3〕情報処理装置の構成
〔3−1〕全体構成
本発明の実施例6に係る情報処理装置の全体構成は、図1と同様である。図36は、実施例6のおける節点ユニットネットワーク2の構成を示す図である。図36において、節点ユニット6、ピクセル・アレイ13、列セレクタ14、及びドライバ16については、図2と同様であり、同符号を付して説明は省略する。本実施例の場合、図2の場合と異なり係数G0を入力する必要がないため、ドライバ15が省略された点で図2と相違している。尚、ピクセル・アレイ13の内部構成については、図3と同様の構成である。各節点ユニット6は、図3に示すように、上下左右に隣接する4つの節点ユニット6と互いに結合されている。以下、m行n列目の節点ユニット6を、「節点ユニットUm,n」と呼ぶことにする。
〔3−2〕各節点ユニットの機能構成
具体的な各節点ユニット6の回路構成の説明に入る前に、理解を容易にするために、まず、図36の各節点ユニット6の機能構成について説明する。尚、以下では、2次元の座標を明示する必要がある場合には、節点を特定するインデックスi,jの代わりにインデックス(m,n),(m±1,n±1)を適宜使用する。
式(26b)の関数A(θj−θi)は、図35(a)に示したように偶関数である。従って、A(θj−θi)=A(θi−θj)であるので、A(θj−θi)は、左右に隣接する節点対の何れかで1回、上下に隣接する節点対の何れかで1回計算すれば、その計算値をそれら節点対で共有することができる。同様に、式(26a)の関数B(θj−θi)は、図35(b)に示したように奇関数である。従って、B(θj−θi)=−B(θi−θj)であるので、B(θj−θi)は、左右に隣接する節点対の何れかで1回、上下に隣接する節点対の何れかで1回計算すれば、その計算値をそれら節点対で共有することができる。
また、式(25a)より、θj(t)=0となる時刻tjθを用いて、連続区間内におけるθj(t)は次式のように表される。
従って、関数Aが偶関数であること(図35(a)参照)を考慮すると、式(28b)の関数値A(θj(tiθ))は、次式(30)のように表すことができる。
従って、時刻tiθを基準時刻として、次式(31)のような時間関数A(t)を発生させ、t=tjθの時点でのその関数値をとることによりA(θj(tiθ))を得ることができる。
この操作を、図を用いて説明すると次の通りである。図37(a)は、時間関数A(t)を示す図である。図37では、簡単のため時間tを位相速度ωで規格化して(すなわちω=1として)示してある。例えば、時刻t=tiθを基準時刻として、時刻t=tiθ−T/2のトリガによって時間関数A(t−(tiθ−T/2))の進行を開始する。そして、t=tjθのトリガにより、その時点に於ける関数Aの値A(tjθ−tiθ+T/2)をホールドすれば、この値が関数値A(θj(tiθ))となる。
同様に、式(28a)の関数B(θj(tiθ))も、関数Bが奇関数であること(図35(b)参照)を考慮して次式(32a)により表されるので、時刻tiθを基準として、次式(32b)のような時間関数B(t)を発生させ、t=tjθの時点でのその関数値をとることによりB(θj(tiθ))を得ることができる。式(32b)の時間関数B(t)を図37(b)に示す。
同様に、式(28b)の関数S(ξj(tiθ))は、関数Sが奇関数であること(図35(c)参照)を考慮して次式(33a)により表されるので、ξj(t)=0となる時刻tiξを基準として、次式(33b)のような時間関数S(t)を発生させ、t=tjξの時点でのその関数値をとることによりS(ξj(tiξ))を得ることができる。
式(33b)の時間関数S(t)を図37(c)に示す。尚、式(33b)は定義域を[−T/2≦ω(t−tiξ)≦T/2]としているが、図37(c)は定義域を[0≦t−tiξ≦2T]にシフトしている。また、S(t)の正値部分S+(t)と負値部分S−(t)とに分けて、S(t)=S+(t)−S−(t)とし、図37(c)ではS+(t),S−(t)を示している。
同様に、式(28a)の関数C(ξj(tiθ))は、関数Cが偶関数であること(図35(d)参照)を考慮して次式(34a)により表されるので、時刻tiξを基準として、次式(34b)のような時間関数C(t)を発生させ、t=tjξの時点でのその関数値をとることによりC(ξj(tiξ))を得ることができる。これを、図37(d)に示す。
以上のことを踏まえて、式(28a),(28b)で表される更新演算を実現するための各節点ユニット6を構成した場合の機能構成図を、図38に示す。ここで、図38に示した節点ユニット6に対応する節点の座標は(m,n)であるものとする。
図38において、節点ユニット6は、強度過程節点ユニット7’とラベル過程節点ユニット8’とを備えており、これらは、それぞれ図4の実部節点ユニット7,虚部節点ユニット8に対応している。また、強度過程節点ユニット7’及びラベル過程節点ユニット8’は、それぞれ、スパイク・ニューロン回路20i,20l及び状態値更新回路27i,27lを備えており、これらは図4のスパイク・ニューロン回路20及び状態値更新回路27に対応している。
強度過程節点ユニット7’は、他に、A関数演算回路71a,71b、B関数演算回路72a,72b、及びB・C関数演算回路73a,73b,73c,73dを備えており、状態値更新回路27iは、各B・C関数演算回路73a,73b,73c,73dに対応してパルス更新回路74a,74b,74c,74dを備えている。
ラベル過程節点ユニット8’は、他に、C関数演算回路75、S関数演算回路76、及びA・S関数演算回路77a,77b,77c,77dを備えており、状態値更新回路27lは、各A・S関数演算回路77a,77b,77c,77dに対応してパルス更新回路78a,78b,78c,78dを備えている。
スパイク・ニューロン回路20iは、節点(m,n)の強度過程の位相θm,n(t)を保持するとともに、一定の位相速度ωで式(25a)に従って進行させる。そして、θm,n(t)=0となる時刻tm,nθにスパイク・パルスを出力する。従って、θm,n(t)の更新がなければ、スパイク・ニューロン回路20iは一定の周期Tでスパイク・パルスを出力することになる。スパイク・パルスの時間位置tm,nθは、節点(m,n)の強度過程の状態値(基準位相θ0との位相差)を表す。そして、このスパイク・パルス(tm,nθ)は、隣接する各節点の節点ユニット6に対しても出力される。
スパイク・ニューロン回路20lは、節点(m,n)のラベル過程の位相ξm,n(t)を保持するとともに、一定の位相速度ωで式(25a)に従って進行させる。そして、ξm,n(t)=0となる時刻tm,nξにスパイク・パルスを出力する。従って、ξm,n(t)の更新がなければ、スパイク・ニューロン回路20lは一定の周期Tでスパイク・パルスを出力することになる。スパイク・パルスの時間位置tm,nξは、節点(m,n)のラベル過程の状態値(基準位相ξ0との位相差)を表す。そして、このスパイク・パルス(tm,nξ)は、隣接する各節点の節点ユニット6に対しても出力される。
A関数演算回路71a,71bは、それぞれ、式(28b)の項A(θj(tiθ))を計算する。A関数演算回路71aには、自己節点(m,n)のスパイク・パルス(tm,nθ)と右隣接節点(m+1,n)のスパイク・パルス(tm+1,nθ)が入力され、式(30)によりA(θm+1,n(tm,nθ))が演算されて内部のレジスタに保持されるとともに、A・S関数演算回路77b及び右隣接節点(m+1,n)に対し出力される。A関数演算回路71bには、自己節点(m,n)のスパイク・パルス(tm,nθ)と下隣接節点(m,n+1)のスパイク・パルス(tm,n+1θ)が入力され、式(30)によりA(θm,n+1(tm,nθ))が演算されて内部のレジスタに保持されるとともに、A・S関数演算回路77d及び下隣接節点(m,n+1)に対し出力される。
B関数演算回路72a,72bは、それぞれ、式(28a)の項B(θj(tiθ))を計算する。B関数演算回路72aには、自己節点(m,n)のスパイク・パルス(tm,nθ)と右隣接節点(m+1,n)のスパイク・パルス(tm+1,nθ)が入力され、式(32a)によりB(θm+1,n(tm,nθ))が演算されて内部のレジスタに保持されるとともに、B・C関数演算回路73b及び右隣接節点(m+1,n)に対し出力される。B関数演算回路72bには、自己節点(m,n)のスパイク・パルス(tm,nθ)と下隣接節点(m,n+1)のスパイク・パルス(tm,n+1θ)が入力され、式(32a)によりB(θm,n+1(tm,nθ))が演算されて内部のレジスタに保持されるとともに、B・C関数演算回路73d及び下隣接節点(m,n+1)に対し出力される。
C関数演算回路75は、式(28a)の関数Cを出力する。C関数演算回路75には、自己節点(m,n)のスパイク・パルス(tm,nξ)より半周期前にシフトしたパルス、すなわち、ξm,n(t)のリセット時に発生するリセットパルス(tm,nξ−T/2)が入力される。リセットパルス(tm,nξ−T/2)が入力されると、C関数演算回路75は式(34b)により定義された関数C(ω(t−tm,nξ))をB・C関数演算回路73a,73b,73c,73dに対して出力する。
S関数演算回路76は、式(28b)の関数Sを出力する。S関数演算回路76には、自己節点(m,n)のスパイク・パルス(tm,nξ)及びリセットパルス(tm,nξ−T/2)が入力される。リセットパルス(tm,nξ−T/2)が入力されると、S関数演算回路76は式(33b)により定義された関数S(ω(t−tm,nξ))をA・S関数演算回路77a,77b,77c,77dに対して出力する。
B・C関数演算回路73a,73b,73c,73dは、それぞれ、積B(θm,n-1(tm,nθ))C(ω(t−tm,nξ)),B(θm+1,n(tm,nθ))C(ω(t−tm,nξ)),B(θm-1,n(tm,nθ))C(ω(t−tm,nξ)),B(θm,n+1(tm,nθ))C(ω(t−tm,nξ))を演算し、パルス更新回路74a,74b,74c,74dへ出力する。各B・C関数演算回路73a,73b,73c,73dには、C関数演算回路75から共通に関数C(ω(t−tm,nξ))が入力される。また、B・C関数演算回路73aには、上隣接節点(m,n-1)の節点ユニット6から関数値B(θm,n-1(tm,nθ))が入力され、これと関数C(ω(t−tm,nξ))の積をパルス更新回路74aへ出力する。B・C関数演算回路73bには、自己節点(m,n)のB関数演算回路72aから関数値B(θm+1,n(tm,nθ))が入力され、これと関数C(ω(t−tm,nξ))の積をパルス更新回路74bへ出力する。B・C関数演算回路73cには、左隣接節点(m-1,n)の節点ユニット6から関数値B(θm-1,n(tm,nθ))が入力され、これと関数C(ω(t−tm,nξ))の積をパルス更新回路74cへ出力する。B・C関数演算回路73dには、自己節点(m,n)のB関数演算回路72bから関数値B(θm,n+1(tm,nθ))が入力され、これと関数C(ω(t−tm,nξ))の積をパルス更新回路74dへ出力する。
パルス更新回路74aには、B・C関数演算回路73aから積B(θm,n-1(tm,nθ))C(ω(t−tm,nξ))が入力されるとともに、上隣接節点(m,n-1)の節点ユニット6からスパイク・パルス(tm,n-1ξ)が入力される。これにより、時刻tm,n-1ξにおける関数値B(θm,n-1(tm,nθ))C(ω(tm,n-1ξ−tm,nξ))を算出し、この関数値によりスパイク・ニューロン回路20iの位相θm,n(t)を更新する。すなわち、式(28a)の和の演算を行う。
パルス更新回路74bには、B・C関数演算回路73bから積B(θm+1,n(tm,nθ))C(ω(t−tm,nξ))が入力されるとともに、右隣接節点(m+1,n)の節点ユニット6からスパイク・パルス(tm+1,nξ)が入力される。これにより、時刻tm+1,nξにおける関数値B(θm+1,n(tm,nθ))C(ω(tm+1,nξ−tm,nξ))を算出し、この関数値によりスパイク・ニューロン回路20iの位相θm,n(t)を更新する。すなわち、式(28a)の和の演算を行う。
パルス更新回路74cには、B・C関数演算回路73cから積B(θm-1,n(tm,nθ))C(ω(t−tm,nξ))が入力されるとともに、左隣接節点(m-1,n)の節点ユニット6からスパイク・パルス(tm-1,nξ)が入力される。これにより、時刻tm-1,nξにおける関数値B(θm-1,n(tm,nθ))C(ω(tm-1,nξ−tm,nξ))を算出し、この関数値によりスパイク・ニューロン回路20iの位相θm,n(t)を更新する。すなわち、式(28a)の和の演算を行う。
パルス更新回路74dには、B・C関数演算回路73dから積B(θm,n+1(tm,nθ))C(ω(t−tm,nξ))が入力されるとともに、下隣接節点(m,n+1)の節点ユニット6からスパイク・パルス(tm,n+1ξ)が入力される。これにより、時刻tm,n+1ξにおける関数値B(θm,n+1(tm,nθ))C(ω(tm,n+1ξ−tm,nξ))を算出し、この関数値によりスパイク・ニューロン回路20iの位相θm,n(t)を更新する。すなわち、式(28a)の和の演算を行う。
A・S関数演算回路77a,77b,77c,77dは、それぞれ、積A(θm,n-1(tm,nθ))S(ω(t−tm,nξ)),A(θm+1,n(tm,nθ))S(ω(t−tm,nξ)),A(θm-1,n(tm,nθ))S(ω(t−tm,nξ)),A(θm,n+1(tm,nθ))S(ω(t−tm,nξ))を演算し、パルス更新回路78a,78b,78c,78dへ出力する。各A・S関数演算回路77a,77b,77c,77dには、S関数演算回路76から共通に関数S(ω(t−tm,nξ))が入力される。また、A・S関数演算回路77aには、上隣接節点(m,n-1)の節点ユニット6から関数値A(θm,n-1(tm,nθ))が入力され、これと関数S(ω(t−tm,nξ))の積をパルス更新回路78aへ出力する。A・S関数演算回路77bには、自己節点(m,n)のA関数演算回路71aから関数値A(θm+1,n(tm,nθ))が入力され、これと関数S(ω(t−tm,nξ))の積をパルス更新回路78bへ出力する。A・S関数演算回路77cには、左隣接節点(m-1,n)の節点ユニット6から関数値A(θm-1,n(tm,nθ))が入力され、これと関数S(ω(t−tm,nξ))の積をパルス更新回路78cへ出力する。A・S関数演算回路77dには、自己節点(m,n)のA関数演算回路71bから関数値A(θm,n+1(tm,nθ))が入力され、これと関数S(ω(t−tm,nξ))の積をパルス更新回路78dへ出力する。
パルス更新回路78aには、A・S関数演算回路77aから積A(θm,n-1(tm,nθ))S(ω(t−tm,nξ))が入力されるとともに、上隣接節点(m,n-1)の節点ユニット6からスパイク・パルス(tm,n-1ξ)が入力される。これにより、時刻tm,n-1ξにおける関数値A(θm,n-1(tm,nθ))S(ω(tm,n-1ξ−tm,nξ))を算出し、この関数値によりスパイク・ニューロン回路20lの位相ξm,n(t)を更新する。すなわち、式(28b)の和の演算を行う。
パルス更新回路78bには、A・S関数演算回路77bから積A(θm+1,n(tm,nθ))S(ω(t−tm,nξ))が入力されるとともに、右隣接節点(m+1,n)の節点ユニット6からスパイク・パルス(tm+1,nξ)が入力される。これにより、時刻tm+1,nξにおける関数値A(θm+1,n(tm,nθ))S(ω(tm+1,nξ−tm,nξ))を算出し、この関数値によりスパイク・ニューロン回路20lの位相ξm,n(t)を更新する。すなわち、式(28b)の和の演算を行う。
パルス更新回路78cには、A・S関数演算回路77cから積A(θm-1,n(tm,nθ))S(ω(t−tm,nξ))が入力されるとともに、左隣接節点(m-1,n)の節点ユニット6からスパイク・パルス(tm-1,nξ)が入力される。これにより、時刻tm-1,nξにおける関数値A(θm-1,n(tm,nθ))S(ω(tm-1,nξ−tm,nξ))を算出し、この関数値によりスパイク・ニューロン回路20lの位相ξm,n(t)を更新する。すなわち、式(28b)の和の演算を行う。
パルス更新回路78dには、A・S関数演算回路77dから積A(θm,n+1(tm,nθ))S(ω(t−tm,nξ))が入力されるとともに、下隣接節点(m,n+1)の節点ユニット6からスパイク・パルス(tm,n+1ξ)が入力される。これにより、時刻tm,n+1ξにおける関数値A(θm,n+1(tm,nθ))S(ω(tm,n+1ξ−tm,nξ))を算出し、この関数値によりスパイク・ニューロン回路20lの位相ξm,n(t)を更新する。すなわち、式(28b)の和の演算を行う。
以上のようにして、節点ユニット6における式(28a),(28b)の更新演算が実行される。次に、図38を具体的に回路により構成した例について説明する。
〔3−3〕各節点ユニット6の回路構成
図39は、図38の節点ユニット6の回路ブロック図である。図39において、列選択信号線9、及び初期値入力線10については、図4と同様であり、説明は省略する。また、強度過程節点ユニット7’及びラベル過程節点ユニット8’は、それぞれ図38の同符号の構成部分に対応している。本実施例に於ける節点ユニット6は、強度過程節点ユニット7’が図4の実部節点ユニット7に対応し、ラベル過程節点ユニット8’が図4の虚部節点ユニット8に対応しており、これらに対応して、図4の実部外部出力線11に対応する実部外部出力線11’、及び図4の虚部外部出力線12に対応するラベル過程外部出力線12’を備えている。
本実施例においては、各節点ユニットUm,nには、隣接する各節点ユニットUm',n'(m'=m-1,m+1; n'=n-1,n+1)から、表3のようなパルスが入力される。表3において、「隣接節点方位」欄は、注目する節点ユニットUm,nに対し信号を出力する隣接節点ユニットUm',n'の方位(節点ユニットUm,nから見た方位)である。例えば、「上」は隣接節点ユニットUm-1,nを指す。「隣接節点種類」欄は、信号を出力する隣接節点ユニットUm',n'の種類(「強度過程節点ユニット7’」又は「ラベル過程節点ユニット8’」)を表す。
また、各節点ユニットUm,nからは、隣接する各節点ユニットUm',n'(m'=m-1,m+1; n'=n-1,n+1)に対し、表4のようなパルスが出力される。
さらに、各節点ユニットUm,nでは、その内部の強度過程節点ユニット7’とラベル過程節点ユニット8’との間で、表5のようなパルスの入出力が行われる。
ここで、表3〜表5の各パルスの記号法について説明すると、「A」,「B」は、それぞれ、式(22a),(22b)の関数A(Δfn,m),B(Δfn,m)の演算結果に対応するパルスであることを意味する。「C」は、式(23b)の関数C(Δφn,m)の演算結果に対応するパルスであることを意味する。「Spike」はスパイク・パルスであることを意味し、「Comp」はスパイク・パルスに変換されていないコンパレータ出力(発火終了信号)であることを意味する。「left」,「right」,「top」,「bottom」はトリガパルスが入力される隣接方向を表す。「int」,「label」は、それぞれ、強度過程節点ユニット7’の出力f,ラベル過程節点ユニット8’の出力φであることを表す。
〔3−4〕強度過程節点ユニット7’の回路構成
図40は、強度過程節点ユニット7’の内部構成を表すブロック図である。図40において、列選択信号線9、初期値入力線10、強度過程外部出力線11’は、図36の同符号のものにそれぞれ対応している。また、図40の回路の構成部分において、図38の構成部分と対応するものについては、同符号が付されている。
この強度過程節点ユニット7’は、スパイク・ニューロン回路20i、状態値更新回路27i、2つのA関数演算回路71a,71b、2つのB関数演算回路72a,72b、4つのB・C関数演算回路73a,73b,73c,73d、及び列選択スイッチ28,29を備えている。また、状態値更新回路27iは、B・C関数演算回路73a,73b,73c,73dのそれぞれに1対1対応して、パルス更新回路74a,74b,74c,74dを備えている。
ここで、列選択スイッチ28,29は、図5の同符号のものに対応している。また、スパイク・ニューロン回路20i、状態値更新回路27iは、それぞれ、図5のスパイク・ニューロン回路20、状態値更新回路27に相当するものである。
実施例1の場合と同様、スパイク・ニューロン回路20iは、強度過程節点ユニット7’に固有の位相状態値を保持する位相状態値保持手段として機能するとともに、位相状態値保持手段が保持する位相状態値を一定の位相速度ωで経時的に変化させる位相進行手段、位相状態値保持手段が保持する位相状態値が最大位相状態値に達したときに、位相状態値を最小位相状態値にリセットする位相復位手段、及び位相状態値が零位相状態値を過ぎたときに発火して更新トリガを出力するトリガ発生手段として機能する。
後述するように、スパイク・ニューロン回路20iは、内部に位相状態値保持用キャパシタC0を備え、節点(m,n)の強度過程に於ける位相θm,n(t)を電荷量Q0(t)=C0Vf(t)として保持する。従って位相θm,n(t)の値は、位相状態値保持用キャパシタC0の端子間電圧Vf(t)として取り出される。定常状態においては、位相θm,n(t)は一定の位相速度ωで式(25a)に従って常時進行するように構成されている。
スパイク・ニューロン回路20iには、列選択スイッチ28を介して初期値入力線10から強度の初期値が入力される。列選択スイッチ28は、列選択信号column_selectorがHレベルのときに閉路し、強度値f(m,n)の初期値d(m,n)(画素値)がPWM信号としてスパイク・ニューロン回路20iへ入力される。また、スパイク・ニューロン回路20iの位相状態値保持用キャパシタC0には、各パルス更新回路74a,74b,74c,74dが出力する状態値更新電流が入力される。
スパイク・ニューロン回路20iは、位相θm,n(t)が0を過ぎったときに発火する。スパイク・ニューロン回路20iは、発火したときにスパイク・パルスspike_intを出力し、このスパイク・パルスspike_intは左側及び上側に隣接する節点ユニットUm-1,n,Um,n-1へ出力される(図38,図39,表4参照)とともに、各A関数演算回路71a,71b及び各B関数演算回路72a,72bへ入力される。また、このスパイク・パルスspike_intは、セルラー構造ネットワーク演算が終了したときに、列選択スイッチ29を介して強度過程外部出力線11’へ出力される。列選択スイッチ29は、列選択信号column_selectorがHレベルのときに閉路し、スパイク・パルスspike_intが強度過程外部出力線11’へ出力される。
また、スパイク・ニューロン回路20iは、位相θm,n(t)が0以上のときにHレベルとなり、0未満のときにLレベルとなる発火終了信号comp_intを出力する。この発火終了信号comp_intは、上側及び左側に隣接する節点ユニットUm,n-1,Um-1,nへ出力されるとともに(図38,図39,表4参照)、各A関数演算回路71a,71b及び各B関数演算回路72a,72bへ入力される。
A関数演算回路71a,71bは、式(30),(31)に示した時間関数A(t)の関数値A(θm+1,n(tm,nθ)),A(θm,n+1(tm,nθ))を演算するとともにその演算値を保持する回路である。A関数演算回路71a,71bには、ともにスパイク・ニューロン回路20が出力するスパイク・パルスspike_int及び発火終了信号comp_intが入力される。また、A関数演算回路71aには、右隣接の節点ユニットUm+1,nが出力するスパイク・パルスspike_int_right(tm+1,nθ)及び発火終了信号comp_int_rightが入力され、A関数演算回路71bには、下隣接の節点ユニットUm,n+1が出力するスパイク・パルスspike_int_bottom(tm,n+1θ)及び発火終了信号comp_int_bottomが入力される。A関数演算回路71aは、自己節点ユニットUm,nの発火終了信号comp_intをトリガとして式(31)の時間関数A(t)を発生させ(この場合、図37(a)の波形の時刻t=tiθからスタートする)、スパイク・パルスspike_int_rightによって関数値A(θm+1,n(tm,nθ))を表す電圧A_rightをホールドするとともに、これを右隣接の節点ユニットUm+1,nに対して出力する。A関数演算回路71bは、自己節点ユニットUm,nの発火終了信号comp_intをトリガとして式(31)の時間関数A(t)を発生させ、スパイク・パルスspike_int_bottomによって関数値A(θm,n+1(tm,nθ))を表す電圧A_bottomをホールドするとともに、これを下隣接の節点ユニットUm,n+1に対して出力する。
B関数演算回路72a,72bは、式(32a),(32b)に示した時間関数B(t)の関数値B(θm+1,n(tm,nθ)),B(θm,n+1(tm,nθ))を演算するとともにその演算値を保持する回路である。B関数演算回路72a,72bには、ともにスパイク・ニューロン回路20が出力するスパイク・パルスspike_int及び発火終了信号comp_intが入力される。また、B関数演算回路72aには、右隣接の節点ユニットUm+1,nが出力するスパイク・パルスspike_int_right(tm+1,nθ)及び発火終了信号comp_int_rightが入力され、B関数演算回路72bには、下隣接の節点ユニットUm,n+1が出力するスパイク・パルスspike_int_bottom(tm,n+1θ)及び発火終了信号comp_int_bottomが入力される。B関数演算回路72aは、自己節点ユニットUm,nの発火終了信号comp_intをトリガとして式(32b)の時間関数B(t)を発生させ(図37(b)参照)、スパイク・パルスspike_int_rightによって関数値B(θm+1,n(tm,nθ))を表す電圧B_rightをホールドするとともに、これを右隣接の節点ユニットUm+1,nに対して出力する。B関数演算回路72bは、自己節点ユニットUm,nの発火終了信号comp_intをトリガとして式(32b)の時間関数B(t)を発生させ、スパイク・パルスspike_int_bottomによって関数値B(θm,n+1(tm,nθ))を表す電圧B_bottomをホールドするとともに、これを下隣接の節点ユニットUm,n+1に対して出力する。
B・C関数演算回路73a,73b,73c,73dは、式(34b)に示した時間関数C(t)と関数値Bとの積を演算する回路である。各B・C関数演算回路73a,73b,73c,73dには、ともに自己節点ユニットUm,nに属するラベル過程節点ユニット8’が出力する時間関数C(t−tm,nξ)が入力される。また、B・C関数演算回路73a,73cには、それぞれ、上側及び左側に隣接する節点ユニットUm,n-1,Um-1,nから入力される関数値B_top(B(θm,n-1(tm,nθ))),B_reft(B(θm-1,n(tm,nθ)))が入力され、B・C関数演算回路73a,73cには、それぞれ、B関数演算回路72a,72bが出力する関数値B_right(B(θm+1,n(tm,nθ))),B_bottom(B(θm,n+1(tm,nθ)))が入力される。時間関数C(t−tm,nξ)は、式(34b)で表される関数(ここでは、ω=1)であり、ラベル過程の位相ξm,n(t)が0となる時刻tiξを基準として、時間とともに図37(d)のように変化する。
B・C関数演算回路73aは、時間変化する積関数C(t-tm,nξ)・B(θm,n-1(tm,nθ))の演算値をパルス更新回路74aに出力する。パルス更新回路74aには、前記積関数C(t-tm,nξ)・B(θm,n-1(tm,nθ))と、上隣接の節点ユニットUm,n-1のラベル過程節点ユニット8’が位相ξm,n-1(t)が0を過ぎる時刻tm,n-1ξに出力するスパイク・パルスspike_label_topとが入力される。パルス更新回路74aは、スパイク・パルスspike_label_topがHレベルの期間にC(tm,n-1ξ-tm,nξ)・B(θm,n-1(tm,nθ))の関数値に比例してスパイク・ニューロン回路20iの位相状態値保持用キャパシタC0に電流を供給し、位相θm,n(t)の更新を行う。
B・C関数演算回路73bは、時間変化する積関数C(t-tm,nξ)・B(θm+1,n(tm,nθ))の演算値をパルス更新回路74bに出力する。パルス更新回路74bには、前記積関数C(t-tm,nξ)・B(θm+1,n(tm,nθ))と、右隣接の節点ユニットUm+1,nのラベル過程節点ユニット8’が位相ξm+1,n(t)が0を過ぎる時刻tm+1,nξに出力するスパイク・パルスspike_label_rightとが入力される。パルス更新回路74bは、スパイク・パルスspike_label_rightがHレベルの期間にC(tm+1,nξ-tm,nξ)・B(θm+1,n(tm,nθ))の関数値に比例してスパイク・ニューロン回路20iの位相状態値保持用キャパシタC0に電流を供給し、位相θm,n(t)の更新を行う。
B・C関数演算回路73cは、時間変化する積関数C(t-tm,nξ)・B(θm-1,n(tm,nθ))の演算値をパルス更新回路74cに出力する。パルス更新回路74cには、前記積関数C(t-tm,nξ)・B(θm-1,n(tm,nθ))と、左隣接の節点ユニットUm-1,nのラベル過程節点ユニット8’が位相ξm-1,n(t)が0を過ぎる時刻tm-1,nξに出力するスパイク・パルスspike_label_leftとが入力される。パルス更新回路74cは、スパイク・パルスspike_label_leftがHレベルの期間にC(tm-1,nξ-tm,nξ)・B(θm-1,n(tm,nθ))の関数値に比例してスパイク・ニューロン回路20iの位相状態値保持用キャパシタC0に電流を供給し、位相θm,n(t)の更新を行う。
B・C関数演算回路73dは、時間変化する積関数C(t-tm,nξ)・B(θm,n+1(tm,nθ))の演算値をパルス更新回路74cに出力する。パルス更新回路74dには、前記積関数C(t-tm,nξ)・B(θm,n+1(tm,nθ))と、下隣接の節点ユニットUm,n+1のラベル過程節点ユニット8’が位相ξm,n+1(t)が0を過ぎる時刻tm,n+1ξに出力するスパイク・パルスspike_label_bottomとが入力される。パルス更新回路74dは、スパイク・パルスspike_label_bottomがHレベルの期間にC(tm,n+1ξ-tm,nξ)・B(θm,n+1(tm,nθ))の関数値に比例してスパイク・ニューロン回路20iの位相状態値保持用キャパシタC0に電流を供給し、位相θm,n(t)の更新を行う。
〔3−5〕ラベル過程節点ユニット8’の回路構成
図41は、ラベル過程節点ユニット8’の内部構成を表すブロック図である。図41において、列選択信号線9、初期値入力線10、ラベル過程外部出力線12’は、図36の同符号のものにそれぞれ対応している。また、図41の回路の構成部分において、図38の構成部分と対応するものについては、同符号が付されている。
このラベル過程節点ユニット8’は、スパイク・ニューロン回路20l、状態値更新回路27l、C関数演算回路75、S関数演算回路76、4つのA・S関数演算回路77a,77b,77c,77d、及び列選択スイッチ28,29を備えている。また、状態値更新回路27lは、A・S関数演算回路77a,77b,77c,77dのそれぞれに1対1対応して、パルス更新回路78a,78b,78c,78dを備えている。
ここで、列選択スイッチ28,29は、図5の同符号のものに対応している。また、スパイク・ニューロン回路20l、状態値更新回路27lは、それぞれ、図5のスパイク・ニューロン回路20、状態値更新回路27に相当するものである。
実施例1の場合と同様、スパイク・ニューロン回路20lは、強度過程節点ユニット7’に固有の位相状態値を保持する位相状態値保持手段として機能するとともに、位相状態値保持手段が保持する位相状態値を一定の位相速度ωで経時的に変化させる位相進行手段、位相状態値保持手段が保持する位相状態値が最大位相状態値に達したときに、位相状態値を最小位相状態値にリセットする位相復位手段、及び位相状態値が零位相状態値を過ぎたときに発火して更新トリガを出力するトリガ発生手段として機能する。
後述するように、スパイク・ニューロン回路20lは、内部に位相状態値保持用キャパシタC0を備え、節点(m,n)のラベル過程に於ける位相ξm,n(t)を電荷量Q0(t)=C0Vp(t)として保持する。従って位相ξm,n(t)の値は、位相状態値保持用キャパシタC0の端子間電圧Vp(t)として取り出される。定常状態においては、位相ξm,n(t)は一定の位相速度ωで式(25a)に従って常時進行するように構成されている。
スパイク・ニューロン回路20lには、列選択スイッチ28を介して初期値入力線10からラベル位相の初期値が入力される。列選択スイッチ28は、列選択信号column_selectorがHレベルのときに閉路し、ラベル値φ(m,n)の初期値πd(m,n)がPWM信号としてスパイク・ニューロン回路20lへ入力される。また、スパイク・ニューロン回路20lの位相状態値保持用キャパシタC0には、各パルス更新回路78a,78b,78c,78dが出力する状態値更新電流が入力される。
スパイク・ニューロン回路20lは、位相ξm,n(t)が0を過ぎったときに発火する。スパイク・ニューロン回路20lは、発火したときにスパイク・パルスspike_labelを出力し、このスパイク・パルスspike_labelは上下左右に隣接する節点ユニットUm,n-1,Um,n+1,Um-1,n,Um+1,nへ出力される(図38,図39,表4参照)とともに、S関数演算回路76へ入力される。また、このスパイク・パルスspike_labelは、セルラー構造ネットワーク演算が終了したときに、列選択スイッチ29を介してラベル過程外部出力線12’へ出力される。列選択スイッチ29は、列選択信号column_selectorがHレベルのときに閉路し、スパイク・パルスspike_labelがラベル過程外部出力線12’へ出力される。
また、スパイク・ニューロン回路20lは、位相ξm,n(t)が0以上のときにHレベルとなり、0未満のときにLレベルとなる発火終了信号comp_labelを出力するとともに、位相ξm,n(t)がリセットされたときにスパイク・パルスspike_label_rstを出力する。発火終了信号comp_labelは、S関数演算回路76へ出力される。スパイク・パルスspike_label_rstは、C関数演算回路75及びS関数演算回路76へ出力される。
C関数演算回路75は、式(34b)に示した時間関数C(t)を強度過程節点ユニット7’の各B・C関数演算回路73a,73b,73c,73dへ出力する。C関数演算回路75は、位相ξm,n(t)がリセットされる時刻tm,nξ−T/2に出力される前記スパイク・パルスspike_label_rstをトリガとして式(34b)の時間関数C(t−tm,nξ)を発生させる(図37(d)参照)。
S関数演算回路76は、式(33b)に示した時間関数S(t)を各A・S関数演算回路77a,77b,77c,77dへ出力する。S関数演算回路76は、位相ξm,n(t)がリセットされる時刻tm,nξ−T/2に出力される前記スパイク・パルスspike_label_rstをトリガとして式(33b)の時間関数S(t−tm,nξ)を発生させる(図37(c)参照)。ここで、時間関数S(t−tm,nξ)は正値と負値とをとるので、S関数演算回路76は、図37(c)のように正値関数S_pと負値関数S_nの2つを出力する。
A・S関数演算回路77a,77b,77c,77dは、式(33b)に示した時間関数S(t)と関数値Aとの積を演算する回路である。各A・S関数演算回路77a,77b,77c,77dには、ともにS関数演算回路76が出力する時間関数S(t−tm,nξ)が入力される。また、A・S関数演算回路77a,77cには、それぞれ、上側及び左側に隣接する節点ユニットUm,n-1,Um-1,nから入力される関数値A_top(A(θm,n-1(tm,nθ))),A_left(A(θm-1,n(tm,nθ)))が入力され、A・S関数演算回路77a,77cには、それぞれ、自己節点ユニットUm,nに属する強度過程節点ユニット7’のA関数演算回路71a,71bが出力する関数値A_right(A(θm+1,n(tm,nθ))),A_bottom(A(θm,n+1(tm,nθ)))が入力される。時間関数S+(t−tm,nξ),S−(t−tm,nξ)は、式(33b)で表される関数(ここでは、ω=1)の正値部分,負値部分であり、ラベル過程の位相ξm,n(t)が0となる時刻tiξを基準として、時間とともに図37(c)のように変化する。
A・S関数演算回路77aは、時間変化する積関数A(θm,n-1(tm,nθ))・S(t-tm,nξ)の演算値をパルス更新回路78aに出力する。パルス更新回路78aには、前記積関数A(θm,n-1(tm,nθ))・S(t-tm,nξ)と、上隣接の節点ユニットUm,n-1のラベル過程節点ユニット8’が位相ξm,n-1(t)が0を過ぎる時刻tm,n-1ξに出力するスパイク・パルスspike_label_topとが入力される。パルス更新回路78aは、スパイク・パルスspike_label_topがHレベルの期間にA(θm,n-1(tm,nθ))・S(tm,n-1ξ-tm,nξ)の関数値に比例してスパイク・ニューロン回路20lの位相状態値保持用キャパシタC0に電流を供給し、位相ξm,n(t)の更新を行う。
A・S関数演算回路77bは、時間変化する積関数A(θm+1,n(tm,nθ))・S(t-tm,nξ)の演算値をパルス更新回路78bに出力する。パルス更新回路78bには、前記積関数A(θm+1,n(tm,nθ))・S(t-tm,nξ)と、右隣接の節点ユニットUm+1,nのラベル過程節点ユニット8’が位相ξm+1,n(t)が0を過ぎる時刻tm+1,nξに出力するスパイク・パルスspike_label_rightとが入力される。パルス更新回路78bは、スパイク・パルスspike_label_rightがHレベルの期間にA(θm+1,n(tm,nθ))・S(tm+1,nξ-tm,nξ)の関数値に比例してスパイク・ニューロン回路20lの位相状態値保持用キャパシタC0に電流を供給し、位相ξm,n(t)の更新を行う。
A・S関数演算回路77cは、時間変化する積関数A(θm-1,n(tm,nθ))・S(t-tm,nξ)の演算値をパルス更新回路78cに出力する。パルス更新回路78cには、前記積関数A(θm-1,n(tm,nθ))・S(t-tm,nξ)と、左隣接の節点ユニットUm-1,nのラベル過程節点ユニット8’が位相ξm-1,n(t)が0を過ぎる時刻tm-1,nξに出力するスパイク・パルスspike_label_leftとが入力される。パルス更新回路78cは、スパイク・パルスspike_label_leftがHレベルの期間にA(θm-1,n(tm,nθ))・S(tm-1,nξ-tm,nξ)の関数値に比例してスパイク・ニューロン回路20lの位相状態値保持用キャパシタC0に電流を供給し、位相ξm,n(t)の更新を行う。
A・S関数演算回路77dは、時間変化する積関数A(θm,n+1(tm,nθ))・S(t-tm,nξ)の演算値をパルス更新回路78dに出力する。パルス更新回路78dには、前記積関数A(θm,n+1(tm,nθ))・S(t-tm,nξ)と、下隣接の節点ユニットUm,n+1のラベル過程節点ユニット8’が位相ξm,n+1(t)が0を過ぎる時刻tm,n+1ξに出力するスパイク・パルスspike_label_bottomとが入力される。パルス更新回路78dは、スパイク・パルスspike_label_bottomがHレベルの期間にA(θm,n+1(tm,nθ))・S(tm,n+1ξ-tm,nξ)の関数値に比例してスパイク・ニューロン回路20lの位相状態値保持用キャパシタC0に電流を供給し、位相ξm,n(t)の更新を行う。
〔3−6〕スパイク・ニューロン回路の回路構成
図42は、ラベル過程節点ユニット8’におけるスパイク・ニューロン回路20lの構成例(a)及びその動作(b)を示す図である。尚、強度過程節点ユニット7’におけるスパイク・ニューロン回路20iも同様の構成である。図42に示したスパイク・ニューロン回路20lは、位相状態値保持用キャパシタC0、2つの電流源I1,I2、2つのコンパレータCMP1,CMP2、2つのトリガパルス生成器PG1,PG2、及び3つのスイッチ回路S1,S2,S3を備えている。
スパイク・ニューロン回路20lの構成及び動作は、基本的に図6に示したスパイク・ニューロン回路20の構成と同様であるため、詳細な説明は省略する。尚、発火終了信号comp_labelは、コンパレータCMP2の出力であり、図42(b)に示したように、位相ξm,n(t)が0となる時刻にHレベルに立ち上がり、位相ξm,n(t)がリセットされる時刻にLレベルに立ち下がる波形となる。
〔3−7〕A関数演算回路71a,71bの回路構成
図43は、A関数演算回路71a,71bの構成例を示す回路図であり、図44は、図43のA関数演算回路71a,71bの動作例を示すタイムチャートである。図35(a)より、関数Aは正値(+1)又は負値(−1)の値をとる。図43の回路では、関数Aの値が正値の状態を出力AがHレベルの状態とし、関数Aの値が負値の状態を出力AがLレベルの状態とする。
図43において、PG1,PG2はパルス生成器、RS−FFはRSフリップ・フロップ、M1はRS−FFのリセット・スイッチであるnMOSFETである。スパイク・パルスspike_int,発火終了信号comp_intは、自己節点ユニットUiのスパイク・ニューロン回路20iが出力するスパイク・パルスspike_int,発火終了信号comp_intである(図40参照)。また、スパイク・パルスspike_int_j及び発火終了信号comp_int_jは、隣接節点ユニットUj(右隣接節点ユニットUm+1,n,下隣接節点ユニットUm,n+1)のスパイク・ニューロン回路20iが出力するスパイク・パルス(spike_int_right,spike_int_bottom)及び発火終了信号(comp_int_right,comp_int_bottom)である(図40参照)。以下、spike_int,comp_intの値をFi,Gi、spike_int_j,comp_int_jの値をFj,Gjと記す。
図44(a)に示したように、スパイク・パルスspike_int,spike_int_jは、節点ユニットUi,Ujの強度過程の位相状態値電圧Vfi,Vfjは零値電圧Vmiddleを過ぎった時点(すなわち、位相θi,θjが0を過ぎった時点)で発生する短時間のパルスである。また、発火終了信号comp_int,comp_int_jは、スパイク・パルスspike_int,spike_int_jが発生した時点でHレベルに立ち上がり、位相状態値電圧Vfi,Vfjが最小値電圧Vlowにリセットされた時点でLレベルに立ち下がる。また、パルス生成器PG1,PG2は、それぞれ、スパイク・パルスspike_int,spike_int_jをトリガとして、パルス幅Q’(=T/2−Q)(図37参照)のパルスQi,Qjを出力する。
図43において、RS−FFのセット入力S及びリセット入力Rは、次式のように表される。
ここで「∧」はAND演算子、「∨」はOR演算子である。
また、パルスQi,Qjは、スパイク・パルスspike_int,spike_int_jの発生時刻tiθ,tjθにHレベルに立ち上がり、時刻tiθ,tjθから時間Q’だけ経過した時点でLレベルに立ち下がる。すなわち、図44(b)に示したように、パルスQi,Qjは時間関数A(t)のt>0の部分となる。
従って、セット入力Sには節点ユニットUi,Ujのうち遅く発火した方の発火時点max(tiθ, tjθ)において、もう一方のパルスQk(k=argmin(tiθ, tiθ))がHレベルのとき(すなわち、max(tiθ, tjθ)−min(tiθ, tjθ)<Q'のとき)にパルスが出力され、RS−FFの出力がHレベルにセットされる。また、セット入力Rには節点ユニットUi,Ujのうち遅く発火した方の発火時点max(tiθ, tjθ)において、もう一方のパルスQk(k=argmin(tiθ, tiθ))がLレベルのとき(すなわち、max(tiθ, tjθ)−min(tiθ, tjθ)>Q'のとき)にパルスが出力され、RS−FFの出力がLレベルにリセットされる。これにより、A(θj(tiθ))(=A(θi(tjθ)))の値が設定され、その値はRS−FFに保持される。
〔3−8〕B関数演算回路72a,72bの回路構成
図45は、B関数演算回路72a,72bの構成例を示す回路図であり、図46は、図45のB関数演算回路72a,72bの動作例を示すタイムチャートである。図35(b)より、関数Bは正値(+1)又は負値(−1)の値をとる。図45の回路では、関数Bの値が正値の状態を出力BがHレベルの状態とし、関数Bの値が負値の状態を出力BがLレベルの状態とする。
図45において、RS−FFはRSフリップ・フロップ、M1はRS−FFのリセット・スイッチであるnMOSFETである。
スパイク・パルスspike_int,spike_int_j及び発火終了信号comp_int,comp_int_jは、図43,図44の同符号のものと同様である。また、図43,図44と同様に、spike_int,comp_intの値をFi,Gi、spike_int_j,comp_int_jの値をFj,Gjと記す。
図45において、RS−FFのセット入力S及びリセット入力Rは、次式のように表される。
従って、節点ユニットUiの発火時刻が節点ユニットUjの発火時刻よりも遅い場合、セット入力Sには、節点ユニットUi,Ujの発火時刻tiθ,tjθにスパイク・パルスが出力される。従って、最初のスパイク・パルスの時刻tjθにRS−FFの出力がHレベルにセットされる。逆に、節点ユニットUiの発火時刻が節点ユニットUjの発火時刻よりも早い場合、セット入力Rには、節点ユニットUi,Ujの発火時刻tiθ,tjθにスパイク・パルスが出力される。従って、最初のスパイク・パルスの時刻tiθにRS−FFの出力がLレベルにリセットされる。すなわち、発火時刻tiθ,tjθとRS−FFの出力の関係は図46(b),(c)に示したようになるので、RS−FFにはB(θj(tiθ))(=B(θi(tjθ)))の値が設定され、その値はRS−FFに保持される。
〔3−9〕C関数演算回路75及びS関数演算回路76の回路構成
図47は、C関数演算回路75及びS関数演算回路76の構成例を示す回路図であり、図48は、図47のC関数演算回路75及びS関数演算回路76の動作例を示すタイムチャートである。
図47において、スパイク・パルスspike_label_rstは、自己節点ユニットUiのスパイク・ニューロン回路20lの位相状態値電圧Vp(t)(位相ξi(t))がリセットされた時刻に出力されるスパイク・パルスである。スパイク・パルスspike_labelは、位相状態値電圧Vp(t)が零値電圧Vmiddleを過ぎったときに出力されるスパイク・パルスである。また、パルスcomp_labelは、位相状態値電圧Vp(t)が零値電圧Vmiddleより小さいときにLレベル、大きいときにHレベルとなる。
パルス生成器PG1は、入力されるスパイク・パルスが立ち上がったときに、時間幅βのパルスを出力する。パルス生成器PG2,PG3は、入力されるスパイク・パルスが立ち上がったときに、時間幅αのパルスを出力する。
この回路により、C関数演算回路75は、図48のように、位相状態値電圧Vp(t)(位相ξi(t))がリセットされた時刻を起点として時間βだけHレベルとなり、その後Lレベルに立ち下がる。従って、C関数演算回路75からは、図37(d)の時間関数C(t−tiξ)の反転値(負論理値)が出力される。
また、S関数演算回路76は、図48のように、出力S_pは、位相状態値電圧Vp(t)が零値電圧Vmiddleを過ぎった時刻を起点として時間αだけ遅延しHレベルとなり、その後Lレベルに立ち下がる。また、出力S_nは、位相状態値電圧Vp(t)がリセットされた時刻を起点として時間αだけ遅延しHレベルとなり、その後Lレベルに立ち下がる。これにより、S関数演算回路76からは、図37(c)に示したような時間関数S(t−tiξ)が出力される。
〔3−10〕A・S関数演算回路の回路構成
図49は、図41のA・S関数演算回路77(A・S関数演算回路77a,77b,77c,77d)の回路構成を示す図である。入力信号は、A,S_p,S_nの3つである。入力信号Aは、関数値A(θj(tiθ))が正値(+1)のときにHレベル、関数値A(θj(tiθ))が負値(−1)のときにLレベルとなる。また、時間関数S(t-tiξ)が正値(+1)のときには入力信号S_pがHレベルとなり、時間関数S(t-tiξ)が負値(−1)のときには入力信号S_nがHレベルとなる。このA・S関数演算回路77は、入力信号A,S_p,S_nに対し、次式のような出力信号update_p,update_nを生成し、パルス更新回路78a,78b,78c,78dに出力する。尚、update_pは負論理(Lアクティブ)の信号である。
出力信号update_pはA(θj(tiθ))・S(tjξ-tiξ)が正値(+1)をとる場合にアサートされる(Lレベルとなる)。また、出力信号update_nはA(θj(tiθ))・S(tjξ-tiξ)が負値(−1)をとる場合にアサートされる(Hレベルとなる)。
〔3−11〕B・C関数演算回路の回路構成
図50は、図40のB・C関数演算回路73(B・C関数演算回路73a,73b,73c,73d)の回路構成を示す図である。入力信号は、B,Cの2つである。
入力信号Bは、関数値B(θj(tiθ))が正値(+1)のときにHレベル、関数値B(θj(tiθ))が負値(−1)のときにLレベルとなる。また、入力信号Cは負論理信号であり、時間関数C(t-tiξ)が正値(+1)のときにはLレベル、時間関数C(t-tiξ)が0値のときにはHレベルとなる。このB・C関数演算回路73は、入力信号B,Cに対し、次式のような出力信号update_p,update_nを生成し、パルス更新回路74a,74b,74c,74dに出力する。尚、update_pは負論理(Lアクティブ)の信号である。
出力信号update_pはB(θj(tiθ))・C(tjξ-tiξ)が正値(+1)をとる場合にアサートされる(Lレベルとなる)。また、出力信号update_nはB(θj(tiθ))・C(tjξ-tiξ)が負値(−1)をとる場合にアサートされる(Hレベルとなる)。
〔3−12〕パルス更新回路の回路構成
図51は、図40のパルス更新回路74(パルス更新回路74a,74b,74c,74d)及び図41のパルス更新回路78(パルス更新回路78a,78b,78c,78d)の構成例を示す回路図である。
パルス更新回路74,78の入力信号は、spike_label_j,update_p,update_n,hf_p(又はhp_p),hf_n(又はhp_n)の5つである。入力信号spike_label_jは、図40,図41のspike_label_top,spike_label_bottom,spike_label_left,spike_label_rightの何れかを表す。また、入力信号update_p,update_nは、図49又は図50のupdate_p,update_nに対応する。入力信号hf_p,hf_n(又はhp_p,hp_n)は、更新式(28a)(又は更新式(28b))の更新係数hf/4(又はhφπ/4)の大きさに比例する電圧信号である。
パルス更新回路74,78は、3つのpMOSFET M1,M2,M3、3つのnMOSFET M4,M5,M6、及びインバータINV1を備えており、pMOSFET M1,M2,M3及びnMOSFET M4,M5,M6は、電源と接地面との間にこの順で直列接続されている。そして、pMOSFET M3のドレインとnMOSFET M4のドレインとの共通接続ノードn1が出力ノードであり、ノードn1はスパイク・ニューロン回路20i,20lの位相状態値保持用キャパシタC0に接続されている。
nMOSFET M6のゲートには、入力信号spike_label_jが入力され、pMOSFET M1のゲートにはインバータINV1を介して入力信号spike_label_jの反転値が入力される。従って、M6,M1は入力信号spike_label_jがHレベルのときにオン状態となるスイッチである。
pMOSFET M2のゲートには、負論理入力信号update_pが入力される。従って、M2は、B(θj(tiθ))・C(tjξ-tiξ)又はA(θj(tiθ))・S(tjξ-tiξ)が正値(+1)をとるときにオン状態となるスイッチである。
nMOSFET M5のゲートには、正論理入力信号update_nが入力される。従って、M5は、B(θj(tiθ))・C(tjξ-tiξ)又はA(θj(tiθ))・S(tjξ-tiξ)が負値(−1)をとるときにオン状態となるスイッチである。
pMOSFET M3は線形領域で動作し、そのゲートには係数信号hf_p(又はhp_p)が入力される。また、nMOSFET M4は線形領域で動作し、そのゲートには係数信号hf_n(又はhp_n)が入力される。従って、B(θj(tiθ))・C(tjξ-tiξ)(又はA(θj(tiθ))・S(tjξ-tiξ))が正値のときには出力ノードn1にhf/4(又はhφπ/4)に比例した電流が流入し、B(θj(tiθ))・C(tjξ-tiξ)(又はA(θj(tiθ))・S(tjξ-tiξ))が負値のときには出力ノードn1からhf/4(又はhφπ/4)に比例した電流が流出する。これにより、更新式(28a),(28b)の更新が行われる。
〔4〕全体の動作
図52に、本実施例の情報処理装置1の演算動作を表すタイムチャートを示す。
実施例7では、本発明に係る情報処理装置を、動画像内の物体の動き検出を行うための動き検出装置に適用した例について説明する。動き検出アルゴリズムとしては、国際公開公報WO2006/104033号パンフレットに記載された、脳の海馬C3領野のニューロン活動モデルを用いたリアルタイム動き検出アルゴリズムを使用する。
〔1〕動き検出アルゴリズムの概要
最初に、本実施例の情報処理装置において実現する演算のアルゴリズムについて説明する(詳細については、WO2006/104033を参照)。脳のC3領野では、信号入力部位からニューロン活動が波紋状に伝搬する。波紋の半径は時間に依存して拡大するとともに、その強度は減衰していく。これを、ニューロン活動の放射状伝搬という。
図53は、ニューロン活動の放射状伝搬に基づく動き検出プロセスの説明図である。図54は、本実施例のセルラー構造ネットワークの全体構成を表す図である。
図53(a)はカメラで撮影された原画像から輪郭抽出がされたエッジ画像の情報が入力される実画像マップであり、ACネットという。ACネットは図53(a)のように、中心を通る動径と同心の長方形とによりマス目に画分されている。1つのマス目は1個のニューロン・セルに対応する。各マス目は、長方形の対角線により「上象限」、「下象限」、「左象限」、「右象限」の4つの象限に区分される。以下、上象限,下象限,左象限,及び右象限に属するACネットの部分を、それぞれ、AC(u),AC(d),AC(l),AC(r)と記す(図54参照)。
ACネットの各象限のマス目は、図53(b)のような長方形に配列されたマス目と一対一対応する。この長方形格子状に結合した図53(b)のマス目(ニューロン)の配列をCA3ネットという。CA3ネットの1つのマス目は1個のニューロン・セルに対応する。上下左右の4つの象限に対応して4つのCA3ネットが存在する。
さらに、図54に示すように、CA3ネットの各マス目に1対1に対応する長方形格子状に結合したマス目(ニューロン)の配列であるCA1ネットを用意する。1つのCA3ネットに対し、(接近方向,遠退方向,左方向,右方向)又は(上方向,下方向,接近方向,遠退方向)の動き方向を検出するための4つのCA1ネットが存在する。従って、CA1ネットは全部で16個存在する。CA1ネットの1つのマス目も1個のニューロン・セルに対応する。CA1ネットの各ニューロン・セルは、それぞれ、固有の状態値変数を保持しており、この状態値変数をPと記す。状態値変数Pは時間変化し、P=P(t)と表される。
各象限のACネットのニューロンの座標を(m,n)と記す。各象限の座標軸m,nは図53(a)に示したように設定する。各象限のACネットに対応するCA3ネットの各ニューロン(m,n)は当該ACネットの各ニューロン(m,n)に対応する(図53(b)参照)。同様に、各CA1ネットの各ニューロン(m,n)は、それに対応するCA3ネットの各ニューロン(m,n)に対応する。
ここで、4つの動き検出方向({接近方向,遠退方向,左方向,右方向}又は{上方向,下方向,接近方向,遠退方向})のうちの何れかの動き検出方向に並列するニューロン・セルの列を考える。例えば、図53(b)は、上象限のACネット(AC(u))に対応するCA3ネット(CA3(u))である。CA3(u)はN行M列の格子状に配列されたニューロン・セルの集合体である。図53(b)のCA3(u)において、例えば、図53(b)に示したように、動き検出方向を接近方向とする場合を考える。この場合、動き検出方向には、N個のニューロン・セルの配列が並行してM列存在する。各ニューロン配列において、動き検出方向に対して昇順となるように各ニューロン・セルに番号(1,…,i−1,i,i+1,…,N)を付す。ここで、CA3(u)の接近方向に対しては、図54に示したCA1ネット(CA1(ua))が対応している。そこで、CA1(ua)にも、CA3(u)に対応して、並行するM列のニューロン配列があるので、同様に各列の各ニューロン・セルに番号(1,…,i−1,i,i+1,…,N)を付す。また、CA3(u)に対応する上象限のACネット(AC(u))についても、CA3(u)に対応して、並行するM列のニューロン配列があるので、同様に各列の各ニューロン・セルに番号(1,…,i−1,i,i+1,…,N)を付す。以下、各ネットの番号iのニューロン・セルを「ニューロン(i)」と記す。
それぞれの動き検出方向に対して、図53(c)に示すように、ACネットのニューロン(i)はCA3ネットのニューロン(i)に結合している。また、CA3ネットのニューロン(i)は、CA1ネットのニューロン(i)及びニューロン(i+1)に結合している。エッジ信号が入力されると、ACネットの各ニューロン(i)は、結合されたCA3ネットのニューロン(i)に対して検出信号を出力する。また、CA3ネットの各ニューロン(i)は、前記検出信号が入力されると、結合されたCA1ネットのニューロン(i+1)に対して開始信号を出力するとともに、結合されたCA1ネットのニューロン(i)に対して停止信号を出力する。
次に、上述したセルラー構造ネットワークを用いた動き検出の原理について説明する。図55は、図53,図54のセルラー構造ネットワークを用いた動き検出の原理を説明する図である。
ここでは、上下左右の何れかの象限において、ある動き検出方向を考える。図55(a)に示すように、ある時刻t1において、ACネットのニューロン(i−1)にエッジ像が入力され始めたとする。すると、ACネットのニューロン(i−1)は、CA3ネットのニューロン(i−1)に対し検出信号のスパイク・パルスを出力する(図53(c)参照)。CA3ネットのニューロン(i−1)は、検出信号のスパイク・パルスが入力されると、結合されたCA1ネットのニューロン(i−1)に対し停止信号のスパイク・パルスを出力し、同時に、結合されたCA1ネットのニューロン(i)に対し開始信号のスパイク・パルスを出力する(図53(c)参照)。CA1ネットのニューロン(i−1)は、停止信号のスパイク・パルスが入力されると、自己の保持する状態値変数Pi−1(t1)の値をホールドし、その値を動き検出信号として出力する。また、CA1ネットのニューロン(i)は、開始信号のスパイク・パルスが入力されると、自己の保持する状態値変数Pi(t1)の値を初期値P0にリセットするとともに、一定の減衰率αで経時的な時間変化を開始させる。すなわち、開始信号のスパイク・パルスの入力時刻をt1とすると、CA1ネットのニューロン(i)の状態値変数Pi=Pi(t)は時刻t1以降に次式のように時間変化する。
次に、時間とともにエッジ像が移動して、図55(b)に示すように、時刻t2においてエッジ像はACネットのニューロン(i)に移動したとする。すると、ACネットのニューロン(i)は、CA3ネットのニューロン(i)に対し検出信号のスパイク・パルスを出力する。CA3ネットのニューロン(i)は、検出信号のスパイク・パルスが入力されると、結合されたCA1ネットのニューロン(i)に対し停止信号のスパイク・パルスを出力し、同時に、結合されたCA1ネットのニューロン(i+1)に対し開始信号のスパイク・パルスを出力する。CA1ネットのニューロン(i)は、停止信号のスパイク・パルスが入力されると、自己の保持する状態値変数Pi(t2)の値をホールドし、その値を動き検出信号として出力する。また、CA1ネットのニューロン(i)は、開始信号のスパイク・パルスが入力されると、自己の保持する状態値変数Pi+1(t2)の値を初期値P0にリセットするとともに、一定の減衰率αで経時的な時間変化を開始させる。
ここで、CA1ネットのニューロン(i)が出力する動き検出信号Pi(t2)により、エッジ像がACネットのニューロン(i−1)を通過するのに要した時間Δti−1を次式によって算出することができる。
したがって、この動き検出信号によって、エッジ像の位置とその動き方向に対する速度の両方を検出することができる。CA1ネットは、各象限のCA3ネットに対し、それぞれ4つの動き検出方向ごとに1つずつ存在するので、すべての動き検出方向について、エッジ像の位置とその動き方向に対する速度をリアルタイムに検出することができる。
〔2〕情報処理装置の構成
図56は、本発明の実施例6に係る情報処理装置の全体構成を表す図である。本実施例の情報処理装置1は、節点ユニットネットワーク2、基準位相発生部2a、入力部3、出力部4、及び全体制御部5を備えている。これらは、実施例1の図1の同符号のものに対応する。
入力部3は、カメラ81、フレーム・メモリ82、エッジ画像生成部83、及びACネット84を備えている。カメラ81は、動画像を撮像するビデオカメラである。フレーム・メモリ82は、カメラ81により撮像された動画像のフレーム画像を一時的に蓄積する。エッジ画像生成部83は、フレーム・メモリ82に蓄積されたフレーム画像を1フレームずつ読み込んでフレーム画像内のエッジ像を抽出し、エッジ画像を出力する。エッジ像の抽出方法は現在公知の種々の方法を使用することができる。
ACネット84は、図53(a)に示したACネットを回路的に実現したものである。ACネット84は、上象限,下象限,左象限,及び右象限の4つの象限に対応して、ぞれぞれM×N個の格子状に配列された節点ユニット(ニューロン・セル)を具備している(図53(b)参照)。ACネット84には、前記エッジ画像が入力される。入力されたエッジ画像を図53(a)に示したマス目に画分し、各マス目にエッジ像が存在するか否かを検出する。エッジ像が検出されたマス目に対応する節点ユニット(ニューロン・セル)から検出信号が出力される。
節点ユニットネットワーク2は、ACネット84内の上象限,下象限,左象限,及び右象限に対応して、4つのCA3ネットCA3(u),CA3(d),CA3(l),CA3(r)を具備している。そして、各CA3ネットCA3(u),CA3(d),CA3(l),CA3(r)は、それぞれ図53(b)と同様に、M×N個の格子状に配列された節点ユニット(ニューロン・セル)を具備している。そして各CA3ネット内の各節点ユニットは、ACネット84内の対応する節点ユニットと結線されている。ACネット84内の各節点ユニットは、それぞれ結線されたCA3ネット内の各節点ユニットに対し、検出信号を出力する。
節点ユニットネットワーク2は、CA3(u)に対して、4つの動き検出方向(接近方向,遠退方向,左方向,右方向)に対応するCA1ネット(CA1(ua),CA1(ub),CA1(ul),CA1(ur))を備えている。また、CA3(d)に対して、4つの動き検出方向(接近方向,遠退方向,左方向,右方向)に対応するCA1ネット(CA1(da),CA1(db),CA1(dl),CA1(dr))を備えている。また、CA3(l)に対して、4つの動き検出方向(接近方向,遠退方向,上方向,下方向)に対応するCA1ネット(CA1(la),CA1(lb),CA1(lu),CA1(ld))を備えている。また、CA3(r)に対して、4つの動き検出方向(接近方向,遠退方向,上方向,下方向)に対応するCA1ネット(CA1(ra),CA1(rb),CA1(ru),CA1(rd))を備えている。それぞれのCA1ネットは、それぞれ図53(b)と同様に、M×N個の格子状に配列された節点ユニット(ニューロン・セル)を具備している。そして、各CA1ネット内の各節点ユニットは、対応するCA3ネット内の節点ユニットと結線されている。
ここで、各CA1ネット内の各節点ユニットとCA3ネット内の節点ユニットとは、図57,図58に示すように結線されている。図57は、上象限に対応するCA3ネット(CA3(u))内の各節点ユニットとそれに対応するCA1ネット(CA1(ua),CA1(ub),CA1(ul),CA1(ur))内の各節点ユニットとの結線状態を表す図であり、図58は、図57のCA3ネット(CA3(u))内の1つの節点ユニット(m,n)に結線されるCA1ネット内の節点ユニットを示した図である。尚、図57,図58は、上象限の場合について示しているが、他の象限についても同様であり、ここでは上象限の場合を代表として説明する。
以下では、CA3ネット(CA3(ξ)(ξ=u,d,l,r))内の座標(m,n)の節点ユニットをCA3(ξ)(m,n)と記す。また、CA1ネット(CA3(ξη)(ξ=u,d,l,r;η=a,b,l,r又はη=a,b,u,d))内の座標(m,n)の節点ユニットをCA1(ξη)(m,n)と記す。
図58に示すように、節点ユニットCA3(u)(m,n)は、動き検出方向が接近方向の場合に対応して、節点ユニットCA1(ua)(m,n),CA1(ua)(m,n+1)と結線されている。また、動き検出方向が遠退方向の場合に対応して、節点ユニットCA1(ub)(m,n),CA1(ub)(m,n-1)と結線されている。また、動き検出方向が左方向の場合に対応して、節点ユニットCA1(ul)(m,n),CA1(ul)(m-1,n)と結線されている。また、動き検出方向が右方向の場合に対応して、節点ユニットCA1(ur)(m,n),CA1(ur)(m+1,n)と結線されている。
図59は、図56の4個のCA3ネット内の各節点ユニットCA3(ξ)(m,n)の回路構成を示す図である。各節点ユニットCA3(ξ)(m,n)は、位相状態値保持用キャパシタC0、電流原I1、コンパレータCMP1,CMP2、トリガパルス生成器PG1,PG2、AND回路、RSフリップ・フロップRS−FF、及びスイッチ回路S1,S2,S3,S4を備えている。節点ユニットCA3(ξ)(m,n)は、固有の状態値Pξ;m,n(t)を、位相θξ;m,n(t)として保有する。具体的には、位相θξ;m,n(t)は、位相状態値保持用キャパシタC0に充電される電荷として保持され、図59のノードn1の電圧Vrとして取り出される。尚、位相状態値保持用キャパシタC0、電流原I1、コンパレータCMP1、トリガパルス生成器PG2、及びスイッチ回路S1,S2からなる位相θξ;m,n(t)を進行させる回路は、図6のものと同様の構成であり、この動作は実施例1で説明した通りである。
RSフリップ・フロップRS−FFの出力ノードn2がLレベルの状態では、スイッチ回路S3が閉路し、スイッチ回路S4は開路する。従って、この状態では位相θξη;m,n(t)は、最大位相(Vr=Vhigh)に達すると最小位相0(Vr=Vlow)にリセットされる。一方、RSフリップ・フロップRS−FFの出力ノードn2がHレベルの状態では、スイッチ回路S4が閉路し、スイッチ回路SSは開路する。従って、この状態では位相θξ;m,n(t)は、最大位相(Vr=Vhigh)に達すると中間位相(Vr=Vmiddle)にリセットされる。
節点ユニットCA3(ξ)(m,n)に対応するACネット84内の節点ユニットAC(ξ)(m,n)からは、検出信号ACξ;m,nが入力される。検出信号ACξ;m,nは、節点ユニットAC(ξ)(m,n)でエッジ像が検出されたときにHレベル、検出されないときにLレベルとなる信号である。トリガパルス生成器PG1は、検出信号ACξ;m,nの立ち上がりと立ち下がりでスパイク・パルスを出力する。トリガパルス生成器PG1からスパイク・パルスが出力されると、RSフリップ・フロップRS−FFの出力ノードn2がHレベルに設定され、位相θξ;m,n(t)は、リセット時に中間位相(Vr=Vmiddle)にリセットされる状態となる。一度、位相θξ;m,n(t)のリセットが発生すると、RSフリップ・フロップRS−FFの出力ノードn2がLレベルに設定されるため、次回からは位相θξ;m,n(t)は、リセット時に最小位相0(Vr=Vlow)にリセットされる状態となる。
尚、位相θξη;m,n(t)のリセット時にトリガパルス生成器PG2で発生するスパイク・パルスspike_CA3ξ;m,nは、AND回路を介して、開始信号及び停止信号spike_attn_CA3ξ;m,nとして、結線されたCA1ネット内の各節点ユニットへ出力される。AND回路は、コンパレータCMP2の出力がHレベルの場合、すなわち、Vr<Vmiddleの場合で、且つ、更新許可信号update_enaがHレベルの場合にのみスパイク・パルスspike_attn_CA3ξ;m,nを出力するように制御するために設けられているものである。
ここで、更新許可信号update_enaは、更新可能な時間帯を定めるウィンドウの役目をする信号であり、基準位相が中間位相となる時刻を中心としてT/2程度の幅でHレベルとなる周期的なパルスとされる。更新許可信号update_enaは、基準位相発生部2aにおいて生成される。
図56の16個のCA1ネット内の各節点ユニットCA1(ξη)(m,n)は、図5及び図6と同様の構成を備えている。各節点ユニットCA1(ξη)(m,n)は、固有の状態値Pξη;m,n(t)を、位相θξη;m,n(t)として保有する。具体的には、位相θξη;m,n(t)は、位相状態値保持用キャパシタC0に充電される電荷として保持される。実施例1の場合と同様、位相θξη;m,n(t)は時間とともに一定の位相速度ωで単調増加し、最大位相θmaxに達したときにスパイク・パルスを出力し、最小位相θminにリセットされる。
なお、実施例1の場合と同様、図56の全体制御部5は、節点ユニットネットワーク2の各節点ユニットCA1(ξη)(m,n)に、更新係数やパルス遅延量などのパラメータを設定するとともに、それら節点ユニットの動作制御を行う。また、基準位相発生部2aは、基本的に図6(a)に示したスパイク・ニューロン回路20と同様の構成を有し、位相状態値の更新がされない基準位相θb(t)=ωtのスパイク・パルスspk_fを出力し続ける。
〔3〕情報処理装置の動作
図60は、実施例6に係る情報処理装置の各節点ユニットCA1(ξη)(m,n)の動作を示すタイムチャートである。
エッジ画像は、一定の周期TfでACネット84に入力される。そこで、各節点ユニットCA1(ξη)(m,n)の位相θξη;m,n(t)の周期T=(θmax−θmin)/ωもT=Tfとする。
図60は、ある象限のCA3ネットのある動き検出方向の節点ユニットの列の1つに注目し、その節点ユニット列のi−1番目とi番目の節点ユニットと、それに対応するACネット84内の節点ユニット、及びCA1ネット内の節点ユニットに注目し、これらの節点ユニットの動作を示している。
ACi−1,ACiは、それぞれ、ACネット84内のi−1番目,i番目の節点ユニットが出力する検出信号の値を示す。CA3i−1,CA3iは、それぞれ、CA3ネット内のi−1番目,i番目の節点ユニットの位相θξ;i−1(t),θξ;i(t)の値を示す。CA1iは、CA1ネット内のi番目の節点ユニットの位相θξη;i(t)の値を示す。Spike-CA3i-1,Spike-CA3iは、それぞれ、CA3ネット内のi−1番目,i番目の節点ユニットが出力するスパイク・パルスを示す。Update_enaは、各CA3ネット内の各節点ユニット及び各CA1ネット内の各節点ユニットに対して入力される更新許可信号(図5参照)の値を示す。更新許可信号Update_enaがHレベルのときに、各節点ユニットは、結合された節点ユニット(図57,図58参照)に対してスパイク・パルスを出力し、更新許可信号Update_enaがLレベルのときには、スパイク・パルスは出力されない。
Output_Trigは、一定の周期Tで出力部4に対して入力されるスパイク・パルスであり、「出力トリガ」という。この出力トリガOutput_Trigは、基準位相発生部2aにより生成され、ACネット84にエッジ画像が入力されるタイミングに対して半周期T/2だけ遅延して出力される。出力部4は、出力トリガOutput_Trigが入力されると、その時点でのCA1ネット内の各節点ユニットの位相θξη;i(t)の値を取得して出力する。また、各
時刻Tにおいて、ACネット84内のi−1番目の節点ユニットAC(ξ)(i−1)においてエッジ像が検出される。すると、節点ユニットAC(ξ)(i−1)は、A3ネットの節点ユニットCA3(ξ)(i−1)に出力する検出信号ACξ;i-1をHレベルとする。
節点ユニットCA3(ξ)(i−1)においては、検出信号ACξ;i-1をHレベルとなると、RSフリップ・フロップRS−FFの出力ノードn2がHレベルに設定され、位相θξη;i-1(t)が最大位相(Vr=Vhigh)に達すると中間位相(Vr=Vmiddle)にリセットされる。そして、RSフリップ・フロップRS−FFの出力ノードn2は再びLレベルに設定される。この操作によって、節点ユニットCA3(ξ)(i−1)の位相θξ;i-1(t)は中間位相分だけ進み、位相θξ;i-1(t)のリセット時刻が更新許可信号update_enaのウィンドウ内に位置するようになる。
時刻Tから3Tまでの間、ACネット84内のi−1番目の節点ユニットAC(ξ)(i−1)においてエッジ像が検出され続けるため、検出信号ACξ;i-1はHレベルに維持される。この間、位相θξ;i-1(t)が最大位相(Vr=Vhigh)に達する毎に、節点ユニットCA3(ξ)(i−1)は、CA1ネットの節点ユニットCA1(ξη)(i)に対して開始信号spike_attn_CA3ξ;i-1を出力する。節点ユニットCA1(ξη)(i)は開始信号spike_attn_CA3ξ;i-1が入力されると、自己の位相θξη;i(t)をΔθだけ更新される。従って、開始信号spike_attn_CA3ξ;i-1が入力される回数に比例して、節点ユニットCA1(ξη)(i)の位相θξη;i(t)の更新量が大きくなる。
時刻3Tにおいて、エッジ像がACネット84内のi−1番目の節点ユニットAC(ξ)(i−1)からi番目の節点ユニットAC(ξ)(i)へ移動する。すると、節点ユニットAC(ξ)(i−1)は、CA3ネットの節点ユニットCA3(ξ)(i−1)に出力する検出信号ACξ;i-1をLレベルとし、節点ユニットAC(ξ)(i)は、CA3ネットの節点ユニットCA3(ξ)(i)に出力する検出信号ACξ;iをHレベルとする。
節点ユニットCA3(ξ)(i−1)では、検出信号ACξ;i-1がLレベルに立ち下がると、RSフリップ・フロップRS−FFの出力ノードn2がHレベルに設定され、位相θξη;i-1(t)が次に最大位相(Vr=Vhigh)に達する時刻(3+1/2)Tに中間位相(Vr=Vmiddle)にリセットされる。そして、RSフリップ・フロップRS−FFの出力ノードn2は再びLレベルに設定される。この操作によって、節点ユニットCA3(ξ)(i−1)の位相θξ;i-1(t)は中間位相分だけ進み、位相θξ;i-1(t)のリセット時刻が更新許可信号update_enaのウィンドウの外側に位置するようになる。
一方、節点ユニットCA3(ξ)(i)では、検出信号ACξ;iがHレベルに立ち上がると、RSフリップ・フロップRS−FFの出力ノードn2がHレベルに設定され、同時に位相θξ;i(t)が最大位相(Vr=Vhigh)に達するため位相θξ;i(t)が中間位相(Vr=Vmiddle)にリセットされる。そして、RSフリップ・フロップRS−FFの出力ノードn2は再びLレベルに設定される。この操作によって、節点ユニットCA3(ξ)(i)の位相θξ;i(t)は中間位相だけ進み、位相θξ;i(t)のリセット時刻が更新許可信号update_enaのウィンドウ内に位置するようになる。そして、時刻(3+1/2)Tに位相θξ;i(t)は再び最大位相(Vr=Vhigh)に達する。このとき、節点ユニットCA3(ξ)(i)は、CA1ネットの節点ユニットCA1(ξη)(i)に対して出力トリガoutput_Trigξ;iを出力する。節点ユニットCA1(ξη)(i)は、出力トリガoutput_Trigξ;iが入力されると、その時点において保持する自己の位相θξη;i(t)を出力部4に出力すとともに、自己の位相θξη;i(t)を最小位相0にリセットする。これにより、ACネット84内のi−1番目の節点ユニットAC(ξ)(i−1)においてエッジ像が検出された時間が、位相θξη;i(t)の基準位相との位相差として出力部4に出力され、動きの方向とその大きさが検出されることになる。