EECS151 / riscv-cpu / hardware / src / memories / dmem.v
dmem.v
Raw
module dmem (
  input clk,
  input en,
  input [3:0] we,
  input [13:0] addr,
  input [31:0] din,
  output reg [31:0] dout
);
  reg [31:0] mem [16384-1:0];

  always @(posedge clk) begin
    if (en)
      dout <= mem[addr];
  end

  genvar i;
  generate for (i = 0; i < 4; i = i+1) begin
    always @(posedge clk) begin
      if (we[i] && en)
          mem[addr][i*8 +: 8] <= din[i*8 +: 8];
    end
  end endgenerate
endmodule