EECS151 / riscv-cpu / hardware / src / memories / imem.v
imem.v
Raw
module imem (
  input clk,
  input ena,
  input [3:0] wea,
  input [13:0] addra,
  input [31:0] dina,
  input [13:0] addrb,
  output reg [31:0] doutb
);
  reg [31:0] mem [16384-1:0];

  always @(posedge clk) begin
      doutb <= mem[addrb];
  end

  genvar i;
  generate for (i = 0; i < 4; i = i+1) begin
    always @(posedge clk) begin
      if (wea[i] && ena)
          mem[addra][i*8 +: 8] <= dina[i*8 +: 8];
    end
  end endgenerate
endmodule