If-Else
Fa parte della sezione Fondamenti del percorso Verilog di Coddy. Lezione 53 di 90.
L'istruzione if-else ti permette di scegliere tra due azioni diverse in base a una condizione. Se la condizione è vera, viene eseguito un blocco. Se è falsa, viene eseguito l'altro blocco.
L'istruzione if-else offre al tuo codice un punto decisionale: fai una cosa se la condizione è vera, fanne un'altra se la condizione è falsa.
Sintassi:
if (condition) begin
// Viene eseguito quando condition è true (1)
end else begin
// Viene eseguito quando condition è false (0)
endEsempio semplice
if (reset) begin
count = 0;
end else begin
count = count + 1;
end- Se
resetè 1 →countdiventa 0 - Se
resetè 0 →countaumenta di 1
Istruzioni multiple
Usa begin e end quando hai più di un'istruzione:
if (enable) begin
out = data_in;
valid = 1;
end else begin
out = 0;
valid = 0;
endIf-Else con condizioni multiple
Puoi concatenare istruzioni if-else:
if (a > b) begin
max = a;
end else if (b > a) begin
max = b;
end else begin
max = a; // a e b sono uguali
endRegole importanti
| Regola | Spiegazione |
|---|---|
else è facoltativo | Puoi usare if senza else |
else appartiene all'if più vicino | Fai attenzione ai blocchi annidati |
Usa begin/end per più istruzioni | È necessario per più di una riga |
Sfida
Cosa fare:
- Aggiungi l'istruzione
if-elsemancante per far funzionare il codice. - Quando
enableè 1,outdovrebbe essere uguale aa & b. - Quando
enableè 0,outdovrebbe essere uguale aa | b.
Provalo tu
module ifelse_challenge;
reg a, b, enable;
reg out;
initial begin
a = 1;
b = 0;
enable = 1;
// TODO: Aggiungi un'istruzione if-else
// Se enable è 1: out = a & b
// Else: out = a | b
$display("out = %d (should be 0 because 1&0=0)", out);
$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