Necesito saber por qué necesitamos pulsos de reloj en circuitos secuenciales pero no en circuitos combinacionales.
Necesito saber por qué necesitamos pulsos de reloj en circuitos secuenciales pero no en circuitos combinacionales.
En primer lugar, no todos los circuitos secuenciales (circuitos con retroalimentación) tienen relojes.
Sin embargo, el diseño de las máquinas de estado asíncronas es muy esotérico y requiere la consideración de todos los posibles fallos y trayectorias de carrera a través de la lógica para hacerlo bien, y sospecho que generalmente no se enseña en estos días.
Por lo tanto, las máquinas de estado asíncronas simples se encapsulan en forma de tipos estándar de flip-flops cronometrados (T, D, SR, JK, etc.) y todos los circuitos de orden superior se construyen utilizando técnicas cronometradas, lo que simplifica enormemente su diseño. También simplifica enormemente el diseño de herramientas de software que pueden sintetizar dichos circuitos.
Dado que los circuitos secuenciales tienen retroalimentación, ejecutarlos sin demora produciría un resultado poco útil ya que básicamente simplemente oscilarían. Se utiliza una fuente de reloj para controlar qué acciones se deben tomar en un momento específico.
Te recomiendo que diseñes (y construyas) algunos de los dos tipos y la necesidad de un reloj se hará evidente rápidamente.
Los circuitos combinacionales tienen salidas que dependen de las entradas. No tienen mecanismos que cambien la asignación de la entrada a la salida; las entradas siempre se asignan a las salidas de manera consistente.
Los circuitos secuenciales también tienen salidas que dependen de las entradas, PERO las salidas también dependen del "estado" que el circuito secuencial está adoptando actualmente. Un cambio del estado n al estado n + 1 puede reasignar cómo las salidas dependen de las entradas. El cambio de estado se produce mediante un pulso de reloj.
Si un circuito tiene algunas entradas y salidas, y si los elementos dentro del circuito pueden clasificarse de tal manera que los elementos del nivel 0 dependen solo de las entradas del circuito, y los elementos de cada nivel superior dependen solo de las entradas del circuito o Elementos de nivel, entonces se dice que el circuito es combinatorio. Si las entradas adoptan cierto estado, entonces puede tomar un tiempo para que todo reaccione ante ellas, pero después de un período de tiempo, las salidas asumirán un estado que depende completamente de las entradas. Ningún elemento del circuito cambiará de estado a menos que o hasta que algunas de las entradas lo hagan. Dicho circuito se llama "puramente combinatorio".
Si un circuito contiene alguna ruta de realimentación, dicho circuito no es combinatorio sino "secuencial". En general, el comportamiento de los circuitos secuenciales variará según el orden en que se produzcan los distintos eventos. Si un circuito consiste en nada más que registros (flip flops) que comparten un reloj común, cuyas entradas de datos están controladas por lógica puramente combinatoria alimentada por la salida de sí mismas y entre sí, entonces habrá un corto tiempo después de cada impulso de reloj. donde los datos pueden propagarse a través de la lógica combinatoria; Una vez que haya transcurrido ese tiempo, no ocurrirá nada hasta el siguiente pulso de reloj. Si el tiempo entre los pulsos de reloj excede el tiempo en el peor de los casos para que todo (incluidos los circuitos de entrada de los flip flops) se estabilice, el orden en el que ocurren los eventos dependerá solo de la cantidad de pulsos de reloj necesarios para producirlos, y No a la velocidad de ningún circuito combinatorio. Todo esto permite un análisis de tiempo muy fácil: determine los tiempos de propagación en el peor de los casos y confirme que son más cortos que el espacio entre los pulsos del reloj. Si es así, los tiempos pueden determinarse "contando" los pulsos de reloj.
Si un circuito contiene rutas de realimentación que no involucran registros de reloj compartido, entonces es probable que la secuencia en la que ocurren los eventos importantes dependerá de los retrasos exactos impuestos por los elementos combinatorios. Dichas dependencias se denominan "condiciones de carrera" [dos eventos pasan por diferentes caminos lógicos, y hay una "carrera" para ver cuál de ellos sale primero]. En general, es mucho más fácil decirlo, por ejemplo. que un cambio en la entrada del circuito combinatorio se propagará a su salida en algo inferior a 10 ns, en lugar de decir que dicha propagación tomará entre 8 ns y 12 ns. Si bien es posible construir circuitos secuenciales que no requieren relojes, tales circuitos invariablemente involucran muchas condiciones de carrera, y diseñar cosas para que los eventos correctos ganen todas las carreras es en general bastante difícil. El uso de la lógica cronometrada hace que sea mucho más fácil asegurar que cada carrera se gane con el evento correcto (incluso permite que uno pueda ingeniar deliberadamente "empates", donde se considera que dos eventos han ocurrido simultáneamente).
Lea otras preguntas en las etiquetas digital-logic