杭电计算机组成原理实验九R-I,杭电计组实验九.doc

杭电计组实验九

实验报告

2016 年 5 月 11 日 成绩:

姓名周勇学号班级计科5班专业计算机科学与技术课程名称《数字电路课程设计》任课老师章复嘉老师指导老师章复嘉老师机位号实验序号9实验名称R-I指令CPU实验时间5月11日实验地点1教225实验设备号一、实验程序源代码顶层架构CPU模块:

module cpu(clk,reset,ALU_OP,inst,rs,rt,rd,rs_data,rt_data,rd_data,ZF,OF,Write_Reg,PC,PC_new,rd_rt_s,W_Addr,imm,W_Data,imm_s,imm_data

,ALU_B,rt_imm_s,Mem_Write,M_R_Data,ALU_Data,alu_mem_s);

input wire clk;

input reset;

output [2:0] ALU_OP;//操作符

output [31:0] inst;//指令存放

output [4:0] rs;//rs地址

output [4:0] rt;//rt地址

output [4:0] rd;//rd地址

output [31:0] rs_data;//rs数据

output [31:0] rt_data;//rt数据

output [31:0] rd_data;//rd数据

output [31:0] PC;

output [31:0] PC_new;

output ZF;

output OF;

output Write_Reg;//是否写入

output [31:0] W_Data;

output rd_rt_s; //控制那个作为目的寄存器

output [4:0]W_Addr;//目的操作数地址

output [15:0] imm; //立即数

output [31:0] imm_data;//被扩展的立即数

output imm_s;//是否需要扩展

output rt_imm_s;//B端选择rt或者是imm

output [31:0] ALU_B;//ALU_B端口数据

output Mem_Write;//是否写入数据rom

output [31:0]M_R_Data;//从数据rom读出来的数据

output [31:0]ALU_Data;//ALU运算出来的结果,根据alu_mem_s选择由M_W_Data或者W_Data来赋值

output alu_mem_s;//看上面

//读指令

ex7 pc (

.clka(clk),

.douta(inst),

.rst(reset),

.PC(PC),

.PC_new(PC_new)

//解析指令

);

analysis_inst analysis_inst(

.inst(inst),

.ALU_OP(ALU_OP),

.rs(rs),

.rt(rt),

.rd(rd),

.Write_Reg(Write_Reg),

.imm(imm),

.rd_rt_s(rd_rt_s),

.imm_s(imm_s),

.rt_imm_s(rt_imm_s),

.Mem_Write(Mem_Write),

.alu_mem_s(alu_mem_s)

);

//读取源操作数的值:

assign W_Addr = (rd_rt_s)?rt:rd;

assign imm_data = (imm_s)?{{16{imm[15]}},imm}:{{16{1'b0}},imm};

reg1 Reg(

.R_Addr_A(rs),

.R_Addr_B(rt),

.Clk(clk),

.W_Addr(W_Addr),

.W_Data(W_Data),

.R_Data_A(rs_data),

.R_Data_B(rt_data),

.Reset(reset),

.Write_Reg(Write_Reg) //不写入

);

assign ALU_B=(rt_imm_s)?imm_data:rt_data;

//对源操作数运算,存于目的操作数

ex3 ALU(

.ALU_OP(ALU_OP),

.A(rs_data),

.B(ALU_B),

.F(ALU_Data),

.ZF(ZF),

.OF(OF)

);

//----

wire clk_temp;

wire d_outn;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值