標準TTLだけ(!)でCPUをつくろう!(組立てキットです!)
(ホントは74HC、CMOSなんだけど…)
[第73回]
●回路図の訂正(の続き)です
せっかく[第45回]で追加した、MEMWRのためのフリップフロップ回路は、結局削除してしまいました。
前回お話したWKHレジスタが書き換えられてしまうトラブルの原因を追求する過程で、どうもフリップフロップはいかにも危なっかしい、という気がしてきて、トラブルの原因かどうかは別として、とりあえず外してみることにしました。
結局、トラブルの原因はフリップフロップではなくて、前回説明しましたように、d3〜d0の立ち上がりの遅れが原因だったことがわかりましたが、よくよく考えてみると、わざわざフリップフロップ回路を使わなくても、MOV回路にHLselとdataOUTを出力するゲートを追加しておけばよいだけの話ですし、その後に2枚目の基板について確認作業を進めていくと、HLselとdataOUTを伴うMEMWRはそれほど多くはないことがわかってきました。
それならば、MOV命令の回路など、必要な部分にHLselとdataOUTの出力回路を追加しておくというのも、まんざらまずい選択でもなさそう、という結論になったので、削除してしまったのです。
ということで、またまた変更になってしまったMOV、MVI命令の回路図です。
追加したのは、右上と右下のHLselとdataOUTの出力回路です。
右下はMVI (M),I8の回路で、d2〜d0=”110”をデコードしてregRDを出力していましたので、ここにHLselとdataOUT出力のための74HC05ゲートを追加しただけです。
右上は、新たに、d2〜d0=”110”のデコード信号を使ってHLselとdataOUT出力を追加しました。
うーん。
二転三転した結果こんなところに落ち着きましたが、これだけの回路の追加で済んでしまうのなら、フリップフロップよりもうんと安全ですし、やっぱりこの方がいいですね。
なお前回は、速度を要求されるCPU回路では74HC03や74HC05の代わりに、全部を74HC126に置き換えてしまわなければならない、などと書きましたが、回路によっては74HC03や74HC05のままでも問題はありません。
ただ今回問題になったregWRの回路は、本来はd3〜d0の出力を74HC126にすべきです。
もともとOPコードのビットをもとにしているところでは74HC126を使っていますから、そうではなくて、74HC03や74HC05からの出力になっているところは74HC126に変更したほうが本当はいいでしょう。
でも今回は、試作ですし、高速で動作させる、というよりも、ステップ動作や、回路の動作が目で見える程度の低速クロックで動作させる、というほうが目的にかなっているとも思いますから、わざわざ74HC126に変更するまでのことはなく、今回のように、regWR信号のはばをせばめる、という対策でよいのでは、と思います。
それにしても、前回写真でお見せした、d0信号の立ち上がりの遅れは、ちょっときびしい感じです。
ひょっとすると200nsくらいはありそうで、すると前回説明したregWRパルスについての対策をもってしても、この部分については、4MHzはちょっとクリアできそうにありません。
多分2MHzに落とさなければだめだと思います。
まあ、高性能CPUを作ろう、などというコンセプトではありませんから、それならそれでもよいのでは、ありませんか?
2008.9.20upload
前へ
次へ
ホームページトップへ戻る