// 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 и т.п.)
);

    // ==========================
    // Сброс (reset)
    // ==========================
    // Предположим, что KEY0 замыкает на 0, когда нажата → делаем rst = !KEY0.
    wire rst = ~KEY0;

    // ==========================
    // Сигнал запуска плеера
    // ==========================
    // Для начала можем просто держать start = 1,
    // чтобы паттерн проигрывался один раз после сброса.
    // Если нужен запуск по кнопке — можно сделать простую логіку отдельно.
    wire start = 1'b1;

    // ==========================
    // Параметры должны совпадать с pattern_rom.v
    // ==========================
    localparam TICKS_WIDTH = 32;
    // DEPTH возьми из комментария в созданном pattern_rom.v
    // (Python-скрипт его печатает). Например:
    localparam DEPTH = 128;

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

    pattern_player #(
        .TICKS_WIDTH(TICKS_WIDTH),
        .DEPTH(DEPTH)
    ) u_player (
        .clk   (CLK50),   // тот же клок, что и в Python (F_CLK_HZ = 50e6)
                           // если F_CLK_HZ другое — нужен PLL и другой сигнал clk
        .rst   (rst),
        .start (start),
        .out   (out_sig),
        .busy  (busy)
    );

    // Выводим сигнал на внешний пин
    assign GPIO0 = out_sig;

endmodule