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をかけるとアドレス透過モードになる
これらの情報は自分以外には全く役に立たないでしょうが、また何が判明したら追加していきます。
やったことは、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 件のコメント:
コメントを投稿