我是靠谱客的博主 谦让自行车,最近开发中收集的这篇文章主要介绍CRC解码(解码并删除循环冗余校验),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1.语法

(1)[blk,err] = nrCRCDecode(blkcrc,poly)

[blk,err] = nrCRCDecode(blkcrc,poly)检查输入数据blkcrc中是否存在CRC错误。该函数假定输入数据包括与多项式poly相关的CRC奇偶校验位。该函数返回blk,这是输入blkcrc的数据部分。该函数还返回err,它是输入中包含的CRC与跨输入的数据部分重新计算的CRC之间的逻辑差(XOR)。如果err不等于0,则说明发生了错误或输入CRC被屏蔽。有关相关多项式的详细信息,请参见TS 38.212第5.1节[1]。

(2)[blk,err] = nrCRCDecode(blkcrc,poly,mask)

[blk,err] = nrCRCDecode(blkcrc,poly,mask)在使用err返回之前,用mask对CRC差异进行XOR屏蔽。将掩码值应用于CRC差,最高有效位(MSB)在前,最低有效位(LSB)在后。

例:检查数据块是否存在CRC错误

使用和不使用掩码检查CRC解码的效果

(1)定义与等于12的无线网络临时标识符(RNTI)对应的掩码。将RNTI掩码的CRC奇偶校验位附加到一个数据块的全1矩阵。

rnti = 12;
blkCrc = nrCRCEncode(ones(100,1),‘24C’,rnti);

(2)当执行不带掩码的CRC解码时,err1等于RNTI,因为CRC在编码过程中被掩码了。原始CRC与重新计算的CRC之间的逻辑差异是CRC掩码。

[blk,err1] = nrCRCDecode(blkCrc,‘24C’);
err1

(3)使用RNTI值作为掩码执行CRC解码时,err等于0。

[blk,err2] = nrCRCDecode(blkCrc,‘24C’,err1);
err2

2.输入参数

(1)blkcrc — CRC编码的数据

CRC编码的数据,指定为实数矩阵。矩阵的每一列均视为单独的CRC编码数据块。

数据类型:双精度/8位整型/逻辑型

(2)poly — CRC多项式

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

数据类型:字符/字符串

(3)掩码—XOR掩码

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

数据类型:双精度

3.输出参数

(1)blk — CRC解码的数据

CRC解码数据,以实数矩阵形式返回。 blk是输入blkcrc的仅数据部分。

数据类型:双精度/8位整型/逻辑型

(2)err —逻辑CRC差

逻辑CRC差,以整数形式返回。 err是输入blkcrc中包含的CRC与跨输入数据部分重新计算的CRC之间的逻辑差。如果指定了掩码,则函数XOR使用mask对err-masks进行掩码,然后再返回它。

数据类型:无符号32位整型

4.参考文献

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

最后

以上就是谦让自行车为你收集整理的CRC解码(解码并删除循环冗余校验)的全部内容,希望文章能够帮你解决CRC解码(解码并删除循环冗余校验)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部