Kalan's Blog

Current Theme light

那些比較冷門的 Networking 理論 (2) | 興趣使然的研究之旅

上一篇我們提到了 Menchaster 編碼雖然可以有效解決資料流都是 0 或 1 的情況,然而要同樣的資料卻需要兩倍的頻寬,這對高速傳輸來說是我們不希望的。

今天要介紹 4B/5B 編碼可以有效解決資料流都是 0 / 1 的情形,又不需要犧牲太多頻寬。

4B/5B

4B/5B 是將原始資料以 4 bit 為一組,改為 5 bit 一組。這樣一來像是 00001111 這些資料流,透過編碼後讓他們不要都是 0 或 1,避免無法回復 clock 的情況發生。

4bit5bit
000011110
000101001
001010100
001110101
010001010
010101011
011001110
011101111
100010010
100110011
101010110
101110111
110011010
110111011
111011100
111111101

如果我們觀察 00001111,可以發現轉為 5 bit 之後都會保證有一個 transition(從高電位到低電為或反過來)。雖然多了一個 bit,同樣的傳輸量需要多 20% 的頻寬,但跟 Menchaster 比起來還是差很多。1000BASE-X 是使用 8B/10B 編碼,概念上與 4B/5B 相同,只是改為一次編碼 8 bit。8B/10B 除了用在 1000BASE-X 以外,也用在各種高速傳輸的協定當中,例如 PCI1.0/2.0、USB3。

8B1Q4

對活在 2023 年的我們來說,有線網路的速度動輒 1Gbps,如果要求更大的頻寬則是 10Gbps。

常見的乙太網路電纜線,內部是由一對一對的絕緣線互相纏繞。這種纏繞方式可以有效減少雜訊。儘管如此,在頻率很高的情況下還是容易受到雜訊干擾。

在 100BASE-TX 以上的傳輸中,會用 8B1Q4 來編碼(8 binary to 1 quinary 4)。主要的原理是在同一個週期內送出多個 bit 進而加大資料量。例如 CAT-6 雖然傳輸頻率為 125Mhz,傳輸速率卻是 1Gbps。

8B1Q4 簡單來說是將 8bit + 1bit (檢查碼) 分成四組,可以看到上圖總共有四組線,分組以後再分別以不同的電位表示。

不過實際上是怎麼將 9bit 資料切成四組的呢?首先會看檢查碼 + 資料前兩碼總共 3bit 去找對應的變換表,剩下的 6bit 則是從前面找到的變換表中編碼。比較特別的地方在於,每條纜線的電位有 5 個,而不是只有高電位與低電位。透過這種方式,一個週期內可以傳送 2bit,同一頻寬內傳輸量就是兩倍。

這也是為什麼 CAT-6 雖然傳輸頻率為 125Mhz,傳輸速率卻是 1Gbps 的原因。

If you found this article helpful, please consider buy me a drink ☕️ It'll make my ordinary day shine✨

Buy me a coffee