5G NR物理层处理:数值与MATLAB建模详解
1. 引言
在5G通信系统中,物理层处理对于实现高效、可靠的数据传输至关重要。本文将深入探讨5G NR物理层处理的关键技术,包括混合自动重传请求(HARQ)、循环冗余校验(CRC)附加、码块分段、低密度奇偶校验(LDPC)编码以及速率匹配等方面,并结合MATLAB工具进行详细分析。
2. 混合自动重传请求(HARQ)
2.1 HARQ原理
5G NR采用混合自动重传请求(HARQ)技术,它结合了自动重传请求(ARQ)和前向纠错(FEC),以提供可靠的数据传输。具体采用的是增量冗余HARQ(IR - HARQ),在重传时不发送错误编码比特的精确副本,而是生成并发送另一组编码比特,利用重传编码比特中的不同奇偶校验位降低码率并提高编码增益。
2.2 5G中的HARQ流程
5G支持下行传输最多16个HARQ进程。这意味着在检查每个数据包的ACK响应之前,可以连续发送16个数据包,而不是发送一个数据包后等待UE的ACK响应再发送下一个。如果某个HARQ进程未收到ACK响应,则需要重传,根据起始比特索引重传数据包的一个片段。
2.3 冗余版本(RV)
在5G NR中定义了四个冗余版本(RV),其用于优先考虑性能的顺序为[1, 2, 3, 5]。例如,在一个使用16个HARQ进程进行5G下行传输的示例中,若HARQ进程2、6、7和13中的数据包接收错误,接收器会向发送器发送NACK消息。在完成前16个HARQ进程后,接下来的16个进程中,除了进程2、6、7和13会使用RV 2重发之前错误接收的数据包外,其他进程将发送带有RV 0的新数据包。
2.4 MATLAB实现
在MATLAB的5G工具箱中,可以使用
hNewHARQProcesses
函数初始化用于跟踪HARQ进程的数组,其语法如下:
[harqProcesses] = hNewHARQProcesses(numHARQProcesses,rvsequence,ncw)
输入参数说明:
-
numHARQProcesses
:HARQ进程的数量。
-
rvsequence
:冗余版本序列。
-
ncw
:码字的数量。
该函数返回一个包含以下字段的结构数组:
-
RVSequence
:冗余版本序列。
-
ncw
:码字的数量。
-
blkerr
:块错误指示符。
-
RV
:冗余版本。
-
RVIdx
:冗余版本ID。
使用
hUpdateHARQProcesses
函数在每个HARQ进程后更新使用
hNewHARQProcess
函数创建的数组,其语法如下:
[harqProcess] = hUpdateHARQProcess(harqProcess,ncw)
输入参数说明:
-
harqProcess
:需要更新的由
hNewHARQProcess
创建的数组。
-
ncw
:码字的数量。
该函数返回更新后的
harqProcess
结构数组。
2.5 HARQ流程示意图
graph LR
A[发送16个数据包] --> B{检查ACK响应}
B -- 有NACK --> C[根据RV重传数据包片段]
B -- 全部ACK --> D[发送新的16个数据包]
C --> B
3. 循环冗余校验(CRC)附加
3.1 CRC原理
循环冗余校验(CRC)用于数据通信中,在接收器端检测传输数据流中的错误。待传输的数据流通过循环生成多项式处理,生成CRC比特流,然后在传输前将其附加到数据流中。在接收器端,对CRC编码数据应用相同的多项式,检查是否引入了错误。
3.2 5G中的CRC应用
在5G的下行共享信道(DLSCH)编码块中,CRC附加是第一个步骤。对于DLSCH,根据3GPP TS 38.212定义了两个循环生成多项式:
- (g_{CRC16}(D)=D^{16}+D^{12}+D^{5}+1),当消息块大小(N_A\leq3824)比特时使用。
- (g_{CRCA24}(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),当消息块大小(N_A>3824)比特时使用。
3.3 CRC输出长度计算
CRC附加子块的输出长度由以下公式计算:
(N_{bits}=N_B + N_{L1})
其中,(N_{L1})是附加到消息块的CRC比特数,(N_B)是消息块大小。
3.4 数值示例
给定CRC多项式(g_{CRC6}(D)=D^{6}+D^{5}+1)和消息块(in0 = 1010101010),通过以下异或过程获得CRC比特:
1010101010 000000 - 消息比特右填充六个0比特
⊕ 1100001 - 基于CRC多项式的除数
0110100010 000000
⊕ 1100001
0000100110 000000
⊕ 110000 1
0000010110 100000
⊕ 11000 01
0000001110 110000
⊕ 1100 001
0000000010 111000
⊕ 11 00001
0000000001 111010
⊕ 1 100001
0000000000 011011
计算得到的CRC比特为:011011,因此CRC附加过程块的输出为(B_0 = 1010101010011011)。
3.5 MATLAB实现
在MATLAB中,可以使用
nrCRCEncode
函数执行CRC附加,其语法如下:
Crced = nrCRCEncode(blk, poly)
输入参数说明:
-
blk
:要附加CRC的输入传输块。
-
poly
:选择的CRC多项式(‘6’, ‘11’, ‘16’, ‘24A’, ‘24B’ 或 ‘24C’)。
该函数返回CRC编码后的数据
crced
。
3.6 CRC流程示意图
graph LR
A[输入消息块] --> B[选择CRC多项式]
B --> C[生成CRC比特]
C --> D[附加CRC比特到消息块]
D --> E[输出CRC编码数据]
4. 码块分段
4.1 分段原因
对经过CRC附加后的输出(B_a)进行码块分段,因为要发送到LDPC编码器的码块长度应是可用LDPC提升大小的倍数,且不超过最大码块大小。LDPC基础图(BG)1和2的最大码块大小分别为8448和3840。
4.2 分段操作
如果输入块长度超过最大码块大小,则将其分割成多个较小的码块,并为每个码块附加额外的24位CRC。使用的CRC生成多项式为:
(g_{CRCB24}(D)=D^{24}+D^{23}+D^{6}+D^{5}+1)
4.3 输出段数量计算
输出段的数量由以下向上取整函数计算:
(N_C=\left\lceil\frac{N_B - N_{L2}}{K_{cb}}\right\rceil)
其中,(N_B)是CRC附加子块的输出长度,(K_{cb})是最大码块大小,(N_{L2})是附加到每个码块的额外CRC比特数(24位)。
4.4 提升大小选择
需要为BG矩阵选择合适的提升大小(Z_c)。根据参数(\alpha)定义了八组提升大小,可用提升大小由方程(Z_c = j\times\alpha\times2)确定。选择满足以下方程的LDPC提升大小的最小值:
(Z_c\geq\frac{K’}{K_b})
对于LDPC BG1,(K_b = 22);对于LDPC BG2,根据(N_B)的不同取值,(K_b)有不同的值。
4.5 数值示例
对于一个大小为528比特且带有16位CRC附加的传输块,若(N_B = 544),使用BG2((K_{cb}=3840)),由于(N_B<K_{cb}),输入不分割,也不添加额外的CRC比特,(K’ = N_B = 544)。
根据(192<N_B\leq560),(K_b = 8),则(Z_c\geq\frac{544}{8}=68),从表中最接近的值为(Z_c = 72)。
每个段的长度为(K = 10\times Z_c = 10\times72 = 720),每个段添加的填充比特数为(K - K’ = 720 - 544 = 176)。
4.6 MATLAB实现
在MATLAB的5G工具箱中,可以使用
nrCodeblockSegmentLDPC
函数进行码块分段,其语法如下:
Segmented = nrCodeblockSegmentLDPC(crced,bgn)
输入参数说明:
-
crced
:要分段的输入数据块。
-
bgn
:选择的LDPC基础图编号(1或2)。
该函数返回一个矩阵
segmented
,其中每列对应一个码块段。
4.7 码块分段流程示意图
graph LR
A[输入CRC编码数据] --> B{是否超过最大码块大小}
B -- 是 --> C[分割成多个码块并附加24位CRC]
B -- 否 --> D[不分割,不添加额外CRC]
C --> E[选择提升大小Zc]
D --> E
E --> F[计算段长度和填充比特数]
F --> G[输出分段后的码块]
5. LDPC编码
5.1 LDPC码原理
LDPC码是eMBB数据信道选择的信道码,采用基于原型图的准循环(QC)LDPC码构造。通过3GPP定义的两个速率兼容的基础图,使用在码块分段中确定的提升大小(Z_c)生成奇偶校验矩阵。
5.2 奇偶校验矩阵结构
奇偶校验矩阵由循环移位的单位矩阵(Q(P_{i,j}))组成,对于非零的(P_{i,j})元素,矩阵有右循环移位(P_{i,j});(P_{i,j}=0)对应单位矩阵;(P_{i,j}=-1)对应零矩阵。
5.3 基础图选择
BG1适用于编码大传输块并实现高达8/9的高码率,支持最大输入码块大小为8448比特;BG2适用于编码小传输块并实现低码率,最低可达1/5,支持最大输入码块大小为3840比特。满足以下条件之一时使用BG2:
- (N_A\leq292)
- (N_A\leq3824)且目标码率(R\leq0.67)
- (R\leq0.25)
否则使用BG1。
5.4 生成矩阵推导
在进行LDPC编码之前,将码块分段中得到的段(C_x^a)中的填充比特(用
<NULL>
表示)替换为0。使用LDPC生成矩阵通过以下矩阵方程对每个段(C_x^a)进行LDPC编码,得到LDPC码字(D_x^a):
(D_x^a = C_x^a\times G)
为了推导生成矩阵,首先对奇偶校验矩阵进行高斯 - 约旦消元,得到以下形式的(H_{GJ}):
(H_{GJ}=\begin{bmatrix}I_{N - K}&P\end{bmatrix})
其中,(P)是((N - K)\times K)的奇偶校验矩阵,(I_{N - K})是((N - K)\times(N - K))的单位矩阵。
然后,通过以下方式重塑(H_{GJ})得到生成矩阵:
(G=\begin{bmatrix}I_K&P^T\end{bmatrix})
5.5 数值示例
给定二进制消息(u = [1, 0, 1])和奇偶校验矩阵(H_1):
H1 = [1 0 0 1 0 1;
1 1 0 1 1 1;
0 0 1 0 1 1];
对(H_1)进行高斯 - 约旦消元,得到(H_{GJ}):
HGJ = [1 0 0 1 0 1;
0 1 0 0 1 0;
0 0 1 0 1 1];
根据公式得到生成矩阵(G_1):
G1 = [1 0 0 1 0 0;
0 1 0 0 1 1;
0 0 1 1 0 1];
消息(u)的LDPC码字为:
CLDPC = [0 1 0] * G1;
5.6 MATLAB实现
在MATLAB中,可以使用
nrLDPCEncode
函数进行5G LDPC编码,其语法如下:
Encoded = nrLDPCEncode(segmented,bgn)
输入参数说明:
-
segmented
:要进行LDPC编码的输入数据块。
-
bgn
:选择的LDPC基础图编号(1或2)。
该函数返回LDPC编码后的数据
encoded
。
5.7 LDPC编码流程示意图
graph LR
A[输入分段后的码块] --> B{选择基础图BG1或BG2}
B --> C[生成奇偶校验矩阵]
C --> D[高斯 - 约旦消元得到HGJ]
D --> E[推导生成矩阵G]
E --> F[进行LDPC编码得到码字Dx^a]
F --> G[输出LDPC编码数据]
6. 速率匹配
6.1 速率计算
基础矩阵的速率由输入到LDPC编码器的系统比特数(K)和LDPC码字的长度(N_D)计算:
(R=\frac{K}{N_D})
对于LDPC BG1和BG2,其速率分别为:
- (R_{BG1}=\frac{22Z_c}{66Z_c}=\frac{1}{3})
- (R_{BG2}=\frac{10Z_c}{50Z_c}=\frac{1}{5})
6.2 速率匹配流程
在5G中,速率匹配包括比特选择和比特交织两个过程。
6.2.1 比特选择
对于每个LDPC码字(D_x^a),根据HARQ冗余版本和要排除的奇偶校验比特数选择需要传输的比特,并去除所有填充比特。该过程的输出码字记为(E_x^a),其长度(N_{E_x^a})由以下公式计算:
N_{E_x^a}=\begin{cases}
\left\lceil\frac{N_{Layers}\times Q_m\times G}{N_{Layers}\times Q_m\times N_c}\right\rceil\times N_{Layers}\times Q_m - N_{L_m}\times N_c, & \text{if } x > \text{mod}(G, N_{Layers}\times Q_m\times N_c) \\
\left\lfloor\frac{N_{Layers}\times Q_m\times G}{N_{Layers}\times Q_m\times N_c}\right\rfloor\times N_{Layers}\times Q_m, & \text{otherwise}
\end{cases}
其中,(G)是输出速率匹配码字的长度,(N_{Layers})是PDSCH层数,(Q_m)是调制阶数,(N_c)是段数。
6.2.2 比特交织
对每个码字(E_x^a)进行比特交织,得到输出(F_x^a)。具体步骤如下:
1. 将码字(E_x^a)重塑为(\frac{N_{E_x^a}}{Q_m}\times Q_m)矩阵(M)。
2. 对矩阵(M)进行转置。
3. 按列顺序排列转置矩阵的元素,得到(F_x^a)。
6.3 数值示例
假设已知LDPC码字(D_x^a)、HARQ冗余版本、(N_{Layers})、(Q_m)和(N_c)等参数,按照上述步骤进行比特选择和比特交织。
6.4 MATLAB实现
在MATLAB中,可根据相应的公式和步骤编写代码实现速率匹配。
6.5 速率匹配流程示意图
graph LR
A[输入LDPC码字Dx^a] --> B[比特选择]
B --> C[去除填充比特]
C --> D[计算输出码字长度NEx^a]
D --> E[比特交织]
E --> F[输出速率匹配后的码字Fx^a]
7. 总结
本文详细介绍了5G NR物理层处理的关键技术,包括HARQ、CRC附加、码块分段、LDPC编码和速率匹配。通过理论分析、数值示例和MATLAB实现,展示了这些技术的原理和应用。这些技术的协同工作确保了5G通信系统的高效、可靠数据传输。在实际应用中,可以根据具体需求选择合适的参数和算法,进一步优化系统性能。
8. 各技术之间的协同关系
8.1 整体流程概述
5G NR物理层处理的各个技术环节紧密相连,形成一个完整的流程,以确保数据的高效、可靠传输。从最初的HARQ机制保障数据重传的准确性,到CRC附加检测传输错误,再到码块分段、LDPC编码以及最后的速率匹配,每个步骤都为下一个步骤提供必要的输入,共同完成数据的物理层处理。
8.2 具体协同关系分析
- HARQ与其他技术的协同 :HARQ机制贯穿整个数据传输过程,它根据接收端的反馈决定是否重传数据。在重传时,会结合后续的CRC、码块分段、LDPC编码和速率匹配等技术,确保重传的数据能够更准确地被接收。例如,在重传时,根据不同的冗余版本(RV)进行速率匹配,以提高传输效率。
- CRC与码块分段的协同 :CRC附加为码块分段提供了错误检测的基础。在码块分段过程中,如果输入块长度超过最大码块大小,会分割成多个码块并附加额外的24位CRC,进一步增强数据的可靠性。
- 码块分段与LDPC编码的协同 :码块分段的结果是LDPC编码的输入。分段后的码块长度和提升大小等参数会影响LDPC编码的性能。例如,选择合适的提升大小(Z_c)可以优化LDPC编码的效果。
- LDPC编码与速率匹配的协同 :LDPC编码生成的码字是速率匹配的输入。速率匹配根据LDPC码字的长度和系统需求,选择合适的比特进行传输,并进行比特交织,以提高传输速率和可靠性。
8.3 协同关系示意图
graph LR
A[HARQ] --> B[CRC附加]
B --> C[码块分段]
C --> D[LDPC编码]
D --> E[速率匹配]
E --> F[数据传输]
F -- 反馈NACK --> A
9. 实际应用中的考虑因素
9.1 参数选择
在实际应用中,需要根据具体的通信场景和需求选择合适的参数。例如:
-
HARQ进程数量
:5G支持最多16个HARQ进程,可根据网络负载和传输需求调整进程数量,以平衡传输效率和可靠性。
-
CRC多项式
:根据消息块大小选择合适的CRC多项式,如(g_{CRC16}(D))或(g_{CRCA24}(D)),以确保错误检测的准确性。
-
LDPC基础图
:根据输入码块大小和目标码率选择BG1或BG2,以优化编码性能。
9.2 性能优化
为了提高5G NR物理层处理的性能,可以采取以下优化措施:
-
自适应速率匹配
:根据信道条件和传输需求,动态调整速率匹配的参数,如比特选择和比特交织方式,以提高传输速率和可靠性。
-
并行处理
:利用多核处理器或专用硬件,对HARQ、CRC附加、码块分段、LDPC编码和速率匹配等过程进行并行处理,提高处理效率。
9.3 兼容性问题
在实际应用中,还需要考虑不同设备和系统之间的兼容性问题。例如,确保不同厂家的5G设备在HARQ、CRC、LDPC编码等方面的参数设置和处理方式一致,以保证数据的正确传输和接收。
10. 未来发展趋势
10.1 技术创新
随着5G技术的不断发展,物理层处理技术也将不断创新。例如,可能会出现更高效的LDPC编码算法,进一步提高编码效率和可靠性;或者采用新的HARQ机制,更好地适应复杂的通信环境。
10.2 与其他技术的融合
5G NR物理层处理技术将与其他技术如人工智能、物联网等深度融合。例如,利用人工智能算法优化物理层参数的选择和调整,提高通信系统的智能性和自适应性;或者将5G物理层技术应用于物联网设备,实现更高效、可靠的物联网通信。
10.3 对通信网络的影响
这些技术的发展将对未来的通信网络产生深远影响。例如,提高网络的容量和可靠性,支持更多的设备连接和高速数据传输;降低通信延迟,满足实时性要求较高的应用场景,如自动驾驶、工业自动化等。
11. 结论
11.1 技术总结
本文全面介绍了5G NR物理层处理的关键技术,包括HARQ、CRC附加、码块分段、LDPC编码和速率匹配。这些技术通过协同工作,确保了5G通信系统的高效、可靠数据传输。
11.2 应用建议
在实际应用中,应根据具体的通信场景和需求,合理选择参数和优化算法,以提高系统性能。同时,要关注技术的发展趋势,积极采用新的技术和方法,推动5G通信技术的不断进步。
11.3 展望未来
随着5G技术的广泛应用和不断发展,物理层处理技术将在未来的通信网络中发挥更加重要的作用。我们期待这些技术的进一步创新和发展,为人们带来更加便捷、高效的通信体验。
以下是一个汇总各技术MATLAB函数的表格:
| 技术环节 | MATLAB函数 | 语法 | 输入参数说明 | 输出说明 |
| ---- | ---- | ---- | ---- | ---- |
| HARQ初始化 |
hNewHARQProcesses
|
[harqProcesses] = hNewHARQProcesses(numHARQProcesses,rvsequence,ncw)
|
numHARQProcesses
:HARQ进程的数量;
rvsequence
:冗余版本序列;
ncw
:码字的数量 | 包含
RVSequence
、
ncw
、
blkerr
、
RV
、
RVIdx
等字段的结构数组 |
| HARQ更新 |
hUpdateHARQProcesses
|
[harqProcess] = hUpdateHARQProcess(harqProcess,ncw)
|
harqProcess
:需要更新的由
hNewHARQProcess
创建的数组;
ncw
:码字的数量 | 更新后的
harqProcess
结构数组 |
| CRC附加 |
nrCRCEncode
|
Crced = nrCRCEncode(blk, poly)
|
blk
:要附加CRC的输入传输块;
poly
:选择的CRC多项式(‘6’, ‘11’, ‘16’, ‘24A’, ‘24B’ 或 ‘24C’) | CRC编码后的数据
crced
|
| 码块分段 |
nrCodeblockSegmentLDPC
|
Segmented = nrCodeblockSegmentLDPC(crced,bgn)
|
crced
:要分段的输入数据块;
bgn
:选择的LDPC基础图编号(1或2) | 矩阵
segmented
,每列对应一个码块段 |
| LDPC编码 |
nrLDPCEncode
|
Encoded = nrLDPCEncode(segmented,bgn)
|
segmented
:要进行LDPC编码的输入数据块;
bgn
:选择的LDPC基础图编号(1或2) | LDPC编码后的数据
encoded
|
通过对这些技术的深入理解和应用,我们可以更好地把握5G NR物理层处理的核心,为5G通信系统的设计和优化提供有力支持。
超级会员免费看
9647

被折叠的 条评论
为什么被折叠?



