トランジスタでCPUをつくろう!
トランジスタで8080をつくってしまおうというまさにびっくり仰天、狂気のプロジェクトです!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
見事にできましたら、もちろんTK−80モニタを乗せて、それからBASIC、CP/Mを走らせましょう!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
[第81回]
●CPUのレジスタ
RSフリップフロップはもっともシンプルなデータ記憶回路で通常2入力NANDゲート2個でつくることができます。
CPU回路の記憶回路といえばすぐに思い浮かぶのがレジスタです。
レジスタをRSフリップフロップでつくってみるとこんな感じになると思います。
これで1ビット分です。
8ビットのレジスタということになりますと、図の点線で囲んだ回路が8個並ぶことになります。
出力段はスリーステートバッファですから、そこはちょっと工夫が必要ですが、それは置くとしても点線部分だけでトランジスタが少なくとも20個は必要です。
その8個分では160個です。
74HC版MYCPU80では内部レジスタ用に74HC373を18個も使っています。
ということは、160×18=2880個!
いやいやいや、レジスタだけで、約3000個!
これはなんとかしないと、ここだけでもうアウト!になってしまいます。
ここは知恵を絞って、なんとか少しでもトランジスタ数を減らす工夫をしたいところです。
まずコアになるRSフリップフロップですが、ここをなんとかできないかと、かなりあれこれやってみたのですが、ここはやっぱりどうしようもないようです。
RSフリップフロップ部分はどうしようもないということで、ここがトランジスタ8個ですから×8=64個は最低必要です。
そういうことになりますと、そのほかの部分をなんとかするしかありません。
まずは出力段のスリーステートバッファについて考えてみることにします。
スタンダードな形は左の図になりますが、さらによく考えてみると、ビットごとに必要な回路は点線で囲んだインバータ部分だけで、OE_回路は8ビットにつき1回路あればよいことに気が付きます。
そこでここは右図のようにすれば、インバータ部分が2×8=16で、それにOE_回路の4をプラスして20個になります。
さきほどの64個と足してここまでで合計84個です。
そうそう、忘れないように。
最終段がインバータですから、ここの入力にはRSフリップフロップのD_を接続することになります。
途中ですが本日は時間がなくなってしまいました。
続きは次回にすることにいたします。
トランジスタでCPUをつくろう![第81回]
2015.6.14upload
前へ
次へ
ホームページトップへ戻る