使用通用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®工作区变量dataIn
,startIn
,endIn
,validIn
,sampleTime
,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位
参考文献
3gpp ts 38.212。NR;多路复用和信道编码。第三代伙伴计划;技术规范集团无线接入网.
另请参阅
块
功能
nrCRCEncode
(5 g工具箱)