回路はノード番号で接続され、各素子は以下の形式で記述する。なお、電流は節 点に入る方向が負、出る方向が正である。
Hebb学習ありニューロン、 節点\(n_1\)が出力節点、節点\(n_2\)が教師節点で,Nnumberは、N2と記載すれば、連想時\(n_2\)=2とな る。\(n_3\),\(n_4\)は、それぞれ、入力節点、参照節点。
Hebb学習なし、ランダム学習ありのニューロン
学習なし
2変数a,bの計算グラフで、 a=\(n_3\)の電圧入力、b=\(n_4\)の電圧入力、
\(n_1\)と\(n_2\)間の出力がFの電流値となる。modeは、追って説明するが、mode=3は強制的電圧出力を意味す
る。
加算等の2変数a,bの計算グラフで、 a=\(n_3\)の電圧入力、b=\(n_4\)の電圧入力、\(n_1\)と\(n_2\)間の出力が演算の電流値となる。rateは倍率。
区分線形関数,slopeは傾き
RuLU関数,slopeは傾き
softmax関数の2変数計算グラフで、6(for example)は入力数かつ出力数、{\(in_1\)}は出力節点集合、{\(in_3\)}は入力節点集合、\(in_2\)は割り算の中間節点、倍率Vin=1[V]固定。
Circuit Func Input Vdd=1.0 G=0.0 TIME = 0 end
Macro Tc1(in,out) branch FUNCM(in,out,TIME,G;"sin(2*500*PI*a)":1) R(in,out;1.0) end end
circuit.cir-file では、最初に回路名を “Circuit Func” と記述する。 その後、Tc\(_1\)(4, G) のように呼び出される。
Macroの(Tc1)では、外部節点
と繋ぐ内部変数名を節点名としてin,outとする。
Macroの終わり
は,2つのend,endで指定する。このMacro内容は、FUNCMの計算グラフである。それは
、sin(2*500*PI*a)で
ある。そして、接続端子(in,out)間に1Ωの抵抗R(in,out;1.0)で電圧出力に変換する回路
を表現する。a=TIMEである。Tc1のマクロは、次のbranch, end,end間の全体回
路の記述表現において、
Tc1(4,G)として利用される。
Macroの名前と引数の節点名は任意であるが、その文字数には制限がある。
branch R(2,G;100) C(1,G;1.592354E-4) HH(1,4,3,G,N2,0.0;0,P,-1.0,0) C(3,G;1.592354E-3) Tc1(4,G) C(2,G;1.592354E-4) HHG(1,G,2,G;0,1,0,0) end end
Colpitts回路(inductorの学習):
節点3の電圧波形:
全体回路の記述では HH モデルが使用される。 HHモデルの内部節点{\(n_1\)(出力節点),\(n_2\)(教師節点),\(n_3\)(入力節点),\(n_4\)(参照節点)}は外部節点{1,4,3,G}に接続されている。節点\(n_2\)(内部の教師節点)は、逆伝搬時では、外部節点4の教師信号Tc1の信号を入力するが、順伝搬時では、元の外部節点2(文字"N"記載後に節点番号2と記する)に接続変更される。HHモデルの\(G_{11}\)(自 己コンダクタンス)とオフセットコンダクタンス\(G_{22}\)は零である。\(G_{12}\)のPは正の範囲 でHebb則の学習を行う意味である。 また、PC0.1と記載すれば、0.1[S]の静的コンダクタンスをつくる意味となる。 また、\(G_{21}\)=-1は、YZ変換、すなわち、節点3とG間の2次側コンデンサC3による疑似インダクタL3をつくる意味となる。 また、L(\(n_1\), \(n_2\), \(n_3\), \(n_4\); value) を使うこともできる。
解析には、次のCirchit.cmd-fileとCircuit.inp-fileを必要とする。
Circuit Func comp Func load Func inputvec Func First 1 0.001 First 2 0.0 node 1 node 2 node 3 node 4 srp 4.723958E-5 1.232199546485261
Circuit.cmdの説明
Circuit, comp, load, inputvecは、それぞれ、回路名、コンパイル、ロード、入力ベク
トルの意味で必ず必要なコマンドで、
Funcは、userが定義した回路名である。(First 節点番号)の対で、その節点の電圧
の初期値を指定する。
node i は出力file(i.dat)に出力する節点番号iである。
シミュレーションの方式と時間は
srp step(Δt) 最終時刻
で決める。SPICE回路シミュレーションのNewton–Raphson 方式としては、srp の緩和法、luのLU分解法がある。
G 2 0 0.0 100 0.0 Vdd 2 0 1 100 1 TIME 2 0 0 100 100
Circuit.inp の説明 接地(Ground)は G 記号を使い、 0 点の 0[V] から 100s 点の 0[V] の線形内挿で表現される。
電源電圧は Vdd 記号を使い、 0 点の 1[V] から 100s 点の 1[V] の線形内挿で表現される。
時間 TIME は、 0 点の 0 から 100s 点の 100 の線形内挿で表現される。
各入力変数(例:Vi)は、 0 点の \(V_s\) から 100s 点の \(V_s\) の線形内挿で表現される。
パルス波形の場合、 各区間の電圧 \(V_i\) から次の区間の \(V_j\) 直前までを線形内挿で表現する。
Circuit.inp で定義された入力変数は、 Circuit.cir の Input … end の間で “変数名 = 値” の形式で記述される必要がある。
プロンプトsdp:において、回路解析の実行は@回路名と打つ。Hebb則学習付きの場合は、"learn" と記述し、その後に@回路名と打つ。HHモデルの出力は、±1の飽和現象がある。飽和現象なしとする場合は、"nosat"と打った後、@回路名と打つ。 Hebb則学習で得られたコンダクタンス値を使って連想する場合は、"as" と記述し、その後に@回路名と打つ。