跳转至

线路码型

前置知识:数字脉冲幅度调制

本页面主要介绍几种常用的线路码型

AMI 码

定义

对于出现的 “1” 符号,使用交替的 ±1 来替代。

样例 AMI (RZ) 码的信号波形如下:

AMI

由于交替反转,输出信号的功率谱密度无离散的直流分量。

然而,由于可能存在连续的 0,其时钟提取相对困难。

功率谱密度

AMI 码的符号间有相关性,序列的自相关函数 \(R(0)=1/2,R(m)=-1/4(|m|=1)\)\(R(m)=0(|m|>1)\)。可求出占空比为 50% 的 AMI(RZ)码功率谱计算公式为

\[P(f)=\frac{1}{T_{\mathrm{b}}}\bullet\sin^{2}(\pi fT_{\mathrm{b}})\bullet\frac{A_{\mathrm{b}}^{2}T_{\mathrm{b}}^{2}}{4}\mathrm{sinc}^{2}\left(\frac{fT_{\mathrm{b}}}{2}\right)\]

HDB3 码

编码逻辑的语言表达

HDB 3 码的编码原理是:信息符号中的 “1” 交替变换为 +1 与 -1,检查它的连“0”串情况,当出现4个以上连“0”串时,则将每4个连“0”小段的第4个“0”变换成与前一非0符号(+1或-1)同极性的符号,显然,这样会破坏“极性交替反转”的规律。该符号被称为破坏符号,用 V 符号表示(即+1记为+V,-1记-V)。为使附加V符号后的序列不破坏“极性交替反转”造成的无直流特性,还必须保证相邻Ⅴ符号也应极性交替。当相邻Ⅴ符号之间有奇数个非0符号时,就用取代节“000V”(V符号取 +1 或 -1)来取代4个连“0”;当 V 符号间有偶数个非0符号时,则用“B00V”取代节代替 4 个连 “0”,而 B 符号的极性与前一非0符号的极性相反(以 +1 记为 +B ,-1 记为 -B)。值得注意的是:让该B符号后面的非0符号从V符号开始再交替反转极性。

伪代码表述

FUNCTION HDB3_Encode(bitstream):
    INITIALIZE:
        encoded = EMPTY LIST
        current_polarity = +1
        last_non_zero = 0
        zero_count = 0
        non_zero_since_last_sub = 0

    FOR EACH bit IN bitstream:
        IF bit == '1':
            zero_count = 0
            symbol = current_polarity
            encoded.APPEND(symbol)
            last_non_zero = current_polarity
            non_zero_since_last_sub += 1
            current_polarity = -current_polarity  // 切换极性
        ELSE:
            zero_count += 1
            encoded.APPEND(0)
            IF zero_count == 4:
                IF non_zero_since_last_sub MOD 2 == 1:
                    // 奇数个非零符号,使用 '000V'
                    V = last_non_zero
                    encoded[-1] = V
                    last_non_zero = V
                    current_polarity = -V
                ELSE:
                    // 偶数个非零符号,使用 'B00V'
                    B = -last_non_zero
                    V = last_non_zero
                    encoded[-4] = B
                    encoded[-3] = 0
                    encoded[-2] = 0
                    encoded[-1] = V
                    last_non_zero = V
                    current_polarity = -V
                // 重置计数器
                zero_count = 0
                non_zero_since_last_sub = 0

    RETURN encoded

伪代码解释

  1. 初始化变量
  2. encoded: 存储编码后的符号序列。
  3. current_polarity: 当前应使用的极性,初始为 +1。
  4. last_non_zero: 上一个非零符号的极性。
  5. zero_count: 连续零的计数器。
  6. non_zero_since_last_sub: 自上一次替换以来的非零符号数量。

  7. 遍历比特流

  8. 遇到 '1'

    • 重置 zero_count
    • 将当前极性添加到编码结果中。
    • 更新 last_non_zero 为当前极性。
    • 增加 non_zero_since_last_sub 计数。
    • 切换 current_polarity 以确保交替。
  9. 遇到 '0'

    • 增加 zero_count
    • 将 0 添加到编码结果中。
    • 如果 zero_count 达到 4:
    • 根据 non_zero_since_last_sub 的奇偶性决定替换模式:
      • 奇数个非零符号:使用 000V,其中 V 的极性与 last_non_zero 相同。
      • 偶数个非零符号:使用 B00V,其中 B 的极性与 last_non_zero 相反,V 的极性与 last_non_zero 相同。
    • 替换最后四个符号为相应的替换模式。
    • 更新 last_non_zerocurrent_polarity
    • 重置 zero_countnon_zero_since_last_sub
  10. 返回编码结果

  11. 返回最终的 encoded 列表,包含 HDB3 编码后的符号序列。

样例

例如比特流 100001000011000011 编码为 HDB3 符号序列:

 1 0 0 0  0  1 0 0 0  0  1  1  0 0 0  0 1   1
+1 0 0 0 +V +1 0 0 0 -V +1 -1 +1 0 0 +V +1 -1
这种编码方式确保了信号的无直流分量,并通过替换长零序列维持了信号的同步性。

AMI 码 和 HDB 3 码的功率谱

功率谱密度

CMI 码

CMI码是将输入的二进制符号“0”编码为线路码的一对比特“01”,将二进制符号“1”编为交替地用“11”或“00”表示的线路码。

功率谱密度

CMI

数字双相码

数字双相码又称分相码或者 Manchester 码.

将输入的二进制符号“0”编码为一对比特“01”,又将二进制符号“1”编码为一对比特“10”。

功率谱密度

Manchester