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

102 lines
2.4 KiB
Coq
Raw Normal View History

2026-03-13 14:32:42 +08:00
//`define FPGA_XIL
//`define SMIC_IC
`define BEHAVIOUR_SIM
module spram #(
parameter width =16,
parameter depth =1024
)(
clka,
ena,
dina,
addra,
clkb,
enb,
doutb,
addrb
);
///////////////////////////////////////////////////////
//Function
///////////////////////////////////////////////////////
function integer clog2(input integer depth);
begin
for(clog2=0;depth>0;clog2=clog2+1)
depth =depth>>1;
end
endfunction
localparam aw = clog2(depth-1);
///////////////////////////////////////////////////////
//Input declaration
///////////////////////////////////////////////////////
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;
///////////////////////////////////////////////////////
//SRAM
///////////////////////////////////////////////////////
`ifdef BEHAVIOUR_SIM
bhv_spram #(
.width (width ),
.depth (depth )
)bhv_spram(
.clka (clka ),
.ena (ena ),
.dina (dina ),
.addra (addra ),
.clkb (clkb ),
.enb (enb ),
.doutb (doutb ),
.addrb (addrb )
);
`elsif XINLINX_FPGA
xil_spram #(
.dw (width ),
.depth (depth )
)xil_spram(
.wrclk (clka ),
.wren (ena ),
.wrdata (dina ),
.wraddr (addra ),
.rdclk (clkb ),
.rden (enb ),
.rddata (doutb ),
.rdaddr (addrb )
);
`elsif SMIC_IC
smic_spram #(
.width (width),
.depth (depth)
)smic_spram(
.CLKB (clka ),
.CENB (ena ),
.AB (addra ),
.DB (dina ),
.CLKA (clkb ),
.CENA (enb ),
.AA (addrb ),
.QA (doutb )
);
`endif
endmodule
//`undef FPGA_XIL