En el diseño de circuitos integrados , la lógica dinámica (o a veces lógica sincronizada ) es una metodología de diseño en circuitos lógicos combinacionales , particularmente aquellos implementados en tecnología de semiconductores de óxido de metal (MOS). Se distingue de la llamada lógica estática al explotar el almacenamiento temporal de información en capacitancias parásitas y de compuerta . [1] Fue popular en la década de 1970 y ha visto un resurgimiento reciente en el diseño de electrónica digital de alta velocidad [ cita requerida ] , particularmente unidades centrales de procesamiento (CPU). Los circuitos lógicos dinámicos suelen ser más rápidos que sus contrapartes estáticos y requieren menos área de superficie, pero son más difíciles de diseñar. La lógica dinámica tiene una tasa promedio más alta de transiciones de voltaje que la lógica estática, [2] pero las cargas capacitivas que se transicionan son más pequeñas [3] por lo que el consumo de energía general de la lógica dinámica puede ser mayor o menor dependiendo de varias compensaciones. Cuando se hace referencia a una familia lógica en particular , el adjetivo dinámico generalmente es suficiente para distinguir la metodología de diseño, por ejemplo, CMOS dinámico [4] o diseño SOI dinámico . [2]
Además de su uso de almacenamiento de estado dinámico a través de voltajes en capacitancias, la lógica dinámica se distingue de la llamada lógica estática en que la lógica dinámica utiliza una señal de reloj en su implementación de lógica combinacional. El uso habitual de una señal de reloj es sincronizar transiciones en circuitos lógicos secuenciales . Para la mayoría de las implementaciones de lógica combinacional, ni siquiera se necesita una señal de reloj. La terminología estática/dinámica utilizada para referirse a circuitos combinatorios está relacionada con el uso de los mismos adjetivos utilizados para distinguir dispositivos de memoria, por ejemplo, RAM estática de RAM dinámica , en que la RAM dinámica almacena el estado dinámicamente como voltajes en capacitancias, que deben actualizarse periódicamente. Pero también hay diferencias en el uso; el reloj se puede detener en la fase apropiada en un sistema con lógica dinámica y almacenamiento estático. [5]
La mayor diferencia entre la lógica estática y la dinámica es que en la lógica dinámica se utiliza una señal de reloj para evaluar la lógica combinacional . En la mayoría de los tipos de diseño lógico, denominados lógica estática , siempre hay algún mecanismo para hacer que la salida sea alta o baja. En muchos de los estilos lógicos populares, como TTL y CMOS tradicional , este principio se puede reformular como una declaración de que siempre hay una ruta de CC de baja impedancia entre la salida y el voltaje de suministro o la tierra . Como nota al margen, hay, por supuesto, una excepción en esta definición en el caso de salidas de alta impedancia , como un búfer triestado ; sin embargo, incluso en estos casos, el circuito está destinado a usarse dentro de un sistema más grande donde algún mecanismo impulsará la salida, y no califican como distintos de la lógica estática.
En cambio, en la lógica dinámica no siempre hay un mecanismo que impulse la salida hacia arriba o hacia abajo. En la versión más común de este concepto, la salida se impulsa hacia arriba o hacia abajo durante distintas partes del ciclo de reloj. Durante los intervalos de tiempo en los que la salida no se impulsa activamente, la capacitancia parásita hace que mantenga un nivel dentro de un rango de tolerancia del nivel impulsado.
La lógica dinámica requiere una frecuencia de reloj mínima lo suficientemente rápida como para que el estado de salida de cada puerta dinámica se use o se actualice antes de que la carga en la capacitancia de salida se escape lo suficiente como para provocar que el estado digital de la salida cambie, durante la parte del ciclo de reloj en que la salida no está siendo impulsada activamente.
La lógica estática no tiene una frecuencia de reloj mínima : el reloj se puede pausar indefinidamente. Si bien puede parecer que no hacer nada durante largos períodos de tiempo no es particularmente útil, conlleva tres ventajas:
La posibilidad de pausar un sistema en cualquier momento y durante cualquier duración también se puede utilizar para sincronizar la CPU con un evento asincrónico. Si bien existen otros mecanismos para hacer esto, como interrupciones, bucles de sondeo, pines de entrada inactivos del procesador (por ejemplo, RDY en el 6502 ) o mecanismos de extensión del ciclo del bus del procesador como las entradas WAIT, el uso de hardware para activar el reloj de una CPU de núcleo estático es más simple, es más preciso temporalmente, no utiliza memoria de código de programa y casi no utiliza energía en la CPU mientras está esperando. En un diseño básico, para comenzar a esperar, la CPU escribiría en un registro para establecer un bit de pestillo binario que se combinaría con AND u OR con el reloj del procesador, deteniendo el procesador. Una señal de un dispositivo periférico restablecería este pestillo, reanudando el funcionamiento de la CPU. La lógica del hardware debe activar las entradas de control de pestillo según sea necesario para garantizar que una transición de salida de pestillo no haga que el nivel de la señal del reloj cambie instantáneamente y provoque un pulso de reloj, ya sea alto o bajo, que sea más corto de lo normal.
En particular, aunque muchas CPU populares utilizan lógica dinámica, [ cita requerida ] solo los núcleos estáticos (CPU diseñadas con tecnología completamente estática) se pueden utilizar en satélites espaciales debido a su mayor resistencia a la radiación . [7] [ se necesita una mejor fuente ]
Cuando se diseña correctamente, la lógica dinámica puede ser más del doble de rápida que la lógica estática. Utiliza solo los transistores NMOS más rápidos , lo que mejora las optimizaciones del tamaño de los transistores. La lógica estática es más lenta porque tiene el doble de carga capacitiva , umbrales más altos y utiliza transistores PMOS lentos para la lógica. La lógica dinámica puede ser más difícil de trabajar, pero puede ser la única opción cuando se necesita una mayor velocidad de procesamiento. La mayoría de los dispositivos electrónicos que funcionan a más de 2 GHz en la actualidad [ ¿cuándo? ] requieren lógica dinámica, aunque algunos fabricantes como Intel han diseñado chips que utilizan lógica completamente estática para reducir el consumo de energía. [8] Tenga en cuenta que reducir el uso de energía no solo extiende el tiempo de funcionamiento con fuentes de energía limitadas, como baterías o paneles solares (como en las naves espaciales), sino que también reduce los requisitos de diseño térmico, reduciendo el tamaño de los disipadores de calor, ventiladores, etc. necesarios, lo que a su vez reduce el peso y el costo del sistema.
En general, la lógica dinámica aumenta en gran medida la cantidad de transistores que conmutan en un momento dado, lo que aumenta el consumo de energía en comparación con los CMOS estáticos. [8] Existen varias técnicas de ahorro de energía que se pueden implementar en un sistema basado en lógica dinámica. Además, cada riel puede transportar una cantidad arbitraria de bits y no hay fallas que desperdicien energía. Las técnicas asincrónicas y de compuerta de reloj para ahorrar energía son mucho más naturales en la lógica dinámica.
Como ejemplo, considere la implementación de lógica estática de una puerta NAND CMOS:
Este circuito implementa la función lógica
Si A y B están ambos en nivel alto, la salida se reducirá. Si A o B están en nivel bajo, la salida se elevará. En todo momento, la salida se reducirá o se elevará.
Consideremos ahora una implementación lógica dinámica de la misma función lógica:
El circuito lógico dinámico requiere dos fases. La primera fase, cuando el reloj está bajo, se llama fase de configuración o fase de precarga , y la segunda fase, cuando el reloj está alto, se llama fase de evaluación . En la fase de configuración, la salida se activa de forma incondicional (sin importar los valores de las entradas A y B ). El condensador , que representa la capacidad de carga de esta compuerta, se carga. Debido a que el transistor en la parte inferior está apagado, es imposible que la salida se active a un nivel bajo durante esta fase.
Durante la fase de evaluación , el reloj está alto. Si A y B también están altos, la salida se reducirá. De lo contrario, la salida permanece alta (debido a la capacidad de carga).
La lógica dinámica tiene algunos problemas potenciales que la lógica estática no tiene. Por ejemplo, si la velocidad del reloj es demasiado lenta, la salida se desintegrará demasiado rápido para ser útil. Además, la salida solo es válida para una parte de cada ciclo de reloj, por lo que el dispositivo conectado a ella debe muestrearla sincrónicamente cuando sea válida.
Además, cuando tanto A como B están altas, de modo que la salida es baja, el circuito bombeará una carga de capacitor de carga desde Vdd a tierra por cada ciclo de reloj, primero cargando y luego descargando el capacitor en cada ciclo de reloj. Esto hace que el circuito (con su salida conectada a una impedancia alta) sea menos eficiente que la versión estática (que teóricamente no debería permitir que fluya ninguna corriente excepto a través de la salida), y cuando las entradas A y B son constantes y ambas altas, la compuerta NAND dinámica usa energía en proporción a la frecuencia de reloj , siempre que funcione correctamente. La disipación de energía se puede minimizar manteniendo baja la capacitancia de carga. Esto, a su vez, reduce el tiempo de ciclo máximo, lo que requiere una frecuencia de reloj mínima más alta; la frecuencia más alta aumenta el consumo de energía en la relación mencionada. Por lo tanto, es imposible reducir el consumo de energía en reposo (cuando ambas entradas son altas) por debajo de un cierto límite derivado de un equilibrio entre la velocidad de reloj y la capacitancia de carga.
Una implementación popular es la lógica dominó .
Referencias generales