Lógica secuencial: máquinas de estado y temporización
Un equipo que se cuelga una vez por día sin causa aparente puede tener un flip-flop que lee un pulsador sin sincronizar. Agregarle un segundo flip-flop lleva esa falla a una vez cada decenas de miles de años.
01El diseño sincrónico
Flip-flops, contadores y registros de desplazamiento están desarrollados en la página de lógica secuencial de la tecnicatura. Esta unidad sube un nivel: cómo se diseña un sistema secuencial cualquiera y qué lo limita.
Casi toda la lógica digital moderna es sincrónica: un único reloj marca los instantes en que todos los flip-flops toman su nuevo valor, y entre flanco y flanco la lógica combinacional tiene tiempo de asentarse. Esa disciplina resuelve de un golpe el problema de los riesgos de la unidad anterior: los glitches pasan, pero el flip-flop solo mira su entrada justo en el flanco, cuando ya se asentó.
02Máquinas de estado: Moore y Mealy
Una máquina de estados finitos describe un circuito secuencial como un conjunto de estados y de transiciones entre ellos. Hay dos maneras de sacar las salidas, y la diferencia importa:
| Moore | Mealy | |
|---|---|---|
| La salida depende de | Solo del estado | Del estado y de la entrada actual |
| En el diagrama, la salida va | Adentro del estado | Sobre la transición |
| Cuándo responde | Un ciclo después | En el mismo ciclo |
| Estados necesarios | Suele necesitar alguno más | Menos |
| La salida puede tener glitches | No: sale de flip-flops | Sí: pasa por la lógica de entrada |
La máquina recibe un bit por ciclo de reloj y pone la salida en 1 cuando los últimos cuatro bits fueron 1011 (las secuencias se pueden superponer). Elegís Moore o Mealy y le das bits de a uno; el estado activo se resalta en el diagrama y la tabla guarda los últimos ciclos.
03Del diagrama al circuito
El diagrama se traduce en una tabla de estados, y cada estado recibe un código binario. La elección de ese código —la asignación de estados— cambia el circuito resultante:
| Codificación | Flip-flops para N estados | Cuándo conviene |
|---|---|---|
| Binaria | \( \lceil \log_2 N \rceil \) | Cuando los flip-flops son caros, como en lógica discreta |
| Gray | \( \lceil \log_2 N \rceil \) | Si las transiciones siguen una secuencia: cambia un bit por vez |
| One-hot | \( N \) | En FPGA: sobran flip-flops y la lógica de próximo estado queda mínima y rápida |
Con la codificación elegida, cada bit del estado siguiente y cada salida son funciones combinacionales de los bits de estado y de las entradas, y se minimizan exactamente como en la unidad anterior.
04Temporización: la frecuencia máxima
Entre dos flancos de reloj, el dato tiene que salir del primer flip-flop, atravesar la lógica y llegar al segundo con tiempo de sobra para que este lo capture. Esa carrera fija la frecuencia máxima de todo el sistema.
Además hay una condición en sentido contrario: el dato no puede cambiar demasiado pronto después del flanco, durante el tiempo de retención (hold). Y si el reloj no llega a todos los flip-flops al mismo tiempo —la diferencia se llama skew— los dos márgenes se achican.
05Metaestabilidad: cuando la entrada no respeta al reloj
Una señal que viene de afuera —un pulsador, otro circuito con su propio reloj— puede cambiar justo durante la ventana de preparación y retención. El flip-flop queda entonces en un estado metaestable: ni 0 ni 1, como una pelota en equilibrio sobre una loma, y tarda un tiempo aleatorio en caer a un lado. Si la lógica siguiente lo lee antes, puede leerlo distinto en dos lugares del circuito y el sistema falla de manera imposible de reproducir.
La probabilidad de que siga indeciso decae exponencialmente con el tiempo que se le da para resolverse. De ahí sale el tiempo medio entre fallas:
Una entrada asincrónica que cambia en promedio un millón de veces por segundo entra a un sistema de 100 MHz, con flip-flops de \( \tau = 50 \) ps y \( T_0 = 1 \) ns (valores ilustrativos, del orden de una lógica rápida). Elegís cuántos flip-flops en cadena usa el sincronizador y cuánto tiempo de resolución deja cada uno.
Por eso ninguna señal asincrónica entra a un diseño sincrónico sin pasar antes por un sincronizador de al menos dos flip-flops. No hace imposible la falla —ningún circuito puede—: la vuelve tan improbable que deja de importar.
06Dónde aparece en la electrónica
| Caso | Qué se usa de esta unidad |
|---|---|
| Controlador de un protocolo serie (UART, I²C) | Una máquina de estados que recorre los bits de cada trama |
| Pulsador de un equipo | Sincronizador de dos flip-flops más antirrebote antes de entrar a la lógica |
| Informe de síntesis de una FPGA | La herramienta calcula el camino crítico y la frecuencia máxima alcanzada |
| Paso de datos entre dos dominios de reloj | Sincronizadores y memorias FIFO con punteros en código Gray |
07En el laboratorio
Llevar la máquina de Moore del laboratorio a una tabla de estados, codificarla en binario y en one-hot, y comparar cuántos flip-flops y compuertas necesita cada versión.
Implementar las dos versiones en una placa de desarrollo y observar con dos canales cuándo sube la salida de cada una respecto del flanco de reloj en que entra el último 1.
Con los tiempos del informe de síntesis de un diseño propio, verificar a mano la frecuencia máxima con la fórmula del camino crítico.
08Errores frecuentes
- Usar una salida de Mealy como reloj o habilitación. Puede tener glitches: pasa por la lógica de entrada.
- Olvidar el estado inicial. Toda máquina necesita un reset que la lleve a un estado conocido.
- Leer una entrada asincrónica directamente. Sin sincronizador, la metaestabilidad es cuestión de tiempo.
- Creer que un sincronizador elimina la metaestabilidad. La hace improbable, no imposible.
- Sumar solo retardos de lógica. El período mínimo incluye \( t_{cq} \) y \( t_{su} \).
09Autoevaluación
¿Qué diferencia a una máquina de Moore de una de Mealy?
En Moore la salida depende solo del estado; en Mealy, del estado y de la entrada actual, por lo que responde un ciclo antes.
¿Por qué se usa codificación one-hot en las FPGA?
Porque tienen flip-flops de sobra y así la lógica de próximo estado queda mínima y rápida.
¿Qué limita la frecuencia máxima de un circuito sincrónico?
El camino crítico: \( t_{cq} + t_{\text{lógica}} + t_{su} \) entre dos flip-flops.
¿Qué es la metaestabilidad?
El estado indefinido en que queda un flip-flop cuando su entrada cambia durante la ventana de preparación y retención; se resuelve en un tiempo aleatorio.
¿Por qué un segundo flip-flop mejora tanto el MTBF?
Porque le da al primero un período más para resolverse, y el MTBF crece exponencialmente con ese tiempo.
10Para ampliar
- John F. Wakerly. Digital Design: Principles and Practices. 5.ª ed., Pearson, 2018. Máquinas de estado, temporización y el mejor capítulo introductorio sobre metaestabilidad y sincronizadores.
- William J. Dally y R. Curtis Harting. Digital Design: A Systems Approach. Cambridge University Press, 2012. El diseño sincrónico desde la mirada de quien diseña procesadores, con los márgenes de tiempo en detalle.
- Clifford E. Cummings. Clock Domain Crossing (CDC) Design & Verification Techniques Using SystemVerilog. SNUG Boston, 2008. El artículo de referencia de la industria sobre cómo pasar señales entre dominios de reloj.