ブラウザで動作してインストール不要の下記の
https://www.falstad.com/circuit/circuitjs.html
回路シミュレータで、「CPUの創りかた」で紹介されていた回路の動作を確認してみました。
今回は p181.184 の 「1bit CPU ( レジスタ )回路」です。
◆回路シミュレータの簡単な使用法
- 回路図の緑色の部分は電圧が+Vcc ( 今回は 5V )、灰色の部分は GND 電位であることを示します。
- 5 極スイッチのデジタル入力をクリックするたびに H/L、2極あるいは 5 極スイッチをクリックするたびに接続が切り替わります。
◆回路の動作確認
- メカ式 1bitCPU
スイッチを「MOV A, A」に切り替えると Q 出力のデータが保持されます。
スイッチを「NOT A」に切り替えるとループの途中にインバータが入って、NOT A の演算が実現できます。同様に他の演算を挿入すれば、その演算機能が実現できると推測されます。
出力 OUT の状態が切り替わるのは、CLK の立上り時です。 - 保持回路 + データセレクタ
A ~ D の 1bit CPU ( レジスタ ) を 4 ケ用意して、MOV A, D の転送命令を実行する方法は以下のとおりです。
- すべての 2 極スイッチを「保持」に切り替える。
- 右側サイドパネルの 「Reset」ボタンをクリックする。
- 5 極スイッチを 「E」 に切り替えデジタル入力を H に設定する。
- D レジスタのスイッチを「コピー」に切り替え、Q 出力が H になったらスイッチを「保持」に切り替える。
- 5 極スイッチを「D」に切り替え、A レジスタのスイッチを「コピー」切り替える。Q 出力が H になったらスイッチを「保持」に切り替える。
以上で D レジスタの内容が A レジスタに転送されました。
同様に B, C レジスタについても 4, 5 項をおこなえば、MOV B, D や MOV C, D 転送命令を実行できます。
シミュレーションを実行するには下記の回路ファイルをコピーして、シミュレータの File → Import From Text... で開くパネルに貼り付けてください。
$ 1 0.000005 6.450009306485578 50 5 50 5e-11
R 352 -128 304 -128 1 2 100 2.5 2.5 0 0.5
155 352 -160 384 -160 0 0
w 352 -160 352 -192 0
w 352 -192 736 -192 0
w 448 -160 480 -160 0
S 736 -144 640 -144 0 0 false 0 2
I 480 -128 640 -128 0 0.5 5
w 480 -160 640 -160 0
w 480 -128 480 -160 0
w 736 -192 736 -144 0
M 736 -144 800 -144 0 2.5
x 744 -154 769 -151 4 12 OUT
x 643 -109 680 -106 4 12 NOT\sA
x 640 -173 695 -170 4 12 MOV\sA,\sA
L 624 128 624 176 0 0 false 5 0
S 720 96 624 96 0 1 false 0 5
S 336 64 272 64 0 0 false 0 2
x 480 -61 667 -58 4 20 メカ式CPU\s(\sp181\s)
x 442 86 498 89 4 12 Aレジスタ
w 480 32 480 64 0
w 480 64 624 64 0
w 448 64 480 64 0
w 272 32 480 32 0
w 272 48 272 32 0
155 352 64 384 64 0 5
x 194 617 637 620 4 20 各レジスタに保持回路\pデータセレクタ\s(\sp184\s)
155 352 208 384 208 0 0
w 272 192 272 176 0
w 272 176 480 176 0
w 448 208 480 208 0
w 480 208 512 208 0
w 480 176 480 208 0
x 442 230 498 233 4 12 Bレジスタ
S 336 208 272 208 0 1 false 0 2
155 352 352 384 352 0 0
w 272 336 272 320 0
w 272 320 480 320 0
w 448 352 480 352 0
w 480 352 528 352 0
w 480 320 480 352 0
x 442 374 498 377 4 12 Cレジスタ
S 336 352 272 352 0 1 false 0 2
155 352 496 384 496 0 5
w 272 480 272 464 0
w 272 464 480 464 0
w 448 496 480 496 0
w 480 496 544 496 0
w 480 464 480 496 0
x 442 518 498 521 4 12 Dレジスタ
S 336 496 272 496 0 1 false 0 2
w 336 64 352 64 0
w 336 208 352 208 0
w 336 352 352 352 0
w 336 496 352 496 0
w 352 96 352 240 0
w 352 240 352 384 0
w 352 384 352 528 0
w 272 80 240 80 0
w 272 224 240 224 0
w 272 368 240 368 0
w 512 208 512 80 0
w 512 80 624 80 0
w 528 352 528 96 0
w 528 96 624 96 0
w 544 496 544 112 0
w 544 112 624 112 0
w 720 96 720 0 0
w 720 0 240 0 0
w 240 0 240 80 0
w 240 80 240 224 0
w 240 224 240 368 0
w 240 368 240 512 0
w 240 512 272 512 0
R 352 528 304 528 1 2 100 2.5 2.5 0 0.5
x 566 438 727 441 4 20 MOV\sA,\sD\sを実行
x 259 105 295 108 4 12 コピー
x 259 163 283 166 4 12 保持
x 258 312 282 315 4 12 保持
x 265 453 289 456 4 12 保持
x 258 24 282 27 4 12 保持
x 263 245 299 248 4 12 コピー
x 259 386 295 389 4 12 コピー
x 241 533 277 536 4 12 コピー
403 832 -192 976 -112 0 0_64_0_x81016_5_0.1_-1_2_1.25_0_0_3_0.025_0_CLK
403 832 -112 976 -16 0 10_64_0_x81016_5_0.1_-1_1_1.25_0_OUT
x 629 60 637 63 4 12 A
x 628 78 636 81 4 12 B
x 628 94 636 97 4 12 C
x 628 108 636 111 4 12 D
x 627 126 634 129 4 12 E