logo资料库

计算机组成原理课程设计报告 完整版.doc

第1页 / 共26页
第2页 / 共26页
第3页 / 共26页
第4页 / 共26页
第5页 / 共26页
第6页 / 共26页
第7页 / 共26页
第8页 / 共26页
资料共26页,剩余部分请下载后查看
计算机组成原理课程设计报告
计算机组成原理课程设计报告 班级:计算机 0701 班 姓名: 学号: 完成时间: 2009 年 12 月 20 日 一、课程设计目的 1.在实验机上设计实现机器指令及对应的微指令(微程序)并验证,从而进一步掌握微程 序设计控制器的基本方法并了解指令系统与硬件结构的对应关系; 2.通过控制器的微程序设计,综合理解计算机组成原理课程的核心知识并进一步建立整机 系统的概念; 3.培养综合实践及独立分析、解决问题的能力。 二、课程设计的任务 针对 COP2000 实验仪,从详细了解该模型机的指令/微指令系统入手,以实现乘法和除 法运算功能为应用目标,在 COP2000 的集成开发环境下,设计全新的指令系统并编写对应 的微程序;之后编写实现乘法和除法的程序进行设计的验证。 三、 课程设计使用的设备(环境) 1.硬件  COP2000 实验仪  PC 机 2.软件  COP2000 仿真软件 四、课程设计的具体内容(步骤) 1.详细了解并掌握 COP 2000 模型机的微程序控制器原理,通过综合实验来实现 该模型机指令系统的特点: COP2000 模型机指令的最低两位(IR0 和 IR1)用来寻址 R0~R3 四个寄存器;IR2 和 IR3 与 ELP 微控制信号,Cy 和 Z 两个程序状态信号配合,控制 PC 的置数即程序 的转移。各种转移的条件判断逻辑如下所示: PC 置数逻辑 当 ELP=1 时,不允许 PC 被预置 当 ELP=0 时 当 IR3=1 时,无论 Cy 和 Z 什么状态,PC 被预置 当 IR3=0 时 若 IR2=0,则当 Cy=1 时 PC 被预置 若 IR2=1,则当 Z=1 时 PC 被预置 (1)模型机的寻址方式分五种:累加器寻址 、寄存器寻址、寄存器间接寻址、存储器 直接寻址、立即数寻址; (2)模型机有一些缺省的指令集,分几大类: 算术运算指令、逻辑运算指令、移位指
令、数据传输指令、跳转指令、中断返回指令、输入/输出指令。 (3)模型机的指令集有: 算术运算指令:ADD A, R? ADD A@R? ADD A, MM ADD A, #II 逻辑运算指令: AND A, R? AND A, @R? AND A, MM AND SUB A, R? SUB A, @R? ADDC A, R? ADDC A, @R? ADDC A, MM ADDC A, #II A, #II SUB A, MM SUB A, #II SUBC A, R? SUBC A, @R? SUBC A, MM SUBC A, #II OR A A, R? MOV A, @R? MOV A, #II R?, A MOV @R?, A MOV MM, A MOV R?, #II A, MM MOV A, @R? OR A, MM OR A, #II CPL A, R? OR 数据传输指令:MOV MOV 输入/输出指令: READ MM WRITE MM IN 跳转指令: 移位指令: 中断返回指令:RETI JC MM JZ MM JMP MM CALL MM RET RR A RRC A NOP A RLC A RL OUT 该模型机微指令系统的特点(包括其微指令格式的说明等): COP2000 模型机的微指令字长为 24 位,全部为操作控制部分,不含顺序控制字段。 微指令编码采用直接表示法,微地址形成采用计数器方式。微指令格式为水平型微指令。 模型机有 24 位控制位以控制寄存器的输入、输出,选择运算器的运算功能,存储器的读写。 24 位控制位作用分别如下: 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 三位组合来译码选择将数据送到 DBUS 上的寄存器。 X2 X1 X0 输出寄存器 0 0 0 0 1 IN_OE 0 1 IA_OE 0 ST_OE 1 PC_OE 0 D_OE 0 0 1 1 0 外部输入门 中断向量 堆栈寄存器 PC 寄存器 直通门
1 1 1 0 1 1 1 R_OE 0 L_OE 1 没有输出 右移门 左移门 WEN: 将数据总线 DBUS 的值打入工作寄存器 W 中。 AEN: 将数据总线 DBUS 的值打入累加器 A 中。 S2、S1、S0 三位组合决定 ALU 做何种运算。 加 减 或 与 S2 S1 S0 功能 0 A+W 0 1 A-W 0 0 0 A|W 1 A&W 0 0 A+W+C 带进位加 1 1 A-W-C 1 带进位减 1 0 ~A A 取反 输出 A 1 A 1 0 0 1 1 0 0 1 1 2。计算机中实现乘法和除法的原理 (1)无符号乘法 1 例演示: 例:1101*1011 1 1 0 1 1 0 1 1 1 1 0 1 1 1 0 1 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 1 0 0 1 1 1 1 1 0 1 0 0 0 1 0 0 0 1 1 1 1 1 1 0 1 乘数 x 1011 被乘数 y 1101 11010 110100 1101000 0101 0010 0001 0000 说明 x 右移一位 y 左移一位 x 右移一位 y 左移一位 x 右移一位 y 左移一位 x 右移一位 y 左移一位 基本思想:乘数右移一位若标志位 C 得 1,中间结果加被乘数后被乘数左移一位乘数右 移一位,若标志位 C 得 0,中间结果不变被乘数左移一位,采用相同方法循环四次 。 ②硬件原理框图:
简要说明:被乘数保存在寄存器 R0 中,乘数保存在 R1 中,循环次数保存在 R2 中, 中间数和计算结果保存在 R3 中。每次计算乘数右移一位,若移出的是 1 则加被乘数,并且 每运行一次被乘数左移一位,计数器减一,直至计数器的值为零。 ③算法流程图: 开始 给 R0,R1, R2, R3 赋值 R1 左移一位 C=1 y R3+R1R3 R0 左移 R2 减一 y R2=0 ? y 结束 n n
(2)无符号除法 ①实例演示: 例:10010101(x)/1101(y) 1 0 0 1 0 1 0 1 0 1 1 0 1 0 0 0 0 0 1 0 1 1 0 1 0 0 1 1 0 1 0 0 0 0 1 0 1 1 0 1 0 0 0 1 1 0 1 0 0 0 0 1 0 0 1 1 0 0 0 0 1 1 0 1 0 0 0 0 0 1 1 0 商 1 10 101 1011 除数 01101000 00110100 00011010 00001101 运算次数 1 2 3 4 基本思想:先把除数左移三位,与被除数作比较,若大于被除数,则商左移一位后 加 1;否则商左移一位。每次运算后除数右移一位,采用相同方法循环四次。 除法的设计思想和恢复余数法相类似,但是在设计指令和微指令时被除数减除数的 结果先存入累加器 R 中,然后判断标志寄存器 C 的值——如果被除数大于除数就把 A 的值 存回被除数的寄存器中,否则不用做任何变动,即不用恢复余数。 ②硬件原理框图: 简要说明:被除数保存在寄存器 R0 中,除数保存在 R1 中,商保存在 R2 中,循环次 数保存在 R3 中。运算结束后,余数保存在 R0 中。运算开始时除数左移三位。以后每运算 一次,计数器减一除数右移一位,商左移一位,并且若被除数大于除数商加 1。
③算法流程图: 开始 给 R0,R1, R2,R3 赋值 R1 左移三位 R2 左移一位 R0-R1=A C=1 n A->R0 R2+1R2 R1 右移一位 R3-1R3 R2=0 ? y 结束 y n 注:R0 存放被除数,R1 存放除数,R2 存放商,R3 存放循环次数,运算结束后 R0 中存放余数。 3.对应于以上算法如何分配使用 COP2000 实验仪中的硬件 乘法时:寄存器 R0 中保存被乘数,R1 中保存乘数,R2 中保存循环次数,R3 中保存中间数 和最后的计算结果。 除法时:R0 存放被除数,R1 存放除数,R2 存放商,R3 存放循环次数,运算结束后 R0 中 存放余数。
4.在 COP2000 集成开发环境下设计全新的指令/微指令系统 (1) 新的指令集 助记符 机器码 1 000000xx _FATCH _ 00-03 000001xx LD 04-07 R?,#II RRC R? 000010xx 08-0B 000101xx 14-17 000111xx 1C-1F 001000xx 20-23 001001xx 24-27 RLC R? ADD R?,A SUB A, #II LD A,R? LD R?,A 001010xx SUB R?, #II JC MM JZ MM JMP MM SHR R? SHL R? 28-2B 001011xx 2C-2F 001100xx 30-33 001101xx 34-37 001111xx 3C-3F 010000xx 40-43 010001xx 44-47 机器码 2 指令说明 II II II MM MM MM 把一个立即数存入寄存器中 寄存器的内容带进位右移 寄存器的内容带进位左移 寄存器的内容与累加器的内容相加,结果存 入寄存器中 寄存器的内容和一个立即数减,结果存入原 寄存器中 把寄存器的内容放进累加器中 把累加器的内容放入寄存器中 寄存器的内容与一个立即数减,结果放进寄 存器 条件转移指令,标志位 C 为 1 时,跳转 条件转移指令,标志位 z 为 1 时,跳转 无条件转移指令 寄存器的内容不带进位右移 寄存器的内容不带进位左移 ADD R?, #II 010010xx 48-4B II 寄存器内容与立即数相加
SUB A, R? 010011xx 4C-4F 累加器内容与寄存器减 (2) 新的微指令集 助记符 状态 微地址 微程序 数据输出 数据打入 地址输出 运算器 移位控制 PC -FATCH PC 输出 A 输出 CBFFFF T0 ->00 PC 写入 +1 指 令 寄 存 器 IR R?, T1 LD #II T0 04 05 C7FBFF 存 储 器 值 寄存器 R? PC 输出 A 输出 +1 +1 EM CBFFFF 指 令 寄 存 器 IR PC 输出 A 输出 写入 +1 RRC R? T3 ->08 FFF7F7 寄 存 器 值 寄存器 A A 输出 +1 T2 T1 T0 RLC R? T3 T2 T1 T0 ADD R?,A T3 T2 T1 T0 T2 T1 T0 T1 SUB A,#II LD 09 0A 0B 14 15 16 17 1C 1D 1E 1F 20 21 22 24 R? FFFEB7 ALU 右移 寄 存 器 A 标志位 C Z A 输出 带进位右 +1 移 FFFB9F ALU 直通 寄存器 R? A 输出 CBFFFF 指 令 寄 存 器 IR PC 输出 A 输出 +1 写入 +1 FFF7F7 寄 存 器 值 寄存器 A A 输出 +1 R? FFFCD7 ALU 左移 寄 存 器 A 标志位 C Z A 输出 带进位左 写入 +1 移 FFFB9F ALU 直通 寄存器 R? A 输出 CBFFFF 指 令 寄 存 器 IR PC 输出 A 输出 FFF7EF 寄 存 器 值 寄存器 W R? FFFE90 ALU 直通 寄 存 器 A 标志位 C Z FFFB9F ALU 直通 寄存器 R? CBFFFF 指 令 寄 存 器 IR EM FFFE91 ALU 直通 CBFFFF 寄 存 器 A 标志位 C Z 指 令 寄 存 器 IR A 输出 加运算 A 输出 减运算 +1 写入 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 PC 输出 A 输出 写入 +1 C7FFEF 存 贮 器 值 寄存器 W PC 输出 A 输出 PC 输出 A 输出 写入 +1 FFF7F7 寄 存 器 值 寄存器 A A 输出 +1 +1
分享到:
收藏