z80がリセットされない問題
先日、Z80の動きをArduinoで見れるようにする装置というものを作りましたがあの装置に問題がありました。それは、CPUをリセットできないというものでして… ■CPUのリセットとはどういうことか Z80やその他さまざまなCPUは、電源が入るとメモリの1番地、要は一番最初のデータから順番に読み込んでいきます。その命令をCPUの中にあるレジスタという記憶部分にしまったり、ジャンプ命令などでアドレスバスの出力やらデータの入出力を行います。そしてその途中でクロックを止めたり電源を切ったとしても、その時のデータがCPUの中に残っていると次に電源を入れた時に前回の途中から始めてしまうことがあるわけです。 そこでこのZ80にはRESET端子というものが備わっていて、この端子を0V(アクティブ状態、)にするとCPUの中のデータやらもろもろが初期状態に戻り、また一から作動できる・・・というようになっています。 が、 今回自分の作った回路では何回もRESET端子に入力しても信号がうまく伝わってくれません。これでは思うように実験ができない。そこで、腹をくくってZ80のマニュアルを読み直してみました。全部英語。日本語版がほしい…(´・ω・`) ■リセット信号とクロック入力 Z80のマニュアルを読んでみると、リセット信号をZ80が読み込んで理解し、リセットするにはリセット信号とは別で クロック信号を3クロック以上入力しなくてはならない ということが書いてありました。インターネット上には様々なZ80のピン配列や命令表はありますが、それは見かけなかったなぁ…(あ、でも某ホームページを隅から隅まで読めばきっと書いてあったかも…) というわけで、もう一度今回はリセット信号をきちんと認識するかどうかのチェックだけなので簡単な実験装置を作りました。 RESET実験後に3Mhzの水晶発振器を取り付けました。 リセット信号は5Vラインにつながっている線をGNDにつなぐだけでいいので、動いているアドレス信号がまた0番地から始まれば成功というわけでして。リセット端子をアクティブモード(0V)にし、そのまま3クロック入力するとアドレス信号やM1信号などがすべて初期状態に戻りました。これでプログラムの実験などもまともにできるように! やはり、説明書はきちんと読む...