1 / 37 · Concetto
RTL: descrivere circuiti concorrenti
Distingui la sequenza del software dalla struttura hardware parallela e specifica stato, stato successivo e osservazione.
Le lezioni sono gratuite. Iscriviti per salvare i progressi.
Un circuito continua a funzionare
RTL descrive il passaggio di valori tra registri attraverso logica combinatoria. Un modulo delimita hardware; due istanze creano strutture che interagiscono, non chiamate eseguite in sequenza. Il circuito resta attivo mentre cambiano gli ingressi. Trasforma porte, memoria e macchine a stati del corso Circuiti logici digitali in interfacce SystemVerilog esplicite e verifiche ripetibili. Spiega larghezza, driver, validità e reset di ogni segnale prima di implementarlo.
Separare stato attuale e successivo
Il modulo completo accumula sample senza segno di quattro bit in un registro di otto. Il reset sincrono, attivo alto, ha priorità su enable. Un fronte abilitato somma il campione; gli altri mantengono sum. L'aritmetica riporta il valore modulo 256.
module accumulator (
input logic clk, rst, enable,
input logic [3:0] sample,
output logic [7:0] sum
);
logic [7:0] next_sum;
assign next_sum = sum + {4'b0000, sample};
always_ff @(posedge clk) begin
if (rst) sum <= 8'b0;
else if (enable) sum <= next_sum;
end
endmodulenext_sum è combinatorio: può cambiare con sum o sample senza un fronte di clock. sum memorizza stato e cambia sul fronte di salita. Dichiararli entrambi logic non assegna lo stesso ruolo hardware. L'assenza dell'else finale nel blocco sincrono mantiene il registro; un'assegnazione mancante nel combinatorio può richiedere un latch. Identifica prima il tipo di blocco.
Calcolare una tabella prima di simulare
Ogni riga usa stato e ingressi immediatamente prima del fronte; osserva dopo gli aggiornamenti non bloccanti.
| Fronte | rst | enable | sample | sum prima | sum dopo |
|---|---|---|---|---|---|
| E0 | 1 | 1 | 9 | Sconosciuto | 0 |
| E1 | 0 | 1 | 3 | 0 | 3 |
| E2 | 0 | 0 | 7 | 3 | 3 |
| E3 | 0 | 1 | 5 | 3 | 8 |
| E4 | 1 | 1 | 15 | 8 | 0 |
In E4 vince reset e non si somma. Se sum precedente è 250 e sample accettato è 10, gli otto bit danno 4. Conservare il nono bit richiederebbe cambiare interfaccia e contratto aritmetico.
Ordine locale e concorrenza strutturale
Le assegnazioni bloccanti = in una procedura combinatoria seguono l'ordine procedurale. Procedure distinte e assegnazioni continue sono processi concorrenti. Le non bloccanti <= valutano il lato destro con i valori disponibili durante l'esecuzione e pianificano l'aggiornamento. L'ordine del testo non specifica la latenza. Non scrivere #10 nell'accumulatore per attendere un clock: ritardi e generazione di clock appartengono al testbench generale. Una transizione sintetizzabile usa fronti e stato, non sleep.
Esercizio: cambiare un requisito
Sostituisci il ritorno modulo con saturazione a 255. Estendi esplicitamente gli operandi e somma in nove bit. Se il bit 8 è 1, salva 255, altrimenti 7:0. Mantieni le priorità. Prova 0+0,250+5,250+6, un fronte disabilitato e reset/enable simultanei: attendi 0,255,255, stato mantenuto,0. Solo 250+5 non rivela una carry persa; includi 250+6. Conserva sorgente, tabella e aspettative. Segnare una lezione completata registra studio, non un'esecuzione del simulatore.