5GNRQC-LDPCMATLAB程序理解

5GNRQC-LDPCMATLAB程序理解
前⾔
特殊护理知识准备:5G NR QC-LDPC简介,推荐链接
程序来源:
| VERSION: 2952189on 11 Dec 2018
程序说明:
| 演⽰在不同码长,码率,信噪⽐等条件下,符合5G NR标准的LDPC编译码过程
♂  研读程序⽬的
| 了解在5G NR标准下QC-LDPC的编译码过程,尤其是理解该标准是如何实现其想要达到的“灵活适应不同码长码率”(也即速率匹配)的⽬的,重点在于BG,Z,H矩阵如何确定
了解5G NR标准下的编译码流程
理解如何“速率匹配”
⼯程组成
| ⼯程由哪些部分组成以及各部分的作⽤
ldpcGenCodeMat.m
| FUNCTION:[ LDPC ] = ldpcGenCodeMat( rateIn, liftingFactor, bgType )
1. 参数
rateIn:码率
liftingFactor:上升因⼦Z
bgType :BG类型(basic graph有两种,该程序⽬前只⽀持使⽤BG1,两种BG优劣⾃⾏百度)
2. 功能:
根据输⼊的码率,上升因⼦获得BG_shorten(主要)、H、G、信息⽐特数numInfBits、校验⽐特数numParBits、编码后⽐特数numTotBits等数据存放在结构体数据[LDPC]中。
3. 看懂程序:
① 定义⼀个最⼤码率误差maxCodeRateDeviation (标准给定的basic graph虽然能⽀持多种码率,但总不可能连续),由Rate -
maxCodeRateDeviation ≤ 22/(68-N-2) ≤ Rate + maxCodeRateDeviation,求得截断数N,获得BG_shorten为BG⾏列从后⾯数起截掉N⾏、列。
② 在进⾏截断操作之前,我们还要确定BG矩阵,这⾥采取的是BG1,但BG1也分成8组,具体如何确定可以看代码或者百度查阅,简
2012人均gdp单来说就是确定了Z,就确定了a,确定了a就确定了BG。
③ 接下来获得H矩阵,H矩阵来源:BG_shorten每个⾮零元素BG_ele替换为Z×Z单位矩阵右移BG_ele%Z个单位,零元素替换为
Z×Z零矩阵,得到H矩阵维度为BG_shorten扩展Z倍
冷阴极管
4. 其他:
Rate - maxCodeRateDeviation ≤ 22/(68-N-2) ≤ Rate + maxCodeRateDeviation,numTotBits=numParBits+numInfBits-2×Z,这个2和2×Z是啥?别问,问就是标准规定。原因⼤概是BG前两列是重列,会增加不少复杂度和存储空间,所以⽤极⼩的性能损失来换取更低的复杂度。
ldpcGet.m
| FUNCTION [ LDPC ] = ldpcGet( blkSize, codeRate, iterations, decType )
1. 参数:
blkSize:码长
codeRate:码率
iterations:译码迭代次数
decType:译码类型(这⾥只⽀持SPA)
2. 功能:
根据码块长度和码率,选择哪⼀个确定所有有关参数,即ldpcGenCodeMat.m程序⽣成的.mat⽂件
3. 看懂程序:
① 虽然程序中直接⽤的switch函数,但显然在这之前是经过计算的。邓本殷
② Z值是这样确定的:在误差范围内,blkSize ≈ numTotBits,因此由numTotBits = Z × (68-2-N)得到Z,其中N在Rate确定时
就已经确定(在上⽂已说明)
③ 确定完上升因⼦Z,⼜已知码率Rate,由ldpcGenCodeMat.m即可确定[LDPC],该⼯程已经事先将可能需要⽤到的.mat⽂件⽣
成,因此直接采⽤switch 函数即可,⽆需再去调⽤ldpcGenCodeMat.m。
④ 举个例⼦:输⼊blkSize = 256,codeRate = 1/3,获得LDPC = LDPC_BG1_4_1_3.mat,4代表Z,1_3代表1/3码率
4. 其他:
在误差范围内,blkSize ≈ numTotBits,如上例⼦blkSize = 256 ,numTotBits = 264,numInfBits = 68,numParBits = 272 - 68 = 204,68bit经过22/68编码272bit打孔前2×Z个bit实现1/3编码,即68bit→264bit,对⽐blkSize = 256,还有8个bit怎么办?
ldpcEncode.m
| FUNCTION [ encVec ] = ldpcEncode( bitVec, LDPC )
服装人台
1. 参数:
bitVec:信息序列
LDPC:主要⽤到LDPC.Z,LDPC.G
2. 功能:
实现编码
3. 看懂程序:
①注意打孔前2×Z个⽐特,原因上⽂
②编码⽅法采⽤简单的矩阵乘法,对于硬件实现来说较为不可取
ldpcDecode.m
| FUNCTION [decVec] = ldpcDecoder( llrVec, LDPC )
八角楼上
1. 参数:
llrVec:初始LLR值
LDPC:其他有关参数
2. 功能:
实现SPA译码
其他函数
| 调制解调信道⽤的是MATLAB⾃带的函数,⾃⾏查看。调制⽅法采⽤QAM
总结
搞懂5G NR标准的过程就是搞懂确定码长,码率后如何确定校验矩阵H,还要注意⼀下2×Z是啥。
下图演⽰如何确定校验矩阵H,箭头表⽰前后确定关系

本文发布于:2024-09-20 19:53:01,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/480007.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:确定   矩阵   码率   实现   标准
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议