Вопрос о том, как работает асинхронный сброс на краю сброса

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

person Davy John    schedule 13.04.2019    source источник


Ответы (1)


Асинхронный сброс означает, что ваша схема должна сбрасываться всякий раз, когда сигнал сброса активен «независимо от часов». Естественно, это должно быть включено в список чувствительности, так как такой синтаксис делает его асинхронным сбросом. Обратите внимание, что для перевода триггеров в состояние по умолчанию (сброс) не требуются активные часы, и вас не должны беспокоить какие-либо проблемы метастабильности при входе в состояние сброса. Здесь нужен самый первый блок всегда процесса (который проверяет состояние ввода сброса), и вам нужно придерживаться такого стиля кодирования. Наиболее важным моментом является то, что относительное время между часами и сбросом можно игнорировать во время подтверждения сброса. Reset Release ДОЛЖЕН быть синхронизирован с часами, так как это действительно может привести к проблемам с метастабильностью. Существуют известные схемы, которые можно использовать для процедуры выпуска асинхронного сброса (они немного специфичны, но широко используются в мире ASIC, поэтому вы сможете найти справочные материалы через браузер Google).

person PrzemekS    schedule 24.04.2019