4b/5b符号化 (4B5B, 4B/5B とも) は、シリアル通信に用いられる伝送路符号の1つ。ISO/IEC 9314-1が規定したもので、この名称は4ビットのデータを5ビットのデータに変換して転送することに由来するISO/IEC 9314-1:1989, Section 6.1. PHY-to-MAC Services。

特徴 1つの通信路上でクロックとデータを同時に送信する際、受信側が正しくクロックを同期するには一定の期間内に必ず遷移が起こる必要がある。 例えばNRZなどで 0000 のような連続する4ビットは、伝送路の物理量が Low を出力し続け High への遷移を含まないため、同期に失敗する恐れがある。 この対策のために、4b/5bでは、5ビット中に最低2回の遷移が起こるようなものに変換して送る。

副作用として、4ビットをそのまま送るよりも多くのビットが必要となる。 利点として、5ビットで表現できるビット列の中にはデータとして使われないものがあるため、規格によってはこのようなビット列を制御用に定義したり、不使用なパターンを受信したらリンク上の不具合として検出したりもできる。

一般に4b/5b という名称はFDDIによる実装を指すが、他の実装として群符号化記録 (GCR) による4b/5b符号もある。 また、4b/5b符号と同様の目的のものとして、8b/10bやスクランブラ(擬似乱数)を使う方法がある。

用例

4b/5b は以下の規格で採用されている。

FDDI (ANSI X3T12)ANSI Fiber Distributed Data Interface (FDDI) Standards (1991-08) - 光ファイバ・ツイストペアケーブルの通信。1980年代中盤に普及した。 (Multichannel Audio Digital Interface, AES10-1991) - デジタル音声の伝送。 ファーストイーサネット (IEEE 802.3u-1995) - 100BASE-TXによるツイストペアケーブル通信が代表的。 USB PD (2012) - 設定データを4b/5b符号化してUSB Type-CのCCピン上にBMC プロトコルを用いて伝送する。

光ファイバ上では、 NRZIを用いて4b/5b符号を伝送する。 FDDI over copper (CDDI) や 100BASE-TX では、ツイストペアケーブル上にMLT-3を用いて4b/5b符号を伝送する。

変換方式 以下に変換テーブルの代表的な実装を示す。 データを表現する16種類の符号(シンボル)のほか、制御用のシンボルがFDDIやファーストイーサネットで使われているIEEE 802.3-2022, Section 24.2.2.1 Code-groups。 このビット変換に決まった法則はなく、事前に用意したテーブルによる変換が行われる。これら5ビット符号は左から順に通信路上に送られる。

+ 4b/5bによるデータ変換 データ 5b符号 十六進数 二進数0 0000 111101 0001 010012 0010 101003 0011 101014 0100 010105 0101 010116 0110 011107 0111 011118 1000 100109 1001 10011A 1010 10110B 1011 10111C 1100 11010D 1101 11011E 1110 11100F 1111 11101

+ 4b/5bの制御シンボル シンボル名 5b符号 意味 FDDI 100BASE-X H 00100 Halt (停止) I 11111 Idle (アイドル状態) J 11000 Start (開始1) K 10001 Start (開始2) L 00110 Start (開始3) P 00000 Sleep (EEE用途) Q Quiet (Loss of signal) R 00111 Reset S 11001 Set T 01101 Terminate (終了)

制御シンボルを複数組み合わせて以下のように制御シーケンスとして使うことがある。

+ FDDI・イーサネットで用いる制御シーケンス シンボル名 5b 符号 用途 JK 11000 10001 開始デリミタ TT 01101 01101 終了デリミタ(FDDI) TR 01101 00111 終了デリミタ(Fast Ethernet)

+ USB PDで用いる制御シーケンスUniversal Serial Bus Power Delivery Specification rev.3.2 (2023-10), Section 5.6.1. Packet Framing シンボル名 5b 符号 用途 JJJK 11000 11000 11000 10001 SOP (Start Of Packet) JJLL 11000 11000 00110 00110 SOP' JLJL 11000 00110 11000 00110 SOP" JSSL 11000 11001 11001 00110 SOP'_Debug JSLK 11000 11001 00110 10001 SOP"_Debug RRRS 00111 00111 00111 11001 ハードウェアリセット RJRL 00111 11000 00111 00110 ケーブルリセット T 01101 終了デリミタ

出典

外部リンク Simulator - 4B/5B Encoder line written in Matlab