トランジスタでCPUをつくろう!
トランジスタで8080をつくってしまおうというまさにびっくり仰天、狂気のプロジェクトです!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
見事にできましたら、もちろんTK−80モニタを乗せて、それからBASIC、CP/Mを走らせましょう!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
[第174回]
●マシンクロック(Tクロック)回路
前回までCPUクロック回路について書いてきました。
CPUクロック回路はトランジスタCPU回路の中でも最重要な回路ですが、実はそのクロックは直接使われるものではありません。
前回までのCPUクロック回路の出力をもとにして、実際にCPU回路で使われるクロックを作る必要があります。
それがこれから説明するT、M、Wの各クロックです。
CPUクロックについては[第164回]で、MYCPU80の回路図を参考のためにお見せしました。
下に再掲します。
もとになるCPUクロックを分周して得られるA、B、C、D、Eの出力クロックからT、M、Wを作り出します。
たとえばT0はA=B=C=D=E=0の期間に1になります。
T1はA=1、B=C=D=E=0の期間に1になります。
M0はB=C=D=E=0の期間に1になります。
M1はB=1、C=D=E=0の期間に1になります。
W0はC=D=E=0の期間に1になります。
W1はC=1、D=E=0の期間に1になります。
Tクロックは別名マシンサイクルのクロックです。
CPUの命令動作の最小単位です。
CPUの命令はTクロックの進行にしたがって必要な処理を行ないます。
MクロックはTクロックの倍幅の信号です。
2マシンサイクルを使って処理する命令動作のためのクロックです。
WクロックはMクロックの倍幅の信号です。
4マシンサイクルを使って処理する命令動作のためのクロックです。
さてそれではマシンクロックTを作り出す回路についてですが、MYCPU80では上の回路図のように74HC238を使って作り出しています。
しかしトランジスタ版CPU回路では全てをゲートロジック回路で作らなければなりません。
そこでT0をゲートロジックICで作る回路を考えてみます。
T0はA=B=C=D=E=0のときに1になりますから下の左の回路になります。
74HC02と74HC04と74HC11の組み合わせです。
このほかにも74HC10と74HC11でも作ることができますし、そのほかの組み合わせも考えられます。
ところでトランジスタロジック回路は基本的に入力と出力が反転する回路がもとになります。
ですから上左図のように74HC11そのものの回路を作ることはできません。
ここは上右図のように一旦74HC10で受けてそれを74HC04で反転させることになります。
上図右のロジック回路をそのままトランジスタロジック回路で表したのが、上図の下側の回路です。
T0だけの出力でトランジスタを18個も使ってしまいます。
TクロックはすくなくともT0〜T20まで必要ですからいくらなんでもこのままの回路はちょっといただけません。
幸いトランジスタのゲートロジック回路はTTLロジックICのように2入力とか3入力に限って考える必要はありません。
5入力のロジック回路を考えることもできます。
そこで5入力のロジック回路をトランジスタで考えてみました。
トランジスタ版5入力NOR回路です。
使用トランジスタはほぼ半減して10個になりました。
この回路をもうひとひねりして作ったのが下の回路です。
トランジスタCPU回路のTクロック回路の回路図です。
ジャンパピンでD入力とD_入力を切り換えることで、同じ回路基板を2枚使ってT0〜T7とT8〜T15を出力することができます。
T0〜T15ではクロックEは常にLです。
T0〜T3(T8〜T11)とT4〜T7(T12〜T15)をひとつの回路図で示しています。
ちょっとわかりにくいかもしれません。
3つあるトランジスタ回路の一番上の回路はこの回路1つだけでT0〜T3(T8〜T11)とT4〜T7(T12〜T15)のすべてに共通する回路になっています。
この回路はT0〜T7(T8〜T15)回路基板にただ1回路しかありません。
4個のトランジスタのうちT1、T2、T3がT0〜T3(T8〜T11)に対して共通の回路で、T1、T2、T4がT4〜T7(T12〜T15)に対して共通の回路です。
その下の2つの回路はT0〜T3(T8〜T11)とT4〜T7(T12〜T15)のそれぞれに個別の回路です。
つまりそのうちの上側の回路はT0、T1、T2、T3(T8、T9、T10、T11)の4回路として、また下側の回路はT4、T5、T6、T7(T12、T13、T14、T15)の4回路としてクロックT0〜T7(T8〜T15)回路を構成しています。
個別の回路のトランジスタは7個で、それに共通部分のトランジスタ3個を加えると10個になります。
なんだかややこしいことをしているようですが、実はさきほどのトランジスタ版5入力NOR回路と同じ回路になつています。
共通部分を作ったことで8回路でトランジスタを80個使用するところを60個に削減できました。
下が作成したプリント基板です。
サイズは100mm×100mmです。
パーツを実装しました。
次回に続きます。
トランジスタでCPUをつくろう![第174回]
2019.11.4upload
前へ
次へ
ホームページトップへ戻る