主要内容

使用通用CRC生成器HDL优化块为5G NR标准编码流数据

方法的使用通用CRC生成器HDL优化块,按照5G NR标准对流数据进行编码。

在本例中,将此块的输出与函数进行比较nrCRCEncode(5 g工具箱).循环冗余校验(CRC)是一种错误检测码,用于检测流数据中的错误。CRC生成器计算一个短的固定长度的二进制序列校验和,并将其与数据相加。CRC检测器对数据执行CRC,并将结果校验和与附加的校验和进行比较。如果两个校验和不匹配,则检测到错误。CRC发生器和检测器用于5G NR系统,以检测控制和上行和下行数据通道的传输块中的任何错误。5G NR标准规定了六种不同的循环发生器多项式:CRC6、CRC11、CRC16、CRC24A、CRC24B和CRC24C。有关这些多项式的更多信息,参见TS 38.212节5.1 [1].

为NR CRC生成器生成输入数据

选择5G NR标准中指定的CRC多项式。生成随机长度输入数据frameLen以及指示帧边界的控制信号。示例模型导入MATLAB®工作区变量dataInstartInendInvalidInsampleTime,simTime

CRCType =“CRC24A”%指定CRCType为'CRC6','CRC11','CRC16','CRC24A','CRC24B'或'CRC24C'frameLen = 100;msg = randi([0 1],frameLen,1);[dataIn,ctrlIn] = whdlFramesToSamples(msg);dataIn = timeseries(logical(dataIn'));starttin = timeseries(logical(ctrlIn(:,1)));endIn = timeseries(logical(ctrlIn(:,2)));validIn = timeseries(logical(ctrlIn(:,3)));sampleTime = 1;simTime = length(ctrlIn(:,3)) + 100;

运行NR CRC生成器模型

nrCRCGeneratorExampleInit.m脚本配置通用CRC生成器HDL优化块通过基于指定的CRC生成器多项式设置块的参数,CRCType.该脚本还为引用函数提供输入nrCRCEncode(5 g工具箱).NR CRC生成器子系统包含通用CRC生成器HDL优化块。运行模型将从工作空间导入输入信号变量,并返回crc编码的输出和指示帧边界的控制信号。模型导出变量encOut而且ctrlOut到MATLAB®工作空间。

[poly,crcPolynomial,initState,finalXORValue] = nrCRCGeneratorExampleInit(CRCType);open_system (“NRCRCGeneratorHDL”);encOut = sim(“NRCRCGeneratorHDL”);

验证NR CRC生成器结果

将NR CRC生成器子系统的流数据输出转换为帧。类的输出比较这些帧nrCRCEncode函数。

startIdx = find(encOut.startOut);endIdx = find(encOut.endOut);dataOut = encOut.dataOut;dataRef = nrCRCEncode(msg,poly);bitErr = sum(abs(dataRef - dataOut(startIdx:endIdx)));流(crc编码帧:行为和HDL模拟差异%d bits\n, bitErr);close_system (“NRCRCGeneratorHDL”);
crc编码帧:行为模拟和HDL模拟相差0位

参考文献

  1. 3gpp ts 38.212。NR;多路复用和信道编码。第三代伙伴计划;技术规范集团无线接入网

另请参阅

功能