文档gydF4y2Ba

comm.CRCDetector系统对象gydF4y2Ba

检测使用CRC错误输入数据gydF4y2Ba

描述gydF4y2Ba

的gydF4y2BaCRCDetectorgydF4y2Ba对象为其整个输入帧计算校验和。gydF4y2Ba

使用循环冗余检测输入数据中的错误代码:gydF4y2Ba

  1. 定义和设置您的CRC探测器对象。看到gydF4y2Ba建设gydF4y2Ba。gydF4y2Ba

  2. 调用gydF4y2Ba一步gydF4y2Ba检测错误的属性gydF4y2Bacomm.CRCDetectorgydF4y2Ba。的行为gydF4y2Ba一步gydF4y2Ba是特定于每个对象在工具箱。gydF4y2Ba

请注意gydF4y2Ba

从R2016b开始,而不是使用gydF4y2Ba一步gydF4y2Ba定义的方法来执行操作系统对象™,您可以调用对象的参数,就好像它是一个函数。例如,gydF4y2Bay =步骤(obj, x)gydF4y2Ba和gydF4y2Bay = obj (x)gydF4y2Ba执行相同操作。gydF4y2Ba

建设gydF4y2Ba

H = comm.CRCDetectorgydF4y2Ba创建一个循环冗余码(CRC)探测器系统对象,gydF4y2BaHgydF4y2Ba。这个对象中检测到错误输入数据根据指定的发电机多项式。gydF4y2Ba

H = comm.CRCDetector (gydF4y2Ba的名字gydF4y2Ba,gydF4y2Ba价值gydF4y2Ba)gydF4y2Ba创建一个CRC探测器对象,gydF4y2BaHgydF4y2Ba,每个指定的属性设置为指定的值。您可以指定额外的名称-值对参数在任何顺序(gydF4y2BaName1gydF4y2Ba,gydF4y2BaValue1gydF4y2Ba、……gydF4y2Ba以gydF4y2Ba,gydF4y2Ba家gydF4y2Ba)。gydF4y2Ba

H = comm.CRCDetector(聚,gydF4y2Ba的名字gydF4y2Ba,gydF4y2Ba价值gydF4y2Ba)gydF4y2Ba创建一个CRC探测器对象,gydF4y2BaHgydF4y2Ba。这个对象的gydF4y2Ba多项式gydF4y2Ba属性设置为gydF4y2Ba聚gydF4y2Ba,另一个指定的属性设置为指定的值。gydF4y2Ba

属性gydF4y2Ba

多项式gydF4y2Ba

发电机多项式gydF4y2Ba

指定生成多项式作为二进制或整数行向量,系数按照降序排列的权力,或作为一个gydF4y2Ba多项式特征向量gydF4y2Ba。默认值是gydF4y2Ba“16 + z z ^ ^ 12 + z ^ 5 + 1gydF4y2Ba。如果将此属性设置为一个二进制向量,它的长度必须等于多项式加的程度gydF4y2Ba1gydF4y2Ba。如果将此属性设置为一个整数向量,它的值必须包含非零的权力的多项式。例如,gydF4y2Ba[1 0 0 0 0 0 1 0 1]gydF4y2Ba和gydF4y2Ba(8 2 0)gydF4y2Ba表示相同的多项式,gydF4y2Ba ggydF4y2Ba (gydF4y2Ba zgydF4y2Ba )gydF4y2Ba =gydF4y2Ba zgydF4y2Ba 8gydF4y2Ba +gydF4y2Ba zgydF4y2Ba 2gydF4y2Ba +gydF4y2Ba 1gydF4y2Ba 。下表列出了常用发电机多项式。gydF4y2Ba

CRC的方法gydF4y2Ba 发电机多项式gydF4y2Ba
CRC-32gydF4y2Ba ' z ^ 32 + z ^ 26 + 23 + z z ^ ^ 22 + 16 + z z ^ ^ 12 + z ^ 11 + z z ^ ^ 10 + 8 + z ^ 7 + z z ^ ^ 5 + 4 + z ^ 2 + z + 1”gydF4y2Ba
CRC-24gydF4y2Ba ' z z ^ ^ 24 + 23 + 14 + z z ^ ^ 12 + z ^ 8 + 1gydF4y2Ba
CRC-16gydF4y2Ba “16 + z z ^ ^ 15 + z ^ 2 + 1的gydF4y2Ba
逆转CRC-16gydF4y2Ba “16 + z z ^ ^ 14 + z + 1”gydF4y2Ba
CRC-8gydF4y2Ba “z z ^ ^ 8 + 7 + z ^ 6 + z z ^ ^ 4 + 2 + 1”gydF4y2Ba
CRC-4gydF4y2Ba ' z z ^ ^ 4 + 3 + z ^ 2 + z + 1”gydF4y2Ba

InitialConditionsgydF4y2Ba

移位寄存器的初始条件gydF4y2Ba

移位寄存器的初始条件指定为一个二进制,单精度的数据类型或双标量或矢量。默认值是gydF4y2Ba0gydF4y2Ba。向量长度的学位是发电机多项式中指定gydF4y2Ba多项式gydF4y2Ba财产。当你初始条件指定为一个标量,对象扩大价值一个行向量的长度等于发电机多项式的程度。gydF4y2Ba

DirectMethodgydF4y2Ba

直接法(逻辑)gydF4y2Ba

当你设定这个属性gydF4y2Ba真正的gydF4y2Ba,对象使用CRC校验和计算的直接算法。当你设定这个属性gydF4y2Ba假gydF4y2Ba,对象使用间接的CRC校验和算法计算。此属性的默认值gydF4y2Ba假gydF4y2Ba。gydF4y2Ba

指的是通信系统工具箱- >系统设计- >错误检测和校正- > - > CRC循环冗余校验编码算法部分,了解更多关于直接和非直接算法。gydF4y2Ba

ReflectInputBytesgydF4y2Ba

反映输入字节gydF4y2Ba

设置该属性为true翻转之前bytewise基础上输入数据进入数据输入移位寄存器。当你设定这个属性gydF4y2Ba真正的gydF4y2Ba,输入帧长度除以gydF4y2BaChecksumsPerFramegydF4y2Ba属性值-发电机多项式的程度,你指定的gydF4y2Ba多项式gydF4y2Ba财产,必须是一个整数的倍数gydF4y2Ba8gydF4y2Ba。此属性的默认值gydF4y2Ba假gydF4y2Ba。gydF4y2Ba

ReflectChecksumsgydF4y2Ba

反映最终XOR前校验和gydF4y2Ba

当你设定这个属性gydF4y2Ba真正的gydF4y2Ba,对象翻转后的CRC校验和围绕其中心输入数据是完全通过移位寄存器。此属性的默认值gydF4y2Ba假gydF4y2Ba。gydF4y2Ba

FinalXORgydF4y2Ba

最终XOR值gydF4y2Ba

指定的CRC校验和值是作为二进制xor标量或矢量。对象适用于XOR运算前附加输入数据。向量长度的学位是发电机多项式中指定gydF4y2Ba多项式gydF4y2Ba财产。当你最后的异或值指定为一个标量,对象扩展值一个行向量的长度等于发电机多项式的程度。此属性的默认值gydF4y2Ba0gydF4y2Ba,相当于没有异或操作。gydF4y2Ba

ChecksumsPerFramegydF4y2Ba

每个输入帧的校验和数量gydF4y2Ba

指定可用校验和的数量在每一个输入框。默认值是gydF4y2Ba1gydF4y2Ba。如果输入框的长度gydF4y2Ba一步gydF4y2Ba方法=gydF4y2BaNgydF4y2Ba和发电机多项式的程度=gydF4y2BaPgydF4y2Ba,然后gydF4y2BaNgydF4y2Ba −gydF4y2Ba CheckSumsPerFramegydF4y2Ba ×gydF4y2Ba PgydF4y2Ba必须整除gydF4y2BaChecksumsPerFramegydF4y2Ba。对象设置消息字的大小gydF4y2BaNgydF4y2Ba −gydF4y2Ba CheckSumsPerFramegydF4y2Ba ×gydF4y2Ba PgydF4y2Ba校验码已被移除后,从输入帧。这个消息词对应的第一个输出gydF4y2Ba一步gydF4y2Ba方法。的gydF4y2Ba一步gydF4y2Ba方法一个矢量,然后输出长度等于该属性的值指定。gydF4y2Ba

例如,您可以设置输入码字大小gydF4y2Ba16gydF4y2Ba和发电机多项式的程度gydF4y2Ba3gydF4y2Ba。然后,您可以设置gydF4y2BaInitialConditionsgydF4y2Ba财产gydF4y2Ba0gydF4y2Ba和这个属性gydF4y2Ba2gydF4y2Ba当你这样做时,系统对象:gydF4y2Ba

  1. 计算两个校验和的大小gydF4y2Ba3gydF4y2Ba。一个校验和来自上半年接收的码字,和其他的下半年收到码字。gydF4y2Ba

  2. 连接消息的两半字作为一个向量的长度gydF4y2Ba10gydF4y2Ba。然后,输出这个向量通过第一步的输出方法。gydF4y2Ba

  3. 输出一个长度gydF4y2Ba2gydF4y2Ba通过第二个输出的二进制向量gydF4y2Ba一步gydF4y2Ba方法。gydF4y2Ba

向量的值取决于计算的校验和是零。一个gydF4y2Ba1gydF4y2Ba在gydF4y2Ba我gydF4y2Bath元素的向量表示一个错误发生在传输相应的gydF4y2Ba我gydF4y2Bath码字的输入。gydF4y2Ba

方法gydF4y2Ba

重置gydF4y2Ba 重置CRC探测器的状态对象gydF4y2Ba
一步gydF4y2Ba 检测使用CRC错误输入数据gydF4y2Ba
常见的系统对象gydF4y2Ba
释放gydF4y2Ba

允许系统对象属性值的变化gydF4y2Ba

例子gydF4y2Ba

全部展开gydF4y2Ba

二进制数据通过CRC生成器,介绍有点误差,并使用CRC探测器检测到错误。gydF4y2Ba

创建一个随机二进制向量。gydF4y2Ba

味精=兰迪([0 1]12 1);gydF4y2Ba

编码消息的话使用CRC生成器gydF4y2BaChecksumsPerFramegydF4y2Ba属性设置为gydF4y2Ba2gydF4y2Ba。这将传入消息分成两个相等的子帧长度。gydF4y2Ba

创= comm.CRCGenerator ((1 0 0 1),gydF4y2Ba“ChecksumsPerFrame”gydF4y2Ba2);码字=步骤(gen、味精);gydF4y2Ba

解码信息,确认没有错误的子帧。gydF4y2Ba

检测= comm.CRCDetector ((1 0 0 1),gydF4y2Ba“ChecksumsPerFrame”gydF4y2Ba2);[~,犯错]=步骤(探测、码字)gydF4y2Ba
呃=gydF4y2Ba2×1gydF4y2Ba0 0gydF4y2Ba

引入一个错误在第二子帧通过反相副框架2的最后一个元素。通过破坏通过CRC码字检测器,并验证第二子帧错误检测。gydF4y2Ba

不码字(结束)=(码字(结束));[~,犯错]=步骤(探测、码字)gydF4y2Ba
呃=gydF4y2Ba2×1gydF4y2Ba0 1gydF4y2Ba

使用CRC编码在一个嘈杂的BPSK信号检测帧错误。gydF4y2Ba

创建一个CRC发生器和探测器对使用标准CRC-4多项式,gydF4y2Ba。gydF4y2Ba

crcGen = comm.CRCGenerator (gydF4y2Ba“z4 + z3 + z2 + z + 1”gydF4y2Ba);crcDet = comm.CRCDetector (gydF4y2Ba“z4 + z3 + z2 + z + 1”gydF4y2Ba);gydF4y2Ba

产生12位二进制数据帧和附加CRC位。基于多项式的次数,4位是附加到每一帧。应用BPSK调制和信号通过一个AWGN信道。解调,并使用CRC探测器来确定帧错误。gydF4y2Ba

numFrames = 20;frmError = 0 (numFrames, 1);gydF4y2Ba为gydF4y2Bak = 1: numFrames data =兰迪([0 1]12 1);gydF4y2Ba%生成二进制数据gydF4y2BaencData =步骤(crcGen、数据);gydF4y2Ba%附加CRC位gydF4y2BamodData = pskmod (encData 2);gydF4y2Ba% BPSK调制gydF4y2BarxSig = awgn (modData, 5);gydF4y2Ba% AWGN信道信噪比= 5分贝gydF4y2BademodData = pskdemod (rxSig 2);gydF4y2Ba% BPSK解调gydF4y2Ba(~ frmError (k)] =一步(crcDet demodData);gydF4y2Ba%检测CRC错误gydF4y2Ba结束gydF4y2Ba

确定检测到一些错误的帧。gydF4y2Ba

找到(frmError)gydF4y2Ba
ans = 6gydF4y2Ba

算法gydF4y2Ba

这个对象实现算法、输入和输出的描述gydF4y2BaCRC-N综合症探测器gydF4y2Ba块引用页面。对象属性对应块的参数。gydF4y2Ba

扩展功能gydF4y2Ba

另请参阅gydF4y2Ba

这个主题有帮助吗?gydF4y2Ba