通信の「同期」が重要なワケ
通信の同期
シリアル伝送では、毎秒何ビット送るかという伝送速度(bps)、データの1単位のビット長など、通信の方式について送信側と受信側が互いに合意している必要があります。そして受信側は、送信側がデータを送るタイミングに合わせてデータを受信しなければなりません。もしこのタイミングがずれたら、データを正しく受信できません。受信側は、送信側が送り出した最初の1ビットから最後の1ビットまでを、最初の1ビットから最後の1ビットとして正しく受信する必要があります。もし最初の何ビットかを読みこぼし、途中のビットから受信を始めたら、受信データは数ビットずれてしまいます。このようなことが起こらないように、送信側と受信側が正しくタイミングを合わせることを「同期」といいます。
同期を取るための一番簡単な方法は、データの信号と並行して、タイミングを合わせるための信号を送ることです。この方法は配線が増えるという問題があるため、距離が離れている通信には実用的ではありません。そこで伝送データを表す電気信号をうまく利用して、受信用のタイミング信号を受信側で生成します(図1)。これなら、余計な配線は必要ありません。
調歩同期式
シリアルポートを使った通信では、調歩同期式というという方法が使われています。これは送信される各データ単位(ここでは8ビットとします)ごとに、タイミングを合わせるための信号を埋め込むという方法です。
調歩同期式では、データに先行して、これからデータを送るということを示すスタートビットというビットが送られます。スタートビットには0という値が使われます。つまり、スタートビット以前は、1というデータが送られ続けているということです。
通信路の1の状態が0に変化したことにより、受信側はこれからデータが送られてくるということを認識します。そして、スタートビットの後のビット列を実際のデータビットとして受信します。通信速度などが正しく設定されていれば、これでデータを正しく受信できます。
そしてデータビットの後には、1ビット以上のストップビットが送られます。この値は1です。受信側はデータビットに続けて1のビットを受信することで、8ビットデータの受信が完了したと判断します。
続けてデータがある場合は、このストップビット(1)に続けて次のデータのスタートビット(0)が送られます。受信側は、このスタートビットで再度同期を取り、次のデータを受信します。後続データがない場合は、ストップビットの1がずっと続きます。もし0が送られると、なんらかのデータとして受信処理が始まってしまうためです。つまり調歩同期式では、1がずっと続いていることでデータ送信が行われていないということを示すのです(図2)。
調歩同期式では、実際のデータビットのほかに、スタートビットとストップビットとして最低でも2ビットの冗長なビットを送る必要があります。8ビットデータに、スタートビットが1ビット、ストップビットが1ビットとすると、10ビット分の信号を送らなければなりません。この場合、実際の通信路の速度(bps)に対し、実際のデータ伝送レートは8割に減少してしまいます。
調歩同期式は、しばしば非同期式とも呼ばれます。非同期という言葉は同期式ではないという意味で、同期処理を行わないという意味ではありません。
同期式
同期式伝送では、各データの前後にスタートビットやストップビットは置きません。その代わり、一群のデータの送信に先立って、タイミングを合わせるための特定のパターン(同期信号か同期用データ)が送信されます。受信側はこのパターンを検出すると、これからデータが送信されると想定し、この信号のタイミングに合わせてデータを受信します(図3)。
データは先頭の同期信号のタイミングに合わせて連続的に送られてくることが保証されているので、データ中にはスタートビットやストップビットは必要ありません。しかし問題があります。シリアルポートのように、送信データがない時でも通信路の状態が0か1を示す方式の場合、同期式ではたとえデータの送信が終了しても、受信側は0000 0000や1111 1111といったデータとして受信してしまいます。正しくデータをやり取りするためには、事前に何バイトのデータを送るといったことを指示しておくか、あるいは送信すべきデータがないことを示す情報あるいは信号を送り続ける必要があります。具体的には、データがないことを示すために同期用の信号を送り続けるという方法があります。このようにしておけば、送信側と受信側は常にタイミングがあっており、同期をとるために時間をかけることなく、いつでもデータ伝送を開始できます。
前に説明したマンチェスタ符号化のような、データが送られていないという状態が識別できる伝送路であれば、この問題はありません。未送信状態になったら、データ伝送が終了したと判断できるからです。
同期式の伝送では、データブロックの先頭に同期用ビットがあるだけで、以後のデータビットはすべてデータを表すものとなります。そのため、ある程度以上の量のデータを送るのであれば、調歩同期式より効率がよくなります。例えば16ビットの同期データを先行させ、続けて1024バイト(8192ビット)のデータを送るのであれば、伝送されるビット数は8208ビットになります。これが調歩同期式中だと、1024バイトを送るために10240ビットの伝送が必要になります。
イーサネットなどのネットワークでは、同期式のシリアル伝送を行っています。ネットワークが使うケーブル上を流れる信号は、データがない状態がわかる方式になっています。そしてデータに先行してプリアンブルという同期信号があり、受信回路はプリアンブルを読み込んでタイミングを合わせ、続くデータを読み込みます。
この記事のもとになった書籍 | |
---|---|
榊 正憲 著 |
完全マスターしたい人のためのイーサネット&TCP/IP入門世の中で広く知られているイーサネットとTCP/IP、つまりインターネットや社内LANなどで、標準的に使われているネットワーク方式とプロトコルについて詳しく解説。 各項目については初歩的なレベルから解説し、中級レベルまで掘り下げています。 その過程で、仕組みや原理についてなるべく詳しく、そしてなぜそのような仕組みになっているのか、といったことを説明しています。 「これはこうなっている」という知識だけではなく、「これは何をするために、どのような原理でそうなっているのか」まで、きちんと体系立てて理解できる、ネットワーク初心者必携の1冊です。 連載期間中、電子書籍版を20%オフでご提供します!本連載の掲載に合わせて、本書籍の電子版を特別に20%オフでご提供します。興味のある方は是非ご検討ください。 クーポンコード:get3gerc※クリックすると購入ページに移動します。あらかじめクーポンコードをお控えください。 |