由于课本上对HDB3码的编码方式讲解的不够详尽,在通过查阅多本参考书后,特对HDB3码的编码方式总结如下:
步骤:(以下步骤针对存在四连零0000的原码,没有四连零的原码编为AMI码即为HDB3码。)
①标记原码的第一个“1”码为+1(注:不再像大多数书上说的先写AMI码),如001000011写为00+1000011。
②检查四连零的情况,取代变换节,将四连零编为一组,用V替代0000的最后一个0,记为000V。
③检查相邻V中间非零码的个数,如果两个相邻V之间有奇数个非零码,则记为000V,若有偶数个非零码,则记为B00V。
④对“1”“B”加符号,首先将“1”和“B”看做整体,保证这个整体按正负交替规律变化。
⑤对“V”加符号,保证V与它的前一个非零码的符号相同(这也是最后B00V码段中B与V符号总是相同的原因)。
⑥整理,如有需要将B和V用1替换。写出HDB3码。
原理:
“V”码称为破坏码(Violate),它的加入破坏了原先正负交替的规律。“B”码称为平衡码(Balance),引入B是因为当相邻两V之间有偶数个非零码是“V”不满足正负极性交替的规律,加入B来平衡它。
举例:
原码:1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0
①: +1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0
②: +1 0 0 0 V 0 1 1 0 0 0 V 0 0 0 V 1 0 0 0 V 1 0 0(注:八连零情况中两V之间没有非零码,当偶数个处理。)
③: +1 0 0 0 V 0 1 1 B 0 0 V B 0 0 V 1 0 0 0 V 1 0 0
④: +1 0 0 0 V 0 -1 +1 -B 0 0 V +B 0 0 V -1 0 0 0 V +1 0 0
⑤: +1 0 0 0 +V 0 -1 +1 -B 0 0 -V +B 0 0 +V -1 0 0 0 -V +1 0 0
⑥:如有需要,将B和V用1替换,B和V只是为了表明该非零码是由原码中的0变换来的。