复杂模型机设计——合肥工业大学计算机组成原理课程设计报告.doc
课程设计报告一.设计目的本课程设计是计算机组成原理课程之后开设的实践环节课程。通过本课程设计,使学生进一步加深对计算机原理系列课程相关内容的理解,掌握CPU设计的基本方法和计算机系统的组成原理,进一步巩固所学的理论知识,提高运用所学知识分析和解决实际问题的能力;锻炼计算机硬件的设计能力、调试能力;培养严谨的科学实验作风、良好的工程素质及团队协作精神,为今后的工作打下基础。二.设计题目复杂模型机设计三.设计要求基于计算机组成原理教学实验系统设计并实现一个具有16条机器指令、采用微程序控制器的8位计算机。具体要求做到:1.根据设计课题要求,给出模型机的设计方案(包括指令系统和硬件结构)。2.画出所设计计算机的硬件连接图,针对所设计的指令系统编写出相应的微程序。3.对所设计的计算机进行安装与调试。4.编写测试程序,对系统进行验证。5.编写课程设计报告。四.实验设备Dais-CMX16+计算机组成原理教学实验系统一台,PC机一台五.指令格式与指令系统模型机设计四大类之类指令共16条,其中包括算术逻辑指令、I/O指令、访问及转移指令和停机指令。 算术逻辑指令设计9条算术逻辑指令并用单字节表示,寻址方式采用寄存器直接寻址,其格式如下:7 6 5 43 21 0OP-CODERdRs其中,OP-CODE为操作码,Rs为源寄存器,Rd为目的寄存器,并规定:Rs或Rd选定的寄存器00011011R0R1R2R39条算术逻辑指令的名称、功能和具体格式见表7-12-1。 访问指令及转移指令模型机设计2条访问指令,即存数(STA)、取数(LDA),2条转移指令,即无条件转移(JMP)、结果为零或有进位转移指令(BZC),指令格式为:76 5 43 21 000M2OP-CODERdD(低八)D(高八)其中“0 0 M ”为源码段,2OP-CODE为目的码段(LDA、STA指令使用)。D为十六位地址段(低八在前,高八随后),M为源寻址模式,其定义如下:寻址模式M有效地址E说 明00011011 E = D E = (D) E = (SP)+D E = (PC)+D 直接寻址 间接寻址 SP变址寻址 相对寻址 I/O指令输入(IN)和输出(OUT)指令采用单字节指令,其格式如下:7 6 5 43 21 0OP-CODE0 0Rd 停机指令指令格式如下:7 6 5 43 21 0OP-CODE0 00 0HALT指令,用于实现停机操作。1)指令系统本模型机共有16条基本指令,其中算术逻辑指令7条,访问内存指令和程序控制指令4条,输入输出指令2条,其它指令1条。下表列出了各条指令的格式、汇编符号、指令功能。助记符指令格式功能LDA M,D,Rd00M00RdERdSTA M,D,Rd00M01RdRdEJMP M,D00M1000EPCBZC M,D00M1100当CY=0或Z=0时,EPCMOV Rd,Rs0100RsRdRsRdADC Rd,Rs0101RsRdRs+Rd+CYRdSBC Rd,Rs0110RsRdRs-Rd-CYRdAND Rd,Rs0111RsRdRsRdRdCLR Rd100000Rd0RdINC Rd,Rs100100RdRs+1RdCPL Rd101000RdRdRdRHR Rd101100RdRdRdRHL Rd110000RdRdRdIN Rd,I/O110100RdI/ORdOUT Rd,I/O111000RdRdI/OHALT11110000停机2)复杂模型机指令系统;助记符 操作数 指令码 长度;-LDAD R0,* 00 3 ;直接字节送寄存器R0LDAD R1,* 01 3 ;直接字节送寄存器R1LDAD R2,* 02 3 ;直接字节送寄存器R2LDAD R3,* 03 3 ;直接字节送寄存器R3LDAI R0,* 10 3 ;间接字节送寄存器R0LDAI R1,* 11 3 ;间接字节送寄存器R1LDAI R2,* 12 3 ;间接字节送寄存器R2LDAI R3,* 13 3 ;间接字节送寄存器R3LDAX R0,* 20 3 ;变址字节送寄存器R0LDAX R1,* 21 3 ;变址字节送寄存器R1LDAX R2,* 22 3 ;变址字节送寄存器R2LDAX R3,* 23 3 ;变址字节送寄存器R3LDAR R0,* 30 3 ;相对字节送寄存器R0LDAR R1,* 31 3 ;相对字节送寄存器R1LDAR R2,* 32 3 ;相对字节送寄存器R2LDAR R3,* 33 3 ;相对字节送寄存器R3STAD *,R0 04 3 ;寄存器R0送直接字节STAD *,R1 05 3 ;寄存器R1送直接字节STAD *,R2 06 3 ;寄存器R2送直接字节STAD *,R3 07 3 ;寄存器R3送直接字节STAI *,R0 14 3 ;寄存器R0送间接字节STAI *,R1 15 3 ;寄存器R1送间接字节STAI *,R2 16 3 ;寄存器R2送间接字节STAI *,R3 17 3 ;寄存器R3送间接字节STAX *,R0 24 3 ;寄存器R0送变址字节STAX *,R1 25 3 ;寄存器R1送变址字节STAX *,R2 26 3 ;寄存器R2送变址字节STAX *,R3 27 3 ;寄存器R3送变址字节STAR *,R0 34 3 ;寄存器R0送相对字节STAR *,R1 35 3 ;寄存器R1送相对字节STAR *,R2 36 3 ;寄存器R2送相对字节STAR *,R3 37 3 ;寄存器R3送相对字节JMPD * 08 3 ;直接转移JMPI * 18 3 ;间接转移JMPX * 28 3 ;变址转移JMPR * 38 3 ;相对转移BNZCD * 0C 3 ;CY=0或Z=0时直接转移BNZCI * 1C 3 ;CY=0或Z=0时间接转移BNZCX * 2C 3 ;CY=0或Z=0时变址转移BNZCR * 3C 3 ;CY=0或Z=0时相对转移MOV R0,R0 40 1 ;寄存器R0送寄存器R0MOV R1,R0 41 1 ;寄存器R0送寄存器R1MOV R2,R0 42 1 ;寄存器R0送寄存器R2MOV R3,R0 43 1 ;寄存器R0送寄存器R3MOV R0,R1 44 1 ;寄存器R1送寄存器R0MOV R1,R1 45 1 ;寄存器R1送寄存器R1MOV R2,R1 46 1 ;寄存器R1送寄存器R2MOV R3,R1 47 1 ;寄存器R1送寄存器R3MOV R0,R2 48 1 ;寄存器R2送寄存器R0MOV R1,R2 49 1 ;寄存器R2送寄存器R1MOV R2,R2 4A 1 ;寄存器R2送寄存器R2MOV R3,R2 4B 1 ;寄存器R2送寄存器R3MOV R0,R3 4C 1 ;寄存器R3送寄存器R0MOV R1,R3 4D 1 ;寄存器R3送寄存器R1MOV R2,R3 4E 1 ;寄存器R3送寄存器R2MOV R3,R3 4F 1 ;寄存器R3送寄存器R3ADC R0,R0 50 1 ;寄存器R0带进位加到寄存器R0ADC R1,R0 51 1 ;寄存器R0带进位加到寄存器R1ADC R2,R0 52 1 ;寄存器R0带进位加到寄存器R2ADC R3,R0 53 1 ;寄存器R0带进位加到寄存器R3ADC R0,R1 54 1 ;寄存器R1带进位加到寄存器R0ADC R1,R1 55 1 ;寄存器R1带进位加到寄存器R1ADC R2,R1 56 1 ;寄存器R1带进位加到寄存器R2ADC R3,R1 57 1 ;寄存器R1带进位加到寄存器R3ADC R0,R2 58 1 ;寄存器R2带进位加到寄存器R0ADC R1,R2 59 1 ;寄存器R2带进位加到寄存器R1ADC R2,R2 5A 1 ;寄存器R2带进位加到寄存器R2ADC R3,R2 5B 1 ;寄存器R2带进位加到寄存器R3ADC R0,R3 5C 1 ;寄存器R3带进位加到寄存器R0ADC R1,R3 5D 1 ;寄存器R3带进位加到寄存器R1ADC R2,R3 5E 1 ;寄存器R3带进位加到寄存器R2ADC R3,R3 5F 1 ;寄存器R3带进位加到寄存器R3SBC R0,R0 60 1 ;寄存器R0带进位减到寄存器R0SBC R1,R0 61 1 ;寄存器R0带进位减到寄存器R1SBC R2,R0 62 1 ;寄存器R0带进位减到寄存器R2SBC R3,R0 63 1 ;寄存器R0带进位减到寄存器R3SBC R0,R1 64 1 ;寄存器R1带进位减到寄存器R0SBC R1,R1 65 1 ;寄存器R1带进位减到寄存器R1SBC R2,R1 66 1 ;寄存器R1带进位减到寄存器R2SBC R3,R1 67 1 ;寄存器R1带进位减到寄存器R3SBC R0,R2 68 1 ;寄存器R2带进位减到寄存器R0SBC R1,R2 69 1 ;寄存器R2带进位减到寄存器R1SBC R2,R2 6A 1 ;寄存器R2带进位减到寄存器R2SBC R3,R2 6B 1 ;寄存器R2带进位减到寄存器R3SBC R0,R3 6C 1 ;寄存器R3带进位减到寄存器R0SBC R1,R3 6D 1 ;寄存器R3带进位减到寄存器R1SBC R2,R3 6E 1 ;寄存器R3带进位减到寄存器R2SBC R3,R3 6F 1 ;寄存器R3带进位减到寄存器R3AND R0,R0 70 1 ;寄存器R0"与"到寄存器R0AND R1,R0 71 1 ;寄存器R0"与"到寄存器R1AND R2,R0 72 1 ;寄存器R0"与"到寄存器R2AND R3,R0 73 1 ;寄存器R0"与"到寄存器R3AND R0,R1 74 1 ;寄存器R1"与"到寄存器R0AND R1,R1 75 1 ;寄存器R1"与"到寄存器R1AND R2,R1 76 1 ;寄存器R1"与"到寄存器R2AND R3,R1 77 1 ;寄存器R1"与"到寄存器R3AND R0,R2 78 1 ;寄存器R2"与"到寄存器R0AND R1,R2 79 1 ;寄存器R2"与"到寄存器R1AND R2,R2 7A 1 ;寄存器R2"与"到寄存器R2AND R3,R2 7B 1 ;寄存器R2"与"到寄存器R3AND R0,R3 7C 1 ;寄存器R3"与"到寄存器R0AND R1,R3 7D 1 ;寄存器R3"与"到寄存器R1AND R2,R3 7E 1 ;寄存器R3"与"到寄存器R2AND R3,R3 7F 1 ;寄存器R3"与"到寄存器R3CLR R0 80 1 ;清零寄存器R0CLR R1 81 1 ;清零寄存器R1CLR R2 82 1 ;清零寄存器R2CLR R3 83 1 ;清零寄存器R3INC R0,R0 90 1 ;寄存器R0加1到R0INC R0,R1 91 1 ;寄存器R1加1到R0INC R0,R2 92 1 ;寄存器R2加1到R0INC R0,R3 93 1 ;寄存器R3加1到R0CPL R0 A0 1 ;寄存器R0取反CPL R1 A1 1 ;寄存器R1取反CPL R2 A2 1 ;寄存器R2取反CPL R3 A3 1 ;寄存器R3取反RHR R0,R0 B0 1 ;寄存器R0带进位循环右移RHR R0,R1 B1 1 ;寄存器R1带进位循环右移RHR R0,R2 B2 1 ;寄存器R2带进位循环右移RHR R0,R3 B3 1 ;寄存器R3带进位循环右移RL R0,R0 C0 1 ;寄存器R0带进位循环左移RL R0,R1 C1 1 ;寄存器R1带进位循环左移RL R0,R2 C2 1 ;寄存器R2带进位循环左移RL R0,R3 C3 1 ;寄存器R3带进位循环左移IN R0,IOL D0 1 ;将IOL数据读出到寄存器R0IN R1,IOL D1 1 ;将IOL数据读出到寄存器R1IN R2,IOL D2 1 ;将IOL数据读出到寄存器R2IN R3,IOL D3 1 ;将IOL数据读出到寄存器R3OUT IOH,R0 E0 1 ;将寄存器R0数据写入到IOHOUT IOH,R1 E1 1 ;将寄存器R1数据写入到IOHOUT IOH,R2 E2 1 ;将寄存器R2数据写入到IOHOUT IOH,R3 E3 1 ;将寄存器R3数据写入到IOHHALT "" F0 1 ;停机(总线锁定)六.复杂模型及数据通路图七.微程序控制器原理采用微程序设计方法设计控制单元的过程就是编写每一条机器指令的微程序,它是按执行每条机器指令所需的微操作命令的先后顺序而编写的,因此,一条机器指令对应一个微程序,由于任何一条机器指令的取指令操作是相同的,因此将取指令操作的命令统一编成一个微程序,这个微程序只负责将指令从主存单元中取出送至指令寄存器中。如果指令是间接寻址,其操作也是可以预测的,也可以编出对应间址周期的微程序。当出现中断时,中断隐指令所需完成的操作可由一个对应中断周期的微程序控制完成。这样,控制存储器中的微程序个数应为机器指令数再加上对应取址、间接寻址和中断周期的微程序。按照系统建议的微指令格式,参照微指令流程图,将每条微指令代码化,译成二进制代码,并将二进制代码表转换成十六进制格式文件。M23M22M21M20M19M18M17M16M15M14M13M12M11M10M9M8M7M6M5M4M3M2M1M0E/MIPMWRR/M目的编码OPMCNS2S1S0源编码XPWALUIuIEIRIczIds源编码目的编码M10M9M8功能M19M18M17功能X2X1X0O2O1O0111禁止111禁止110ALU110MAR101SP101BX100IOR100AX011MRD011SP010XRD010IOW001RRD001XWR000PC000RWR八.测试源程序;复杂模型机程序#LOAD "MXJ4.IS" ;预调入指令系统/微程序 org 0start: CLR r0; CLR r1; CLR r2; CLR r3;寄存器清零 LDA_X r0, 0060h;变址送寄存器R0 INC r0,r2;r2自加送到R0 CLR r0 ;r0清零 IN r0, iol ;从IO输入到R0 IN r2,iol;从IO输入到R2 RL r3,r0;R0左移送到R3 CLR R3 AND r0,r2;R2 R0与运算 CPL r0;R0取反 OUT ioh,r0;从R0 输出数据到IO MOV r1, r0;R0送到R1 MOV R3,R2; SBC r2, r0;R2 R0带借位减送到R2 ADC r0, r2;R0 R2带进位加送到R0 RR R0,R3;RO右移一位送到R3 STA_R 0030h,R2;相对寻址送到 JMP_I 0011H;跳转指令到0011 bnzc_d start; halt end九.复杂模型及微程序流程图十.课程设计心得这次的课程设计让我对计算机组成原理这门课程有了一个新的认识:软件与硬件的统一、程序与电路的融合。让我对“硬件是软件的身躯、软件是硬件的灵魂”有了更进一步的理解。通过这次课程设计,我掌握了复杂模型机的特点。掌握了复杂模型机的基本原理和方法。运用微程序,微指令完成了复杂模型机的程序设计。在课程设计的过程中,遇到了一些问题,都是粗心大意而造成,并非是对复杂模型机和编程的熟悉问题,说明了我再以后的试验中应该更细心的编写程序的每一步,对于本次课程设计所出现的马虎,应该牢记,以后不再犯同样的错误。通过这次课程设计,也让自己更加的了解复杂模型机。总之,通过这次课程设计使自己受益良多,我相信别的同学也得到的不少!最后非常感谢各位老师为我们辛勤的付出以及给与我们计算机组成原理学习方面的帮助。谢谢各位老师。