信道编码

​ 信号传输过程中,考虑到稳定性的需要,发送端可以对信息进行编码。目前在数据传输中,主要有三种误码控制的方法,即自动请求重发(ARQ)、前向纠错(FEC)和混合纠错(HEC)方式。

​ 在传输过程中发生错误后能在收端自行发现或纠正的码。仅用来发现错误的码一般常称为检错码。为使一种码具有检错或纠错能力,须对原码字增加多余的码元,以扩大码字之间的差别 ,即把原码字按某种规则变成有一定剩余度(见信源编码)的码字,并使每个码字的码之间有一定的关系。关系的建立称为编码。码字到达收端后,可以根据编码规则是否满足以判定有无错误。当不能满足时,按一定规则确定错误所在位置并予以纠正。纠错并恢复原码字的过程称为译码,

​ 在整个通信系统中,信道编码与调制解调系统一起,构成数字信号处理部分。值得注意的是,信道编码、解码与信号调制、解调并不完全是对称的互为逆过程。具体来说,带有信道编码的过程简化如下:

​ 信道编码->数字调制->信道传输->信道解码

​ 在接收端中,处理后的数据直接进行信道解码,没有解调部分。因为信道解码,需要保留数据原始的概率信息,来进行校验和解码。

ldpc码构造

​ ldpc码,全称为“低密度奇偶校验码”,是基于低密度奇偶校验矩阵的线性分组码。关于LDPC的基础知识,可以参考这两篇文章:《基于IEEE 802.16e协议的码编译码算法的研究》与《IEEE 802.16e标准中LDPC编码的实现与仿真》。

​ 在实现过程中,可以参考IEEE802.16e协议,构建LDPC矩阵。

​ 该协议采用基本矩阵扩展法,由协议中给出的几个基本矩阵,根据不同的扩展因子,生成最后的校验矩阵。以协议中1/2码率的基本矩阵为例,1/2码率的基本矩阵Hb,大小为12x24。扩展因子k决定了最终校验矩阵的大小,设k=96,则最终生成的校验矩阵H大小为1152x2304。基本矩阵Hb中,只包含了-1,0以及正整数三类元素。在扩展过程中,基本矩阵中的每一个元素,都会被替换成一个kxk大小的矩阵,替换策略如下:若元素为-1,则该位置被替换成一个全零矩阵;若元素为0,则该位置被替换成一个单位矩阵;若元素为正整数n,则将单位矩阵循环右移n位,再替换到该位置处。

​ 根据上述方法,可以构造一个码率为1/2,大小为1152x2304的校验矩阵H

ldpc编码

​ 基本编码方法,见给出的参考文章。在802.16e协议中,结合校验矩阵的特殊结构,可以采用更优的编码方法。

​ 假设信息序列为s,校验序列为p,生成序列为cs=[s p]。校验矩阵H,可以左右两个对半分成两个矩阵H1H2,则根据校验公式:
H ∗ c T = 0 H * c^T = 0 H∗cT=0
c分为spH分为H1,H2,可以将公式转化为:
[ H 1 H 2 ] ∗ [ s p ] T = 0 H 1 ∗ s T = H 2 ∗ p T [H1 \quad H2]*[s\quad p]^T = 0 \quad\quad\quad H1*s^T = H2*p^T [H1H2]∗[sp]T=0H1∗sT=H2∗pT
(此处只考虑二值ldpc情况,即在编解码过程中,只有0与1的操作,在公式推导中考虑到这个情况即可。)

根据公式,在编码过程中,可以用H1H2s,求出p
p T = H 2 − 1 ∗ H 1 ∗ s T p^T = H2^{-1} *H1 * s^T pT=H2−1∗H1∗sT
然而,考虑到H2矩阵的特殊结构,即准对角线结构。在H2矩阵对应的基本矩阵Hb2中,一行只有两个或三个数为非-1数,代表着在校验矩阵中,对应位置均为全零矩阵。

​ 因此,可以将信息序列s,校验序列p,均以扩展因子k为大小,进行分组。
[ H b 2 1 , 1 H b 2 1 , 2 ⋯ H b 2 1 , 12 H b 2 2 , 1 H b 2 2 , 2 ⋯ H b 2 2 , 12 ⋮ ⋮ ⋱ ⋮ H b 2 12 , 1 H b 2 12 , 2 ⋯ H b 2 12 , 12 ] ∗ [ p 1 T p 2 T ⋯ p 12 T ] = [ H b 1 1 , 1 H b 1 1 , 2 ⋯ H b 1 1 , 12 H b 1 2 , 1 H b 1 2 , 2 ⋯ H b 1 2 , 12 ⋮ ⋮ ⋱ ⋮ H b 1 12 , 1 H b 1 12 , 2 ⋯ H b 1 12 , 12 ] ∗ [ s 1 T s 2 T ⋯ s 12 T ] \left[ \begin{matrix} {Hb2_{1,1}} & {Hb2_{1,2}} & {\cdots} & {Hb2_{1,12}} \\ {Hb2_{2,1}}&{Hb2_{2,2}}&{\cdots}&{Hb2_{2,12}} \\ {\vdots}&{\vdots}&{\ddots}&{\vdots} \\ {Hb2_{12,1}}&{Hb2_{12,2}}&{\cdots}&{Hb2_{12,12}} \end{matrix} \right] * \left[ \begin{matrix} {p^T_{1}}&{p^T_{2}}&{\cdots}&{p^T_{12}} \end{matrix} \right] = \left[ \begin{matrix} {Hb1_{1,1}}&{Hb1_{1,2}}&{\cdots}&{Hb1_{1,12}}\\ {Hb1_{2,1}}&{Hb1_{2,2}}&{\cdots}&{Hb1_{2,12}}\\ {\vdots}&{\vdots}&{\ddots}&{\vdots}\\ {Hb1_{12,1}}&{Hb1_{12,2}}&{\cdots}&{Hb1_{12,12}}\\ \end{matrix} \right] * \left[ \begin{matrix} {s^T_{1}}&{s^T_{2}}&{\cdots}&{s^T_{12}}\\ \end{matrix} \right] ⎣⎢⎢⎢⎡​Hb21,1​Hb22,1​⋮Hb212,1​​Hb21,2​Hb22,2​⋮Hb212,2​​⋯⋯⋱⋯​Hb21,12​Hb22,12​⋮Hb212,12​​⎦⎥⎥⎥⎤​∗[p1T​​p2T​​⋯​p12T​​]=⎣⎢⎢⎢⎡​Hb11,1​Hb12,1​⋮Hb112,1​​Hb11,2​Hb12,2​⋮Hb112,2​​⋯⋯⋱⋯​Hb11,12​Hb12,12​⋮Hb112,12​​⎦⎥⎥⎥⎤​∗[s1T​​s2T​​⋯​s12T​​]
​ 将上述公式展开,得到一组12行公式。通过观察发现,对Hb2矩阵来说,从第二列到第十一列,每一列中间只有2个0,其他均为-1。因此,将12行公式进行累加,在等号左边,只剩下p1^T,因此可以求解出p1^T,并依次接触其他校验序列分组。总结公式如下:
p 1 T = ( H b 2 1 , 1 + H b 2 6 , 1 + H b 2 12 , 1 ) − 1 ) ∗ ∑ i = 1 12 ∑ j = 1 12 H b 1 i , j ∗ s j p_1^T = (Hb2_{1,1}+Hb2_{6,1}+Hb2_{12,1})^{-1})*\sum_{i=1}^{12}{\sum_{j=1}^{12}{Hb1_{i,j}*s_{j}}} p1T​=(Hb21,1​+Hb26,1​+Hb212,1​)−1)∗i=1∑12​j=1∑12​Hb1i,j​∗sj​
​ 再从p1^T,即可推导出其他校验序列分组。
p 2 = ∑ j = 1 12 H b 1 1 , j ∗ s j + H b 2 1 , 1 ∗ p 1 p_2 = \sum_{j=1}^{12}{Hb1_{1,j}*s_{j}} + Hb2_{1,1}*p_1 p2​=j=1∑12​Hb11,j​∗sj​+Hb21,1​∗p1​

p i = ∑ j = 1 12 H b 1 i − 1 , j ∗ s j + p i − 1 p_i = \sum_{j=1}^{12}{Hb1_{i-1,j}*s_{j}} + p_{i-1} pi​=j=1∑12​Hb1i−1,j​∗sj​+pi−1​

​ 上述即为再802.16e协议下,针对准对角线校验矩阵的编码算法。

LDPC译码

​ 详情可以参考上述参考文章,通俗易懂。

16QAM下的LLR译码方法

​ 针对多bit调制解调方法,如何确定每一位的初始概率分布问题,可以参考该文章:Demapper以及LLR。

IEEE802.16e 协议中LDPC编解码原理说明相关推荐

  1. SSD ECC中的LDPC编解码原理

    转自:http://blog.csdn.net/zhuzongpeng/article/details/78899198 目前SSD中ECC纠错代码主要两种BCH和LDPC.不过,随着SSD对ECC纠 ...

  2. Apache Dubbo 的协议帧与编解码原理

    前言 Apache Dubbo 是阿里巴巴开源的高性能可扩展分布式 RPC 框架,目前其在各大厂内部被广泛使用.RPC 框架客户端在发送消息前会对 POJO 的消息内容编码为二进制流,然后通过 TCP ...

  3. 直播平台源码搭建教程盘点直播技术中的编解码、直播协议、网络传输与简单实现

    直播平台源码搭建教程盘点直播技术中的编解码.直播协议.网络传输与简单实现 Live CheatSheet | 直播技术理论基础与实践概论 音视频直播的基本流程都是采集 → 编码推流 → 网络分发 → ...

  4. 【转】一文盘点直播技术中的编解码、直播协议、网络传输与简单实现

    首页 > 基础知识 > [转载]一文盘点直播技术中的编解码.直播协议.网络传输与简单实现 [转载]一文盘点直播技术中的编解码.直播协议.网络传输与简单实现 十一月 2, 2018 Live ...

  5. 盘点直播直播平台软件开发技术中的编解码、直播协议、网络传输与简单实现

    盘点直播直播平台软件开发技术中的编解码.直播协议.网络传输与简单实现 编解码 视频封装格式就是我们通常所说的 .mp4,.flv,.ogv,.webm 等,它其实就是一个盒子,用来将实际的视频流以一定 ...

  6. Base64编解码原理并用Java手工实现Base64编解码

    Base64编解码原理 目前Base64已经成为网络上常见的传输8比特字节代码的编码方式之一.在做支付系统时,系统之间的报文交互都需要使用Base64对明文进行转码,然后进行签名或加密,之后再次Bas ...

  7. 哈夫曼编解码原理与实现【转载】

    1. 哈夫曼编解码原理 霍夫曼编码(Huffman Coding)是一种编码方法,霍夫曼编码是可变字长编码(VLC)的一种. 霍夫曼编码使用变长编码表对源符号(如文件中的一个字母)进行编码,其中变长编 ...

  8. yolov5的anchors及bbox的编解码原理

    yolov5的anchors的编解码原理 yolov5的anchors及bbox的编解码原理 1.anchor的生成 1)base anchor的生成 2)base anchor的平移和复制 2.bb ...

  9. 一文读懂视频编解码原理

    引子 谈到视频的编解码,我们会自然地想到H.264.HEVC/H.265这些权威的视频编解码标准:谈到标准,有人觉得这个是有专门机构去研究的,我们关心应用就好:即使有兴趣读了标准和相关技术,面对更多的 ...

最新文章

  1. 在asp.net中使用客户端脚本
  2. Python常用函数与技巧总结(三)
  3. 成熟的GAN会自己分析脸部纹理!英伟达StyleGAN团队出新作,网友:竟然还能有突破...
  4. 非文学翻译理论与实践_北外“欧洲非通用语文学翻译与研究中心”正式成立
  5. vscode 预览图片 插件_真的动手写的VSCode的插件(图片浏览)之1
  6. c语言大数相加怎么写,大数相加
  7. leetcode 1018. 可被 5 整除的二进制前缀
  8. 奋战杭电ACM(DAY9)1013
  9. 20190925 On Java8 第二十二章 枚举
  10. Linux环境下安装Hadoop(完全分布式)
  11. 盘点微软出品的神级小工具:无比实用~
  12. 胖客户端、瘦客户端与智能客户端
  13. fbx 骨架_骨架修剪
  14. Linus Torvalds对晦涩的代码的反应
  15. android没有adm_Android--Android Studio 打开ADM报错
  16. 公众平台 php,微信公众平台PHP开发(转载)
  17. jsonp跨域原理及使用
  18. SSL/TLS高强度加密
  19. python之有关魔方方法的内容
  20. docker-compose详解

热门文章

  1. 山寨王被山寨 腾讯九城恶性竞争害产业
  2. RH10M漏电故障保护继电器
  3. OpenLayer——加载百度地图。
  4. 杰弗里·辛顿 反向传播_菲菲·李·杰弗里·塞顿和王座人工智能游戏
  5. 圆环进度条 两种实现方式
  6. 搭建redis的步骤
  7. 张栋博士计算机,计算机科学与技术学院
  8. 7-4 宿舍谁最高? (20 分)
  9. 科技周刊第五期:科学技术在发展中的作用
  10. Matlab中的\ 和/和pinv的关系以及运算