从 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.
我也搜索谷歌并学习书籍。但他们到处都在说同样的事情,但我没有得到答案。
提前致谢
最佳答案
为了正确理解这种机制,我们应该考虑所有码字的十进制值。仔细观察上表,我将表中的所有二进制值都转换为十进制形式。
现在,为了避免传输过程中出现直流分量,我们应该只考虑不超过一个起始零和两个尾随零的码字。 所以我们得到每两个连续的数据字被分配给另外两个连续的码字。
像这样
(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/