1 先将消息代码变换成AMI码,若AMI码中连0的个数小于4,此时的AMI码就是HDB3码;
2 若AMI码中连0的个数大于3,则将每4个连0小段的第4个0变换成与前一个非0符号(+1或-1)同极性的符号,用表示(+1+,-1-);
3 为了不破坏极性交替反转,当相邻V符号之间有偶数个非0符号时,再将该小段的第1个0变换成+B或-B,符号的极性与前一非零符号的相反,并让后面的非零符号从符号开始再交替变化。
例如:
消息代码: 1 0 0 0 0 10 0 0 01 1 0 0 0 0 1 1
AMI码: +1 0 0 0 0 -10 0 0 0+1 -1 0 0 0 0 +1 -1
HDB3码:+1 0 0 0 +V -10 0 0 -V+1 -1 +B 0 0 +V -1 +1
上面由前人编辑的编码与本人所学教材(《通信原理(第3版)》北京邮电大学出版社)一致,但操作起来每每生出许多曲折之处,譬如1的符号后来怎么变的,或者8个0连时又是怎么样,都未详解。因此本人将自己所发现的简易编法写出,如有雷同,实属幸事。
另一位编辑者:本人所学教材为《通信原理(第六版)》(国防工业出版社,樊昌信版)
首先,回答前一位作者的问题(也是HDB3码学习中的的FAQ):
1的符号怎么变?
1的符号必须与AMI码保持一致。8个连零怎么办?
无论有多少连续的0,都是由前向后,4个一组。
原理:HDB3码既要包含AMI的交替特性使输出无直流特性,又要不出现四个以上的连0,因此可以先满足后者。
1.把0000换为取代节。
规则:先将0000分离开来,第一个0000直接变为000V,然后数相邻两个0000之间1的个数,奇数则变为000V,偶数则变为 B00V。
这是经验方法,而不是HDB3的规范方法。是错误的,在樊昌信的书上使用的例子就是反例。
2.更新符号。
根据教材有:B总是与其前面的1或V符号相反,V总是与前面的1或B相符号相同,1总是与前面的V或B符号相反,就可以编符号了。
对上述的说明(参考自樊昌信版《通信原理》):
取代节:
根据解码规则第一条,破坏交替性的1或-1出现时,将此符号和前面3个符号替换为0000。
V为破坏脉冲,即破坏交替性的1或-1出现的位。B为调节脉冲,B可以是0,1或-1。将0000替换为B00V。
调节脉冲的作用:
在破坏脉冲的极性也交替的情况下保证破坏脉冲对整个序列极性交替的破坏性。
正确的步骤为:
1、写AMI码
2、把0000换为取代节。0000分离开来,替换为B00V
3、V的取值:第一个V取值与AMI码的第一个-1相同,即取-V,以后交替取+V,-V。
4、B的取值:根据V和V前面存在的1或-1,写B,若+V前面是-1或-V,则取B=+B,即B没有破坏极性,但V破坏了极性,下同;若+V前面是+1或+V,则取B=+B;若-V前面是+1或+V,则取B=-B;若-V前面是-1或-V,则取B=+B。
附简单方法
快速的编码方法:
取节 : 相邻V之间奇数个非0码就取000V;偶数个非0码就取B00V,
定符号:
V的取值 第一个V取值与AMI码(见上)的第一个+1相同,即取+V,以后交替取+V,-V。然后1与B的符号交替变化即可
快速编码原理:
HDB3码的编码中,V相当于破坏码元,B相当于为消除破坏码元影响而引入的调节码元。为保证输出无直流的特性,破坏码元V的保持交替变化,同理1与B也得保持交替变化。
例如:
消息代码:1 0 0 0 0 10 0 0 01 1 0 0 0 0 1 10 0 0 00 0 0 0 1 1 10 0 0 01
中间码: 1 0 0 0 V 10 0 0 V1 1 B 0 0 V 1 1B 0 0 VB 0 0 V 1 1 10 0 0 V1
HDB3码:+1 0 0 0 +V -10 0 0 -V+1 -1 +B 0 0 + V -1 +1 -B 0 0 -V+B 0 0 +V -1 +1 -10 0 0 -V+1 1 由HDB3码确定的基带信号无直流分量,且只有很小的低频分量;
2 HDB3中连0串的数目至多为3个,易于提取定时信号。
3 编码规则复杂,但译码较简单。 1从收到的符号序列中找到破坏极性交替的点,可以断定符号及其前面的3个符号必是连0符号,从而恢复4个连码;
2再将所有的-1变换成+1后,就可以得到原消息代码