Ciclo While
Fa parte della sezione Fondamenti del percorso Verilog di Coddy. Lezione 59 di 90.
Il ciclo while ripete un blocco di codice finché una condizione è vera. A differenza del ciclo for, non ha un contatore integrato. Devi aggiornare tu la variabile del ciclo.
Un ciclo while verifica una condizione prima di ogni iterazione. Se la condizione è vera, il ciclo viene eseguito. Se è falsa, il ciclo si interrompe.
Sintassi:
while (condition) begin
// Codice da ripetere
endEsempio semplice
integer i = 0;
while (i < 5) begin
$display("i = %d", i);
i = i + 1;
endOutput:
i = 0
i = 1
i = 2
i = 3
i = 4Il ciclo viene eseguito finché i < 5.
Ciclo while vs ciclo for
| Ciclo for | Ciclo while | |
|---|---|---|
| Contatore | Integrato | Lo gestisci tu |
| Quando usarlo | Numero di iterazioni noto | Non si sa quando terminerà il ciclo |
| Sintassi | for (i=0; i<5; i=i+1) | while (i < 5) |
Ciclo while nei banchi di prova
I cicli while sono utili quando non sai esattamente quante iterazioni ti servono:
integer i = 0;
while (i < 16) begin
$display("Testing value %d", i);
i = i + 1;
endTrovare un valore specifico
integer i = 0;
reg [7:0] data;
while (data[i] != 1) begin
i = i + 1;
end
$display("First 1 found at position %d", i);Regole importanti
| Regola | Spiegazione |
|---|---|
| La condizione deve diventare falsa | Altrimenti si verifica un ciclo infinito |
| Aggiorna la variabile del ciclo all'interno | Altrimenti il ciclo non termina mai |
La variabile del ciclo deve essere integer o reg | Non può essere wire |
Usa begin/end per più istruzioni | Necessario per più di una riga |
Sfida
Cosa fare:
Aggiungi il ciclo while mancante per stampare i numeri da 0 a 2.
Provalo tu
module while_challenge;
integer i;
initial begin
i = 0;
$display("Printing 0 to 2:");
// TODO: Aggiungi un ciclo while
// Ripeti il ciclo finché i < 3
// All'interno, stampa i
// Incrementa i di 1
$finish;
end
endmoduleQuesta lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Fondamenti
1Introduzione
Cos'è VerilogHardware e software a confrontoIl tuo primo moduloCommentiLivelli di astrazione della progettazione4Operatori - Parte 1
Operatori aritmeticiOperatore moduloOperatori di confrontoRiepilogo - Matematica sempliceOperatori bitwise7Assegnazioni e porte
Assegnazione continuaAssegnazioni con operatoriPrimitive di porte integratePorte AND, OR e NOTPorte XOR e XNORRiepilogo: circuito con porte logiche10Decisioni
Istruzione ifIf-ElseRiepilogo - Comparatore sempliceIstruzione caseCasex e casezRiepilogo - Progettazione di una ALU5Operatori Parte 2
Operatori logiciOperatori di riduzioneOperatori di scorrimentoOperatore di concatenazioneOperatore condizionaleRiepilogo - Sfida sugli operatori3Sistema numerico
Rappresentazione binariaNumeri con dimensione specificataNumeri senza dimensione specificataNumeri negativiValori speciali X e ZRiepilogo - Formati numerici6Moduli
Struttura di un moduloPorte di input e outputPorte InoutIstanziazione di un moduloMappatura delle porte per nomeMappatura delle porte per ordineRiepilogo - Costruire un modulo9Blocchi procedurali
Blocco alwaysBlocco initialLista di sensibilitàAssegnazione bloccanteAssegnazione non bloccanteRiepilogo: always vs initial12Progetto Multiplexer
Progettazione di un mux da 2 a 1Progettazione di un mux da 4 a 1Esercitati da solo: Compilatore Verilog online