Z80 PIO
Zilog Z80 PIO
PIO (Parallel Input/Output Controller)

Z80ファミリー

DIP40P



 Z80 PIOは Z80 CPUファミリーの パラレルインターフェース用LSIです。
Z80 PIOは特長として、 があげられます。

 Z80 PIOの4つの動作モードを簡単に解説すると。
 バイト出力モードは外部機器に対してハンドシェークを使用してデータを出力します。
PIOより外部機器に対し RDY信号を出力し、それに対し外部機器から STB信号を返すことでデータ転送が
行なわれます。割り込みを使用する場合、STB信号の立ち上がりでPIOはCPUに対して割り込みを発生します。
 バイト入力モードは外部機器に対してハンドシェークを使用してデータを入力します。
外部機器からSTB信号を入力し、それに対してPIOからRDY信号を返すことでデータ転送が行なわれます。
割り込みを使用する場合、STB信号の立ち上がりでPIOはCPUに対して割り込みを発生します。
 バイト双方向性モードはバイト出力モードとバイト入力モードを合わせたもので、すべてのハンドシェーク信号を
使用します。出力系に PORT A、入力系に PORT Bを使用するため、このモードはPORT Aでしか使用できません。
割り込み動作はバイト出力モードとバイト入力モードの場合と同一です。
 ビットモードはハンドシェーク信号を使用せず、単純に外部への入出力をビット単位で設定します。
割り込みは入力のビットについて設定し、割り込みの禁止/許可がビット単位で設定できます。

 Z80 PIOは Z80 CPUの強力なベクタ割り込み機能と、デイジーチェーンを使用した割り込みの
優先度制御ができました。
 Z80 PIOはZ80 CPUのベクタ割り込み機能を実現するため、CPUのバスを監視し割り込みの開始と
割り込みの終了を監視しています。特に割り込みの終了を監視するためにRETI命令の実行を監視しています。
そのため、ICE等でデバッグを行なう場合、このRETI命令の実行がICE内部で行なわれた場合、
Z80 PIOは割り込みの終了を認識できず誤動作を起こします。
この問題はZ80周辺LSI全般に言えることで、ICE等で開発する場合、割り込みハンドラを実メモリ空間に
設定するなどの配慮が必要でした。
 また、デイジーチェーンを使用した場合、Z80 PIOを始めとするZ80周辺LSIの内部遅延が大きいため、
Z80系で4個、Z80A系で3個くらいまでしか使用できず、ルックアヘッド処理などの技が必要でした。

 このようにZ80のベクタ割り込み機能は複雑な構造のため、他の周辺LSIを転用して行なうことは
困難でした。他の周辺LSIを使用して割り込みを使用するには、このZ80 PIOをビットモードで動作させ
そこに周辺LSIからの割り込み要求信号を接続して、Z80 PIOを一種の割り込みコントローラとして
動作させる設計もよくありました。

 Z80 PIOはポート数が16bitと少ないので、Z80系のシステムでも8255が良く使用されました。
後日、周辺LSI複合型のZ80が出るまでは、私もほとんど使用することがありませんでした。


MOSTEK社製 Z80PIO  Z80 PIOのセカンドソースをいくつか。
始めに右はZ80の出始めに良く見た MOSTEK社製


東芝製 Z80 PIO C-MOS版です  右は東芝製の Z80A PIO。C-MOS版です。



MOSTEK社 Z80 PIO セラミック版  右はMOSTEK社製 Z80 PIOのセラミック版。
サフィックスが "-4"とありますので Z80A PIOのようです。


秘宝館 伝説的CPUへ戻る。