




已阅读5页,还剩34页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2017计算机组成原理 课程设计报告题 目:5段流水CPU设计专 业:计算机科学与技术班 级:学 号:姓 名:电 话:邮 件:完成日期:2017-03-10 周五下午华 中 科 技 大 学 课 程 设 计 报 告目 录1课程设计概述21.1课设目的21.2设计任务21.3设计要求21.4技术指标32总体方案设计52.1扩展指令的设计52.2中断机制设计72.3流水CPU设计93详细设计与实现113.1扩展指令的实现113.2中断机制实现163.3流水CPU实现194实验过程与调试244.1测试用例和功能测试244.2主要故障与调试314.3实验进度325设计总结与心得335.1课设总结335.2课设心得33参考文献35I华 中 科 技 大 学 课 程 设 计 报 告1 课程设计概述1.1 课设目的计算机组成原理是计算机专业的核心基础课。该课程力图以“培养学生现代计算机系统设计能力”为目标,贯彻“强调软/硬件关联与协同、以CPU设计为核心/层次化系统设计的组织思路,有效地增强对学生的计算机系统设计与实现能力的培养”。课程设计是完成该课程并进行了多个单元实验后,综合利用所学的理论知识,并结合在单元实验中所积累的计算机部件设计和调试方法,设计出一台具有一定规模的指令系统的简单计算机系统。所设计的系统能在LOGISIM仿真平台和FPGA实验平台上正确运行,通过检查程序结果的正确性来判断所设计计算机系统正确性。课程设计属于设计型实验,不仅锻炼学生简单计算机系统的设计能力,而且通过进行中央处理器底层电路的实现、故障分析与定位、系统调试等环节的综合锻炼,进一步提高学生分析和解决问题的能力。1.2 设计任务本课程设计的总体目标是利用FPGA以及相关外围器件,设计五段流水CPU,要求所设计的流水CPU系统能支持自动和单步运行方式,能正确地执行存放在主存中的程序的功能,对主要的数据流和控制流通过LED、数码管等适时的进行显示,方便监控和调试。尽可能利用EDA软件或仿真软件对模型机系统中各部件进行仿真分析和功能验证。1.3 设计要求(1) 根据课程设计指导书的要求,制定出设计方案;(2) 分析指令系统格式,指令系统功能。(3) 根据指令系统构建基本功能部件,主要数据通路。(4) 根据功能部件及数据通路连接,分析所需要的控制信号以及这些控制信号的有效形式;(5) 设计出实现指令功能的硬布线控制器;(6) 调试、数据分析、验收检查;(7) 课程设计报告和总结。1.4 技术指标(8) 支持Error! Reference source not found.前27条基本32位MIPS指令;(9) 支持教师指定的4条扩展指令;(10) 支持多级嵌套中断,利用中断触发扩展指令集测试程序;(11) 支持5段流水机制,可处理数据冒险,结构冒险,分支冒险;(12) 能运行由自己所设计的指令系统构成的一段测试程序,测试程序应能涵盖所有指令,程序执行功能正确。(13) 能运行教师提供的标准测试程序,并自动统计执行周期数(14) 能自动统计各类分支指令数目,如不同种类指令的条数、冒险冲突次数、插入气泡数目、load-use冲突次数、动态分支预测流水线能自动统计预测成功与失败次数。表 1.1 指令集#指令助记符简单功能描述备注1ADD加法指令格式参考MIPS32指令集,最终功能以MARS模拟器为准。2ADDI立即数加3ADDIU无符号立即数加4ADDU无符号数加5AND与6ANDI立即数与7SLL逻辑左移8SRA算数右移9SRL逻辑右移10SUb减11OR或12ORI立即数或13NOR或非14LW加载字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是转移362 总体方案设计2.1 扩展指令设计在本次实验中首先需要完成单周期CPU的设计,然后在其基础之上完成老师布置的4条扩展指令的添加,对于单周期CPU的设计在组成原理实验中已经做了详细介绍,这里不再赘述。主要介绍四条扩展指令的设计有实现。为了实现实验课程的连贯性,这里给出单周期CPU设计的总体结构图如图2.1所示。在单周期的基础之上添加4条扩展指令主要有运算指令2条,存储访问指令1条,跳转指令1条。图 2.1 总体结构图2.1.1 数据通路的设计在单周期CPU的基础之上,添加4条扩展指令,主要包括运算指令SLLV,SUBU。存储访问指令LH,以及跳转指令BLEZ。下面给出四条扩展指令的数据通路。表 2.1指令系统数据通路指令PCRFALUDMR1#R2#W#DinABOPAddrDinSLLVpc+4rsrtrdALUR2#R1#0000无无SUBUpc+4rsrtrdALUR2#R1#0110无无LHpc+4base无rtMemoryR1#立即数0101ALU无BLEZpc+立即数rs无无无无无无无无2.1.2 控制器的设计当完成扩展指令的数据通路时,接下来就需要完成对数据通路以及运算器的控制。对于控制信号进行统计,包括各个主要部件所需要输入的控制信号,以及数据通路合并表中所示的具有多输入的主要部件需要进行输入选择的控制信号,并且对各个统计信号的各种取值情况进行定义,单周期CPU中的部分控制信号在组成原理实验报告中已经完成这里不再赘述,此处只对4条扩展指令的控制信号进行描述其中的SUBU扩展指令没用新的控制信号。统计得到的控制信号以及说明如Error! Reference source not found.。表 2.2主控制器控制信号的作用说明控制信号取值说明SLLV0寄存器堆R2或者0-15的扩展,或者6-10的扩展1寄存器堆R1LH0数据来自ALU或者memory1数据来自ALU或者memory将0-15扩展为32位数据BLEZ0PC+4进行更新PC1PC+4后的值加上来自指令的0-15的扩展更新PC对照所有控制信号,依次分析各条指令,分析该指令执行过程中需要哪些控制信号,对于与本条指令无关的控制信号,控制信号的取值一律为0,以简化控制器电路的设计。对于单周期CPU的控制信号在组成原理实验中已经做了详细描述,这里不再赘述,但对于扩展指令的数据通路的控制信号会做详细描述。该控制信号表的框架如Error! Reference source not found.所示。表 2.3主控制器控制信号框架指令RALUopMemWriteMemReadDinBranchSYSCALLSLLVLHBLEZSLLV1000000无00100SUBU1011000无00000LH1010101无00010BLEZ0无00无100012.2 中断机制设计2.2.1 总体设计中断实验部分主要分为两部分,单机中断和多级中断,这里主要介绍多级中断的实现机制。多级中断主要包括如下几个阶段。(1)中断信号来临。(2)关中断,保护现场,设置新的屏蔽字,PC值压栈。(3)开中断,执行中断程序。(4)关中断,恢复现场,开中断。(5)中断返回,回到断点PC,执行主程序。实验实现的3个中断分别编号为1号中断,2号中断,3号中断。优先级为:321。3号中断具有最高优先级。当执行主程序时具有最低优先级,级数为0级。当中断信号来临时可以打断主程序,优先级高的中断可以打断优先级低的中断,当有优先级更高的中断的时候转去执行优先级更高的中断,当优先级更高的中断执行完成之后,每次主程序被打断或者有优先级更高的中断打断优先级低的中断的时候,将当前的PC存放到一个特殊的寄存器的值进行压栈处理,EPC其实就是一个被调用者保护寄存器。在多级中断中,中断信号的产生,优先级的比较以及PC值的保存时使用硬件实现的,其余是使用软件的方式实现的。2.2.2 硬件设计(1)生成中断信号。本次实验需要实现的有3个中断信号,分别编号为1号中断,2号中断,3号中断。优先级为:321。3号中断具有最高优先级。当执行主程序时具有最低优先级,级数为0级。3个中断信号分别对应不同的中断子程序。中断信号的产生使用的是中断信号产生电路,中断信号产生电路使用的是老师给的参考资料的电路。中断信号发生电路具有统一的时钟断和不同的清零端,中断信号使用上升沿触发。(2)中断信号筛选。中断信号筛选电路需要实现中断信号的筛选,主要是当有优先级高的中断来临的时候转向去执行优先级更高的中断,如果有优先级低的中断来临着将中断信号压栈,如果是同级中断,则忽略该中断。中断筛选电路的实现需要使用当前的中断优先级以及新中断的优先级还要使用到优先编码器,通过有线编码器决定中断信号的选择中断信号。(3)PC值的转变。在中断实验部分,转向到中断程序的PC值的过程是由硬件实现的。通过执行中断返回指令ERET指令,在物理电路中设计一个由ERET信号控制的控制信号,当执行ERET指令时,跳转到对应的PC值,这个PC值可能是优先级低的中断或者是主程序。2.2.3 软件设计(1)开关中断。本次实验的开关中断是使用软件来实现,使用mfc0和mtc0实现中断的开关,但同时在硬件部分需要使用一个使能控制信号来控制中断信号这个使能信号需要结合软件部分进行使用。(2)保护现场。当进入中断程序之前,需要进行现场的保存,如果不保护现场那么返回后以前的值没有了,也就不能恢复当断点的状态。现场保存主要是将各个寄存器的值进行压栈处理,数据堆栈通常放在数据存储器中。MIPS处理器的堆栈是向下生长的,因此SP寄存器初始指向存储器的最高地址,每保存一个值,SP要减4;出栈时则SP加4。2.3 流水CPU设计2.3.1 总体设计在本次实验中,需要完成流水CPU的设计。流水CPU的设计是建立在单周期CPU并且增加4条扩展指令的基础之上的。由于设计的流水线是理想流水线,需要完成的指令是理想流水线的4条测试指令加上扩展的4条指令,理想流水线的设计主要部分是设计缓存寄存器组,主要包括5个阶段的寄存器组:1.取指令阶段2.译码阶段3.执行运算4.访存阶段5.结果回写阶段。5个阶段的数据保存根据需要完成的指令来决定,指令的数据和对应的控制指令在这个阶段没有被使用,那么就需要将其保存,如果这个阶段使用了那么下一个阶段就不需要保存。在对结果进行测试的时候可能会出现数据冲突的现象,处理的方法是添加无关指令等待数据处理完,避免冲突。2.3.2 流水接口部件设计流水线的接口部件主要是使用一些寄存器组来存放需要使用到的数据和控制信号,这些寄存器组的数据宽度不一,因为有的是立即数,有的是地址,有的是控制信号,主要有两类,一类是32位的数据;一类是1位的控制信号。其中的寄存器组需要使用统一的时钟控制信号,因为寄存器组是随时会被使用的,为方便将所有的寄存器的使能端设常数1,又因为当有新的数据来时,寄存器的数据会自动被覆盖,所以将其清0端设为常量0。由总体设计可知,各个阶段的寄存器组的数目在依次递减,因为每过一个阶段,寄存器组中的数据被使用使得下个阶段的存储数据变少。对于寄存器组封装的时对应的接口位置,由于在本次实验中,流水接口的设计使用的是隧道连接,所以接口的布局显得不是那么的重要。2.3.3 理想流水线设计为了便于表达理想流水线的设计思想,在本次实验中,理想流水线的设计主要涵盖了8条指令,其中4条是参考资料中提供的理流水线的测试用例,还有4条是CCMD扩展指令。为了完成理想流水线的设计,不得不对每一条指令重新走一遍数据通路,将每条指令的数据在什么阶段使用,需要使用什么样的控制信号必须搞清楚。还未使用的数据和控制信号需要使用该阶段的寄存器组进行缓存,以便在流水线的下一个阶段使用,需要注意的是,regfile寄存器组的RW,DIN,WE三个信号需要一直保存到最后一个阶段。对于流水线的测试文件,为了避免数据冲突需要使用到一些无关指令,等待相关数据的到来或者相关指令的完成,避免冲突的发生。3 详细设计与实现3.1 扩展指令的实现3.1.1 扩展指令的设计1) 指令SLLV.指令SLLV为逻辑可变左移。其包含的指令格式以及对应的逻辑功能如图3.1所示。图 3.1指令SLLV 其实现的逻辑功能为:将寄存器编号为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位数之后作为一个地址,并以这个地址访问主存,从主存中读取其值,并将这个值存放到编号为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条扩展指令。如Error! Reference source not found.所示。表 3.1指令系统数据通路表指令PCRFALUDMR1#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 控制器的实现主控制器实现部分主要介绍任务中需要扩展的4条扩展指令,对于MIPS的27条基础指令在组成原理实验中已经做了详细介绍,这里不再赘述,下面主要介绍4条扩展指令的控制的实现以及逻辑关系。对照Error! Reference source not found.所示。表 3.2主控制器控制信号指令RALUopMemWriteMemReadDinBranchSYSCALLSLLVLHBLEZSLLV1000000无00100SUBU1011000无00000LH1010101无00010BLEZ0无00无10001根据在Logism实现中得到的各个一位控制信号的表达式,使用控制信号的逻辑表达式动态生成逻辑电路,这里对4条扩展指令的控制信号的逻辑表达式进行举例说明。 1) 控制信号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 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 中断机制实现3.2.1 硬件设计实现(1)中断信号的产生。在本次实验中需要实现3级中断,所使用到的中断信号产生电路是老师所给的参考资料中的中断产生电路,但是需要进行适当改进,将其转换为一个实现同时处理3个中断信号的电路,实现3级中断,由于当中断信号被处理完之后,需要将中断信号清0,则需要设计中断信号的清零位,下面给出中断信号产生电路的具体实现。如图3.12所示。图 3.12 中断信号产生电路图对于中断信号的清除需要设置中断清零装置,需要比较当前的优先级已经中断信号的优先级。中断信号的清除如图3.13所示。图 3.13 中断信号清零电路图(2)中断信号的筛选。对于多级中断,当有一系列的中断信号来临时,需要对中断信号进行筛选。优先级高的需要先执行,当有优先级低的中断信号时,需要暂时缓存中断信号,中断信号的筛选电路如图3.14所示。图 3.14 中断信号筛选电路图(3)中断返回。中断返回也是使用软件实现的,中断返回使用的是ERET指令,在物理电路中需要设计一个由ERET指令控制的使能信号,当执行ERET指令时将是使能信号为1,这时将返回一个PC值,该PC值为将要执行的程序的入口地址,这个程序可能是主程序或者是优先级比上一个中断优先级低的中断程序。图 3.15 中断返回信号电路图3.2.2 软件设计实现(1)开关中断。在本次实验中多级中断的开关中断使用了软件实现,经过与同学的商讨,开关中断还是需要一部分硬件进行,在开关中断中软件部分主要使用MFC0和MTCO指令,硬件中主要是通过使用关中断的使能信号控制中断的开关。开关中断的部分代码如图3.16,图3.17所示。图 3.16 开关中断软件部分图图 3.17 开关中断软件部分图开关中断需要使用的硬件部分的电路图如图3.18所示。图 3.18 开关中断硬件部分图(2)保护现场。 不管是单级中断还是多级中断,中断现场的保护是非常重要的中断现场的保护一般使用软件来实现,现场保存主要是将各个寄存器的值进行压栈处理,数据堆栈通常放在数据存储器中。现场保护的实现 如图3.19所示。图 3.19 保护现场软件部分图保护现场与其对应的还有回复现场,对于回复现场则是保护现场的逆过程,回复现场的软件部分图如图3.20所示。图 3.20 恢复现场软件部分图3.3 流水CPU实现3.3.1 流水接口部件实现流水线的接口部件主要是使用一些寄存器组来存放需要使用到的数据和控制信号,主要有5个阶段分别是:IF(取址阶段),ID(译码阶段),EX(执行阶段),MEM(访存阶段),WB(回写阶段)。这些寄存器组的数据宽度不一,因为有的是立即数,有的是地址,有的是控制信号,主要有两类,一类是32位的数据;一类是1位的控制信号。参考资料给的测试文件需要完成的指令包括:addi,ori,sw,syscall。需要设计涵盖这四条指令的理想流水线,同时还要涵盖4条扩展指令。其中的寄存器组需要使用统一的时钟控制信号,因为寄存器组是随时会被使用的,为方便将所有的寄存器的使能端设常数1,又因为当有新的数据来时,寄存器的数据会自动被覆盖,所以将其清0端设为常量0。具体实现如下。1)IF阶段。IF阶段又称取指令阶段,该阶段需要缓存的有操作指令,应老师要求可以将PC进行缓存观察。缓存的指令为32位指令,PC也为32位地址,使用两个32位寄存器进行缓存,并且使用同一的时钟和使能端。其对应的寄存器组结构图如图3.21所示。图 3.21IF/ID寄存器组结构图2)ID阶段ID阶段又称译码阶段,在该阶段需要进行缓存的主要是在上一个阶段进行缓存的指令进行译码后的结果,其中的数据不仅包括有主要的总线的数据,还有控制信息。主要有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阶段不需要再被缓存,但是总线的数据还是需要继续缓存,因为来自总线的数据在下个阶段依然可能被使用。其中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对应的寄存器组的结构如图3.26所示。图 3.26 MEM/WB寄存器组结构图5)WB阶段 WB又称回写阶段,该阶段需要将最后的数据输入到regfile中,回写的数据主要是写入寄存器中,包括有寄存器的使能信号WE,写入寄存器的编号RW,以及写入的数据RESULT.将对应的数据通路连接到regfile寄存器。具体见MAIN结构图 3.27。3.3.2 理想流水线实现理想流水线的的最关键的部分是在接口部件的设计,流水线的设计核心就是实现预用数据的缓存实现部件的并行进行。对于缓存寄存器组的设计在接口部件的实现已经做了详细介绍,这里不在赘述,下面主要介绍理想流水线实现的数据通路如何连接。理想流水线的数据通路和与前面介绍的单周期的指令的数据通路一样,与单周期CPU指令不同之处在于,使用的数据都经过对应的寄存器组进行缓存,然后再传送到下一个阶段使用,则连接数据通路时有两种选择一是直接在单周期的基础之上删去多余的数据通路,并且将各个阶段对应的寄存器组插入其中,重新连接数据通路,另一种方式是将数据通路重新设计,这将带来很大的工作量,所以我采用的是第一种,但是对于需要完成的指令的数据通路还是需要再走一次。理想流水线的数据通路参考前面的扩展指令的数据通路实现。理想流水线的实现电路图如图3.27。图 3.27 流水线MIAN电路图4 实验过程与调试4.1 测试用例和功能测试本次综合实验的测试用例主要有课堂中设计的参考用例以及根据自己分配的任务所完成的实验部分的自己编写的测试用例。对于4条扩展指令的测试编写了一个综合的测试文件测试4条指令的正确运行,这条指令有:SLLV(逻辑可变左移),SUBU(无符号减),LH(记载半字),BLEZ(小于等于0是跳转)。接着就是单级中断的测试,单级中断的测试程序是在老师给的参考用例上进行改造编写,多级中断也是在其基础之上进行编写,单级中断能正确实现当执行主程序时中断来临可以转向执行对应的中断,并且当执行完中断后能后正确返回到上次执行的主程序的位置。多级中中断中具有嵌套关系,优先级高的中断能够打断优先级低的中断,优先级低的中断不能打败优先级高的中断,当中断执行时有优先级高的中断来临,则当前中断被打断,转向去执行优先级更高的中断,执行完之后在回到当前中断继续执行。最后的测试是理想流水线的测试,理想流水线的测试需要首先测试标准测试用例实现在流水线中标准测试用例的周期数为21,接着需要测试扩展指令的测试用例,这个扩展指令是自己编写的为了避免出现冲突现象,这里在测试用例中加入了很多无关指令实现类似气泡的功能。下面具体介绍这些测试用例。4.1.1 4条扩展指令测试4条扩展指令的测试情况如下:(1)SLLV逻辑可变左移测试如图4.1,图4.2所示。测试的初始值为6,每次将6进行逻辑左移1位。图 4.1逻辑可变左移测试图图 4.2逻辑可变左移测试图测试结果正确,实现了逻辑可变左移。(2)SUBU无符号减测试情况如图4.3,图4.4 所示。测试的初始值为8,每次将8的值进行减一操作。图 4.3无符号减测试图图 4.4无符号减测试图(3)LH加载半字测试结果如图4.5,图4.6,图4.7所示。测试的数据保存在数据存储器中,其中的值如图4.5所示。图 4.5数据存储器内容图每次加载半字的数据都是来自数据存储器,加载情况如图4.6,图4.7所示。图 4.6加载半字测试图图 4.7加载半字测试图(4)BLEZ小于等于0时跳转小于等于0是跳转的初始数据为1,一句小于等于0的判断条件进行跳转,每次跳转进行加1操作。如图4.8,图4.9所示。图 4.8小于等于0时跳转测试图图 4.9 小于等于0时跳转测试图4.1.2 单级中断测试 单级中断程序测试主要执行的程序有主程序(0号),1号中断程序(自己的CCMD),2号中断程序,3号中断程序。 其中的主程序为老师提供的benchmark子程序。(1)1号中断首先进入主程序如图4.10。图 4.10 主程序测试图当点击1号中断的时候进入1号中断子程序。如图4.11。图 4.11 1号中断程序测试图当程序执行完后返回主程序如图4.12所示。图 4.12 返回主程序测试图(2)2号中断点击2号中断,进入2号中断程序。如图4.13所示。图 4.13 2号中断测试图当执行完2号中断后返回主程序。如图4.13所示。图 4.13 2号中断返回主程序测试图(3)3号中断当点击3号中断的时候,执行3号中断子程序,如图4.14所示。图 4.14 3号中断测试图当执行完3号中断后返回主程序。如图4.15所示。图 4.15 3号中断返回主程序测试图4.1.3多级中断多级中断支持一次输入多个中断号,并根据优先级进行选择执行。输入中断的顺序为1-2-3-1。当执行完1,2,3,1号程序后返回主程序。测试结果如下。首先进入主程序,如图4.16所示。图 4.16 多级中断主程序测试图点击1号中断,进入1号中断子程序。如图4.17所示。图 4.17 多级中断1号中断测试图然后点击2号中断,进入2号中断测试程序。如图4.18所示。图 4.18 多级中断2号中断测试图然后点击3号中断,进入3号中断测试程序。如图4.19所示。图 4.19 多级中断3号中断测试图然后点击1号程序,1号程序显示等待。如图4.20所示。图 4.20 多级中断1号中断等待测试图然后返回2号,1号,和主程序,返回2号中断程序如图4.21所示。图 4.21 多级中断返回2号中断测试图然后返回1号中断程序,如图4.22所示。图 4.22 多级中断返回1号中断测试图最后返回主程序,如图4.23所示。图 4.23 多级中断返回主程序测试图4.1.4理想流水线 理想流水线的测试主要包括两个部分,1是老师提供的理想流水线的测试文件,最后的指令周期数为:21,另一个是测试自己的CCMD在理想流水线上是否可用,在测试文件中需要加入一些无关指令起到类似气泡的作用。具体测试如下。课程提供的测试文件测试如图4.24所示。图 4.24 理想流水线测试图接着在理想流水线上跑CCMD,测试结果如图4.25所示。图 4.25 理想流水线CCMD测试测试图4.2 主要故障与调试4.2.1 扩展指令故障在扩展指令中,由扩展指令参与控制的使能信号,对扩展指令的高低位弄混淆。故障现象:当执行对应的扩展指令时,对应的使能信号不能正确输出,使得指令不能正确执行。原因分析:首先我对扩展指令的数据通路进行的重新梳理,发现数据通路没有什么问题,接着对对应指令控制的使能信号的逻辑表达式进行核查发现也没有什么问题,但是当在封装部件中输入真值时,对应的输出并不是正确的,如图4.26所示。 解决方案:将控制信号的逻辑表达式的高低位进行对调即可。图 4.26扩展指令故障示意图4.2.2 中断故障在中断的设计中,没有对中断信号产生装置进行清零操作。故障现象:当进入一个中断后,这使得中断信号一直存在,不能正确实现多级中断。原因分析:在中断信号产生电路中只设计了中断信号的产生电路没有设计中断信号的清零操作电路。 解决方案:设计一个中断信号清零电路,当该中断执行完毕,则需要对该中断进行清零操作,消除中断信号。4.2.3 理想流水线故障理想流水线中的HALT信号没有正确缓存。故障现象:当执行理想流水线时,测试理想流水线的测试程序对应的时钟周期数不正确。 原因分析:在检查理想流水线的数据通路没有问题的情况下,发现是因为HALT信号没有正确缓存,因为HALT信号并不是直接来至于指令译码阶段,而是在执行阶段产生的,没有将其缓存。解决方案:在EX/MEM寄存器组中和MEM/WB中缓存HALT信号。 4.3 实验进度表 4.1 课程设计进度表时间进度第一天复习组成原理基本知识,明确任务,制定计划。第二天查阅相关资料,根据CCMD的指令格式设计CCMD的数据通路。第三天完成扩展指令的设计和实现,编写测试文件进行测试。第四天熟悉单级中断知识,开始设计单级中断。第五天设计单级中断,编写测试程序。第六天测试单级中断,并且调试BUG。第七天完成单级中断。第八天开始实现多级中断,并调试BUG。完成多级中断。第九天设计流水线,完成测试文件的指令。第十天添加CCMD指令到理想流水线。完成理想流水线。5 设计总结与心得5.1 课设总结在本次组成原理课程设计实验的总结如下:1) 本次实验的单周期实现了31条指令,其中包括有27条基础指令以及4条扩展指令,主要有:SLLV(逻辑可变左移),SUBU(无符号减),LH(加载半字),BLEZ(小于等于0时跳转)。2) 在单周期CPU的基础之上实现了单级中断和多级中断,主
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年细胞治疗产品临床试验法规解读与审批流程报告
- 海上风能资源评估报告2025年深远海风电发展规划海上风电场经济效益分析
- 茶与咖啡的跨界融合:2025年市场发展趋势与品牌竞争力研究报告
- 城市自来水厂升级改造2025年环境友好型技术应用报告
- 2025年智能仓储货架制造项目智能控制系统研发报告
- 物联网设备安全漏洞防护策略深度剖析:2025年技术标准解读报告001
- 2025年医院信息化建设电子病历系统优化策略研究报告
- 2025年医院电子病历系统优化在医院信息化建设中的数据安全防护机制研究报告
- 2025年城市地下综合管廊建设专项债券资金申请财务分析报告
- 2025年医药行业CRO研发外包模式下的研发项目管理培训与咨询报告
- 九师联盟2024-2025学年高二下学期6月摸底联考语文试题(含答案)
- 广东省深圳市南山区2025年小升初数学模拟试卷含解析
- 国家开放大学《Web开发基础》形考任务实验1-5参考答案
- 大学毕业生离校退宿申请表模板
- 2022年人教八级下英语单词英译汉
- 大班社会《爱发脾气的菲菲》课件
- 公路工程项目代建制管理办法(218页编制详细)
- 【海外华文文学】期末考试复习提纲
- 化工进展稿件编辑、排版体例格式
- 美丽乡村片区内监理规划范本
- 晓明煤矿副井过卷缓冲装置安装措施
评论
0/150
提交评论