Asynchronous Communications Interface Adapter (MC6850)はRS-232に代表される調歩同期式シリアル通信用の入出力LSIです。コンパクトな24ピンのパッケージに1回路分の調歩同期式のシリアル送受信回路が納められており、数本のモデム制御用I/Oピンも備わっています。
左は1975年製の初期のMotorola製のMC6850で、左は日立のセカンドソースでRマスク。日立は無印のマスクも持っていますが、金属部分がさびてしまっているので、写真はやめました。さびやすいんですよね、このパッケージ。
ピン配置はこのようになってます。
VSS 1 24 CTS* Rx Data 2 23 DCD* Rx CLK 3 22 D0 Tx CLK 4 21 D1 RTS* 5 20 D2 Tx Data 6 19 D3 IRQ* 7 18 D4 CS0 8 17 D5 CS2* 9 16 D6 CS1 10 15 D7 RS 11 14 E VCC 12 13 R/W*
VSSとVCCの間に5 Vを供給します。MC6850は5 V単一電源で動作します。これらの電源端子を除く7ピンから22ピンまでがCPUインターフェース用の端子で、2ピンから6ピンまでと23, 24ピンがモデムインターフェース用の端子です。
まずCPUインターフェース用端子を調べることにしましょう。7ピンが割り込み要求信号であるIRQ*で、この端子だけはオープンドレイン出力になっていて、他のLSIのIRQ*出力とワイヤードORしてMPUに割り込み要求を行なえるようになっています。チップセレクト入力はCS0, CS1, CS2*の3種類があります。このうちのCS0かCS1のどちらかはVMA信号を接続する必要があるので、アドレス選択用のチップセレクト入力は実質的に2本だけです。RSはレジスタ選択端子で、読み出し専用レジスタが2種類、書き込み専用レジスタが2種類、内蔵されています。R/W*, E, D0 - D7はMC6800系バス標準の信号です。
総じて、バッファを必要としない場合、外付け回路が必要となるのはメモリ空間のどこにこのLSIを割り当てるかを決定するアドレスデコード回路だけです。他はIRQ*ラインのどこかにプルアップ抵抗が必要なだけで、すべてMPUの信号線に直結できるという簡潔さです。MC6800ファミリLSI全体にいえますが、ファミリLSIだけを使用するなら、実にわずかな外付け部品でシステムを構成できるようになってます。
次にモデムインターフェースです。RxData, TxDataが、それぞれ受信データ端子と送信データ端子で、Rx CLKとTx CLKが受信と送信のクロック信号です。RTS*, CTS*, DCD*はモデム制御線で、RTS*は送信要求端子で、これは送信割り込みの許可とも設定上は関係しますが、単なる出力ビットとして扱うこともできます。CTS*端子の状態は、後述のステータスレジスタから読み取れますが、CTS*にHが入力されていると新たなデータ送信が行なえなくなります。送受信を行なう2本のデータ線とGND線だけで通信を行なう3線式シリアル通信の場合には、Lに固定しなくてはなりません。DCD*は受信に関係する制御線で、ステータスレジスタから状態を読み取れるほか、LになっているときにのみACIA内の受信回路が動作可能になります。また、DCD*がLからHになるときに割り込みを発生させることも可能です。CTS*端子と同じように3線式シリアル通信の場合にはLレベルを与えなくてはなりません。この他のモデム制御線はありませんから、EIA-232E規格に合わせて他の制御線を操作する必要がある場合は、パラレルポートを別に用意して制御線として取り扱う必要があります。モデム制御線の入出力機能は、本当に最小限になっています。