Menu
Coddy logo textTech

Sentencia If

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

La declaración if es un bloque de toma de decisiones que executes código solo when una condition es verdadera. La declaración if comprueba una condition.

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 condition es true
end

Ejemplo simple

if (reset) begin
  count = 0;
end

En este ejemplo:

  • begin y end se utilizan para marcar el inicio y el 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 dentro 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 declaración, begin y end son opcionales. Por ejemplo, en el bloque always anterior no se necesita ningún begin/end después de if porque tiene solo una declaración.

La `condition` 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 puede ser cualquier expresiónLos valores distintos de cero (y conocidos) se tratan como verdaderos, el cero como falso
Se necesitan 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. Añade la sentencia if que falta para que esto funcione.
  • Cuando enable sea 1, out debe ser igual a a & b
  • Cuando enable sea 0, out debe permanecer en 0 (sin cambiar)

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

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: Añade la 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