一、循环冗余检验原理
-
在发送端
- 先把数据划分为组,假定每组 k 个比特,假定一个待传送的数据 M(k位),CRC运算就是在数据 M 的后面添加供差错检测用的 n 位冗余码,然后构成一个帧发送出去,一共发送 (k+n) 位。
- 在所要发送的数据后面增加 n 位的冗余码,虽然增大了数据传输的开销,但却可以进行差错检测。当传输可能出现差错时,付出这种代价往往是很值得的。
-
在接收端
- 把接收到的数据以帧为单位进行 CRC 检验:把收到的每一个帧都除以相同的除数,然后检查得到的余数R。
- 如果传输过程中无差错,那么经过 CRC 检验后得出的余数 R 肯定是 0;如果出现差错,则余数不为 0。
二、例子
- 题目:已知信息码元序列为 M = 1101011011,除数 P = 10011,计算 CRC 校验码。
- 解析:
- 发送端:
- 由 M位数 得 k=10 ,由 P位数 得 n=4;
- 给 M 后面 补 n 个 0,作为被除数:11010110110000;
- 进行运算,计算出 n位余数=1110;
- 将 余数加到 M 后面,就组成了 CRC校验码:11010110111110;
- 接收端:
- 将 CRC校验码 作为被除数:11010110111110,P 仍为除数;
- 进行运算,计算出 余数;
- 为0,则说明无差错;
- 发送端: