同期方式とは?
ビット同期・ブロック同期・調歩同期を図解で分かりやすく解説
連続同期方式、キャラクタ同期方式、フラグ同期方式、フレーム同期、プリアンブルまで。通信の「タイミング」と「区切り」が一目でわかる学習ガイド。
はじめに|「同期」が分かれば通信が分かる
「ビット同期とブロック同期は何が違う?」「調歩同期方式のスタートビットって何?」「HDLCのフラグとEthernetのプリアンブルは同じもの?」――似た言葉が次々に出てくると、通信の仕組みは難しく感じられます。
しかし、考えるポイントはたった2つ。
① 0と1を『いつ』読むか 、そして② データを『どこからどこまで』のまとまりとして読むか です。
この2つの視点を使って、主要な同期方式を図と例で順番に理解していきましょう。
ビットのタイミング
文字・フレームの境界
1. 伝送・交換方式における同期の基本
1-1. 同期とは?
パソコンやスマートフォンは、文字や画像を0と1のビット列に変えて通信します。
送信側がどれほど正しくビット列を送っても、受信側が読む位置を間違えれば別のデータになってしまいます。
そこで、送信側と受信側で読み取りのタイミングや区切りを合わせる「同期制御」が必要になります。
「伝送」は信号を届ける仕組み、「交換」は通信先へ向かう経路や接続を切り替える仕組みです。
同期は、その内主に伝送された信号を正しく読み取る場面に関係します。
1-2. 同期がずれると何が起きる?
8ビットの01000001 は、ASCIIコードでは英字「A」です。
しかし、受信の開始位置がずれたまま8ビットずつ取り出すと、別の文字として解釈される可能性があります。
さらに、回路が持つ時計にはわずかな誤差があるため、長く通信を続ける内に読み取り位置がずれる場合もあります。
2. ビット同期とブロック同期の違い
2-1. ビット同期は「1ビットをいつ読むか」
ビット同期では、受信側がビットの境界を認識し、各ビットを適切なタイミングで読み取ります。
一定周期のクロックを共有したり、データ信号の変化からクロックを再生したりする方法があります。
2-2. ブロック同期は「データのまとまりをどこで区切るか」
ビットを正しく読めても、文字やフレームの開始位置が分からなければ意味のあるデータとして解釈出来ません。
ブロック同期(フレーム同期)は、SYNなどの制御文字、フラグなどの特別なパターンを利用してまとまりを見分けます。
3. 同期式通信と非同期式通信
3-1. 同期式は連続したタイミングを維持する
同期式通信では、クロックなどを用いて連続するビットを読み取るタイミングを確立・維持します。
まとめて長いデータを送る際には、文字ごとに開始と終了を付けずに済む方式もあります。
3-2. 非同期式でも「同期」は必要
非同期式通信は「全く同期しない」通信ではありません。
代表的な調歩同期方式では、1文字の先頭にスタートビットを付け、その短いデータ単位の読み取りタイミングを合わせます。
次の文字まで時間が空いても、その文字のスタートビットで改めてタイミングを合わせられます。
| 比較 | 同期式 | 非同期式(調歩同期の例) |
|---|---|---|
| 基本的な仕組み | 連続したタイミングを確立・維持 | 文字などの単位で開始を通知 |
| 同期情報 | クロック共有・再生など | スタートビット |
| 代表的な特徴 | 連続送信に適する | 不定期な少量データにも扱いやすい |
| 注意点 | クロックの維持が必要 | 文字ごとの付加ビットが必要 |
※ プログラムでいう「同期処理・非同期処理」と、伝送路の同期方式は別の話です。
4. 連続同期方式とクロック
4-1. クロックはビットを読むための合図
連続同期方式では、ビットのタイミングを合わせる信号を継続的に利用します。
クロックを別の信号線で伝える方法と、伝送信号からクロックを再生する方法があります。
受信側は確立したタイミングで、各ビットの値を判断します。
4-2. 長い通信での利点と注意点
連続したビット列を送る場合、文字ごとのスタート・ストップビットを省ける構成が可能です。
一方、タイミングがずれないように維持する仕組みが不可欠です。
信号の変化が少ない場合もクロックを取り出せるよう、ライン符号化やスクランブルなどを使う規格もあります。
5. 調歩同期方式(スタートストップ同期方式)
5-1. スタートビットとストップビットの働き
調歩同期方式では、一般的なUART通信のように、アイドル時の1からスタートビット0への変化を検出して、受信側がデータの開始を認識します。
決められた通信速度でデータビットを読み、最後にストップビット1を確認します。
パリティビットを付ける設定もあります。
0
1
5-2. 8N1の伝送効率は80%
「8N1」はデータ8ビット、パリティなし、ストップ1ビットの設定です。
スタート1ビットを含めると、実際に送るのは合計10ビット。
そのうち実データは8ビットなので、スタート・ストップビットだけを考えた伝送効率は80%です。
80%
20%
方式の利点は、文字を不定期に送信し易く、仕組みが比較的単純な事です。
反面、短いデータごとに付加ビットが必要です。
UARTやRS-232Cなどの基礎知識として良く登場します。
6. キャラクタ同期方式とSYN符号
6-1. SYNで文字の区切りを見つける
キャラクタ同期方式では、SYN(同期文字)という特別な制御文字を用いて、受信したビット列の文字位置を認識します。
代表例としてBSC(基本形データ伝送制御手順)が知られます。
STXは本文の開始、ETXは本文の終了を示す制御文字です。
HELLO
6-2. 調歩同期との違い
調歩同期方式は「1文字ごとにスタート・ストップ」、キャラクタ同期方式は「SYNで文字位置を合わせ、複数文字を連続送信」と覚えましょう。
キャラクタ同期では、制御文字と同じ値がデータに含まれる場合の扱いにも工夫が必要です。
7. フラグ同期方式とフレーム同期方式
7-1. フラグでフレームの境界を示す
フラグ同期方式は、決められたビット列を目印にしてフレームの開始と終了を見つける方法です。
HDLCの代表的なフラグは01111110 (16進数で0x7E )。
文字の種類に依存せず、ビット列で区切りを識別出来ます。
01111110
01111110
7-2. フラグ同期とキャラクタ同期の違い
キャラクタ同期はSYNなどの制御文字を利用し、フラグ同期はビットパターンでフレームを区切ります。
後者では、データ内に同じパターンが現れると困るため、次に説明するビットスタッフィングを使います。
01111110 は頻出の値。ただし、全ての通信規格のフレーム同期で同じフラグを使う訳ではありません。8. ビットスタッフィング(ビット挿入)
8-1. データ内のフラグとの区別
HDLCのフラグと同じ01111110 がデータ内に現れると、受信側が途中をフレームの終わりと誤解しかねません。
ビットスタッフィングでは、フラグ間の内容に「1」が5個続いたら、その直後に「0」を挿入して、この区別を可能にします。
元のデータ
送信されるデータ
8-2. ボタンでビット挿入を試す
「1」が5個連続した位置に自動で「0」を加える簡単なシミュレーターです。
任意のビット列を入力して確認出来ます。
01111110 において、1が5個続いた直後へ0を挿入すると 011111010 になります。挿入された0は受信側で削除します。※ このシミュレーターはフラグ自体を含まない「フレーム内部のビット列」を想定しています。RFC 1662のビット同期リンクにあるスタッフィング規則に基づきます。
9. EthernetのプリアンブルとSFD
9-1. プリアンブルはタイミングを合わせる
Ethernetでは、フレーム本体を送る前にプリアンブルを送って、受信側が信号のタイミングを掴める様にします。
代表的なEthernetではプリアンブルは7バイト、その後にSFD(Start Frame Delimiter)1バイトが続きます。
7バイト
交互の0と1
1バイト
宛先MACなど
9-2. フラグとプリアンブルは別の役割
HDLCのフラグは「フレームの区切り」を知らせます。
Ethernetのプリアンブルは主に「受信側がタイミングを合わせる準備」です。
続くSFDが本体の開始を示します。
似て見えても、主な役割も使われる規格も違います。
境界を識別
境界を識別
プリアンブル
タイミング合わせ
開始位置
10. 同期方式を一覧で比較しよう
10-1. 同期する対象で覚える
ビット同期
ブロック/フレーム同期
クロック
スタート/ストップ
SYN
01111110
| 用語 | 何を合わせる・識別する? | キーワード |
|---|---|---|
| ビット同期 | ビットを読むタイミング | クロック、ビット境界 |
| ブロック同期 | 文字やフレームのまとまり | 境界、開始位置 |
| 連続同期方式 | 連続したビットのタイミング | 継続的なクロック |
| 非同期方式/調歩同期 | 1文字などの開始と読み取り | スタート/ストップ |
| キャラクタ同期方式 | 文字位置と文字列の区切り | SYN、STX、ETX |
| フラグ同期方式 | フレームの境界 | HDLC、01111110 |
| プリアンブル | フレーム前の受信タイミング確立 | Ethernet、7バイト |
10-2. 試験前の覚え方
ビット同期=いつ読む? / ブロック同期=どこから?
調歩同期=スタート・ストップ / キャラクタ同期=SYN
フラグ同期=01111110 / プリアンブル=送信前のタイミング合わせ
11. 理解度チェック(5問)
最後に、本文の要点を確認しましょう。
問題1:ビットの読み取りタイミングを合わせるのは?
受信側が各ビットを正しいタイミングで判断します。
問題2:文字ごとに開始と終了のビットを付けるのは?
スタートビットとストップビットを使います。
問題3:SYNという制御文字を使うのは?
SYNで文字位置の同期を行います。
問題4:HDLCの代表的なフラグは?
8ビットのフラグパターンです。
問題5:Ethernetのプリアンブルは何のため?
フレーム本体の前に受信タイミングを合わせます。
まとめ|同期方式は「タイミング」と「境界」
同期制御は、送信側が送ったビット列を受信側が正しく解釈するための仕組みです。
まずビット同期によってビットを読み取るタイミングを合わせ、ブロック同期によって文字やフレームのまとまりを理解します。
非同期式の代表である調歩同期方式はスタートビットとストップビットを使い、文字などの単位ごとにタイミングを合わせます。
キャラクタ同期方式はSYN符号、フラグ同期方式はHDLCの01111110 などを用いてデータの位置や境界を示します。
ビットスタッフィングは、データがフラグに見えるのを防ぐ技術です。
またEthernetのプリアンブルは、受信側がタイミングを掴むための信号です。
フラグが主に境界を示すのに対して、プリアンブルは信号の同期を助けるという違いを押さえましょう。
コメント