组成原理课程设计-复杂模型机(共21页).doc
精选优质文档-倾情为你奉上课程设计报告课程名称:计算机组成原理 设计题目:复杂模型机 专 业:xxxxxx 姓 名:xx 学 号:xxxxx 同 组 人:xxxxxx 指导教师:xx 二零一六年一月目 录1、课程设计任务书1.1 设计任务 1、基本模型机的设计与实现。 2、在基本模型机的基础上设计一台复杂模型机。1.2 性能指标和设计要求 利用所学过的理论知识,特别是微程序设计的思想,设计基于微程序控制器的模型计算机,包括设计相应的硬件平台、机器指令系统和微指令等。设计环境为TDCMA 计算机组成原理教学实验箱、微机,联机软件等。同时设计好基于模型机的测试验证程序,并在设计好的硬件平台上调试通过,以验证所设计的模型机功能的可行性与可靠性。在设计完成的前提下,撰写出符合要求的课程设计说明书并通过设计答辩。1.基本模型机设计与实现设计一台简单模型机,在具备基本必要的硬件平台的基础上,进一步要求其机器指令系统至少要包括五条不同类型指令:如一条输入指令(假设助记符为IN),一条加法指令(假设助记符为ADD),一条输出指令(假设助记符为OUT)、一条无条件转移指令(假设助记符为JMP)和一条停机指令(假设助记符为HLT);在设计好的模型机基础上,设计一个进行两个数求和运算的测试验证程序,用以验证模型机功能的可行性与可靠性。2. 在任务1 的基础上,增加机器指令系统的功能,设计具有不少于10 条机器指令的复杂指令系统模型机,包含算术逻辑指令、访问内存指令、控制转移指令、输入输出指令、停机指等令。数据的寻址方式采用寄存器直接寻址。利用设计的复杂模型机实现两个数的减法运算并判断差得正负,差为正数则输出A,差为负数则输出B,差为零则输出C。在设计好的模型机基础上,进一步设计一个测试验证程序,验证模型机功能的可行性与可靠性。3、基本模型机和复杂模型机的CPU 数据字长为8 位,采用定点补码表示。指令字长为8 的整数倍。微指令字长为24 位。2、本设计模型机体系结构及功能2.1 模型机的体系结构 依据计算机系统的层次结构,本次设计的模型机可简化为图1 所示的四层结构。我们需要对每一个层次进行设计和实现。 对于最上层的应用程序,本次设计需要设计一个应用程序的测试实例来验证下面三层构成的模型机的功能可行性与可靠性。 2.2 模型机所具有的基本功能 本模型机共设计三大类指令,其中包括运算类指令,控制转移类指令,数据传送类指令。运算类指令包含三种运算,算术运算,逻辑运算和移位运算。数据转移类指令包含访问内存指令、输入输出指令等,控制类指令包括停机指令等。实现的功能如:两寄存器的内容相加减,寄存器中数据的移位,外设与寄存器内容交换等多种功能。 3、模型机硬件设计 3.1 模型机总体结构设计 总体结构设计包括确定模型机应具有的基本功能部件以及它们之间的数据通路。 根据课堂中所掌握的知识我们可以知道,计算机是由五大部件组成,包括: 运算器,控制器,存储器,输入设备和输出设备。所以我们在设计硬件时基于所给出的实验平台选出我们所需要的五大部件(其中包括一些必要的寄存器件)。根据课堂上掌握的只是我们可以知道计算机中总线类型分为:数据总线,地址总线,控制总线。因此我们在连接线路时脱离不了这三大类型相应的信号(数据信号,地址信号,控制信号)。并且我们根据冯诺依曼机的特点可以知道,计算机的指令在内存中按照其执行顺序存放,并且对于微程序控制器的计算机,控存中必须有固化的微指令。 3.2 模型机的硬件实现 在本次设计中,硬件的实现基于已给出的实验平台,并根据我们所设计的模型机选择具有控制数据通路开关的必须元器件,通过接插线(各种连线等)将具有控制数据通路的相关引脚进行器件连接,组成所设计的模型机硬件系统(物理机)。 3.3 模型机数据通路的设计 在上面总体结构和硬件实现的基础上,我们组根据各部件之间的逻辑组成关系并综合考虑计算机的速率以及可靠性等各方面因素,设计出合理的数据通路结构。数据通路的不同,执行指令所需要的逻辑操作也就不同,计算机的结构也就不同。在此基础上,在后面的微指令设计阶段,就可以依据数据通路关系确定模型机工作过程中的所有微操作,并进一步确定微指令格式中的相应微命令。本模型机的硬件实现电路如下图所示: 图中MC单元(控制器)与其右侧的三个单元之间以及ALU®单元间 的连线均为本模型机中数据通路的控制开关的引脚,控制相关微命令从而执行对应的微操作。本模型机的数据通路框图:4、模型机机器指令系统设计4.1 指令设计模型机设计三大类指令共十六条,其中包括运算类指令、控制转移类指令,数据传送类指令。运算类指令包含两种运算,算术运算、逻辑运算,设计有5条运算类指令,分别为:ADD、AND、INC、SUB、OR,所有运算类指令都为单字节,寻址方式采用寄存器直接寻址。控制转移类指令有三条 HLT、JMP、BZC,用以控制程序的分支和转移,其中 HLT为单字节指令,JMP和 BZC为双字节指令。数据传送类指令有 IN、OUT、MOV、LDI、LAD、 STA、PUSH、POP共 6条,用以完成寄存器和寄存器、寄存器和 I/O、寄存器和存储器之间的数据交换,除 MOV指令为单字节指令外,其余均为双字节指令。4.2 指令格式所有单字节指令(ADD、AND、INC、SUB、OR、RR、HLT、PUSH 、MOV)格式如下:7 6 5 43 21 0OP-CODERSRD其中,OP-CODE为操作码,RS为源寄存器,RD为目的寄存器,并规定:RS或RD选定的寄存器00011011ROR1R2R3 IN和 OUT的指令格式为:7 6 5 43 2 (1)1 0 (1)70 (2)OP-CODERSRDP 其中括号1表示第一个字节,2表示第二个字节,P为I/O端口号,占用一个字节,并规定:A7 A6选 定地 址 空 间00IOY000-3F01IOY140-7F10IOY280-BF11IOY3C0-FF其中,A7和A6是地址总线的高2位,I/O地址译码图如下: PUSH的指令格式为:7 6 5 43 2 (1)1 0 (1)OP-CODERSRP(作为栈指针的寄存器SP)系统设计五种数据寻址方式,即立即、直接、间接、变址和相对寻址, LDI指令为立即寻址,LAD、STA、JMP和 BZC指令均具备直接、间接、变址和相对寻址能力。 LDI的指令格式如下,第一字节同前一样,第二字节为立即数:7 6 5 4 (1)3 2 (1)1 0 (1)70(2)OP-CODERSRDdataLAD、STA、JMP和 BZC指令格式如下:7 6 5 4 (1)3 2 (1)1 0 (1)70(2)OP-CODEMRDD 其中 M为寻址模式,具体见表 5-3-2,以 R2作为变址寄存器 RI:寻址模式M有效地址E说明00011011E=DE=(D)E=(RI)+DE=(PC)+D直接寻址间接寻址RI变址寻址相对寻址POP的指令格式如下:7 6 5 4 (1)3 2 (1)1 0 (1)70(2)OP-CODEXXRP(作为栈指针的寄存器SP)取最后两位作为RD4.3 指令系统汇编符号 指令的格式 功能MOV RD,RSADD RD,RSSUB RD,RSAND RD,RSOR RD,RSRR RD,RSINC RDPUSH RS0100 RS RD 0000RSRD1000RSRD0001RSRD1001RSRD1010RSRD0111* RD1011RSRP(作 为栈顶指针SP) RS RDRD+RS RDRD-RS RDRDRSRDRDRSRDRS右循环RDRD+1RD 将指定寄存器中的内容压入栈中LAD M D,RDSTA M D,RSJMP M DBZC M, D1100 M RD D 1101 M RDD1110M*D1111M*DERDRDEEPC 当FC或FZ=1 EPCIN RD,POUT P,RS POP RD0010*RDP0011RS*P0011*RPRD最后 两位 P RD RSP 将栈内数据弹出至指定寄存器HALT0101 * * 停机5、模型机控制器微程序设计5.1 机器指令周期分析 根据课堂所掌握的知识,我们可以知道机器指令周期可以分为两部分:取指周期和执行周期。在本模型机中不同的机器指令取指周期都是相同的,都需要经过两个CPU周期和P<1>测试。其中,两个CPU周期在数据通路上先后完成PC->AR,PC+1和MEM->IR的控制和传送操作;在P<1>测试阶段,对机器指令的操作码进行测试,确定指令实现的功能。对于执行周期,每个机器指令执行过程互不相同,所经过的CPU周期数以及在不同周期对应的数据通路操作也不尽相同。设计过程中,我们组根据每一条机器指令所要实现的功能,设计出其在执行过程中每个CPU周期在数据通路上完成的操作,并绘制出它的微程序流程图。5.2 模型机硬件译码电路 复杂模型机指令多,寻址方式多,只用一种测试已不能满足设计要求,为此译码电路更复杂,如下图所示: 其中,I7 I0为机器指令的第7位到第0位,T4表示在T4为高电平时有效。 本实验用到4个通用寄存器R0R3,对寄存器的选择是通过指令的第四位,为此还得设计一个寄存器译码电路:5.3 微程序流程图设计 微程序流程图与方框图表示的指令的指令周期是一致的,一个方框是一个 CPU周期,一个CPU周期对应一条为指令。5.4 微指令格式设计 由上述程序流程图可知,本模型机共用到了60条微指令,所以直接微地址需要6位 控制数据通路开关的为命令共有16种(包括3种P测试),但考虑本机硬件上最大支持24位的微指令,若用直接表示法,微指令字较长,24位可能不够,因此本模型机采用混合表示法;考虑到后期拓展及同组互斥的性质,将上述的微命令分到A,B,C三个字段中,每个字段长3位。 模型机中有针对运算器的操作,因此需要5位控制参数CN和S3S0控制运算器的工作方式 模型机中有针对主存及外设的操作,所以需要3位微命令IO/M,WR和RD,分别表示针对外设/主存,读操作或写操作。综上所述,我们所设计的模型机的微指令字长应为23位,但综合考虑到后后期功能的拓展以及设计上的便捷,所以我们决定将字长拓展至24位。微指令格式如下所示:232221201018-1514-1211-98-65-0M23CNWRRDIOMS3-S0A字段B字段C字段UA5-UA05.5 微指令编码设计微指令中A、B、C三个字段的编码方案如下表:A字段B字段C字段 14 13 12选择 11 10 9选择 8 7 6选择000NOP000NOP000NOP001LDA001ALU-B001P<1>010LDB010RS_B010P<2>011LDRi011RD_B011P<3>100保留100RI_B100保留101LOAD101保留101LDPC110LDAR110PC_B110保留111LDIR111保留111保留其中,M23为补充位,无效,置为0;IOM位置0时为主存,置1时为IO外设;WR和RD置1时有效,置0时无效 控制参数CN和S3 S0所控制实现的运算逻辑功能表如下运算类型S3 S2 S1 S0CN功能逻辑运算 0000 xF=A(直通) 0001 xF=B(直通) 0010 xF=AB(直通) 0011 xF=A+B(直通) 0100 xF=/A(直通)移位运算 0101 0110 0111 x 0 1 0 1F=A 不带进位循环右移B(取低3 位)位 (FZ)F=A逻辑右移一位 (FZ)F=A 带进位循环右移一位 (FC,FZ)F=A 逻辑左移一位 (FZ)F=A 带进位循环左移一位 (FC,FZ)算术运算 1000 1001 1010 1011 1100 1101 1110 1111 x x x x x x x x置FC=CN (FC)F=A 加B (FC,FZ)F=A 加B 加FC (FC,FZ)F=A 减B (FC,FZ)F=A 减1 (FC,FZ)F=A 加1 (FC,FZ)(保留)(保留)5.6微指令地址及控存存储器设计 首先确定取值过程中两条微指令在控存中地址,以及第二条指令的直接微地址。其次,在此模型机中,所有机器指令执行过程中第一条微指令所在的微地址由P<1>测试前的默认微地址和机器指令操作码经P<1>测试后决定;其次,执行过程中最后一条微指令的直接地址应该设为第一条取值微指令所在的微地址;然后,设置其余微指令所在的微地址,我们组采用的方法为对于每一道微程序,若不存在P<2>和P<3>测试,则入口地址从低到高从上向下为每条微指令分配微地址,因为下一条微指令的微地址即为上一条微指令的直接微地址,若存在P<2>或P<3>测试,则还应通过译码电路来求其后续微地址;最后,分配完微地址后,将所有微指令写入控存对应的位置中。 对于控存的要求,控存的容量至少要等于所有微指令的个数,即控存的位数应大于等于直接微地址的位数。6、模型机功能测试6.1 机器指令功能调试$P 00 62 ;LDI RD,1F 读入栈顶指针,用R2作为栈指针$P 01 1F$P 02 60 ; LDI RD,06 将立即数赋给压栈寄存器,压栈寄存器为R0$P 03 06 $P 04 B2 ; PUSH R0,其中栈指针为R2固定死的$P 05 A2 ; 将出栈的数POP出来$P 06 00 ; 选择出栈的目的寄存器为R0$P 07 30 ; 将出栈的数显示出来$P 08 40 ; 显示POP出来的数$P 09 50 ; 暂停 下面展示的是一些测试过程中的部分截图: 取指周期:PC->AR,PC+1 取指周期:MEM->IR,P<1>测试 LDI执行周期:MEM->R0 PUSH执行周期:R2->AR(该过程中R2充当栈顶指针指向内存中栈顶) PUSH执行周期:R2-1->R2,入栈完成后,栈顶指针减一 POP执行周期:R2+1->R2 出栈前,先将栈顶指针加一 POP执行周期:MEM->AR(根据栈顶指针找到栈数据在内存中的位置) POP执行周期:MEM->R0(POP R0,将栈内的数据弹出到R0目的寄存器中) 将pop出的书从目的寄存器中至out单元显示。 上述测试是测试PUSH和POP指令,设计的测试代码是首先通过LDI指令给源寄存器赋值然后将其压入栈中在弹出至目的寄存器。最后由目的寄存器到OUT单元显示出来。通过将OUT单元显示的值与最初所赋值对比若相同则正确。由于最初给源寄存器所赋值为06最后显示为06因此指令功能正确。6.2整机功能测试 $P 00 20 ; IN R0,00H 从IN单元读入计数初值 $P 01 00 $P 02 62 ; LDI R2,50H 立即数50H送R1 $P 03 50 $P 04 61 ; LDI R1,00H 装入和初值00H $P 05 00 $P 06 CB ;START: LAD 10,00H,R3 从MEM读入数据送R3,变址寻址,偏移量为00H $P 07 00 $P 08 0D ; ADD R1,R3 累加求和 $P 09 72 ; INC RI 变址寄存加1,指向下一数据 $P 0A 63 ; LDI R3,01H 送立即数01H入R3 $P 0B 01 $P 0C 8C ; SUB R0,R3 <=> DEC R0,R0-R3->R0 $P 0D F0 ; BZC RESULT 为0跳转到RESULT处。 $P 0E 11 ; $P 0F E0 ; JMP START 无条件跳转到START处。 $P 10 06 $P 11 34 ;RESULT:OUT 40H,R1 从端口40将所求得的累加和输出显示 $P 12 40 $P 13 50 ; HLT 停机 $P 50 01 ; 数据 $P 51 02 $P 52 03 $P 53 04 $P 54 05 $P 55 06 该段代码实现的是累加功能,经过运行对比之后,整体功能实现正确,具有可行性。7、结论 经过一周的努力,我和我的组员经过不懈的努力,终于完成了这次课程设计,虽然在最终答辩环节有些磕磕绊绊,但是仍然很高兴,毕竟学到了不少东西。 开始时,对于这次设计还是比较迷茫的,但经过跟组员的讨论以及老师的课前讲解,还是确定了初步设计方案。开始进行硬件设计时,看到很多同学都是直接按照实验指导书直接进行连接。而我跟我的组员,则是根据分析一点一点连接电路理解了硬件的具体细节。其次在后面的指令设计及微指令设计都是对比课本知识仔细研讨分析逐个解决。经过几天的研讨分析,自己也巩固了许多课堂上的知识,比如:对于时钟周期,在本设计中,T1周期在控存中取微指令,T2周期将直接微地址和操作控制字段送入微指令寄存器,T3周期执行微指令,T4周期,若有P测试,在P测试后强制更新微地址寄存器的内容作为后续微地址,若没有,则以直接微地址为后续微地址;最重要一点是:经过一周的学习处不明白了硬件设计的步骤。首先就一个庞大的系统进行分层理解,这样便于分析。对于这次题目:首先是硬件层面,其次是指令层面,然后是微程序控制器的设计,最后是模型机的功能测试。而后进行各层的具体实现,直到最后测试通过才证明设计正确可行。在这一周的时间里,我们不仅巩固了课堂知识,而且学会了如何去分析问题和解决问题。虽然在这个过程中,遇到了不少问题但是我们经过仔细分析和请教老师、同学,最终都一一攻破解决了。8、致谢 很感谢xx老师在这课设中给予我们的悉心指导和温馨鼓励,既给我们以轻松的学习研讨氛围,又对我们严格要求,使我们很是享受这个过程。这次课设可以说是对自己一次很好地挑战和锻炼机会。同时也感谢我的组员骆磊对于这次课设的鼎力支持,正是我们的默契合作,才一步一步的走向成功的彼岸。9、附录1、附录一 整机测试代码 $P 00 20 ; IN R0,00H 从IN单元读入计数初值 $P 01 00 $P 02 62 ; LDI R2,50H 立即数50H送R1 $P 03 50 $P 04 61 ; LDI R1,00H 装入和初值00H $P 05 00 $P 06 CB ;START: LAD 10,00H,R3 从MEM读入数据送R3,变址寻址,偏移量为00H $P 07 00 $P 08 0D ; ADD R1,R3 累加求和 $P 09 72 ; INC RI 变址寄存加1,指向下一数据 $P 0A 63 ; LDI R3,01H 送立即数01H入R3 $P 0B 01 $P 0C 8C ; SUB R0,R3 <=> DEC R0,R0-R3->R0 $P 0D F0 ; BZC RESULT 为0跳转到RESULT处。 $P 0E 11 ; $P 0F E0 ; JMP START 无条件跳转到START处。 $P 10 06 $P 11 34 ;RESULT:OUT 40H,R1 从端口40将所求得的累加和输出显示 $P 12 40 $P 13 50 ; HLT 停机 $P 50 01 ; 数据 $P 51 02 $P 52 03 $P 53 04 $P 54 05 $P 55 062、附录二 微指令集合 格式: 控存地址微指令代码(16进制)$M 00 ; NOP $M 01 006D43 ; PC->AR, PC加1 $M 03 ; MEM->IR, P<1> $M 04 ; RS->B $M 05 04B201 ; A加B->RD $M 06 ; RS->B $M 07 ; A与B->RD $M 08 ; MEM->AR $M 09 ; IO->RD $M 0A ; MEM->AR $M 0B ; NOP $M 0C ; MEM->RD $M 0D ; RD->MEM $M 0E ; A->PC $M 0F 0000CB ; NOP, P<3> $M 10 ; RS->IO $M 11 ; MEM->RD $M 12 06B201 ; A加1->RD $M 13 ; RS->B $M 14 05B201 ; A减B->RD $M 15 ; RS->B $M 16 01B201 ; A或B->RD $M 17 06B218 ; A+1->R2 $M 18 006D59 ; R0->AR$M 19 10701A $M 1A $M 1B ; A->PC $M 1C 10101D ; MEM->A $M 1D 10608C ; MEM->AR, P<2> $M 1E 10601F ; MEM->AR $M 1F ; MEM->A $M 20 10608C ; MEM->AR, P<2> $M 21 ; MEM->RD $M 22 ; RS->MEM$M 23 ; R0->A $M 24 ; A-1->R0$M 28 ; MEM->A $M 29 00282A ; RI->B $M 2A 04E22B ; A加B->AR $M 2B 04928C ; A加B->A, P<2> $M 2C 10102D ; MEM->A $M 2D 002C2E ; PC->B $M 2E 04E22F ; A加B->AR $M 2F 04928C ; A加B->A, P<2> $M 30 ; RD->A $M 31 ; RD->A $M 32 006D48 ; PC->AR, PC加1 $M 33 006D4A ; PC->AR, PC加1 $M 34 ; RS->RD $M 35 ; NOP $M 36 006D51 ; PC->AR, PC加1 $M 37 ; RD->A $M 38 ; RD->A $M 39 ; RD->A $M 3A ; R2->A $M 3B ; R0->AR $M 3C 006D5C ; PC->AR, PC加1 $M 3D 006D5E ; PC->AR, PC加1 $M 3E 006D68 ; PC->AR, PC加1 $M 3F 006D6C ; PC->AR, PC加1专心-专注-专业