概述
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解码(解码并删除循环冗余校验)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复