CRC差错检校

循环冗余检验(Cycle  Redundancy Check):是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选

 下面我们通过一个简单的例子来说明循环冗余检验的原理

   在发送端,我们把数据划分为组,每个组K个比特, 现假定待传送的数据M=101001k=6)。CRC运算就是在数据M的后面添加供差错检测的n为冗余码,然后构成一个帧发出去,一共发(k+n)位。在所要发送的数据后面增加n位冗余码,虽然增大了数据传输的开销,但却可以进行差错检验,当传输可能出现差错时,付出这种代价往往是值得的。

n位冗余码可以用一下方法得出,用二进制的模2相当于异或运算)运算进行2nM的运算,这相当于在M的后面添加n0,得到的(K+n)数除以双方事先约定的长度为n+1)的除数P,得到商是Q而余数是Rn位,比P少一位)。下图的例子中,M=101001k=6),假定除数 P=1101n=3),经摸2除法运算后:商Q = 110101(商没什么用处),而余数R=001,这个余数R就作为冗余码拼接在数据M的后面发送出去,这种为了进行检错而添加的冗余码常称为帧检验序列FCSFrame Check Sequence)。因此加上FCS后发送的帧是101001001共有(k+n)位。


循环冗余检验CRC和帧检验序列FCS并不是同一个概念。CRC是一种检错方法,而FCS是添加在数据后面的冗余码,在检错方法上可以选用CRC,但也可以不用CRC

在接收端把收到的数据以帧为单位进行CRC检验;把收到的每一个帧都除以同样的除数P(模2运算),然后检查得到余数R

如果传输过程中无差错,那么CRC检验后得出的余数R肯定为0

如果出现误码,那么余数R仍等于0的概率是非常非常小的。

总之,在接收端对收到的每一帧经过CRC检验后,有以下两种情况:

1.R=0,则判断这个帧没有差错,就接受。

2.R不等于0,则判断这个帧有差错(但是无法确定究竟是哪一位或哪几位出现了差错),就丢弃。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值