トランジスタでCPUをつくろう!
トランジスタで8080をつくってしまおうというまさにびっくり仰天、狂気のプロジェクトです!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
見事にできましたら、もちろんTK−80モニタを乗せて、それからBASIC、CP/Mを走らせましょう!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
[第433回]
●エッジパルス発生回路を再検討する(2)
前回はトランジスタ2個だけのエッジパルス発生回路を考案しました。
下の回路です。
エッジパルス発生回路はバイナリカウンタ回路のRSフリップフロップを1段だけにするために必要な回路です。
それを考えた時点ではトランジスタを6個使う回路でした([第411回])。
バイナリカウンタ回路は1ビットごとにRSフリップフロップとエッジパルス発生回路を1組必要とします。
ですからそこでRSフリップフロップが1段になってさらにエッジパルス発生回路のトランジスタが4個削減できればバイナリカウンタ全体では大幅なトランジスタ数の削減が見込めます。
ですがそんなに簡単にことが進むものかどうか実際にバイナリカウンタ回路に組み込んで試してみなければなりません。
テストのためのバイナリカウンタ回路は[第420回]で既存のプリント基板を利用して試作した回路を利用しました。
このときはエッジパルス発生回路とRSフリップフロップ回路は別の基板でそれぞれ作成し、テストの都合もあってエッジパルス発生回路のCKVをRSフリップフロップ回路の前段に設けたCKG回路(インバータ)に接続してテストを行ないました。
今回はそのときの試作基板を利用しましたので実際のエッジパルス発生回路は上の回路ではなくて下の回路になりました。
CKG部分がオープンコレクタではありませんが多分テストには大きく影響はしないと思います。
それで。
そのようにしてテストをしてみたのですが。
結果は残念ながらアウトでした。
上側(CH1)はCKIN(1MHz)で下側(CH2)はQ_出力です。
RSフリップフロップ部分の回路は[第420回]の回路図を参照してください。
どうもRSフリップフロップがうまく機能していないようです。
ひょっとするとCKVの立ち上がりがなまっていることが原因ではないかと考えました(前回[第432回])。
そこでオープンコレクタのプルアップ抵抗を小さくしてみました。
R5(1KΩ)に1KΩを並列につないで計算上は500Ωにしてテストをしてみました。
うーん。
もう一息という感じです。
そこで今度はR5(1KΩ)に560Ωを並列につないでテストをしてみました。
(1×0.56)/(1+0.56)≒0.36ですから計算上のプルアップ抵抗の値は約360Ωです。
まだだめでした。
下はこのときのCKVの波形です。
立ち上がりの波形はそれほど悪くはないと思うのですけれど。
ひょっとするとパルス幅が原因かもしれません。
このときのCKVのパルス幅は100nsほどです。
インバータ×2+NANDで構成したエッジパルス発生回路でも当初は150nsぐらいのパルス幅で試したときもありました。
でもそのときと今とでは回路が違ってきている可能性もあって何とも言えません。
最終的に確認したのは前回でそのときのCKVのパルス幅は80nsほどでした。
近いのですけれどねえ。
このパルス幅はQ_出力の先の遅延回路の遅延時間に関係してきます。
そこをもう少し遅延させればよいのかもしれません。
しかし本体に手をつけるよりはCKVのパルス幅を狭くするほうが先でありましょう。
CKVのパルス幅を狭くするということになりますと。
最も直接的に効果があるのはコンデンサ(C6)の値を小さくすることです(下図)。
C6は今まで22pFでした。
ここを10pFに変えてみました。
すると。
おお。
Q_出力が安定しました。
このときのCKVの波形です。
確かにパルス幅は狭くなりましたが。
立ち上がりの波形はちょっと気になります。
下は水平時間軸を拡大した画像です。
+2.5Vのあたりでのパルス幅は60nsほどです。
しかし立ち上がりの勾配や波形は確かにちょっと気になります。
さて。
どうするか。
上のほうで行なった22pFのときのテストではプルアップ抵抗の値を小さくしてのテストも行ないました。
そこでそれと同じように今回のテストでもプルアップ抵抗の値を変えてみることにしました。
22pFのときと同じようにR5(1KΩ)に1KΩを並列につないで計算上は500Ωにしてテストをしてみました。
立ち上がりの波形はよくなりました。
+2.5Vあたりでのパルス幅は40nsほどです。
波形もきれいになりました。
今度はR5(1KΩ)に560Ωを並列につないでテストをしてみました。
(1×0.56)/(1+0.56)≒0.36ですから計算上のプルアップ抵抗の値は約360Ωです。
パルス幅や立ち上がり波形にわずかの差はあるようですがそれほど大きな差は見られません。
以上のテストの結果から考えるとC6=10pF、R5=510Ωとするのがよいと思います(500Ωという抵抗は一般的ではありません。510Ωか560Ωが入手し易い値です)。
ところで。
ここまではCKVについて確認してきました。
CKGについては上のほうに書きましたように先にテスト回路として試作したバイナリカウンタ回路の中のインバータ回路にCKVを入力する形でテストを行なってきました。
しかしCKGについても最終的には下の回路にしたいと考えています。
今回最初にお見せした回路です。
この回路ではCKGはT7(2SA1015)のオープンコレクタ出力になっています。
CKGのプルダウン抵抗(R8)は1KΩですが、CKVの波形を検討した結果プルアップ抵抗(R5)は510Ωにすることにしました。
ということからするとこのR8についても確認をしておいたほうがよさそうです。
まずはR5=500ΩのときにR8=1KΩのままでCKGの波形を確認してみました。
立ち上がりはよいのですが立ち下がりのほうはかなり緩やかな勾配になっています。
+2.5Vあたりでのパルス幅は60nsほどですからそれについては問題はないと思えますが…。
R8も500Ω(1KΩ2本を並列)にしてテストしてみました。
立ち下がりの勾配がわずか改善しました。
やっぱりR8もとりあえずは510Ωに変更したほうがよいようです。
ほんとうはCKGについてももう少し進んでテストができるとよいのですが。
バイナリカウンタ回路にこの波形のままCKGとして接続してもよいのかどうかについて今まで作った試作回路に接続して確認しようとすると試作回路に手を入れなくてはなりません。
今はそこまでやっているだけの時間がありません。
実は。
[第422回]〜[431回]で書きましたプリント基板のほかに今回の回路を含めてまだ何枚かの基板を作図してすでに基板の製作を発注済です。
そのあたりのことについても順次書いていくつもりです。
ですので。
今回のCKGについてもプリント基板ができてきたらそれを使ってあらためて動作の確認をしてみるつもりです。
トランジスタでCPUをつくろう![第433回]
2024.3.18upload
前へ
次へ
ホームページトップへ戻る