如何在4B/5B编码方案中将0000编码为11110?

7

4B/5B编码

4B/5B编码

在4B/5B编码方案中,数据位0000被编码为11110,类似地,0001被编码为01001等。

两个码字之间的异或操作的结果将是另一个有效的码字。

例如,11110和01001的异或值是10111,其数据位为1011。这里我没有问题。

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

但是,我该如何将0000编码为11110或0001编码为01001, 以及应该使用哪种算法进行此编码方案。

我搜索了谷歌并查阅了书籍。但无论在哪里都只讲述相同的事情,我没有得到我的答案。

提前致谢


我认为这更适合于StackExchange电气工程,不确定您为什么要寻找算法,编码是一种转换表。 - Jeremy Thompson
3
您可以使用查找表进行编码。这个表只有16个条目。 - Ron Maupin
其他16个条目或代码词将保持未使用状态,这些代码词称为无效代码词。 - S. M. Fahad Ahmad
编码表只有16个条目(0f)。这就是如何编码4B5B的方法,这也是你所要求的方法。解码表将有32个条目。通常,这是由硬件在只读存储器(ROM)中使用固定表完成的,但如果您想在软件中执行,则可以在应用程序中创建这些表格。 - Ron Maupin
感谢Ron Maupin的回答。 - S. M. Fahad Ahmad
Micho 也感谢你。 - S. M. Fahad Ahmad
1个回答

7

十进制表示

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

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

就像这样

(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。如果所有有效的码字都是连续分配的,那么在传输过程中只改变一个位(单个位错误)时,它将转换为下一个或上一个码字,并且这个错误将保持未检测状态。

我们知道,在块编码中,如果一个有效的码字在传输过程中被转换为另一个有效的码字,结果会导致错误未被检测到,这是块编码的限制。因此,为了避免这种情况,这些所有有效的码字并不是与数据字连续分配的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接