网络与通信-HDB3码编码方法
作者:互联网
之前一直没搞明白HDB3的编码方法,在网上找了许多关于HDB3码的编码方法,但是经过验证都不正确。在此记录一下正确的编码方法。
HDB3编码方法:
step1:在所有出现4个0的位置的最后一个0的位置标记上‘V’
step2:默认第一个V为正(事实上为负也可以,这里为了方便说明默认为正),然后接下来让所有的V交替正负号
step3:对于每两个V之间的1来说,让第一个1的正负与起始的V正负号相反,之后的1和这个1正负号交替
step4:对于前面没有V的1来说,令它与后面的V正负号相同。对于所有V,检查其前面是否存在与其符号相同的1,如果没有则需要修改该V所对应的4个0的第一个0为B,正负号与该V相同
说了步骤估计还是云里雾里,直接来个例子:
example:
将100001101000000001100001转换为HDB3码
位置 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
源码 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 |
step1 | V | V | V | V | ||||||||||||||||||||
step2 | V+ | V- | V+ | V- | ||||||||||||||||||||
step3 | V+ | 1- | 1+ | 1- | V- | V+ | 1- | 1+ | V- | 1+ | ||||||||||||||
step4 | 1+ | V+ | 1- | 1+ | 1- | V- | B+ | V+ | 1- | 1+ | B- | V- | 1+ | |||||||||||
最终输出 | 1+ | 0 | 0 | 0 | 1+ | 1- | 1+ | 0 | 1- | 0 | 0 | 0 | 1- | 1+ | 0 | 0 | 1+ | 1- | 1+ | 1- | 0 | 0 | 1- | 1+ |
下面结合这个例子解释一下上面的步骤:
第一步,标出来V,没什么好说的
第二步,给标出来的V赋一个正负号,要交替的,比如+-+-...或是-+-+...,这里是+-+-+-...这样的
第三步,比方说第6位的1,想要判断他的正负号,只需要看他前面的V的正负号并与之相反就行了,后面的1正负号就和他来回相反就行,直到遇见下一个V。因此6-12位的1判断流程就是首先判断出第6位的1是负号,然后第7位与之相反是正号,第9位与第7位相反是负号。第18位的1就要看它前面的第17位的V的正负,判断流程同上
第四步,HDB3需要满足V前面的1符号需要与自身相同。因此对于开始的1(例子中就是第一位的1)需要与它后面的V符号相同,也就是正号。然后对于每个V逐个排查前面的1符号与自己是否相同。在本例中,发现第17位的V在它前面的不是与它符号相同的1,所以就在这个V对应的4个0的第一个0的位置(也就是第14位)标上B,并且让这个B的符号与V相同。对于第23位的V也是一样的道理。
确定了所有的正负号,只需要按照正负号输出0, 1, -1就行了。
标签:编码方法,相同,符号,前面,通信,HDB3,正负号 来源: https://www.cnblogs.com/player-unknow/p/16353932.html