14-Máquinas 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 1 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 2 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 más caras y más 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 3 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 pérdidas 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 4 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 5 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 6 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" Cómo 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 7 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 8 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 práctica 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 9 Estabilidad e inputs asincrónicos (cont) 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 Sincronizador (D0) 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 10 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 válidos) el FF puede entrar en un estado metaestable – no es ni lógica 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 11 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 más 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 más 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 12 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 inválido 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 13 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 14 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 Set R Q S Q' Q 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' R' Q S' R' Q Q' 14: Asincrónicas NAND x y z 0 0 1 0 1 1 1 0 1 1 1 0 15 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 16 Latch Asincrónico S-R (Latch de Nand) Las compuertas se asumen ideales. Y se modela el retardo de propagación, mediante una componente externa. Q(t) = q(t+∆S) Qn(t) = qn(t+∆R) 14: Asincrónicas 17 Latch Asincrónico S-R (Latch de Nand) Estado Presente: q, qn Estado Proxímo: Q, Qn Salida: Estado Presente Eventos que producen cambios están asociados a los cantos de bajada de las señales de entrada. Se tiene: Q =S ' ⋅qn =S ' ' qn ' Qn =R ' ⋅q =R ' ' q ' 14: Asincrónicas 18 Latch Asincrónico S-R (Latch de Nand) Matriz de Transiciones 14: Asincrónicas 19 Latch Asincrónico S-R (Latch de Nand) Si el próximo estado es igual al estado presente → se dice que ese estado es estable, en caso contrario se produce un cambio de estado. Estados estables en O, tres estados estables. Para emplearlo como flip-flop no deberá usarse el estado estable 11 (ambas entradas no pueden ser 00) 14: Asincrónicas 20 Latch Asincrónico S-R (Latch de Nand) Modo fundamental de operación: La entrada puede cambiar solo si está en estado estable. Carrera: dos o más variables de estado deben cambiar. Ciclo: ocurrencia de una secuencia de dos o más estados inestables. Carrera no crítica: llega a un mismo estado estable. Si nunca se llega a estados estables, se denomina oscilación. 14: Asincrónicas 21 Latch Asincrónico S-R (Latch de Nand) Diagrama de estados 14: Asincrónicas 22 Latch Asincrónico S-R (Latch de Nand) Secuencias de interés S'+R' =1 → puede estar en uno de dos estados estables set y reset. Set = {q=1, qn=0} Reset ={q=0, qn = 1} 14: Asincrónicas 23 Latch Asincrónico S-R (Latch de Nand) Transición set a reset Estado inicial • S'= 1, R'=1 • q=1, qn =0 Se analiza cuando ocurre un canto de bajada en R' 14: Asincrónicas 24 Latch Asincrónico S-R (Latch de Nand) Q, Qn pasa por las secuencias 10, 11, 01 q, qn pasa por las secuencias 10, 11, 01, pero con retardo. Después de un ∆R más un ∆S se produce el cambio a reset. Durante ∆S se pasa por el estado 11 En reset un canto de subida de R' no produce cambios. Se produce cambio estando en set y primer canto de bajada de R'. 14: Asincrónicas 25 Latch Asincrónico S-R (Latch de Nand) Transición reset a set Estado inicial • S'= 1, R'=1 • q=0, qn =1 Se analiza cuando ocurre un canto de bajada en S' 14: Asincrónicas 26 Análisis de latch S-R (Latch de Nor) Para generar tabla estados y K-mapa: poner valores de input, dejar que señales se propaguen y llenar próximo estado R Q S 0 0 0 0 1 1 1 1 R 0 0 1 1 0 0 1 1 Q(t) Q' S Q(t) 0 1 0 1 0 1 0 1 Q(t+∆) 0 hold 1 0 reset 0 1 set 1 X no permitido X S=R=1 no es permitido NOR x y z 0 0 1 0 1 0 1 0 0 1 1 0 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 27 Latch Asincrónico S-R (Latch de Nor) Estado presente al conjunto: {q, qn} Estado próximo al conjunto: {Q, Qn} Salida al estado presente (máquina de Moore). En el caso del latch de Nor Q = (R + qn )' = R'qn' Qn = (S + q )' = S'q' 14: Asincrónicas 28 Latch Asincrónico S-R (Latch de Nor) Matriz de transiciones. 14: Asincrónicas 29 Latch Asincrónico S-R (Latch de Nor) Diagrama de Estados 14: Asincrónicas 30 Latch S-R 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 Q' R R' Q enable' Q' S' S 100 Reset NOR x y z 0 0 1 0 1 0 1 0 0 1 1 0 14: Asincrónicas 31 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 32 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’ S’ Q’ S NOR x y z 0 0 1 0 1 0 1 0 0 1 1 0 stablechanging stable changing stable R’ and S’ clock’ 14: Asincrónicas 33 Latches en cascada Conectar output de un latch al input de otro Cómo 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 34 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 14: Asincrónicas 35 latch) 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. 2. 3. 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 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 Por lo anterior generalmente se puede incrementar la frecuencia del reloj en esta configuración que en una basada en niveles 14: Asincrónicas 36 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 37 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 38 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 R Q Clk=1 Q’ S D FF activado en canto negativo 4-5 retardos de compuertas debe respetar tiempos de setup y hold para capturar input correctamente 0 D D’ tiene D cuando reloj va a bajo ecuación característica Q(t+1) = D 14: Asincrónicas 39 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 40 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 100 bajada D CLK Qpos Qpos’ Qneg Qneg’ positive edge-triggered FF negative edge-triggered FF 14: Asincrónicas 41 Flip-flop JK J es un set, K es reset, ambos indican complemento del estado actual J Q J 0 0 1 1 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 42 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 43 Latch Transparente Un latch transparente realimentado D Q puede D verse 1 0 CLK como Q un mux FF D D Q(k+1) 0 0 1 1 G 14: Asincrónicas 44 Latch Transparente (cont) Una implementación mediante compuertas es la siguiente D G S P R Q 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 45 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 14: Asincrónicas 46 bajada) 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 47 Multivibrador Aestable (oscilador continuo) Este circuito es un oscilador elemental (para oscilar se le asigna Init Init = 1) xyz 0 1 x, y, z son las variables de estado, se tiene que: 000 111 111 X = (z Init)’ X Y = x’ Y Z x y Init z Z = y’ 001 010 011 100 101 110 111 111 110 110 101 101 100 100 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) 14: Asincrónicas 48 Los FFs se clasifican como multivibradores bi-estables 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 49 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 vez14: o Asincrónicas one shot) 50