If - Else
Parte da seção Fundamentos do Journey de Verilog da Coddy — lição 53 de 90.
A instrução if-else permite que você escolha entre duas ações diferentes com base em uma condição. Se a condição for verdadeira, um bloco é executado. Se for falsa, o outro bloco é executado.
A instrução if-else fornece ao seu código um ponto de decisão: faça uma coisa se a condição for verdadeira, faça outra coisa se a condição for falsa.
Sintaxe:
if (condition) begin
// Executa quando a condição é verdadeira (1)
end else begin
// Executa quando a condição é falsa (0)
endExemplo Simples
if (reset) begin
count = 0;
end else begin
count = count + 1;
end- Se
resetfor 1 →counttorna-se 0 - Se
resetfor 0 →countaumenta em 1
Múltiplas Instruções
Use begin e end quando você 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 ter if sem else |
else pertence ao if mais próximo | Tenha cuidado com o aninhamento |
Use begin/end para múltiplas instruções | Necessário para mais de uma linha |
Desafio
O que fazer:
- Adicione a instrução
if-elseque falta para fazer isso funcionar. - Quando
enablefor 1,outdeve ser igual aa & b. - Quando
enablefor 0,outdeve ser igual aa | b.
Folha de consulta
A instrução if-else executa um de dois blocos com base em uma condição:
if (condition) begin
// Executes when condition is true (1)
end else begin
// Executes when condition is false (0)
endEncadeie múltiplas condições com else if:
if (a > b) begin
max = a;
end else if (b > a) begin
max = b;
end else begin
max = a; // a and b are equal
endelseé opcional- Use
begin/endquando houver múltiplas instruções em um bloco elsesempre pertence aoifmais próximo
Experimente você mesmo
module ifelse_challenge;
reg a, b, enable;
reg out;
initial begin
a = 1;
b = 0;
enable = 1;
// TODO: Adicione a instrução if-else
// Se enable for 1: out = a & b
// Caso contrário: 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 SoftwareNíveis de Abstração de ProjetoSeu Primeiro MóduloComentários4Operadores Parte 1
Operadores AritméticosOperador de MóduloOperadores de ComparaçãoRecapitulação - Matemática SimplesOperadores Bitwise7Atribuição e Portas Lógicas
Atribuição ContínuaAtribuição com OperadoresPrimitivas de Portas IntegradasPortas AND, OR e NOTPortas XOR e XNORRecapitulação - Circuito de Portas Lógicas10Tomada de Decisão
Instrução IfIf - ElseRecapitulação - Comparador SimplesInstrução CaseCasex e CasezRecapitulação - Projeto de ALU2Tipos de Dados
Tipo WireTipo RegInteger e RealVetoresArraysParâmetrosRecapitulação - Declarar Sinais5Operadores Parte 2
Operadores LógicosOperadores de ReduçãoOperadores de DeslocamentoOperador de ConcatenaçãoOperador CondicionalRecapitulação - Desafio de Operadores3Sistemas de Numeração
Representação BináriaNúmeros com Tamanho DefinidoNúmeros sem Tamanho DefinidoNúmeros NegativosValores Especiais X e ZRecapitulação - Formatos de Números6Módulos
Estrutura de MóduloPortas de Entrada e SaídaPortas InoutInstanciação de MóduloMapeamento de Portas por NomeMapeamento de Portas por OrdemRecapitulação - Construa um Módulo