トランジスタでCPUをつくろう!
トランジスタで8080をつくってしまおうというまさにびっくり仰天、狂気のプロジェクトです!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
見事にできましたら、もちろんTK−80モニタを乗せて、それからBASIC、CP/Mを走らせましょう!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
[第398回]
●4MHzでADD、SUBが正しく実行されません
前回でやっと回路図の説明が終りました。
これで4MHzクロックにしたことでその後にみつかった問題について書くことができます。
今回のタイトルについての問題です。
もちろんこの問題も今は解決済みです。
解決済みですけれど、過去に戻って私自身の備忘録を兼ねて書いています。
4MHzにクロックアップしたところJMP命令で暴走してしまうという問題は[第390回]で解決したつもりだったのですが。
念のために何回かテストをしているうちにどうもADDやSUBの計算結果がおかしいことに気が付きました。
ALU回路がおかしい?
いや、それも変な話です。
試しにCPUクロックを1MHzにしてみると正しく計算されます。
2MHzにしても正しい結果が出ます。
どういうわけかCPUクロックを4MHzにすると正しく計算してくれません。
間違った計算結果になってしまいます。
4MHzのときにALU回路で何かがおきているようです。
こういうときはカメレオンロジアナの出番です。
[第259回]で使ったテストプログラムMC4T2B.TXTを実行してロジアナでALU回路の出力波形を観測してみました。
PROBE00はMCLKです。
PROBE01〜PROBE04はALU回路からの出力(X0〜X3)です。
PROBE05はALU回路からの出力値をALUlatch回路にラッチするための信号ALUWRHです。
ALU回路の回路図は[第396回]で説明しています。
ロジアナの波形を見ますとALU回路からの出力がかなり乱れています。
なんじゃこりゃあ?
さてはノイズか?
いや、それにしては乱れ方が激しすぎます。
Aレジスタの値が3でBレジスタの値が5でADD A,Bを実行していますから計算結果は8です。
ALU回路からの出力はPROBE01〜PROBE04に出ています。
その出力が0、0、0、1になって安定するのはMCLKが立ち下がってから300ns近く経ってからです。
うーん。
ちょっと遅いのでは?
PROBE05のALUラッチ信号はALU回路からの出力が安定するより前にLになってしまっています。
ALUWRHがHからLになるとき(同時にALUWRLがLからHになるとき)にALU回路からの出力データがラッチされます。
うむむ。
これじゃあ計算結果が正しくなくても当たり前です。
しかし。
CPUクロックが2MHzや1MHzのときには正しい結果になったはず。
CPUクロックが2MHz、1MHzのときについても同じテストを実行してロジアナで確認してみました。
こちらはCPUクロック2MHzでの観測結果です。
あれ?
ALU回路からの出力はやっぱり乱れていますねえ?
でもどうして計算結果が正しい?
そうか。
2MHzではPROBE05のALUWRHがHからLになるのはALU回路からの出力データが安定してから200nsも経ってからです。
それで2MHzでは正しい結果が得られているようです。
ということになると当然1MHzでも?
こちらはCPUクロック1MHzでの観測結果です。
ALU回路からの出力はやっぱり同じように乱れています。
CPUクロック1MHzではPROBE05のALUWRH信号はさらに出力されるのが遅くなるため信号が立ち下がるところはこの画面では見えませんが、当然ALU回路からの出力データが安定してからかなり経ってからラッチされることは間違いないでしょう。
さて。
ロジアナでの観測の結果次のことがわかりました。
なぜかALU回路からの出力が大きく乱れて、それが安定するのはMCLKが立ち下がってから約300ns後です。
CPUクロックが4MHzのときはALU回路からの出力がラッチされるのはMCLKが立ち下がってから約250ns後なので正しい計算結果はラッチされません。
そういうことだったのですが。
うーん。
困りました。
4MHzでこの問題をクリアするには、なんとかALU回路からの出力データの乱れを無くさなくてはなりません。
いえ。
たまたま1MHzや2MHzでは値がラッチされるまでに安定しているために今までこの現象に気が付かなかっただけで、このおかしな乱れはCPUクロックが4MHzではなくてもなんとかしておかなければなりません。
うむむ。
とんでもない問題にぶち当たってしまいました。
とても金麦で乾杯して喜んでいる場合ではありませんでした。
もう気分は一転して今年の8月の空そのもの、それはそれはgloomyでありました。
トランジスタでCPUをつくろう![第398回]
2021.9.7upload
前へ
次へ
ホームページトップへ戻る