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

下载本文档

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

文档简介

计算机组成原理课程设计报告班级: 姓名: 学号:完成时间: 一、课程设计目的1在实验机上设计实现机器指令及对应的微指令(微程序)并验证,从而进一步掌握微程序设计控制器的基本方法并了解指令系统与硬件结构的对应关系;2通过控制器的微程序设计,综合理解计算机组成原理课程的核心知识并进一步建立整机系统的概念;3培养综合实践及独立分析、解决问题的能力。二、课程设计的任务针对COP2000实验仪,从详细了解该模型机的指令/微指令系统入手,以实现乘法和除法运算功能为应用目标,在COP2000的集成开发环境下,设计全新的指令系统并编写对应的微程序;之后编写实现乘法和除法的程序进行设计的验证。三、 课程设计使用的设备(环境)1硬件 COP2000实验仪 PC机2软件 COP2000仿真软件四、课程设计的具体内容(步骤)1详细了解并掌握COP 2000模型机的微程序控制器原理,通过综合实验来实现 该模型机指令系统的特点: 1) 指令系统特点与设计 模型机的指令码为8位,根据指令类型的不同,可以有0到2个操作数。指令码的最低两位用来选择R0-R3寄存器,在微程序控制方式中,用指令码做为微地址来寻址微程序存储器,找到执行该指令的微程序。而在组合逻辑控制方式中,按时序用指令码产生相应的控制位。在本模型机中,一条指令最多分四个状态周期,一个状态周期为一个时钟脉冲,每个状态周期产生不同的控制逻辑,实现模型机的各种功能。模型机有24位控制位以控制寄存器的输入、输出,选择运算器的运算功能,存储器的读写。 指令系统包括以下七类:算术运算指令 逻辑运算指令数据传输指令跳转指令ADD A, R? ADD A, R? ADD A, MM ADD A, #II ADDC A, R? ADDC A, R? ADDC A, MM ADDC A, #II SUB A, R? SUB A, R? SUB A, MM SUB A, #II SUBC A, R? SUBC A, R? SUBC A, MM SUBC A, #II AND A, R? AND A, R? AND A, MM AND A, #II OR A, R? OR A, R? OR A, MM OR A, #II CPL A MOV A, R? MOV A, R? MOV A, MM MOV A, #II MOV R?, A MOV R?, A MOV MM, A MOV R?, #II JC MM JZ MM JMP MM CALL MM RET 移位指令中断返回指令输入/输出指令RR A RL A RRC A RLC A RETI READ MM WRITE MM IN OUT 2)模型机寻址方式 模型机的寻址方式指令举例说明累加器寻址操作数累加器A。 例如“CPL A”是将累加器A的值取反,还有些是隐含寻址累加器A; 例如“OUT”是将累加器A的值输出到输出端口寄存器OUT。 寄存器寻址参与运算的数据在R0-R3的寄存器中。 例如“ADD A,R0”是将寄存器R0的值加上累加器A的值,再存入累加器A中 寄存器间接寻址参与运算的数据在寄存器EM中,数据的地址在寄存器R0-R3中。 例如“MOV A,R1”是将寄存器R1的值作为地址,把存储器EM中该地址的内容送入累加器A中。 存储器直接寻址将存储器EM中,数据的地址为指令的操作数。 例如“AND A,40H”40H单元的数据与累加器A的值作逻辑与运算,结果存入累加器A。 立即数寻址参与运算的数据位指令的操作数。 例如“SUB A,#10H”从累加器A中减去立即数10H,结果存入累加器A。 3)指令格式助记符 机器码1 机器码2 指令说明 _FATCH- 000000xx 实验机占用,不可修改。复位后,所有寄存器清0,首 先执行 _FATCH_ 指令取指 ADD A, R? 000100xx 将寄存器R?的值加入累加器A中 该模型机微指令系统的特点(包括其微指令格式的说明等):微指令格式 助记符 状态 微地址 微程序 数据输出 数据打入 地址输出 运算器 移位控制 PC PC _FATCH_ T0 00 CBFFFF 指令寄存器IR PC输出 A输出 写入 +1 01 FFFFFF A输出 +1 02 FFFFFF A输出 +1 03 FFFFFF A输出 +1 2) 微指令设置说明 控制信号 含义 XRD: 外部设备读信号,当给出了外设的地址后,输出此信号,从指定外设读数据。 EMWR: 程序存储器 EM 写信号。 EMRD: 程序存储器 EM 读信号。 PCOE: 将程序计数器 PC 的值送到地址总线 ABUS 上。 EMEN: 将程序存储器 EM 与数据总线 DBUS 接通,由 EMWR 和 EMRD 决定是将 DBUS 数据写到 EM 中,还是从 EM 读出数据送到 DBUS。 IREN 将程序存储器 EM 读出的数据打入指令寄存器 IR 和微指令计数器 uPC。 EINT: 中断返回时清除中断响应和中断请求标志,便于下次中断。 ELP: PC 打入允许,与指令寄存器的 IR3、IR2 位结合,控制程序跳转。 MAREN:将数据总线 DBUS 上数据打入地址寄存器 MAR。 MAROE: 将地址寄存器 MAR 的值送到地址总线 ABUS 上。 OUTEN: 将数据总线 DBUS 上数据送到输出端口寄存器 OUT 里。 STEN: 将数据总线 DBUS 上数据存入堆栈寄存器 ST 中。 RRD: 读寄存器组 R0-R3,寄存器 R?的选择由指令的最低两位决定。 RWR: 写寄存器组 R0-R3,寄存器 R?的选择由指令的最低两位决定。 CN: 决定运算器是否带进位移位,CN=1 带进位,CN=0 不带进位。 FEN: 将标志位存入 ALU 内部的标志寄存器。 X2 X1 X0: X2、X1、X0 三位组合来译码选择将数据送到 DBUS 上的寄存器。 WEN: 将数据总线 DBUS 的值打入工作寄存器 W 中。 AEN: 将数据总线 DBUS 的值打入累加器 A 中。 S2 S1 S0 S2、S1、S0 三位组合决定 ALU 做何种运算。 X2 X1 X0与S2 S1 S0的具体对应操作如表所示:X2 X1 X0 被选中寄存器 S2 S1 S0 运算 000IN000A+W001IA001A-W010ST010A OR W011PC011A AND W100 D100A+W+Cy101R101A-W-Cy110L110NOT A111无111A2.计算机中实现乘法和除法的原理(1)无符号乘法实例演示(即,列4位乘法具体例子演算的算式):被乘数为1001(二进制),即为十进制的9;乘数为0110(二进制),即为十进制的6。那么,可以通过笔算得到:10010110=00110110即十进制运算结果为:96=54 无符号乘法的实例演示如图1所示: 1 0 0 1 ;被乘数 0 1 1 0 ;乘数 0 0 0 0 ;初始值(零) 0 0 0 0 (0) ;乘数最低位为0,部分积加0,被乘数左移一;位,乘数右移一位。 0 0 0 0 ;部分积 1 0 0 1 (1) ;乘数最低位为1,部分积加被乘数,被乘数左;移一位,乘数右移一位。 1 0 0 1 0 ;部分积 1 0 0 1 (1) ;乘数最低位为1,部分积加被乘数,被乘数左;移一位,乘数右移一位。 1 1 0 1 1 0 ;部分积 0 0 0 0 (0) ;乘数最低位为0,部分积加0,被乘数左移一;位,乘数右移一位。 (0) 0 1 1 0 1 1 0 ;计算完毕,结果为00110110 即:10010110=00110110硬件原理框图: 算法流程图:在模型机上实现无符号数乘法运算时,采用“加法移位”的重复运算方法。因此,无符号乘法的算法流初始化被乘数及乘数初始化部分积开始计算部分积乘数末位为1?结束被乘数左移一位(不带进位)乘数右移一位(不带进位)输出结果(R0)乘数为0?YNYN程图如图所示。 (2)无符号除法 实例演示(即,列4 位除法具体例子演算的算式): 被除数为01000011(二进制),即为十进制的67;除数为0110(二进制),即为十进 制的6。那么,可以通过笔算得到:010000110110=10110001即十进制运算结果为:676=111无符号除法的实例演示如图4所示 1 0 1 10 1 1 0 0 1 0 0 0 0 1 1 ;被除数 0 1 1 0 ;除数 0 1 0 0 0 0 1 1 0 ;被除数左移一位,比较,够减0 1 1 0 ;相减,商上10 0 1 0 0 1 1 00 0 1 0 0 1 1 0 0 ;余数左移一位,比较,不够减0 1 1 0 ;商上0 0 1 0 0 1 1 0 0 0 ;余数左移一位,比较,够减0 1 1 0 ;相减,商上1 0 0 1 1 1 0 0 0 0 0 1 1 1 0 0 0 0 ;余数左移一位,比较,够减 0 1 1 0 ;相减,商上1 0 0 0 1 硬件原理框图:ALUAWR1R2被除数除数DLR标志位CR2(商)R3(计数器)初始化:被除数左移算法流程图:初始化被除数及除数计数器初始化被除数左移开始做减法YN商0余数为负?商1计算结束?YN计算结束?YN输出结果结束计算余数3对应于以上算法如何分配使用COP2000实验仪中的硬件(1)乘法硬件分配情况表 硬件名称实现算法功能描述寄存器R0计算时用来存放中间结果和最后的积。 寄存器R1 初始化时,用来存放被乘数; 在程序执行的过程中,用来存放向左移位后的被乘数。 寄存器R2 初始化时,用来存放乘数; 在程序执行的过程中,用来存放向右移位后的乘数。 累加器A传递中间数据。 寄存器W传递中间数据。 左移门L实现左移操作。 直通门D用来控制ALU的执行结果是否输出到数据总线。右移门R实现右移操作程序计数器PC 控制程序按顺序正常执行; 当执行转移指令时,从数据线接收要跳转的地址,使程序能够按需要自动执行。 当要从EM中读取数据时,由PC提供地址。 存储器EM存储指令和数据。 微程序计数器PC向微程序存储器M提供相应微指令的地址。 微程序存储器M存储相应指令的微指令。 (2)除法硬件分配情况表 硬件名称实现算法功能描述寄存器R0在程序执行过程中,用来保存当前算得的商。 寄存器R1初始化时,用来存放被除数。 寄存器R2初始化时,用来存放除数,和被右移的除数。 寄存器R3当作计数器使用,用来控制程序是否结束。 累加器A传递中间运行数据。 寄存器W传递中间运行数据。 左移门L实现左移操作。 直通门D用来控制ALU的执行结果是否输出到数据总线。 右移门R实现右移操纵。 程序计数器PC 控制程序按顺序正常执行; 当执行转移指令时,从数据线接收要跳转的地址,使程序能够按需要自动执行。 当要从EM中读取数据时,由PC提供地址。存储器EM存储指令和数据。微程序计数器PC向微程序存储器M提供相应微指令的地址。 微程序存储器M存储相应指令的微指令。 4在COP2000集成开发环境下设计全新的指令/微指令系统 设计结果如表所示(可按需要增删表项) (1) 新的指令集 (设计两个不同指令集要分别列表)新的指令集(乘法和除法) 助记符机器码1 机器码2 指令说明_FATCH_000000xx00-03实验机占用,不可修改。复位后,所有寄存器清0首先执行 _FATCH_ 指令取指MOV R? ,#II000001xx04-07II将立即数II送入寄存器R中。 MOV A, R?000010xx08-0B将寄存器R中的数据送入累加器A中。 MOV R?, A000011xx0C-0F将A累加器中的数据送入寄存器R中。 SUB A, R?000100xx10-13带进位减法语句,结果保存在累加器A中 OR A, #II000110xx18-1BII逻辑或指令,影响标志位。 TEST R?000111xx1C-1F判断当前寄存器中内容是否为0,影响标志位RL R?001000xx20-23逻辑左移SHL R?001001xx24-27逻辑左移SHR R?001010xx28-2B算术右移RR R?001011xx2C-2F逻辑右移ENDD001100xx30-33程序结束。 ADD R?, A001101xx34-37不带进位加法指令,结果保存在R中。 JMP MM001111xx3C-3FMM实现无条件跳转 JC MM010000xx40-43MM带进位跳转 JZ MM010001xx44-47MM带零判断跳转 (2)新的微指令集 助记符 状态 微地址 微程序 数据输出 数据打入 地址输出 运算器 移位控制PC PC _FATCH_T000CBFFFF指令寄存器IRPC输出A输出写入+101FFFFFFA输出+102FFFFFFA输出+103FFFFFFA输出+1MOV R?, #IIT104C7FBFF存储器EM寄存器R?PC输出A输出+1+1T005CBFFFF指令寄存器IRPC输出A输出写入+106FFFFFFA输出+107FFFFFFA输出+1MOV A, R?T108FFF7F7寄存器值R?寄存器AA输出+1T009CBFFFF指令寄存器IRPC输出A输出写入+10AFFFFFFA输出+10BFFFFFFA输出+1MOV R?, AT10CFFFB9FALU直通寄存器R?A输出+1T00DCBFFFF指令寄存器IRPC输出A输出写入+10EFFFFFFA输出+10FFFFFFFA输出+1SUB A, R?T210FFF7EF寄存器值R?寄存器WA输出+1T111FFFE91ALU直通寄存器A,标志位C,Z减运算+1T012CBFFFF指令寄存器IRPC输出A输出写入+113FFFFFFA输出+1UNDEF14FFFFFFA输出+115FFFFFFA输出+116FFFFFFA输出+117FFFFFFA输出+1OR A, #IIT218C7FFEF存储器值EM寄存器WPC输出A输出+1+1T119FFFE92ALU直通寄存器A 标志位C,Z或运算+1T01ACBFFFF指令寄存器IRPC输出A输出写入+11BFFFFFFA输出+1TEST R?T31CFFF7F7寄存器值R?寄存器AA输出+1T21DFFF7EF寄存器值R?寄存器WA输出+1T11EFFFE92ALU直通寄存器A 标志位C,Z或运算+1T01FCBFFFF指令寄存器IRPC输出A输出写入+1RL R?T220FFF7F7寄存器值R?A输出+1T121FFF9DFALU左移寄存器R?A输出左移+1T022CBFFFF指令寄存器IRPC输出A输出写入+123FFFFFFA输出+1SHL R?T224FFF7F7寄存器值R?A输出+1T125FFF8DFALU左移寄存器R? 标志位C,ZA输出左移+1T026CBFFFF指令寄存器IRPC输出A输出写入+127FFFFFFA输出+1SHR R?T228FFF7F7寄存器值R?A输出+1T129FFFABFALU右移寄存器R? 标志位C,ZA输出带进位右移+1T02ACBFFFF指令寄存器IRPC输出A输出写入+12BFFFFFFA输出+1RR R?T22CFFF7F7寄存器值R?FF7F7xx 0 0 0 0 0 0 0 1寄存器AA输出+1T12DFFF9BFALU右移寄存器R?A输出右移+1T02ECBFFFF指令寄存器IRPC输出A输出写入+12FFFFFFFA输出+1ENDDT030CBFFFF指令寄存器IRPC输出A输出写入+131FFFFFFA输出+132FFFFFFA输出+133FFFFFFA输出+1ADD R?, AT334FFF7EF寄存器值R?寄存器WA输出+1T235FFFE90ALU直通寄存器A 标志位C,Z加运算+1T136FFFB9FALU直通寄存器R?A输出+1T037CBFFFF指令寄存器IRPC输出A输出写入+1UNDEF38FFFFFFA输出+139FFFFFFA输出+13AFFFFFFA输出+13BFFFFFFA输出+1JMP MM T13CC6FFFF存储器值EM寄存器PCPC输出A输出+1写入T03DCBFFFF指令寄存器IRPC输出A输出写入+13EFFFFFFA输出+13FFFFFFFA输出+1JC MMT140C6FFFF存储器值EM寄存器PCPC输出A输出+1写入T041CBFFFF指令寄存器IRPC输出A输出写入+142FFFFFFA输出+143FFFFFFA输出+1JZ MM T144C6FFFF存储器值EM寄存器PCPC输出A输出+1写入T045CBFFFF指令寄存器IRPC输出A输出写入+146FFFFFFA输出+147FFFFFFA输出+15用设计完成的新指令集编写实现无符号二进制乘法、除法功能的汇编语言程序 (1)乘法4位乘法的汇编语言程序清单:MOV R1,#07HMOV R0,#05HMOV R2,#00HB1:TEST R0 JZ OVER SHR R0 JC B2B3:SHL R1 JMP B1B2:MOV A,R1 ADD R2,A JMP B3OVER:ENDD(2)除法(选作) 4位除法的汇编语言程序清单:MOV R1,#43HMOV R2,#06HMOV R3,#04HMOV R0,#01HRL R2RL R2RL R2RL R2 D:RL R1 MOV A,R1 SUB A,R2 JC B1 OR A,#01H MOV R1,AB1:MOV A,R3 SUB A,R0 JZ OVER MOV R3,A JMP DOVER:ENDD6上述程序的运行情况

温馨提示

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

评论

0/150

提交评论