2021.6.28
前へ
次へ
ホームページトップへ戻る

トランジスタでCPUをつくろう!
トランジスタで8080をつくってしまおうというまさにびっくり仰天、狂気のプロジェクトです!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
見事にできましたら、もちろんTK−80モニタを乗せて、それからBASIC、CP/Mを走らせましょう!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆


[第369回]



●PC(プログラムカウンタ)の回路図(2)

プログラムカウンタはデータセットとクリアができるインクリメントバイナリカウンタです。
データセットはジャンプ命令の実行時に使われます。
インクリメントバイナリカウンタはデータレジスタ回路を発展させたものとして考えられます。
クロック入力時にひとつ前の時点のQ_出力をループバックしてラッチ回路の入力に戻すことによってクロックの倍の周期のパルスを出力させることができます。
その回路をビットの数だけ並べることでプログラムカウンタになります。
前回お見せした回路はQ_ではなくてQを入力にループバックしていますが、実はこの回路は反転入力になっているため結果としてQ_を入力しています。
下は前回お見せした変更後のPC本体回路です。


「トランジスタ技術」誌2020年5月号特集では、カウンタ回路はDフリップフリップをもとにした回路として解説しています。
そしてそのDフリップフロップ回路はNAND回路を組み合わせた回路で作り出しています。
しかし上の回路図は同誌で説明されているDフリップフリップ回路とは全く異なっています。
NANDゲートを使ったDフリップフロップをもとにカウンタ回路を組むとトランジスタをかなり沢山使うことになります。
もっとも上の回路でもずいぶん沢山のトランジスタを使っていますが、NDNDゲートで構成したDフリップフロップ回路でバイナリカウンタを作ると、この回路よりもさらに多くのトランジスタを使うことになります。
上の回路はトランジスタの特性を生かして「トランジスタのRSフリップフロップ」を発展させることで考え出した回路です。
その考えのもとになった回路は[第159回]で説明をしています。
その基本的な回路をもとにして[第160回][第162回]で改良した結果現在のレジスタ回路に近い形になりました。
この時点ではまだカウンタ回路ではなくて74LS75型のデータラッチ回路です。
それを2段組み合わせることでバイナリカウンタを構成する考えについては[第165回]で説明しています。
その動作原理については[第166回]で説明しています。
その後に[第169回]までのところで一部の回路を改良しています。
この時点でのCLR回路はその後の試行錯誤によって現在の回路に落ち着きました。
その後に少し間を空けて[第178回]からバイナリカウンタをさらに発展させた回路としてINC/DECレジスタについて考えています。
プログラムカウンタはインクリメントレジスタの一種と考えることができます。
プログラムカウンタにはデクリメントは必要ありません。
しかしバイナリカウンタでデクリメントはどうやって実現するのだろうというところに興味があったので、そのままINC/DECレジスタ回路について考えをすすめていくことになりました。
INC/DECレジスタについて検討をすることはそのままプログラムカウンタの検討にもつながると考えたからです。
INC/DECレジスタ回路について考えをすすめていく過程で、試作基板を作って動作の確認もしたのですが部分的な試作基板しか製作しなかったことと動作テストも必要十分なものではなかったことなどがあったため、ここへきてさらに試作、テストをしなければならないという結果につながってしまいました。
そのようにあれこれ試行錯誤もあったのですが、バイナリカウンタ本体回路の基本的な部分は[第180回]の回路が現在の回路のもとになっています。
その後[第201回]での検討によって現在の回路図のR27およびR28の値が4.7KΩに定まりました。
また何回かの試行錯誤の過程を経て信号の入力回路にダイオードを入れていたところは[第347回]のTR126回路の考え方に統一することとしました。

以上プログラムカウンタ回路について今までの流れをざっと説明しました。
当初の簡単な回路から見ると現在の回路はかなり複雑なものになっています。
次回は一見複雑に見える現在のプログラムカウンタ回路をできるだけわかりやすくまとまりごとに分けて説明してみたいと思います。

トランジスタでCPUをつくろう![第369回]
2021.6.28upload

前へ
次へ
ホームページトップへ戻る