シリアル通信って何?
![](https://thinkit.co.jp/sites/default/files/styles/main_image_730x/public/main_images/5791_main_0_8.png?itok=M0El4-51)
シリアル通信の基本
多数の機器が通信を行うネットワークの仕組みを見る前に、もっとも基本となる2台の機器の間でのシリアル通信について考えてみましょう。
コンピュータなど、通信を行える機器を相互に接続してデータのやり取りを行いたい場合、もっとも簡単なやり方は、2台の機器を1本の通信ケーブルで接続するというものです。例えばパソコンであれば、シリアルポートを使ってこのような接続を行うことができます(図1)。
シリアルポートは、もともとはモデム(アナログ電話回線を使ってデータ通信を行うためのアダプタ)などの通信機器を接続するためのインターフェイスですが、ネットワークの普及でモデムをほとんど使わなくなったこと、より汎用的なUSBが一般化したことなどで、最近のパソコンの多くはシリアルポートを備えていません(シリアルポートを使いたい場合は、USB−シリアル変換アダプタなどを使います)。しかしもっとも基本的なシリアル通信インターフェイスということで、ここではシリアルポートを例に説明していきます。
シリアルポートには、データを送信するTxDという端子と、データを受信するRxDという端子があります(ほかにも制御用の端子やグラウンドなどがありますが、ここでは考えません)。一方のコンピュータのTxD端子を相手側のRxD端子に接続するという形でケーブルを接続すれば、2台のコンピュータの間でデータをやり取りすることができます。TxDから出力されたデータは相手側のRxDで受信されます。この接続が双方向に存在するので、2台のコンピュータは自由にデータを交換することができます。
このように接続された2台のコンピュータの間で、どのようにデータ伝送が行われるかを考えていきます。
シリアル伝送においてもっとも基本的な処理は、シリアルとパラレルの変換です。コンピュータから1バイト(あるいはその他のサイズ)のデータをシリアル伝送する場合、パラレル−シリアル変換という処理を行い、コンピュータ内部でパラレル伝送されているデータをシリアル形式に変換する必要があります。
そして受信側は、受け取ったシリアルデータに対してシリアル−パラレル変換を行い、パラレル伝送できる1バイトを組み立てます。この変換処理は、データのシフト処理を行うシフトレジスタで行われます。シフトというのは、データを上位方向、あるいは下位方向に1ビットずつずらす処理です。そしてずらした結果、はみ出したビットを順次送り出すような仕組みを作れば、パラレルデータをシリアルデータに変換できます。受信側では逆の処理を行い、受け取ったデータを順次ずらしながら1バイトを組み立てれば、元と同じデータを再現できます(図2)。
シリアル伝送を行う際は、送信側と受信側で、いくつかの点について合意していなければなりません。送信側が送りだした信号を、受信側が正しく解釈できなければ、正しいデータ通信を行えません。いくつか例を挙げましょう。
電気信号や光信号の形式
データは光や電気の信号(電波の場合もあります)として送られます。このような信号において、シリアル伝送されるデジタルデータの0と1が、どのような形で表現されるか(電圧波形や0と1の表現方法など)を、事前に定めておかなければなりません。
データのサイズや送信の順序
データが何ビットから構成されるのか、上位ビットから送るか下位ビットから送るかといったことです。
データを送る速度
シリアル伝送では、1秒あたり何ビットを送るか(bps)という形で通信速度を示します。具体的には、前述したシフト処理を行う速さということになります。送信速度と受信速度が一致していなければ、送信したデータを受信側で正しく組み立てることはできません。
送受信の同期
データを受け取る際に、受信側がずれた位置から読み込み始めると、正しいデータを再現できません。そのため、送信側と受信側がタイミングを合わせるための何らかの仕組みが必要です。
伝送エラーの検出
送受信用のハードウェアや通信ケーブルに問題がなくても、ノイズなどによりデータビットの一部が変化したり、まるごと失われることがあります。受信側は、こういった状況を検出し、対処しなければなりません。
フロー制御
受信側のデータの処理が間に合わない状態で送信を続けると、受信側がすべてのデータを受理できず、データの一部が失われる可能性があります。このような場合は、受信側からの求めに応じて、送信側が一時的に送信を停止しなければなりません。このようなやり取りをフロー制御といいます。
これらのうちのいくつかは、通信ハードウェアではなく、ソフトウェアのレベルで対応できるものもあります。例えばエラー検出やフロー制御は、通信インターフェイスのハードウェアで行わなくても、ソフトウェアで実現できます。一方、データのシフト処理や同期処理などは、通信ハードウェアで行うべき操作です。
一般にこれらの事項は、実際に通信を行うハードウェア(インターフェイス)や通信方式の規格、プロトコル(通信規約)という形で示されています。規格に適合しているインターフェイス(そして通信ソフトウェア)は、たとえ製品の種類やメーカーが違っても、相互に通信を行うことができます。また、通信に関連するパラメータが可変であったり、何らかの選択肢がある場合は(例えば通信速度やフロー制御の方式など)、それを選択しなければなりません。これらは通信を行う機器どうしで、同じ設定になっている必要があります。
パソコンのシリアルポートは、RS-232-C(現在はEIA-232-E)と呼ばれる規格に基づいたものです。RS-232/EIA-232は、電話回線でデータ通信を行うためのモデム用のシリアル通信インターフェイス規格です(この規格はモデム側の規格であり、パソコン側の規格ではありません)。モデムに接続するためのパソコンのシリアルポートは、モデムの通常の使用について、一通りの機能をまかなえるように設計されたインターフェイスです。そしてその通信機能を利用して、モデムだけでなくプリンタを接続したり、コンピュータどうしを接続するなど、さまざまな用途に使用されてきました。今日ではあまり使うことはなくなってしまいましたが、シリアルポートでは、通信速度、データ長、エラー検出(パリティ設定)、フロー制御の方法などをユーザーが設定できます(図3)。
この記事のもとになった書籍 | |
---|---|
![]() 榊 正憲 著 |
完全マスターしたい人のためのイーサネット&TCP/IP入門世の中で広く知られているイーサネットとTCP/IP、つまりインターネットや社内LANなどで、標準的に使われているネットワーク方式とプロトコルについて詳しく解説。 各項目については初歩的なレベルから解説し、中級レベルまで掘り下げています。 その過程で、仕組みや原理についてなるべく詳しく、そしてなぜそのような仕組みになっているのか、といったことを説明しています。 「これはこうなっている」という知識だけではなく、「これは何をするために、どのような原理でそうなっているのか」まで、きちんと体系立てて理解できる、ネットワーク初心者必携の1冊です。 連載期間中、電子書籍版を20%オフでご提供します!本連載の掲載に合わせて、本書籍の電子版を特別に20%オフでご提供します。興味のある方は是非ご検討ください。 クーポンコード:get3gerc※クリックすると購入ページに移動します。あらかじめクーポンコードをお控えください。 |