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;
endIf-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 для нескольких операторов | Требуется, если строк больше одной |
Задание
Что нужно сделать:
- Add пропущенное выражение
if-else, чтобы это заработало. - Когда
enableравно 1,outshould быть equala & b. - Когда
enableравно 0,outshould быть equala | b.
Попробуйте сами
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В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
1Введение
Что такое VerilogАппаратное и программное обеспечениеВаш первый модульКомментарииУровни абстракции проектирования4Операторы. Часть 1
Арифметические операторыОператор взятия остаткаОператоры сравненияПовторение — простая математикаПобитовые операторы7Присваивание и логические элементы
Непрерывное присваиваниеПрисваивание с операторамиВстроенные примитивы логических элементовЭлементы И, ИЛИ и НЕЭлементы XOR и XNORПовторение — схема на логических элементах10Принятие решений
Оператор ifif—elseПовторение — простой компараторОператор casecaseх и casezПовторение — проектирование ALU5Операторы, часть 2
Логические операторыОператоры свёрткиОператоры сдвигаОператор конкатенацииУсловный операторПовторение — задание на операторы11Циклы
Цикл forЦикл whileЦикл повторенияБесконечный циклОператор отключенияПовторение — шаблоны циклов3Система счисления
Двоичное представлениеЧисла заданной разрядностиЧисла без указания разрядностиОтрицательные числаСпециальные значения X и ZПовторение — форматы чисел6Модули
Структура модуляВходные и выходные портыДвунаправленные портыСоздание экземпляра модуляПодключение портов по имениПодключение портов по порядкуПовторение — создание модуля9Процедурные блоки
Блок AlwaysБлок InitialСписок чувствительностиБлокирующее присваиваниеНеблокирующее присваиваниеПовторение: Always и InitialПотренируйтесь самостоятельно: Онлайн-компилятор Verilog