El enlace que diste lo dice todo:
Sugerencia: - el complemento de 2 de un número puede
ser obtenido por mantener la menor
bits significativos como tales hasta que el
Primero 1, y luego complementando todo
bits
"ejemplo 001010 → 110110" es decir
001010 -> flip bits -> 110101 -> add 1 -> 110110
msb lsb msb lsb msb lsb
msb lsb
input 001010
output 110110
<--- time
Así que hay dos estados: "No he visto uno todavía" y "He visto uno anteriormente". Dado mi estado y mi entrada actual, mi salida y el siguiente estado están completamente determinados.
Si mi estado actual es "No he visto uno todavía" y mi entrada es un 0, mi salida es un 0 y mi próximo estado es (todavía) "No he visto uno todavía"
Si mi estado actual es "No he visto uno todavía" y mi entrada es 1, mi salida es 1 y mi estado siguiente es (cambia a) "He visto uno anteriormente"
Si mi estado actual es "He visto un uno anteriormente" y mi entrada es un 0, mi salida es un 1 y mi siguiente estado es (aún) "He visto uno anteriormente"
Si mi estado actual es "He visto un uno anteriormente" y mi entrada es un 1, mi salida es un 0 y mi siguiente estado es (aún) "He visto uno anteriormente"
Escriba eso como una tabla de verdad que codifique "No he visto uno todavía" como 0 y "He visto uno anteriormente" como 1, y debería estar en casa.
Para "cablearlo", el bit de entrada de datos actual y el estado actual entran en la lógica que alimenta la entrada al D-flip flop y la lógica separada que alimenta la entrada al registro de desplazamiento, el D-flip-flop se mantiene la "variable de estado", y ambas están sincronizadas por el reloj de datos. Y para completar, necesita algún tipo de lógica de reinicio, que se deja como ejercicio para el lector. El "estado actual" es la salida del flip-flop D, y el siguiente estado es su entrada ...
+----------------------------+
| |
| +---------+ +-----+ |
+--+ Logic A +-----+ DFF +---+
Data-+-|--+ | | |
| | +---------+ | CLK |
| | +--+--+
| | |
| | +--------Clock
| | +--+--+
| | +---------+ | CLK |
| +--+ Logic B +-----+ |
+----+ | | S R |
+---------+ +-----+