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 (shift register) desplaza 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
Clock 1: q0 = d, q1 = old q0, q2 = old q1, q3 = old q2
Clock 2: q0 = d, q1 = old q0, q2 = old q1, q3 = old q2Después de 4 ciclos de reloj, el primer bit de entrada llega a q3.
Interfaz del módulo
| Puerto | Dirección | Ancho | Descripción |
|---|---|---|---|
clk | input | 1 bit | Señal de reloj (Clock) |
reset | input | 1 bit | Reinicia todas las salidas a 0 |
d | input | 1 bit | Entrada de datos (data) |
q0 | output | 1 bit | Primera salida de flip-flop |
q1 | output | 1 bit | Segunda salida de flip-flop |
q2 | output | 1 bit | Tercera salida de flip-flop |
q3 | output | 1 bit | Cuarta salida de flip-flop |
Tu tarea es completar el siguiente módulo.
Qué hacer:
- En
reset, establece todas las salidas en 0 - En cada flanco de subida del reloj, desplaza los datos de izquierda a derecha:
q0recibedq1recibe eloldq0q2recibe eloldq1q3recibe eloldq2
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
// Else: desplazar datos: q0 <= d, q1 <= q0, q2 <= q1, q3 <= q2
endmodule
Todas las lecciones de Fundamentos
1Introducción
¿Qué es Verilog?Hardware vs SoftwareNiveles de abstracción de diseñoTu primer móduloComentarios4Operadores Parte 1
Operadores aritméticosOperador de móduloOperadores de comparaciónRepaso - Matemáticas simplesOperadores bit a bit7Asignación y Compuertas
Asignación ContinuaAsignación con OperadoresPrimitivas de Compuertas IntegradasCompuertas AND OR NOTCompuertas XOR XNORResumen - 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 condicionalResumen - Desafío de operadores3Sistema de numeración
Representación binariaNúmeros con tamaño definidoNúmeros sin tamaño definidoNúmeros negativosValores especiales X y ZResumen - Formatos de números6Módulos
Estructura del móduloPuertos de entrada y salidaPuertos InoutInstanciación de módulosMapeo de puertos por nombreMapeo de puertos por ordenResumen: Construye un módulo