Menu
Coddy logo textTech

Sentencia If

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

La sentencia if es un bloque de toma de decisiones que ejecuta código solo cuando una condición es verdadera. La sentencia if comprueba una condición.

Si la condición es true (1), el código de su interior se ejecuta. Si la condición es false (0), el código se omite.

Sintaxis:

if (condition) begin
  // El código se ejecuta cuando la condición es verdadera
end

Ejemplo Simple

if (reset) begin
  count = 0;
end

En este ejemplo:

  • begin y end se utilizan para marcar el inicio y final del bloque de código
  • Si reset es 1 (verdadero), el código dentro de begin y end se ejecuta → count pasa a ser 0
  • Si reset es 0 (falso), el código interior se omite → no ocurre nada

begin y end funcionan como las llaves { } en otros lenguajes de programación. Agrupan sentencias para que Verilog sepa qué código pertenece a la condición if. Aunque solo hay una sentencia aquí, usar begin y end sigue siendo una buena práctica por consistencia.

Sentencia If en un bloque Always

always @(posedge clk) begin
  if (reset)
    count <= 0;
end

Nota: Para una sola sentencia, begin y end son opcionales. Por ejemplo, en el bloque always de arriba no se necesita begin/end después de if porque tiene solo una sentencia.

La condición puede ser cualquier expresión

if (a > b) begin
  max = a;
end

if (a && b) begin
  out = 1;
end

if (data == 8'hFF) begin
  match = 1;
end

Reglas importantes

ReglaExplicación
La condición debe ser un solo bitO una expresión que se evalúe como 0 o 1
Se requiere begin / end para múltiples sentenciasComo { } en otros lenguajes
Sin begin/end, solo sigue una sentenciaSolo la siguiente línea
challenge icon

Desafío

Qué hacer:

  1. Agrega la sentencia if que falta para que esto funcione.
  • Cuando enable es 1, out debe ser igual a a & b
  • Cuando enable es 0, out debe permanecer en 0 (no cambiar)

El código inicial inicializa out = 0 y prueba ambos casos.

Hoja de referencia

La sentencia if ejecuta código solo cuando una condición es verdadera (1), y lo omite cuando es falsa (0).

if (condition) begin
  // executes when condition is true
end

Para una sentencia única, begin/end son opcionales:

always @(posedge clk) begin
  if (reset)
    count <= 0;
end

Las condiciones pueden ser cualquier expresión que se evalúe como 0 o 1:

if (a > b) begin max = a; end
if (a && b) begin out = 1; end
if (data == 8'hFF) begin match = 1; end

Reglas clave:

  • Use begin/end para agrupar múltiples sentencias (como { } en otros lenguajes)
  • Sin begin/end, solo la línea inmediatamente siguiente pertenece al if

Pruébalo tú mismo

module if_challenge;
  reg a, b, enable;
  reg out = 0;
  
  initial begin
    a = 1;
    b = 1;
    
    // Caso de prueba 1: enable = 1
    enable = 1;
    // TODO: Agregar sentencia if (out = a & b)
    $display("enable=1: out = %d (should be 1)", out);
    
    // Caso de prueba 2: enable = 0
    enable = 0;
    out = 0; 
    // TODO: out debería permanecer en 0
    $display("enable=0: out = %d (should be 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