中南大学计算机网络实验报告 第 1 页 共 10 页 一、题目 编写一个循环冗余码的生成和验证程序,并实现停等式 ARQ,编程实现如何生成 CRC 码,传输,加入噪声, 检错反馈,检测验证,信息重发的过程 二、概要设计 CRC 校验码的编码方法是用待发送的二进制数据 t(x )除以生成多项式 g(x ),将最后的余数作为 CRC 校验码
其实现步骤如下: 设待发送的数据块是 m 位的二进制多项式 t(x ),生成多项式为 r 阶的 g(x )
在数据块的末尾添加 r 个 0,数据块的长度增加到 m+r 位,对应的二进制多项式为
用生成多项式 g(x )去除 ,求得余数为阶数为 r-1 的二进制多项式 y(x )
此二进制多项式 y (x )就是 t(x )经过生成多项式 g(x )编码的 CRC 校验码
用 以模 2 的方式减去 y (x ),得到二进制多项式
就是包含了 CRC 校验码的待发送字符串
CRC 编码实际上是将代发送的 m 位二进制多项式 t(x )转换成了可以被 g(x )除尽的 m+r 位二进制多项式,所以解码时可以用接受到的数据去除 g(x ),如果余数位零,则表示传输过程没有错误;如果余数不为零,则在传输过程中肯定存在错误
CRC 码可以看做是由 t(x )和 CRC 校验码的组合,所以解码时将接收到的二进制数据去掉尾部的 r 位数据,得到的就是原始数据
三、详细设计 如果生成码是 10011 编码: //reg 是一个 5 bits 的寄存器 把 reg 中的值置 0
把原始的数据后添加 r 个 0
While (数据未处理完) Begin If (reg 首位是 1) reg = reg XOR 0011
把 reg 中的值左移一位,读入一个新的数据并置于 register 的 0 bit 的位置
End reg 的后四位就是我