◆お知らせ
関連記事をまとめ、回路シュミレータの使い方の注意点やサンプルファイルを添付して、以下のページにまとめました。
『CPUの創り方』によるCPUのしくみ入門 回路シミュレータを使って: PAPA-tronix !
以下は古い記事です。
この記事はCPUのしくみ入門(前編) 回路シミュレータを使って: PAPA-tronix !の続きである。
引き続き@su_exsさんのアドバイスをいただきながら作業をすすめる。
今回はレジスタとデータセレクタの連携チェックと全加算器の導入である。
あとでプログラムカウンタとして使うため、レジスタのカウンタ機能を復活させる
レジスタに0001、0010、0100、1000をLOADしてみると、うまくいっている
ここでフリップフロップが1つだけの1bitCPUをつくってみた。
処理はそのまま転送か反転の2種類だけ
この部分の入力がHならただの転送で、Lなら反転になる
矢印のところで下のQ#が反転している
レジスタとデータセレクタのテストをしてみるため、4つめのレジスタに直接入力を付ける
まずレジスタ4に0101を入力し・・・
ここですね・・・
レジスタ1だけ転送を受け入れる(LOAD)ようにすると・・・
レジスタ1に0101が入力されています(図はQ#なので反転して1010になっています)
次の転送元はレジスタ1で・・・
転送先はレジスタ2です
レジスタ2に0101が入力されたことがわかります
レジスタ3に0101が入力されました
これは桁上り(Cin)を込みにした全加算器
入力Aと入力BがH、桁上り入力CinがLのときは・・・
このANDゲートがHを出力して桁が上がる(C)
AだけHの場合は・・・
このANDゲートがHを出力する(S)
A+BがSと桁上りのCに反映されている
先ほどの1bit全加算器を4個つなげると、4bit全加算器
0001+0001=0010、0010+0010=0100、0100+0100=1000、1000+1000はC出力、Cinのみは0001
4つめのレジスタに0001をセットして1つめのレジスタに転送し、
0001+0001=0010
0010+0101=0111
0111+0001=1000