If - Else
Parte da seção Fundamentos do Journey de Verilog da Coddy. Lição 53 de 90.
A instrução if-else permite escolher entre duas ações diferentes com base em uma condição. Se a condição for verdadeira, um bloco será executado. Se for falsa, o outro bloco será executado.
A statement if-else dá ao seu código um ponto de decisão: faça uma coisa se a condition for true e outra coisa se a condition for false.
Sintaxe:
if (condition) begin
// Executa quando condition é verdadeira (1)
end else begin
// Executa quando condition é falsa (0)
endExemplo simples
if (reset) begin
count = 0;
end else begin
count = count + 1;
end- Se
resetfor 1 →countse torna 0 - Se
resetfor 0 →countaumenta em 1
Múltiplas instruções
Use begin e end quando tiver mais de uma instrução:
if (enable) begin
out = data_in;
valid = 1;
end else begin
out = 0;
valid = 0;
endIf-Else com Múltiplas Condições
Você pode encadear instruções if-else:
if (a > b) begin
max = a;
end else if (b > a) begin
max = b;
end else begin
max = a; // a e b são iguais
endRegras importantes
| Regra | Explicação |
|---|---|
else é opcional | Você pode usar if sem else |
else pertence ao if mais próximo | Tenha cuidado com o aninhamento |
Use begin/end para várias instruções | Necessário para mais de uma linha |
Desafio
O que fazer:
- Add a
if-elsestatement ausente para fazer isso funcionar. - Quando
enablefor 1,outshould equala & b. - Quando
enablefor 0,outshould equala | b.
Experimente você mesmo
module ifelse_challenge;
reg a, b, enable;
reg out;
initial begin
a = 1;
b = 0;
enable = 1;
// TODO: Adicione a declaração if-else
// Se enable for 1: out = a & b
// Senão: out = a | b
$display("out = %d (should be 0 because 1&0=0)", out);
$finish;
end
endmoduleEsta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Fundamentos
1Introdução
O que é VerilogHardware vs. SoftwareSeu primeiro móduloComentáriosNíveis de abstração de projeto4Operators 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 LogicPratique por conta própria: Compilador de Verilog online