HDB3码是为了解决AMI码的连零过多的问题而产生的,如果连零情况少于4,那么HDB3码=AMI码,如果,连零情况大于4,需要进一步来讨论HDB3码的生成,这里只讨论HDB3码的生成过程,至于,为什么要这么生成HDB3码,不在讨论范围之内。HDB3码的编码流程可以归结为如下的一般过程。
1.先对二进制码进行AMI编码
AMI码的编码的规则是:对信息码中的0编码为0,对信息码中的1交替用1和-1来编码,例如,信息码中的第一个1编码AMI码是1,那么第二个1编码AMI码就是-1。
信息码:10000 10000 11 00000000 1 1
AMI码: 10000-10000 1-1000000001-1
2.判断AMI码中是否存在四连零
如果AMI码中不存在四连零,那么此时编写的AMI码就是HDB3码,流程结束;
如果AMI码中存在四连零,那么跳转到下一步。
3.改写四连零的部分
判断信息码中这一个四连零和上一个四连零之间有多少个1(设这个数为n),第一个四连零就看这一个四连零前面有几个1,或者是判断AMI码中这一个四连零和上一个四连零中有多少个±1(设这个数为n,这个数与前面的数本质上是一致的),第一个四连零就看这个四连零前面的±1。
如果n是奇数,那么就把四连零改为000V,如果n为偶数就把四连零改为B00V,过程码1就体现了这一过程
信息码: 10000 10000 11 0000 0000 1 1
AMI码: 10000-10000 1-100000000 1-1
过程码1:1000V-1000V1-1B00VB00V1-1
4.确定B和V的符号
在过程码1的基础上,B要和前面的非零元素异号,V要和前面的非零元素同号,确定符号后形成过程码2。
信息码: 10000 10000 11 0000 0000 1 1
AMI码: 10000-10000 1-100000000 1-1
过程码1:1000V-1000V1-1B00VB00V1-1
过程码2:1000V-1000-V1-1B00V-B00-V1-1
5.生成HDB3码
将过程码2中的B和V都换成1就形成了HDB3码
信息码: 10000 10000 11 0000 0000 1 1
AMI码: 10000-10000 1-100000000 1-1
过程码1:1000V-1000V1-1B00VB00V1-1
过程码2:1000 V-100 0-V1-1B00V-B00-V1-1
HDB3码:1000 1-100 0-11-1 1001 -100-1 1-1