シリアルポート:1ビットずつ送受信する通信インタフェース
シリアルポートは、データの送受信を1
ビットずつ順番に行うシリアル通信用の物理インタフェースです。これは、複数の
ビットを同時に送受信するパラレルポートとは対照的です。パーソナル
コンピュータが普及した時代においては、
モデム、
端末、プリンタなどの周辺機器との接続に広く利用されていました。
近年では、
イーサネット、FireWire、USBなどの高速なインタフェースが主流となっていますが、産業用機器、科学機器、POSシステムなどでは、そのシンプルさと安価さから現在でもシリアルポートが多く使用されています。また、ネットワーク機器の診断や設定用
コンソールとして利用されることも一般的です。
ハードウェア
シリアルポートのハードウェアは、大きく分けてUART(Universal Asynchronous Receiver/Transmitter)と
ビットバンギングの2種類があります。UARTはシリアル通信の制御を担う
集積回路であり、データのタイミングや構造を自動的に処理します。一方、
ビットバンギングは
CPUを用いて直接シリアル通信を制御する方法であり、低コストのシステムで採用されることがありました。
初期のホーム
コンピュータでは、RS-232規格と互換性のない独自のシリアルポートが用いられることも多く、
デバイス間の相互運用性が低いという問題がありました。しかし、LSI技術の発展により、安価で高性能なUARTが普及し、互換性の問題も徐々に解消されていきました。
現在では、低価格プロセッサの普及により、USBやFireWireといったより高速で複雑なシリアル通信規格が主流となっています。これらの規格は、大容量データの転送に適しており、マスストレージやAV機器などの接続に広く利用されています。
多くのマザー
ボードには、今でも最低1つのシリアルポートが搭載されていますが、小型システムやラップトップではスペースの都合上、RS-232
コネクタが省略される場合もあります。
DTEとDCE
シリアルポートの接続には、DTE(Data Terminal Equipment)とDCE(Data Circuit-terminating Equipment)の2種類の
デバイスがあります。DTEは
コンピュータや
端末などのデータ送信元、DCEは
モデムや周辺機器などのデータ受信元です。通常、DTEとDCEはストレートケーブルで接続されますが、2つのDTEを接続する場合は、クロスオーバーケーブルやヌル
モデムアダプタが必要です。
シリアルポートの
コネクタとしては、DB-25、DE-9、フォーンジャックなどが使用されます。DB-25はRS-232規格で最初に定義された
コネクタですが、よりコンパクトなDE-9が主流となりました。小型機器では、フォーンジャックが使用されることもあります。
IBM PC/AT以降の多くのIBM互換PCでは、9ピンDE-9
コネクタが使用され、TIA-574規格として標準化されました。近年ではモジュラ
コネクタ(8P8C)も使用されており、EIA/TIA 561規格やYost規格でピン割り当てが規定されています。NEC
PC-9800シリーズではDB-25メス型
コネクタが、MacintoshではMini-DIN
コネクタが使用されました。
ピンアウト
RS-232規格では20個の信号線が定義されていますが、実際には必要な信号線だけを使用することが一般的です。代表的な信号線としては、TXD(送信データ)、RXD(受信データ)、GND(接地)、RTS(送信要求)、CTS(送信クリア)、DTR(データ
端末準備)、DSR(データセット準備)、DCD(データキャリア検出)、RI(リング指示)などがあります。
ハードウェア抽象化
オペレーティングシステムでは、シリアルポートを抽象化して扱うことで、ハードウェアの詳細を隠蔽しています。Unix系OSでは`/dev/tty*`、
MS-DOSやWindowsでは`COM1`、`COM2`などの名前でシリアルポートを参照します。
シリアルポートの用途
シリアルポートは、
モデム、プリンタ、マウスなどの周辺機器との接続だけでなく、
マイクロコントローラとの通信、産業用機器の制御など、幅広い用途で使用されてきました。また、制御信号を利用して、外部
デバイスの監視を行う用途もありました。
設定
シリアル通信には、
ボーレート、データ
ビット数、パリティ、ストップ
ビット数といった設定が必要です。UARTを使用する現代のシリアルポートでは、これらの設定はソフトウェアによって制御されますが、古いシステムではハードウェアによる設定が必要な場合もありました。
ボーレートは、1秒間に送信される
ビット数を表します。標準的な
ボーレートとしては、75、110、300、1200、2400、4800、9600、19200、38400、57600、115200bpsなどがあります。
データ
ビット数は、1文字あたりに送信されるデータ
ビット数を表します。一般的には8
ビットが使用されます。
パリティ
パリティは、データの誤りを検出するための手法です。パリティ
ビットを追加することで、データの誤りを検出することができます。
ストップ
ビットは、1文字の終了を示すための
ビットです。一般的には1
ビットが使用されます。
フロー制御
フロー制御は、データの送受信速度を制御するための仕組みです。ハードウェアフロー制御とソフトウェアフロー制御があります。ハードウェアフロー制御は、RTS/CTSやDTR/DSR信号線を使用し、ソフトウェアフロー制御はXON/XOFF文字を使用します。
仮想シリアルポート
仮想シリアルポートは、ソフトウェアによってシリアルポートをエミュレートする技術です。物理的なシリアルポートが不足している場合や、特殊なシリアル通信を行う場合に役立ちます。
Bluetoothデバイスとの通信や、Serial over LAN/Ethernetといった用途にも利用されます。