畅谈无线通信系统物理层之CRC(四)计算方法的检验

以MATLAB的CRC函数为标准,进行校验的脚本如下:

clc;
clear;
crc_Poly = [1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1]; %%%%  x^16+x^15+x^2+1
crc_g = crc.generator('Polynomial',crc_Poly);  %%%
crc_g.InitialState = zeros(1,16);  %%% InitialState 
crc_g.FinalXOR     = zeros(1,16);  %%%'FinalXOR
crc_g.ReflectInput = false;        %%%%    高位在前
crc_g.ReflectRemainder =false;     %%%%   高位在前

M = 32; 
crc_din_hex = "ABCD0001";
crc_din_bin = bin2dec(dec2bin(hex2dec(crc_din_hex),M).');
 
crc_dout_mat = generate(crc_g,crc_din_bin); 
crc_dout_direct = CRC_direct(crc_Poly,crc_din_bin,crc_g.InitialState,crc_g.FinalXOR);
figure(1);
plot(crc_dout_direct - crc_dout_mat);
crc_dout_direct_LFSR = CRC_direct_LFSR(crc_Poly,crc_din_bin,crc_g.InitialState,crc_g.FinalXOR);
figure(2);
plot(crc_dout_direct_LFSR - crc_dout_mat);
crc_dout_direct_LFSR_Hex = dec2hex(sum(crc_dout_direct_LFSR.'.*2.^(M+15:-1:0)),6)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Paraller
crc_dout_Paraller5 = CRC_Paraller16_16(crc_Poly,crc_din_bin,crc_g.InitialState,crc_g.FinalXOR,1);
figure(5);
plot(crc_dout_Paraller5 - crc_dout_mat);
crc_dout_Paraller6 = CRC_Paraller16_8(crc_Poly,crc_din_bin,crc_g.InitialState,crc_g.FinalXOR,1);
figure(6);
plot(crc_dout_Paraller6 - crc_dout_mat);

运行结果:

crc_dout_direct_LFSR_Hex =

    'ABCD000113D2'

畅谈无线通信系统物理层之CRC(四)计算方法的检验_第1张图片

各个图片显示如下:

畅谈无线通信系统物理层之CRC(四)计算方法的检验_第2张图片

 

你可能感兴趣的:(无线通信)