「40年前のマイコンを作って動かす」 第八話 : 動作確認3
SRAM (CY62256) のリード/ライト制御の回路はこのようにして
あります(クリックで拡大)。 図中で、添え字の"85"は i8085の
信号、"32"は 32bit マイコンの信号を表します。 逆スラッシュ
は負論理の信号です。
32bit マイコンが i8085にHOLDをかけてDMA転送でSRAMに
書き込むときは、1段目ゲートが閉じ、i8085からのリード/ライ
ト信号は遮断されます。 DMA転送が終わり、HOLDが解除に
なると1段目ゲートが開きますが、このとき32bit マイコンは
リード/ライト信号を共に"H"にします。 すると i8085からの
リード/ライト信号が2段目ゲートを通過できるので、i8085から
SRAMの読み書きが可能になります。
前出のお手製ロジックアナライザを使い、HOLD信号の変化で
トリガをかけて、HOLD信号(の元の負論理信号)と 32bit マイ
コンからのライト信号をチェックしました。 タイミング任せで
すが、この"ロジアナ"の信号記録はトリガ信号の最大 2μs前
から始まるので、うまくいくとトリガ信号の直前の状態から見ら
れます。 結果です。
これを見て、はたと気が付きました。
32bit マイコン側の I/Oピンで i8085のアドレスバス/データバス
にWired-ORで直結しているものは、DMA転送が終わり i8085
側が走るときには、競合しないように入力状態 (3-stateでは
ないので) にしなくてはなりません。 ところが、そうしなくても
良いSRAMへのリード/ライト信号まで入力状態で待機させて
いました。 プルUpもプルDownもしていないので、信号を受け
取るデバイスから見れば"H"と同じになっていました。
さらに、i8085にHOLDをかけた後でSRAMへのライト信号の
I/Oピンを出力モードに切り替え、待機状態の"L"にしていた
のです。 そのため、その"L"にするまでの間=上図中の点線
で囲んだタイミングでは、SRAMは"書き込み"状態になって
いたのです! ここで不要な書き込みが起こって、i8085側の
プログラムの一部を破壊してしまったようです。
原因が推測できたので、32bit マイコン側のプログラムを手直し
しました。
今度は、先にSRAMへのライト信号のI/Oピンを待機状態の"L"
にし、その後で i8085にHOLDをかけるようにしたので、ここで
SRAMに不要な書き込みは発生しません。 (HOLDがかかる
直前のタイミングでは i8085側が無用にSRAMにライト信号を
出さないようにしてあります)
実際にターミナルソフト側で1文字キー入力すると、ちゃんと
正しい文字が1文字だけエコーバックされるようになりました!
ということで、"Palo-Alto版Tiny BASIC" のプログラムに書き
換えて、いよいよ最終テストです。
動きました! 感動の一瞬でした。
« 柴犬を連れて群馬県甘楽町へ行ってきました | トップページ | 19年前の自己記録を更新! - 50m自由形 32秒34 »
「工作」カテゴリの記事
「コンピュータ」カテゴリの記事
- "Turbo HAMLOG"のデータを i Phone で活用する!(2017.08.16)
- 「40年前のマイコンを作って動かす」 第八話 : 動作確認3(2016.03.04)
- 祝 30万アクセス! - お気に入りの写真セレクト(2016.02.26)
- 「40年前のマイコンを作って動かす」 第七話 : 動作確認2(2016.03.02)
« 柴犬を連れて群馬県甘楽町へ行ってきました | トップページ | 19年前の自己記録を更新! - 50m自由形 32秒34 »
コメント