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Аппаратное обеспечение и программное обеспечениеВаш первый модульКомментарииУровни абстракции проектирования4Operators Part 1
Arithmetic OperatorsModulo OperatorComparison OperatorsRecap - Simple MathBitwise Operators7Assign And Gates
Continuous AssignmentAssign With OperatorsBuilt In Gate PrimitivesAND OR NOT GatesXOR XNOR GatesRecap - Logic Gate Circuit10Decision Making
If StatementIf - ElseRecap - Simple ComparatorCase StatementCasex And CasezRecap - ALU Design5Operators Part 2
Logical OperatorsReduction OperatorsShift OperatorsConcatenation OperatorConditional OperatorRecap - Operator Challenge3Number System
Binary RepresentationSized NumbersUnsized NumbersNegative NumbersSpecial Values X And ZRecap - Number Formats6Modules
Module StructureInput And Output PortsInout PortsModule InstantiationPort Mapping By NamePort Mapping By OrderRecap - Build A Module9Procedural Blocks
Always BlockInitial BlockSensitivity ListBlocking AssignmentNon Blocking AssignmentRecap - Always vs Initial15Traffic Light Controller
Defining The StatesState Machine LogicПотренируйтесь самостоятельно: Онлайн-компилятор Verilog