59 lines
1.4 KiB
Systemverilog
59 lines
1.4 KiB
Systemverilog
|
interface sram_if #(parameter ADDR_WIDTH = 8, parameter DATA_WIDTH = 32)(input bit clk);
|
||
|
// Signals for interfacing with the SRAM
|
||
|
logic [ADDR_WIDTH-1:0] addr;
|
||
|
logic [DATA_WIDTH-1:0] din;
|
||
|
logic [DATA_WIDTH-1:0] dout;
|
||
|
logic rden;
|
||
|
logic wren;
|
||
|
logic [DATA_WIDTH/8-1:0] wben;
|
||
|
|
||
|
modport master(
|
||
|
output addr,
|
||
|
output din,
|
||
|
input dout,
|
||
|
output wren,
|
||
|
output rden,
|
||
|
output wben
|
||
|
);
|
||
|
|
||
|
modport slave (
|
||
|
input addr,
|
||
|
input din,
|
||
|
output dout,
|
||
|
input wren,
|
||
|
input rden,
|
||
|
input wben
|
||
|
);
|
||
|
/*
|
||
|
// synopsys translate_off
|
||
|
// write operation
|
||
|
task write;
|
||
|
input logic [ADDR_WIDTH-1:0] addr_in;
|
||
|
input logic [DATA_WIDTH-1:0] data_in;
|
||
|
input logic [DATA_WIDTH/8-1:0] byte_enable;
|
||
|
begin
|
||
|
addr = addr_in;
|
||
|
din = data_in;
|
||
|
wben = byte_enable;
|
||
|
wren = 1;
|
||
|
rden = 0;
|
||
|
@(posedge clk);
|
||
|
wren = 0;
|
||
|
end
|
||
|
endtask
|
||
|
|
||
|
// read oepration
|
||
|
task read;
|
||
|
input logic [ADDR_WIDTH-1:0] addr_in;
|
||
|
begin
|
||
|
addr = addr_in;
|
||
|
wren = 0;
|
||
|
rden = 1;
|
||
|
@(posedge clk);
|
||
|
rden = 0;
|
||
|
end
|
||
|
endtask
|
||
|
// synopsys translate_on
|
||
|
*/
|
||
|
endinterface
|