组成原理课程设计指令总线及CRC校验
- 格式:doc
- 大小:866.62 KB
- 文档页数:16
沈阳航空工业学院课程设计报告课程设计名称:计算机组成原理课程设计课程设计题目:CRC码生成与效验电路的设计院(系):计算机学院专业:计算机科学与技术班级:4401102学号:200403011055姓名:刘鹏指导教师:李平完成日期:2006年12月31日沈阳航空工业学院课程设计报告目录第1章总体设计方案 (1)1.1 设计原理 (1)1.2 设计思路 (2)1.3 设计环境 (2)第2章详细设计方案 (3)2.1 顶层方案图的设计与实现 (3)2.1.1创建顶层图形设计文件 (3)2.1.2器件的选择与引脚锁定 (4)2.2 功能模块的设计与实现 (5)2.2.1模2除模块的设计与实现 (5)2.2.2 CRC效验码模块的设计与实现 (6)2.3 仿真调试 (7)第3章编程下载与硬件测试 (9)3.1 编程下载 ................................................................................................................ `9 3.2 硬件测试及结果分析 (9)参考文献 (11)附录(程序清单或电路原理图) (12)第1章总体设计方案1.1 设计原理二进制信息位流沿一条线逐位在部件之间或计算机之间传送称为串行传送。
CRC码一般是指k位信息码之后拼接r位校验码。
应用CRC码的关键是如何从k位信息位简便地得到r位效验位,以及如何从k+r位信息码判断是否出错。
CRC码生成:多项式M(x)·x3除以生成多项式G(x)所得的r位余数为效验位(为了得到R位余数,G(x)必须是r+1位)。
然后将余数拼接在信息组左移r位空出的r位上,就构成了这个有效信息的CRC码。
(因为k=4,所以k-1=3位)CRC码效验:将收到的循环效验码用约定的生成多项式G(x)去除,如果码字无误则余数应为0,如果某一位出错,则余数不为0,不同位数出错余数不同。
crc校验原理及步骤嘿,咱今儿就来聊聊这 CRC 校验!你说这 CRC 校验啊,就像是给数据穿上了一件特别的“保护衣”。
它的原理呢,其实挺有意思。
就好像我们要识别一群人里有没有冒牌货,得有个特别的办法来判断。
CRC 校验就是通过一种特定的计算方式,给数据生成一个独一无二的“标记”。
那具体步骤是咋样的呢?首先啊,得选个合适的生成多项式,这就好比选一把合适的钥匙。
然后呢,把要校验的数据当成宝贝一样,和这个生成多项式一起进行一番奇妙的运算。
这运算过程啊,就像是一场数据的舞蹈,各种数字在里面蹦跶、组合。
等这舞蹈结束,就得到了一个校验码。
这个校验码可重要啦,就像人的身份证号一样,能证明数据的身份。
当数据要传输或者存储的时候,就把这个校验码也带上。
等数据到了目的地,接收方再按照同样的步骤来一次,看看算出来的校验码和带来的一不一样。
如果一样,那就说明数据在旅途中没出啥问题,完好无损地到达啦!要是不一样呢,哎呀,那可就麻烦啦,说明数据可能在途中遭遇了什么“小意外”,得赶紧找找问题出在哪儿。
你想想,要是没有这 CRC 校验,那数据在传输过程中出了错都不知道呢!这就好像我们寄个重要包裹,没有保价一样,心里多不踏实呀!CRC 校验在很多地方都大显身手呢!比如在通信领域,它能确保信息准确无误地传达;在计算机存储中,它能保证数据的可靠性。
它就像一个默默无闻的守护者,时刻守护着数据的安全。
所以啊,可别小瞧了这 CRC 校验,它虽然听起来有点复杂,但作用可大着呢!它就像是数据世界里的一位忠诚卫士,为我们的数据保驾护航,让我们能安心地使用和传输数据。
你说是不是很厉害呢?。
crc校验程序设计要求一、引言CRC校验是一种常用的数据传输错误检测方法,它通过对数据进行多项式计算,生成一个校验码,接收方在接收到数据后同样进行多项式计算,与发送方生成的校验码进行比较,如果不一致则说明数据传输出现了错误。
本文将介绍CRC校验程序设计要求。
二、CRC校验原理CRC校验的核心原理是通过对数据进行多项式计算来生成一个校验码。
具体过程如下:1. 选择一个固定的多项式G(x),例如:x^16+x^12+x^5+1。
2. 将要发送的数据D(x)左移G(x)的位数-1位(即在最高位填充0),得到新的数据M(x)。
3. 对M(x)除以G(x),得到商Q(x)和余数R(x)。
4. 将R(x)作为校验码CRC发送给接收方。
5. 接收方同样将接收到的数据左移G(x)的位数-1位,并对其进行除法运算,得到余数R'(x)。
6. 如果R'(x)=0,则说明没有出现错误;否则说明出现了错误。
三、CRC校验程序设计要求1. 选择合适的多项式:CRC校验中选择合适的多项式非常重要,不同的多项式会影响到检错能力和效率。
一般情况下,多项式的次数越高,检错能力越强,但计算效率越低。
因此,在选择多项式时需要根据具体需求进行权衡。
2. 实现多项式计算:CRC校验中的核心是多项式计算,因此需要实现多项式加法、乘法和除法运算。
在实现时需要注意运算精度和性能问题。
3. 实现数据处理:在进行CRC校验时需要对数据进行处理,包括左移位、填充0等操作。
在实现时需要考虑数据类型和处理逻辑。
4. 实现接收方校验:接收方同样需要对接收到的数据进行CRC校验,因此需要实现接收方的CRC校验程序。
在实现时需要考虑通信协议和数据格式等问题。
四、总结本文介绍了CRC校验的原理及程序设计要求。
在设计CRC校验程序时,需要注意选择合适的多项式、实现多项式计算、实现数据处理和实现接收方校验等问题。
通过合理设计和优化,可以提高CRC校验程序的效率和可靠性。
crc校验方式一、引言在数据通信中,为了保证数据的完整性和正确性,常常需要对数据进行校验。
CRC(Cyclic Redundancy Check)是一种常用的校验方式,它可以通过计算数据的循环冗余校验值来检测数据是否被篡改。
本文将对CRC校验方式进行详细介绍。
二、CRC校验原理1. CRC码的生成过程CRC码的生成过程是通过将原始数据与一个预设的多项式进行异或运算得到的。
具体步骤如下:(1)将原始数据添加k个0,使其长度为n+k位。
(2)将多项式P左移k位得到G(x)。
(3)将n+k位的原始数据除以G(x),得到商Q(x)和余数R(x)。
(4)将余数R(x)作为CRC码添加到原始数据后面,得到n+k位的带CRC码的数据。
2. CRC校验过程接收方收到带有CRC码的数据后,会对其进行如下操作:(1)将接收到的n+k位带CRC码的数据除以G(x),得到商Q'(x)和余数R'(x)。
(2)如果R'(x)等于0,则认为接收到的数据没有发生错误;否则认为接收到的数据发生了错误。
三、CRC校验实现方法1. CRC-8CRC-8是一种8位的CRC校验方式,它的多项式为x^8+x^2+x^1+x^0。
其校验码长度为1字节(8位),可以用于检测数据传输中的单比特错误。
2. CRC-16CRC-16是一种16位的CRC校验方式,它的多项式为x^16+x^15+x^2+1。
其校验码长度为2字节(16位),可以用于检测数据传输中的双比特错误。
3. CRC-32CRC-32是一种32位的CRC校验方式,它的多项式为x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+ x^5+x^4+ x3+ x + 1。
其校验码长度为4字节(32位),可以用于检测数据传输中的多比特错误。
四、CRC校验应用场景1. 网络通信在网络通信中,数据传输过程中可能会发生丢包、重发等问题,使用CRC校验可以有效地检测并纠正这些问题。
计组课程设计crc一、教学目标本节课的教学目标是使学生掌握CRC(循环冗余检查)的基本原理和计算方法,能够运用CRC检测数据传输中的错误。
具体目标如下:知识目标:1. 了解CRC的概念和作用;2. 掌握CRC的计算方法;3. 理解CRC在数据传输中的应用。
技能目标:1. 能够运用CRC计算器检测数据传输中的错误;2. 能够编写程序实现CRC的计算和验证。
情感态度价值观目标:通过学习CRC,培养学生严谨的科学态度和解决问题的能力,激发学生对计算机科学的兴趣。
二、教学内容本节课的教学内容主要包括CRC的基本原理、计算方法和应用。
具体安排如下:1.介绍CRC的概念和作用,通过实例让学生了解CRC在数据传输中的重要性。
2.讲解CRC的计算方法,包括生成多项式、余数计算和校验码的生成。
3.分析CRC的检错原理,让学生理解CRC如何检测数据传输中的错误。
4.结合实际案例,演示CRC在数据传输中的应用,让学生了解CRC的实际应用场景。
5.通过编程实践,让学生动手实现CRC的计算和验证,巩固所学知识。
三、教学方法为了提高教学效果,本节课将采用多种教学方法相结合的方式进行教学:1.讲授法:讲解CRC的基本原理和计算方法,让学生掌握理论知识。
2.案例分析法:分析实际案例,让学生了解CRC在数据传输中的应用。
3.实验法:让学生动手实践,编写程序实现CRC的计算和验证。
4.讨论法:鼓励学生提问、讨论,解答学生在学习中遇到的问题。
四、教学资源为了支持教学内容和教学方法的实施,本节课将准备以下教学资源:1.教材:《计算机组成原理》相关章节。
2.参考书:提供相关的学术论文和资料,供学生深入研究。
3.多媒体资料:制作PPT课件,直观展示CRC的计算过程。
4.实验设备:提供计算机实验室,让学生动手实践。
5.在线资源:推荐相关的在线教程和编程实践平台,方便学生自学和练习。
五、教学评估本节课的评估方式将包括以下几个方面,以全面、客观地评价学生的学习成果:1.平时表现:通过观察学生在课堂上的参与程度、提问和回答问题的表现,了解学生的学习状态。
课程设计报告课程设计名称:组成原理课程设计课程设计题目:循环冗余校验码生成电路的设计与实现院(系):计算机学院专业:计算机科学与技术班级:学号:姓名:指导教师:说明:结论(优秀、良好、中等、及格、不及格)作为相关教环节考核必要依据;格式不符合要求;数据不实,不予通过。
报告和电子数据必须作为实验现象重复的关键依据。
学术诚信声明本人声明:所呈交的报告(含电子版及数据文件)是我个人在导师指导下独立进行设计工作及取得的研究结果。
尽我所知,除了文中特别加以标注或致谢中所罗列的内容以外,报告中不包含其他人己经发表或撰写过的研究结果,也不包含其它教育机构使用过的材料。
与我一同工作的同学对本研究所做的任何贡献均己在报告中做了明确的说明并表示了谢意。
报告资料及实验数据若有不实之处,本人愿意接受本教学环节“不及格”和“重修或重做”的评分结论并承担相关一切后果。
本人签名: 日期:年月日目录第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章编程下载与硬件测试 (12)3.1器件的选择与引脚锁定 (12)3.2编程下载 (13)3.3硬件测试及结果分析 (13)参考文献 (16)附录(电路原理图) (17)第1章 总体设计方案1.1 设计原理循环冗余校验码(Cyclic Redundancy Check,CRC)简称为循环码或CRC 码。
此码可以发现并纠正信息在存储或传送过程中连续出现的多位错误代码。
计算机常用的二进制信息沿一条信号线逐位在设备之间传送称为串行传送,CRC 码常用于串行传送过程中的检错与纠错。
CRC 码一般是指n 位信息码之后拼接k 位校验码。
crc冗余编码课程设计一、课程目标知识目标:1. 学生理解CRC(循环冗余校验)编码的基本原理,掌握其数学基础和计算过程。
2. 学生能够描述CRC编码在数据传输和存储中的应用及其重要性。
3. 学生掌握至少两种不同的CRC编码生成多项式及其特点。
技能目标:1. 学生能够运用CRC编码对简单的二进制数据进行校验位的计算,并验证数据的完整性。
2. 学生通过实际案例分析和解决数据传输中可能出现的错误,提高问题解决能力。
情感态度价值观目标:1. 学生培养对信息科学技术的兴趣,认识到其在现代通信中的重要作用。
2. 学生通过小组合作,培养团队协作能力和沟通技巧。
3. 学生在学习过程中,培养严谨的科学态度和探索精神,增强对信息安全的意识。
课程性质分析:本课程为信息技术或计算机科学相关学科的教学内容,旨在通过CRC冗余编码的学习,提高学生对数据传输安全性的认识和实际操作能力。
学生特点分析:考虑到学生处于高年级阶段,具备一定的计算机科学和信息科学基础知识,能够理解较为抽象的编码概念,并具有一定的逻辑思维能力。
教学要求:1. 结合学生特点,课程设计应注重理论与实践相结合,增强学生的实际操作能力。
2. 教学过程中注重启发式教学,引导学生主动探索和解决问题。
3. 通过小组合作和案例教学,培养学生的团队合作能力和实际应用能力。
二、教学内容1. 引言:介绍数据通信中冗余编码的概念及其重要性,明确CRC编码在保障数据传输正确性中的应用。
- 相关章节:教材第3章“数据通信基础”2. CRC编码原理:- 数学基础:多项式运算、模运算- 编码过程:生成多项式的选择、校验位的计算方法- 相关章节:教材第4章“循环冗余校验”3. CRC编码应用:- 在不同通信协议中的应用,如以太网、USB等- 数据存储中的错误检测,如硬盘、闪存等- 相关案例:实际通信过程中的错误检测与纠正4. 生成多项式及其特点:- 常用生成多项式介绍,如CRC-16、CRC-32- 生成多项式与校验能力的关系- 相关章节:教材第5章“常见冗余编码”5. 实践操作:- 使用计算器或编程工具进行CRC校验位计算- 案例分析与讨论:模拟数据传输错误,验证CRC编码的校验能力6. 小组合作与展示:- 学生分组,共同研究并解决特定问题- 各小组展示成果,交流学习心得教学内容安排与进度:第1课时:引言与CRC编码原理第2课时:CRC编码应用与生成多项式特点第3课时:实践操作与小组合作第4课时:小组展示与总结交流教学内容确保科学性和系统性,结合教材章节和实际案例,帮助学生扎实掌握CRC冗余编码知识,并提高实际应用能力。
【关键字】精品CRC校验1 设计任务和要求可以对内存中的一段数据计算出校验和(CRC校验),通过修改某个值验证该校验和是否正确。
2 原理分析及程序设计2.1原理分析2.1.1 CRC简介CRC的全称为Cyclic Redundancy Check,中文名称为循环冗余校验,是一种利用除法及余数的原理来作错误侦测的编码,由于CRC易于用二进制的电脑硬件使用、容易进行数学分析并且尤其善于检测传输通道干扰引起的错误,编码和解码方法简单,检错和纠错能力强,在各个领域广泛地应用。
比如在我们解压一个RAR文件的时候,有时就会遇到CRC错误的提示。
CRC“校验和”是两个数据流采用二进制除法相除所得到的余数,其中被除数是需要计算校验和的信息数据流的二进制表示;除数是一个长度为n + 1的预定义的二进制数,通常用多项式的系数来表示。
2.1.2 CRC计算方法在代数编码理论中,将一个码组表示为一个多项式,码组中各码元当作多项式的系数。
例如1100101 可以表示为1·x6+1·x5+0·x4+0·x3+1·x2+0·x+1,即x6+x5+x2+1。
设编码前的原始信息多项式为P(x),P(x)的最高幂次加1等于k;生成多项式为G(x),G(x)的最高幂次等于r;CRC多项式为R(x);编码后的带CRC的信息多项式为T(x)。
计算方法是将P(x)乘以xr(即对应的二进制码序列左移r位),再除以G(x),所得余式即为R(x),R(x)即为所要求的CRC,其关系为:举例来说,设信息码为1100,生成多项式为1011,即,,计算CRC的过程为:即R(x)=x。
注意到G(x)最高幂次r=3,得出CRC为010。
2.2 程序设计2.2.1 CRC计算程序的编写明白原理之后,就可以写出算法了,当然不能如计算一样用除法来进行计算,因为寄存器的限制,不能处理很长的一串数据;可以用XOR运算来代替减法计算,但是基于位运算的算法是非常慢的而且效率低下,内存空间足够的情况下,可以采用查表法来计算满足速度要求,由于算法的每一步递推都是以字节为单位的,这样就比传统的以位为单位的算法要快上十几倍。
东北大学秦皇岛分校计算机与通信工程学院计算机组成原理课程设计课题:指令系统及总线设计专业名称计算机科学与技术班级学号2133301学生姓名耿晓天指导教师李佳音设计时间2016.1.5-2016.1.11东北大学秦皇岛分校课程设计任务书专业:计算机与通信工程学院学号:2133301学生姓名:耿晓天设计题目:指令系统及累加器设计一、设计实验条件808实验室硬件:PC机软件:Xilinx ISE ModelSim编程语言:VHDL二、设计任务及要求1.8号指令的设计;2.31号指令的设计;3.48号指令的设计;4.52号指令的设计;5.地址总线与控制总线;6. CRC码生成与校验电路,生成多项式G=1011,数据4位。
三、设计报告的内容1.设计题目与设计任务题目:1、16位模型机设计-指令系统及计数器设计指令编号助记符指令类型功能寻址方式8 ADD A,#II 算术运算指令将立即数II加入累加器A中立即数寻址31 MOV A,MM 逻辑运算指令将存储器MM地址的值送到累加器A中直接寻址48 CALLMM 逻辑运算指令调用MM地址的子程序直接寻址52 RET 逻辑运算指令子程序返回间接寻址2.地址总线与控制总线;3. 3. CRC码生成与校验电路,生成多项式G=1011,数据4位。
4.前言(绪论)1.融会贯通计算机组成原理课程的内容,通过知识的综合运用,加深对计算机系统各个模块的工作原理及相互联系的认识;2.学习运用VHDL进行FPGA/CPLD设计的基本步骤和方法,熟悉EDA的设计、模拟调试工具的使用,体会FPGA/CPLD技术相对于传统开发技术的优点;3.培养科学研究的独立工作能力,取得工程设计与组装调试的实践经验。
5.设计主体整机逻辑结构框图:图1芯片引脚:图2 CPU逻辑结构框图:图3【设计指令系统】1、指令系统设计指令类型及寻址方式见上表2、微操作控制信号1、XRD :外部设备读信号,当给出了外设的地址后,输出此信号,从指定外设读数据。
CRC网络课程设计一、课程目标知识目标:1. 让学生掌握CRC(循环冗余校验)的基本概念,理解其在数据通信中的重要作用。
2. 学会运用CRC算法进行数据校验,并能解释校验过程。
3. 了解不同类型的CRC码,并能够根据实际需求选择合适的CRC码。
技能目标:1. 培养学生运用CRC算法进行数据校验的能力,提高数据传输的准确性。
2. 培养学生通过查阅资料、合作学习等方式,解决实际通信中CRC相关问题。
情感态度价值观目标:1. 激发学生对计算机网络和数据通信的兴趣,培养其探索精神和求知欲。
2. 培养学生的团队协作意识,使其在合作学习过程中,学会互相尊重、互相帮助。
3. 增强学生的信息安全意识,认识到数据传输安全的重要性。
课程性质:本课程为计算机网络基础课程,旨在帮助学生掌握CRC相关知识点,提高数据通信能力。
学生特点:学生为初中生,对计算机网络有一定了解,具备基本的计算机操作能力,但可能对CRC算法了解较少。
教学要求:结合学生特点,采用生动形象的教学方法,注重理论与实践相结合,充分调动学生的主观能动性,提高其知识水平和实践能力。
在教学过程中,关注学生的学习进度,及时调整教学策略,确保课程目标的实现。
将课程目标分解为具体的学习成果,便于后续教学设计和评估。
二、教学内容1. 引入CRC基本概念:讲解CRC的定义、作用以及在数据通信中的应用场景。
关联教材章节:第三章 数据通信基础,第五节 数据校验2. CRC算法原理与计算过程:详细讲解CRC算法的工作原理,引导学生通过实例分析,掌握计算过程。
关联教材章节:第三章 数据通信基础,第五节 数据校验3. 常见CRC码类型:介绍几种常见的CRC码,如CRC-8、CRC-16、CRC-32等,并分析各自的特点。
关联教材章节:第三章 数据通信基础,第五节 数据校验4. CRC应用案例分析:通过实际案例,展示CRC在数据通信中的重要作用,让学生更好地理解CRC的应用场景。
crc校验的原理
CRC校验的原理
CRC校验(Cyclic Redundancy Check)是一种广泛应用于数据传输和存储中的错误检测技术。
其原理是通过对数据进行一系列计算,生成一个校验值,将该校验值与接收到的数据进行比对,从而判断数据是否在传输过程中发生了错误。
CRC校验的核心思想是利用多项式除法来生成校验值。
在发送端,首先选择一个固定长度的生成多项式,通常是一个二进制数。
然后将需要传输的数据按照该生成多项式进行计算,得到余数作为校验值添加到数据末尾一起发送出去。
在接收端,同样使用相同的生成多项式对接收到的数据进行计算,得到余数,如果余数为零,则表明数据在传输过程中没有发生错误,否则说明数据存在错误。
CRC校验通过选取适当的生成多项式可以有效地检测出常见的数据传输错误,如单比特错误、双比特错误等。
不仅如此,CRC校验还可以提高数据的完整性和可靠性,确保数据在传输过程中不会被篡改或损坏。
在实际应用中,CRC校验被广泛应用于网络通信、存储系统、无线通信等领域。
例如,在以太网中,数据帧的尾部就包含了一个32位的CRC校验码,用于检测数据在传输过程中是否出现错误。
在存储系统中,硬盘、光盘等设备也会采用CRC校验来确保数据的可靠
性。
总的来说,CRC校验作为一种简单而有效的错误检测技术,已经成为现代通信系统中不可或缺的一部分。
通过对数据进行校验,可以保证数据的完整性和可靠性,有效地防止了因传输错误引起的数据损坏和丢失,提高了数据传输的准确性和稳定性。
CRC校验的原理虽然简单,但却在实际应用中发挥着重要的作用,为数据通信领域的发展做出了重要贡献。
CRC码生成与校验电路的设计与实现CRC码(Cyclic Redundancy Check)是一种常用于错误检测的校验码。
在数据通信和存储领域广泛应用。
CRC码生成与校验电路的设计与实现是指设计并搭建能够正确生成和校验CRC码的电路。
本文将从CRC码的原理、设计方案、实现步骤以及一些应用举例进行详细说明。
一、CRC码的原理CRC码利用除法操作来生成校验码,基本原理如下:1.以二进制形式将待传输或存储的数据进行编码表示。
2.选定一个固定的生成多项式G(x)。
3.将编码后的数据与生成多项式进行除法运算,得到余数,将余数添加到编码数据末尾,形成含有校验码的编码数据。
4.接收端根据相同的生成多项式进行除法运算,得到余数,如果余数为零,则认为数据传输或存储没有错误,否则,认为有错误发生。
二、CRC码的设计方案根据CRC码的原理,我们可以进行如下的设计方案:1.确定生成多项式。
生成多项式的选择非常重要,通常使用CRC-16或CRC-32等标准的生成多项式。
不同的生成多项式会导致CRC码的性能不同,可以根据需要进行选择。
2.确定初始寄存器值。
初始寄存器值决定了CRC码的初始状态,常见的初始值为全1或全0。
3.实现生成多项式的除法运算。
可以利用硬件电路或软件算法来实现多项式的除法运算。
硬件电路比较高效,适合于大规模的数据传输或存储系统。
三、CRC码的实现步骤CRC码的实现一般包括以下步骤:1.初始化寄存器值为初始值。
2.读入待编码数据。
3.将待编码数据与寄存器值进行异或操作。
4.判断待编码数据的最高位是否为1,如果为1,则将生成多项式与寄存器值进行异或操作,否则,寄存器值左移一位。
5.重复以上步骤,直到所有待编码数据被处理完毕。
6.将最终的寄存器值添加到编码数据末尾,形成含有校验码的编码数据。
四、CRC码的应用举例CRC码广泛应用于数据通信和存储领域,以下是一些应用举例:1.以太网通信:在以太网通信中,CRC码用于检测数据在传输过程中的错误。
课程设计报告课程设计名称:计算机组成原理课程设计课程设计题目:CRC码生成与校验电路的设计院(系):专业:班级:学号:姓名:指导教师:完成日期:目录第1章总体设计方案 (1)1.1设计原理 (1)1.2设计思路 (2)1.3设计环境 (3)第2章详细设计方案 (6)2.1顶层方案图的设计与实现 (6)2.1.1创建顶层图形设计文件 (6)2.1.3编译、综合、适配 (9)2.2功能模块的设计与实现 (9)2.2.1模2除法器的设计与实现 (9)2.2.2移位寄存器的设计与实现 (11)2.3仿真调试 (13)第3章编程下载与硬件测试 (15)3.1编程下载 (15)3.2硬件测试及结果分析 (15)参考文献 (17)附录(电路原理图) (18)第1章 总体设计方案1.1 设计原理循环冗余校验码(cyclic redundancy check,CRC)简称为循环码或CRC 码。
二进制信息沿一条信号线逐位在设备之间传送称为串行传送,CRC 码常用于串行传送过程中的检错与纠错。
CRC 码的编码格式如图1.1所示,是在k 位有效数据之后添加r 位校验码,形成总长度为n 的CRC 码,简写作C(n,k)码。
CRC 编码的关键技术在于如何从k 位信息简便的得到r 位校验码,并根据总长度为n 的CRC 码进行纠错。
图1.1设被校验的数据0121...D DD D D k k --=是一个k 位的二进制代码,将它表示为一个(k-1)阶的多项式0112211......)(D x D x D x D x M k k k k +++++=---- (1-1)多项式(1-1)中的系数D 的取值为0或1,与被校验的数据M 一一对应;式中的x 是一个伪变量,用ix 指明各位的位置。
设校验码P 长度为r ,将被校验数据D 左移r 位后的结果为位r k k D D D D 00...00...0121--将D 左移r 位的目的是给D 右边添加r 个0,形成(k+r)位长度二进制代码,其多项式形式为M(x )×rx 。
计算机组成原理数据校验实验
计算机组成原理中的数据校验是指通过一定的算法和技术来确保数据在传输或存储过程中的完整性和准确性。
常见的数据校验方法包括奇偶校验、循环冗余校验(CRC)、校验和等。
在实验中,可以选择其中一种数据校验方法,比如奇偶校验,进行实际操作。
首先,需要准备一些数据,可以是一段文本或者一组数字。
然后,通过编程或者计算器等工具,对这些数据进行奇偶校验的计算,得到校验位。
接着,将包含校验位的数据传输或存储到另一个地方,然后再对接收到的数据进行校验,验证数据的完整性。
在实验过程中,需要注意以下几点:
1. 确保对所选数据校验方法的原理和算法有充分的理解,包括如何计算校验位以及如何验证数据的完整性。
2. 确保选择的数据能够清晰地展示数据校验的过程和结果,便于实验的进行和观察。
3. 实验过程中要注意记录每一步的操作和结果,包括原始数据、计算得到的校验位、传输或存储后的数据以及验证结果,以便后续
分析和总结。
通过这样的实验,可以加深对计算机组成原理中数据校验方法
的理解,同时也能够锻炼实际操作和数据处理的能力。
同时,也可
以思考不同数据校验方法的适用场景和特点,为今后的实际应用打
下基础。
CRC校验原理及步骤标准化管理处编码[BBX968T-XBB8968-NNJ668-MM9N]CRC校验原理及步骤什么是CRC校验CRC即循环冗余校验码:是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。
循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。
CRC校验原理:其根本思想就是先在要发送的帧后面附加一个数(这个就是用来校验的校验码,但要注意,这里的数也是二进制序列的,下同),生成一个新帧发送给接收端。
当然,这个附加的数不是随意的,它要使所生成的新帧能与发送端和接收端共同选定的某个特定数整除(注意,这里不是直接采用二进制除法,而是采用一种称之为“模2除法”)。
到达接收端后,再把接收到的新帧除以(同样采用“模2除法”)这个选定的除数。
因为在发送端发送数据帧之前就已通过附加一个数,做了“去余”处理(也就已经能整除了),所以结果应该是没有余数。
如果有余数,则表明该帧在传输过程中出现了差错。
模2除法:模2除法与算术除法类似,但每一位除的结果不影响其它位,即不向上一位借位,所以实际上就是异或。
在循环冗余校验码(CRC)的计算中有应用到模2除法。
例:CRC校验步骤:CRC校验中有两个关键点,一是预先确定一个发送送端和接收端都用来作为除数的二进制比特串(或多项式),可以随机选择,也可以使用国际标准,但是最高位和最低位必须为1;二是把原始帧与上面计算出的除数进行模2除法运算,计算出CRC码。
具体步骤:1. 选择合适的除数2. 看选定除数的二进制位数,然后再要发送的数据帧上面加上这个位数-1位的0,然后用新生成的帧以模2除法的方式除上面的除数,得到的余数就是该帧的CRC校验码。
注意,余数的位数一定只比除数位数少一位,也就是CRC校验码位数比除数位数少一位,如果前面位是0也不能省略。
CRC校验课程设计verilog一、教学目标本课程的目标是让学生掌握CRC校验的基本原理,并能够使用Verilog进行CRC校验器的设计和仿真。
通过本课程的学习,学生应能够:1.描述CRC校验的基本原理和流程。
2.理解CRC校验码的生成方法和步骤。
3.使用Verilog编写CRC校验器的模块代码。
4.进行CRC校验器的仿真测试,验证其正确性。
二、教学内容本课程的教学内容主要包括以下几个部分:1.CRC校验的基本原理:介绍CRC校验的定义、原理和流程,以及CRC校验码的生成方法和步骤。
2.Verilog的基本语法:回顾Verilog的基本语法和编程技巧,为后续的CRC校验器设计打下基础。
3.CRC校验器的设计:讲解如何使用Verilog编写CRC校验器的模块代码,包括CRC校验码的生成和检查。
4.CRC校验器的仿真:介绍如何使用仿真工具进行CRC校验器的仿真测试,验证其正确性。
三、教学方法为了激发学生的学习兴趣和主动性,本课程将采用多种教学方法相结合的方式进行教学。
包括:1.讲授法:讲解CRC校验的基本原理和Verilog的基本语法。
2.案例分析法:通过分析实际案例,让学生理解CRC校验器的设计方法和步骤。
3.实验法:让学生动手编写Verilog代码,进行CRC校验器的仿真测试。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将准备以下教学资源:1.教材:选用《数字逻辑与计算机设计》作为主要教材,介绍CRC校验的基本原理和Verilog的语法。
2.参考书:提供《Verilog HDL权威指南》等参考书籍,供学生深入学习Verilog编程。
3.多媒体资料:制作PPT课件,生动展示CRC校验的基本原理和设计方法。
4.实验设备:提供计算机和仿真工具,让学生进行CRC校验器的仿真测试。
五、教学评估本课程的教学评估将采用多元化的评估方式,以全面、客观、公正地评价学生的学习成果。
评估方式包括:1.平时表现:通过课堂参与、提问、讨论等方式评估学生的学习态度和积极性。
沈阳航空航天大学课程设计报告课程设计名称:计算机组成原理课程设计课程设计题目:CRC生成与校验的设计实现院(系):计算机学院专业:计算机科学与技术班级:学号:姓名:指导教师:说明:结论(优秀、良好、中等、及格、不及格)作为相关教环节考核必要依据;格式不符合要求;数据不实,不予通过。
报告和电子数据必须作为实验现象重复的关键依据。
学术诚信声明本人声明:所呈交的报告(含电子版及数据文件)是我个人在导师指导下独立进行设计工作及取得的研究结果。
尽我所知,除了文中特别加以标注或致谢中所罗列的内容以外,报告中不包含其他人己经发表或撰写过的研究结果,也不包含其它教育机构使用过的材料。
与我一同工作的同学对本研究所做的任何贡献均己在报告中做了明确的说明并表示了谢意。
报告资料及实验数据若有不实之处,本人愿意接受本教学环节“不及格”和“重修或重做”的评分结论并承担相关一切后果。
本人签名: 日期:年月日课程设计总结:一开始老师的要求要用modelsim进行仿真,不得不安装新的软件,各种尝试进行破解终于是能使用了。
然后借《Verilog HDL设计与实战》学习verilog,发现和c语言很类似,从初步构思到一步步完善直到最后完成整个课程设计,让我更好的巩固了自己所学的知识。
翻阅图书去学习一些没有接触过的知识让我更好的了解了这门课程,增强的实践动手能力。
在老师和同学的帮助下,从编程到仿真一步一步的去实现课设任务。
本学期开设的计算机组成原理课程,让我不但从概念上掌握了计算机内部的工作机制,并且能够学以致用,自主完成这次课程设计。
虽然过程中有迷茫,但是作为一名合格的学生,我坚信我可以做到。
在老师和同学的帮助下,我没有胆怯,一步步踏踏实实的完成老师分配的工作。
不抛弃不放弃,坚持不懈,只有这样的态度,在面对无论是来自学习还是生活的困难,我们才能克服它们,完成自我的升华。
指导教师评语:指导教师(签字):年月日课程设计成绩目录第1章总体设计方案 ....................................................................................... - 1 -1.1设计原理 (1)1.2设计思路 (1)1.3设计环境 (2)第2章详细设计方案 ....................................................................................... - 4 -2.1CRC码的生成 . (4)2.2CRC码的检测 (5)第3章调试与仿真........................................................................................... - 6 -3.1程序调试 .. (6)3.2程序测试及结果分析 (6)参考文献 ........................................................................................................... - 10 -附录(源代码)........................................................................................... - 11 -第1章 总体设计方案1.1 设计原理CRC 码即循环冗余码,可以发现信息在存储或传送过程中连续出现的多为错误代码,在磁介质存储器和计算机之间的通信方面得到广泛应用。
crc校验码课程设计CRC校验码课程设计引言:CRC校验码是一种常用的差错检测方法,被广泛应用于数据传输领域。
本文将介绍CRC校验码的原理,设计并实现一个简单的CRC 校验码算法,以及验证算法的效果。
一、CRC校验码的原理CRC(Cyclic Redundancy Check)校验码是一种基于多项式除法的差错检测方法。
它通过将待传输的数据与一个固定的生成多项式进行除法运算,得到校验结果,附加在数据后面进行传输。
接收端再次进行除法运算,通过比较余数是否为0来判断数据是否出现了错误。
二、CRC校验码算法设计1. 数据的表示在CRC校验码算法中,数据通常被表示为二进制数列。
例如,待传输的数据为101101,则可以用二进制数列[1, 0, 1, 1, 0, 1]表示。
2. 生成多项式的选择选择一个合适的生成多项式是CRC校验码算法的关键。
常用的生成多项式有CRC-8、CRC-16和CRC-32等。
本文以CRC-8为例进行说明。
3. 算法步骤(1)在待传输数据后面附加8位全0的校验码。
(2)将数据与生成多项式进行除法运算,得到余数。
(3)将余数替换原来的校验码,得到最终的校验码。
(4)将待传输数据和校验码一起发送。
三、CRC校验码算法实现1. 算法伪代码以下是一个简单的CRC校验码算法的实现伪代码:```function CRC(data):remainder = datafor i from 1 to length(data):if remainder[0] = 1:remainder = XOR(remainder, generator) remainder = shift(remainder)return remainderdata = 输入待传输的数据generator = 选择生成多项式remainder = CRC(data)transmit_data = data + remainder```2. 算法实现示例以下是一个使用Python语言实现的CRC校验码算法的示例:```def crc(data, generator):remainder = datafor i in range(len(data)):if remainder[0] == '1':remainder = xor(remainder, generator)remainder = shift(remainder)return remainderdef xor(a, b):result = []for i in range(len(a)):if a[i] == b[i]:result.append('0')else:result.append('1')return ''.join(result)def shift(data):return data[1:] + '0'data = '101101'generator = '100110001'remainder = crc(data, generator)transmit_data = data + remainderprint("待传输的数据:", data)print("生成多项式:", generator)print("校验码:", remainder)print("传输数据:", transmit_data)```四、验证算法的效果1. 数据传输过程假设发送端传输的数据为101101,生成多项式为100110001。
东北大学秦皇岛分校计算机与通信工程学院计算机组成原理课程设计课题:指令系统及总线设计专业名称计算机科学与技术班级学号2153203学生姓名石新禹指导教师万聪设计时间2016.1.5-2016.1.11东北大学秦皇岛分校课程设计任务书专业:计算机与通信工程学院学号:2153203学生姓名:石新禹设计题目:指令系统及总线设计一、设计实验条件综合楼1208硬件:PC机软件:Xilinx ISE ModelSim编程语言:VHDL二、设计任务及要求1.8号指令的设计;2.31号指令的设计;3.48号指令的设计;4.52号指令的设计;5.地址总线与控制总线;6. CRC码生成与校验电路,生成多项式G=1011,数据4位。
三、设计报告的内容1.设计题目与设计任务题目:1、16位模型机设计-指令系统及计数器设计指令编号助记符指令类型功能寻址方式8 ADD A, #II 算术运算指令将立即数II加入累加器A中立即数寻址31 MOV A, EM 逻辑运算指令将存储器MM 地址的值送到累加器A中直接寻址48 CALL EM 逻辑运算指令调用MM地址的子程序直接寻址52 RET 逻辑运算指令子程序返回间接寻址2.地址总线与控制总线;3.CRC码生成与校验电路,生成多项式G=1011,数据4位。
4.前言(绪论)1.融会贯通计算机组成原理课程的内容,通过知识的综合运用,加深对计算机系统各个模块的工作原理及相互联系的认识;2.学习运用VHDL进行FPGA/CPLD设计的基本步骤和方法,熟悉EDA的设计、模拟调试工具的使用,体会FPGA/CPLD技术相对于传统开发技术的优点;3.培养科学研究的独立工作能力,取得工程设计与组装调试的实践经验。
2.设计主体整机逻辑结构框图:图1芯片引脚:图2 CPU逻辑结构框图:图3【设计指令系统】1、指令系统设计指令类型及寻址方式见上表2、微操作控制信号1、XRD : 外部设备读信号,当给出了外设的地址后,输出此信号,从指定外设读数据。
2、EMWR : 程序存储器EM 写信号。
3、EMRD : 程序存储器EM 读信号。
4、PCOE : 将程序计数器PC 的值送到地址总线ABUS 上(MAR)。
5、EMEN : 将程序存储器EM 与数据总线DBUS 接通,由EMWR 和EMRD 决定是将DBUS 数据 EM 中,还是从EM 读出数据送到DBUS 。
6、IREN : 将程序存储器EM 读出的数据打入指令寄存器IR 。
7、EINT : 中断返回时清除中断响应和中断请求标志,便于下次中断。
8、ELP : PC 打入允许,与指令寄存器IR3、IR2位结合,控制程序跳转。
9、FSTC :进位置1,CY=1 10、FCLC :进位置0,CY=011、MAREN :将地址总线ABUS 上的地址打入地址寄存器MAR 。
12、MAROE :将地址寄存器MAR 的值送到地址总线ABUS 上。
13、OUTEN :将数据总线DBUS 上数据送到输出端口寄存器OUT 里。
14、STEN : 将数据总线DBUS 上数据存入堆栈寄存器ST 中。
15、RRD : 读寄存器组R0-R3,寄存器R?的选择由指令的最低两位决定。
16、RWR : 写寄存器组R0-R3,寄存器R?的选择由指令的最低两位决定。
17、CN : 决定运算器是否带进位移位,CN=1带进位,CN=0不带进位。
18、FEN : 将标志位存入ALU 内部的标志寄存器。
19、WEN : 将数据总线DBUS 的值打入工作寄存器W 中。
20、AEN : 将数据总线DBUS 的值打入累加器A 中。
21-23:X2~ X0 :X2、X1、X0三位组合来译码选择将数据送到DBUS 上的寄存器。
24-26:S2~ S0 :S2、S1、S0三位组合决定ALU 做何种运算。
3、指令执行流程4. 指令执行8 ADD A, #II 将立即数II 加入累加器A 中 000111XX 101T5 PC->MAR PCOE MARENT4 EM->DBUS->W PC+1 EMEN EMRD WEN T3 A+W->ALU ALU->DBUS->A X=100,S=000, AEN31 MOV A, EM 将存储器EM 地址中的值送入A 中 011110XX111T7 PC->MAR PCOE MAREN T6 EM →W PC + 1 EMEN EMRD WENT5 W->MAR MAREN T4 EM->W EMEN,WENT3 W->DBUS->A AEN48 CALL EM 调用EM 地址的子程序 101111XX 110T6 PC->MAR PCOE MARENT5 EM->DBUS->W PC+1 EMRD EMEN WEN T4 PC->DBUS->ST PCOE,X=011,STENT3 W->DBUS->PC ELP52 RET 子程序返110011 011 T3 ST →DBUS →PC X=011,STEN,X=010,ELP流程图5.组合逻辑控制器设计:假设该模型机采用组合逻辑控制器,根据指令执行流程,划分机器周期及节拍,安排操作时序表,写出每个控制信号的逻辑表达式。
控制信号 M0 M1T2 T1 T0 T7 T6 T5 T4 T3XRDEMWREMRD ALL 31 48 8PCOE ALL 31 48 8 48EMEN ALL 31 48 8/31IREN ALLEINTELP 48/52 FSTCFCLCMAREN ALL 31 48 8/31MAROEOUTERSTEN 48 52 RRDRWRCNFENWEN ALL 31 48 8/31AEN 8/31WARENX2~X0 48 8/52S2~S0 8/52说明:依据指令执行流程,此处3条指令都被划分成两个指令周期,其中第一个周期中有3个节拍,第二个周期中有5个节拍。
控制信号的逻辑表达式如下:EMRD=M0*T1+INS31*M1*T6+INS48*M1*T5+INS8*M1*T4;PCOE=M0*T2+INS31*M1*T7+INS48*M1*T6+INS8*M1*T5+INS48*M1*T4;EMEN=M0*T1+INS31*M1*T6+INS48*M1*T5+I(NS8+INS31)*M1*T4;IREN=M0*T0;ELP=(INS48+INS52)*M1*T1;MAREN=M0*T2+INS31*M1*T7+INS48*M1*T6+(INS8+INS31)*T5;STEN=INS48*M1*T4+INS52*M1*T5;WEN=M0*T1+INS31*M1*T6+INS48*M1*T5+(INS8+INS31)*M1*T4;AEN=(INS8+INS31)*M1*T3;X2~X0=INS48*M1*T4+(INS8+INS52)*M1*T3;S2~S0=(INS48+INS52)*M1*T3;6、微程序控制器设计:假设该模型机采用微程序控制器,根据指令执行流程,安排微指令格式,为每条微指令安排微地址及下址,设计微地址修改逻辑。
假设微指令采用水平格式,操作控制字段采用直接表示法,后继微地址采用断点方式获得,采用T1、T2两级时序系统,T1取微指令,T2执行微指令并在此周期修改微地址形成后继微地址。
微指令格式分为三个字段:微指令字段:5位,对应26个微信号。
下地址字段:6位,对应64条微指令。
转移控制字段:2位,用于控制下地址的形成。
微命令字段(5位) A5A4A3A2A1A0P1P0【模型及实现(地址总线及指令总线】一、指令总线1.逻辑电路图2.波形图结果分析:CLK为时钟信号,在信号发生改变的时候获取输入数据;ICEN为选择信号,在ICEN为1时,把DBUS的值送给IR;在ICEN为0时把INT_CODE的值送给IR。
这里为了表示方便,把DBUS和INT_CODE的值都设置为一个比特位。
entity yang isPort (CLK : in STD_LOGIC;ICEN : in STD_LOGIC;INT_CODE : in STD_LOGIC; DBUS : in STD_LOGIC;IR : out STD_LOGIC);end yang;architecture Behavioral of yang is Beginprocess (DBUS,INT_CODE,ICEN,CLK) Beginif CLK ' EVENT AND CLK = '1' THENIf ICEN ' EVENT AND ICEN='1' then IR<=DBUS;ElseIR<=INT_CODE;end if;end process;end Behavioral;二、地址总线1.逻辑电路图2.波形图EMEN是控制信号,在EMEN为1的时候,将MAR的值送给EM;否则,不做任何操作。
VHDL描述:entity ABUS isPort ( MAR : in STD_LOGIC;EMEN : in STD_LOGIC;CLK : in STD_LOGIC;EM : out STD_LOGIC);end ABUS;architecture Behavioral of ABUS isbeginprocess(CLK,EMEN,MAR)beginIf CLK ' EVENT AND CLK = '1' AND EMEN ' EVENT AND EMEN='1' thenEM<=MAR;end if;end process;end Behavioral;【模型及实现CRC生成与校验】一、CRC生成器-- Company:-- Engineer:---- Create Date: 14:01:31 12/28/2017-- Design Name:-- Module Name: SHIFT - Behavioral-- Project Name:-- Target Devices:-- Tool versions:-- Description:---- Dependencies:---- Revision:-- Revision 0.01 - File Created-- Additional Comments:------------------------------------------------------------------------------------ library IEEE;use IEEE.STD_LOGIC_1164.ALL;-- Uncomment the following library declaration if using-- arithmetic functions with Signed or Unsigned values--use IEEE.NUMERIC_STD.ALL;-- Uncomment the following library declaration if instantiating -- any Xilinx primitives in this code.--library UNISIM;--use UNISIM.VComponents.all;entity SHIFT isPort ( shift_input : in STD_LOGIC_VECTOR (3 downto 0);shift_output: out STD_LOGIC_VECTOR(6 downto 0));end SHIFT;architecture Behavioral of SHIFT isbeginP1:process(shift_input)variable n:STD_LOGIC_VECTOR(3 downto 0);--被除数variable m:STD_LOGIC_VECTOR(3 downto 0);--得到的余数variable i:integer;beginn := shift_input;i:=0;while(i<4)loopif(n(3)='1')thenm(3) := n(3) xor '1';m(2) := n(2) xor '0';m(1) := n(1) xor '1';m(0) := n(0) xor '1';elsem:=n;end if;n(3) := m(2);n(2) := m(1);n(1) := m(0);n(0) := '0';i:=i+1;end loop;shift_output(5)<= shift_input(2); shift_output(4)<= shift_input(1); shift_output(3)<= shift_input(0); shift_output(2)<= m(2);shift_output(1)<= m(1);shift_output(0)<= m(0);end process;end Behavioral;逻辑图RTL图测试图2、CRC生成器-- Company:-- Engineer:---- Create Date: 17:50:45 12/28/2017-- Design Name:-- Module Name: CRC - Behavioral-- Project Name:-- Target Devices:-- Tool versions:-- Description:---- Dependencies:---- Revision:-- Revision 0.01 - File Created-- Additional Comments:------------------------------------------------------------------------------------ library IEEE;use IEEE.STD_LOGIC_1164.ALL;-- Uncomment the following library declaration if using-- arithmetic functions with Signed or Unsigned values--use IEEE.NUMERIC_STD.ALL;-- Uncomment the following library declaration if instantiating -- any Xilinx primitives in this code.--library UNISIM;--use UNISIM.VComponents.all;entity CRC isPort ( crc_input : in STD_LOGIC_VECTOR(6 downto 0);crc_output : out STD_LOGIC_VECTOR(2 downto 0);crc_clk : in STD_LOGIC);end CRC;architecture Behavioral of CRC isbeginprocess(crc_clk , crc_input)variable x : STD_LOGIC_VECTOR(6 downto 0);variable y : STD_LOGIC_VECTOR(3 downto 0);variable i : INTEGER;beginif crc_clk ' event and crc_clk = '1' thenx := crc_input;for i in 6 downto 3 loopif x(i)= '1' theny := x(i downto i-3) xor "1011";elsey := x(i downto i-3);end if;x(i-1 downto i-3) := y(2 downto 0);end loop;end if;case y(2 downto 0) iswhen "000" => crc_output <= "000";when "001" => crc_output <= "111";when "010" => crc_output <= "110";when "100" => crc_output <= "101";when "011" => crc_output <= "100";when "110" => crc_output <= "011";when "111" => crc_output <= "010";when others => crc_output <= "001";end case;end process;end Behavioral;逻辑图RTL图测试图四、设计时间与安排1、设计时间:2周2、设计时间安排:熟悉实验设备、收集资料:2 天设计图纸、实验、计算、程序编写调试:5 天编写课程设计报告:2 天答辩:1 天【总结】在课程设计期间我们组遇到了很多困难,很多东西都不会做。