// top.v — верхний уровень для Cyclone IV (OMDAZZ)
// Внутри — pattern_player + pattern_rom (ROM сгенерирован Python-скриптом)

module top (
    input  wire CLK50,    // системный клок с платы (например, 50 МГц)
    input  wire KEY0,     // кнопка reset (на OMDAZZ часто активный низ)
    output wire GPIO0,    // выход на пин (оптопара/LED и т.п.)
    output wire GPIO1     // ДОП. выход для clk50_div2 (подвесь на свободный пин)
);

    // ==========================
    // Сброс (reset)
    // ==========================
    wire rst = ~KEY0;

    // ==========================
    // Делитель такта CLK50 / 2
    // ==========================
    reg clk50_div2 = 1'b0;
    always @(posedge CLK50 or posedge rst) begin
        if (rst)
            clk50_div2 <= 1'b0;
        else
            clk50_div2 <= ~clk50_div2;
    end

    // ==========================
    // Сигнал запуска плеера
    // ==========================
    wire start = 1'b1;

    // ==========================
    // Параметры должны совпадать с pattern_rom.v
    // ==========================
    localparam TICKS_WIDTH = 32;
    localparam DEPTH       = 128;

    // ==========================
    // Соединения с pattern_player
    // ==========================
    wire out_sig;
    wire busy;

    pattern_player #(
        .TICKS_WIDTH(TICKS_WIDTH),
        .DEPTH      (DEPTH)
    ) u_player (
        .clk   (CLK50),       // такт 50 МГц
        .rst   (rst),
        .start (start),
        .out   (out_sig),
        .busy  (busy)
    );

    // Выводим сигнал плеера и делитель такта на внешние пины
    assign GPIO0 = out_sig;
    assign GPIO1 = clk50_div2; // сюда повесь светодиод или щуп

endmodule