
Сообщение от
svofski
Для устранения метастабильного дребезга по-моему этого не будет достаточно.
Выходной сигнал всегда можно синхронизировать, поставив ещё один регистр с тем же тактовым списком как у источников сигнала. Просто результат будет запаздывать ещё на 1 такт. И самое главное: всегда консультируйтесь с RTL, чтобы понять как именно понял вас синтезатор. Это самый мощный инструмент отладки и корректировки ошибок и/или узких мест. Ну и по традиции пример выше:
Код:
module test(
input Clk,
input InputStream,
output reg PosEdge,
output reg AnyEdge,
output reg NegEdge,
output reg FilteredOut
);
reg [1:0]FIFO;
always @(posedge Clk) begin
FIFO[1:0] <= {FIFO[0],InputStream};
PosEdge <= ~FIFO[1] & FIFO[0];
NegEdge <= FIFO[1] & ~FIFO[0];
AnyEdge <= ((~FIFO[1] & FIFO[0]) | (FIFO[1] & ~FIFO[0]));
FilteredOut <= FIFO[1] & FIFO[0];
end
endmodule
Схема:

Результат: