《CRC码生成与校验电路的设计》由会员分享,可在线阅读,更多相关《CRC码生成与校验电路的设计(23页珍藏版)》请在金锄头文库上搜索。
1、 沈阳航空航天大学课课 程程 设设 计计 报报 告告课程设计名称:计算机组成原理课程设计计算机组成原理课程设计课程设计题目:CRC 码生成与校验电路的设计码生成与校验电路的设计 院(系):专 业:班 级:学 号:姓 名:指导教师:完成日期:2016年1月15日沈阳航空工业学院课程设计报告 -目目 录录第第 1 章章 总体设计方案总体设计方案.11.1设计原理.11.2设计思路.41.3 设计环境.5第第 2 章章 详细设计方案详细设计方案.82.1 顶层方案图的设计与实现 .82.1.1 创建顶层图形设计文件.82.1.2 器件的选择与引脚锁定.92.1.3 编译、综合、适配.112.2 功能
2、模块的设计与实现 .112.2.1 模 2 除法器的设计与实现.112.2.2 移位寄存器的设计与实现.132.3 仿真调试 .15第第 3 章章 编程下载与硬件测试编程下载与硬件测试.173.1 编程下载 .173.2 硬件测试及结果分析 .17参考文献参考文献.19附附 录(电路原理图)录(电路原理图).20沈阳航空工业学院课程设计报告 第 1 章 总体设计方案-0-第 1 章 总体设计方案1.1设计原理设计原理基本概念基本概念:循环冗余校验码(cyclic redundancy check,CRC),通常简称为循环码或 CRC 码。是数据通信领域中最常用的一种查错校验码,其特征是信息字段
3、和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。而二进制信息沿一条信号线逐位在设备之间传送称为串行传送,CRC 码常用于串行传送过程中的检错与纠错。基本原理:基本原理:在 k 位信息码后再拼接 r 位的校验码,整个编码长度为 n 位,因此,这种编码也叫(n,k)码。对于一个给定的(n,k)码,可以证明存在一个最高次幂为 n-k=r 的多项式 G(x)。根据 G(x)可以生成 k 位信息的校验码,而 G(x)叫做这个 CRC 码的生成多项式。 校验码的具体生成过
4、程为:假设要发送的信息用多项式 C(X)表示,将 C(x)左移 r 位(可表示成 C(x)*r),这样 C(x)的右边就会空出 r 位,这就是校验码的位置。用 C(x)*2r 除以生成多项式 G(x)得到的余数就是校验码。CRC 编码格式:编码格式:如图 1.1 所示,是在 k 位有效数据之后添加 r 位校验码,形成总长度为 n 的 CRC 码,简写作 C(n,k)码。CRC 编码的关键技术在于如何从 k位信息简便的得到 r 位校验码,并根据总长度为 n 的 CRC 码进行纠错。图图 1.1 CRC 编码格式编码格式沈阳航空工业学院课程设计报告 第 1 章 总体设计方案-1-对应关系对应关系:
5、任意一个由二进制位串组成的代码都可以和一个系数仅为0和1取的多项式一一对应。多项式和二进制数有直接对应关系:X 的最高幂次对应二进制数的最高位,以下各位对应多项式的各幂次,有此幂次项对应 1,无此幂次项对应 0。可以看出:X 的最高幂次为 R,转换成对应的二进制数有 R+1 位。多项式包括生成多项式 G(X)和信息多项式 C(X)。如生成多项式为 G(X)=X4+X3+X+1, 可转换为二进制数码 11011。而发送信息位 101111,可转换为数据多项式为 C(X)=X5+X3+X2+X+1。CRC 码的生成码的生成:CRC 码的生成可以分为以下几个步骤:1、将 X 的最高次幂为 r 的生成
6、多项式 G(X)转换成对应的 r+1 位二进制数。2、将信息码左移 r 位,相当于对应的信息多项式 C(X)*2r。3、用生成多项式(二进制数)对信息码做除,得到 r 位的余数(注意:这里的二进制做除法得到的余数其实是模 2 除法得到的余数,并不等于其对应十进制数做除法得到的余数。)。4、将余数拼到信息码左移后空出的位置,得到完整的 CRC 码。CRC 码的校验:码的校验:将收到的循环效验码用约定的生成多项式 G(x)去除,如果码字无误则余数应为 0,如果某一位出错,则余数不为 0,不同位数出错余数不同。更换不同的待测码字可以证明:余数与出错位的对应关系是不变的,只与码制和生成多项式有关,对于
7、其他码制或选用其他生成多项式,出错模式将发生变化。 如果循环码有一位出错,用 G(x)作模 2 除将得到一个不为 0 的余数。可通过异或门将它纠正后在下一次移位时送回 A7 继续移满一个循环,就得到一个纠正后的码字。沈阳航空工业学院课程设计报告 第 1 章 总体设计方案-2-假设被校验的数据是一个 k 位的二进制代码,0121.DDDDDkk将它表示为一个(k-1)阶的多项式(1-1)01 12 21 1.)(DxDxDxDxMk kk k 多项式(1-1)中的系数 D 的取值为 0 或 1,与被校验的数据 M 一一对应;式中的 x 是一个伪变量,用指明各位的位置。ix设校验码 P 长度为 r
8、,将被校验数据 D 左移 r 位后的结果为876位rkkDDDD00.00.0121将 D 左移 r 位的目的是给 D 右边添加 r 个 0,形成(k+r)位长度二进制代码,其多项式形式为 M(x)。如图 1.1 所示,CRC 码由 k 位数据 D 和 r 位校验码rxP 组成,求校验码 P 的多项式 R(X)的方法如下:(1-2)()()()()( xGxRxQxGxxMr Q(x)是商,R(x)是余数,R(x)所对应的二进制代码是校验码 P。可以证明存在一个最高次幂为 n- k=r 的多项式 G(x) ,即式(1-2)中 G(x),称为生成多项式。 由式(1-2)可以推导出(1-3)()(
9、)()(xMxGxRxxMr 由式(1-3)可知,CRC 码可被 G(x)整除,余数必然为 0.。根据这一特性,接收方将收到的 CRC 码被 G(x)除,若余数为 0,则表明传送过程中没有错误发生,若出现一位错,根据余数与出错位一一对应的关系,可利用余数对错误码进行定位。因此,接收方可根据表 1.1 发现并纠正 1 位错。沈阳航空工业学院课程设计报告 第 1 章 总体设计方案-3-表表 1.1 循环校验码的出错模式循环校验码的出错模式1.2设计思路设计思路根据题目要求,信息位 k=4,r=n-k=3 可知本次实验主要是完成(7,4)码的生成和校验。CRC 码生成电路的核心主要由移位寄存器和模
10、2 除法器构成,信息位以串行的方式输入。依据 CRC 码生成与校验原理可知,生成电路中由输入端串行输入的数据 D 左移 3 位后,与生成多项式 G(x)做模 2 除法,并将得到的 3 位余数与 4 位信息码拼接成 7 位 CRC 码。校验电路原理同生成电路,主要由移位寄存器、模 2 除法器和 3.8 译码器构成。将待检测的 CRC 码串行输入到模 2 除法器和移位寄存器中去,求得 3 位余数,利用 3.8 译码器译码将三位余数译码,通过比较可以找出出错位,并将译码结果与移位寄存器的输出结果进行异或,便得到纠正后的正确结果。Q6Q5Q4Q3Q2Q1Q0余数出错位正确1100010000无1100011001Q01100000010Q11100110100Q21101010011Q31110010110Q41000010111Q5错误010001