blob: 5adfdff9029a3ddf58190a19379de1c0d86220af [file] [log] [blame]
// ffram.v
//
// Copyright (C) 2020 Dan Rodrigues <danrr.gh.oss@gmail.com>
//
// SPDX-License-Identifier: Apache-2.0
`default_nettype none
module ffram #(
parameter INIT_FILE = "",
parameter integer DATA_WIDTH = 8,
parameter integer ADDR_WIDTH = 8,
parameter integer DW = DATA_WIDTH - 1,
parameter integer AW = ADDR_WIDTH - 1
) (
input clk,
input [AW:0] addr0,
input [DW:0] wdata0,
output reg [DW:0] rdata0,
input we0,
input [AW:0] addr1,
output reg [DW:0] rdata1
);
localparam WORDS = (1 << ADDR_WIDTH) - 1;
reg [DW:0] mem [0:WORDS];
integer i;
initial begin
for (i = 0; i <= WORDS; i = i + 1) begin
mem[i] = 0;
end
if (INIT_FILE != "") begin
$readmemh(INIT_FILE, mem);
end
end
always @(posedge clk) begin
if (we0) begin
mem[addr0] <= wdata0;
end
rdata0 <= mem[addr0];
rdata1 <= mem[addr1];
end
endmodule