module fifo_8kb (
    input clk,
    input reset,

    output empty,
    output almost_empty,
    input read,
    output [7:0] rdata,

    output full,
    output almost_full,
    input write,
    input [7:0] wdata,
    
    output logic [10:0] count
);

    fifo_8kb_lattice_generated fifo_8kb_lattice_generated_inst (
        .Data(wdata),
        .WrClock(clk),
        .RdClock(clk),
        .WrEn(write),
        .RdEn(read),
        .Reset(reset),
        .RPReset(reset),
        .Q(rdata),
        .Empty(empty),
        .Full(full), 
        .AlmostEmpty(almost_empty),
        .AlmostFull(almost_full)
    );

    always_ff @(posedge clk) begin
        if (reset) begin
            count <= 11'd0;
        end else begin
            if (write && read) begin
                count <= count;
            end else if (write) begin
                count <= count + 1'd1;
            end else if (read) begin
                count <= count - 1'd1;
            end
        end
    end

endmodule
