1
0
mirror of https://github.com/aap/pdp6.git synced 2026-03-07 11:39:53 +00:00
Files
aap.pdp6/verilog/onchip_ram.v
2019-10-26 16:49:04 +02:00

31 lines
630 B
Verilog
Executable File

module onchip_ram
#(parameter DATA_WIDTH=36, parameter ADDR_WIDTH=14)
(
input [(DATA_WIDTH-1):0] data,
input [(ADDR_WIDTH-1):0] addr,
input we, clk,
output [(DATA_WIDTH-1):0] q
);
// Declare the RAM variable
reg [DATA_WIDTH-1:0] ram[2**ADDR_WIDTH-1:0];
// Variable to hold the registered read address
reg [ADDR_WIDTH-1:0] addr_reg;
always @ (posedge clk)
begin
// Write
if (we)
ram[addr] <= data;
addr_reg <= addr;
end
// Continuous assignment implies read returns NEW data.
// This is the natural behavior of the TriMatrix memory
// blocks in Single Port mode.
assign q = ram[addr_reg];
endmodule