- ベストアンサー
Z80のディージーチェインについて分かりやすく
Z80CPU等には「デイジーチェイン」というものがありますが、これについてどんなことをするのか、分かりやすい例えで教えてください。 「デイジーチェイン」というと、「直列形式に繋ぐ」という意味だと思われますが、CPU等のICチップにおいて、「デイジーチェイン」とはどういうことなのかよくわかりません。どういうことなのかを分かりやすい例えで教えてください。 よろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
IOchip1===IOchip2===IOchip3===CPU と、IRQ信号線を繋ぐことで、IOChip3で割り込みが発生すれば、CPUに直接伝わる。IOchip2で割り込みが発生すれば、IOchip3が割り込み依頼中でなければCPUに伝わり、IOchip3が割り込み依頼中なら、IOchip2からの割り込みはそれが終わるまで待たされる。以下同じ。 ということで、1つのCPU信号端子で、複数の割り込み原因を優先度を付けて処理出来ます。
その他の回答 (3)
- KEIS050162
- ベストアンサー率47% (890/1879)
Z80って今でもあるですか。すごい。 デイジーチェーンとは仰る通り、直列つなぎ(数珠つなぎ)にすることですで、マイコンだけでなくネットワークなどでも広く使われる言葉ですが、 ”Z80のディジーチェーン”というのは、Z80ファミリーチップ(シリアル通信[SIO]、カウンタ・タイマー[CTC]、汎用IO「PIO])などのチップ群を直列につないで、割り込み制御をする機能ということになります。 Z80の割り込みモードのことまで書くと書ききれないですが、割り込みの優先順位をつけたり、割り込み処理を排他的にしたり、そういうことが簡単に実現出来る機能です。 詳しくは、Z80のマニュアルか解説本などを読まれると良いでしょう。 https://books.google.co.jp/books?id=XN1BDwAAQBAJ&pg=PA160&dq=Z80+%E3%83%87%E3%82%A4%E3%82%B8%E3%83%BC%E3%83%81%E3%82%A7%E3%83%BC%E3%83%B3&hl=ja&sa=X&ved=0ahUKEwjp15TUz6vdAhUI77wKHc7gCRoQ6AEIKDAA#v=onepage&q=Z80%20%E3%83%87%E3%82%A4%E3%82%B8%E3%83%BC%E3%83%81%E3%82%A7%E3%83%BC%E3%83%B3&f=false
CPUには割込みと言う機能があり、ある信号が入ったときに実行中のプログラムを中断して割込み処理ルーチンを実行し、終われば元のプログラムに何事もなかったかのように戻るという機能があります。Windows的理解のためには1個限定のマルチタスクと言ってもいいかもしれません。 ここまでは割込みと言うものの一般的な知識なのでわからなければ別に勉強してください。 CPUの割込み入力は1個ですが、複数の原因を割込み処理したいという場合があります。マイコンの場合は、シリアル入力が1文字入りましたとか、10mS毎のタイマーとか、やや高速な入力を処理したいという場合です。 複数の割込み処理を行う方法として一般にはCPUの外にエンコーダ回路を設け、どの割込み入力が入ったかをプログラムで読み取ってその処理プログラムに飛ぶという方法をつかいます。ところがZ80は気の利いたことに、Z80SIO、Z80PIO、Z80CTCなどの割込み入力を直列に接続(各LSIに入力IEIと出力IEOがあった)して、複数の割込み処理の判別をハード的に行うということをやりました。Z80専用周辺LSIに処理アドレスと割込み優先順位をハード的に処理させたのです。これがそれです。 理想に燃えた手法でしたがLSIの設定方法の学習も難しいうえに入力から出力までの遅延に許された時間が短く、確か3つか4つくらいのLSIの割込みを処理させるのが限界だったと思います。 プログラムの先頭で割り込みモードを設定することで、Z80でもMC6800同様の1個の処理アドレスだけを持つ単純な割込みを実現することもできました。
- t_ohta
- ベストアンサー率38% (5253/13739)
Z80など外部I/Fが少ないモノにデバイスを複数繋ぐ時に利用する手法で、1つのバスに複数のデバイスを直列に繋いでバスを共有させることで、沢山のデバイスが使えるようにします。