Zilog SCC
![](http://upload.wikimedia.org/wikipedia/commons/thumb/3/33/ZILOG_Z0803006_SCC.jpg/220px-ZILOG_Z0803006_SCC.jpg)
SCC (Serial Communication Controller)は、ザイログによって製造されたシリアルポートドライバー集積回路のファミリーである。そのファミリーの主要なものは、Z8030/Z8530、そしてZ85233である。
初期のザイログSIOデバイス (Z8443 : SIO/3) から開発され、SCCはいくつかのシリアル-パラレル変換モードを追加した。そのため、Bisync(英語版)、HDLC、SDLCのような様々なデータリンク層プロトコルの内部実装を可能とした。
SCCは、過去のシステムを動作させるための従来のRS-232ポートとして設定することができる。あるいは、10 Mbit/sまでのより高速なRS-422としても設定できる。実際の実装では、5 Mbit/s以下の性能に制限されることが多い。
SCCの最も主要な利用者の1つは、Apple Macintoshコンピューターであった。初期のMacintoshの背面に"modem"と"printer"と書かれた2つのシリアルポートにZ8530が使用された。
解説
伝統的なシリアル通信は、UARTとして知られているデバイスを使って通常は実装されている。UARTは、コンピューターバスの内部パラレルフォーマットからシリアルフォーマットへ変換する。そして、その逆も行う。 UARTは、16ビットリトルエンディアンと呼ばれる内部フォーマットでメモリ内にデータを配置することによって連続的かつ単純にデータを送ることをコンピューターに可能とさせる。そして、UARTはそのデータをシリアル形式に変換し、送信する。 一般的に各コンピューターアーキテクチャのために異なったUARTが存在した。可能な限り低コストにするためにである。 その良い例は、1977年からのザイログZ80 SIOである。Z80 SIOは、比較的高速な800 kbit/sまでの2つのシリアルポートを提供するために広く使われたZ80と一緒に動作するように設計された[1]。
SCCは、本質的にZ80 SIOの更新版である。いくつかの一般的なデータリンク層プロトコルを直接実装することを可能とするために内部ロジック回路を増やしている。 第一にSCCは、巡回冗長検査(CRC)をハードウェアで実装している。そのため、ホストコンピューターのサポートなしで不正なデータを検査し、フラグを立て、そして排除することが可能である。 当時の高レベルプロトコルは、Bisync(英語版)、HDLC、そしてSDLCなどがあった。 HDLCは、モデム指向のLAPM・V.42プロトコルの実装で使われていることがよく知られている。 これらのプロトコルの実装をハードウェアに移動することによって、SCCはホストCPUがこれらのプロトコルの詳細を制御せずにIBMのSNAのようなLANを実装することを容易にした。
SCCが伝統的なシリアルモードで使われているとき、1文字当たり5, 6, 7あるいは8bitsなのか、ストップビットは1, 1.5あるいは2bitなのか、パリティは奇数、偶数、あるいはパリティなしなのか、ブレーク信号を自動的に検出するのか、あるいはブレーク信号を生成するのかということを設定できた。 同期モードにおいて、データはNRZ、NRZI、あるいはFM符号化を選択して送信できた。マンチェスタ符号の復号も可能であったが、マンチェスター符号の符号化は、外部ロジック回路で制御する必要があった。
SCCの転送レートは、3つのクロック供給源から選ぶことができる。 基本的なRS-232方式の通信のためにSCCは、300 Hzのクロックを内蔵していた。そのクロックは1倍、16倍、32倍、そして64倍することができるので、データレートは、300から19,200 bit/sの間となる。 別のクロックとして、ホスト・プラットフォームによって提供されるバス上のクロック(ホストクロック)を使うこともできる。そして、バス上のクロックは4, 8, 16, 32のいずれかで割られた周波数になる(16と32はオリジナルのNMOS版でのみ利用可能)。 8 MHzのクロックで動作するシステムで使用されているとき、2 Mbit/sと同程度のレートが可能になる。 最後にSCCは、外部供給クロックの入力端子も搭載している。 これはホストクロックと似た動作をしたが、ホスト・プラットフォームと独立したあらゆる参照クロック信号を提供するために使用された。 このモードにおいて、ホストクロックと同様に分周することができた。あるいは、さらに速い速度のために2倍することもできた。SCCのいくつかのバージョンにおいて32.3 Mbit/sまで速くすることが可能だった。 外部クロックの使用は、LANアダプタの実装を容易にした。LANアダプタは、ホストコンピューターと独立した速度で通常は動作するからである。
初期の実装は、わずか3バイトの深さの受信バッファを使用した。そして、送信バッファは1バイトだった。 このことは、ホスト・プラットフォームがバッファの内容をメモリへ転送する能力によって、実際の性能が制限されたことを意味した。 ネットワーク的な通信に関して、SCCは、バッファが一杯のとき遠隔送信者の転送を自分自身で止めさせることができた[2]。これによって、ホストが忙しい間にデータを失うことを防いだ。 従来の非同期シリアル通信に関して、それは不可能であった。Macintosh Plusにおいて、このことはおよそ9600 bit/sあるいはそれ未満にRS-232の性能を制限した。さらに古いMacintoshにおいては、4800 bit/s程度の遅さであった。
ほとんどのSCCは、DIP(Dual Inline Package)あるいはPLCC(Plastic leaded chip carrier)のどちらでも利用できた。
バージョン
- Z8030
オリジナルモデルである。Z8000/Z16C00/8086の各CPUに対応した多重化Z-Busインターフェースを搭載し、NMOSで実装された。
- Z8530
機能的にZ8030と同等であるが、Z80を含むあらゆるCPUあるいはホスト・プラットフォームと一緒に使用することを可能にするために非多重化Universal-Busを使用した。Z8530が登場するまでMC68000やMC6809と接続することは不可能であった[3]。
- Z8031 と Z8531
Z8030とZ8530から同期通信を削除したバージョン[4]。
- Z80C30 と Z85C30
Z8030とZ8530のCMOS版。初期バージョンとの互換性がある。外部クロック使用時に2倍の速度で動作する機能を追加した。そして、いくつかのバグ修正とデータリンク層プロトコルの改良。
- Z80230 と Z85230
Z80C30とZ85C30の更新版であり、CMOSで実装されている。ESCCとしても知られている。
- Z85233
Z85230の更新版。EMSCCとしても知られている。
- Z16C30
SSCの次世代品であるUSC(Universal Serial Controller)としても知られている[5]。ザイログジャパンから発売され、通信速度10Mbpsを2チャネル内蔵し、各チャネルで10種類のプロトコルを持ち、デイジーチェーン割り込み機能、デジタルPLL、68ピンPLCCに封入されたCMOSチップである[6]。10種のプロトコルには、BiSync、Transparent BiSync、IEEE802.3、HDLC/SDLC、HDLC/SDLC Loop 等が含まれた[7]。
出典
- ^ "Zilog Z8440 Serial input/Output Controller", Zilog, 1977
- ^ Networking Q&A - Sliding window and HDLC "If the application can't take all the data, the window will be 'closed' by sending out a window size of '0' and the remote sender will stop transmission."という記述あり。
- ^ 半導体コレクション展示会場 "Z8030/Z8530 SCC"
- ^ "8530, 8531, Z8530, Z8531 Zilog Serial Communications Controller"
- ^ Z16C30, p. 1-1.
- ^ インターフェース 1989年3月号, p. 309.
- ^ Z16C30, p. 1-7.
参考文献
- 『インターフェース』1989年3月号、CQ出版社、1989年3月。
- “Z16C30 USC User's Manual”. 2022年2月23日閲覧。
外部リンク
- Z8030 Datasheet
- Z8530 Datasheet
- Z80C30 product brief
- Z85C30 product brief
- Z80C30/Z85C30 Serial Communications Controllers Product Specification
- Z80C30/Z85C30/Z80230/Z85230/Z85233 SCC/ESCC User Manual
- FreeBSD scc(4) driver