.jpg/500px-Serial_port_(9-pin).jpg)
シリアルポートは、情報を1ビットずつ順番に送受信するシリアル通信 インターフェースです。 [1]これは、複数のビットを同時に並列に通信するパラレルポートとは対照的です。パーソナルコンピュータの歴史のほとんどを通じて、データはシリアルポートを介してモデム、端末、さまざまな周辺機器などのデバイスに、またコンピュータ間で直接転送されてきました。
Ethernet、FireWire、USBなどのインターフェースもシリアルストリームとしてデータを送信しますが、シリアル ポートという用語は通常、 RS-232またはRS-485やRS-422などの関連規格に準拠したハードウェアを指します。
現代の消費者向けパーソナル コンピュータ(PC) では、シリアル ポートが主に USB などの高速規格に置き換えられています。ただし、産業オートメーション システム、科学機器、POSシステム、一部の産業用および消費者向け製品など、シンプルで低速なインターフェイスを必要とするアプリケーションでは、シリアル ポートが今でも頻繁に使用されています。
サーバーコンピューターは診断用の制御コンソールとしてシリアル ポートを使用することがありますが、ネットワーク ハードウェア(ルーターやスイッチなど) は、構成、診断、緊急メンテナンス アクセスにシリアル コンソール ポートを使用するのが一般的です。これらのデバイスやその他のデバイスとインターフェイスするには、USB シリアル コンバーターを使用して、最新の PC にシリアル ポートをすばやく簡単に追加できます。
ハードウェア
最近のデバイスでは、UARTと呼ばれる集積回路を使用してシリアル ポートを実装しています。この IC は、文字を非同期シリアル形式に変換し、シリアル プロトコルで指定されたデータのタイミングとフレーミングをハードウェアで実装します。IBM PC では、シリアル ポートが存在する場合、1 つ以上の UART を使用してシリアル ポートを実装します。
初期の家庭用コンピュータなどの非常に低コストのシステムでは、代わりにCPU を使用し、ビット バンギング技術を使用して出力ピンを介してデータを送信していました。これらの初期の家庭用コンピュータには、RS-232 と互換性のないピン配置と電圧レベルを持つ独自のシリアル ポートが搭載されていることがよくありました。
大規模集積回路(LSI) によって UART が一般的になる前は、シリアル ポートは、シフトレジスタ、ロジック ゲート、カウンター、その他必要なロジックを実装するための複数の小規模集積回路を備えたメインフレームやミニコンピューターでよく使用されていました。PC が進化するにつれて、シリアル ポートはスーパー I/Oチップに組み込まれ、その後チップセットに組み込まれました。
-
シリアルポート1つを備えたPCI Express ×1カード
-
USB から RS-232 互換シリアル ポートへのコンバーター。物理的な変換だけでなく、 IBM XT互換シリアル ポート ハードウェアの機能をエミュレートするために、ホスト システム ソフトウェア内のドライバーと組み込みプロセッサが必要です。
-
UART から USB へのアダプタ
DTE と DCE
シリアル ポート上の個々の信号は単方向であり、2 つのデバイスを接続する場合、一方のデバイスの出力をもう一方のデバイスの入力に接続する必要があります。デバイスは、データ端末装置(DTE) とデータ回線終端装置(DCE) の 2 つのカテゴリに分類されます。DTE デバイスの出力である回線は DCE デバイスの入力であり、その逆も同様です。そのため、DCE デバイスは、一方の端の各ピンがもう一方の端の同じ番号のピンに接続されるストレート配線ケーブルを使用して DTE デバイスに接続できます。
従来、コンピュータや端末は DTE であり、モデムなどの周辺機器はDCE です。2 つの DTE (または DCE) デバイスを接続する必要がある場合は、クロスオーバーケーブル、ロールオーバー ケーブル、またはヌル モデムケーブルと呼ばれる、TX ラインと RX ラインが逆のケーブルを使用する必要があります。
性別
一般的に、シリアルポートコネクタには性別があり、コネクタは反対の性別のコネクタとのみ接続できます。Dサブミニチュアコネクタでは、オスコネクタには突出したピンがあり、メスコネクタには対応する丸いソケットがあります。[2]どちらのタイプのコネクタも、機器やパネルに取り付けたり、ケーブルを終端したりできます。
DTE に取り付けられたコネクタはオス型である可能性が高く、DCE に取り付けられたコネクタはメス型である可能性が高い (ケーブル コネクタは逆)。ただし、これは普遍的というわけではなく、たとえば、ほとんどのシリアル プリンタにはメスの DB25 コネクタが付いていますが、これらは DTE です。[3]このような状況では、ケーブル上の適切なオス型コネクタまたはオス型変換器を使用して、不一致を修正できます。
コネクタ
オリジナルの RS-232 規格で指定された唯一のコネクタは 25 ピンの D サブミニチュアでしたが、コスト削減や物理的なスペースの節約などの理由から、他の多くのコネクタが使用されてきました。特に、多くのデバイスは規格で定義されている 20 の信号すべてを使用しないため、ピン数の少ないコネクタがよく使用されます。具体的な例を以下に示しますが、RS-232 接続には他にも数え切れないほどのコネクタが使用されてきました。
9ピンDE-9コネクタは、 PC-ATのシリアル/パラレルアダプタオプション以来、ほとんどのIBM互換PCで使用されており、9ピンコネクタによりシリアルポートとパラレルポートを同じカードに装着できるようになりました。[4]このコネクタは、RS-232ではTIA-574として標準化されています。
一部の小型電子機器、特にグラフ電卓[5]や携帯型アマチュア無線機器および双方向無線機器[6]には、電話コネクタ(通常は2.5mmまたは3.5mmの小型コネクタ)と最も基本的な3線式インターフェース(送信、受信、接地)を 使用したシリアルポートがあります。

8P8Cコネクタも多くのデバイスで使用されています。EIA/TIA-561規格ではこのコネクタを使用したピン配置を定義していますが、ロールオーバーケーブル(またはYost規格)は、シスコシステムズの機器などのUnixコンピュータやネットワークデバイスで一般的に使用されています。[7]

多くのMacintoshモデルは、関連するRS-422規格を採用しており、主に円形のミニDINコネクタを使用しています。Macintoshには、プリンタとモデムに接続するための2つのポートが標準で搭載されていましたが、一部のPowerBookラップトップには、スペースを節約するために1つの統合ポートしかありませんでした。[8]
10P10Cコネクタは一部のデバイスに搭載されています。[9]
もう一つの一般的なコネクタは、マザーボードやアドインカードでよく使われる10×2 ピンヘッダーで、通常はリボンケーブルを介してより標準的な9ピンDE-9コネクタに変換されます(空きスロットプレートまたはハウジングの他の部分に取り付けられることが多い)。[10]
ピン配置
次の表は、一般的に使用されるRS-232信号とピンの割り当てを示しています。[11]
信号グランドは、他の接続の共通リターンです。Yost 規格では 2 つのピンに現れますが、信号は同じです。DB-25 コネクタには、ピン 1 に 2 番目の保護グランドが含まれており、各デバイスが独自のフレーム グランドなどに接続することを目的としています。保護グランドを信号グランドに接続するのは一般的な方法ですが、推奨されません。
EIA/TIA 561はDSRとRIを組み合わせ、[13] [14]、Yost規格はDSRとDCDを組み合わせていることに注意してください。
ハードウェア抽象化
オペレーティング システムは通常、プログラムがハードウェア アドレスでシリアル ポートを参照することを要求するのではなく、コンピューターのシリアル ポートにシンボリック名を作成します。
Unix 系オペレーティング システムでは、通常、シリアル ポート デバイスに/dev/tty* というラベルが付けられます。TTYは、初期のコンピュータのシリアル ポートによく接続されていたデバイスであるteletypeの一般的な商標フリーの略語で、* は特定のポートを識別する文字列を表します。その文字列の構文は、オペレーティング システムとデバイスによって異なります。Linux では、8250 / 16550 UARTハードウェア シリアル ポートは/dev/ttyS*という名前で、USB アダプタは/dev/ttyUSB*として表示され、さまざまな種類の仮想シリアル ポートの名前は必ずしもttyで始まるとは限りません。
DOSおよびWindows環境では、シリアルポートはCOMポートと呼ばれます:COM1、COM2など。[15]
シリアルポートの一般的な用途
このリストには、PC のシリアル ポートに接続される一般的なデバイスがいくつか含まれています。モデムやシリアル マウスなど、使用されなくなっているデバイスもありますが、他のデバイスはすぐに使用できます。シリアル ポートは、ほとんどの種類のマイクロコントローラで非常に一般的であり、PC や他のシリアル デバイスとの通信に使用できます。
- ダイヤルアップモデム
- ルータ、スイッチ、ファイアウォール、ロードバランサなどのネットワーク機器の構成と管理
- GPS受信機 (通常はNMEA 0183、4,800ビット/秒)
- バーコードスキャナやその他のPOSデバイス
- LEDおよびLCDテキストディスプレイ
- 衛星電話、低速衛星モデム、その他の衛星ベースのトランシーバーデバイス
- 外部コンピュータ、他の AV コンポーネント、またはリモコンで画面機能を制御するフラットパネル ディスプレイ
- デジタルマルチメーターや計量システムなどの試験・測定機器
- さまざまな消費者向けデバイスのファームウェアの更新
- CNC コントローラ
- 無停電電源装置管理とステータスレポート
- 速記機または速記タイプ機
- 2台目のコンピュータで実行されるソフトウェアデバッガー
- マイクロプロセッサ開発ボードまたは評価ボードへのコンソールまたはデバッガ インターフェース
- 産業用フィールドバス
- プリンター
- コンピュータ端末、テレタイプ
- ネットワーク( 230.4 kbit/sで RS-422 を使用するMacintosh AppleTalk )
- シリアルマウス
シリアルポートの制御信号は任意のデジタル信号で駆動できるため、一部のアプリケーションではシリアルデータを交換せずにシリアルポートの制御線を使用して外部デバイスを監視していました。この原理の一般的な商用アプリケーションは、制御線を使用して電源の喪失、バッテリー残量の低下、その他のステータス情報を通知する無停電電源装置の一部のモデルでした。少なくとも一部のモールス信号トレーニングソフトウェアでは、シリアルポートに接続されたコードキーを使用して実際のコード使用をシミュレートしていました。シリアルポートのステータスビットを非常に高速かつ予測可能なタイミングでサンプリングできるため、ソフトウェアでモールス信号を解読することができました。
シリアルコンピュータマウスは受信したデータや制御信号から動作電力を得る場合があります。[16] [17]
設定
シリアル規格では、さまざまな動作速度が規定されているほか、さまざまな動作条件を考慮してプロトコルを調整することもできます。最もよく知られているオプションは、速度、1 文字あたりのデータ ビット数、パリティ、および 1 文字あたりのストップ ビット数です。
UART 集積回路を使用する最新のシリアル ポートでは、これらすべての設定をソフトウェアで制御できます。1980 年代以前のハードウェアでは、回路基板上のスイッチやジャンパーの設定が必要になる場合があります。
PC に接続するように設計されたシリアル ポートの構成は事実上の標準となり、通常は 9600/8-N-1 として表されます。
スピード
シリアル ポートは 2 レベル (バイナリ) 信号を使用するため、ビット/秒単位のデータ レートは、ボー単位のシンボル レートと同じです。合計速度にはフレーミング ビット (ストップ ビット、パリティなど) が含まれるため、実効データ レートはビット伝送速度よりも低くなります。たとえば、8-N-1 文字フレーミングでは、データに使用できるビットは 80% のみで、8 ビットのデータごとに、さらに 2 ビットのフレーミング ビットが送信されます。
標準的な一連の速度は、電気機械式テレプリンタの速度の倍数に基づいています。シリアルポートによっては、任意の速度を多数選択できますが、データを正しく受信するには、接続の両側の速度が一致している必要があります。一般的にサポートされているビットレートは、75、110、300、1200、2400、4800、9600、19200、38400、57600、および115200ビット/秒です。[19]これらの標準モデムボーレートの多くは、1.2 kbps(例:19200、38400、76800)または0.9 kbps(例:57600、115200)の倍数です。[23]周波数1.843200 MHzの 水晶発振器は、この目的のために特別に販売されています。これは最速ビット レートの 16 倍であり、シリアル ポート回路は必要に応じてこれを簡単に低い周波数に分割できます。
ビット レートを設定できるからといって、接続が機能するとは限りません。すべてのビット レートがすべてのシリアル ポートで使用できるわけではありません。楽器制御用のMIDIなどの一部の特殊用途プロトコルでは、テレプリンタ標準以外のシリアル データ レートが使用されます。一部のシリアル ポート実装では、接続されたデバイスが送信している内容を観察し、それに同期することで、ビット レートを自動的に選択できます。
データビット
各文字のデータ ビット数は、5 ( Baudot コードの場合)、6 (まれに使用)、7 (真のASCIIの場合)、8 (ほとんどの種類のデータの場合。このサイズはバイトのサイズと一致するため)、または 9 (まれに使用) になります。8 データ ビットは、新しいアプリケーションでほぼ普遍的に使用されます。5 ビットまたは 7 ビットは、通常、テレプリンターなどの古い機器でのみ意味を持ちます。
ほとんどのシリアル通信設計では、各バイト内のデータ ビットを最下位ビットから先に送信します。また、最上位ビットから先に送信することも可能ですが、これはめったに使用されません。これは、たとえばIBM 2741印刷端末で使用されていました。ビットの順序は通常、シリアル ポート インターフェイス内では構成できませんが、ホスト システムによって定義されます。ローカルのデフォルトとは異なるビット順序を必要とするシステムと通信するには、ローカル ソフトウェアで、送信直前および受信直後に各バイト内のビットの順序を変更できます。
パリティ
パリティは、送信中のエラーを検出する方法です。シリアル ポートでパリティを使用すると、各データ文字とともに追加のデータ ビットが送信され、パリティ ビットを含む各文字の 1 ビットの数が常に奇数または常に偶数になるように調整されます。間違った数の 1 を含むバイトを受信した場合は、破損していることになります。パリティが正しいからといって、必ずしも破損がないことを意味するわけではありません。偶数のエラーを含む破損した送信はパリティ チェックに合格します。1 つのパリティ ビットでは、各文字のエラー訂正を実装できません。シリアル データ リンクで動作する通信プロトコルには、通常、データの有効性を確保し、誤って受信したデータの再送信を要求するためのより高レベルのメカニズムがあります。
各文字のパリティ ビットは、次のいずれかに設定できます。
- なし (N) は、パリティ ビットが送信されず、送信が短縮されることを意味します。
- 奇数 (O) は、パリティ ビットが 1 ビットの数が奇数になるように設定されていることを意味します。
- 偶数(E)は、 1 ビットの数が偶数になるようにパリティ ビットが設定されていることを意味します。
- マーク(M)パリティは、パリティ ビットが常にマーク信号条件(1 ビット値)に設定されることを意味します。
- スペース (S)パリティは、常にスペース信号条件 (ビット値 0) でパリティ ビットを送信します。
最後のビット (通常は 9 番目) を何らかの形式のアドレス指定や特別なシグナリングに使用する珍しいアプリケーションを除けば、マーク パリティやスペース パリティはエラー検出情報を追加しないため一般的ではありません。
奇数パリティは、各文字で少なくとも 1 つの状態遷移が発生することを保証するため、偶数パリティよりも便利です。これにより、シリアル ポートの速度の不一致によって発生する可能性のあるエラーなどの検出の信頼性が向上します。ただし、最も一般的なパリティ設定はnoneであり、エラー検出は通信プロトコルによって処理されます。
回線ノイズによって損傷したメッセージを検出できるように、電気機械式テレプリンタは、受信データにパリティ エラーが含まれている場合に特殊文字を印刷するように構成されました。
ストップビット
各文字の末尾に送信されるストップ ビットにより、受信信号ハードウェアは文字の末尾を検出し、文字ストリームと再同期することができます。電子デバイスは通常 1 つのストップ ビットを使用します。低速の電気機械式テレプリンタを使用する場合は、1.5 または 2 つのストップ ビットが必要になることがあります。
慣例的な表記

データ/パリティ/ストップ (D/P/S) の従来の表記法は、シリアル接続のフレーミングを指定します。パーソナル コンピューティング デバイスで最も一般的な構成は8-N-1 (8N1、8-None-1 [24]とも表記) で、スタート ビットが 1 つ、データ ビットが 8 つ ("8")、パリティ ビットがなし ("N")、ストップ ビットが 1 つ ("1") です。[25] この表記法では、パリティ ビットはデータ ビットの数に含まれません。たとえば、7/E/1 (7E1) は、7 つのデータ ビットに偶数パリティ ビットが追加され、スタート ビットとストップ ビットの間に合計 8 ビットがあることを意味します。
この略語は通常、回線速度(ビット/秒)とともに示され、たとえば「9600–8-N-1」のように表される。速度(またはボーレート)にはフレーミング用のビット(ストップビット、パリティなど)が含まれるため、実効データレートはボーレートよりも低くなる。8-N-1エンコーディングの場合、データに使用できるビットは80%のみである(8ビットのデータごとに、シリアルリンクを介して10ビットが送信される。つまり、1つのスタートビット、8つのデータビット、1つのストップビットである)。[24]
フロー制御
フロー制御は、送信機が受信機の処理能力よりも速くデータを送信できる可能性がある状況で使用されます。これに対処するために、シリアル ラインにはハンドシェイク方式が組み込まれることがよくあります。ハンドシェイク方式には、ハードウェア ハンドシェイク方式とソフトウェアハンドシェイク方式があります。
ハードウェア ハンドシェイクは、多くの場合、RS-232 RTS/CTS または DTR/DSR 信号回路などの追加信号を使用して行われます。RTS と CTS は、データ フローを制御するために使用され、たとえば、バッファーがほぼいっぱいになったときに通知します。RS-232 標準およびその後継規格では、DTR と DSR は、機器が存在し、電源が入っていることを通知するために使用されるため、通常は常にアサートされます。ただし、DTR をフロー制御として使用するプリンターなど、非標準の実装も存在します。
ソフトウェア ハンドシェイクは、たとえばASCII制御文字XON/XOFFを使用してデータの流れを制御することで行われます。XON 文字と XOFF 文字は、送信側がいつデータを送信するかを制御するために受信側から送信側に送信されます。つまり、これらの文字は送信されるデータと反対方向に送信されます。システムは送信許可状態で開始します。受信側のバッファーが容量に近づくと、受信側は XOFF 文字を送信して、送信側にデータ送信を停止するように伝えます。その後、受信側がバッファーを空にした後、XON 文字を送信して送信側に送信を再開するように伝えます。これは、制御情報がデータと同じチャネルで送信される インバンド シグナリングの例です。
ハードウェア ハンドシェイクの利点は、非常に高速であること、転送データに ASCII などの強制的な意味とは独立して動作すること、ステートレスであることです。欠点は、より多くのハードウェアとケーブルが必要であり、接続の両端が使用されるハードウェア ハンドシェイク プロトコルをサポートしている必要があることです。
ソフトウェア ハンドシェイクの利点は、ハードウェア ハンドシェイク回路やケーブルが存在しない、または互換性がない場合でも実行できることです。すべてのインバンド制御シグナリングに共通する欠点は、データ メッセージがブロックされている場合でも制御メッセージが確実に通過すること、およびデータが制御信号と間違われないことを保証するために複雑さが生じることです。前者は通常、オペレーティング システムまたはデバイス ドライバーによって処理されます。後者は通常、制御コードがエスケープされる( Kermit プロトコルなど) か、設計によって省略される ( ANSI 端末制御など) ことによって処理されます。
ハンドシェイクが採用されていない場合、オーバーランした受信側は送信側からデータを受信できない可能性があります。これを防ぐ方法としては、受信側が常に追いつくことができるように接続速度を下げる、より長い時間にわたって平均的に追いつくことができるようにバッファのサイズを増やす、時間のかかる操作の後に遅延を使用する (例: termcap )、正しく受信されなかったデータを再送信するメカニズムを採用する (例: TCP ) などがあります。
参照
- Bluetooth プロファイルの一覧 § シリアルポートプロファイル (SPP)
- シリアルオーバーLAN – 管理対象システムのシリアルポートをIP経由でリダイレクトできるようにするメカニズム
- テレプリンター – シリアルポート開発のきっかけとなったデバイス
- 仮想COMポート – シリアルポートのソフトウェア表現
参考文献
- ^ Beal, Vangie (1996 年 9 月). 「シリアルポートの定義と意味」. Webopedia . 2021 年 3 月 8 日閲覧。
- ^ 「 シリアルケーブル接続ガイド」。CISCO。2006-08-01。2016-01-31閲覧。
- ^ 「RS232 - DTE および DCE コネクタ」。Lantronix。2006 年 3 月 29 日。2015 年 12 月 14 日時点のオリジナルよりアーカイブ。2016年 1 月 31 日閲覧。
- ^ 「IBM PC AT シリアル/パラレル アダプター」(PDF)。2020 年 2 月 24 日時点のオリジナル(PDF)からアーカイブ。
- ^ 「TI-73...92+/V200 TI リンクガイド」. merthsoft.com 。2020年8月14日に取得。
- ^ 「技術セクション」Miklor.com . 2020年8月14日閲覧。
- ^ 「コンソールおよび AUX ポートの配線ガイド」。Cisco。2020年 8 月 14 日閲覧。
- ^ 「Classic Mac Ports」. WhiteFiles.org . 2020年8月14日閲覧。
- ^ ab 「シリアルクイックリファレンスガイド」(PDF)。NI.com。National Instruments。2013年7月。 2021年6月18日閲覧。
- ^ Intel サーバーボード S5000PAL/S5000XAL 技術製品仕様(PDF) p. 38。
- ^ Ögren, Joakim. 「Serial (PC 9)」。2010年8月11日時点のオリジナルよりアーカイブ。2010年7月7日閲覧。
- ^ ab 「Yost Serial Device Wiring Standard」。2020年6月17日時点のオリジナルよりアーカイブ。2020年5月10日閲覧。
- ^ 「ハードウェアブック RS-232D」。
- ^ 「RS-232D EIA/TIA-561 RJ45 ピン配列」。
- ^ Stephen Byron Cooper. 「COM1ポートとは何か?」Techwalla . 2021年9月30日閲覧。
- ^ Chan, Alvin (1990). 「COP800 を使用した AN-681 PC マウスの実装」(PDF) . National Semiconductor . 2023 年7 月 29 日閲覧。
- ^ 「AN519 シンプルなシリアルマウスコントローラの実装」(PDF)。Microchip Technology Inc. 1997年。 2023年7月29日閲覧。
- ^ 「SERIAL_COMMPROP 構造」。Microsoft 2018-04-22。2019-09-28にオリジナルからアーカイブ。2019-09-28に取得。
- ^ ab 「DCB 構造」。Windows Dev Center。Microsoft。2018年 12 月 4 日。2019 年 9 月 28 日時点のオリジナルよりアーカイブ。2019 年9 月 28日閲覧。
- ^ 「BACnet MS/TP 概要マニュアル」(PDF)。Neptronic。2020年1月10日時点のオリジナルよりアーカイブ(PDF) 。 2019年9月26日閲覧。
- ^ 「MultiModem ZBA」(PDF) 。Multi-Tech Systems, Inc. 2019年1月。 2019年3月3日時点のオリジナル(PDF)からアーカイブ。 2019年9月26日閲覧。
- ^ 「Courier 56K ビジネスモデム: ユーザーガイド: データレートの制御」。USRobotics。2007年。2017年8月4日時点のオリジナルよりアーカイブ。2019年9月26日閲覧。
- ^ 「SX1272/73 - 860 MHz ~ 1020 MHz 低電力長距離トランシーバー データシート」(PDF)。Semtech 。2019 年 1 月。
- ^ ab 「8-N-1 とはどういう意味ですか?」 modemhelp.net . 2013 年 12 月 25 日閲覧。
- ^ 「N-8-1の定義」PCMAG。
さらに読む
- シリアルポート完全版: COM ポート、USB 仮想 COM ポート、および組み込みシステム用ポート、第 2 版、Jan Axelson、Lakeview Research、380 ページ、2007 年、ISBN 978-1-931-44806-2。
