イーサネットの物理層(4)物理層基礎技術 クロック同期方式 埋込クロック(Embedded Clock)同期 / 非同期(調歩同期)

埋込クロック(Embedded Clock)同期

「埋込クロック同期」は、送信データに送信クロックを埋め込む方式だ。受信側は受信データからクロックを抽出しデータを読み込むマスタークロックとして使用する。送信元クロック同期は、送信データとクロックのズレ(スキュー)が高速化の足かせになる。この問題を解決し、クロック線を無くすことで信号線を減らすこともできる。現在のシリアル伝送の主流がこの方式だ。

通信の主役は、パラレル通信から始まりシリアル通信に変わり、更に様々なクロック同期方式が登場した。今のところ「埋込クロック同期」方式が最も優れた高速通信方式として普及している。

変遷する通信の主役

パラレル通信ビットスキューが高速化の制約要因
シリアル通信ビットスキュー問題を解消したが、ビット幅(一般的に8)分の高速化が必要
共通クロック同期データとクロックの遅延が高速化の制約要因
送信元クロック同期遅延差問題を解消したが、スキューが高速化の制約要因
埋込クロック同期データとクロックのスキュー問題を解消。現時点での最終解答

図1 の様に、埋込クロック同期は送信側でデジタルデータを信号変換し、送信側クロックに合わせて変換信号を送信する。受信側は受信したデータ(信号)からクロックを抽出し、このクロックを基にデータを取り込む。受信側はデータから送信クロックを再生することで、データを正しく受信することができる。データからクロックを作り出す技術を CDR(Clock Data Recovery)と呼び、安定したクロックを作り出す技術を PLL(Phase Locked Loop)と呼ぶ。

図1 埋込クロック同期
図1 埋込クロック同期

CDR/PLL を正しく動作させるためには、一定期間内に必ず信号の反転(High→Low/Low→High)が起きる必要がある。図2 の様に、High 状態や Low 状態が長く続くとデータからクロックを取り出すことができず、PLL が本来の周波数から外れデータを正しく取り込むことができなくなる。これを防止するため、送信側の信号変換は「一定期間内に必ず信号が反転する」ように変換する必要がある。例えば、10BASE5/2/-T で使用するマンチェスター符号は、1クロックの間に必ずデータの反転が起きる方式になっている。イーサネットは伝送速度により符号化方式が異なる。これは、クロックを確実に抽出できること、通信全体で「0」と「1」のバランスが取れていることと伝送媒体が許容する周波数帯以下に抑えるためだ。イーサネットの個別規格の中で、具体的な動作は改めて解説したい。

図2 CDR/PLL が正しく動作しないケース
図2 CDR/PLL が正しく動作しないケース

非同期(調歩同期)

調歩同期は、RS232C や RS485 等のフィールドバスや UART(Universal Asynchronous Receiver/Transmitter:ユーアート)で現在も広く使われている通信方式だ。この方式は、送信側と受信側が各々独自のクロック源を持ち、設定により通信速度を合わせる方法で、クロックの周波数や位相が一致しない「非同期」通信方式だ。送信側と受信側を「同じ」通信速度に設定し、「設定を合わせてあり通信できるはずだ」の前提で通信を行う方式だ。当然、送信側と受信側のクロック誤差が大きく、一般的に±1% の誤差があると言われている。送信側と受信側の誤差は、1ビット送受信のたびに累積し、誤差が大きいとデータ後半で正しく受信できなくなる。

調歩同期の一般的なデータフォーマットが図3 だ。Mark 状態から Space 状態に変わることで、通信の開始を検出する。この最初の1ビット幅の Space 状態を「Start ビット」と呼び、ここが基準点になる。Start ビットに続く連続データを送受信することで通信が成り立っている。予め設定されたデータ長を読み込んだ後、「Stop ビット」として 1 ビット以上の Mark 状態を検出することで通信を完了する。

通信速度、データビットの長さ、パリティビットの有無/偶数パリティ・奇数パリティ、Stop ビットの長さを予め送信側と受信側に全く同じ設定を行うことで、正しく通信することができる。

図3 RS232C/UART フォーマット
図3 RS232C/UART フォーマット

Start ビット検出は、一般的には通信速度の16倍のクロックでデータをサンプリングすることで見つけ出す方式だ。クロック16個で Start ビット幅になるため、連続して 8個分の Space 状態を検出すると、Start ビットとして認識する。受信データとこれをサンプリングするクロックが非同期であるため、最初の検出点は最大1クロック分の誤差が発生する(赤↑)。このため、Start ビットの中央から少し遅れたところで Start ビットを検出することになる(図4)。次のビット(データ先頭ビット)は、Start ビット検出点から 16 クロック目になる。順次 16 クロックごとにデータをサンプリングし、予め設定されたデータを取り込んだ後、Stop ビットを確認し終了する。

図4 Start ビット検出
図4 Start ビット検出

調歩同期は誤差が累積する方式だ。図5 は3バイト連続で送信した例だが、3バイト目の後半ではサンプルポイントが領域を外れ正しく受信できない。実際の UART では、1バイト送受信のみで複数バイトの送受信はできない。調歩同期方式で、複数バイトを送信する規約が存在しないのは、この誤差が一番の要因だ。図5 の例は誤差が±1% だが、誤差が2倍の±2% では、1バイト目のパリティビットの検出が怪しくなる。

図5 誤差の累積(調歩同期方式で、複数バイトを送信すると…)
図5 誤差の累積(調歩同期方式で、複数バイトを送信すると…)
調歩同期で最も遅い通信?

調歩同期の通信速度は、一般的に9600bps 以上が現在の常識だ。最高速度は 115.2Kbps が最高速度になる。最低速度も一般的には 1200bps 辺りでこれより遅い通信速度を設定することは考えにくい。しかし、この常識から大きく外れた装置を40年以上前に開発したことがある。最低通信速度が 12.5bps の通信装置だった。文字コードが 5ビット長 Baudot Code のため、1秒間に2文字程度送ることができた。この装置の用途は、日本とアフリカの某国とのテレックス通信用だった。当時のアフリカは通信事情が劣悪でこれ以上高速な通信ができなかったため、このような通信速度になった。国際テレックスの通信速度は 50bps だが、当時は 1/2 の 25bps と 1/4 の 12.5bps の通信メニューがあったようだ。

 テレックスは、テレタイプ端末を使用する通信方式で、電話の様に通信相手の端末を指定することだできる。キーボードを使った極端に遅いチャットの様なイメージのサービスだ。当時のテレックスオペレータは、1秒間に8文字から10文字のキー入力ができる猛者がいたが、この通信回線ははるかに遅く秒速2文字だった。

 Baudot Code は、アルファベットの a~z を表現できるため、次のようなテスト電文で通信テストを行った。

the quick brown fox jumps over the lazy dog

このような文章を「パングラム」と呼びアルファベットを全て用い、重複の少ない短文のことで、当時はテレタイプの試験電文として使用した。現在は「文字フォント」のサンプルに使われているようだ。

イーサネットの物理層

この記事を書いた人

岩崎 有平

早稲田大学 理工学部 電子通信学科にて通信工学を専攻。
安立電気(現 アンリツ)に入社後、コンピュータ周辺機器の開発を経てネットワーク機器の開発やプロモーションに従事する。
おもにEthernetを利用したリアルタイム監視映像配信サービスの実現や、重要データの優先配信、映像ストリームの安定配信に向けた機器の開発行い、Video On Demandや金融機関のネットワークシステム安定化に注力した。
現在は、Ethernetにおけるリアルタイム機能の強化・開発と普及に向けて、Ethernet TSNの普及活動を行っている。