3
0
Fork 0
mirror of https://github.com/YosysHQ/sby.git synced 2025-04-12 08:28:16 +00:00
sby/docs/examples/fifo/fifo.sv
KrystalDelusion ec02e25f5c Split fifo.sv into two files
fifo.sv contains the components, top.sv for toplevel design.
2022-04-27 09:24:14 +12:00

46 lines
953 B
Systemverilog

// Define the fifo storage
module storage (
input wen, ren, clk, rst_n,
input [3:0] waddr, raddr,
input [7:0] wdata,
output [7:0] rdata
);
parameter MAX_DATA = 16;
// 8 bit data, fifo depth 16 / 4 bit address
// reset not defined
reg [7:0] data [MAX_DATA-1:0];
always @(posedge clk) begin
if (wen)
data[waddr] <= wdata;
end
assign rdata = data[raddr];
endmodule
// address generator/counter
module addr_gen (
input en, clk, rst_n,
output reg [3:0] addr
);
parameter MAX_DATA = 16;
initial begin
addr <= 0;
end
// async reset
// increment address when enabled
always @(posedge clk or negedge rst_n) begin
if (~rst_n)
addr <= 0;
else if (en)
if (addr == MAX_DATA-1)
addr <= 0;
else
addr <= addr + 1;
else
addr <= addr;
end
endmodule