factorio-riscv/board/parts/ram.sv

25 lines
638 B
Systemverilog
Raw Normal View History

2023-12-29 21:59:32 +00:00
module ram(
input clk,
input reg rd,
input reg wr,
input reg[31:0] addr,
output reg[31:0] datar,
input reg[31:0] dataw
);
parameter SIZE = 'h1000;
reg [31:0] data[0 : SIZE - 1];
always @(posedge clk) begin
// $display("RAM: %c%c", wr ? "W" : "-", rd ? "R" : "-");
if (wr) begin
$display("RAM: [%08x] <= %d", addr << 2, dataw);
data[addr] = dataw;
end
if (rd) begin
$display("RAM: [%08x] => %d", addr << 2, data[addr]);
datar = data[addr];
end else datar = 0;
end
endmodule