CRC循环冗余校验

CRC循环冗余校验

简介

循环冗余校验码(cyclic redundancy check)简称CRC(循环码),是一种能力相当强的检错、纠错码,并且实现编码和检码的电路比较简单,常用于串行传送(二进制位串沿一条信号线逐位传送)的辅助存储器与主机的数据通信和计算机网络中。在数据链路层传送的帧中,广泛使用了CRC技术。

发送数据

在发送端,先把数据划分为两个部分:传输信号码和冗余码。

假定信息数据码为:101001(k=6个比特数据)

传输开始时,数据链路层会随机产生“生成多项式”,例如:R(n):=x^3 +x^2+1(n=4位),其对应的生成码为1101。将信息码补上3个(n-1)个零,作为被除数(101001000),将生成码作为除数(1101),采用模2减法(等效于异或)求得余数R=1,补齐为3位(n-1)码,得到001,即可得到冗余码。

image

然后信息码后面接上冗余码,便是需要发送的信息码(101001 001),一共k+n-1位。

接收数据

接收端,也会做一个模2减法操作,被除数为接收到的信息码(101001001),除数为(1101)。

(1)如果得到余数R=0,数据正确,接收数据。(如:收到101001【冗余码丢弃】)

(2)如果得到余数R!=0,数据错误,丢弃数据。

接收到的数据是去掉冗余码后的k位信息原码。

posted @ 2021-05-11 18:01  水鸽  阅读(529)  评论(0编辑  收藏  举报