组成原理课程设计指令总线及CRC校验
CRC码生成与效验电路的设计解读

沈阳航空工业学院课程设计报告课程设计名称:计算机组成原理课程设计课程设计题目: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校验程序设计要求。
二、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校验方式一、引言在数据通信中,为了保证数据的完整性和正确性,常常需要对数据进行校验。
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(循环冗余检查)的基本原理和计算方法,能够运用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.平时表现:通过观察学生在课堂上的参与程度、提问和回答问题的表现,了解学生的学习状态。
组成原理课设-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章编程下载与硬件测试 (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冗余编码课程设计

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校验

【关键字】精品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运算来代替减法计算,但是基于位运算的算法是非常慢的而且效率低下,内存空间足够的情况下,可以采用查表法来计算满足速度要求,由于算法的每一步递推都是以字节为单位的,这样就比传统的以位为单位的算法要快上十几倍。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
东北大学秦皇岛分校计算机与通信工程学院计算机组成原理课程设计课题:指令系统及总线设计专业名称计算机科学与技术班级学号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 天【总结】在课程设计期间我们组遇到了很多困难,很多东西都不会做。