module single_ram#(
parameter DATA_WIDTH = 8,
parameter ADDR_WIDTH = 8,
parameter MEM_DEPTH = 256
)
(
clk, rst_n, cs_n, write_en, addr, din, dout
);
input clk;
input rst_n;
input cs_n;
input write_en;
input[ADDR_WIDTH-1:0] addr;
input[DATA_WIDTH-1:0] din;
output[DATA_WIDTH-1:0] dout;
reg[DATA_WIDTH-1:0] DOUT;
reg[DATA_WIDTH-1:0] mem[0:MEM_DEPTH-1];
integer i;
always@(posedge clk or negedge rst_n)begin
if(!rst_n)
for(i=0; i<MEM_DEPTH-1; i=i+1)
mem[i] <= 'b0;
else if(!cs_n && write_en)
mem[addr] <= din;
end
always@(posedge clk or negedge rst_n)begin
if(!rst_n)
dout <= 'b0;
else if(!cs_n && !write_en)
dout <= mem[addr];
end
endmodule
单口RAM
于 2022-03-03 13:04:29 首次发布