Menu
Coddy logo textTech

If - Else

Parte de la sección Fundamentos del Journey de Verilog de Coddy — lección 53 de 90.

La sentencia if-else te permite elegir entre dos acciones diferentes basándose en una condición. Si la condición es verdadera, se ejecuta un bloque. Si es falsa, se ejecuta el otro bloque.

La sentencia if-else le da a tu código un punto de decisión: haz una cosa si la condición es verdadera, haz otra cosa si la condición es falsa.

Sintaxis:

if (condition) begin
  // Se ejecuta cuando la condición es verdadera (1)
end else begin
  // Se ejecuta cuando la condición es falsa (0)
end

Ejemplo Simple

if (reset) begin
  count = 0;
end else begin
  count = count + 1;
end
  • Si reset es 1 → count pasa a ser 0
  • Si reset es 0 → count se incrementa en 1

Múltiples sentencias

Usa begin y end cuando tengas más de una sentencia:

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

If-Else con múltiples condiciones

Puedes encadenar sentencias if-else:

if (a > b) begin
  max = a;
end else if (b > a) begin
  max = b;
end else begin
  max = a;  // a y b son iguales
end

Reglas importantes

ReglaExplicación
else es opcionalPuedes tener if sin else
else pertenece al if más cercanoTen cuidado con el anidamiento
Usa begin/end para múltiples sentenciasRequerido para más de una línea
challenge icon

Desafío

Qué hacer:

  1. Añade la sentencia if-else que falta para que esto funcione.
  2. Cuando enable sea 1, out debe ser igual a a & b.
  3. Cuando enable sea 0, out debe ser igual a a | b.

Hoja de referencia

La sentencia if-else ejecuta uno de dos bloques basándose en una condición:

if (condition) begin
  // Se ejecuta cuando la condición es verdadera (1)
end else begin
  // Se ejecuta cuando la condición es falsa (0)
end

Encadena múltiples condiciones con else if:

if (a > b) begin
  max = a;
end else if (b > a) begin
  max = b;
end else begin
  max = a; // a y b son iguales
end
  • else es opcional
  • Usa begin/end cuando hay múltiples sentencias en un bloque
  • else siempre pertenece al if más cercano

Pruébalo tú mismo

module ifelse_challenge;
  reg a, b, enable;
  reg out;
  
  initial begin
    a = 1;
    b = 0;
    enable = 1;
    
    // TODO: Añadir sentencia if-else
    // Si enable es 1: out = a & b
    // De lo contrario: out = a | b
    
    $display("out = %d (should be 0 because 1&0=0)", out);
    $finish;
  end
endmodule
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentos