現在地

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


テーマ:

カテゴリー:

MN1613のステップ実行(その1)以降、少し進展がありました。

一つ目はアドレスバスとMEMR, MEMWをLED表示する基板を用意したこと、これで1本ずつテスタで電圧を測る必要がなくなりました。

本当はIOR, IOW, FSYCなども見たいところなのですが、EMILY Boardのリボンケーブルを利用する形にしたので諦めました。アドレスの上位4ビットは未使用ピンに割り当てたのですが、あまり今回だけの信号を割り当てるのは避けたかったのです。数も少ないことですしテスタ対応すればすむことです。

データバスはコネクタまでは準備したのですがLEDは未実装です。ステップ動作中でもメモリの内容はEMILY Board側から自由に参照・変更できるのでとりあえず無くても何とかなりそうだからです。

二つ目は勝手に走ってしまう問題の解決です。ハンダ付けの怪しいところを修正して回ったところ解決しました。

1本ずつ確認しながらではなかったのでどの信号が原因だったのかは確定しませんでしたが、DTAKが疑わしいと考えています。MN1613のこのピンはもともとプルダウンしていて、止めるときにこれを"H"にする回路を追加したのですが、断線すると"L"になって止まらなくなります。

ということで準備ができたのでリセット状態からのバスの動作を見ていきます。
条件はHLT, IRQ0, IRQ1, IRQ2, STRTは"H"固定(プルアップ)、CSRQ/RUNもプルアップしています。この状態でRSTを"H"→"L"にして実行します。その後、EMILY BoardのPB5を"H"→"L"→"H"して(前回の回路図参照)ステップを進めます。

  1. A(アドレス)=X'0000', IOR, FSYC="L"
    なぜかいきなりIORです。資料が少なくてなんともいえないのですが、MN1610と同様であればコンソール機能が発動しているのかもしれません。このときデータバスは誰もドライブしていないはず且つプルアップ・プルダウンもされていないのでアドレスラッチしたときのX'0000'が読み込まれたと思います。
  2. A=X'0002', MEMR, FSYC="L"
    これもなぜX'0002'を読んでいるのか不明です。メモリのX'D707'が読み込まれたはずです。
  3. A=X'0003', MEMR, FSYC="L"
    これもなぜX'0003'を読んでいるのか不明です。メモリのX'D707'が読み込まれたはずです。
  4. A=X'D707', MEMR, FSYC="H", ここでCSRQ/RUNが"L"に変わりました。
    X'D707'は上のX'0002', X'0003'のメモリ内容です。X'0002', X'0003'はレベル1割り込みのSTR, ICの退避領域なのでLPSW 1命令が実行された可能性があります。なぜ実行されるのかは不明ですが。もしそうならSTRにもX'D707'が格納されているはずです。
    FSYCが"H"なのでこれは命令フェッチです。X'D707'のメモリ内容はX'A09C'、これはST R0,X'9C'(X0)命令でR0の内容をX0+X'9C'番地に書き込む命令です。
  5. A=X'D708', MEMR, FSYC="H"
    続いて次の命令のフェッチ、書き込みが無いのはパイプラインのせいなのでしょうか?
    X'D708'のメモリ内容はX'02D2'、これは未定義命令です。
  6. A=X'D707', MEMR, FSYC="H"
    再びX'D707'からの命令フェッチ、よくわかりません。
  7. A=X'D708', MEMR, FSYC="H"
    再びX'D708'からの命令フェッチ、よくわかりません。
  8. A=X'0000', MEMW
    X'0000'番地への書き込み、メモリ内容はX'D707"→X'8707'となりました。これはレベル0割り込みのSTRの保存と思われます。上でSTRにはX'D707'が入っているはずと書きましたが、STRには未使用で"0"固定のビットがあるのでX'8707'になります。
  9. A=X'0001', MEMW
    X'0001'番地への書き込み、メモリ内容はX'D707"→X'D707'となりました。これはレベル0割り込みのICの保存と思われます。
    レベル0割り込みは未定義命令の実行でも発生するらしいのでX'D708'からの命令フェッチが引き金になったのかもしれません。なぜ書き込まれたのがX'D708'やX'D709'ではなくX'D707'なのかは謎です。
  10. A=X'0100', MEMR, FSYC="L"
    レベル0割り込みのベクタ(STR)の読み込みと思われます。メモリ内容はX'0000'です。
  11. A=X'0101', MEMR, FSYC="L"
    レベル0割り込みのベクタ(IC)の読み込みと思われます。メモリ内容はX'010A'です。
  12. A=X'010A', MEMR, FSYC="H"
    上で読んだICから実行する最初の命令フェッチです。

何か長くなってしまいました。
まだ不明な点が多いのでもう一度資料を読み直してみようと思っています。あとはメモリの内容をいろいろ変えながら試してみるのも有効かもしれません。

参考文献・関連図書: 
MN1613データシート, National.
「Panafacom L-16A LSI説明書」パナファコム.

コメントを追加

Plain text

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