La disposición de enganche que se puede realizar utilizando el menor número de puertas (para el propio pestillo) es el pestillo RS (comúnmente realizado como dos puertas NAND, dos puertas NOR, o una NAND y una NOR). Este circuito cambiará de una manera cuando una entrada se active, y cambiará de la otra manera cuando la otra entrada se active. Ningún otro cierre es más simple, pero generar las dos entradas separadas requeridas por el cierre RS puede requerir más lógica externa de la que se necesitaría con otros circuitos de cierre.
Además, cuando se construyen cierres de puertas, a menudo es necesario hacer suposiciones sobre los retrasos de propagación, en particular, la relación entre los tiempos de puerta de propagación mínimo y máximo. Muchos circuitos de retención tienen condiciones de carrera inherentes que fallarían si una señal se propagara a través de, por ejemplo. una secuencia de cinco puertas más rápido de lo que se propagó a través de alguna otra secuencia de tres. En realidad, es posible sesgar algunas puertas particulares para garantizar que sean más lentas que otras, pero ¿qué puedes hacer aquí? Conceptualmente, me gusta la idea de diseñar circuitos con dos entradas de reloj, que requieren que los relojes cambien en una secuencia particular, pero que estén totalmente libres de condiciones internas de carrera siempre que los relojes estén secuenciados correctamente. Dado dicho circuito, si se construye un secuenciador de reloj cuyo tiempo entre los relojes de salida excede el retardo máximo de propagación en el circuito descendente, garantizar que las señales adecuadas "ganarán" una condición de carrera en el secuenciador de reloj garantizará que no haya otra "sorpresa". "Condiciones de carrera en el diseño.
Si se le permite a los dispositivos de enganche considerarlos como 'componentes primitivos', el más versátil es el flip flop JK; un flip flop en T es esencialmente un flip flop JK con las dos entradas unidas. El conteo suele ser un poco más fácil con un flip flop en T que con un flip flop en D, pero las operaciones de carga y desplazamiento son más fáciles con un flip flop en D; razonar sobre el circuito general puede ser más fácil con un flip flop que con los otros tipos, así que eso es lo que sugeriría comenzar con.
Conceptualmente, sugeriría averiguar qué se supone que debe hacer cada bit en relación con los diversos estados. Hay dos enfoques que sugeriría intentar:
- Considere que un "desplazamiento" es similar a un "conteo", excepto que (1) la "ejecución" de cada bit reflejará el estado del bit, sin que sea el valor del bit "anded" con "carry". en ", y (2) el" nuevo valor "de cada bit será simplemente el acarreo, en lugar de ser el acarreado en xor con el valor anterior.
- Use un mux para distinguir los modos de "conteo" de los modos de "carga", y luego use otro mux para distinguir "carga con el valor antiguo desplazado un bit" de "carga con valor en entrada paralela".
Espero que el primer enfoque probablemente produzca un poco menos de circuitos. Tenga en cuenta que en cualquier caso, "rotación circular" suena igual que "carga en serie", excepto que un mux devuelve el bit más significativo a la entrada de cambio / acarreo.