Menu
Coddy logo textTech

If Statement

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

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

Si la condition es verdadera (1), el código dentro se executes. Si la condition es falsa (0), se omite el código.

Sintaxis:

if (condition) begin
  // El código se ejecuta cuando condition es true
end

Ejemplo sencillo

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 se convierte en 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 instrucciones para que Verilog sepa qué código pertenece a la condición if. Aunque aquí solo hay una instrucción, usar begin y end sigue siendo una buena práctica por coherencia.

Statement if en bloque always

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

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

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
Condition puede ser cualquier expresiónLos valores distintos de cero (y conocidos) se tratan como verdaderos; cero, como falso
Se necesitan begin / end para varias instruccionesComo { } en otros lenguajes
Sin begin/end, solo sigue una instrucciónSolo la línea siguiente
challenge icon

Desafío

Qué hacer:

  1. Add la instrucción if que falta para que esto funcione.
  • When enable es 1, out should ser igual a a & b
  • When enable es 0, out should permanecer en 0 (no cambiar)

El código 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ñadir 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

Practica por tu cuenta: Compilador de Verilog online