CPU実験室

誰も見向きもしない古いCPUをいじって動かしてみようというプロジェクトです

アドレスバス異常?

 
単純ループがうまくいったので、次はアドレスデコーダが正常に機能するか、
オペランドのアドレス値をかえて実行してみました。
 
ここでは先頭で1番地のデータをバスから読み込むようにしただけの変更です
 
イメージ 1
 
ところがこのプログラムを実行してみるとどうも動きが変です。LEDのチカチカが一定でないというか
(実際には速過ぎて目ではわかりませんが)
オシロでみてみると以下のように時々Lレベルのパルス幅が引き伸ばされています
(ch1:clock ch2:RESULT信号)
 
イメージ 2
これはどうも妙です。
プログラムカウンタがどこを指しているかオペランドの最下位に当たるアドレスバスA0ラインをプローブしてみました
(ch1:clock ch2:A0信号)
 
 
イメージ 3
すると信号がえらいことになっていて、L→Hに遷移するときめちゃくちゃに暴れています。アドレスA0がL→Hになるのはコード上、ループして先頭番地戻ってきたところ1回だけなのでここのジャンプ処理がおかしそうです。
この部分を拡大してみると
 
 
イメージ 4
 
周波数は約1.6MHz。クロック周波数よりも遥かに高速に振動しています。
こんなタイミングはどこにも使っていないわけでその由来が謎です