CRC码生成与校验电路设计.docx
- 文档编号:25647540
- 上传时间:2023-06-11
- 格式:DOCX
- 页数:22
- 大小:645KB
CRC码生成与校验电路设计.docx
《CRC码生成与校验电路设计.docx》由会员分享,可在线阅读,更多相关《CRC码生成与校验电路设计.docx(22页珍藏版)》请在冰豆网上搜索。
CRC码生成与校验电路设计
沈阳航空航天大学
课程设计报告
课程设计名称:
计算机组成原理课程设计
课程设计题目:
CRC码生成与校验电路的设计
院(系):
专业:
班级:
学号:
姓名:
指导教师:
完成日期:
2016年1月15日
第1章总体设计方案
1.1设计原理
基本概念:
循环冗余校验码(cyclicredundancycheck,CRC),通常简称为循环码或CRC码。
是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。
循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。
而二进制信息沿一条信号线逐位在设备之间传送称为串行传送,CRC码常用于串行传送过程中的检错与纠错。
基本原理:
在k位信息码后再拼接r位的校验码,整个编码长度为n位,因此,这种编码也叫(n,k)码。
对于一个给定的(n,k)码,可以证明存在一个最高次幂为n-k=r的多项式G(x)。
根据G(x)可以生成k位信息的校验码,而G(x)叫做这个CRC码的生成多项式。
校验码的具体生成过程为:
假设要发送的信息用多项式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编码格式
对应关系:
任意一个由二进制位串组成的代码都可以和一个系数仅为‘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的生成多项式G(X)转换成对应的r+1位二进制数。
2、将信息码左移r位,相当于对应的信息多项式C(X)*2r。
3、用生成多项式(二进制数)对信息码做除,得到r位的余数(注意:
这里的二进制做除法得到的余数其实是模2除法得到的余数,并不等于其对应十进制数做除法得到的余数。
)。
4、将余数拼到信息码左移后空出的位置,得到完整的CRC码。
CRC码的校验:
将收到的循环效验码用约定的生成多项式G(x)去除,如果码字无误则余数应为0,如果某一位出错,则余数不为0,不同位数出错余数不同。
更换不同的待测码字可以证明:
余数与出错位的对应关系是不变的,只与码制和生成多项式有关,对于其他码制或选用其他生成多项式,出错模式将发生变化。
如果循环码有一位出错,用G(x)作模2除将得到一个不为0的余数。
可通过异或门将它纠正后在下一次移位时送回A7继续移满一个循环,就得到一个纠正后的码字。
假设被校验的数据
是一个k位的二进制代码,将它表示为一个(k-1)阶的多项式
(1-1)
多项式(1-1)中的系数D的取值为0或1,与被校验的数据M一一对应;式中的x是一个伪变量,用
指明各位的位置。
设校验码P长度为r,将被校验数据D左移r位后的结果为
将D左移r位的目的是给D右边添加r个0,形成(k+r)位长度二进制代码,其多项式形式为M(x)×
。
如图1.1所示,CRC码由k位数据D和r位校验码P组成,求校验码P的多项式R(X)的方法如下:
(1-2)
Q(x)是商,R(x)是余数,R(x)所对应的二进制代码是校验码P。
可以证明存在一个最高次幂为n-k=r的多项式G(x),即式(1-2)中G(x),称为生成多项式。
由式(1-2)可以推导出
(1-3)
由式(1-3)可知,CRC码可被G(x)整除,余数必然为0.。
根据这一特性,接收方将收到的CRC码被G(x)除,若余数为0,则表明传送过程中没有错误发生,若出现一位错,根据余数与出错位一一对应的关系,可利用余数对错误码进行定位。
因此,接收方可根据表1.1发现并纠正1位错。
Q6
Q5
Q4
Q3
Q2
Q1
Q0
余数
出错位
正确
1
1
0
0
0
1
0
0
0
0
无
错误
1
1
0
0
0
1
1
0
0
1
Q0
1
1
0
0
0
0
0
0
1
0
Q1
1
1
0
0
1
1
0
1
0
0
Q2
1
1
0
1
0
1
0
0
1
1
Q3
1
1
1
0
0
1
0
1
1
0
Q4
1
0
0
0
0
1
0
1
1
1
Q5
0
1
0
0
0
1
0
1
0
1
Q6
表1.1循环校验码的出错模式
1.2设计思路
根据题目要求,信息位k=4,r=n-k=3可知本次实验主要是完成(7,4)码的生成和校验。
CRC码生成电路的核心主要由移位寄存器和模2除法器构成,信息位以串行的方式输入。
依据CRC码生成与校验原理可知,生成电路中由输入端串行输入的数据D左移3位后,与生成多项式G(x)做模2除法,并将得到的3位余数与4位信息码拼接成7位CRC码。
校验电路原理同生成电路,主要由移位寄存器、模2除法器和3.8译码器构成。
将待检测的CRC码串行输入到模2除法器和移位寄存器中去,求得3位余数,利用3.8译码器译码将三位余数译码,通过比较可以找出出错位,并将译码结果与移位寄存器的输出结果进行异或,便得到纠正后的正确结果。
CRC码生成与校验电路主要包括两个部分:
1.生成电路。
由移位寄存器接收数据并进行移位,生成多项式由开关直接送入,输入数据与生成多项式通过模2除法器最终生成CRC码。
2.校验电路。
原理类似生成电路,校验电路中增加了3-8译码器。
3-8译码器与异或门共同完成对信息码的的校验与纠正,最后输出校验后的信息码。
本设计方案采用的元件有模2除法器模块,移位寄存器模块,3-8译码器,与门,异或门。
其中移位寄存器由7个D触发器构成;模2除法器由若干两输入与门,若干两输入异或门和D触发器构成。
1.3设计环境
·硬件环境:
伟福COP2000型计算机组成原理实验仪、XCV200实验板、微机。
·EDA环境:
Xilinxfoundationf3.1设计软件
•COP2000集成调试软件
Xilinxfoundationf3.1设计软件
Xilinxfoundationf3.1是Xilinx公司的可编程期间开发工具,该平台(如图1.2所示)功能强大,主要用于百万逻辑门设计。
该系统由设计入口工具、设计实现工具、设计验证工具三大部分组成。
图1.2Xilinxfoundationf3.1设计平台
•COP2000集成调试软件
COP2000集成开发环境是为COP2000实验仪与PC机相连进行高层次实验的配套软件,它通过实验仪的串行接口和PC机的串行接口相连,提供汇编、反汇编、编辑、修改指令、文件传送、调试FPGA实验等功能,该软件在Windows下运行。
COP2000集成开发环境界面如图1.3所示。
图1.3COP2000计算机组成原理集成调试软件
第2章详细设计方案
2.1顶层方案图的设计与实现
顶层方案图实现CRC码的生成与校验的逻辑功能,采用原理图设计输入方式完成,电路实现基于XCV200可编程逻辑芯片。
在完成原理图的功能设计后,把输入/输出信号安排到XCV200指定的引脚上去,实现芯片的引脚锁定。
2.1.1创建顶层图形设计文件
顶层图形文件的设计实体主要由CRC码生成电路与CRC码校验电路组成。
生成电路主要由移位寄存器元件-U21、模2除法器元件-U32构成。
如图2.1所示。
图2.1CRC码生成电路图
校验电路主要由移位寄存器元件-U22、模2除法器-U33,3-8译码器,异或门集成模块-U31构成。
如图2.2所示。
图2.2CRC码校验电路图
2.1.2器件的选择与引脚锁定
(1)器件的选择
由于硬件设计环境是基于伟福COP2000型计算机组成原理实验仪和XCV200实验板,故采用的目标芯片为XlinxXCV200软件中可用芯片。
(2)引脚锁定
把顶层图形文件中的输入/输出信号安排到XlinxXCV200芯片指定的引脚上去,实现芯片的引脚锁定,各信号及XlinxXCV200芯片引脚对应关系如表2.1所示。
图形文件中的输入/输出信号
XCV200芯片引脚
D
87
A
73
CLK
213
VCC
47
G3
100
G2
101
G1
102
G0
103
Q6
152
Q5
178
Q4
184
Q3
185
Q2
203
Q1
111
Q0
110
L6
93
L5
99
L4
107
L3
108
L2
109
L1
124
L0
125
表
表2.1信号和芯片引脚对应关系
2.1.3编译、综合、适配
利用Xilinxfoundationf3.1的原理图编辑器对顶层图形文件进行编译,并最终生成网络表文件,利用设计实现工具经综合、优化、适配,生成可供时序仿真的文件和器件下载编程文件。
2.2功能模块的设计与实现
CRC码的生成与校验电路是基于移位寄存器,模2除法器,3-8译码器及异或门集合电路实现的。
2.2.1模2除法器的设计与实现
模2加定义:
即按位加,可用异或逻辑实现。
模2加同模2减结果相同,即0±1=1,1±0=1,0±0=0,1±1=0。
模2除定义:
按照模2减求得部分余数。
每求一位商应将部分余数减少一位。
上商原则是:
当部分余数的位数多于除数时,商1,否则,商0。
该模块由D触发器、与门和异或门构成。
对(7,4)校验码,可采用图2.3所示电路,产生3位的余数Q2、Q1、Q0。
图中的模2减用异或门实现,左移一位由移位寄存器实现;用异或门的输出控制左边一位寄存器的D输入端,可同时实现模2减和左移。
用最左一位D触发器的取值控制是否做模2减,当其为1时,减去的数就是生成多项式G(x),为0时减去的就是0000。
这里,被除数D是逐位串行送到移位寄存器的,且由CP脉冲同步。
其设计过程如下:
(1)创建控制器设计原理图。
模2除法器原理图如图2.3所示。
图2.3模2除法器的原理框图
(2)创建元件图形符号
为能在图形编辑器(原理图设计输入方式)中调用MOD2芯片,需要为MOD2模块创建一个元件图形符号,可利用Xilinxfoundationf3.1编译器中的如下步骤实现:
Tools=>SymbolWizard=>下一步。
CP、D是输入信号,Q2、Q1、Q0是输出信号。
其元件图形符号如图2.4所示:
图2.4模2除法器元件图形符号
(3)功能仿真
对创建的控制器模块进行功能仿真,验证其功能的正确性,可用Xilinx
Foundationf3.1编译器Simulator模块实现。
CLK为时钟脉冲,G3~G0是多项式输入,D端串行输入数据1100000,得到余数Q2、Q1、Q0为010。
仿真结果如图2.5所示:
图2.5模2除法器仿真结果
2.2.2移位寄存器的设计与实现
该模块由8个D触发器相连接构成,数据通过D端串行输入到D触发器中。
每过一个时钟脉冲,输入的数据左移一位,经过7个脉冲后,由7个D触发器的Q端并行输出所输入的数据。
(1)创建控制器设计原理图。
移位寄存器的原理框图如图2.6所示。
图2.6移位寄存器的原理框图
(2)创建元件图形符号
为能在图形编辑器(原理图设计输入方式)中调用MOV芯片,需要为MOV模块创建一个元件图形符号,可利用Xilinxfoundationf3.1编译器中的如下步骤实现:
Tools=>SymbolWizard=>下一步。
CP、D是输入信号,Q6、Q5、Q4、Q3、Q2、Q1、Q0是输出信号。
其元件图形符号如图2.7所示:
图2.7移位寄存器器元件图形符号
(3)功能仿真
对创建的控制器模块进行功能仿真,验证其功能的正确性,可用Xilinx
Foundationf3.1编译器Simulator模块实现。
CLK为时钟脉冲,D串行输入数据1100000,得到结果1100000。
仿真结果如图2.8所示:
图2.8移位寄存器仿真结果
2.3仿真调试
仿真调试主要验证设计电路逻辑功能、时序的正确性,本设计中主要采用功能仿真方法对设计的电路进行仿真。
(1)建立仿真波形文件及仿真信号选择
功能仿真时,首先建立仿真波形文件,添加仿真信号,对选定的输入信号设置参数,选定的仿真信号和设置的参数如表2.2所示。
仿真时D输入信息码1100000,A输入循环校验码1100000,G0,G1,G2,G3输入生成多项式1011,VCC恒为1。
(2)功能仿真结果与分析
功能仿真波形结果如图2.9所示,仿真数据结果如表2.2所示。
对表2.2与表1.1的内容进行对比,可以看出功能仿真结果是正确的,进而说明电路设计的正确性。
图2.9功能仿真波形结果
D
A
CLOCK
Q6
Q5
Q4
Q3
Q2
Q1
Q0
L6
L5
L4
L3
L2
L1
L0
1
1
1
0
0
0
0
0
0
1
0
0
0
0
0
0
0
1
1
1
0
0
0
0
0
0
1
0
0
0
1
0
1
1
0
0
1
0
0
0
0
1
1
0
0
0
1
0
1
1
0
0
0
1
0
0
0
1
1
1
1
0
1
0
1
1
0
0
0
0
1
0
0
1
1
1
0
1
1
0
1
1
0
0
0
0
0
1
0
1
1
0
0
0
1
0
1
1
0
0
0
1
0
0
1
1
1
0
0
0
1
0
1
1
0
0
0
1
0
表2.2仿真数据结果
输入信息码为:
1100000,生成多项式为:
1011,应用模2除法器可以求出三位余数为010然后把余数和信息码拼接可以得到CRC编码为:
1100010
输入需要校验的CRC码为:
1100000,生成多项式位:
1011,可以求得三位余数位010因为余数不为000,可以判断出接受到的循环校验码是错的,并且错误位在Q1。
通过校验电路修改可输出正确的CRC码1100010。
由图2.9的仿真图和表2.2的仿真数据结果可以看出,生成的CRC码为1100010,校验之后CRC码为1100010。
第3章编程下载与硬件测试
3.1编程下载
利用Xilinxfoundationf3.1的编程下载功能,将得到的*.bit文件下载到XCV200实验板的XCV200可编程逻辑芯片中。
3.2硬件测试及结果分析
利用XCV200实验板进行硬件功能测试。
CRC码生成和校验的输入数据通过XCV200实验板的输入开关实现,输出数据通过XCV200实验板的LED指示灯实现,其对应关系如表3.1所示。
XCV200芯片引脚信号
XCV200实验板
XCV200芯片引脚信号
XCV200实验板
XCV200芯片引脚信号
XCV200实验板
D
K1:
0
Q6
A6
L6
B6
A
K2:
0
Q5
A5
L5
B5
CLK
CLOCK
Q4
A4
L4
B4
G3
K0:
3
Q3
A3
L3
B3
G2
KO:
2
Q2
A2
L2
B2
G1
K0:
1
Q1
A1
L1
B1
G0
K0:
0
Q0
A0
L0
B0
VCC
K3:
0
表3.2硬件测试结果
利用表2.2中的输入参数作为输入数据,并将数据串行输入,同时观察发光二极管组A6-A0和发光二极管组B6-B0的输出,硬件测试结果如表3.2所示。
输入信号
输出信号
输出信号
K0:
5
K0:
6
A6
A5
A4
A3
A2
A1
A0
B6
B5
B4
B3
B2
B1
B0
1
1
0
0
0
0
0
0
1
0
0
0
0
0
0
0
1
1
0
0
0
0
0
0
1
0
0
0
1
0
1
1
0
0
0
0
0
0
1
1
0
0
0
1
0
1
1
0
0
0
0
0
0
1
1
1
1
0
1
0
1
1
0
0
0
0
0
0
1
1
1
0
1
1
0
1
1
0
0
0
0
0
0
1
1
0
0
0
1
0
1
1
0
0
0
1
0
0
1
1
0
0
0
1
0
1
1
0
0
0
1
0
由表3.2和表2.2比较可以看出硬件测试结果是正确的,说明电路设计正确。
其硬件测试最后结果如图3.1所示:
图3.1硬件测试
参考文献
[1]曹昕燕.EDA技术实验与课程设计[M].北京:
清华大学出版社,2006
[2]范延滨.微型计算机系统原理、接口与EDA设计技术[M].北京:
北京邮电大学出版社,2006
[3]爱英.计算机组成与结构(第4版)[M].北京:
清华大学出版社,2006
[4]潘松,黄继业.EDA技术使用教程.北京:
科学出版社,2002
[5]胡越明.2002.计算机组成与系统结构.北京:
电子工业出版社
[6]王炜.2006.计算机组成与设计实验教程.北京:
科学出版社
附录(电路原理图)
课程设计总结:
作为本学期收尾工作,我积极的要把这份工作做好。
本学期开设的计算机组成原理课程,让我不但从概念上掌握了计算机内部的工作机制,并且能够学以致用,自主完成这次课程设计。
当然,成绩的背后,老师的授业解惑是至关重要的。
这次课程设计的任务是做CRC码生成与校验电路的设计。
从初步构思到一步步完善直到最后完成整个课程设计,让我更好的巩固了自己所学的知识。
翻阅图书去学习一些没有接触过的知识让我更好的了解了这门课程,增强的实践动手能力。
虽然过程中有迷茫,但是作为一名合格的沈阳航空工业学院的学生,我坚信我可以做到。
在老师和同学的帮助下,我没有胆怯,一步步踏踏实实的完成老师分配的工作。
总的来说,虽然完成了老师安排的任务,但是还没有达到尽善尽美的地步,还有很多要学习,要实践。
虽然课程设计结束了,但是我们才刚刚踏入计算机硬件领域,还有太多太多的知识有待我们去摸索。
在实践中学习,在学习中实践,是这次课程设计让我领悟到的,更是以后学习生活中我该做到的。
在此请老师接受我最真挚的诚意,让我成长让我掌握的更多!
指导教师评语:
指导教师(签字):
年月日
课程设计成绩
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CRC 生成 校验 电路设计