ImageVerifierCode 换一换
格式:DOCX , 页数:37 ,大小:763.02KB ,
资源ID:29417953      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/29417953.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(华科组原课设报告.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

华科组原课设报告.docx

1、华科组原课设报告华科组原课设报告 题 目:5段流水CPU设计专 业:计算机科学与技术班 级:学 号:姓 名:电 话:邮 件:完成日期:2017-03-10 周五下午1课程设计概述1.1课设目的计算机组成原理是计算机专业的核心基础课。该课程力图以“培养学生现代计算机系统设计能力”为目标,贯彻“强调软/硬件关联与协同、以CPU设计为核心/层次化系统设计的组织思路,有效地增强对学生的计算机系统设计与实现能力的培养”。课程设计是完成该课程并进行了多个单元实验后,综合利用所学的理论知识,并结合在单元实验中所积累的计算机部件设计和调试方法,设计出一台具有一定规模的指令系统的简单计算机系统。所设计的系统能在

2、LOGISIM仿真平台和FPGA实验平台上正确运行,通过检查程序结果的正确性来判断所设计计算机系统正确性。课程设计属于设计型实验,不仅锻炼学生简单计算机系统的设计能力,而且通过进行中央处理器底层电路的实现、故障分析与定位、系统调试等环节的综合锻炼,进一步提高学生分析和解决问题的能力。1.2设计任务本课程设计的总体目标是利用FPGA以及相关外围器件,设计五段流水CPU,要求所设计的流水CPU系统能支持自动和单步运行方式,能正确地执行存放在主存中的程序的功能,对主要的数据流和控制流通过LED、数码管等适时的进行显示,方便监控和调试。尽可能利用EDA软件或仿真软件对模型机系统中各部件进行仿真分析和功

3、能验证。1.3设计要求(1)根据课程设计指导书的要求,制定出设计方案;(2)分析指令系统格式,指令系统功能。(3)根据指令系统构建基本功能部件,主要数据通路。(4)根据功能部件及数据通路连接,分析所需要的控制信号以及这些控制信号的有效形式;(5)设计出实现指令功能的硬布线控制器;(6)调试、数据分析、验收检查;(7)课程设计报告和总结。1.4技术指标(8)支持表 1.1前27条基本32位MIPS指令;(9)支持教师指定的4条扩展指令;(10)支持多级嵌套中断,利用中断触发扩展指令集测试程序;(11)支持5段流水机制,可处理数据冒险,结构冒险,分支冒险;(12)能运行由自己所设计的指令系统构成的

4、一段测试程序,测试程序应能涵盖所有指令,程序执行功能正确。(13)能运行教师提供的标准测试程序,并自动统计执行周期数(14)能自动统计各类分支指令数目,如不同种类指令的条数、冒险冲突次数、插入气泡数目、load-use冲突次数、动态分支预测流水线能自动统计预测成功与失败次数。表 1.1 指令集#指令助记符简单功能描述备注1ADD加法指令格式参考MIPS32指令集,最终功能以MARS模拟器为准。2ADDI立即数加3ADDIU无符号立即数加4ADDU无符号数加5AND与6ANDI立即数与7SLL逻辑左移8SRA算数右移9SRL逻辑右移10SUb减11OR或12ORI立即数或13NOR或非14LW加

5、载字15SW存字16BEQ相等跳转17BNE不相等跳转18SLT小于置数19STI小于立即数置数20SLTU小于无符号数置数21J无条件转移22JAL转移并链接23JR转移到指定寄存器If $v0=10 halt(停机指令)else 数码管显示$a0值24SYSCALL系统调用25MFC0访问CP0中断相关,可简化,选做26MTC0访问CP0中断相关,可简化,选做27ERET中断返回异常返回,选做28扩展指令:SLLV逻辑可变左移29扩展指令:SUBU无符号减30扩展指令:LH加载半字31扩展指令:BLEZ小于等于0是转移2总体方案设计2.1扩展指令设计在本次实验中首先需要完成单周期CPU的设

6、计,然后在其基础之上完成老师布置的4条扩展指令的添加,对于单周期CPU的设计在组成原理实验中已经做了详细介绍,这里不再赘述。主要介绍四条扩展指令的设计有实现。为了实现实验课程的连贯性,这里给出单周期CPU设计的总体结构图如图2.1所示。在单周期的基础之上添加4条扩展指令主要有运算指令2条,存储访问指令1条,跳转指令1条。图 2.1 总体结构图2.1.1数据通路的设计在单周期CPU的基础之上,添加4条扩展指令,主要包括运算指令SLLV,SUBU。存储访问指令LH,以及跳转指令BLEZ。下面给出四条扩展指令的数据通路。表 2.2指令系统数据通路指令PCRFALUDMR1#R2#W#DinABOPA

7、ddrDinSLLVpc+4rsrtrdALUR2#R1#0000无无SUBUpc+4rsrtrdALUR2#R1#0110无无LHpc+4base无rtMemoryR1#立即数0101ALU无BLEZpc+立即数rs无无无无无无无无2.1.2控制器的设计当完成扩展指令的数据通路时,接下来就需要完成对数据通路以及运算器的控制。对于控制信号进行统计,包括各个主要部件所需要输入的控制信号,以及数据通路合并表中所示的具有多输入的主要部件需要进行输入选择的控制信号,并且对各个统计信号的各种取值情况进行定义,单周期CPU中的部分控制信号在组成原理实验报告中已经完成这里不再赘述,此处只对4条扩展指令的控制

8、信号进行描述其中的SUBU扩展指令没用新的控制信号。统计得到的控制信号以及说明如表 2.3。表 2.3主控制器控制信号的作用说明控制信号取值说明SLLV0寄存器堆R2或者0-15的扩展,或者6-10的扩展1寄存器堆R1LH0数据来自ALU或者memory1数据来自ALU或者memory将0-15扩展为32位数据BLEZ0PC+4进行更新PC1PC+4后的值加上来自指令的0-15的扩展更新PC对照所有控制信号,依次分析各条指令,分析该指令执行过程中需要哪些控制信号,对于与本条指令无关的控制信号,控制信号的取值一律为0,以简化控制器电路的设计。对于单周期CPU的控制信号在组成原理实验中已经做了详细

9、描述,这里不再赘述,但对于扩展指令的数据通路的控制信号会做详细描述。该控制信号表的框架如表 2.4所示。表 2.4主控制器控制信号框架指令RALUopMemWriteMemReadDinBranchSYSCALLSLLVLHBLEZSLLV1000000无00100SUBU1011000无00000LH1010101无00010BLEZ0无00无100012.2中断机制设计2.2.1总体设计中断实验部分主要分为两部分,单机中断和多级中断,这里主要介绍多级中断的实现机制。多级中断主要包括如下几个阶段。(1)中断信号来临。(2)关中断,保护现场,设置新的屏蔽字,PC值压栈。(3)开中断,执行中断程

10、序。(4)关中断,恢复现场,开中断。(5)中断返回,回到断点PC,执行主程序。实验实现的3个中断分别编号为1号中断,2号中断,3号中断。优先级为:321。3号中断具有最高优先级。当执行主程序时具有最低优先级,级数为0级。当中断信号来临时可以打断主程序,优先级高的中断可以打断优先级低的中断,当有优先级更高的中断的时候转去执行优先级更高的中断,当优先级更高的中断执行完成之后,每次主程序被打断或者有优先级更高的中断打断优先级低的中断的时候,将当前的PC存放到一个特殊的寄存器的值进行压栈处理,EPC其实就是一个被调用者保护寄存器。在多级中断中,中断信号的产生,优先级的比较以及PC值的保存时使用硬件实现

11、的,其余是使用软件的方式实现的。2.2.2硬件设计(1)生成中断信号。本次实验需要实现的有3个中断信号,分别编号为1号中断,2号中断,3号中断。优先级为:321。3号中断具有最高优先级。当执行主程序时具有最低优先级,级数为0级。3个中断信号分别对应不同的中断子程序。中断信号的产生使用的是中断信号产生电路,中断信号产生电路使用的是老师给的参考资料的电路。中断信号发生电路具有统一的时钟断和不同的清零端,中断信号使用上升沿触发。(2)中断信号筛选。中断信号筛选电路需要实现中断信号的筛选,主要是当有优先级高的中断来临的时候转向去执行优先级更高的中断,如果有优先级低的中断来临着将中断信号压栈,如果是同级

12、中断,则忽略该中断。中断筛选电路的实现需要使用当前的中断优先级以及新中断的优先级还要使用到优先编码器,通过有线编码器决定中断信号的选择中断信号。(3)PC值的转变。在中断实验部分,转向到中断程序的PC值的过程是由硬件实现的。通过执行中断返回指令ERET指令,在物理电路中设计一个由ERET信号控制的控制信号,当执行ERET指令时,跳转到对应的PC值,这个PC值可能是优先级低的中断或者是主程序。2.2.3软件设计(1)开关中断。本次实验的开关中断是使用软件来实现,使用mfc0和mtc0实现中断的开关,但同时在硬件部分需要使用一个使能控制信号来控制中断信号这个使能信号需要结合软件部分进行使用。(2)

13、保护现场。当进入中断程序之前,需要进行现场的保存,如果不保护现场那么返回后以前的值没有了,也就不能恢复当断点的状态。现场保存主要是将各个寄存器的值进行压栈处理,数据堆栈通常放在数据存储器中。MIPS处理器的堆栈是向下生长的,因此SP寄存器初始指向存储器的最高地址,每保存一个值,SP要减4;出栈时则SP加4。2.3流水CPU设计2.3.1总体设计在本次实验中,需要完成流水CPU的设计。流水CPU的设计是建立在单周期CPU并且增加4条扩展指令的基础之上的。由于设计的流水线是理想流水线,需要完成的指令是理想流水线的4条测试指令加上扩展的4条指令,理想流水线的设计主要部分是设计缓存寄存器组,主要包括5

14、个阶段的寄存器组:1.取指令阶段2.译码阶段3.执行运算4.访存阶段5.结果回写阶段。5个阶段的数据保存根据需要完成的指令来决定,指令的数据和对应的控制指令在这个阶段没有被使用,那么就需要将其保存,如果这个阶段使用了那么下一个阶段就不需要保存。在对结果进行测试的时候可能会出现数据冲突的现象,处理的方法是添加无关指令等待数据处理完,避免冲突。2.3.2流水接口部件设计流水线的接口部件主要是使用一些寄存器组来存放需要使用到的数据和控制信号,这些寄存器组的数据宽度不一,因为有的是立即数,有的是地址,有的是控制信号,主要有两类,一类是32位的数据;一类是1位的控制信号。其中的寄存器组需要使用统一的时钟

15、控制信号,因为寄存器组是随时会被使用的,为方便将所有的寄存器的使能端设常数1,又因为当有新的数据来时,寄存器的数据会自动被覆盖,所以将其清0端设为常量0。由总体设计可知,各个阶段的寄存器组的数目在依次递减,因为每过一个阶段,寄存器组中的数据被使用使得下个阶段的存储数据变少。对于寄存器组封装的时对应的接口位置,由于在本次实验中,流水接口的设计使用的是隧道连接,所以接口的布局显得不是那么的重要。2.3.3理想流水线设计为了便于表达理想流水线的设计思想,在本次实验中,理想流水线的设计主要涵盖了8条指令,其中4条是参考资料中提供的理流水线的测试用例,还有4条是CCMD扩展指令。为了完成理想流水线的设计

16、,不得不对每一条指令重新走一遍数据通路,将每条指令的数据在什么阶段使用,需要使用什么样的控制信号必须搞清楚。还未使用的数据和控制信号需要使用该阶段的寄存器组进行缓存,以便在流水线的下一个阶段使用,需要注意的是,regfile寄存器组的RW,DIN,WE三个信号需要一直保存到最后一个阶段。对于流水线的测试文件,为了避免数据冲突需要使用到一些无关指令,等待相关数据的到来或者相关指令的完成,避免冲突的发生。3详细设计与实现3.1扩展指令的实现3.1.1扩展指令的设计1)指令SLLV.指令SLLV为逻辑可变左移。其包含的指令格式以及对应的逻辑功能如图3.1所示。图 3.1指令SLLV 其实现的逻辑功能

17、为:将寄存器编号为RT的寄存器的值左移寄存器编号为 RS的寄存器的值的位数。并且将逻辑左移后的结果存放到寄存器编号为RD的寄存器中。2)指令SUBU.指令SUBU为无符号减,其包含的指令格式以及对应的逻辑功能如图3.2所示。图 3.2指令SUBU其实现的逻辑功能为:将寄存器编号为RS的寄存器的值减去寄存器编号为RT寄存器的值,并将计算结果的值保存到寄存器编号为RD的寄存器。3)指令LH.指令LH为加载半字,其包含的指令格式以及对应的逻辑功能如图3.3所示。图 3.3指令LH其实现的功能为:将编号为BASE的寄存器的值加上0-15位立即数扩展后的32位数之后作为一个地址,并以这个地址访问主存,从

18、主存中读取其值,并将这个值存放到编号为RT的寄存器中。其中设计的立即数的位扩展为有符号扩展。4)指令BLEZ.指BLEZ为小于等于0是跳转。其包含的指令格式以及对应的逻辑功能如图3.4所示。图 3.4指令BLEZ 其实现的功能为:首先判断编号为RS的寄存器的值,如果该寄存器的值小于等于0,那么将执行将PC的值加上0-15位左移两位并进行32位扩展的值作为新的PC实现跳转指令。3.1.2数据通路的实现本次课程实验所包含的指令有27条MIPS基础指令,以及扩展的4条指令,对于27条基础指令指令不再赘述,主要介绍4条扩展指令。如表 3.1所示。表 3.1指令系统数据通路表指令PCRFALUDMR1#

19、R2#W#DinABOPAddrDinSLLVpc+4rsrtrdALUR2#R1#0000无无SUBUpc+4rsrtrdALUR2#R1#0110无无LHpc+4base无rtMemoryR1#立即数0101ALU无BLEZpc+立即数rs无无无无无无无无在完成指令系统数据通路表的填写之后,根据列出的数据通路表,进行多指令数据通路的合并输入数,将各个主要功能部件进行连接,根据数据通路合并表的最终结果,对于所有的多输入部件使用多路选择器进行输入选择。最终便可以完成数据通路的搭建单周期 CPU数据通路如图3.5所示。图 3.5 单周期CPU数据通路(Logism)3.1.3控制器的实现主控制器

20、实现部分主要介绍任务中需要扩展的4条扩展指令,对于MIPS的27条基础指令在组成原理实验中已经做了详细介绍,这里不再赘述,下面主要介绍4条扩展指令的控制的实现以及逻辑关系。对照表 3.2所示。表 3.2主控制器控制信号指令RALUopMemWriteMemReadDinBranchSYSCALLSLLVLHBLEZSLLV1000000无00100SUBU1011000无00000LH1010101无00010BLEZ0无00无10001根据在Logism实现中得到的各个一位控制信号的表达式,使用控制信号的逻辑表达式动态生成逻辑电路,这里对4条扩展指令的控制信号的逻辑表达式进行举例说明。 1)

21、 控制信号SLLV 控制信号SLLV对应的是逻辑可变左移是一个R型指令,其设计只需要针对其FUNT字段进行设计,对应的逻辑表达式为:funct5 funct4 funct3 funct2 funct1 funct0。该控制信号的作用为选择输入到ALU运算器的Y输入端口的数据来自哪里。SLLV控制信号的逻辑电路图如图3.6所示。图 3.6控制信号SLLV电路图 SLLV控制信号在MAIN结构图中的位子如图3.7所示图 3.7控制信号SLLV分布图2)控制信号LH 控制信号LH对应的是加载半字,该指令需要使用OP字段组成该控制信号的输出,对应的逻辑表达式为:op5 op4 op3 op2 op1

22、op0。该控制信号的作用为是否将数据进行32位扩展。LH控制信号的逻辑电路如图3.8所示。图 3.8控制信号LH电路图 控制信号LH在MAIN结构中的分布位子如图3.9所示。图 3.9控制信号LH分布图3)控制信号BLEZ 控制信号BLEZ对应的是跳转指令,该指令需要使用OP字段组成该控制信号的输出,对应的逻辑结构表达式为:op5 op4 op3 op2 op1 op0。该控制信号的作用为是否进行跳转操作。BLEZ控制信号对应的逻辑电路图如图3.10所示。图 3.10控制信号BLEZ电路图该控制信号在MAIN结构中的分布位子如图3.11所示。图 3.11控制信号BLEZ分布图3.2中断机制实现

23、3.2.1硬件设计实现(1)中断信号的产生。在本次实验中需要实现3级中断,所使用到的中断信号产生电路是老师所给的参考资料中的中断产生电路,但是需要进行适当改进,将其转换为一个实现同时处理3个中断信号的电路,实现3级中断,由于当中断信号被处理完之后,需要将中断信号清0,则需要设计中断信号的清零位,下面给出中断信号产生电路的具体实现。如图3.12所示。图 3.12 中断信号产生电路图对于中断信号的清除需要设置中断清零装置,需要比较当前的优先级已经中断信号的优先级。中断信号的清除如图3.13所示。图 3.13 中断信号清零电路图(2)中断信号的筛选。对于多级中断,当有一系列的中断信号来临时,需要对中

24、断信号进行筛选。优先级高的需要先执行,当有优先级低的中断信号时,需要暂时缓存中断信号,中断信号的筛选电路如图3.14所示。图 3.14 中断信号筛选电路图(3)中断返回。中断返回也是使用软件实现的,中断返回使用的是ERET指令,在物理电路中需要设计一个由ERET指令控制的使能信号,当执行ERET指令时将是使能信号为1,这时将返回一个PC值,该PC值为将要执行的程序的入口地址,这个程序可能是主程序或者是优先级比上一个中断优先级低的中断程序。图 3.15 中断返回信号电路图3.2.2软件设计实现(1)开关中断。在本次实验中多级中断的开关中断使用了软件实现,经过与同学的商讨,开关中断还是需要一部分硬

25、件进行,在开关中断中软件部分主要使用MFC0和MTCO指令,硬件中主要是通过使用关中断的使能信号控制中断的开关。开关中断的部分代码如图3.16,图3.17所示。图 3.16 开关中断软件部分图图 3.17 开关中断软件部分图开关中断需要使用的硬件部分的电路图如图3.18所示。图 3.18 开关中断硬件部分图(2)保护现场。 不管是单级中断还是多级中断,中断现场的保护是非常重要的中断现场的保护一般使用软件来实现,现场保存主要是将各个寄存器的值进行压栈处理,数据堆栈通常放在数据存储器中。现场保护的实现 如图3.19所示。图 3.19 保护现场软件部分图保护现场与其对应的还有回复现场,对于回复现场则

26、是保护现场的逆过程,回复现场的软件部分图如图3.20所示。图 3.20 恢复现场软件部分图3.3流水CPU实现3.3.1流水接口部件实现流水线的接口部件主要是使用一些寄存器组来存放需要使用到的数据和控制信号,主要有5个阶段分别是:IF(取址阶段),ID(译码阶段),EX(执行阶段),MEM(访存阶段),WB(回写阶段)。这些寄存器组的数据宽度不一,因为有的是立即数,有的是地址,有的是控制信号,主要有两类,一类是32位的数据;一类是1位的控制信号。参考资料给的测试文件需要完成的指令包括:addi,ori,sw,syscall。需要设计涵盖这四条指令的理想流水线,同时还要涵盖4条扩展指令。其中的寄

27、存器组需要使用统一的时钟控制信号,因为寄存器组是随时会被使用的,为方便将所有的寄存器的使能端设常数1,又因为当有新的数据来时,寄存器的数据会自动被覆盖,所以将其清0端设为常量0。具体实现如下。1)IF阶段。IF阶段又称取指令阶段,该阶段需要缓存的有操作指令,应老师要求可以将PC进行缓存观察。缓存的指令为32位指令,PC也为32位地址,使用两个32位寄存器进行缓存,并且使用同一的时钟和使能端。其对应的寄存器组结构图如图3.21所示。图 3.21IF/ID寄存器组结构图2)ID阶段ID阶段又称译码阶段,在该阶段需要进行缓存的主要是在上一个阶段进行缓存的指令进行译码后的结果,其中的数据不仅包括有主要

28、的总线的数据,还有控制信息。主要有PC,寄存器组R1,R2的输出,以及符号扩展。缓存的32位数据如图3.22所示。图 3.22 ID/EX寄存器组结构图还需要缓存的是控制信号,控制信号主要是1位的信号,其中的ALUOP控制信号,其中的ALUOP运算器选择信号主要为4位主要有Regwrite,Alusrc,Memrite,syscall,RW,SLLV,Memtoreg,LH.其对应的逻辑结构图如图3.23所示。图 3.23 ID/EX寄存器组结构图3)EX阶段EX阶段又称执行阶段,来自ID阶段的信号关于ALU的控制信号和数据被使用,已经被使用的控制信号子啊EX阶段不需要再被缓存,但是总线的数据

29、还是需要继续缓存,因为来自总线的数据在下个阶段依然可能被使用。其中32位数据信号主要有来自运算器的结果Result,PC,存储器地址MEMPC,存储器写入数据MEMDIN。如图3.24图 3.24 EX/MEM寄存器组结构图还需要缓冲的有控制信号,主要有Regwrite, Memrite,halt,syscall,RW, Memtoreg,LH.其对应的寄存器组结构图如图3.25所示图 3.25 EX/MEM寄存器组结构图4)Mem阶段 Mem阶段又称为访存阶段,该阶段完成的主要是对主存储器的访问,在访问主存储器的时候需要使用一些控制指令,已经使用的控制指令在回写阶段不需要保存,主要缓存的信息有访存的结果result,PC,regwrite,halt,RW,Mem/WB对应的寄存器组的结构

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1