IEEE802.16e 协议中LDPC编解码原理说明
信道编码
信号传输过程中,考虑到稳定性的需要,发送端可以对信息进行编码。目前在数据传输中,主要有三种误码控制的方法,即自动请求重发(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
,生成序列为c
,s=[s p]
。校验矩阵H
,可以左右两个对半分成两个矩阵H1
,H2
,则根据校验公式:
H ∗ c T = 0 H * c^T = 0 H∗cT=0
将c
分为s
和p
,H
分为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的操作,在公式推导中考虑到这个情况即可。)
根据公式,在编码过程中,可以用H1
,H2
,s
,求出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,1Hb22,1⋮Hb212,1Hb21,2Hb22,2⋮Hb212,2⋯⋯⋱⋯Hb21,12Hb22,12⋮Hb212,12⎦⎥⎥⎥⎤∗[p1Tp2T⋯p12T]=⎣⎢⎢⎢⎡Hb11,1Hb12,1⋮Hb112,1Hb11,2Hb12,2⋮Hb112,2⋯⋯⋱⋯Hb11,12Hb12,12⋮Hb112,12⎦⎥⎥⎥⎤∗[s1Ts2T⋯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∑12j=1∑12Hb1i,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∑12Hb11,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∑12Hb1i−1,j∗sj+pi−1
上述即为再802.16e协议下,针对准对角线校验矩阵的编码算法。
LDPC译码
详情可以参考上述参考文章,通俗易懂。
16QAM下的LLR译码方法
针对多bit调制解调方法,如何确定每一位的初始概率分布问题,可以参考该文章:Demapper以及LLR。
IEEE802.16e 协议中LDPC编解码原理说明相关推荐
- SSD ECC中的LDPC编解码原理
转自:http://blog.csdn.net/zhuzongpeng/article/details/78899198 目前SSD中ECC纠错代码主要两种BCH和LDPC.不过,随着SSD对ECC纠 ...
- Apache Dubbo 的协议帧与编解码原理
前言 Apache Dubbo 是阿里巴巴开源的高性能可扩展分布式 RPC 框架,目前其在各大厂内部被广泛使用.RPC 框架客户端在发送消息前会对 POJO 的消息内容编码为二进制流,然后通过 TCP ...
- 直播平台源码搭建教程盘点直播技术中的编解码、直播协议、网络传输与简单实现
直播平台源码搭建教程盘点直播技术中的编解码.直播协议.网络传输与简单实现 Live CheatSheet | 直播技术理论基础与实践概论 音视频直播的基本流程都是采集 → 编码推流 → 网络分发 → ...
- 【转】一文盘点直播技术中的编解码、直播协议、网络传输与简单实现
首页 > 基础知识 > [转载]一文盘点直播技术中的编解码.直播协议.网络传输与简单实现 [转载]一文盘点直播技术中的编解码.直播协议.网络传输与简单实现 十一月 2, 2018 Live ...
- 盘点直播直播平台软件开发技术中的编解码、直播协议、网络传输与简单实现
盘点直播直播平台软件开发技术中的编解码.直播协议.网络传输与简单实现 编解码 视频封装格式就是我们通常所说的 .mp4,.flv,.ogv,.webm 等,它其实就是一个盒子,用来将实际的视频流以一定 ...
- Base64编解码原理并用Java手工实现Base64编解码
Base64编解码原理 目前Base64已经成为网络上常见的传输8比特字节代码的编码方式之一.在做支付系统时,系统之间的报文交互都需要使用Base64对明文进行转码,然后进行签名或加密,之后再次Bas ...
- 哈夫曼编解码原理与实现【转载】
1. 哈夫曼编解码原理 霍夫曼编码(Huffman Coding)是一种编码方法,霍夫曼编码是可变字长编码(VLC)的一种. 霍夫曼编码使用变长编码表对源符号(如文件中的一个字母)进行编码,其中变长编 ...
- yolov5的anchors及bbox的编解码原理
yolov5的anchors的编解码原理 yolov5的anchors及bbox的编解码原理 1.anchor的生成 1)base anchor的生成 2)base anchor的平移和复制 2.bb ...
- 一文读懂视频编解码原理
引子 谈到视频的编解码,我们会自然地想到H.264.HEVC/H.265这些权威的视频编解码标准:谈到标准,有人觉得这个是有专门机构去研究的,我们关心应用就好:即使有兴趣读了标准和相关技术,面对更多的 ...
最新文章
- 在asp.net中使用客户端脚本
- Python常用函数与技巧总结(三)
- 成熟的GAN会自己分析脸部纹理!英伟达StyleGAN团队出新作,网友:竟然还能有突破...
- 非文学翻译理论与实践_北外“欧洲非通用语文学翻译与研究中心”正式成立
- vscode 预览图片 插件_真的动手写的VSCode的插件(图片浏览)之1
- c语言大数相加怎么写,大数相加
- leetcode 1018. 可被 5 整除的二进制前缀
- 奋战杭电ACM(DAY9)1013
- 20190925 On Java8 第二十二章 枚举
- Linux环境下安装Hadoop(完全分布式)
- 盘点微软出品的神级小工具:无比实用~
- 胖客户端、瘦客户端与智能客户端
- fbx 骨架_骨架修剪
- Linus Torvalds对晦涩的代码的反应
- android没有adm_Android--Android Studio 打开ADM报错
- 公众平台 php,微信公众平台PHP开发(转载)
- jsonp跨域原理及使用
- SSL/TLS高强度加密
- python之有关魔方方法的内容
- docker-compose详解