5G LDPC编码流程

article/2025/10/14 2:44:15

  参照3GPP的标准文档,摘录其中下行共享信道与寻呼信道的LDPC编码流程,以便于进行对应的软件仿真

  • 传输块加CRC校验

      记待传输的数据块序列为 a 0 , a 1 , ⋯ , a A − 1 a_0,a_1,\cdots,a_{A-1} a0,a1,,aA1,其中 A A A为传输块的负载(payload)尺寸。加入CRC校验比特以提供检错能力,其中加入的CRC校验比特长度 L L L A A A的大小决定,如下式所示
    L = { 24 , i f A > 3824 16 , o t h e r w i s e L = \begin{cases} 24,\ \ \ \ if A \gt 3824 \\ \\ 16,\ \ \ \ otherwise \end{cases} L=24,    ifA>382416,    otherwise
    对应选取的CRC生成多项式为
    g c r c 24 a ( D ) = D 24 + D 23 + D 18 + D 17 + D 14 + D 11 + D 10 + D 7 + D 6 + D 5 + D 4 + D 3 + D + 1 g c r c 16 ( D ) = D 16 + D 12 + D 5 + 1 g_{crc24a}(D) = D^{24}+D^{23}+D^{18}+D^{17}+D^{14}+D^{11}+D^{10}+D^{7}+D^{6}+D^{5}+D^{4}+D^{3}+D+1\\g_{crc16}(D)=D^{16}+D^{12}+D^{5}+1 gcrc24a(D)=D24+D23+D18+D17+D14+D11+D10+D7+D6+D5+D4+D3+D+1gcrc16(D)=D16+D12+D5+1
    生成的校验比特序列 p 0 , p 1 , ⋯ , p L − 1 p_0,p_1,\cdots,p_{L-1} p0,p1,,pL1附在数据块序列后,记加了CRC校验的序列为 b 0 , b 1 , ⋯ , b B − 1 b_0,b_1,\cdots,b_{B-1} b0,b1,,bB1,即有
    { b k = a k , 0 ≤ k < A b k = p k − A , A ≤ k < B \begin{cases} b_k=a_k,\ \ \ \ 0\leq k \lt A\\ \\ b_k=p_{k-A},\ \ \ \ A\leq k \lt B \end{cases} bk=ak,    0k<Abk=pkA,    Ak<B
    其中 B = A + L B=A+L B=A+L

  • 选择基图BG

    根据具体传输要求决定的码率 R R R,以及传输块原始的长度 A A A,确定基图的选择如下
    B G = { B G 2 , i f A ≤ 292 o r { A ≤ 3824 R ≤ 0.67 o r R ≤ 0.25 B G 1 , o t h e r w i s e BG=\begin{cases} BG2,\ \ \ \ if \ A\leq 292\ or\ \begin{cases}A\leq 3824\\ R\leq 0.67\end{cases}\ or\ R\leq 0.25 \\ \\ BG1,\ \ \ \ otherwise \end{cases} BG=BG2,    if A292 or {A3824R0.67 or R0.25BG1,    otherwise

  • 传输块分段

    对应于不同的基图,单次能够传输的码块大小是有限制的,记码块最大为 B m a x B_{max} Bmax,则有
    B m a x = { 8448 , i f B G 1 3840 , i f B G 2 B_{max}= \begin{cases} 8448,\ \ \ \ if \ BG1\\ \\ 3840,\ \ \ \ if \ BG2 \end{cases} Bmax=8448,    if BG13840,    if BG2
    如果传输块尺寸 B > B m a x B>B_{max} B>Bmax,则要求对传输块进行分块,并且每个分块还要附加长度 L ′ = 24 L^{'}=24 L=24的CRC校验比特,综上所述,所需分块的数目 C C C和分块后总体传输块大小 B ′ B^{'} B的计算如下
    C = { 1 , i f B ≤ B m a x ⌈ B / ( B m a x − L ′ ) ⌉ , o t h e r w i s e B ′ = { B , i f B ≤ B m a x B + C ⋅ L ′ , o t h e r w i s e \begin{aligned} C&= \begin{cases} 1,\ \ \ \ if \ B\leq B_{max}\\ \\ \lceil B / (B_{max}-L^{'})\rceil,\ \ \ \ otherwise \end{cases}\\ \\ B^{'}&= \begin{cases} B,\ \ \ \ if \ B \leq B_{max}\\ \\ B+C·L^{'},\ \ \ \ otherwise \end{cases} \end{aligned} CB=1,    if BBmaxB/(BmaxL),    otherwise=B,    if BBmaxB+CL,    otherwise

  • 确定码块大小

      由于标准中支持的提升值 Z Z Z肯定不可能是连续的,因此用校验矩阵进行编码时支持的输入比特序列长度也不会是连续的。如果直接将传输块均分,得到的码块长度很可能不会恰好满足校验矩阵对编码序列长度的要求,需要填充比特才行。另外,标准中的BG2还要求根据输入码块长度来适当删减对应的核心矩阵系统列,这也会影响到最终编码码块长度的确定。所以,综合来看,码块长度的确定还需要进行对应的计算.

      设对传输块 B ′ B^{'} B均分得到的码块长度为 K ′ K^{'} K,则有
    K ′ = B ′ C K^{'}=\frac{B^{'}}{C} K=CB
    另外,编码对应系统列数 K b K_b Kb确定如下
    K b = { 22 , B G 1 10 , B G 2 & & B > 640 9 , B G 2 & & 640 ≥ B > 560 8 , B G 2 & & 560 ≥ B > 192 6 , B G 2 & & B ≤ 192 K_b= \begin{aligned} \begin{cases} 22,\ \ \ \ &BG1\\ \\ 10,\ \ \ \ &BG2\ \&\& \ B>640\\ \\ 9,\ \ \ \ &BG2\ \&\& \ 640\geq B>560\\ \\ 8,\ \ \ \ &BG2\ \&\& \ 560\geq B > 192\\ \\ 6,\ \ \ \ &BG2\ \&\&\ B\leq 192 \end{cases} \end{aligned} Kb=22,    10,    9,    8,    6,    BG1BG2 && B>640BG2 && 640B>560BG2 && 560B>192BG2 && B192
    根据式子 Z c ≥ K ′ / K b Z_c\geq K^{'}/K_b ZcK/Kb,确定满足这一条件的最小提升值 Z Z Z,其可能取值如下所示
    Z = a ⋅ 2 i , a = { 2 , 3 , 5 , 7 , 9 , 11 , 13 , 15 } , i = { 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 } , Z ≤ 384 Z=a·2^i,\ a=\{2,3,5,7,9,11,13,15\},\ i=\{0,1,2,3,4,5,6,7\},Z\leq384 Z=a2i, a={2,3,5,7,9,11,13,15}, i={0,1,2,3,4,5,6,7},Z384

    最终确定编码码块的大小 K K K如下
    K = { 22 Z c , B G 1 10 Z c , B G 2 K= \begin{aligned} \begin{cases} 22Z_c, \ \ \ \ &BG1\\ \\ 10Z_c, \ \ \ \ &BG2 \end{cases} \end{aligned} K=22Zc,    10Zc,    BG1BG2

  • 码块填充比特

      确定了编码码块的大小后,还需要确定编码码块的组成。若码块 C = 1 C=1 C=1,则只需要在信息块 B ′ B^{'} B后添加填充比特 < N U L L > ( 0 ) <NULL>(0) <NULL>(0)即可,此时的编码码块组成如下

    若码块数 C > 1 C>1 C>1,则需要添加长度 L = 24 L=24 L=24的CRC校验比特,其生成多项式如下所示
    g c r c 24 b ( D ) = D 24 + D 23 + D 6 + D 5 + D + 1 g_{crc24b}(D)=D^{24}+D^{23}+D^6+D^5+D+1 gcrc24b(D)=D24+D23+D6+D5+D+1
    此时的码块组成如下所示

  • LDPC编码

      确定了编码码块后,要进行编码,还需要得到校验矩阵。具体来说,标准中根据基图和提升值所属组确定了 2 × 8 = 16 2\times8=16 2×8=16个校验矩阵,其中提升值所属组即计算式 Z = a ⋅ 2 i Z=a·2^i Z=a2i中的 a a a,共8种取值即8组。另外,这16个校验矩阵的移位值是按照对应提升值组中的最大值确定的,若要应用到当前编码中则需要对移位值进行 Z c Z_c Zc的求余,这样得到的计算结果才是当前提升值对应的移位值。

      通过编码码块和校验矩阵进行编码后,根据基图的不同,得到的系统编码比特序列长 N ′ N^{'} N
    N ′ = { 68 Z c , B G 1 52 Z c , B G 2 N^{'}= \begin{aligned} \begin{cases} 68Z_c,\ \ \ \ &BG1\\ \\ 52Z_c,\ \ \ \ &BG2 \end{cases} \end{aligned} N=68Zc,    52Zc,    BG1BG2
    值得注意的是,5G NR所采用的基图在设计时给前 2 Z c 2Z_c 2Zc个系统比特对应的两列设置了较大的列重,使得发送端将这两列对应的系统比特打掉后仍然能够在接收端较大可能地恢复出来。而打掉这 2 Z c 2Z_c 2Zc个系统比特后,可以对应地补上 2 Z c 2Z_c 2Zc个校验比特,以实现发送比特数不变的前提下性能上的提升。因此,虽然标准中给的最终编码后序列长度 N = 66 Z c N=66Z_c N=66Zc N = 50 Z c N=50Z_c N=50Zc,但是实际仿真中还是会在后面补上校验比特的。


http://chatgpt.dhexx.cn/article/T4y4j4r4.shtml

相关文章

linux杀进程

linux学习心得 查看所有进行中的后台进程 命令 &#xff1a;ps aux ps命令查看应用进程。 后面的参数 -a &#xff1a; 显示现行终端机下的所有进程&#xff0c;包括其他用户的进程&#xff1b; -u &#xff1a;以用户为主的进程状态 &#xff1b; x &#xff1a;通常与 a …

Linux找到进程并杀死

第一种情况&#xff1a; 写脚本的时候没没把程序杀死&#xff0c;再次启动发现端口被占用了&#xff0c;于是找到原来的端口然后kill掉重启 用下面2个命令可以&#xff1a; netstat -tunlp|grep 8080t&#xff1a;表示查看tcp u&#xff1a;表示查看udp n&#xff1a;表示端口…

在 Linux 中杀死一个进程

在 Linux 中&#xff0c;假如一个进程的 PID 为 3810&#xff0c;那么结束一个进程可以使用如下命令&#xff1a; $ kill -9 3810 以 Postman 为例&#xff0c;首先我们需要找到它的进程号&#xff0c;然后才能杀死。 查找进程号使用 ps 命令&#xff0c;不过有一个强大的参…

Linux命令行下杀死一个进程

在做项目的时候经常会出现程序死机、锁死、无响应等情况&#xff0c;这时候就需要找到程序相应的进程将其杀掉即可。步骤如下&#xff1a; 1.定位进程 top命令&#xff1a;可以实时动态地查看系统的整体运行情况&#xff0c;是一个综合了多方信息监测系统性能和运行信息的实用…

linux中进程杀不死解决办法

如图&#xff0c;多次在kill -9 此进程后依然存在 先说解决办法&#xff0c;输入过滤命令ps -ef|grep xxx&#xff08;此处写要过滤的进程名字&#xff09;&#xff0c;例如 之后kill掉对应的进程号&#xff0c;如图 问题解决。 如果有多个子进程可以先过滤再一起杀死&#xf…

Linux中kill命令杀不掉进程的解决办法

1、进程杀不掉的原因有两种&#xff1a; &#xff08;1&#xff09;这个进程是僵尸进程 &#xff1b; &#xff08;2&#xff09;此进程是"核心态"进程。 2、解决办法&#xff1a; &#xff08;1&#xff09;进入到“/proc/进程号”目录下&#xff0c;执行“cat stat…

Linux 批量杀进程

1.查需要杀死的进程 ps -ef | grep yum 2.去除掉里面的grep ps -ef | grep yum | grep -v grep 3.打印kill命令 ps -ef | grep yum | grep -v grep | awk {print "kill "$2} 4.执行kill命令 ps -ef | grep yum | grep -v grep | awk {print "kill "$2} …

linux 找出谁杀了进程

目录 Linux Signal 到底是什么信号 OOM 谁发的信号 systemtap audit 案例与总结 服务端的程序&#xff0c;一般都希望比较长时间的运行&#xff0c;比如7*24小时。不过&#xff0c;程序也需要更新&#xff0c;比如修Bug&#xff0c;比如增加新功能&#xff0c;比如修复增…

Linux操作系统之批量杀死进程

前言 在Linux操作系统中&#xff0c;一般常用的杀死进程的命令是 kill 、 pkill 、 killall &#xff0c;根据杀死单个进程拓展至批量杀死进程。 1、查看指定名称的进程&#xff0c;如下查看运行wps程序的进程&#xff1a; ps -ef | grep wps | grep -v grep 结果如下&…

在 VUE中,动态加载JS文件

需求 在vue组件中需要调用的函数方法名是相同的&#xff08;接口相同&#xff09;&#xff0c;但是按照页面不同需要导入不同JS文件 。如下&#xff1a; 然而上面这种写法肯定是行不通的&#xff0c;但表达的需求很明确。根据menuId的不同从JS文件中获取方法 解决方案 promi…

原生js实现动态加载js文件?

一、写在前面 今天拼多多笔试题&#xff0c;题目如下&#xff1a; 实现一个动态加载函数function loadScript(src, attrs)返回Promise, 其中 src是脚本地址&#xff0c;attrs是脚本属性。二、具体实现 <script>function loadScript(src, attrs) {return new Promise((r…

JavaScript网页实例:在网页里动态加载JavaScript

把一些逻辑独立的JavaScript脚本文件单独加载&#xff0c;是一种常见的JavaScript动态加载技术。这样做的好处有很多&#xff0c;比如可以减少不必要的JavaScript脚本文件的加载&#xff0c;以提高网页浏览速度。 补充代码&#xff0c;要求用户在网页中点击【动态加载】按钮后…

html动态加载js方法,动态引入js四种方法总结

这次给大家带来动态引入js四种方法总结,动态引入js四种方法的注意事项有哪些,下面就是实战案例,一起来看一下。 index.html test.jsalert("hello! I am test.js"); var str="1"; dynamic.js//第一种方式:直接document.write 但这样会把当前的页面全覆写…

动态加载js文件

1、使用场景 例如本人当前需求——给当前的管理系统的bootstarpTable的提示语修改各个国家的语言&#xff08;语言提示根据当前管理系统的语言环境&#xff09;。 也就是根据如图所示的语言&#xff0c;来变换bootstarptable的提示语&#xff0c; 类似这种提示语。 看看是怎么做…

js中动态加载js

下面介绍一种JS代码优化的一个小技巧&#xff0c;通过动态加载引入js外部文件来提高网页加载速度 【基本优化】 将所有需要的<script>标签都放在</body>之前&#xff0c;确保脚本执行之前完成页面渲染而不会造成页面堵塞问题&#xff0c;这个大家都懂的。 【合…

统计学 假设检验 P值

统计学 假设检验 P值 什么是P值 案例分析 来自总体方差检测的题目 p值的计算 P值

统计假设检验中的P值及置信区间理解

置信区间&#xff0c;就是一种区间估计。 例如&#xff0c;使用95%假设区间估计&#xff0c; 正式的期望无法获取&#xff0c;可用期望的均值替代 显著性P-value 假设&#xff1a;说你的硬币是公平的 检验假设&#xff1a;扔十次&#xff0c;看实验的结果是不是和假设相符 …

统计|假设检验中的P值(pvalue)如何看/怎样理解

本博文源于《商务统计》&#xff0c;之前在做matlab编程和spss统计分析中&#xff0c;对p值的理解就是懵懵懂懂&#xff0c;无法确定出真正含义。今天就以新生儿的例子来观看p值是如何看的&#xff0c;并且了解假设检验的5个步骤。 例子&#xff1a;新生儿 假设检验的一般步骤…

假设检验:使用p值来接受或拒绝你的假设

作者|GUEST 编译|VK 来源|Analytics Vidhya 介绍 检验是统计学中最基本的概念之一。不仅在数据科学中,假设检验在各个领域都很重要。想知道怎么做?让我们举个例子。现在有一个lifebuoy沐浴露。 沐浴露厂商声称,它杀死99.9%的细菌。他们怎么能这么说呢?必须有一种测试技术…

假设检验中的显著性水平与p值

假设检验的原理 假设检验是根据样本信息&#xff0c;提出对于总体信息的假设&#xff0c;并且对假设的正确性进行推断。 判断原假设的方法 推断的依据是假设成立发生的概率&#xff0c;并且设置显著性水平 α \alpha α (取值一般为0.01&#xff0c;0.05&#xff0c;0.1)。…