networking - 如何在 4B/5B 编码方案中编码 0000 到 11110

标签 networking encoding error-detection

4B/5B encoding

4B/5B ecoding

从 4B/5B 编码方案 dataward 0000 编码为 11110 码字,类似地 0001 编码为 01001 等。

这里两个码字之间的异或运算的结果将是另一个有效码字。

例如,11110和01001的异或是另一个代码字10111,其数据字是1011。在这里我没有问题。

再次,为了避免直流分量,使用了 NRZ-I 线路编码方案。因此,输出码字中不存在三个连续的零。 码字中不再有一个标题和两个尾部零。我们不用担心NRZ-I编码方案中的个数。

But, how can I encode 0000 to 11110 or 0001 to 01001 and which algorithm I should apply for this encoding scheme.

我也搜索谷歌并学习书籍。但他们到处都在说同样的事情,但我没有得到答案。

提前致谢

最佳答案

Decimal Representation

为了正确理解这种机制,我们应该考虑所有码字的十进制值。仔细观察上表,我将表中的所有二进制值都转换为十进制形式。

现在,为了避免传输过程中出现直流分量,我们应该只考虑不超过一个起始零和两个尾随零的码字。 所以我们得到每两个连续的数据字被分配给另外两个连续的码字。

像这样

(2,3)到(20,21),

(4,5)到(10,11)

(6,7)至(14,15)

(8,9)至(18,19)

(10,11)至(22,23)

(12, 13) 至 (26,27)

(14,15)至(28,29)

异常

(0,1)到(30,9)

1 被分配给 9,因为从 0 到 8(含)的所有代码字由于零过多而无效。因此第一个有效码字 9 被分配给 1。 如果所有有效码字都是连续分配的,那么在传输过程中仅更改一位(单比特错误),它将转换为下一个或前一个码字,并且该错误将不会被检测到。

我们知道,在 block 编码中,如果在传输过程中由于错误而将有效码字转换为另一个有效码字,则它将保持不被检测到,这是 block 编码的局限性。因此,为了避免这种情况,这些所有有效代码字不会连续分配数据字。

关于networking - 如何在 4B/5B 编码方案中编码 0000 到 11110,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44992151/

相关文章:

windows - ubuntu 上的 cfdirectory 在 windows 上访问 smbfs 的奇怪问题

c++ - 获取远程主机IP地址QTcpServer

c++ - 如何将二进制字符串转换成base64编码的数据

c - 海明码错误检测

error-correction - 汉明码中的偶/奇校验

ios - AFNetworking 识别失败原因 : User cancel request or network failure

java - 如何确保系统通过 LAN 连接?

php - PHP 中 JavaScript 的 encodeURIcomponent 等价物是什么?

c# - 在图像上绘制字节

java - jar 不起作用?