Приветствую!
Написал на верилоге модуль, осуществляющий задержку входного сигнала. Для его проверки в той же ПЛИС (EPM240T100C5) сделал модуль генератора меандра, посмотрел сигналы - все работало правильно и стабильно. Потом взял сигнал от внешнего генератора - появились плавающие баги. После нескольких попыток оптимизации кода добиться корректной работы схемы так и не удалось.
Спойлер
Код:
module delay
(
input wire clk,
input wire sgn,
output reg out
);
localparam phase = 1;
reg[7:0] pos_cnt = 0,
neg_cnt = 0;
always @ (posedge clk)
begin
if (sgn)
begin
pos_cnt <= pos_cnt + 1;
if (neg_cnt > phase) neg_cnt <= neg_cnt - 1;
else
begin
neg_cnt <= 0;
out <= 1;
end
end
else
begin
neg_cnt <= neg_cnt + 1;
if (pos_cnt > phase) pos_cnt <= pos_cnt - 1;
else
begin
pos_cnt <= 0;
out <= 0;
end
end
end
endmodule