一、核心问题:为什么要用HDB3码?
想象你要用一盏灯来传递一串二进制密码(0和1)给远方的人。
规则A(简单方法):亮灯(高电平)表示“1”,灭灯(零电平)表示“0”。
问题来了:如果连续传了很长一段“00000”,对方就一直看到灯灭着。他可能会走神,或者他的手表(用来对时间)会跑偏,导致他数错到底有几个“0”。这就是时钟失步问题。
HDB3码就是为了解决“如何在电缆里可靠地传数字信号,尤其是当有长串的0时,对方还能把时钟对准”而发明的。
二、HDB3的“交通规则”
HDB3不用两种电平(亮/灭),而是用三种电平:正电压(+1)、负电压(-1)、零电压(0)。它的核心规则有两条:
基本交通规则(来自它的前身AMI码):
遇到“1”,就交替地发出一个正脉冲(+1)或负脉冲(-1)。
遇到“0”,就发零电平(0)。
这就像单行道,车辆(脉冲)必须一正一负交替通过,这样路上正负车的数量长期看是平衡的(没有直流分量)。
警察干预规则(HDB3的独门绝技):
当这条“路上”连续出现4个“0”(即四辆空车)时,HDB3这个“交通警察”就觉得太危险了——后面司机会睡着(时钟失步)!
警察必须人为制造一次“违规”,插入一个特殊的脉冲来提醒大家。这个特殊脉冲叫“破坏脉冲”。
三、警察怎么“制造违规”?
警察(编码器)会偷偷把第4个“0”,替换成一个和上一个正常“1”脉冲同极性的电压。
这违反了“正负交替”的基本交通规则,所以叫“破坏脉冲”(V脉冲)。
接收方一看到这种“违规”,立刻就知道:“哦!这里原本是4个连0,警察在提醒我呢!”
但这样做有个小问题:如果总是用同极性,会导致正负不平衡(产生直流)。所以警察还有一个更聪明的后续操作:
他还会检查,并且根据情况,把这一串4个0里的第1个0,也偷偷换成一个小脉冲(B脉冲),来保持正负平衡。
四、两种“执法模式”(其实就是HDB3的两种编码情况)
警察有两种开罚单的模式,取决于上次“违规”以来,路上正常通过的“1”车是奇数还是偶数。
模式A(简单模式):如果上次违规后,正常“1”的个数是奇数
警察把这4个连零变成:
000V→000+(如果V是+)例子:
1, 0, 0, 0, 0(假设上个“1”是-)正常:
-1, 0, 0, 0, 0看到4连0,触发规则。上次“1”是-,之后“1”的个数是0(偶数?等一下,这里需要判断)。为了简单理解,我们直接看结果。
最终编码:
-1, 0, 0, -1, +1看!第4个0变成了和上一个“1”(-1)同极性的-1(这是V脉冲,违规了!)。同时,为了保证平衡,什么也没加?不对,仔细看,第1个0还是0。哦,这其实符合另一种模式。
模式B(平衡模式):如果上次违规后,正常“1”的个数是偶数
警察把这4个连零变成:
B00V即把第一个0变成一个小脉冲(B脉冲),B的极性和上一个正常“1”脉冲相反(这是合法的,没违规)。
把第四个0变成V脉冲,V的极性和B相同(这又违规了,但和B一正一负?等一下,B和V同极性才对)。
我知道上面有点绕。我们来看一个超级简单的万能记忆法:
五、一个秒懂的例子
原始二进制:1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1
我们一步步编码(用+/-代表正负脉冲,0代表零电平):
第一个
1: 发+1(开头随便选正)。后面是
0 0 0 0(四个连0!触发警察规则)。检查:上次违规后(还没违规过),正常“1”的个数是1个(奇数)。用
000V模式。第4个0变成V脉冲。V必须和上一个“1”(+1)同极性,所以是
+1。所以这四个0变成:
0, 0, 0, +1(注意最后的+1是违规的V脉冲)。目前输出:
+1, 0, 0, 0, +1
下一个是
1:基本规则:必须和上一个正常脉冲(不是V脉冲)交替。上一个正常脉冲是开头的
+1,所以这个1应该发-1。输出:
... +1, -1
后面又是
0 0 0 0(又四个连0!)。检查:从上次V脉冲(那个
+1)之后,正常“1”的个数只有一个(就是刚发的-1),个数是1(奇数)。所以还用000V模式。V必须和上一个正常“1”(-1)同极性,所以是
-1。这四个0变成:
0, 0, 0, -1输出:
... -1, 0, 0, 0, -1
下一个是
1:基本规则:和上一个正常脉冲(-1)交替,所以发
+1。输出:
... -1, +1
后面是
0 0 0 0 0 0 0 0(八个连0!太长了!)。先处理前四个
0 0 0 0:检查:上次V脉冲(那个
-1)之后,正常“1”的个数是1个(刚发的+1),奇数。用000V模式。V和上一个正常“1”(+1)同极性:
+1。输出:
... +1, 0, 0, 0, +1
还剩四个
0 0 0 0:检查:刚插入了一个V脉冲(+1),它之后正常“1”的个数是0(偶数)。这次用
B00V模式!B脉冲:必须和上一个正常“1”(还是那个
+1)极性相反,所以是-1。V脉冲:必须和B脉冲(-1)同极性,所以也是
-1。这四个0变成:
-1, 0, 0, -1输出:
... +1, -1, 0, 0, -1
最后一个是
1:基本规则:和上一个正常脉冲(那个作为B脉冲的
-1)交替,所以发+1。最终输出:
... -1, +1
最终HDB3编码(对比原始二进制):
原始:
1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1HDB3:
+1 0 0 0 +1 -1 0 0 0 -1 +1 0 0 0 +1 -1 0 0 -1 +1
你看:
没有长连0了:最长只有3个连0。
有“违规”:找找那些连续两个同极性的脉冲(比如
+1后面隔几个0又来个+1)。那就是V脉冲,是警察做的标记,告诉接收方“这里原本是4个0”。接收方怎么解码:一看到“违规”的V脉冲,就知道它代表一个“0”,并且它前面有3个“0”(如果是
000V模式)或者“B00”(如果是B00V模式)。然后把B和V都扔掉,恢复成原来的0。其他正常交替的脉冲就恢复成“1”。
终极比喻
HDB3就像一种“加密的摩斯电码”:
正常点划(嘀嗒)代表“1”。
遇到一大段沉默(长连0)时,发报员会故意发一个错误的重音(违规脉冲)来打断沉默,告诉收报员“从这里开始数,多少拍是静音”。
收报员根据这个“错误重音”的规则,就能精确还原出所有的沉默时长,保证双方节拍一致。
它的最大功劳就是:在不太增加复杂度的前提下,既消灭了长连0,保证了时钟恢复,又保持了线路没有直流。所以成为了欧洲和中国电话数字中继(E1线路)几十年来的标准。