Logic2_to_FPGA/top.v
2026-06-01 06:19:27 +03:00

53 lines
2.1 KiB
Verilog
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 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