Menu
Coddy logo textTech

Ciclo For

Fa parte della sezione Fondamenti del percorso Verilog di Coddy. Lezione 58 di 90.

I cicli in Verilog ti permettono di eseguire un blocco di codice più volte. Sono particolarmente utili nei testbench per generare pattern di test ripetitivi, inizializzare la memoria e scorrere gli array. A differenza delle descrizioni hardware che vengono eseguite in parallelo, i cicli vengono eseguiti in sequenza, il che li rende ideali per la simulazione e i test.

Il ciclo più comunemente usato è il ciclo <strong>for</strong>for, che si ripete un numero specifico di volte. Un ciclo for esegue ripetutamente un blocco di codice, con una variabile di ciclo che cambia a ogni iterazione. Controlli esattamente quante volte viene eseguito.

Sintassi:

for (initialization; condition; increment) begin
  // Codice da ripetere
end
ParteCosa faEsempio
initializationImposta il valore inizialei = 0
conditionQuando fermarsii < 10
incrementCambia a ogni cicloi = i + 1

Esempio semplice

integer i;

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

Output:

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

Il ciclo viene eseguito 5 volte (i = 0, 1, 2, 3, 4).

Ciclo for nei banchi di prova

I cicli for sono comunemente usati per testare tutte le combinazioni di input:

integer test_value;

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

Questo testa tutti i 16 valori possibili di un segnale a 4 bit.

Ciclo for con array

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

Inizializza 10 posizioni di memoria.

Regole importanti

RegolaSpiegazione
La variabile del ciclo deve essere integer o reg Non può essere wire
Usa begin/end per più istruzioniNecessario per più di una riga
Evita i cicli infinitiAssicurati che la condizione diventi falsa prima o poi
Si usano soprattutto nei banchi di provaLa maggior parte dei cicli non è sintetizzabile
challenge icon

Sfida

Cosa fare:

Aggiungi il ciclo for mancante per stampare i numeri da 0 a 3.

Provalo tu

module for_challenge;
  integer i;
  
  initial begin
    $display("Printing 0 to 3:");
    
    // TODO: Aggiungi un ciclo for
    // Inizializza i = 0
    // Ripeti il ciclo finché i < 4
    // Incrementa i = i + 1
    // All'interno, stampa con: $display("i = %d", i);
    
    $finish;
  end
endmodule
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Fondamenti

Esercitati da solo: Compilatore Verilog online