lin-win-share/DA4008_V1.2/rtl/memory/bhv_spram.v

72 lines
1.3 KiB
Verilog

module bhv_spram (
clka,
ena,
dina,
addra,
clkb,
enb,
doutb,
addrb
);
//=================================================
function integer clog2(input integer depth);
begin
for(clog2=0;depth>0;clog2=clog2+1)
depth =depth>>1;
end
endfunction
//=================================================
parameter width = 16;
parameter depth = 1024;
localparam aw = clog2(depth-1);
//=================================================
input clka ;
input ena ;
input [width-1:0] dina ;
input [aw-1:0] addra ;
input clkb ;
input enb ;
output [width-1:0] doutb ;
input [aw-1:0] addrb ;
//================================================
wire clka;
wire ena;
wire [width-1:0] dina;
wire [aw-1:0] addra;
wire clkb;
wire enb;
reg [width-1:0] doutb;
wire [aw-1:0] addrb;
//================================================
reg [width-1:0] mem[0:depth-1];
always@(posedge clka)begin
if(ena)begin
mem[addra] <=dina;
end
end
always@(posedge clkb)begin
if(enb)begin
doutb <=mem[addrb];
end
//else begin
// doutb <=0;
//end
end
endmodule