* コンピュータで使用できるI/Oポート

シリアルポート 編

Mar. 7, 2001.


1.シリアル通信とパラレル通信の違い


























2.シリアルポートの概念・仕組み

[1] シリアルポート(RS-232C ポート)とは

シリアルデータを送受信するI/O デバイス。
パソコンなどの端末(DTE; Data Terminal Equipment)とモデムなどの終端装置 (DCE; Data Communication Equipment)間の通信、DTE間の通信に 用いられる。

1969年、米国EIA(Electronics Industries Association; 米国電子工業会) により規定。RS(Recommended Standards)-232C、EIA-232-D、EIA-232-E。
ツイストペア技術を使っていないため、現在となっては、 遅く(一般的に115.2 Kbpsまで)、伝送距離が短い(〜15m)規格だが、 歴史的には広く使用されてきている。

[2] 概念

PCなどからのparallel(並列)データ(=byte単位)入力を、serial(直列)データ (=bit 単位)に変換して出力。受信側では、受信データを逆の手順でserilalから parallelデータに変換する。

UART(Universal Asynchronous Receiver Tranmitter)
シリアル通信専用chip
を担う。
ダムUART(buffer 1byte) 8250、16450、初期型16550、初期型16650
FIFO UART 16550、16550A、16c552、16650、16750、16c950
などがある。
最近のPCでは16550A(16byte bufferあり)が一般的。

シリアルポートには、

が割り当てられる。

割り込みは、以下のような時に生じる。

割り込み信号では「何が起こったか」はCPUに知らせることができない。 「何かが起こった」ということのみ通知する。
割り込み信号によってCPUは「割り込みサービスルーチン」を実行し、 シリアルポートの状態を保持するレジスタを読んで、シリアルポートに 何が起こったかを知り、適切な処置を実行する。

[3] 規格

本来の規格は25pinコネクタを使用する(別表)。 実際のパソコン/ワークステーションでは、そのうちの9線を使用 するのが一般的。

基本 x 3線

制御線 x 6線

制御線の使用についてはドライバやソフトに委ねられている。 汎用I/O(±12V)として使用することも可能。

多くの場合、基本3線(TxD、RxD、GND)が使用され、時にフロー制御のために (RTS、CTS)も使用される。

結線はDTEとDCE(パソコンとモデムなど)の場合はストレートケーブルを用い、 DTE同士(パソコン間)の場合はクロスケーブルを用いる。





 


              結線図








	      







電気特性は以下の通り。 TTLと異なり一般に±12Vが主なので注意が必要。
















信号の内容

1byteにつき、以下の各ビットがTxDに送信される。

  1. idle : 1(=mark) ; データ未送信状態
  2. startbit : 0(=space) ; データ送信開始
  3. data : 0 or 1 ; 下位ビットから順にデータ送信(7 or 8 bits)
  4. parity bit : 0 or 1 ; パリティビット。送受信のエラーをチェックする
  5. stop bit : 1 ; 送信の終了
  6. idle : 1 ; 次のバイトデータ送信(startbit)を待つ

parity bit

即ち、一連のデータは、
start bit(1 bit) + Data(7 or 8 bits) + Parity bit(0 or 1 bits) + stop bit(1 or 2)
の計9-11bits(12bit以上は不可)から構成される。
この一連のデータをフレームと呼ぶ。




      bit列図













      


      



非同期(調歩同期)通信と同期通信 ここに述べた通信は、送信側のstart bitを受けて、受信側は 各bitの送信に同期してサンプリングを行ない、bit列を読む。 1byte分(stop bit)まで読み込んだら、次のstart bitを待つ。
1byte分のデータを読む間は送信側と受信側の同期が必要なものの、 複数のbyte間では同期はとられていない。このような通信を 非同期(調歩同期)通信と呼ぶ。
一方、クロック専用線を用い、途切れなく送受信を同期して行なう 通信を同期通信と呼ぶ。
EIA-232の規格では両者定義されているが、PCのポートでは 同期通信用のピンは一般に省略されているので、同期通信は 使用することはできない(PC-98には残されている)。

break信号 TxDを長時間(1/4〜1/2 sec) 「space」で維持することで、「break」信号となる。
通信線のリセット、通信モード変更などに利用する。

フロー制御について

送信速度が受信速度を上回った場合、受信側のbufferが溢れてしまう 可能性がある。それに備えて、バッファーが溢れる前に、送信側に 送信を一時停止することを要求できる。これがフロー制御である。
フロー制御には、以下の2通りがある。
























 

2.Serial Port使用の実際

UNIX(Solarisなど)でRS-232Cポートを使用する場合の実際の手続きは 以下の通りである。

[1] Port Device Files

RS-232Cポートは、以下のようなデバイスファイルに対応している。
これらのファイルに読み書きの許可を与える。






















[2] Serial Port を開く

システムコール int open(device file name, flag) を使用する。
(例)
fd = open( "/dev/ttyb", O_RDWR | O_NOCTTY | O_NDELAY );
device file nameにはシリアルポートのデバイス名を入れる。
flagには、deviceを開く際のオプションを入れる。

[3] Serial Port の初期設定を行なう

構造体 termioの各メンバに、対応する値を入れる。 DCEの通信設定を知らなければならない。

参考資料

[LIPS CCD top page]


post 秋田谷 洋 (akitaya@astr.tohoku.ac.jp)