2019年6月6日木曜日

Z8010MMU メモ

Twitterに書いたのですが、Z8010 MMUをせっかく手に入れたので繋いでみたところ、思っていたようには動作しませんでした。データシートを読んだり動かしてみてわかった事などを、忘れないよう自分用に書き留めておきます。

やったことは、Z8001の起動用コードをSRAMに書き込むため、Atmega164PからZ8010を経由してアドレスを出そうとしました。

・Z8010は高機能なアドレスラッチではない
 アドレスとセグメント番号を出してASをかけると、ラッチしてアドレスを出してくれると思っていたのですが、それだけではアドレスを出してくれません。Z8010は、Z8001からでるST0 - ST3の信号を見ていて、メモリアクセスの場合だけアドレスを出すようです。
 当たり前といえば当たり前なのでが、てっきり特殊I/Oデバイスとしてのアクセスのためだけに使われている、と思っていのが間違いでした。

・クロックに同期した信号が必要
 これも上と同じく思い違いから来た失敗です。Z8010は、Z8001と同じようにクロックに合わせてアドレスを乗せたり、ASやDSを操作しないと正しく動作しないようです。
必要もないのにクロックを繋がせたりはしないですね。


・単純にRESETをLowにしただけではダメ
 Z8010をリセットするのにRESETを単純にLowにしただけでは、初期化されますがDisableの状態になり働きません。これは、MMUを複数つなぐための仕様のようです。EnableにするにはCSを同時にLowにする必要があります。

・RESETをかけるとアドレス透過モードになる
 RESETとCSをLowにすると、「Z8010はリセットされ透過モードになり、アドレスを素通しする」と、データシートに書かれているのですが、これが未だ謎な点です。ラッチした状態でアドレスを出してくれるのか、本当にバイパスするだけなのかが読み取れません。
Atmega164Pで必要な信号を作ってZ8010経由でメモリに書き込もうとすると、AD0 - AD15にアドレスに続いて書き込みデータを乗せDSをLowにすると、アドレスが書き込みデータに置き換わってしまいます。

これらの情報は自分以外には全く役に立たないでしょうが、また何が判明したら追加していきます。

0 件のコメント:

コメントを投稿