Registro a scorrimento
Fa parte della sezione Fondamenti del percorso Verilog di Coddy. Lezione 86 di 90.
Sfida
Un registro a scorrimento sposta i dati da sinistra a destra a ogni fronte di clock. Ogni bit passa alla posizione successiva.
Come funziona un registro a scorrimento a 4 bit
Initial: q0=0, q1=0, q2=0, q3=0
Each clock: q0 = d, q1 = old q0, q2 = old q1, q3 = old q2
Shifting in d = 1, 0, 1, 0:
Clock 1 (d=1): q0=1, q1=0, q2=0, q3=0
Clock 2 (d=0): q0=0, q1=1, q2=0, q3=0
Clock 3 (d=1): q0=1, q1=0, q2=1, q3=0
Clock 4 (d=0): q0=0, q1=1, q2=0, q3=1Dopo 4 cicli di clock, il primo bit di input raggiunge q3.
Interfaccia del modulo
| Porta | Direzione | Larghezza | Descrizione |
|---|---|---|---|
clk | input | 1 bit | Segnale di clock |
reset | input | 1 bit | Reimposta tutte le uscite a 0 |
d | input | 1 bit | Ingresso dati |
q0 | output | 1 bit | Uscita del primo flip-flop |
q1 | output | 1 bit | Uscita del secondo flip-flop |
q2 | output | 1 bit | Uscita del terzo flip-flop |
q3 | output | 1 bit | Uscita del quarto flip-flop |
Il tuo compito è completare il modulo qui sotto.
Cosa fare:
- Su
reset, imposta tutte le uscite a 0 - A ogni fronte di salita del clock, sposta i dati da sinistra a destra:
q0ricevedq1riceve il vecchio valore diq0q2riceve il vecchio valore diq1q3riceve il vecchio valore diq2
Provalo tu
module shift_register (
input clk,
input reset,
input d,
output reg q0,
output reg q1,
output reg q2,
output reg q3
);
// TODO: Añade always @(posedge clk or posedge reset)
// Al activar reset: q0<=0, q1<=0, q2<=0, q3<=0
// En caso contrario, desplaza los datos: q0 <= d, q1 <= q0, q2 <= q1, q3 <= q2
endmodule
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