El tamaño de un circuito combinatorio es una función de su entrada. Cuanta más entrada pueda usar un circuito para calcular su salida, más grande debe ser el circuito. Supongamos, por ejemplo, que uno necesitaba diseñar un circuito que determinaría si una entrada tenía un número par o impar de bordes ascendentes en el último segundo, si se garantizase que cada tiempo alto y bajo fuera de al menos 100 ms. Uno podría usar una cadena de búferes puramente combinatorios con un tiempo de propagación de 91 ms para generar doce entradas a un circuito que luego podría contar el número de secuencias "01" dentro del flujo de bits. Tal circuito sería bastante grande, pero no imposible.
Si uno quisiera hacer un circuito que pudiera decir si la entrada había pulsado alto un número par o impar en el último minuto, se podría usar el mismo principio, pero el resultado sería bastante difícil de manejar. Si uno tiene alguna señal de reloj disponible que puede ayudar a estabilizar los tiempos e impedir que el circuito se vuelva tan totalmente impráctico (*), incluso sin retroalimentación (tenga en cuenta que los circuitos combinatorios pueden usar señales de reloj, pero no pueden generarlas). Las optimizaciones facilitadas por el reloj pueden ayudar a evitar que un circuito se vuelva totalmente inviable, pero aún así sería grande. Incrementar el tiempo en cuestión a un día, año, década o siglo también haría crecer la máquina. Si uno no necesitaba que la máquina durara más de 100 años, en teoría se podría construir una máquina puramente combinatoria para informar si el número de pulsos en los últimos 100 años era par o impar, y luego usarlo para hasta 100 Años, pero hacerlo sería monstruosamente poco práctico.
Por el contrario, utilizando una lógica secuencial, la tarea se podría realizar utilizando un solo flip-flop D con una salida invertida. A pesar de que en el transcurso de un año, el dispositivo aceptaría millones de segundos de "entrada", eso no sería un problema ya que un solo flip flop será suficiente para mantener el estado derivado de una cantidad ilimitada de entrada.
(*) Es posible construir un flop D sin usar retroalimentación si se puede garantizar que el tiempo entre los pulsos de reloj no exceda algún límite, aunque desafortunadamente este simulador no puede manejar MOSFETs monolíticos.
simular este circuito : esquema creado usando CircuitLab
Los "resistores" son en realidad modos de agotamiento en VDD, y los MOSFET son monolíticos, con sus bases vinculadas a VSS en lugar de a la fuente. Mientras PHI1 es alto, todo lo que esté en IN se transferirá a la puerta de M2, y su inverso aparecerá en el drenaje de M2. Cuando el PHI1 es bajo, lo que haya en la puerta y el drenaje de M2 permanecerá allí, al menos por un tiempo, debido a la capacidad de la puerta de M2. Cuando PHI2 es alto, todo lo que esté en el drenaje de M2 se transferirá a la compuerta de M4, y su inverso aparecerá en el drenaje de M4. Cuando el PHI2 está bajo, lo que haya en la puerta y el drenaje de M4 permanecerá allí por un tiempo debido a la capacidad de la puerta de M4. Siempre que PHI1 y PHI2 no se superpongan y sean lo suficientemente rápidos para volver a cargar los condensadores antes de que la fuga altere sus valores, este circuito se puede usar de manera confiable como un D-flop. De hecho, los circuitos de este tipo eran muy comunes en la lógica LSI de los años 70.
Además, incluso si uno ve este estilo de circuito como "trampa", es posible usar el reloj para estabilizar los retrasos de propagación de lógica puramente secuencial haciendo que un reloj seleccione entre rutas lógicas con tiempos de propagación más cortos o más largos.
simular este circuito
A diferencia del circuito MOSFET, el de arriba simulará. Cada búfer tiene un tiempo de propagación de 700 ns, y cada salida de mux cambiará en el flanco ascendente del reloj y no habrá otro tiempo, siempre que los flancos ascendentes del reloj ocurran entre 700 ns y 1400 ns después de un cambio de entrada, y los bordes descendentes no ocurran hasta que al menos 1400ns después de un cambio de entrada. El circuito anterior cumple inicialmente las restricciones de tiempo, pero como el reloj y los datos no son desviaciones de múltiplos exactos para violarlo, muestra el comportamiento consecuente.