Menu
Coddy logo textTech

Конструкция if - else

Часть раздела Основы путешествия по Verilog на Coddy — урок 53 из 90.

Оператор if-else позволяет выбирать между двумя различными действиями на основе условия. Если условие истинно, выполняется один блок. Если ложно, выполняется другой блок.

Оператор if-else предоставляет вашему коду точку принятия решения: выполнить одно действие, если условие истинно, и другое действие, если условие ложно.

Синтаксис:

if (condition) begin
  // Выполняется, когда условие истинно (1)
end else begin
  // Выполняется, когда условие ложно (0)
end

Простой пример

if (reset) begin
  count = 0;
end else begin
  count = count + 1;
end
  • Если reset равен 1 → count становится 0
  • Если reset равен 0 → count увеличивается на 1

Несколько операторов

Используйте begin и end, когда у вас более одного оператора:

if (enable) begin
  out = data_in;
  valid = 1;
end else begin
  out = 0;
  valid = 0;
end

If-Else с несколькими условиями

Вы можете объединять операторы if-else в цепочку:

if (a > b) begin
  max = a;
end else if (b > a) begin
  max = b;
end else begin
  max = a;  // a и b равны
end

Важные правила

ПравилоОбъяснение
else необязателенВы можете использовать if без else
else относится к ближайшему ifБудьте осторожны с вложенностью
Используйте begin/end для нескольких операторовТребуется для более чем одной строки
challenge icon

Задание

Что нужно сделать:

  1. Добавьте недостающий оператор if-else, чтобы это заработало.
  2. Когда enable равен 1, out должен быть равен a & b.
  3. Когда enable равен 0, out должен быть равен a | b.

Шпаргалка

Оператор if-else выполняет один из двух блоков в зависимости от условия:

if (condition) begin
  // Выполняется, когда условие истинно (1)
end else begin
  // Выполняется, когда условие ложно (0)
end

Объединяйте несколько условий в цепочку с помощью else if:

if (a > b) begin
  max = a;
end else if (b > a) begin
  max = b;
end else begin
  max = a; // a и b равны
end
  • else является необязательным
  • Используйте begin/end, когда в блоке несколько операторов
  • else всегда относится к ближайшему if

Попробуйте сами

module ifelse_challenge;
  reg a, b, enable;
  reg out;
  
  initial begin
    a = 1;
    b = 0;
    enable = 1;
    
    // TODO: Добавить оператор if-else
    // Если enable равен 1: out = a & b
    // Иначе: out = a | b
    
    $display("out = %d (should be 0 because 1&0=0)", out);
    $finish;
  end
endmodule
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы