Feel Physics Backyard

HoloLensの出張授業をする会社で、教材を開発しています

CPUのしくみ入門(前編) 回路シミュレータを使って

◆お知らせ

関連記事をまとめ、回路シュミレータの使い方の注意点やサンプルファイルを添付して、以下のページにまとめました。

『CPUの創り方』によるCPUのしくみ入門 回路シミュレータを使って: PAPA-tronix !

以下は古い記事です。


『CPUの創り方』という本がある。

 

CPUのしくみを理解し、シンプルなCPUをつくりましょう、という本である。

だが文中で著者も言っているように、CPUを自作するにはかなりの配線作業が必要になる。

そこで私は友人@su_exsさんに教えてもらった「源内CAD」というデジタル回路シミュレータを使い、CPUをつくってみることにした。

なお今回の作業では源内CAD支援コンテンツの標準ロジックIC一覧が大変参考になった。この場を借りてお礼です。 

 

 

【書籍160ページ】

まずは単純なフリップフロップから試す。これはCPUのレジスタに使われている素子で、値を保持するのに使われる。

フリップフロップ初動作

まずはフリップフロップ初動作

フリップフロップの動作確認 

フリップフロップの動作確認

クロックがHiになるたびにフリップフロップの出力がHiとLoで入れ替わる 

クロックがHiになるたびにフリップフロップの出力がHiとLoで入れ替わる

【書籍176ページ】

データセレクタ これも作るw 

データセレクタ これも作るw

データセレクタ製作中 

データセレクタ製作中

データセレクタ完成! 

データセレクタ完成!(うそ。一部未完。)

シンボルに登録して再利用可能にする 

シンボルに登録して再利用可能にする

登録して使えるようになった 

登録して使えるようになった

こちらはデータセレクタ S0とS1がともにLoだと・・・ 

こちらはデータセレクタ S0とS1がともにLoだと・・・

このAND素子だけがはたらいて・・・

このAND素子だけがはたらいて・・・

このI0の入力だけが出力され、他の入力は捨てられる 

このI0の入力だけが出力され、他の入力は捨てられる

S0がLo、S1がHiだと・・・

S0がLo、S1がHiだと・・・

このAND素子だけがはたらくので・・・ 

このAND素子だけがはたらくので・・・

入力I2だけが出力に反映されて、あとの入力は捨てられる 

入力I2だけが出力に反映されて、あとの入力は捨てられる

【書籍185ページ】

74HC161の回路図 うへえ 

74HC161の回路図 うへえ

ちなみに中身はこんな感じ 

ちなみに中身はこんな感じ(@su_exs氏作成)

矢印のか所が全部Hiだと・・・ 

矢印のか所が全部Hiだと・・・

ここに集まって桁が上がるはずなのだが・・・ 

ここに集まって桁が上がるはずなのだが・・・

ここでGNDで殺しているので桁上がりは起きないです 

ここでGNDで殺しているので桁上がりは起きないです

CLR#がLoだと・・・ 

CLR#がLoだと・・・

これらのAND素子にLoが入力されるので・・・ 

これらのAND素子にLoが入力されるので・・・

すべてのフリップフロップにLoが入力されることになります 

すべてのフリップフロップにLoが入力されることになります

LOAD#がLoだと・・・ 

LOAD#がLoだと・・・

これらのAND素子がはたらいて入力ABCDがフリップフロップに入力される 

これらのAND素子がはたらいて入力ABCDがフリップフロップに入力される

逆にLOAD#がHiだと・・・ 

逆にLOAD#がHiだと・・・

こちら側のAND素子がはたらいて現状の状態を維持する 

こちら側のAND素子がはたらいて現状の状態を維持する

左から順にABCDにHiをセットしている 

左から順にABCDにHiをセットしている

左から順にABCDがHiにセットされている

左から順にABCDがHiにセットされている

【書籍191ページ】

4つのレジスタと4bitのデータセレクタを接続 

4つのレジスタと4bitのデータセレクタを接続

こちらがレジスタ 

こちらがレジスタ

こちらがデータセレクタ 

こちらがデータセレクタ

こんなところで時間切れになりました。それにしても、だんだんCPUのしくみがわかってくるのが楽しいです。がんばるぞー。

CPUのしくみ入門(中編) 回路シミュレータを使って: PAPA-tronix !に続きます。