Lógica Secuencial Sincrónica
A diferencia de los circuitos combinacionales, los circuitos secuenciales nos permiten la memorización de estados.
Se utiliza un circuito combinacional con entradas y salidas, pero con la capacidad de detectar el estado actual y calcular el estado siguiente (a través de elementos de memoria)

Un elemento de memoria encargado de almacenar el estado del sistema es el flip-flop. Este se actualiza al llegar a un pulso de reloj:

Latchs SR
Un Latch SR es un circuito secuencial que almacena un bit. Es compuesto por dos compuertas NOR acopladas en cruz, con entradas \(S, R\) (set, reset respectivamente).

\(S, R\) no deben ser iguales \(1\) al mismo tiempo, el latch detecta el nivel de las señales y dicho caso es un estado inválido.
Siguiendo la tabla:
Si \(Q = 1, \; Q' = 0 \implies\) tiene estado establecido.
Si \(Q=0, \; Q'=1 \implies\) tiene estado reestablecido.
Es posible hacer un Latch S’R’ (activo por bajo) mediante compuertas NAND.
Latch D
Una forma de garantizar que \(Q,Q'\) no sean iguales a \(1\) a la vez, es mediante el siguiente Latch:

Donde \(D, C\) corresponden a data, clock, respectivamente.
Flip-Flops
El Flip-Flop es un circuito secuencial que puede capturar el valor de la entrada en un momento específico (en el flanco de subida o bajada del reloj).
Una de sus implementaciones en con el Flip-Flop D, compuesto dos Latchs D (amo - esclavo) capturando el valor del reloj (\(CLK\))

La única cosa faltante en este flip-flop es el reseteo. Lo cual puede está implementado en un Flip-Flop con reset asíncrono.

Con la tabla de verdad:
\(R\) | \(C\) | \(D\) |
---|---|---|
\(0\) | \(X\) | \(X\) |
\(1\) | \(\uparrow\) | \(0\) |
\(1\) | \(\uparrow\) | \(1\) |
\(Q\) | \(Q'\) |
---|---|
\(0\) | \(1\) |
\(0\) | \(1\) |
\(1\) | \(0\) |
Registros
Consisten en un grupo de flip-flops y pueden contener, además, compuertas lógicas (para transicionar la información entre los flip-flops)
Un registro de \(n\) bits consiste en un grupo de \(n\) flip-flops que almacenan \(n\) bits.
Ejemplo 1: Registro de entrada y salida en paralelo de \(4\) bits.

Ejemplo 2: Registro de entrada y salida en serie de \(4\) bits (unidireccional).

Ejemplo 3: Registro de \(4\) bits con entradas y salidas de datos en serie y paralelo, con dos señales de control \(C_1, C_2\) tales que:
- \(C_1C_0 = 00 \implies\) todas las salidas del registro son \(0\) (reset)
- \(C_1C_0 = 01 \implies\) el registro se desplaza un bit a la derecha
- \(C_1C_0 = 10 \implies\) el registro mantiene la información
- \(C_1C_0 = 11 \implies\) el registro carga información por su entrada en paralelo
