日本語
English

SchemaHD : ビットからバイポーラ型へ

〜組合せ回路を活用する〜

現在のFPGA開発は大半が「同期回路+組合せ回路」のパターンで行われています。
FPGAの高速化と規模の拡大により、同期回路のクロック経路が長くなりタイミングエラーなどの発生が多くなりました。
クロックはパイプラインの各ステップで共通ですので、処理時間の最も長い部分に合わせて周波数を調整する必要が有ります。
ステップ毎の処理時間が大幅に異なる場合は、ステップを分けるなどの調整も必要になります。
現時点で最も高度でかつ柔軟性が有る情報システムである人間の脳には、クロックに相当するものは見受けられません。
神経細胞間はパルス状の電気信号と神経伝達物質の受け渡しで情報が処理されています。
神経細胞はパルスを伝達しますが、プラスのパルスとマイナスのパルスがある訳では有りません。
コンピューター的には「1」のみが断続的に送信されています。
そしてパルスの送信頻度と細胞間の結合の強度により情報の重要さが変化します。
なお失敬細胞間のパルスによって、受け取る神経細胞に興奮が起こる結合と、興奮を抑制する結合が存在します。

デジタルの電子回路では通常はビット単位に処理が行われています。
1ビットは1と0の二つの状態しか取る事ができません。
組み合わせ回路の半加算器は次の様になります。

AとBの端子から情報が入って来て、S端子とC端子に計算結果が出力されます。
この回路には問題が有ります。
ビットは1と0の二つの状態を表す事しか出来ませんので、情報が存在しているか存在していないかを表す事が出来ません。
ですのでこの回路では演算がいつ終了したかを知る事が出来ないのです。

この解決策は情報の最小単位をビットではなく、「情報が存在しない」「0」「1」の三つの状態を表す事が出来るものを使用すれば良いのです。
これは先程の人間の脳で言うところの、パルスの有無と、興奮と抑制の結合に対応しています。
電子回路で3種類を表すのは難しいので2ビットとセットとして4種類のうちの3種類を使用する事とします。
SchemaHDでは情報のセットをインターフェースとして簡単に定義可能です。
バイポーラ型として定義しました。

名称 ビット数 方向 ベースインターフェース
Bipolar 2    
   One 1 順方向 One
   Zero 1 順方向 Zero

定義されたOneとZeroを流れる情報は以下の通りです。
状態
0 情報は存在しない
1 1の情報が存在している

Bipolar型のOneとZeroの国合わせは以下の通りです。
One Zero 状態
0 0 情報は存在しない
1 0 1の情報が存在している
0 1 0の情報が存在している
1 1 使用禁止

Bipolar型を扱う為の基本論理素子BUFFER, NOT, AND, OR, XOR, NAND, NOR, XNORを作成しました。
Bipolar ANDは次の様になります。

Bipolar型の基本論理素子を使った半加算器は次の様になります。
通常の基本論理素子の回路と同じです。
論理素子のアイコンはまだ作成していませんので四角い箱ですが。

Bipolar型を使用する事により演算の完了を知る事が出来る様になります。
次のBipolar Full Adder 4 signalsではBipolar Full Adderがカスケード接続されていますので、S0出力端子とC出力端子では演算結果の出力タイミングが異なります。

ですが、Bipolar型は情報がまだ到着していない事が分かりますので簡単に状態を検出可能です。
ですので実装するFPGAの最高速度で動作する組み合わせ回路回路を構築できます。
以下のBipolar型のA端子とB端子の両方に情報が到着した場合にビット型O端子が1になります。
この回路はX端子を使ってカスケード接続する事が出来ます。


Bipolar型をSchemaHDアプリケーションに組み込みました。
ZIPをダウンロードして使用されている方はSchemaHDに組み込まれているBipolar型とはIDが異なりますのでご注意ください。

■ インターフェース
名称 ZIPファイルでのID 組み込まれた部品でのID
Onedaq44yn7357449s053m04wnh1cabq44yn7357449s053m04wnh1c
Zerox1ec6wz6amaq5fg0chr2ebxvgwacec6wz6amaq5fg0chr2ebxvgw
Bypolarhk5h3se2bjhvrermwn81kaddfgacfh3se2bjhvrermwn81kaddfg

■ 回路図
名称 ZIPファイルでのID 組み込まれた部品でのID
Bipolar BUFFERc95mr42mjfmhsy69zdr65d7nx9abtsf0jqfat9yzwt2wc8q4caw1
Bipolar NOTjkakt8h1tc9rycemtx196v2hxaabvbmbv1aqxttfacy8xmmwpaxa
Bipolar ANDd6zv12ggrh4bc93c9b1wk886hyabvk9y3qd2gxdcestbwjdb8a7w
Bipolar NANDp6rdjejkjrmce8kh45kx11shd7abvx9zswhvmpm8hdakgw8y6gg8
Bipolar ORdyerbt36wrbg61xeafqz3cgpxeabwb3vxcybt0vtv2cet3rrhzd5
Bipolar NORyy9pxwhpt5x933198jtdxa2z3yabwvxacdfz3v1fnph1xk3jk4wr
Bipolar XORjj1gcy8szkeyzntnvvqtg110qsabx5arahvcdr6yxww7v1rdg1bv
Bipolar XNORgb0fsxtk7pag26h3f4n5y6rc3zabxk1dpk5kqfjhjq6rq0kky1hb
Bipolar Voidvfxd7ck3r2qxq9486gyyscddwxabxws3wprgh7pxmwrmd5hcjbwc
Bipolar Onevbf1enxgpj2arebr3ymcbaqb7nabyb3wr5gae5mfh2xzw3m4y0q0
Bipolar Zerorcnw58mp1bbyp0vsb7v7539tphabymt7xhenhf1jr9rjjsbcjdk0
Bipolar Mergew9jmqqknk60se93jsqztp0m7d4abyz3w4fsgnadq5fgkrd3j7gr4
Bipolar Muxcx1ax50gn020fvvambnyx8h2x8abzjqnc0vvjq1w8zn6x7m2n7e3
Bipolar DeMuxn26ez8wzt85rbs8jk33gbent95abztxzfksxk9cfp6zd1m1g4d1m
Bipolar Validb3z4q9zdh4hw81094q9by0stx6abzzkmdg4sdy9bagqxzhvfd5jt
Bipolar Waitingtjrnrap92xacy50dqhrvg0fm93ac0tes8yxyd6y5q8gkmt0vmy1d
Bipolar Latchr3hdga783gkmmyn0r0krj0xajkac1gpn0wneaejnnr4dv3b6dspm
Bipolar Combiney5azamqzqjaj1smk7dzbbdp3mtac1wr9yhnz3mhnvsmkqgf6emah
Bipolar Separatekwmxgtsc9a6h6nv76qkxx535bkac2vvfnw5n3pfrtpg7a4gsvx1j
Bipolar Half Adderjts4tz58y7mbap3bwkn6bt64qzac3gazre5pw1xj0zwx9m3gf9rr
Bipolar Full Adderqpymtxha24ws9wv209s30tdkg6ac3tw2wtgsagbkrw9hff0hz6w9

Bipolar型の論理回路を使用したストリーム処理回路を計画中です。