import cpu_types::*; module ram ( input clk, we, input [31:0] a, wd, input memory_mask_t mask, output [31:0] rd); reg [4095:0] RAM; assign rd = RAM[(a[11:0] * 8) +:32]; // word aligned always @(posedge clk) if(we) begin case(mask) MEM_BYTE: RAM[(a[11:0] * 8) +:8] <= wd[7:0]; MEM_HALFWORD: RAM[(a[11:0] * 8) +:16] <= wd[15:0]; MEM_WORD: RAM[(a[11:0] * 8) +:32] <= wd[31:0]; default: ; endcase end endmodule