2018-12-25 23:45 — asano
カテゴリー:
作ったけど動作していなかったZ280ボード、動くようになりました。今回はその過程を書いてみたいと思います。
まずは私の常套手段、周波数カウンタであちこち測定してみました。動かすたびに状況が異なることがあるのですが、かなり高い確率で次のようになっていました。
信号 | 周波数 | 備考 |
---|---|---|
MREQ | 289kHz | |
IORQ | 0 | |
RD | 0 | リセット直後には少し出ています |
WR | 39kHz | |
RFSH | 250kHz | |
M1 | 250kHz |
ここから以下のことがわかります。
IORQが0なことからI/Oアクセスはありません。RDが0であることからメモリリードもされていないことがわかります。命令フェッチは? と思うかもしれませんが、Z280はリセット時に命令キャッシュが有効になっていますので短いループを回っていればフェッチが発生しない可能性はあります。
MREQの周波数はWRとRFSHの周波数の和になっていますが、MREQはリフレッシュ時にもメモリライト時にも出力されるので辻褄は合っていますね。
Z280は特別な場合(RETI
命令実行時と割り込み応答時)以外M1を出力しないので0でも異常ではありません。
これで意図した動作はしていないものの、デバイス自体は正常らしいと思えてきます。
ただバスがマルチプレクスされているのでこれ以上追うのは難しいですね。
そこでMEMW(MREQとWRのAND)などでアドレス・データをラッチする回路を追加してみました。
ラッチされたデータを見てみるとD7, D6, D0はHでもLでもない電圧、周波数は約19.5kHzでした。D5~D1はLとなっていました。2つのデータを交互にライトしているようです。
アドレスはA0のみが変化しているので、固定アドレスに2バイトデータをライトしているらしい。
ROMの大半は0FFHで埋められているのでRST 38H
命令を実行して戻りアドレスをPUSHし続けていることを疑っていたのですが違っていました。もしそうならアドレスが変化するはずですから。
次にMEMRでラッチしてみました。これはリセット直後しか出ないのですが、リセットを繰り返しながら見てみます。するとA0, A2は動くのにA1がまったく動きません。
どうやらA1がどこかで切れているようです。
導通チェッカで追っていくと、Z280ボード上のアドレスラッチ74HC574のところでハンダ付け不良がありました。配線にはワイヤラッピング用の線材を使用しているのですがハンダあげが不十分だったのが原因のようです。いつも気をつけているんですけどね。
そこを修正したところあっさり動くようになりました。
一点のハンダ不良見つけるためにいったい何箇所のハンダ付けをしたのだろう...
コメントを追加