Registro de desplazamiento
Parte de la sección Fundamentos del Journey de Verilog de Coddy. Lección 86 de 90.
Desafío
Un registro de desplazamiento desplaza los datos de izquierda a derecha en cada flanco de reloj. Cada bit se mueve a la siguiente posición.
Cómo funciona un registro de desplazamiento de 4 bits
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=1Después de 4 ciclos de reloj, el primer bit de entrada llega a q3.
Interfaz del módulo
| Puerto | Dirección | Anchura | Descripción |
|---|---|---|---|
clk | input | 1 bit | Señal de reloj |
reset | input | 1 bit | Restablece todas las salidas a 0 |
d | input | 1 bit | Entrada de datos |
q0 | output | 1 bit | Salida del primer flip-flop |
q1 | output | 1 bit | Salida del segundo flip-flop |
q2 | output | 1 bit | Salida del tercer flip-flop |
q3 | output | 1 bit | Salida del cuarto flip-flop |
Tu tarea es completar el módulo siguiente.
Qué hacer:
- En
reset, establece todas las salidas en 0 - En cada flanco ascendente del reloj, desplaza los datos de izquierda a derecha:
q0obtienedq1obtiene elq0antiguoq2obtiene elq1antiguoq3obtiene elq2antiguo
Pruébalo tú mismo
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)
// En reset: q0<=0, q1<=0, q2<=0, q3<=0
// Si no: desplaza los datos: q0 <= d, q1 <= q0, q2 <= q1, q3 <= q2
endmodule
Todas las lecciones de Fundamentos
1Introducción
Qué es VerilogHardware frente a softwareTu primer móduloComentariosNiveles de abstracción del diseño4Operadores, parte 1
Operadores aritméticosOperador móduloOperadores de comparaciónRepaso: matemáticas simplesOperadores bit a bit7Asignaciones y compuertas
Asignación continuaAsignación con operadoresPrimitivas de compuertas integradasCompuertas AND, OR y NOTCompuertas XOR y XNORRepaso: circuito de compuertas lógicas10Toma de decisiones
Sentencia IfIf - ElseRepaso - Comparador simpleSentencia CaseCasex y CasezRepaso - Diseño de ALU5Operadores, parte 2
Operadores lógicosOperadores de reducciónOperadores de desplazamientoOperador de concatenaciónOperador condicionalRepaso: desafío de operadores11Bucles
Bucle ForBucle WhileBucle de repeticiónBucle infinitoInstrucción DisableRepaso: patrones de bucles3Sistema numérico
Representación binariaNúmeros con tamañoNúmeros sin tamañoNúmeros negativosValores especiales X y ZRepaso: formatos numéricos6Módulos
Estructura de módulosPuertos de entrada y salidaPuertos inoutInstanciación de módulosAsignación de puertos por nombreAsignación de puertos por ordenRepaso: construir un móduloPractica por tu cuenta: Compilador de Verilog online