暢談無線通信系統物理層之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'

各個圖片顯示如下:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章