ELO211: Sistemas Digitales Tomás Arredondo Vidal 1er Semestre – 2009 Este material está basado en: ❒ textos y material de apoyo: Contemporary Logic Design 1st / 2nd edition. Gaetano Borriello and Randy Katz. Prentice Hall, 1994, 2005 ❒ material del curso ELO211 del Prof. Leopoldo Silva ❒ material en el sitio http://es.wikipedia.org 14: Asincrónicas 1 14-Maquinas Secuenciales Asincrónicas 14.1 Bases electrónicas para almacenar bits 14.2 Latch asincrónico R-S 14.3 Diseño de FFs en base a latches 14.4 Multivibrador aestable 14.5 Multivibrador monoestable 14: Asincrónicas 2 Bases electrónicas para almacenamiento de bits ❒ Los programas de computadoras usan memoria RAM (Random Access Memory) para almacenar programas y datos (bits) utilizados para la computación ❒ Ha habido una gran mejora en la densidad de almacenamiento desde tubos a memoria electromagnéticas (ferritas) a circuitos integrados actuales (ICs: Integrated Circuits) ❒ Memoria volátil tiene que ser realimentada con electricidad o se pierde toda la información cuando se apaga la computadora 14: Asincrónicas 3 Bases electrónicas para almacenamiento de bits ❒ RAM volátil moderna almacena bits en una de dos formas: ❍ ❍ como cargas en condensadores (e.g. DRAM: Dynamic RAM) como estados en flip flops (e.g. SRAM: Static RAM) ❒ DRAM tiene que ser refrescada periódicamente (e.g. el standard JEDEC especifica cada 64ms o menos) ❒ Memorias no volátiles incluyen ROM, Flash, discos duros, floppys, cintas magnéticas. Pueden o no ser secuenciales y típicamente son mas caras y mas lentas que memorias volátiles (e.g. DRAM) ❒ Otros tipos de memoria no volátiles siendo actualmente desarrollados incluyen nanotubos de carbón y el efecto de magnetoresistencia de tunnel (TMR) 14: Asincrónicas 4 Bases electrónicas para almacenamiento de bits (cont) ❒ DRAM es un tipo de RAM que almacena cada bit de datos en un condensador separado ❒ Ya que los condensadores no ideales tienen perdidas de electrones (cargas) la información eventualmente se pierde si no se refresca ❒ La ventaja de DRAM es que estructuralmente es mas simple, solo se necesita un transistor y condensador por bit, esto permite una gran densidad ❒ Ejemplo: Transistor NMOS (Negative-Channel Metal-Oxide Semiconductor) usados para cargar un condensador Control Acceso: 1/0 Datos: 1/0 14: Asincrónicas 5 Bases electrónicas para almacenamiento de bits (cont) Ejemplo: DRAM de 4x4 celdas ❒ Para leer un valor, con RAS (Random Access Strobe = 0) ❍ usando a0 y a1 se activan los transistores de una fila y se conectan los condensadores de esa fila a las líneas de detección (sense lines) ❍ los amplificadores (sense amplifiers) discriminan entre un 0 y un 1 y amplifican las señales al valor correcto (e.g. TTL = 5V) ❍ se usan a2 y a3 para seleccionar la columna correcta y se conecta al output via el MUX ❍ después del ciclo de lectura los amplificadores recargar los valores de los condensadores que fueron descargados por la lectura ❒ ❒ Para la escritura de un bit se lee su fila completa al latch, se modifica el bit deseado en el latch usando Data In (D.I) y se almacena la fila modificada en los condensadores correspondientes D.I. 14: Asincrónicas 6 Bases electrónicas para almacenamiento de bits (cont) ❒ SRAM es un tipo de RAM volátil que almacena cada bit de datos en una configuración estable que mantiene el valor del bit mientras haya poder aplicado ❒ Usando un par de inversores CMOS esta configuración se puede lograr de la siguiente forma. Esto se denomina almacenamiento bi-estable ya que el output en CMOS es estable alrededor de los dos valores Vcc y GND "1" "stored value" "0" 14: Asincrónicas 7 Circuitos simples con feedback ❒ Dos inversores forman una celda de memoria estática ❍ van a mantener valor mientras tenga energía el circuito "1" "stored value" "0" ❒ Como se introduce un nuevo valor en la celda? selectivamente romper realimentación ❍ cargar nuevo valor en la celda ❍ "remember" "data" "load" "stored value" 14: Asincrónicas 8 Estabilidad e inputs asincrónicos ❒ Circuitos sincrónicos (con reloj) ❍ inputs, estados e outputs muestreados o cambian en relación a señal común (reloj) ❍ pueden ser master/slave, activados con cantos ❒ Circuitos asincrónicos ❍ inputs, estados y outputs muestreados o cambian independientes de señal de referencia común (glitches/hazards una preocupacion ) ❍ e.g., R-S latch 14: Asincrónicas 9 Estabilidad e inputs asincrónicos (cont) ❒ Inputs asincrónicos a circuitos sincrónicos ❍ ❍ ❍ ❍ inputs pueden cambiar en cualquier tiempo, no van a satisfacer tiempos de setup/hold peligroso, inputs sincrónicos son preferidos en generar es buena practica de diseño el tener circuitos que solamente tienen inputs sincrónicos hay veces que los inputs asincrónicos no se pueden evitar (e.g., señal reset, memory wait, input de usuario), por eso se usa un sincronizador Sincronizador (D0) Async Input D Q D Q Clock D Q Clock 14: Asincrónicas 10 Estabilidad e inputs asincrónicos (cont) Sincronizador (D0) ❒ Que puede salir mal? ❍ input cambia muy cerca de un canto de reloj (violando restricciones de tiempo de setup/hold) esto causa que el output del FF sincronizador sea indefinido In Q0 Async Input D Q ? Clock Input a D0 es asincrónico FF no captura la señal CLK se llega a estado inconsistente o erróneo! 14: Asincrónicas 11 Falla de sincronización ❒ Ocurre cuando el input a un FF cambia cerca del canto del reloj (tiempo de setup y hold del input no son respetados) ❍ el FF puede entrar en un estado metaestable – no es ni logica 0 ni 1 ❍ puede quedarse en este estado indefinidamente (poco probable dado variaciones termales y asimetrías en retardos de señales a nivel de transistores de implementación del FF) logic 1 logic 0 logic 1 small, but non-zero probability that the FF output will get stuck in an in-between state logic 0 oscilloscope traces demonstrating synchronizer failure and eventual decay to steady state 14: Asincrónicas 12 Falla de sincronización (cont) ❒ Probabilidad de falla puede ser reducida pero nunca puede ser 0 ❒ Posibles mejoras: ❍ ❍ ❍ hacer que el reloj sea mas lento: esto le da mas tiempo al sincronizador para decaer a un estado estable; fallas del sincronizador puede ser un grave problema para sistemas de alta velocidad usar tecnología con lógica mas rápida: esto hace que la “cumbre” sea mas delgada poner dos sincronizadores en cascada: ambos tendrían que fallar para tener un estado metaestable asynchronous input D Q D synchronized input Q Clk synchronous system 14: Asincrónicas 13 Falla de sincronización (cont) ❒ Nunca tener inputs asincrónicos que hagan fan- out a mas de un flip-flop ❍ ❍ por diferencias en cableado y otros retardos podrían tener valores diferentes, seria un estado invalido hay que sincronizar lo antes posible y tratar como señal sincrónica Clocked Synchronous System Async Input D Q Synchronizer Q0 Async Input D Q D Q Clock Clock D Q Q1 Clock Q0 D Q Q1 Clock 14: Asincrónicas 14 14-Maquinas Secuenciales Asincrónicas 14.1 Bases electrónicas para almacenar bits 14.2 Latch asincrónico R-S 14.3 Diseño de FFs en base a latches 14.4 Multivibrador aestable 14.5 Multivibrador monoestable 14: Asincrónicas 15 Memoria basada en compuertas conectadas ❒ Se denomina latch a un elemento de almacenamiento de un bit ❒ Usando compuertas NOR ❍ similar a par de inversores, pueden forzar output Q a 0 (reset=1, set=0) o 1 (set=1, reset=0) Reset R Q S Q' Q Set R S NOR x y z 0 0 1 0 1 0 1 0 0 1 1 0 ❒ Usando compuertas NAND ❍ similar a par de inversores, pueden forzar output Q a 0 (reset=0, set=1) o 1 (set=0, reset=1) S' Q S' R' R' Q Q' 14: Asincrónicas NAND x y z 0 0 1 0 1 1 1 0 1 1 1 0 16 Comportamiento temporal de latch R-S S 0 0 1 1 Reset R 0 1 0 1 Q hold 0 1 unstable Hold Set R Q S Q' Reset Set 100 Race R S Q \Q 14: Asincrónicas 17 Estados para un latch R-S R Q S Q' ❒ Tabla de verdad Q Q' 0 1 S 0 0 1 1 R 0 1 0 1 Q hold 0 1 unstable Q Q' 1 0 Q Q' 0 0 Q Q' 1 1 14: Asincrónicas 18 Comportamiento de estados de latch R-S SR=10 ❒ Diagrama de estados ❍ ❍ SR=00 SR=01 estados: valores posibles transiciones: cambios basados en inputs SR=01 oscilaciones posibles entre estados 00 y 11 Q Q' 1 0 SR=10 SR=11 ❒ Difícil observar latch R-S en estado 1-1 ❍ R o S usualmente cambian antes ❍ condición de “carrera” o transicion “no deterministica” SR=01 Q Q' 0 1 SR=00 SR=10 SR=11 Q Q' 0 0 SR=11 SR=00 SR=11 SR=00 SR=01 SR=10 Q Q' 1 1 S 0 0 1 1 R 0 1 0 1 Q hold 0 1 unstable 14: Asincrónicas 19 NOR x y z 0 0 1 0 1 0 1 0 0 1 1 0 Análisis de latch R-S ❒ Para generar tabla estados y K-mapa: poner valores de input, dejar que señales se propaguen y llenar próximo estado R Q Q' S S 0 0 0 0 1 1 1 1 R 0 0 1 1 0 0 1 1 Q(t) 0 1 0 1 0 1 0 1 S=R=1 no es permitido Q(t+∆) 0 hold 1 0 reset 0 1 set 1 X no permitido X Q(t) Q(t+∆) S R S Q(t) 0 0 X 1 1 0 X 1 R ecuación característica Q(t+∆) = S + R’ Q(t) 14: Asincrónicas 20 Actividad: latch R-S usando NAND R’ Q' R 0 0 1 1 0 0 1 1 R’ S’ Q S’ S 0 0 0 0 1 1 1 1 Q(t) S’ 1 1 1 1 0 0 0 0 R’ 1 1 0 0 1 1 0 0 Q(t) 0 1 0 1 0 1 0 1 Q(t+∆) 0 1 0 0 1 1 X X S hold 0 0 X 1 1 0 X 1 reset Q(t) set not allowed R ecuacion caracteristica Q(t+∆) = S + R’ Q(t) 14: Asincrónicas 21 Latch R-S con enable ❒ Controlar cuando entradas R y S importan ❍ de otra forma cualquier ruido en R o S mientras enable es bajo podría causar cambio en valor almacenado Set S' R' enable' Q R R' Q enable' Q' S' S Reset 100 NOR x y z 0 0 1 0 1 0 1 0 0 1 1 0 Q' 14: Asincrónicas 22 14-Maquinas Secuenciales Asincrónicas 14.1 Bases electrónicas para almacenar bits 14.2 Latch asincrónico S-R 14.3 Diseño de FFs en base a latches 14.4 Multivibrador aestable 14.5 Multivibrador monoestable 14: Asincrónicas 23 Latch R-S con reloj ❒ Control del latch R-S con un reloj ❍ ❍ ❍ no se puede dejar que R y S cambien mientras el reloj esta activo (cuando clock’=0) solo se tiene la mitad del periodo de reloj para que las señales se propagan señales tienen que estar estables durante la otra mitad del periodo del reloj R’ R Q clock’ Q’ S’ NOR x y z 0 0 1 0 1 0 1 0 0 1 1 0 S stable changing stable changing stable R’ and S’ clock’ 14: Asincrónicas 24 Latches en cascada ❒ Conectar output de un latch al input de otro ❒ Como se controla la propagación de los cambios entre los latches? ❍ debería moverse por un latch por periodo del reloj ❍ el movimiento de señales entre los latches no debe ser mas rápido ❍ inputs correctos, con respecto al tiempo se dan a los FFs ❍ ningún FF cambia de estado mas de una vez por evento del reloj (canto o nivel) R R Q’ R Q’ S S Q S Q clock 14: Asincrónicas 25 Estructura maestro-esclavo (Master-slave) ❒ Se rompe el flujo alternando relojes ❍ ❍ usar el nivel positivo del reloj para hacer que los inputs entren al primer latch usar el nivel del reloj negativo para activar segundo latch ❒ Ver el par como una unidad básica usado para almacenar un bit slave stage master stage R R Q’ S S Q P’ P R Q’ S Q CLK ❒ La segunda etapa va a tener cambio de output un corto tiempo después que el reloj vaya de alto a bajo ❒ Por esto se considera como un latch master-slave activado en el canto negativo (negative edge-triggered master-slave latch) 14: Asincrónicas 26 Estructura maestro-esclavo (Master-slave) (cont) ❒ A pesar del costo adicional, el latch master-slave activado en el canto negativo tiene varias ventajas sobre un latch activado en niveles 1. Cambios de valores están restringidos a un latch master-slave y no se pueden propagar a un segundo latch hasta el próximo periodo del reloj 2. Ya no estamos preocupados que el retardo de la lógica combinacional sea mayor que el periodo del reloj sino que la lógica entre las latches calcule nuevos valores antes del nuevo canto de bajada 3. Por lo anterior generalmente se puede incrementar la frecuencia del reloj en esta configuración (mas que en una basada en niveles) 14: Asincrónicas 27 Master-Slave: Problema de captura de 1 ❒ Esta configuración de tiene un problema de captura de perturbaciones ❒ Ejemplo: En la primer etapa de master-slave latch ❍ ❍ perturbación 0-1-0 en R o S mientras reloj esta alto se captura en etapa master induce restricción que lógica no tenga perturbaciones slave stage master stage Set S R CLK P P’ Q Q’ 1s Reset catch R R Q’ S S Q P’ P R Q’ S Q CLK Master Outputs Slave Outputs 14: Asincrónicas 28 Flip-flop D FF D D Q(k+1) 0 0 1 1 ❒ Hace que S y R se complementen ❍ ❍ ❍ elimina problema de captura de 1 no puede mantener valor previo (debe tener un valor nuevo en cada periodo del reloj) valor de D antes que el reloj baje es lo que se guarda en el FF slave stage master stage D R Q’ S Q P’ P R Q’ Q’ S Q Q CLK 10 compuertas 14: Asincrónicas 29 FF D Activado en cantos (versión 2) ❒ Solución mas eficiente: solo 6 compuertas ❍ sensible a inputs solo cerca de los cantos del reloj (no mientras reloj este alto) D’ D tiene D’ cuando reloj va a bajo 0 D FF activado en canto negativo 4-5 retardos de compuertas R Q Clk=1 Q’ S debe respetar tiempos de setup y hold para capturar input correctamente 0 tiene D cuando reloj va a bajo D D’ ecuación característica Q(t+1) = D 14: Asincrónicas 30 FFs Activados en cantos (cont) ❒ Análisis D’ D’ D D D’ R D’ R Q Clk=0 Clk=0 S S D D Q D’ cuando reloj va de alto a bajo se almacena input D new D new D ≠ old D D’ cuando reloj es bajo datos se mantienen 14: Asincrónicas 31 FFs Activados en cantos (cont) ❒ Cantos positivos ❍ inputs muestreados en canto de subida; outputs cambian después de canto de subida ❒ Cantos negativos ❍ inputs muestreados en canto de bajada; outputs cambian después de canto de bajada 100 D CLK Qpos Qpos’ Qneg Qneg’ positive edge-triggered FF negative edge-triggered FF 14: Asincrónicas 32 Flip-flop JK ❒ J es un set, K es reset, ambos indican complemento del estado actual J J 0 0 1 1 Q K CLK FF K 0 1 0 1 JK Q(k+1) Q(k) 0 1 Q’(k) ❒ Ecuación característica: Q(t+1) = J(t) Q’(t) + K’(t) Q(t) ❒ Implementación de un FF D usando un FF JK D J Q K Q’ CLK 14: Asincrónicas 33 Flip-flop T ❒ T es un toggle (un tipo de interruptor de presión), se oprime una vez y queda en un estado, se vuelve a oprimir y cambia de estado T Q FF T T Q(k+1) 0 Q(k) 1 Q’(k) CLK ❒ Implementación de FF T usando un FF JK T J Q K Q’ CLK 14: Asincrónicas 34 Latch Transparente ❒ Un latch transparente puede verse como un mux realimentado D Q D 1 0 CLK Q FF D D Q(k+1) 0 0 1 1 G 14: Asincrónicas 35 Latch Transparente (cont) ❒ Una implementación mediante compuertas es la siguiente D G S P Q R Si G y D están un tiempo suficiente en 1 se llega al estado estable PQRS=0101 ❒ Cuando G esta alto, Q sigue a D. En caso contrario Q permanece estable. Se denomina un latch D estático ya que mantiene Q mientras G este inactivo. ❒ Si D esta alto al ocurrir un canto de bajada en G, se produce una perturbación (falso cero) en Q. Esto debido a que R y S conmutan en tiempos diferentes. Esta perturbación genera oscilaciones. ❒ Otro problema es si el ancho del pulso G es demasiado angosto causa que el latch no alcanza a setearse. ❒ Otra dificultad es si D cambia casi al mismo tiempo que el latch se activa con el canto de bajada G. En este caso no puede determinarse cual será el valor se captura en el latch. 14: Asincrónicas 36 Latch Transparente (cont) D G S P Q R ❒ Por estas razones, el diseño de dispositivos secuenciales debe garantizar que las entradas sean validas y estables durante los periodos en que estas pueden influir sobre el cambio de estado. ❒ G debe permanecer activa por el tiempo que sea suficiente para que el latch pueda capturar el dato. Esto requiere un mínimo ancho para el pulso G. ❒ El tiempo de set-up debe garantizar que el valor de D se haya propagado a través del lazo de realimentación antes que se active el latch. ❒ El tiempo de hold debe garantizar que el latch este cerrado y Q estable antes de permitir los cambios en la entrada D. ❒ Latches transparentes también se pueden configurar en forma maestro-esclavo (activados por cantos de subida y bajada) 14: Asincrónicas 37 14-Maquinas Secuenciales Asincrónicas 14.1 Bases electrónicas para almacenar bits 14.2 Latch asincrónico S-R 14.3 Diseño de FFs en base a latches 14.4 Multivibrador aestable 14.5 Multivibrador monoestable 14: Asincrónicas 38 Multivibrador Aestable (oscilador continuo) Este circuito es un oscilador elemental (para oscilar se le asigna Init = 1) Init ❒ x, y, z son las variables de estado, se tiene que: ❒ ❍ X = (z Init)’ Y = x’ X Z = y’ Y Init z x y Z xyz 000 001 010 011 100 101 110 111 0 111 111 110 110 101 101 100 100 1 111 011 110 010 101 001 100 000 La matriz de transiciones indica que solo el estado 101 es estable ya que con Init = 0 eventualmente se llega y se queda en el estado 101. ❒ Si se tiene un ciclo de oscilación de High a Low (HL) y de Low a High (LH) para cada compuerta se obtiene un circuito oscilador con el periodo: T = 3(THL + TLH) ❒ Los FFs se clasifican como multivibradores bi-estables ❒ 14: Asincrónicas 39 14-Maquinas Secuenciales Asincrónicas 14.1 Bases electrónicas para almacenar bits 14.2 Latch asincrónico S-R 14.3 Diseño de FFs en base a latches 14.4 Multivibrador aestable 14.5 Multivibrador monoestable 14: Asincrónicas 40 Multivibrador Monoestable ❒ El siguiente circuito permite generar un pulso de ancho programable ❒ Se emplea para generar temporizadores que generan eventos después de un tiempo dado R Q S Q’ Dispara ❒ Se suele usar una red RC después del inversor para generar el retardo (no esta en diagrama) ❒ Con el canto de subida en R (1) se inicia el multivibrador, después del canto de bajada en Q hay un retardo hasta que S sube (2) ❒ El tiempo que genera el multivibrador es la señal Q’ (entre 3 y 4). ❒ Se debe reiniciar la señal R a cero para reiniciar disparo del circuito tiene un estado estable (dispara una vez o one shot) 14: Asincrónicas 41