计算机组成原理课程设计报告江苏大学_适用于软件工程(编辑修改稿)内容摘要:

机器码 (H) 汇编指令 0000 0002 0761 5678 0B61 F000 MOV 5678H, R1 ADD F000, R1 11 结果和第二天的一样,说明硬件扩充正确。 四、设计中遇到的问题 及解决办法 在写 TR,AR,IR 的实例化代码时,没注意是用寄存器模块 R 实例化得到的,经过报错和仔细看书后,发现了问题,成功改正过来了。 完成程序运行出了问题,经过查找发现是 DR模块出了问题, if(!n_reset)q=0。 else if(DRce_IB)q=data_IB。 else if(DRce_DB)q=data_DB。 这一句被我写成了 if(!n_reset)q=0。 else if(DRce_IB)q=data_IB。 else q=data_DB。 12 第四天 为 CPU 扩充转移指令 一、设计要求 在初级 CPU 的基础上进行功能扩充,使其支持转移类指令 二、硬件 uAG 模块设计 ( 自己修改的设计部分, 加上适当注释) 339。 d3:uAGout = {NA[8:1],BM3_uAR0}。 //3,根据条件转移指令操作码 PSW的 ZF,OF,SF,CF 状态标志决定微地址 //第四天 always@(SZOC, IR) begin case(IR[7:6]) // 条件转移类指令 239。 b00: Flag_MUX=SZOC[0]。 239。 b01: Flag_MUX=SZOC[1]。 239。 b10: Flag_MUX=SZOC[2]。 239。 b11: Flag_MUX=SZOC[3]。 default:Flag_MUX=139。 b0。 endcase end assign BM3_uAR0 = Flag_MUX ^ IR[5]。 三、转移指令微程序的设计 A R o e , P C c eE X E C1 224。 F I C转 移 条 件 满 足YN转 移 指 令 入 口0 7 63 :0 7 60 0 00 : 固 定 转 移0 7 70 0 00 : 固 定 转 移N O P0 0 0条 件 不 满 足 条 件 满 足( a )( b ) 13 四、测试程序、数据及运行结果 测试内容: JC 命令 机器码: 内存地址 (H) 机器码 (H) 汇编指令 0000 0002 0004 0761 5678 0B61 F000 011A 0010 MOV 5678H, R1 ADD F000, R1 JC 0010H 运行数据: 运行结果及分析: 从微地址可以看出,第一阶段先是取第一条指令( MOV 5678H, R1) 001002003004,再是取源操作数, 00400B00F016006,是立即数寻址方式,再是取目的操作数,006018007,是寄存器寻址方式,最后是执行阶段, 007044046000,将结果 mov到寄存器里。 在 GRS可以看出由 0000变成了 5678。 第二阶段先是取第二条指令( ADD F000, R1) 001002003004,再是取源操作数, 00400B00F016006,是立即数寻址方式, 14 再 是 取目 的操 作数 , 006018007 ,是 寄存 器寻 址方 式 ,最 后是 执行 阶段 ,00704804F070000,是 ADD 运算,结果存放在寄存器 GRS中,可以看出结果为 4678,并且产生进位, SZOC=0001,正确。 第三阶段,进入 JC指令,因为 C=1,有进位,所以条件满足,执行的是 075077000,正确。 五、设计中遇到的问题及解决办法 程序中误将赋值符号 =写成了 =, 被同学发现,及时修改,并成功得到解决。 15 第五天 为 CPU 扩充移位指令 一、设计目标 在前面的 CPU 的基础上扩充硬件,使其支持移位指令。 二、硬件设计 SHIFTER 模块设计 (加上适当注释) wire data_lsb。 wire data_hsb。 //******************************************************************************************* // * // 第五天要修改的代码 * //assign data_lsb = 139。 b0。 //assign data_hsb = 139。 b0。 mux(1) mux_1(.d1(0),.d2(0),.d3(d[15]),.d4(CF),.q(data_lsb),.addr(IR76))。 mux(1) mux_2(.d1(d[15]),.d2(0),.d3(d[0]),.d4(CF),.q(data_hsb),.addr(IR76))。 // 根据不同的移位指令,实例化两个四选一多路器,重新形成 data_lsb和 data_lsb * // 多路器 mux 在工程文件中已提供 * // * //******************************************************************************************* CF 模块设计 timescale 1ns / 1ps module CF(d15, d0, Cout, q, SL, SR)。 input d15, d0, Cout。 input SL, SR。 output q。 reg q。 always @(*) begin case ({SL, SR}) 339。 b01: q = d0。 16 339。 b10: q = d15。 default:q = Cout。 endcase end endmodule IR_DECODE 模块设计(自己增加修改的设计部分) 239。 b00:BM4_uA={539。 b01001,IR[7:5],139。 b0}。 顶层模块设计(增加自己修改的设计部分) wire [DATAWIDTH 1: 0] SP_out, GRS_out, TR_out, A_ou。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。