Menu
CoddyTech

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 verdadera (1), se ejecuta el código que contiene. Si la condición es falsa (0), se omite el código.

Sintaxis:

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

Ejemplo sencillo

if (reset) begin
  count = 0;
end

En este ejemplo:

  • begin y end se usan para marcar el inicio y el fin del bloque de código
  • Si reset es 1 (verdadero), se ejecuta el código dentro de begin y end → count pasa a ser 0
  • Si reset es 0 (falso), se omite el código que hay dentro → no pasa 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, sigue siendo una buena práctica usar begin y end para mantener la coherencia.

Sentencia if en un 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
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 varias instruccionesComo { } en otros lenguajes
Sin begin/end, solo se ejecuta una instrucciónSolo la instrucción siguiente pertenece al if
challenge icon

Desafío

Qué debes hacer:

  1. Añade la instrucción 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 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 una 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 debe 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