Я просматриваю некоторые материалы Verilog из «asic-world» и у меня есть вопрос об асинхронном сбросе. Не очень уверен, как это работает, когда сброс находится на положительном фронте. Если учитывать только нарастающий фронт сброса, приведенный ниже код Verilog проверяет, равен ли сброс 1 для сброса. Если сброс равен 1, то выход сбрасывается на НОЛЬ. Но так как это происходит на переднем фронте сброса, сброс находится в метастабильном состоянии, которое не равно ни 0, ни 1. Так что проверка значения сброса на положительном фронте сброса для меня не имеет особого смысла. Кто-нибудь может объяснить это?
Код Verilog от Asic-world:
module asyn_reset(clk,reset,a,c);
input clk;
input reset;
input a;
output c;
wire clk;
wire reset;
wire a;
reg c;
always @ (posedge clk or posedge reset)
if ( reset == 1'b1) begin
c <= 0;
end else begin
c <= a;
end
endmodule