主要内容

nrCRCEncode

计算并附加循环冗余校验 (CRC)

说明

blkcrc = nrCRCEncode(blk,poly) 计算由多项式 poly 为输入数据 blk 定义的 CRC。该函数返回 CRC 编码数据,该数据是输入数据的副本,并附加了 CRC 奇偶校验位。有关相关多项式的详细信息,请参阅 TS 38.212 第 5.1 节 [1]

示例

blkcrc = nrCRCEncode(blk,poly,mask) 使用 mask 的整数值,对附加的 CRC 位应用逻辑异或 (XOR) 掩码处理。blkcrc 中附加的 CRC 位按从最高有效位 (MSB) 到最低有效位 (LSB) 的顺序进行了 XOR 掩码处理。掩码 CRC 的形式为 (p0 xor m0), (p1 xor m1),…, (pL-1 xor mL-1),其中 L 是奇偶校验位的数量,p0m0 分别是 CRC 和 mask 的二进制表示中的 MSB。如果掩码值大于 2L - 1,则考虑使用掩码值的 L 个有效位。

示例

示例

全部折叠

为由两个数据块组成的全零矩阵计算并附加 CRC 校验位。结果是一个大小为 124×2 的全零矩阵。

blkcrc = nrCRCEncode(zeros(100,2),'24C');
any(blkcrc(:,1:2));

为由两个数据块组成的全零矩阵计算并附加掩码 CRC 校验位。附加的 CRC 位按从 MSB 到 LSB 的顺序,以指定 mask 进行了 XOR 掩码处理。结果是除了最后一个位置之外,所有元素全为零的矩阵。

mask = 1;
blkcrc = nrCRCEncode(zeros(100,2),'24C',mask);
blkcrc(end-5:end,1:2)
ans = 6×2

     0     0
     0     0
     0     0
     0     0
     0     0
     1     1

输入参数

全部折叠

输入数据,指定为实数矩阵。矩阵的每一列都被视为一个单独的数据块。

数据类型: double | int8 | logical

CRC 多项式,指定为 '6''11''16''24A''24B''24C'。有关相关多项式的详细信息,请参阅 TS 38.212 第 5.1 节。

数据类型: char | string

XOR 掩码,指定为非负整数。掩码通常是一个无线网络临时标识符 (RNTI)。

数据类型: double

输出参量

全部折叠

CRC 编码数据,以实数矩阵的形式返回。blkcrc 是输入 blk 的副本,并附加了 CRC 奇偶校验位。每列对应于一个单独的 CRC 编码代码块。blkcrc 的数据类型继承自输入 blk

数据类型: double | int8 | logical

参考

[1] 3GPP TS 38.212. “NR; Multiplexing and channel coding.” 3rd Generation Partnership Project; Technical Specification Group Radio Access Network.

扩展功能

全部展开

C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。

GPU 代码生成
使用 GPU Coder™ 为 NVIDIA® GPU 生成 CUDA® 代码。

版本历史记录

在 R2018b 中推出

全部展开