Lo que hace un flip flop:
En el borde positivo del reloj, pone Q lo que fuera que estuviera en D.
En pseudo código:
if(clock_rising_edge): Q = D
En otras ocasiones, el valor de D
no es realmente importante, porque no afecta a Q
. De alguna manera, D
es muestreado en el borde del reloj (+) y transferido a Q
.
En la terminología de la ecuación de diferencias que estás utilizando:
$$ Q (k) = D (k-1) $$
En el diagrama, tienes 4 flip flops, y de acuerdo con el texto, se construyen internamente con latches D, pero la forma exacta en que se construyen no es importante en este punto (hay varias formas).
Para empezar, cada flip flop tiene su Q
en algún valor (digamos 0
, como después de una aserción CLR
). En el diagrama, ABCD = 0000
.
En el borde positivo del primer reloj, cada flip-flop transferirá lo que está en su entrada D
a su salida Q
. Entonces, la salida será ABCD = X000
, donde 'X'
es la entrada del flip-flop más a la izquierda en el borde del reloj. Con esta lógica podemos construir la siguiente tabla:
t Input ABCD
0 1 0000
1 1 1000
2 0 1100
3 1 0110
4 x 1011
Donde:
-
t
es tiempo de muestra, por lo que en cada incremento hay un borde positivo del reloj.
-
Input
es la entrada que se encuentra más a la izquierda.
-
ABCD
es la recopilación de las salidas del flip-flop, según el diagrama publicado.
Como una ecuación en diferencias:
$$ A (k) = Entrada (k-1) $$
$$ B (k) = A (k-1) $$
$$ C (k) = B (k-1) $$
$$ D (k) = C (k-1) $$
Como puede ver, la entrada fue secuencialmente 1101
, y este valor se cambió a ABCD
(en orden inverso) en 4 ciclos de reloj. Y este es el concepto de lo que describe el diagrama: un registro de desplazamiento .