Z80 SIO

Z80 SIOはZ80システムにシリアル入出力機能を付与するファミリLSIです。2チャンネル分のシリアルI/Oがひとつのパッケージに納められている上、単なる調歩同期だけでなく、文字同期式やビット指向のHDLCまで送受信できるようになっていて、当時は最強のシリアル入出力LSIでした。

Z80 SIO

Z80 SIOはボンディングオプションがあったことで有名です。LSIを開発中に、必要な端子が41本あったらどうすればよいでしょうか。今と異なりLSIの標準的なパッケージがDIPで、40ピンのパッケージを越えるものがほとんど使われていなかった1970年代半ばでは、わざわざそのために特殊パッケージを使うことはできません(日本企業なら42ピンパッケージを使っていたかも)。その解決法としてZilog社が採用したのがボンディングオプションという手段です。
Z80 SIOでは、すべての端子を同時に使用するアプリケーションはほとんど存在しないと考えられました。なにしろ、このLSIがサポートする通信機能は、当時のRS-232Cを代表とする調歩同期通信や、文字同期通信や、ビットオリエンテッドなHDLCまで含まれています。普通の調歩同期なら送受信クロックは共通でもかまいませんし外部同期検出端子も必要ありませんが、モデム制御用の端子が多い方が使いやすくなっています。変調信号から受信クロックを再生して同期をとるような同期通信では、送信用クロックと受信用クロックが異なっていないと使えなかったりします。もちろん送信速度と受信速度が異なる調歩同期通信というのも有りえますが、その時も送受信クロックが別々でないと困るでしょう。RS-232Cインターフェースとか変調信号で伝送するビット同期通信なんかは、Z80 SIOと通信回線の間に固有のインターフェース回路が必要です。電圧振幅などの電気的条件を変換したり、変復調回路で別の形式の信号に変換したりする回路です。Z80 SIOのシリアル1チャンネル分の回路を、たとえばRS-232CとHDLCで兼用したり、頻繁にソフトウェアで切り替えて使用するということは、そんな要求があるのかが問題でしょうがハードウェアの都合から考えても、それほど普通の使い方とは思われません。そこで、Z80 SIOの2チャンネル分のインターフェースの内、Aチャンネルはフルスペックだけれども、Bチャンネルについては調歩同期通信に便利な端子を省略したバージョンとか、逆に同期通信に便利な端子を省略したバージョンなどを作成するという手で、41本の端子が必要なLSIを40ピンのパッケージに押し込めることにしました。
Z80 SIOでは、パッケージの中身のチップ自身は同一でも、パッケージに納めて端子と接続する配線(ボンディング)を行う際に配線を変更して、異なるピン配置のLSIを3種類用意しています。これがボンディングオプションです。ピンの機能が異なっていますから、ハードウェア的には差し替えることができませんが、中身は共通なのでソフトウェア的には同一に見えます。送受信クロックを同じピンにボンディングしたZ80 SIO/0、モデム制御線のDTRB*の配線を省略して同期通信向きにしたZ80 SIO/1、SYNCB*を省略して外部同期には使えないようにしたZ80 SIO/2という3種類です。
繰り返しになりますが、このボンディングオプションはZ80 SIOに内蔵されたA, Bの2チャンネルの通信インターフェースのうちのBチャンネル側だけのオプションで、Aチャンネルはすべての端子が接続されています。ですから、Z80 SIO/0をたとえばモデムに組み込んで、コンピュータ側へのインターフェースはEIA-232Eの調歩同期通信だけれども回線側の変調信号インターフェースにはビット同期通信を使用するようなことも可能です。
具体的に以下にピン配置を3種類示しておきましょう。
D1        1      40 D0
D3        2      39 D2
D5        3      38 D4
D7        4      37 D6
INT*      5      36 CE*
IEI       6      35 B/A*
IEO       7      34 C/D*
M1*       8      33 RD*
VDD       9      32 GND
W*/RDYA* 10      31 W*/RDYB*
SYNCA*   11      30 IORQ*   SIO/0   SIO/1  SIO/2
RxDA     12      29 ------- SYNCB*  SYNCB* RxDB
RxCA*    13      28 ------- RxDB    RxDB   RxCB*
TxCA*    14      27 ------- RxTxCB* RxCB*  TxCB*
TxDA     15      26 ------- TxDB    TxCB*  TxDB
DTRA*    16      25 ------- DTRB*   TxDB   DTRB*
RTSA*    17      24 RTSB*
CTSA*    18      23 CTSB*
DCDA*    19      22 DCDB*
Clk      20      21 RESET*
5本のピンの機能が少しずつ異なっています。
なにしろ多機能なLSIなので、I/Oアドレス空間を4 Byte分しか占有しませんが、書き込みレジスタ8本に読み込みレジスタ3本と多数のレジスタを内蔵して、初期設定も複雑になっています。調歩同期専用のMC6850の単純な設定とは大違いです。
そういったソフトウェア側から見たプログラミングモデルは、またいつか書き足すことにします。

Return to IC Collection