Управляющие конструкции

Конструкции, которые определяют порядок выполнения операций и поток управления в цифровых схемах. Они позволяют описывать поведение цифровых систем, принимающих решения и выполняющих повторяющиеся операции.

Особенности управляющих конструкций в Verilog

  1. Аппаратная природа:

    Управляющие конструкции описывают аппаратуру, а не программный код:

    • if-else → мультиплексоры

    • case → декодеры/мультиплексоры

    • циклы → развертываются в параллельную логику

  2. Синтезируемость vs Несинтезируемость:

    • Синтезируемые: if-else, case, for (с ограничениями)

    • Несинтезируемые: while, forever, repeat (для тестбенчей)

  3. Приоритетность:

    {% code overflow="wrap" %}

    if (cond1) out = a;      // Высокий приоритет
    else if (cond2) out = b; // Средний приоритет  
    else out = c;            // Низкий приоритет
    // Создает приоритетный кодер

    {% endcode %}

  4. Полнота условий:

    {% code overflow="wrap" %}

    // Неполный case – создает latch!
    case (sel)
        2'b00: out = a;
        2'b01: out = b;
        // отсутствуют 2'b10 и 2'b11 → latch!
    endcase
    
    // Полный case – комбинационная логика
    case (sel)
        2'b00: out = a;
        2'b01: out = b;
        2'b10: out = c;
        2'b11: out = d;
    endcase

    {% endcode %}

Практические примеры

Комбинационная логика с if-else

Конечный автомат с case

Параметризированный дизайн с generate

Last updated