实验二、CPU 部件实现之 ALU 和寄存器堆

实验二、CPU 部件实现之 ALU 和寄存器堆

一、实验目的:

理解和掌握 CPU 中的算术逻辑运算部件(ALU)和寄存器堆(Register File)的工作

原理,并使用 Verilog 和 ModelSim 进行设计和仿真。

二、实验内容:

  1. 使用 Verilog 完成 ALU 的设计,并编写测试仿真文件验证其正确性。要求: ALU 支持 16 位的加、减、与、或以及移位运算。

  2. 使用 Verilog 完成通用寄存器堆的设计,并编写测试仿真文件验证其正确性。要求 寄存器堆包含 8 个 16 位的寄存器;
     寄存器堆有两个读端口和一个写端口。

三、实验原理

请根据实验内容要求分别介绍 ALU 和寄存器堆的原理图和工作原理

四、实验步骤

参照实验一,依次补充本部分内容。1. Verilog 关键代码描述
2. 测试文件描述
3. ModelSim 仿真及分析

五、总结

//ALU
module alu(
  input wire [15:0] in1, in2,
  input wire [2:0] alu_op,
  output reg [15:0] Z
);
  always@* begin
    case(alu_op)
      3'b000: Z = in1+in2;
      3'b001: Z = in1-in2;
      3'b010: Z = in1&&in2;
      3'b011: Z = in1||in2;
      3'b100: Z = in1<>in2;
    endcase
  end
  
endmodule

//寄存器堆
module register_file(
  input wire WE, clk,
  input wire [2:0] RA, RB, RW,
  input wire [15:0] busW,
  output wire [15:0] busA, busB
);
  
  reg [15:0] regfile[7:0];
  
  assign busA = regfile[RA];
  assign busB = regfile[RB];
  
  always@(posedge clk) begin
      if(WE == 1)
        regfile[RW] <= busW;
  end
  
endmodule

 

你可能感兴趣的:(实验二、CPU 部件实现之 ALU 和寄存器堆)