From 87983abfcf435dda245813d3d8916feefba6bf60 Mon Sep 17 00:00:00 2001 From: irobo Date: Wed, 13 May 2026 07:54:08 +0300 Subject: [PATCH] added 10Hz --- blink.qsf | 4 ++++ blink.v | 60 ++++++++++++++++++++++++++++++++++++++----------- output_file.cof | 2 +- output_file.map | 2 +- 4 files changed, 53 insertions(+), 15 deletions(-) diff --git a/blink.qsf b/blink.qsf index ca0e31f..23c6cc6 100644 --- a/blink.qsf +++ b/blink.qsf @@ -61,4 +61,8 @@ set_global_assignment -name POWER_BOARD_THERMAL_MODEL "NONE (CONSERVATIVE)" set_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id Top set_global_assignment -name PARTITION_FITTER_PRESERVATION_LEVEL PLACEMENT_AND_ROUTING -section_id Top set_global_assignment -name PARTITION_COLOR 16764057 -section_id Top +set_location_assignment PIN_7 -to pin +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to pin +set_location_assignment PIN_10 -to pin_10 +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to pin_10 set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top \ No newline at end of file diff --git a/blink.v b/blink.v index 3818e5f..b269117 100644 --- a/blink.v +++ b/blink.v @@ -1,21 +1,55 @@ -module blink( - input clk, - output reg led +module blink #( + // Выбор частоты мигания (F_BLINK), Гц: + // 1 -> 1 + // 2.5 -> 25 (см. ниже, делим на 10) + // 5 -> 5 + // 10 -> 10 + parameter integer MODE = 4 // по умолчанию 1 Гц +)( + input wire clk, // 50 MHz + output reg led, + output reg pin, + output reg pin_10 ); -localparam MAX_COUNT = 50_000_000 - 1; // для 50 MHz → ~1 секунда +localparam integer F_CLK = 50_000_000; -reg [26:0] cnt;// 2^26 = 67_108_864 +// Предрасчитанные MAX_COUNT для половины периода: +// +// 1 Гц: T=1 c → T/2=0.5 c → 25_000_000 +// 2.5 Гц: T=0.4 c → T/2=0.2 c → 10_000_000 +// 5 Гц: T=0.2 c → T/2=0.1 c → 5_000_000 +// 10 Гц: T=0.1 c → T/2=0.05 c → 2_500_000 -always @(posedge clk) -begin - if(cnt >= MAX_COUNT) - begin +localparam integer MAX_1HZ = 25_000_000 - 1; +localparam integer MAX_2_5HZ = 10_000_000 - 1; +localparam integer MAX_5HZ = 5_000_000 - 1; +localparam integer MAX_10HZ = 2_500_000 - 1; + +// Выбор MAX_COUNT по MODE +// MODE: +// 1 -> 1 Гц +// 2 -> 2.5 Гц +// 3 -> 5 Гц +// 4 -> 10 Гц +localparam integer MAX_COUNT = + (MODE == 1) ? MAX_1HZ : + (MODE == 2) ? MAX_2_5HZ : + (MODE == 3) ? MAX_5HZ : + (MODE == 4) ? MAX_10HZ : + MAX_1HZ; // по умолчанию 1 Гц + +reg [25:0] cnt; // хватает до > 33 млн (2^25 = 33_554_432) + +always @(posedge clk) begin + if (cnt >= MAX_COUNT) begin cnt <= 0; - led <= ~led; // переключение LED - end - else + led <= ~led; + pin <= led; + pin_10 <= led; + end else begin cnt <= cnt + 1; + end end -endmodule +endmodule \ No newline at end of file diff --git a/output_file.cof b/output_file.cof index 7953721..975aae6 100644 --- a/output_file.cof +++ b/output_file.cof @@ -1,6 +1,6 @@ - EPCS64 + EPCS4 EP4CE6 output_file.jic 1 diff --git a/output_file.map b/output_file.map index ed66271..4d959f6 100644 --- a/output_file.map +++ b/output_file.map @@ -6,6 +6,6 @@ Page_0 0x00000000 0x00059D8A Notes: -- Data checksum for this conversion is 0x1A5EA7E1 +- Data checksum for this conversion is 0x0276151E - All the addresses in this file are byte addresses \ No newline at end of file