Menu
Coddy logo textTech

Bucle For

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

Los bucles en Verilog le permiten ejecutar un bloque de código múltiples veces. Son especialmente útiles en testbenches para generar patrones de prueba repetitivos, inicializar memoria y iterar sobre arreglos. A diferencia de las descripciones de hardware que se ejecutan en paralelo, los bucles se ejecutan de forma secuencial, lo que los hace ideales para simulación y pruebas.

El bucle más utilizado es el bucle for, que se repite un número específico de veces. Un bucle for ejecuta un bloque de código de forma repetida, con una variable de loop que cambia en cada iteración. Tienes el control exacto de cuántas veces se ejecuta.

Sintaxis:

for (initialization; condition; increment) begin
  // Código a repetir
end
PartWhat It DoesExample
initializationEstablece el valor iniciali = 0
conditionCuándo detenersei < 10
incrementCambia en cada buclei = i + 1

Ejemplo simple

integer i;

for (i = 0; i < 5; i = i + 1) begin
  $display("i = %d", i);
end

Salida:

i = 0
i = 1
i = 2
i = 3
i = 4

El bucle se ejecuta 5 veces (i = 0, 1, 2, 3, 4).

For Loop en Testbenches

Los bucles for se utilizan comúnmente para probar todas las combinaciones de entrada:

integer test_value;

for (test_value = 0; test_value < 16; test_value = test_value + 1) begin
  $display("test_value = %d", test_value);
end

Esto prueba los 16 valores posibles de una señal de 4 bits.

For Loop con Arrays

reg [7:0] memory [0:9];
integer i;

initial begin
  for (i = 0; i < 10; i = i + 1) begin
    memory[i] = i * 8;
  end
end

Esto inicializa 10 posiciones de memoria.

Reglas importantes

ReglaExplicación
La variable de bucle (loop) debe ser integer o reg No puede ser wire
Use begin/end para múltiples sentenciasRequerido para más de una línea
Evite bucles infinitosAsegúrese de que la condición (condition) eventualmente se vuelva falsa
Se utiliza mejor en testbenchesLa mayoría de los bucles no son sintetizables
challenge icon

Desafío

Qué hacer:

Agrega el bucle for que falta para imprimir los números del 0 al 3.

Pruébalo tú mismo

module for_challenge;
  integer i;
  
  initial begin
    $display("Printing 0 to 3:");
    
    // TODO: Añade un bucle for
    // Inicializa i = 0
    // Bucle mientras i < 4
    // Incrementa i = i + 1
    // Dentro, imprime i
    
    $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