计算机组成原理课程设计报告.doc_第1页
计算机组成原理课程设计报告.doc_第2页
计算机组成原理课程设计报告.doc_第3页
计算机组成原理课程设计报告.doc_第4页
计算机组成原理课程设计报告.doc_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机组成原理课程设计1.课程设计目的及内容1.1 设计的目的及要求本课程设计是计算机科学与技术专业重要的实践性教学环节之一,是在学生学习完计算机组成原理课程后进行的一次全面的综合设计。目的是通过一个完整的8位指令系统结构(ISA)的设计和实现,加深对计算机组成原理课程内容的理解,建立起整机系统的概念,掌握计算机设计的基本方法,培养学生科学的工作作风和分析、解决实际问题的工作能力。要求学生综合运用计算机组成原理、数字逻辑和汇编语言等相关课程的知识,理解和熟悉计算机系统的组成原理,掌握计算机主要功能部件的工作原理和设计方法,掌握指令系统结构设计的一般方法,掌握并运用微程序设计(Microprogramming)思想,在设计过程中能够发现、分析和解决各种问题,自行设计自己的指令系统结构(ISA)。1.2 设计内容基于TDN-CM+计算机组成原理实验教学系统,设计和实现一个8位指令系统结构(ISA),通过调试和运行,使设计的计算机系统能够完成指定的功能。设计过程中要求考虑到以下各方面的问题:(1)、指令系统风格(寄存器-寄存器,寄存器-存储器,存储器-存储器);(2)、数据类型(无符号数,有符号数,整型,浮点型);(3)、存储器划分(指令,数据);(4)、寻址方式(立即数寻址,寄存器寻址,直接寻址等);(5)、指令格式(单字节,双字节,多字节);(6)、指令功能类别(算术逻辑运算,存储器访问,寄存器操作,程序流控制,输入输出);(7)、依据CPI值对指令系统进行性能分析。2.硬件系统分析2.1指令格式本系统设计五大类指令共12条,其中包括ALU算术逻辑指令、I/O指令、寄存器访问指令、存储器访问指令和程序流控制指令。具体指令格式表1-1所示:表1-1 指令格式指令类别助记符指令格式指令风格指令长度功能注释输入IN RI7-I4I3I2I1I0OP-CODE00Rd-单字节“INPUT DEVICE”-R输出OUT RI7-I4I3I2I1I0OP-CODERs00-双字节R-LED寄存器操作R-MOV Rs,RDI7-I4I3I2I1I0OP-CODERsRdR-R单字节Rs-Rd存储器访问LW Rd,AddrI7-I4I3I2I1I0OP-CODE00RdAddrR-RAM双字节Addr-RSTA Rs,AddrI7-I4I3I2I1I0OP-CODERs00AddrR-RAm双字节R-Addr程序流控制JMP RI7-I4I3I2I1I0OP-CODE00Rs-双字节Rs-PCSTOPI7-I4I3I2I1I0OP-CODE0000-单字节停 机ALU算数逻辑运算ADD Rs, R2RdI7-I4I3I2I1I0OP-CODERsRdR-R单字节Rs+R2-RdSUB Rs, R2,RdI7-I4I3I2I1I0OP-CODERsRdR-R单字节Rs-R2-RdXOR Rs, R2,RdI7-I4I3I2I1I0OP-CODERsRdR-R单字节RsR2-RdRL Rs,RdI7-I4I3I2I1I0OP-CODERsRdR-R单字节 循环左移(Rs)-RdRR Rs,RdI7-I4I3I2I1I0OP-CODERsRdR-R单字节循环右移 (Rs)-Rd2.2 寻址方式本系统中所有指令均采用直接寻找方式进行寻址。2.3 寄存器设置IN、R-MOV、LW、STA、RL、RR指令中通用寄存器为R0、R1、R2,没有设置专用寄存器ADD、XOR、SUB指令中通用寄存器为R0、R1,专用寄存器为R2。2.4 数据类型系统数据类型为无符号整型数据,字长为8bit,数值范围为0,255。2.5 存储器空间分配存储器地址由“INPUT DEVICE”的8位输入端生成,可对256个地址进行访问。此256个地址空间由代码区和数据区两部分构成(如图1-5所示),其中指令代码区范围为0000 0000-0111 1111,即00H-7FH,数据区范围为1000 0000-1111 1111,即80H-FFH。 I7 I6 I5 I4 I3 I2 I1 I0代码区数据区 00H 7FH80H FFH D7 D6 D5 D4 D3 D2 D1 D0 图1-5 存储器空间分配3微控程序设计3.1 系统数据通路图2-1 数据通路框图3.2 指令译码图2-2 指令译码指令译码原理 :由图2-2可以推出SE5SE1的逻辑方程SE5=FC+FZT4 P(3) ; SE4=I7T4P(1); SE3=I6T4P(1)SE2=I5T4P(1)+I3T4P(2)+P(4)T4SWB; SE1=I4T4P(1)+I2T4P(2)+P(4)T4SWA根据上述逻辑方程可以得出一下规律:(1) P(1)=0有效时,指令译码器产生的强制端SE6SE5SE4SE3SE2SE1中,SE6、SE5均与指令I7-I4无关,即恒为1;SE4SE3SE2SE1与I7I6I5I4的关系为SE4=I7,SE3=I6,SE2=I5,SE1=I4,在生成微地址543210时,对上述SE6SE5及指令译码生成的SE4SE3SE2SE1进行按位取反后再与上条微指令的后续地址进行逻辑相或,便可以求得指令地址。(2) P(2)=0有效时, 机器指令I3I2分别影响微地址的后两位10,其他位保持不变,而1=1+I3,0=0+I2。(3) P(3)=0有效时,SE4=SE3=SE2=SE1=1,SE5=FC+FZ,当FZ或FC有一个有效时,SE5=0则在生成微地址时为010000与原微地址进行逻辑或运算来得出新的微地址。(4) P(4)=0有效时,SWBSWA影响微地址后两位10;5432保持微指令的后续地址不变,而1=1+SWB,0=0+SWA。3.3 寄存器译码LDRi、RI-B、RS-B、RD-B、R0-B、R1-B、R2-B均为低电平有效。图2-3 寄存器译码分析图2-3可以得出各控制信号对寄存器的选择规律。表2-3-1 LDRi有效I1I0选择含义00LDR0数据写入R001LDR1数据写入R110LDR2数据写入R2表2-3-2 RD-B有效I1I0选择含义00R0-B将R0中的内容送到总线01R1-B将R1中的内容送到总线10R2-B将R2中的内容送到总线表2-3-3 RS-B有效I3I2选择含义00R0-B将R0中的内容送到总线01R1-B将R1中的内容送到总线10R2-B将R2中的内容送到总线当RI-B有效时,选中R2-B,将R2中的 内容送到总线。3.4 时序控制电路Ts1:对微控制器中编程单元的控制,包括写、读、运行程序。Ts2:进行微指令寄存器控制LOAD(控制PC)、RS-B、RD-B、RI-B、299-B、ALU-B、PC-B。Ts3:LDIR、LDAR。Ts4:P(1)、P(2)、P(3)、P(4)、AR、LDPC、LDRi、LDDR1、LDDR2、SE5-SE1。Ts1Ts2Ts3Ts4CPU周期 图2-4 时序信号图3.5 微程序各字段含义表2-5-1 S3S2S1S0MCn字段S3 S2 S1 S0 M CnALU算术逻辑运算F(输出)注 释1 0 0 1 0 1算数加运算 ADDA加BDR1中的值为ADR2中的值为B0 1 1 0 0 0算数减运算 SUBA减B0 1 1 0 1 0逻辑异或运算 AB0 0 0 0 0 1输出DR1中的内容A1 0 1 0 1 X输出DR2中的内容B1表2-5-2 A字段151413选择含义000空操作001LDRi将数据或地址写入指定的寄存器010LDDR1将数据写入ALU单元的DR1寄存器011LDDR2将数据写入ALU单元的DR2寄存器100LDIR控制写入指令寄存器101LDAD控制PC的写入信号110LDAR将地址写入地址寄存器计算机组成原理课程设表2-5-3 B字段121110选择含义 000空操作001RS-B通过I1I0控制将某个寄存器的内容读到总线上010RD-B通过I3I2控制将某个寄存器的内容读到总线上011RI-B将R2寄存器的内容读到总线上100299-B将299中的内容读到总线上101ALU-B将ALU中的运算结果读到总线上110PC-B将PC中的内容读到总线上表2-5-4 C字段987选择含义000空操作001P(1)测试字段010P(2)测试字段011P(3)测试字段100P(4)测试字段101AR控制进位端C(n+4)的信号110LDPC控制PC的写入信号表2-5-5 移位控制逻辑功能299-BS1S0M功能000X保持0100循环右移010带进位循环右移0010循环左移0011带进位循环左移X11X装数表2-5-6 扩展单元控制字段A9、A8A9A8Y含义00Y0“INPUT UNIT”中SW-B有效,输入数据01Y1“INPUT UNIT”中CE-B有效与WE共同控制读写操作10Y2“INPUT UNIT”中LED-B有效,数据在显示器上输出11Y3空操作表2-5-7 WE、Y字段WEY含义0Y0由“INPUT UNIT”输入数据0Y1从RAM中读取数据1Y1向RAM中写入数据0Y3空操作1Y2输出到LED表2-5-8 SWA、SWB状态设置SWASWB控制台指令00读内存(KRD)01写内存(KWE)11启动程序(RP)3.6 微指令格式表2-6 微代码表定义24 23 22 21 20 19 18 17 1615 14 1312 11 109 8 76 5 4 3 2 1S3 S2 S1 S0 M WE Cn A9 A8ABC5 4 3 2 1 04微程序设计4.1 微程序指令格式注:以下指令说明中无具体注释的二进制代码均为空操作(1) 运行程序公操作PC-ARPC+1 S3 S2 S1 S0 M Cn WE A9 A8 A B C0 0 0 0 0 0 0 1 1 011 110 110 PC=PC+1 LDAR PC-B LDPC RAM-BUSBUS-IR0 0 0 0 0 0 0 0 0 100 000 001 读内存 LDIR P(1) P(1) (2) INSW-R P(1) S3 S2 S1 S0 M Cn WE A9 A8 A B C 0 0 0 0 0 0 0 0 0 001 000 000 01 由INPUT输入数据 LDRi (3)OUTR-LED P(1) S3 S2 S1 S0 M Cn WE A9 A8 A B C 0 0 0 0 0 0 1 1 0 000 001 000 01 将数据所选R的值输出(4) LWPC-ARPC+1 P(1) S3 S2 S1 S0 M Cn WE A9 A8 A B C 0 0 0 0 0 0 0 1 1 110 110 110 RAM-BUSBUS-AR PC=PC+1 LDAR PC-B LDPC 0 0 0 0 0 0 0 0 1 110 000 000 读内存 LDAR RAM-BUSBUS-R1 0 0 0 0 0 0 0 0 1 001 000 000 读内存 LDRi 01 (5) STA P(1) PC-ARPC+1 S3 S2 S1 S0 M Cn WE A9 A8 A B C 0 0 0 0 0 0 0 1 1 110 110 110 PC=PC+1 LDAR PC-B LDPCRAM-BUSBUS-AR 0 0 0 0 0 0 0 0 1 110 000 000 读内存 LDARR0-BUSBUS-RAM 0 0 0 0 0 0 1 0 1 000 010 000 写内存 RD-B 01 (6) RL P(1)R1-299循环左移299-BUSBUS-R1 S3 S2 S1 S0 M Cn WE A9 A8 A B C 0 0 1 1 0 0 0 1 1 000 001 000 装数 Rs-B 0 0 0 1 0 0 0 1 1 000 000 000 循环左移 0 0 0 0 0 0 0 1 1 001 100 000 保持 LDRi 299-B 01 (7) RRP(1)R2-299循环右移299-BUSBUS-R2 S3 S2 S1 S0 M Cn WE A9 A8 A B C 0 0 1 1 0 0 0 1 1 000 001 000 装数 Rs-B 0 0 1 0 0 0 0 1 1 000 000 000 循环右移 0 0 0 0 0 0 0 1 1 001 100 000 保持 LDRi 299-B 01(8)R- MOVP(1)R-R S3 S2 S1 S0 M Cn WE A9 A8 A B C 0 0 0 0 0 0 0 1 1 001 001 000 LDRi Rs-B 01(9) ADDP(1)R1-DR1R2-DR2DR1+DR2-RBUS-R2 S3 S2 S1 S0 M Cn WE A9 A8 A B C 0 0 0 0 0 0 0 1 1 010 001 000 LDDR1 RS-B 0 0 0 0 0 0 0 1 1 011 011 000 LDDR2 RI-B 1 0 0 1 0 1 0 1 1 001 101 000 F=A+B LDRi ALU-B 01(10) SUBP(1)R1-DR1R2-DR2DR1-DR2-RBUS-R2 S3 S2 S1 S0 M Cn WE A9 A8 A B C 0 0 0 0 0 0 0 1 1 010 001 000 LDDR1 RS-B 0 0 0 0 0 0 0 1 1 011 011 000 LDDR2 RI-B 0 1 1 0 0 0 0 1 1 001 101 000 F=A-B LDRi ALU-B 01P(1)R1-DR1R2-DR2DR1DR2-RBUS-R2(11) XOR S3 S2 S1 S0 M Cn WE A9 A8 A B C 0 0 0 0 0 0 0 1 1 010 001 000 LDDR1 RS-B 0 0 0 0 0 0 0 1 1 011 011 000 LDDR2 RI-B 0 1 1 0 1 0 0 1 1 001 101 000 F=AB LDRi ALU-B 01P(1)R-pc(12) JMP S3 S2 S1 S0 M Cn WE A9 A8 A B C 0 0 0 0 0 0 0 1 1 101 010 110 LDAD R LDPC 01 (13) STOPP(1)PC-AR S3 S2 S1 S0 M Cn WE A9 A8 A B C 0 0 0 0 0 0 0 1 1 000 000 000(14) 控制台公操作P(4) S3 S2 S1 S0 M Cn WE A9 A8 A B C 0 0 0 0 0 0 0 1 1 000 000 100 P(4)(15) 强制读操作(KRD)P(4)PC-ARPC+1RAM-BUSBUS-DR1DR1-RAM S3 S2 S1 S0 M Cn WE A9 A8 A B C 0 0 0 0 0 0 0 1 1 110 110 110 PC=PC+1 LDAR PC-B LDPC 0 0 0 0 0 0 0 0 1 010 000 000 读内存 LDDR1 0 0 0 0 0 0 1 1 0 000 101 000 F=A 将结果输出到LED ALU-B (16) 运行程序(RP)P(4) S3 S2 S1 S0 M Cn WE A9 A8 A B C 0 0 0 0 0 0 0 1 1 000 000 000 01 P(4)PC-ARPC+1SW-BUSBUS-DR1DR1-RAM(17) 强制写操作(KWE) S3 S2 S1 S0 M Cn WE A9 A8 A B C 0 0 0 0 0 0 0 1 1 110 110 110 PC=PC+1 LDAR PC-B LDPC 0 0 0 0 0 0 0 0 0 010 000 000 由INPUT输入数据 LDDR1 0 0 0 0 0 0 1 0 1 000 101 000 F=A 写内存 ALU-B4.2 微程序流程图 (1) 运行程序流程图 (见附录)(2) 控制台流程图 (见附录)4.3 微程序二进制微代码表表3-3 二进制微代码表微地址S3S2S1S0 M Cn WEA9A8ABCA5A4A3A2A1A0000 0 0 0 0 0 0 1 1000000100 0 1 1 1 0 0010 0 0 0 0 0 0 1 1110110110 0 0 0 0 1 0020 0 0 0 0 0 0 0 1100000001 1 0 0 0 0 0030 0 0 0 0 0 0 1 1011011000 0 0 0 1 0 0041 0 0 1 0 1 0 1 1001101000 0 0 0 0 0 1050 0 0 0 0 0 0 1 1011011000 0 0 0 1 1 0060 1 1 0 0 0 0 1 1001101000 0 0 0 0 0 1070 0 0 0 0 0 0 1 1011001000 0 0 1 0 0 0100 1 1 0 1 0 0 1 1001101000 0 0 0 0 0 1110 0 0 0 0 0 0 0 1110000000 0 0 1 0 1 0120 0 0 0 0 0 1 0 1000001000 0 0 0 0 0 1130 0 0 0 0 0 0 1 1001100000 0 0 0 0 0 1140 0 0 0 0 0 0 0 1110000000 0 0 1 1 0 1150 0 0 0 0 0 0 0 1001000000 0 0 0 0 0 1160 0 0 0 0 0 0 1 1001100000 0 0 0 0 0 1170 0 0 1 0 0 0 1 1000000000 0 0 1 0 1 1200 0 0 0 0 1 1 1 0000101000 0 1 1 1 0 0210 0 0 0 0 1 1 0 1000101000 0 1 1 1 0 1220 0 0 0 0 0 0 0 1010000000 0 1 0 0 0 0230 0 1 0 0 0 0 0 1000000000 0 0 1 1 1 0240 0 0 0 0 0 0 0 0010000000 0 1 0 0 0 126 27 30 3132 33 340 0 0 0 0 0 0 1 1110110110 0 1 0 0 1 0350 0 0 0 0 0 0 1 1110110110 0 1 0 1 0 036 370 0 0 0 0 0 0 1 1010000000 0 0 0 0 0 1 400 0 0 0 0 0 0 0 0001000000 0 0 0 0 0 1410 0 0 0 0 0 0 1 1010001000 0 0 0 0 1 1420 0 0 0 0 0 0 1 11101101100 0 1 0 0 1430 0 0 0 0 0 1 1 0000001000 0 0 0 0 0 1440 0 0 0 0 0 0 1 1101010110 0 0 0 0 0 1 450 0 0 0 0 0 0 1 1110110110 0 0 1 1 0 0460 0 0 0 0 0 0 1 1001001000 0 0 0 0 0 1470 0 0 0 0 0 0 1 1000000000 1 0 0 1 1 1500 0 0 0 0 0 0 1 1010001000 0 0 0 1 0 1510 0 0 0 0 0 0 1 1010001000 0 0 0 1 1 1520 0 1 1 0 0 0 1 1000001000 0 0 1 1 1 1530 0 1 1 0 0 0 1 10000010000 1 0 0 1 15 机器指令设计5.1 机器指令的生成根据2.2中指令的译码原理以及表3-3二进制微代码可以生成相应的机器指令码,具体生成方式见表4-1-1与4-1-2。 5.1.1 运行程序机器指的令生成表4-1-1 机器指令生成方式微指令地址(八进制)I7I6I5I4I3I2I1I0Address指令名称40000000 Rd-IN521010Rs Rd-RL531011Rs Rd-RR501000Rs Rd-SUB460110Rs Rd-R-MOV410001Rs Rd-ADD420010Rs 00AddrSTA45010100 RdAddrLW511001Rs Rd-XOR430011Rs 00-OUT44010000 Rs-JMP47011100 00-STOP 5.1.2 控制台机器指令的生成表4-1-2 控制台机器指令生成方式控制台公操作后续地址(八进制)SWASWB功能3000读内存01写内存11启动程序5.2 机器指令程序根据3.2节中微程序流程图以及4.1节中机器指令生成方式可以编写相应机器指令程序。具体机器指令程序如下表:表4-2 机器指令程序地址(十六进制)助记符内容(二进制)内容(十六进制)功能注释00IN R10000 000101写入R1的值01IN R20000 001002写入R2的值02ADD Rs Rd0001010014R1+R2-R003OUT R00011 000030R0值输出04STA R0 800010 000020R0-RAM80051000 00008006XOR R1 R01001 010094R1R2-R007OUT R00011 000030R0值

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论