Cómo diseñar un registro de desplazamiento a la izquierda

Quiero un circuito en el que obtengo la siguiente secuencia:

0001,
0010,
0100,
1000,
0001

Sé que es un registro de desplazamiento de 4 bits. Pero, ¿cuál es mi enfoque para diseñar este circuito?

Es posible que desee echar un vistazo a Todo sobre circuitos: contadores de anillos

Respuestas (2)

Un enfoque es diseñar el circuito como un contador binario regular de dos bits utilizando un par de flip-flops. Luego, coloca algunos circuitos en las salidas que decodifican los cuatro estados del contador en la secuencia de salida que desea. Tales funciones de decodificación en realidad ya existen como chips independientes.

Aquí está la tabla de estado relacionada con esto:

Binario 00 -> Decodificar 0001

Binario 01 -> Decodificar 0010

Binario 10 -> Decodificar 0100

Binario 11 -> Decodificar 1000

Binario 00 -> Decodificar 0001

.....

[etcétera]

Hay otras formas de hacer que su registro de desplazamiento recirculante, pero a menudo tienen el problema de obtener estados no deseados en el flujo de salida, de modo que se establecería más de un bit a la vez. El contador binario seguido del decodificador no tiene ese problema.

Puede que le resulte interesante saber que hay un chip comúnmente disponible que realiza la operación de contador y decodificador, todo en un chip IC. El CD74HC4017 es uno que hace esto con 10 pines de salida.

Creo que este tipo de decodificador lo podemos hacer usando puertas lógicas. ¿Es posible hacer esto usando Flip flop?
@rAsHmI: puede hacer el contador binario de 2 bits con dos flip-flops. Y sí, puede usar puertas lógicas para hacer que el decodificador funcione, aunque puede ser igual de fácil usar algún chip como 74HC138 o 74HC139 para hacer que el decodificador sea todo en un solo chip IC.

Escriba su tabla de verdad como de costumbre, es decir

     Current    Next
    A B C D | A' B' C' D'
    0 0 0 1 | 0  0  1  0
    0 0 1 0 | 0  1  0  0
    0 1 0 0 | 1  0  0  0
    1 0 0 0 | 0  0  0  1

Significado A' = D , B' = C , C' = D, D' = A

Entonces ahora tiene las ecuaciones booleanas que definen su sistema, por lo que ahora puede diseñar su circuito. Debido a que desea que sus señales A, B, C y D se asignen solo en los bordes del reloj, entonces conectaría cada una de sus señales de salida a la salida de un flip flop y luego conecte la entrada del flip flop a la ecuación lógica relevante. En este caso, solo obtendría un registro de desplazamiento.