1
0
mirror of https://github.com/aap/pdp6.git synced 2026-02-02 06:51:38 +00:00
Files
aap.pdp6/verilog/memory_16.v
2019-10-26 16:49:04 +02:00

43 lines
745 B
Verilog
Executable File

module memory_16(
input wire i_clk,
input wire i_reset_n,
input wire [17:0] i_address,
input wire i_write,
input wire i_read,
input wire [35:0] i_writedata,
output wire [35:0] o_readdata,
output reg o_waitrequest
);
wire addrok = i_address[17:4] == 0;
wire [3:0] addr = i_address[3:0];
reg we;
onchip_ram #(
.ADDR_WIDTH(4)
) ram (
.clk(i_clk),
.data(i_writedata),
.addr(addr),
.we(we),
.q(o_readdata));
/* have to wait one clock for ram address */
always @(posedge i_clk) begin
if(~i_reset_n) begin
we <= 0;
o_waitrequest <= 0;
end else begin
if(i_read | i_write)
o_waitrequest <= 0;
else
o_waitrequest <= 1;
if(we)
we <= 0;
else
we <= i_write & addrok;
end
end
endmodule