杭电计组实验四 下载本文

实验报告

2016 年 4 月 22 日 成绩: 姓名 专业 任课老师 实验序号 实验时间 学号 信息安全 曾虹 2016.4.22 指导老师 实验名称 实验地点 1教南 课程名称 曾虹 班级 14083612 《计算机组成原理课程设计》 机位号 寄存器堆 实验设备号 一、实验程序源代码 module Reg(LED,RW_SW,AB,Reg_Addr_A,Reg_Addr_B,Write_Reg,clk,rst); input[4:0] Reg_Addr_A,Reg_Addr_B; input Write_Reg; input[1:0] RW_SW; input clk; input rst; output[7:0] LED; input AB; reg[31:0]REG_File[0:31]; reg[7:0] LED; wire[31:0] W_Data1 = 32'h00000001; wire[31:0] W_Data2 = 32'h0000000A; wire[31:0] W_Data3 = 32'h00000006; wire[31:0] W_Data4 = 32'h00000003; wire[31:0] A = REG_File[Reg_Addr_A]; wire[31:0] B = REG_File[Reg_Addr_B]; integer i; always @ (posedge clk or posedge rst) begin if(AB) case(RW_SW) 2'b00 : LED=A[7:0]; 2'b01 : LED=A[15:8]; 2'b10 : LED=A[23:16]; 2'b11 : LED=A[31:24]; default : LED=A[7:0]; endcase else case(RW_SW) 2'b00 : LED = B[7:0]; 2'b01 : LED = B[15:8]; 2'b10 : LED = B[23:16]; 2'b11 : LED = B[31:24]; default : LED = B[7:0]; endcase if(rst) for(i = 0; i < 32; i = i + 1) REG_File[i] = 0; else begin if(Write_Reg) begin if(AB) case(RW_SW) 2'b00 : REG_File[Reg_Addr_A]=W_Data1; 2'b01 : REG_File[Reg_Addr_A]=W_Data2; 2'b10 : REG_File[Reg_Addr_A]=W_Data3; 2'b11 : REG_File[Reg_Addr_A]=W_Data4; endcase else case(RW_SW) 2'b00 : REG_File[Reg_Addr_B]=W_Data1; 2'b01 : REG_File[Reg_Addr_B]=W_Data2; 2'b10 : REG_File[Reg_Addr_B]=W_Data3; 2'b11 : REG_File[Reg_Addr_B]=W_Data4; endcase end end end endmodule 二、仿真波形 三、电路图