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

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


[第196回]



●命令デコード回路(4)回路の問題点

およそ1週間ぶりの更新になってしまいました。
気長なお付き合いをお願いいたします。

前回はBASICプログラムで回路のテストを行い、見かけ上は正常動作することを確認しました。
しかし回路図を眺めていてあることに気が付きました。
これって、ひょっとするとまずいのでは?
下は[第193回]でお見せした回路図です。

左側の回路を見ると、OP3とOP4の入力に対してはA1015とC1815がペアになっています。
ところがその下側OP5に対してはC1815しかありません。
この回路はOP3とOP4とOP5のAND回路(正確にはNAND回路)です。
OP3〜OP5までの組み合わせによってL出力になる回路が8回路あります。
そこを省略して1つの回路図で済ませています。
その組み合わせのために回路の入力としてOP3〜OP5をもとにしたインバータ回路経由のOP3_〜OP5_も使います。
見たところ上の回路で問題はないと思っていたのですが。
よくありませんでした。

そもそもなぜL出力を得る回路にC1815だけではなくてA1015が必要なのかという、そもそものところをうっかり失念しておりました。
たとえば上の回路でOP3=OP4=OP5=Hのときは出力はLになります。
それ以外のときは出力はHになるはずなのですが、そこに穴がありました。
OP3=0またはOP4=0のときはC1815側はOFFになりますが代わりにA1015がONになるため出力はHになります。
ところがOP5=0のときはC1815側はOFFになりますが、ペアになるべきA1015がありません。
この場合には出力はハイインピーダンスになります。
出力回路には抵抗があって+5Vにプルアップされていますから、結局のところ出力はHとなります。
それでいいんじゃないの?
ところがですね。
それでよいのでしたらOP3やOP4のA1015も要らないという理屈になります。

なぜ必要なのか?
出力トランジスタ(C1815)がOFFになって、プルアップ抵抗によってHになる場合、LからHになるには時間がかかるのです。
それを瞬時に立ち上げるためにはA1015が必要になります。

下の写真は上の回路の入力信号と出力信号の波形です。

上側(CH1)がOP5で下側が回路からの出力波形です。
OP3=OP4=Hの状態で撮影しました。
OP5がLからHになったときは出力はシャープに立ち下がっていますが、逆にOP5がLになったときは出力はゆっくりと立ち上がっています。
1/2Vccを越えるまでに1μSぐらいかかっています。
前回のテストはBASICプログラムで行いました。
BASICは実行速度が遅いので、この程度の遅れは問題になりません。
ND80Z3.5の場合CPUクロックは6MHzなので、マシン語のプログラムでも多分このぐらいの遅れは問題にならないかと思います。
しかし、トランジスタで作るCPU回路の動作としては、これはダメです。
私の考えるスペックとしては、許容できる立ち上がり、立ち下りの遅れ時間は20nS以下です。

やっぱり手抜きが災いしてしまいました。
ここは手抜きなどしないできっちりA1015とC1815のペア回路にするべきでした。
ということになりますと。
またしても試作基板の作り直しです。
新年早々とほほであります。

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

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