◆お知らせ
関連記事をまとめ、回路シュミレータの使い方の注意点やサンプルファイルを添付して、以下のページにまとめました。
『CPUの創り方』によるCPUのしくみ入門 回路シミュレータを使って: PAPA-tronix !
以下は古い記事です。
『CPUの創り方』という本がある。
CPUのしくみを理解し、シンプルなCPUをつくりましょう、という本である。
だが文中で著者も言っているように、CPUを自作するにはかなりの配線作業が必要になる。
そこで私は友人@su_exsさんに教えてもらった「源内CAD」というデジタル回路シミュレータを使い、CPUをつくってみることにした。
なお今回の作業では源内CAD支援コンテンツの標準ロジックIC一覧が大変参考になった。この場を借りてお礼です。
【書籍160ページ】
まずは単純なフリップフロップから試す。これはCPUのレジスタに使われている素子で、値を保持するのに使われる。
まずはフリップフロップ初動作
フリップフロップの動作確認
クロックがHiになるたびにフリップフロップの出力がHiとLoで入れ替わる
【書籍176ページ】
データセレクタ これも作るw
データセレクタ製作中
データセレクタ完成!(うそ。一部未完。)
シンボルに登録して再利用可能にする
登録して使えるようになった
こちらはデータセレクタ S0とS1がともにLoだと・・・
このAND素子だけがはたらいて・・・
このI0の入力だけが出力され、他の入力は捨てられる
S0がLo、S1がHiだと・・・
このAND素子だけがはたらくので・・・
入力I2だけが出力に反映されて、あとの入力は捨てられる
【書籍185ページ】
74HC161の回路図 うへえ
ちなみに中身はこんな感じ(@su_exs氏作成)
矢印のか所が全部Hiだと・・・
ここに集まって桁が上がるはずなのだが・・・
ここでGNDで殺しているので桁上がりは起きないです
CLR#がLoだと・・・
これらのAND素子にLoが入力されるので・・・
すべてのフリップフロップにLoが入力されることになります
LOAD#がLoだと・・・
これらのAND素子がはたらいて入力ABCDがフリップフロップに入力される
逆にLOAD#がHiだと・・・
こちら側のAND素子がはたらいて現状の状態を維持する
左から順にABCDにHiをセットしている
左から順にABCDがHiにセットされている
【書籍191ページ】
こちらがレジスタ
こちらがデータセレクタ
こんなところで時間切れになりました。それにしても、だんだんCPUのしくみがわかってくるのが楽しいです。がんばるぞー。