0%

VLSI DSP之信道编码与解码

本节主要介绍了线性分组码、循环码、卷积码的编码与译码。

信道编码的基本概念

  • 信道编码的目的:提高信号传输的可靠性

  • 信道编码的方法:增加冗余比特,以发现或纠正错误

  • 信道编码的实质:在信息码中增加一定数量的多余码元(称为监督码元),是它们满足一定的约束关系

    • 发送端将信息码元和监督码元共同组成一个由信道传输的码字
    • 一旦传输过程中发生错误,则信息码元和监督码元间的约束关系被破坏
    • 在接收端按既定的规则校验这种约束关系,从而可达到发现和纠正错误的目的
  • 信道编码的分类

    • 线性与非线性码:
      • 线性码:信息码与监督码之间的关系为线性关系
      • 非线性码:信息码与监督码之间的关系为非线性关系
    • 分组码与卷积码:
      • 分组码:信息码与监督码以组为单位建立关系
      • 卷积码:监督码与本组和前面码组中的信息码有关
    • 系统码与非系统码:
      • 系统码:编码后码组中信息码保持原图样顺序不变
      • 非系统码:编码后码组中原信息码原图样发生变化
    image-20221203192909916
  • 误码的主要形式

    • 随机错误:误码的位置随机(误码间无关联),随机误码主要由白噪声引起
    • 突发错误:误码成串出现,主要由强脉冲及雷电等突发的强干扰引起的
    • 混合错误:以上两种误码及产生原因的组合
  • 编码效率与冗余度

    • 假设分组码的长度为n,其中信息位为k,相应的监督位为n-k

    $$
    编码效率=\frac kn
    $$

    • 编码效率越高,意味着冗余度越低
  • 基本术语

    • 码重W:码组/码字中非零码元的数目
    • 码距d(Hamming距):两码组/码字中对应码元位置上取值不同的个数称为码组/码字间的距离,简称码距
    • 最小码距$d_{min}$:准用码组/码字空间中任意两码组间的最小距离
  • 一般情况下,编码后,在同样的$\frac {E_b}{N_0}$下,编码后系统有更好的性能

    image-20221203194014922

线性分组码

  • 定义:

    • 把信源输出的k位信息序列,通过编码器产生r个监督位,输出长为n=k+r的码字,所得码字的全体,称为(n,k)线性分组码
    • 码组中的信息位与监督位之间的关系由线性方程确定
    image-20221203200415291 $$ \begin{cases} \begin{aligned} p_1=m_1\oplus m_3\\ p_2=m_1\oplus m_2\\ p_3=m_2\oplus m_3 \end{aligned} \end{cases} $$
  • 生成矩阵:从(n,k)线性分组码中任取k个线性无关的码字,按行的形式写出矩阵G,则称该线性分组码为生成矩阵

    image-20221203201029350
  • 通过$U=mG$(m为输入信息)便能计算出编码后的码字$U$
    $$
    若生成矩阵G= \begin{pmatrix}
    1 & 1 & 0 & 1 & 0 & 0\
    0 & 1 & 1 & 0 & 1 & 0\
    1 & 0 & 1 & 0 & 0 & 1
    \end{pmatrix}=\begin{pmatrix}
    V_1\
    V_2\
    V_3
    \end{pmatrix}
    $$

    $$
    若输入信息m=\begin{pmatrix}
    1&1&0
    \end{pmatrix}
    $$

    $$
    则:U=m\cdot G=\begin{pmatrix}
    1&1&0
    \end{pmatrix}\begin{pmatrix}
    V_1\
    V_2\
    V_3
    \end{pmatrix}=1\cdot V_1+1\cdot V_2+0\cdot V_3\=
    \begin{pmatrix}
    1&1&0&1&0&0
    \end{pmatrix}+\begin{pmatrix}
    0&1&1&0&1&0
    \end{pmatrix}+\begin{pmatrix}
    0&0&0&0&0&0
    \end{pmatrix}=\begin{pmatrix}
    1&0&1&1&1&0
    \end{pmatrix}
    $$

  • 监督矩阵
    $$
    若(n,k)线性分组码的生成矩阵G形如:\
    G=(P|I_k)\
    其中G为k\times n阶矩阵,I_k是k阶单位阵,P为k\times (n-k)阶子阵\
    则其对应的监督矩阵为:\
    H=(I_{(n-k)}|P^T)\
    其中H为(n-k)\times n阶矩阵
    $$

  • 在无误码存在的条件下,存在如下约束关系:
    $$
    GH^T=[0]
    $$

  • 伴随式
    $$
    S=rH^T\
    其中:r为接收码字
    $$

  • $(n,k)$线性分组码的译码方法

    image-20221203210713180
    • 由$eH^T(e为错误图样)$构建伴随式错误图样查询表

      image-20221203210109047
    • 例:

      image-20221203210539296 image-20221203210634566
  • 线性分组码的检错与纠错能力:任意一个$(n,k)$分组码,若要在任何码字内:

    • 能检测e个随机错误,则要求最小Hamming距离$d\ge e+1$
    • 能纠正t个随机错误,则要求$d\ge 2t+1$
    • 能纠正t个随机错误,同时检测出$e(\ge t)$个错误,则要求$d\ge t+e+1$

循环码

  • 定义:码长为n,信息位为k的$(n,k)$线性分组码,若具有下列属性:
    $$
    如果U=[u_0,u_1,u_2,\cdots,u_{n-1}]是子空间S的一个码字,经过i次循环移位得到:\
    U^{(i)}=[u_{n-i},u_{n-i+1},\cdots,u_{n-1},u_0,u_1,\cdots,u_{n-i-1}]也是S中的一个码字(i\ge 0)\
    这种具有循环移位特点的码被称为循环码
    $$

  • 生成多项式$g(x)$与码字多项式$U(x)$存在约束关系
    $$
    U(x); mod; g(x)=0
    $$

    • 例:

      image-20221203214504458 image-20221203214832804
  • 伴随式:伴随式可以由$r(x)$对生成多项式$g(x)$取模计算得到:
    $$
    S(x)=r(x);mod;g(x)=[U(x)+e(x)];mod;g(x)=e(x);mod;g(x)\
    其中:e(x)为错误图样
    $$

  • 译码方法

    image-20221203215510012
    • 构建伴随式查询表:

      image-20221203215745265
    • 例:

      image-20221203215959010 image-20221203220026425

卷积码的基本概念

  • 卷积码:通过将输入信息序列与编码器做卷积运算,将k位信息编成n比特,此n比特不仅与当前k位信息有关,还与前面(m-1)段的信息有关

    image-20221205154422965
  • 卷积码$(n,k,m)$的参数:

    • $k$:输入比特信息
    • $n$:输出码字
    • $m$:约束长度,即移位寄存器的级数
    • $R$:码率,表示传输信息的有效性$R=\frac kn$

1.卷积码的编码方法—冲击响应

  • 假设为卷积码$(2,1,3)$,即输入1bit,输出2bit,移位寄存器的个数为3

  • 输入”1”时对应的输出序列为:11 10 11

    image-20221205162501011
  • 则当输入序列为m=101时对应的输出可按照输入的线性叠加方式得到:11 10 00 10 11

    image-20221205162650768

2.卷积码的编码方法—状态描述和状态图

  • 可以用当前输入和之前(m-1)个输入来预测输出

  • 卷积编码器中,状态共有$2^{m-1}$个

  • $(2,1,3)$卷积码的编码方法

    image-20221205163334403
  • $(2,1,3)$卷积编码的状态图

    image-20221205163513133
  • 网格图分析——

    • 输入中最后2bit是补零操作,是为了让状态寄存器器能恢复成初始状态(X00),不影响下一次序列的输入

    image-20221205163635185


卷积码的译码方法—维特比译码

  • 维特比译码是基于动态规划的方法:

    • 动态规划思想:当前最优路径=上一步最优路径+当前组合
    • 维特比译码思想:译码器每接收一段,就计算比较判决
  • 分支度量:某时刻输出子码与接收子码之间的汉明距离

    image-20221205180444265
  • 路径度量

    • 该路径输出序列与接收序列之间的汉明距离,是分支度量的和
    • 则上述的路径度量=0+0+0+0+1+0+1=2
  • 维特比译码步骤

    image-20221206010526855
  • 维特比译码的特点

    • 维特比算法是最大似然译码算法
    • 运算量和存储量与状态数$2^{km}$呈线性关系
    • 运算量和存储量与码长L呈线性关系
  • 截尾译码:

    • 分段译码,降低复杂度

    • 译码深度h,其中m-1为编码器记忆深度
      $$
      h=(5\sim10)(m-1)
      $$


卷积码的性能

  • 自由距离$d_f$的确定

    • 卷积码属于线性码,所以任意两个码序列按位模二加仍然是一个许用码,而它的重量(1的个数)就等于这两个码序列之间的汉明距离
    • 只要在所有的码序列中找到最小重量的许用码,它的重量就是卷积码的最小汉明距离
    • 任意许用码序列的重量又等于它与全0码之间的汉明距离
    • 只要在格图上找到一条离全零距离最近的、从0状态出发又回到0状态的非全0路径,那么这条路径所代表的码序列的重量就等于自由距离
    image-20221208141239867
    • 则上述中重量最小的路径为:$S_0\xrightarrow{11}S_1\xrightarrow{10}S_2\xrightarrow{11}S_0$
      $$
      d_f=5
      $$
  • 在译码深度长度内,可以纠正$\lfloor\frac{(d_f-1)}{2}\rfloor$个随机错误

  • 卷积码的编码增益

    • 编码增益$dB=[\frac{E_b}{N_0}dB]{未编码}-[\frac{E_b}{N_0}dB]{编码}$
    • 硬件判决编码增益$dB:10log_{10}(\frac{Rd_f}{2})$
欢迎来到ssy的世界