组成原理课设循环冗余校验码生成与实现.docx
《组成原理课设循环冗余校验码生成与实现.docx》由会员分享,可在线阅读,更多相关《组成原理课设循环冗余校验码生成与实现.docx(22页珍藏版)》请在冰豆网上搜索。
组成原理课设循环冗余校验码生成与实现
沈阳航空航天大学
课程设计报告
课程设计名称:
组成原理课程设计
课程设计题目:
循环冗余校验码生成电路
的设计与实现
院(系):
计算机学院
专业:
计算机科学与技术
班级:
学号:
姓名:
指导教师:
说明:
结论(优秀、良好、中等、及格、不及格)作为相关教环节考核必要依据;格式不符合要求;数据不实,不予通过。
报告和电子数据必须作为实验现象重复的关键依据。
指导教师评语:
审查结论:
签名:
年月日
学术诚信声明
本人声明:
所呈交的报告(含电子版及数据文件)是我个人在导师指导下独立进行设计工作及取得的研究结果。
尽我所知,除了文中特别加以标注或致谢中所罗列的内容以外,报告中不包含其他人己经发表或撰写过的研究结果,也不包含其它教育机构使用过的材料。
与我一同工作的同学对本研究所做的任何贡献均己在报告中做了明确的说明并表示了谢意。
报告资料及实验数据若有不实之处,本人愿意接受本教学环节“不及格”和“重修或重做”的评分结论并承担相关一切后果。
本人签名:
日期:
年月日
沈阳航空航天大学
课程设计任务书
课程名称
计算机组成原理课程设计
专业
计算机科学与技术
学生姓名
班级
计算机
学号
题目名称
循环冗余校验码生成电路的设计与实现
起止日期
2016
年
12
月
19
日起至
2016
年
12
月
30
日止
课设内容和要求:
一、课程设计内容
采用XilinxFoundationF3.1可编程器件开发工具软件、伟福COP2000实验箱设计并实现循环冗余校验码生成电路。
二、课程设计要求
1.采用自上而下的设计方法,顶层设计使用原理图设计输入方式(电路图方式实现);底层设计输入方式自行选定(可用电路图实现、也可通过VHDL语言编程实现);
2.课程设计的电路主要应包括:
模2除电路、余数产生电路、校验码拼接电路、移位电路等;
3.必须用基本逻辑门实现。
输入数据为4位,选定4位生成多项式,输出7位的校验码;
4.对设计电路进行仿真并验证其正确性,仿真数据由指导教师给出;
5.实现编程下载和硬件测试;
6.独立设计、调试、仿真、下载和硬件测试并通过指导教师现场验收;
7.撰写课程设计报告。
参考资料:
[1]唐硕飞.计算机组成原理(第2版)[M].北京:
高等教育出版社,2008
[2]曹昕燕.EDA技术实验与课程设计[M].北京:
清华大学出版社,2006
[3]范延滨.微型计算机系统原理、接口与EDA设计技术[M].北京:
北京邮电大学出版社,2006
[4]王爱英.计算机组成与结构(第4版)[M].北京:
清华大学出版社,2006
教研室审核意见:
同意(√)不同意()教研室主任签字:
指导教师(签名)
2016
年
12
月
19
日
学生签名
2016
年
12
月
19
日
课程设计总结:
刚进入实验室时对微机中的XilinxFoundationF3.1软件环境掌握不够熟悉,不能熟练的应用XilinxFoundationF3.1软件进行电路的连接,后经过老师的细心讲解,终于对XilinxFoundationF3.1软件有了很好的掌握能力,能够熟练的应用XilinxFoundationF3.1软件进行电路的接。
在连接电路过程中出现很多问题,如器件的选择,管脚的锁定等都出现很多错误,在老师和同学的指导下,顺利的解决了这些问题,并且在老师的指导下对未封装的电路进行了封装,顺利的完成了电路的连接。
该电路能够实现所需功能。
这次课程设计的任务是做CRC码生成电路的设计与实现。
一开始是对CRC码的认识存在误区,没有真正认识CRC码的生成过程,通过查教材和辅导书我明白了它是可以由信息码和余数多项式合成的。
还有对芯片的制作与封装。
封装是老师要求的重点,开始我并不在意,后来电路图的连线越来越多,才认识封装的重要性。
由于设计的电路在仿真方面总是出问题,后来通过对每一个部分做仿真,才找出错误,我想今后我不会再犯这样的错误了。
从初步构思到一步步完善直到最后完成整个课程设计,让我更好的巩固了自己所学的知识。
翻阅图书去学习一些没有接触过的知识让我更好的了解了这门课程,增强的实践动手能力。
虽然过程中有迷茫,但是我坚信我可以做到。
两周的课程设计结束了,在这两周中收获非常多。
虽然课程设计题目只有一个,但在这一个题目中学到了很多课堂上学不到的专业知识。
经过这次课设,我对书本的知识有了更进一步的理解,锻炼了我的动手能力,使我的能力有很大的提高。
为将来参加实际工作奠定了良好的基础。
总的来说,虽然完成了老师安排的任务,但是还没有达到尽善尽美的地步,还有很多要学习,要实践。
虽然课程设计结束了,但是我们才刚刚踏入计算机硬件领域,还有太多太多的知识有待我们去摸索。
在实践中学习,在学习中实践,是这次课程设计让我领悟到的,更是以后学习生活中我该做到的。
在此请老师接受我最真挚的诚意,让我成长让我掌握的更多!
目录
第1章总体设计方案1
1.1设计原理1
1.2设计思路2
1.3设计环境3
第2章详细设计方案4
2.1顶层方案图的设计与实现4
2.1.1创建顶层图形设计文件4
2.2功能模块的设计4
2.2.1移位寄存器的设计5
2.2.2模2除法器的设计6
2.3CRC码生成电路整体仿真9
第3章编程下载与硬件测试11
3.1器件的选择与引脚锁定11
3.2编程下载12
3.3硬件测试及结果分析12
参考文献15
附录(电路原理图)16
第1章总体设计方案
1.1设计原理
循环冗余校验码(CyclicRedundancyCheck,CRC)简称为循环码或CRC码。
此码可以发现并纠正信息在存储或传送过程中连续出现的多位错误代码。
计算机常用的二进制信息沿一条信号线逐位在设备之间传送称为串行传送,CRC码常用于串行传送过程中的检错与纠错。
CRC码一般是指n位信息码之后拼接k位校验码。
CRC码是一种从n位信息码能简便的得到k位校验码,并且能从n+k位信息码中判断是否出错。
首先输入信息码,根据信息码由多项式因子的计算公式得到相应的校验码,然后将进行移位的信息码与得到的校验码进行拼接,即可得到正确的CRC码。
CRC码是基于模2运算而建立编码规律的校验码。
在进行CRC计算时,采用二进制(模2)运算法,即加法不进位,减法不借位,其本质就是两个操作数进行逻辑异或运算。
设待发送数据为D(x),生成多项式为G(x)。
信息码长k位,校验码长n-k位,则编码后的码长为n位。
如表1.1:
表1.1CRC码编码格式
1
2
3
k
K+1
n
信息码
CRC校验码
设被校验的数据
是一个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.2设计思路
根据课设题目要求,可知本次实验主要是完成(7,4)码生成电路的设计与实现。
CRC码生成电路的核心主要由移位寄存器和模2除法器构成,信息位以串行的方式输入。
模块划分如图1.1:
图1.1模块图
依据CRC码生成原理可知,生成电路中由输入端串行输入的4位二进制数据D左移3位后,与生成多项式G(x)做模2除法,并将得到的3位余数与4位信息码拼接成7位CRC码。
本设计方案采用的元件有模2除法器模块,移位寄存器模块,与门,异或门等电子元件。
移位寄存器由7个D触发器构成。
模2除法器由若干两输入与门,若干两输入异或门和D触发器构成。
1.3设计环境
(1)硬件环境:
伟福COP2000型计算机组成原理实验仪、XCV200实验板、计算机。
COP2000集成开发环境是为COP2000实验仪与PC机相连进行高层次实验的配套软件,它通过实验仪的串行接口和PC机的串行接口相连,提供汇编、反汇编、编辑、修改指令、文件传送、调试FPGA实验等功能,该软件在Windows下运行。
COP2000运行界面如图1.2所示。
图1.2COP2000界面
(2)EDA环境:
Xilinxfoundationf3.1是Xilinx公司的可编程期间开发工具,该平台(如图1.3所示)功能强大,主要用于百万逻辑门设计。
该系统由设计入口工具、设计实现工具、设计验证工具三大部分组成。
图1.3Xilinxfoundationf3.1界面
第2章详细设计方案
2.1顶层方案图的设计与实现
顶层方案图实现CRC码的生成的逻辑功能,采用原理图设计输入方式完成,电路实现基于XCV200可编程逻辑芯片。
在完成原理图的功能设计后,把输入/输出信号安排到XCV200指定的引脚上去,实现芯片的引脚锁定。
2.1.1创建顶层图形设计文件
顶层图形文件的设计实体主要由CRC码生成电路各主要模块组成。
生成电路主要由移位寄存器元件-YW、模2除法器元件-M2C构成。
如图2.1所示。
图2.1CRC码生成电路原理图
利用Xilinxfoundationf3.1的原理图编辑器对顶层图形文件进行编译,并最终生成网络表文件,利用设计实现工具经综合、优化、适配,生成可供时序仿真的文件和器件下载编程文件。
2.2功能模块的设计
CRC码的生成与校验是基于移位寄存器和模2除法器及异或门实现的。
具体设计如下。
2.2.1移位寄存器的设计
该模块由7个D触发器相连接构成,数据通过D端串行输入到D触发器中。
每过一个时钟脉冲,输入的数据左移一位,经过7个脉冲后,由7个D触发器的Q端并行输出所输入的数据。
(1)创建元件图形符号
为能在图形编辑器(原理图设计输入方式)中调用MOV芯片,需要为MOV模块创建一个元件图形符号,可利用Xilinxfoundationf3.1编译器中的如下步骤实现:
Tools=>SymbolWizard=>下一步。
CP、D是输入信号,Q6、Q5、Q4、Q3、Q2、Q1、Q0是输出信号。
其元件图形符号如2.2所示:
图2.2移位寄存器器元件图形符号
(2)创建控制器设计原理图
移位寄存器的原理框图如图2.3所示。
图2.3移位寄存器的原理图
(3)移位寄存器功能仿真
对创建的控制器模块进行功能仿真,验证其功能的正确性,可用XilinxFoundationf3.1编译器Simulator模块实现。
D串行输入数据1100,得到结果1100000。
仿真结果如图2.4所示:
图2.4移位寄存器仿真结果
如上图所示,串行输入数据1100,经过7个时钟周期后,得到Q6-Q0的结果为1100000。
第二组测试数据D端输入1110,得到结果1110000。
仿真结果如图2.5所示:
图2.5移位寄存器仿真结果
第二组仿真结果如图所示,串行输入数据1110,经过7个时钟周期后输出Q6-Q0的结果为1110000。
2.2.2模2除法器的设计
模2运算的特点是不考虑进位和错位的运算,期规律如下:
①模2加和模2减的结果是相等的,即0±1=1,0±0=0,1±0=1,1±1=0。
可见,两个相同数的模2和恒为0。
②模2乘是按模2和求部分积之和。
③模2除是按模2减求部分余数。
每求一位商应使部分余数减少一位。
上商的原则是:
当部分余数的首位为1时,上商1;当部分余数的首位为0时,上商0。
当部分余数的位数小于除数的位数时,该余数即为最后余数。
该模块由D触发器、与门和异或门构成。
对(7,4)校验码,可采用图6所示电路,产生3位的余数Q2、Q1、Q0。
图中的模2减用异或门实现,左移一位由移位寄存器实现;用异或门的输出控制左边一位寄存器的D输入端,可同时实现模2减和左移。
用最左一位D触发器的取值控制是否做模2减,当其为1时,减去的数就是生成多项式G(x),为0时减去的就是0000。
这里,被除数D是逐位串行送到移位寄存器的,且由CP脉冲同步。
其设计过程如下:
(1)创建元件图形符号
为能在图形编辑器(原理图设计输入方式)中调用MOD2芯片,需要为MOD2模块创建一个元件图形符号,可利用Xilinxfoundationf3.1编译器中的如下步骤实现:
Tools=>SymbolWizard=>下一步。
CP、D、A3、A2、A1、A0是输入信号,Q2、Q1、Q0是输出信号。
其元件图形符号如图2.6所示:
图2.6除法器元件图形符号
(2)创建控制器设计原理图
用各种门电路连接实现具体实验原理电路图,如图2.7所示。
图2.7模2除法器的原理图
(3)模2除法器功能仿真
对创建的控制器模块进行功能仿真,验证其功能的正确性,可用Xilinx
Foundationf3.1编译器Simulator模块实现。
D端串行输入数据1100,得到余数Q2、Q1、Q0为010。
仿真结果如图2.8所示:
图2.8模2除法器仿真结果
如仿真图所示,通过串行输入方式,将第一组数据1100输入到D端,经过7个时钟周期的模2除法器运算后,得到三位余数Q2-Q0为010。
第二组测试数据D端串行输入1110,得到余数Q2、Q1、Q0为100。
仿真结果如图2.9所示:
图2.9模2除法器仿真结果
如仿真图所示,通过串行输入方式,将第一组数据1110输入到D端,经过7个时钟周期的模2除法器运算后,得到三位余数Q2-Q0为100。
2.3CRC码生成电路整体仿真
仿真调试主要验证设计电路逻辑功能、时序的正确性,本设计中主要采用功能仿真方法对设计的电路进行仿真。
(1)建立仿真波形文件及仿真信号选择
功能仿真时,首先建立仿真波形文件,添加仿真信号,对选定的输入信号设置参数,选定的仿真信号和设置的参数如表2.1所示。
仿真时D输入信息码1100,A输入循环校验码1100000,G0、G1、G2、G3输入生成多项式1011。
表2.1仿真数据参数
D
CLOCK
Q6
Q5
Q4
Q3
Q2
Q1
Q0
1
1
0
0
0
0
0
0
1
1
1
0
0
0
0
0
1
1
0
1
0
0
0
0
1
1
0
0
1
0
0
0
1
1
1
1
0
1
0
0
1
1
1
0
1
0
1
0
1
1
0
0
0
1
0
1
1
1
0
0
0
1
0
(2)功能仿真结果与分析
功能仿真波形结果如图2.10所示,仿真数据结果如表2所示。
对表2与表1的内容进行对比,可以看出功能仿真结果是正确的,进而说明电路设计的正确性。
图2.10功能仿真波形结果
输入信息码为:
1100,生成多项式为:
1011,应用模2除法器可以求出三位余数为010,然后把余数和信息码拼接可以得到CRC编码为:
1100010。
第二组测试数据D端串行输入1110,生成多项式仍为1011。
选定的仿真信号和设置的参数如表2.2所示。
表2.2仿真数据参数
D
CLOCK
Q6
Q5
Q4
Q3
Q2
Q1
Q0
1
1
0
0
0
0
0
0
1
1
1
0
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
0
1
0
0
0
1
1
0
1
0
1
0
0
1
1
0
0
1
0
1
0
1
1
1
0
1
0
0
1
1
1
1
0
1
0
0
仿真结果如图2.11所示:
图2.11CRC码生成结果仿真波形
输入信息码为1110,经过移位寄存器7个D触发器变换后为1110000;模2除法器输入的也是1110四位二进制数,经运算得余数100。
最终将余数与信息码拼接可得到CRC编码:
1110100。
第3章编程下载与硬件测试
3.1器件的选择与引脚锁定
(1)器件的选择
由于硬件设计环境是基于伟福COP2000型计算机组成原理实验仪和XCV200实验板,故采用的目标芯片为XlinxXCV200软件中可用芯片。
(2)引脚锁定
把顶层图形文件中的输入/输出信号安排到XlinxXCV200芯片指定的引脚上去,实现芯片的引脚锁定,各信号及XlinxXCV200芯片引脚对应关系如表3.1所示。
表3.1信号和芯片引脚对应关系
图形文件中的输入/输出信号
XCV200芯片引脚
D
87
CLK
213
G3
100
G2
101
G1
102
G0
103
Q6
152
Q5
178
Q4
184
Q3
185
Q2
203
Q1
111
Q0
110
3.2编程下载
利用COP2000仿真软件的编程下载功能,将得到.bit文件下载到XCV200实验板的XCV200可编程逻辑芯片中。
3.3硬件测试及结果分析
利用XCV200实验板进行硬件功能测试。
CRC码生成和校验的输入数据通过XCV200实验板的输入开关实现,输出数据通过XCV200实验板的LED指示灯实现,其对应关系如表3.2所示。
表3.2XCV200实验板信号对应关系
XCV200芯片引脚信号
XCV200实验板
XCV200芯片引脚信号
XCV200实验板
D
K1:
0
Q6
A6
CLK
CLOCK
Q5
A5
A3
K0:
3
Q4
A4
A2
K0:
2
Q3
A3
A1
K0:
1
Q2
A2
A0
K0:
0
Q1
A1
Q0
A0
利用表2.1中的输入参数作为输入数据,逐个测试输出结果,即用XCV200实验板的开关组K0中的1,2,3,4输入多项式数据1011,用开关组K1中的1号开关串行输入信息码1100,同时观察发光二极管组A0-A6的输出,得到如表3.3所示的硬件测试结果。
表3.3硬件测试结果
输入
输出
D
CLOCK
A6
A5
A4
A3
A2
A1
A0
1
1
0
0
0
0
0
0
1
1
1
0
0
0
0
0
1
1
0
1
0
0
0
0
1
1
0
0
1
0
0
0
1
1
1
1
0
1
0
0
1
1
1
0
1
0
1
0
1
1
0
0
0
1
0
1
1
1
0
0
0
1
0
由表2.1和表3.3比较可以看出硬件测试结果是正确的,说明电路设计完全正确。
其硬件测试最后结果如图3.1所示:
图3.1硬件测试结果
由开关组K1的1号开关串行输入信息码1100,经过7个周期的CLK时钟信号后,发光二极管A6-A0显示为1100010,产生的CRC校验码完全正确。
利用表2.2中的输入参数作为输入数据,逐个测试输出结果,即用XCV200实验板的开关组K0中的1,2,3,4输入多项式数据1011,用开关组K1中的1号开关串行输入信息码1110,同时观察发光二极管组A0-A6的输出,得到如表3.4所示的硬件测试结果。
表3.4硬件测试结果
输入
输出
D
CLOCK
Q6
Q5
Q4
Q3
Q2
Q1
Q0
1
1
0
0
0
0
0
0
1
1
1
0
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
0
1
0
0
0
1
1
0
1
0
1
0
0
1
1
0
0
1
0
1
0
1
1
1
0
1
0
0
1
1
1
1
0
1
0
0
由表2.2和表3.4比较可以看出硬件测试结果是正确的,说明电路设计完全正确。
其硬件测试最后结果如图3.2所示:
图3.2硬件测试结果
由开关组K1的1号开关串行输入信息码1110,经过7个周期的CLK时钟信号后,发光二极管A6-A0显示为1110100,产生的CRC校验码完全正确。
参考文献
[1]唐硕飞.计算机组成原理(第2版)[M].北京:
高等教育出版社,2008
[2]曹昕燕.EDA技术实验与课程设计[M].北京:
清华大学出版社,2006
[3]范延滨.微型计算机系统原理、接口与EDA设计技术[M].北京:
北京邮电大学出版社,2006
[4]王爱英.计算机组成与结构(第4版)[M].北京:
清华大学出版社,2006
[5]潘松,黄继业.EDA技术使用教程.北京:
科学出版社,2002
[6]胡越明.计算机组成与系统结构.北京:
电子工业出版社,2002
[7]王炜.计算机组成与设计实验教程.北京:
科学出版社,2006
附录(电路原理图)