Я смотрю на некоторые материалы 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