現在地

MN1613のステップ実行(その1)


テーマ:

カテゴリー:

以前、MN1613のリセット時に何かあるようだと書きましたが、このまま放置するのは気持ち悪いので少し追ってみることにしました。

16チャンネル以上のロジアナでもあれば簡単なのでしょうが残念ながら持っていません。

簡易タイプを買おうとも思うのですが、どうせ買うならもうちょっとと欲が出てしまいなかなか候補を絞れません。

幸いMN1613のメモリアクセスはハンドシェイクなのでそれを利用してステップ実行を試みることにします。

ステップ回路
手っ取り早く追加してみたのがこの回路です。

正確には追加したのはプルアップ・プルダウンの左側のみです。ジャンパを両方切ればBSAVは"H"に、DTAKは"L"とアクティブなままとなって通常動作になります(変更前と同じ)。
もっと簡単にするにはプルアップ・プルダウンをはずしてBSAVDTAKを直結すればインバータも不要にできます。ただその場合は通常動作に戻しにくくなるのでこのようにしています。

ステップ回路は普通タイミング検討が厄介なのですが、MN1613は幸運なことにバスの使用権と実際のアクセスの2つが交互に出るのでそれを利用して回路を簡略化しました。

  1. BSRQが出力されて、BSAV待ちになる
  2. 本回路に"H"を入力してBSAVに"H"を出す ⇒ 先へ
  3. DTSDが出力されて、DTAK待ちになる
  4. 2.でDTAKは"H"になっているのでとまる
  5. この状態でデータバスやアドレスラッチなどの信号を観測可能
  6. 本回路に"L"を入力してDTAKに"L"を出す ⇒ 先へ
  7. 1.に戻る

"H"を入れても"L"を入れてもどちらかのポイントで止まるのでタイミングを細かく考える必要がありません。

どことなくマスタ・スレーブのフリップ・フロップや機械時計の脱進機に似ているような感じがしています。

極端な話トグルスイッチを付けてもいいのですが、チャタリング除去はさすがに必要なので、EMILY Boardのマイコンに頼ることにしました。コマンドを追加して"H"/"L"を出せるようにしておきます。

DTSDにカウンタを繋いで動かすと確かにメモリアクセスごとに止まっているようです。

リセット解除してもCSRQ/RUNはすぐに"L"にはならず、メモリアクセス2回の後"L"になるらしい(STR, IC読んでからか)といったことがわかって面白いです。

ところが肝心のアドレス・データを調べ始めたところおかしな現象が出てしまいました。

テスタで1ビットずつチェックしていると突然CPUが走ってしまうことがあるのです。時間はまちまちなので何らかのタイムアウトとは考えにくいのですが、まだよくわかっていません。ハンダ付け不良やコネクタの接触の問題などで意図しないパルスが出てしまっているのかもしれません。

基板のチェックもしつつ、アドレス・データをLED表示するボードを用意してみるつもりです。

参考文献・関連図書: 
MN1613データシート, National.

コメントを追加

Plain text

  • HTMLタグは利用できません。
  • ウェブページアドレスとメールアドレスは、自動的にハイパーリンクに変換されます。
  • 行と段落は自動的に折り返されます。
※ コメントは原則公開です。個別のご相談などは「ご意見・ご要望」からお願いします。