NR 物理层编码 卷积码8-slide

前言:

      这篇主要参考《武汉科技大学信息学院向森》的卷积码系列。

后面会继续分享一些海外教授对卷积码的研究.

       

参考

    14.卷积码-卷积码概念和多种描述方式_哔哩哔哩_bilibili

   15.卷积码-卷积码的概率译码原理_哔哩哔哩_bilibili

   16.卷积码-卷积码的译码判决_哔哩哔哩_bilibili

   17.卷积码-维特比译码_哔哩哔哩_bilibili

   18.卷积码-卷积码勘误_哔哩哔哩_bilibili

卷积码的生成矩阵 - read.ppt

(n,k,N)卷积码的生成矩阵_Chenxr32的博客-CSDN博客_卷积码的生成矩阵怎么求

目录:

     1: 卷积码概念以及描述方法

     2: 译码原理

    3:  译码判决

    4:  维特比译码

    5: 生成矩阵


一  卷积码概念以及描述方法

  1.1 概念

     定义(n,k,L)

              输入k个比特,输出n个比特,移位寄存器个数为L, 历史状态为L-1个

 输出由a_i,s_0,s_1  决定

  c_{i,0}=a_i+a_{i-1}+a_{i-2}

  c_{i,1}=a_i+a_{i-2}

 1.2 状态图

 1.3  状态转移图

    矩形框中s_0s_1 表示编码器当前的状态

   -> 表示状态转移的方向

   箭头上的参数分别表示 编码输入|编码输出  a_i|c_{io}c_{i1}

    卷积码的状态图可以用于分析卷积码的性能

1.4   网格图

      状态转移图看不到随时序变化的编码过程

    

           输入为0,沿着上分支到下一个状态

           输入为1,沿着下分支到下一个状态

      

          一个参数为(n,k,N)的卷积码,共有N-1级缓存(去除当前信息位缓存)

每级缓存k个存储单元,共有k(N-1)位用于存储 历史数据,则共有

  2^{k(N-1)} 个不同状态,每个状态有2^{k}个到达和离去的分支

        状态和分支的数目随着k和N 指数级增加,因此避免编译码的复杂化,

每个编码信息分组的位数k和编码输出的分组长度n 都取一个比较小的值

 例题:


二    译码原理

     维特比是一种最大似然译码的方法,

     我们发送的码字为c_i,收到的码字为r_j

    3.1 概率译码的原理

   基于收到的码字预测出发送码字\hat{c_i},使得其概率最大

   \hat{c_i}=max_{c_i}P(c_i|r_j)

              =max_{c_i}\frac{P(r_j|c_i)}{P(r_j)}

               \equiv max p(r_j|c_i)

     当码元之间相互独立

      \hat{c_i}=argmax_{c_i} p(r_j|c_i)

            =argmax_{c_i} log \prod_{m=1}^{M}P(r_{i,m}|c_{i,m})

           =argmax \sum_{m=1}^{M}log P(r_{i,m}|c_{i,m})

    比如(2,1,2)4次输入,对应的输出为11 10 00 10

     m = 4

概率论基础

  

            发送码字: 包含k个比特信息码字的集合

             C=\begin{Bmatrix} c_i \end{Bmatrix}, i=1,2....,2^k

          信源的先验概率

           P(c_i),i=1,2....2^k

            接收信号: 

            R=\begin{Bmatrix} r_j \end{Bmatrix}, j=1,2....,2^k

           后验概率

          P(c_i|r_j): 收到的码字为r_j,发送的码字为c_i的概率

         转移概率

          P(r_j|c_i)  发送码字为c_i,收到的码字为r_j的概率

         贝叶斯公式

         P(c_i|r_j)P(r_j)=P(r_j|c_i)P(c_i)

        P(c_i|r_j)=\frac{P(r_j|c_i)p(c_i)}{P(r_j)}

        因为p(r_j),p(c_i) 为先验概率,认为是一个常数,经常用\frac{1}{N}

 最大似然译码

     c_i=max_{c_i} P(c_i|r_j)=max_{c_i\in C}\frac{p(r_j | c_i)}{p(r_j)}

                  =max p(r_j|c_i)\alpha_{ij}

                   =max p(r_j|c_i)

         


 三  译码判决

     3.1  数字通讯基本组成   

  3.2  发送流程:

          经过信道编码后,为0,1的比特流,以QPSK为例,

  会把0调制成电平幅度为-1,1调制成电平幅度为1的模拟信号(跟印度NTPL讲的相反)

         s_0=-A,s_1=A

  其中s_0 代表发送的是0,通常A为1,发送的时候

    通常假设信道是高斯白噪声n

   则接收到的信号的概率密度图如下

    

   3.3 接收方解调器判决

      接收方解调器收到的是模拟的波形,需要解调出数字信号,这个时候就需要判决。

 有两种方案,硬判决和软判决。

          硬判决给出的是一个离散值

          软判决给出的是llr 概率值

          收到的信号为:

            r=\left\{\begin{matrix} s_0+n,\sim(-A,\sigma^2)\\ s_1+n ,\sim(A,\sigma^2)\end{matrix}\right.

         解调器 硬判决

          \hat{r}=sign(r)=\left\{\begin{matrix} 1:r>0\\ -1,else \end{matrix}\right.

     缺点:

        如下r_1,r_2与A的距离远近不同,也是其实际为1的概率不同

如果为硬判决都判决为1,但是其置信度不同,在差错控制译码时候

无法利用。

         

     3.4  最大似然硬判决译码

             这里面主要是信道解码器基于硬判决的结果,做最大似然计算

译码得到二进制序列。

        假设信号的误码率P 为已知固定

         接收码字序列R_j长度为M,假设有d_i位不同,M-d_i位一样

       P(R_j|C_i)=\prod_{m=1}^{M}P(R_{j,m}|C_{i,m})

                              =p^{d}(1-p)^{M-d}(这里面跟二项分布不一样,少了C_{M}^{d_i} 

       log(P(R_j|C_i))=d_ilog\frac{p}{1-p}+Mlog(1-p)

                                   =d_i\alpha+M \beta

      这里面错误概率一般认为是小于0.5,所以

                         \alpha=log\frac{p}{1-p}<0,\beta=log1-p

    最大似然判决:

取满足下式的c_l作为判决输出

  C_l= argmax_{i=1,2...}\sum_{m=1}^{M}logP(R_{j,m}|c_{i,m})

  d_i 必须最小

  3.5 最大似然软判决

         这里面r 是一个连续的电平值

      P(R_j|c_i)=\prod_{m=1}^{M}P(r_{i,m}|c_{i,m})

                       =\prod_{m=1}^{M}\frac{1}{\sqrt{2\pi}\sigma_n}e^{-(\frac{r_{j,m}-s_{i,m})^2}{2\sigma_n^2}}

    logP(R_j|C_i)=Mlog\frac{1}{\sqrt{2\pi}\sigma_n}-\frac{1}{2\sigma_n^2}\sum_{m=1}^M(r_{j,m}-s_{i,m})^2

   C_l=argmax \sum_{m=1}^MlogP(r_{j,m}|c_{i,m})

          =argmin_{i=1,2,...}\sum_{m=1}^{M}d_{ij,m}^2

    硬判决是码字间的汉明距离

    软判决是码字间的欧式距离(电平差)

             


四  维特比译码

    4.1 设卷积码参数为(n,k,L)

         L_M: 输入信息的长度

         码字的信息比特:   L_M*k

         码字空间大小:    {C} \in 2^{k*L_M}

         输出码字总长度为: n*L_M

         例1 :

           输入 01000:  L_M=5,

           (2,1,2) L_M=50,码字的可能组合为2^{L_M}=2^{50}

         

4.2 维特比译码思想

       理论上网格图共有|{c}|=2^{L_M*k} 条路径(一个状态:0 为一条路径,1位1条路径,共2条)

       维特比译码过程接收码字中一个码组,进行一次比较,比较后

选择若干最可能获得正确译码结果的码段做后续比较

       通过删除大量获得正确译码可能性小的码段,达到减少运算量的目的。

4.3  结尾卷积码序列

       参数为(n,k,L)的卷积码,在编码完信息码后,结尾继续输入L-1个0字符,

使得编码路径返回全0 状态

   例:  (2,1,3)结尾的序列:

        最后会处于a,b,c,d 4种状态,连续输入两个0,最后会以a状态结尾

  ​​​​​​​

 4.4  算法流程

      st1:

        输入一个n位的编码码组,计算码组输入后新到达每个状态的2^{k}个可能选留路径的度量值

每个状态仅保留其中度量值最大的路径作为选留路径。

         如有相同值的路径,则任选其一.(实际只有一种路径,如果优化?)

     度量值可根据选留路径与输入序列的相似程度来确定:

     两者越相似,度量值越大

    st2 译码时间参数t =t+1

         if  t<L_M+L-1

               go st1

        else

                   t= L_M+L-1

                   return

      st3 : 输出

           根据获得的最后一留选路径,获得相应的译码输出码字

         

    

   5.5 定理

      维特比译码算法:  获得的幸存路径是具有最大似然函数的路径

      证明:
       设有最大似然函数的路径a,在时刻k,进入状态Sm被删除了。

      则一定有另一条路径b的度量值超过了路径a的度量值。

     即有到达状态Sm的最大似然函数的路径a与输入序列的距离,

     大于另一条路径b与输入序列的距离.
      则最大似然函数路径的剩余部分c(从时刻k到路径结束的部分)与路径b的度量值相加得到
总的路径度量值超过最大似然函数的总度量值,这与最大似然路径有最大度量值的定义是相互矛盾的,因此是不可能的。
      根据该算法得到的一定时最大似然路径

 ​​​​​​​


五  生成矩阵

5.1 子生成矩阵

      (n,k,N)卷积码有N个子生成矩阵

       m=0,1,..N-1

      g_m=\begin{bmatrix} g_m^{1,1} &g_m^{1,2} &... &g_m^{1,n} \\ g_m^{2,1} &g_m^{2,2} &... &g_m^{2,n} \\ ... & ...& ... & ...\\ g_m^{k,1} &g_m^{k,2} &... &g_m^{k,n} \end{bmatrix}

       假设输入为

      u=[u_1,u_2,...u_k]

     通过第m个寄存器,有n种编码输出

    c=[c_1,c_2,..c_n]=ug_m

    

    

 5.2 基本生成矩阵

       有N个输入寄存器组,则基本生成矩阵为:

       G_B=[g_0,g_1,...g_{N-1}]

  5.3 生成矩阵

        

 

      

5.4: 生成元

     g^{i},i=1,2..,k

    g^{i}=g_{0}^{i,1}g_0^{i,2}..g_{0}^{i,n},...,g_{N-1}^{i,1}g_{N-1}^{i,2}...g_{N-1}^{i,N}     

5.5   子生成元

      g^{i,j}=g_0^{i,j} g_1^{i,j}...g_{N-1}^{i,j}

     其中:

      g_{m}^{i,j}: m组输入寄存器比特的第i位与第j位个模二加法

     m=0,1...N-1

    i=1,2.,,,k

   j=1,2...n

5.6 例子

   

 

    说明:

子生成元 

 g^{1,1}=g_0^{1,1}g_0^{1,1}g_0^{1,1}g_0^{1,1}g_0^{1,1}=  1 0 0 1 1

g^{1,2}=g_0^{1,2}g_1^{1,2}g_2^{1,2}g_3^{1,2}g_4^{1,2} =  1 1 1 0 1

生成元   g^{1}=g_0^{1,1}g_0^{1,2}g_1^{1,1}g_1^{1,2}g_2^{1,1}g_2^{1,2}g_3^{1,1}g_3^{1,2}g_4^{1,1}g_4^{1,2}

 就是按列取元素叠加

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值