Logic2_to_FPGA/top.v
2026-06-01 21:50:55 +03:00

59 lines
1.9 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 и т.п.)
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