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

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


[第166回]



●バイナリカウンタ回路(2)

前回からの続きです。
74HC75型のラッチ回路はクロックがHの期間中は入力データが筒抜けになってしまいます(この期間は入力データをラッチできません)。
クロックがLの期間はクロックが立ち下がるときにラッチしたデータを保持します。

ここでアイデアがひらめきました。
それならば。
74HC75型のラッチ回路を2個用意してお互いを補えばよいのではないか?

ここでそのアイデアの説明に入る前にひとつ注記しておくことがあります。
実際のバイナリカウンタではクロックの立下りに同期して出力が変化します。
しかし74HC75型を利用するバイナリカウンタでいきなりその動作にもっていこうとすると考えが混乱します。
それを避けるために、以下の説明では、とりあえずはクロックの立ち上がりに同期して出力が変化することにします。
最終的にクロックの立下りに同期して出力が変化するようにするには、回路の一部を必要に応じて変更することで実現することができます。

さて、それで。
2つの74HC75型ラッチ回路を直列に2段に接続します。
前方のラッチ回路はクロックLで入力データをラッチしてLの期間中それをQ1、Q1_から出力します。
そのQ1_出力を後方のラッチ回路に入力します。
後方のラッチ回路には前方の入力クロックを反転したものをクロックとして与えます。
すると前方のクロックLの期間中は後方のラッチ回路は筒抜けですから、前方から出力したQ1_がそのまま後方のQ2、Q2_出力になります。
そのQ2出力を前方のラッチ回路の入力として戻します。
このQ2はQ1_と同じですから、結果として前方のラッチ回路の入力が反転することになりますが、クロックがLの期間中なのでその反転した入力はまだ前方のラッチ回路には影響しません。
この状態で前方のクロックがHになるとその期間は前方のラッチ回路は筒抜けになりますから、今までのQ1、Q1_がそれぞれ反転して出力されます。
すると後方のラッチ回路の入力が反転することになりますが、そのときは(前方のクロック入力がHのときは後方のクロック入力はLなので)Q2はラッチされたままで変化しません。

うーん。
文章ではなかなかうまく説明できません。
図で説明することを考えたのですが、それもなかなかうまく表現できません。
なんとか工夫して、こんな図を描いてみました。

Q2_は説明の動作としては関係ありませんので省略しました(もちろんラッチ回路としてはQ2_の回路そのものを省くことはできません)。
図の太線はラッチされているデータを示します。
細線は入力が筒抜けになっていてラッチされていないことを示します。
ラッチはされていないのですが、その期間はその入力としてそこに出力されている値がラッチされているため、変化しないで見かけ上ラッチ出力と同じように見えます。
ここでは最初にD1に入力される値がHだとしています。
このHは実はQ2出力なのでラッチされています。
それから以後の動作は上の説明を参考にして追ってみてください。
図ではCKが立ち下がったときにD1がLになっているのに、Q1がHでラッチされているのがおかしいように感じられるかもしれません。
実は図の上から下に向けて信号が伝達されていく過程で少しずつ遅延が生じています。
Q2がD1にループして戻った時点ではCKはすでに立ち下がっているため、その立下り時点ではD1(Q2)は変化する前の値としてラッチされます。

前回の回路図は上記の動作をするように考えたものですが、CKについてはバイナリカウンタ本来の動作になるように、CKの立下りに同期して出力が変化する回路になっています。

回路を変更したため使わなくなった試作基板を利用して、前回の回路図の回路をテスト用に組みました。


上の写真を拡大しました。

真上から撮影した写真なのでトランジスタは頭しか見えませんが、基本的に上から22pF、51KΩ、A1015、22pF、51KΩ、C1815で1組のインバータを構成しています。

CK入力とQ1出力の波形です。

測定ポイントの関係でCK入力の立ち上がりに同期して出力が変化しています。
上側(CH1)がCK入力(4MHz)で下側(CH2)がQ1出力(2MHz)です。

時間軸を50nsにしました。

出力遅延は20ns程度で、4MHzのクロックに対して十分過ぎるほどの応答性能を発揮しています。
自画自賛でありますが、トランジスタ回路でこれだけの速度が得られれば、優秀ではありませんか。

と手放しで喜んでいましたら。
とんでもない落とし穴がありました。
次回に続きます。

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

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