什么是4B/5B編碼?
4B/5B編碼是百兆以太網(即快速以太網)中線路層編碼類型之一,就是用5bit的二進制數來表示4bit二進制數,映射方式如下表所示:
為什么要進行4B/5B編碼?
在通信網絡中,接收端需要從接收數據中恢復時鍾信息來保證同步,這就需要線路中所傳輸的二進制碼流有足夠多的跳變,即不能有過多連續的高電平或低電平,否則無法提取時鍾信息。
Manchester(曼切斯特)編碼可以保證線路中碼流有充分的跳變,因為它是用電平從“-1”到“+1”的跳變來表示“1”,用電平從“+1”到“-1”的跳變來表示“0”,但是這種編碼方式的效率太低,只有50%,相當於用線路的有效帶寬來換取信號的跳變,十兆以太網就是使用Manchester編碼,雖然線路的有效帶寬只有10Mbps,但實際帶寬卻是20Mbps。
百兆以太網用的4B/5B編碼與MLT-3編碼組合方式,發送碼流先進行4B/5B編碼,再進行MLT-3編碼,最后再上線路傳輸;千兆以太網用的是8B/10B編碼與NRZ編碼組合方式;萬兆以太網用的是64B/66B編碼;PCIE 3.0用的是128B/130B編碼。
4B/5B編碼規則有哪些?
4B/5B編碼其實就是用5bit的二進制碼來代表4bit二進制碼。此編碼的效率是80%,比Manchester碼高。4B/5B編碼的目的在前面已經說過了,就是讓碼流產生足夠多的跳變。4位二進制共有16種組合,5位二進制共有32種組合,如何從32種組合種選取16種來使用呢?這里需要滿足兩個規則:
1). 每個5比特碼組中不含多於3個“0”;
2). 或者5比特碼組中包含不少於2個“1”;
此規則是怎么來的?這就要從MLT-3碼的特點來解釋了。MLT-3碼的特點簡單的說就是:逢“1”跳變,逢“0”不跳變。為了讓4B/5B編碼后的碼流中有足夠多的跳變就需要編碼后的碼流中有盡量多的“1”和盡量少的“0”。
這種編碼的特點是將欲發送的數據流每4bit作為一個組,然后按照4B/5B編碼規則將其轉換成相應5bit碼。5bit碼共有32種組合,但只采用其中的16種對應4bit碼的16種,其他的16種或者未用或者用作控制碼,以表示幀的開始和結束、光纖線路的狀態(靜止、空閑、暫停)等。三種應用實例是FDDI、100BASE-TX和100BASE-FX8B/10B編碼與4B/5B的概念類似,例如在千兆以太網中就采用了8B/10B的編碼方式。
4B/5B編碼是在百兆位快速以太網的光纖分布式數據接口(FDDI,Fiber Distributed Data Interface)中采用的信息編碼方案。這種編碼的特點是將欲發送的數據流每4bit作為一個組,每四位二進制代碼由5位編碼表示,這5位編碼稱為編碼組(code group),並且由NRZI方式傳輸。
4B/5B編碼是在百兆位快速以太網的光纖分布式數據接口(FDDI,Fiber Distributed Data Interface)中采用的信息編碼方案。這種編碼的特點是將欲發送的數據流每4bit作為一個組,每四位二進制代碼由5位編碼表示,這5位編碼稱為編碼組(code group),並且由NRZI方式傳輸。
在通信系統中,通信速度與線路傳輸中的調制速率,所謂調制速率是指單位時間內線路狀態變化的數目,以波特(baud)為單位。實用4B/5B碼的最大優點是能夠在很大程度上降低線路傳輸中的調制速率降低調制速率,從而可以降低對線路的要求。
例如:如果采用曼徹斯特編碼,在每個調制時間間隔內跳動兩次,則數據傳送速率是波特率將的二分之一。在快速以太網中,數據傳輸速率為100Mbps,如果采用曼徹斯特編碼,波特率將達200Mbps,對傳輸介質和設備的技術要求都將提高,增大了傳輸成本。如果使用4B/5B編碼,在傳輸速率為100Mbps的情況下,其調制速率為:100M÷(4/5)=125M(baud)。即波特率為125M baud,大大低於曼徹斯特編碼時的200M baud,這樣就在快速以太網中使用非屏蔽雙絞線成為可能。
4B/5B編碼表如下所示:

關於線路編碼類型,如NRZ、NRZI、HDB3、B3ZS、B8ZS、AMI、CMI、MLT-3、Manchester等,以后會介紹。
