UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA ELO211 Sistemas Digitales 12. MEMORIAS PRIMITIVAS SINCRÓNICAS Se estudiarán algunos dispositivos capaces de almacenar un bit de información, desde un punto de vista lógico. Es decir, qué hace la componente; sin explicar cómo lo realiza internamente. Esto último se verá más adelante. Esta memoria se denomina flip-flop, y se tienen tres tipos, denominados: JK, T y D. Todos ellos operan con una señal periódica, denominada reloj. 12.1. Reloj Los cambios de estado ocurren solamente en determinados instantes de tiempo; esos instantes están sincronizados con el reloj. t En algunos casos se emplea el canto de subida del reloj para marcar los instantes de cambio; en otros, se emplea el canto de bajada. El canto que define el instante de tiempo es el evento sincronizante, y suele llamarse tic. En los flip-flops disparados por cantos, se requiere una determinada pendiente para el reloj; no importando el ancho. En general, el tiempo que la señal está en cero es mucho mayor que el intervalo en que el reloj está alto. Se define el ciclo de trabajo de la señal periódica de un reloj, como el porcentaje del tiempo que la señal está alta entre tics. Si la señal es cuadrada el ciclo de trabajo es igual al 50%. Durante el tiempo que el reloj está en uno se habilitan las entradas hacia el interior del flipflop. Y se requiere que las entradas no cambien durante cierto período previo y posterior al instante en que ocurren los cambios de las salidas. Para cambios con canto de bajada: tsu th Con: tsu : tiempo de set-up, y th: tiempo de hold. En el siguiente diagrama se ilustra la forma de indicar una variación de la señales de entrada(sobre todo en caso de ser un conjunto de señales). La figura muestra que las señales pueden cambiar(tomar valores 0 ó 1) desde el instante en que ocurren las líneas inclinadas, que representan cantos. La figura se interpreta: tsu segundos antes del canto de subida, las señales de entrada deben estar estables, y deben mantenerse estables th segundos después del canto de subida. Debe existir una ventana alrededor del evento sincronizante, durante la cual las Prof. Leopoldo Silva Bijit. 14-11-2015 201 UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA ELO211 Sistemas Digitales entradas deben permanecer estables(sin cambios) para ser correctamente reconocidas por el flip-flop. tsu tsu : tiempo de set-up. th entrada th: tiempo de hold. clock Los fabricantes especifican el valor promedio y de peor caso para los tiempos de preparación (set-up) y de sostenimiento (hold), durante los cuales las entradas no pueden cambiar. Desde un punto de vista lógico, podemos pensar que el reloj es un tren de impulsos. t t t 0 1 2 ... tk = t k Y las variables en el tiempo, se consideran discretas; es decir, asumen valores sólo en determinados valores de t. v(tk) = v(kt) = v(k) v(k-1) v(k) k t v(k+1) (k+1) t t v(k) define una secuencia de valores sincrónicos con el reloj. Existe una correspondencia biunívoca, entre { 0, 1, 2, 3, ...., k, ....} y { vo, v1, v2, ...., vk, .... }. 12.2. Secuencias sincrónicas Existen dos tipos de señales sincrónicas. Las de niveles sincrónicos se caracterizan porque los valores de la secuencia permanecen constantes entre pulsos del reloj, y sólo cambian con los cantos de subida o bajada del reloj. En secuencias sincrónicas de pulsos, solamente hay valores de la secuencia, durante los pulsos del reloj. Prof. Leopoldo Silva Bijit. 14-11-2015 202 UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA ELO211 Sistemas Digitales Reloj sincrónica nivel Sincrónica pulsos En ambos casos, la secuencia de valores lógicos es: { 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0 ... } 12.3. Flip-flop JK Es una máquina secuencial de Moore. En la cual, la salida es igual al estado. Se suelen usar los siguientes símbolos lógicos: J CP K S QQ __ QQ R J CP K S R R J CP K QQ __ QQ S Q _ QQ datos J K Q salida reloj Las señales S y R son set y reset asincrónicos, y se verán después. El diagrama de la izquierda ilustra un flip-flop que opera con cantos de bajada del reloj, la segunda con cantos de subida. La figura de la derecha, utiliza un pequeño triángulo para mostrar que el flip-flop está sincronizado(o es disparado) por cantos. Si es disparado por cantos de bajada, se dibuja un pequeño círculo en la base del triángulo. Cuando es sincronizado por un pulso(master slave) en lugar del triángulo se dibuja un pulso, como se muestra a continuación: datos J K Q salida reloj Se suele proveer dos salidas complementarias. Esto implica que internamente se almacenan dos bits; como se verá más adelante, esto requiere tener dos variables de estado internas. Desde un punto de vista externo, sólo basta especificar las secuencias de las entradas para tener transiciones del estado Q= 0, al estado Q = 1 y viceversa. Cuando se pasa de Q = 0 a Q = 1, se dice que se setea el flip-flop; en caso contrario, se resetea. Prof. Leopoldo Silva Bijit. 14-11-2015 203 UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA ELO211 Sistemas Digitales 12.3.1. Diagrama de estados El JK queda definido, en forma rigurosa, por un diagrama de estados: 1 0 0 JK = 11, 10 00, 01 Q=1 set Q=0 reset 01, 11 00, 10 1 El par de entradas asociada a cada transición puede anotarse empleando notación de bit superfluo ; es decir, su ocurrencia indica que esa posición puede ser 0 ó 1. Ejemplo de esto es el par: {01, 11} que se puede anotar: 1. Existen diferentes formas alternativas de representar la información anterior. Cada una aporta la misma información desde un punto de vista diferente. 12.3.2. Tabla de transiciones Q(k) JK 00 01 11 10 0 0 0 1 1 1 1 0 0 1 Q(k+1) La primera columna, con J = K = 0, indica que no hay cambio de estado. La segunda, muestra cuando el próximo estado es reset. La tercera, muestra un complemento del estado presente. La cuarta, indica condiciones para quedar en estado set. Prof. Leopoldo Silva Bijit. 14-11-2015 204 UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA ELO211 Sistemas Digitales 12.3.3. Ecuación característica Leyendo la tabla de transiciones, como mapa de Karnaugh, , se obtiene: Q(k + 1) = J(k) Q(k) + K(k) Q(k) que describe el próximo estado, mediante una expresión booleana del estado presente y las entradas. 12.3.4. Tabla característica Para analizar circuitos que empleen flip-flop, se suele emplear la siguiente tabla: J K Q(k+1) 0 0 Q(k) 0 1 0 1 0 1 1 1 _ Q(k) Puede obtenerse mediante la ecuación característica, dándole valores a las entradas. O bien, a partir de la interpretación de las columnas de la tabla de transiciones. Describe cómo deben ser las entradas para tener un determinado estado en la salida. 12.3.5. Tabla de excitaciones Describe las transiciones de la salida, en términos de las entradas. Suele usarse para diseñar circuitos que empleen flip-flops. Q(k) _ > Q(k+1) 0 0 1 1 0 1 0 1 J K 0 1 1 0 La cual puede obtenerse fácilmente, observando las transiciones en el diagrama de estados. Prof. Leopoldo Silva Bijit. 14-11-2015 205 UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA ELO211 Sistemas Digitales 12.3.6. Lenguaje procedural Empleando lenguajes de programación, que describen secuencias de acciones, puede describirse aproximadamente, la conducta del flip-flop. La dificultad con los lenguajes de programación, es que describen los cambios en secuencia, uno por vez. Pero en el flip-flop, las acciones pueden ocurrir en paralelo, o concurrentemente en el tiempo. Es decir, las entradas pueden cambiar simultáneamente. Se introduce la función espera cs( ), de un argumento, que describe la espera de un canto de subida de la entrada que se especifique. Esta función debe esperar a que la entrada(su argumento) cambie de 0 a 1, entre ticks del reloj. flip-flop JK: repeat if ( Q(k) = = 0 ) then espera cs( J); else espera cs(K); Q(k+1) = Q (k); forever. 12.3.7. Lenguaje declarativo Para descripciones de hardware, suelen emplearse lenguajes declarativos, que especifican las condiciones para que se produzcan determinadas acciones. Las declaraciones se anotan: Condición | acción Se asume que todas las condiciones se evalúan permanente y simultáneamente, y que se realizan todas las acciones cuyas condiciones sean verdaderas. flip-flop JK: Q J Q = 1 QK Q = 0 La primera sentencia se interpreta: Cuando Q' y J son unos, en el primer canto de subida del reloj se efectúa Q = 1. La segunda sentencia se interpreta: Cuando Q y K son unos, con el canto de subida del reloj se efectúa el cambio de estado a Q = 0. 12.3.8. Lenguaje Abel Prof. Leopoldo Silva Bijit. 14-11-2015 206 UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA ELO211 Sistemas Digitales 12.4 Flip-flop T En forma similar a la desarrollada para el flip-flop JK, se resume la información para un T. T=1 Q > T Q Q =1 set Q =0 reset 0 0 CP 1 T Q(k) 0 1 0 0 1 1 1 0 Q(k + 1) = T(k)Q(k) + T(k)Q(k) = T(k) Q(k) Q(k+1) Q(k) _ > Q(k+1) T T Q(k+1) 0 Q(k) 0 0 0 1 0 1 1 Q(k) 1 1 0 1 1 0 flip-flop T: repeat espera cs(T); Q(k+1) = Q (k); forever. Q T Q = 1 QT Q = 0 La T proviene de Toggle, que describe un tipo de interruptores de presión de una posición(se oprime y queda en un estado; se vuelve a oprimir y cambia de estado). Diseño en base a JK. A partir de un flip-flop JK puede obtenerse un T. Según se ilustra en el diagrama a continuación. T J K Q salida reloj Prof. Leopoldo Silva Bijit. 14-11-2015 207 UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA ELO211 Sistemas Digitales Un uso típico de un flip-flop T es para dividir por dos la frecuencia de entrada. Ya que en cada canto activo cambia el estado del flip-flop, permaneciendo la salida constante entre dos cantos activos. Lo cual se ilustra a continuación para flip-flop T, disparado por canto de subida. clk T 1 T=1 salida Q reloj Q 12.5. Flip-flop D 1 dato D Q reloj 1 Q =1 set Q =0 reset salida 0 0 D Q(k) 0 1 0 0 1 1 0 1 Ecuación característica Q(k + 1) = D(k) Q(k+1) D Q(k) _ > Q(k+1) Q(k+1) D 0 0 0 0 0 1 0 1 1 1 1 1 0 1 0 1 flip-flop D: repeat if ( Q(k) = = 0 ) then espera cs(D); else espera cb(D); Q(k+1)= Q (k); forever. Declaración no procedural: QD Q = 1 QDQ=0 Prof. Leopoldo Silva Bijit. 14-11-2015 208 UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA ELO211 Sistemas Digitales La D proviene de Datos. El siguiente esquema ilustra el diseño de un flip-flop D en base a JK. J Q K Q' D Clk 12.6 Requerimientos Temporales. La descripción del funcionamiento lógico de un flip-flop real especifica los requerimientos temporales que deben cumplirse para que las funciones del flip-flop operen correctamente. Básicamente son tres: los tiempos de set-up y hold(Tsu y Th); duración mínima del reloj(Tw); tiempos de propagación desde el canto del reloj hasta que se tiene salida estable: Tplh describe cuanto tarda la salida en pasar de low(nivel bajo) a un nivel alto(high); y Tphl es el tiempo de propagación de high a low. Estos tiempos se describen como valores máximos(peor caso) y típicos. Debe notarse que Tplh y Tphl suelen ser distintos. La siguiente gráfica muestra dichos tiempos para un flip-flop disparado por cantos de subida(positive edge triggered); la señal de entrada D, cumple los requerimientos de Tsu y Th. D CLK Tsu 20ns Tsu 20ns Th 5ns Th 5ns Tw 25ns Q Tplh Tphl 25ns máx. 40ns máx. 13ns típico 25ns típico Todos los tiempos se miden desde el canto activo del reloj(el de subida, en el ejemplo). Las siguientes formas de ondas ilustran relaciones temporales para flip-flops disparados por cantos de subida y de bajada. En flip-flops disparados por canto de subida(positive edge triggered) las entradas se muestrean en el canto de subida(en realidad requiere valor estable tsu segundos antes) y las salidas(Qp y Q’p) cambian Prof. Leopoldo Silva Bijit. 14-11-2015 209 UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA ELO211 Sistemas Digitales un tiempo de propagación después, relativa al canto de subida. Debe notarse que las salidas complementarias(Q y Q') no cambian instantáneamente; esto se justificará después. En flip-flops disparados por canto de bajada, se muestrean las entradas en el canto de bajada, y las salidas(Qn Q’n) cambian después del canto de bajada. D Clk Qp Q'p Qn Q'n En la actualidad el flip-flop más importante es el de tipo D, suele emplearse en registros para almacenar datos y es el flip-flop que se emplea en dispositivos lógicos programables(en su forma de disparo por cantos). Debido a que se puede implementar con un número reducido de interruptores CMOS, suele emplearse en circuitos integrados que requieran flip-flops. El flip-flop JK fue sumamente empleado en los inicios debido a que tiene conducta determinada cuando ambas entradas son unos(a diferencia del flip-flop SR). Es el flip-flop típico de la familia TTL y de circuitos integrados en pequeña escala(SSI), permite construir fácilmente flip-flops de tipo D y T. En la actualidad prácticamente no se usa. No está presente en las configuraciones internas de los dispositivos lógicos programables, pero en estos casos se lo puede construir en base a los flip-flops de tipo D, que éstos poseen. El flip-flop de tipo T, prácticamente no está disponible como elemento; sin embargo puede ser fácilmente implementado en base a los existentes(tipo D o JK). En los flip-flops son necesarias entradas que permitan dejar al flip-flop en un estado determinado. Clear deja la salida Q en cero; y preset deja la salida alta. Estas señales suelen ser de naturaleza asincrónica(como se verá más adelante); es decir, que se permite a estas entradas cambiar en cualquier instante, respecto del reloj. Como se verá estas señales permiten dejar a un sistema secuencial en un estado determinado. 12.7. Metodologías de temporización. Se denomina así a las reglas para interconectar compuertas y flip-flops de tal forma de garantizar que el sistema completo funcionará correctamente. Las metodologías dependerán del tipo de elemento que se emplee para implementar la memoria, ya sea flip-flops disparados por cantos(que suelen emplearse Prof. Leopoldo Silva Bijit. 14-11-2015 210 UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA ELO211 Sistemas Digitales en dispositivos lógicos programables) o bien latch transparentes que suelen emplearse en la confección de registros en procesadores. Las reglas básicas para la correcta temporización son: proporcionar entradas que cumplan los tiempos de set-up y hold relativas al reloj, y que las salidas no cambien su estado más de una vez por evento sincronizante. La gráfica siguiente ilustra las formas de ondas de las salidas de un flip-flop D, disparado por canto de subida y un latch transparente de tipo D. Note que en el latch la salida cambia entre pulsos del reloj, copiando los cambios de la entrada hacia la salida apenas ocurren cambios de ésta, estando alto el reloj. D Clk Qcanto D Q Qlatch E QClk En el latch transparente(o sensible al nivel), estando el reloj en alto, la salida cambia de acuerdo al valor de la entrada(después del tiempo de propagación); el canto de bajada del reloj del latch captura el valor que tenga la entrada en ese tiempo(el latch, también requiere cumplir especificaciones de setup y hold, alrededor del canto de bajada del reloj). También existe un tiempo de propagación desde un cambio de la entrada o del canto de subida reloj(el evento que ocurra más tarde). La estructura interna de los flip-flops disparados por cantos y el latch se verá más adelante. D CP modo captura Ql modo transparente Prof. Leopoldo Silva Bijit. 14-11-2015 211 UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA ELO211 Sistemas Digitales Estudiemos un ejemplo de temporización. La figura siguiente ilustra los requerimientos de las entradas de dos flip-flops D, disparados por cantos de subida. dato D Q D Q clock entrada estable dato clock Consideremos ahora la conexión cascada que se ilustra en la gráfica a continuación. La salida del primer flip-flop se conecta a la entrada del segundo. dato D0 Q0 Q1 D1 clock D0 Tsu 4ns Tsu 4ns Q0=D1 Tp 3ns Tp 3ns Q1 CLK Th 2ns Th 2ns Si se cumplen las metodologías de temporización se garantiza la correcta operación de la conexión cascada. Para ello se requiere que los retardos de propagación sean mayores que el tiempo de hold, y que el ancho del reloj, en bajo, sea mayor que el tiempo de set-up. O sea tsu es el tiempo mínimo Prof. Leopoldo Silva Bijit. 14-11-2015 212 UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA ELO211 Sistemas Digitales durante el cual tanto el reloj como la entrada deben permanecer fijos, antes de un canto del reloj. Tampoco pueden cambiarse las entradas y el reloj durante el tiempo de hold. De este modo la siguiente etapa capturará el valor actual antes de que cambie de valor. Es decir se asume como funcionamiento correcto, que todos los flip-flops determinen su próximo estado en el mismo instante. La conexión anterior asume que todos los flip-flops tienen el mismo reloj. Sin embargo, en sistemas que funcionan con relojes de altas frecuencias el tiempo de retardo de propagación a través del sistema digital es comparable al que requiere el reloj para llegar a los diferentes flip-flops. La diferencia entre cantos de reloj, en diferentes flip-flops se denomina desfasamiento( o desplazamiento, de skew en inglés). Previo al primer canto de subida se está en estado Q0 = 0 y Q1 = 0. Después el estado será: Q0 = 1 y Q1 = 0, previo al segundo canto de subida del reloj. D0 Q0 dato Q1 D1 clk0 clk1 reloj D0 Tsu 4ns Ts 4ns Q0=D1 Tp 3ns Tp 3ns Q1 Clk0 Clk1 Th 2ns Tsu 4ns Tp 3ns Th 2ns Tsu 4ns Th 2ns Tp 3ns Th 2ns Se advierte que D1, no cumple la especificación de permanecer estable(Tsu antes y Th después del canto de subida de clk1). Debido a esto la salida Q1 será indeterminada. Asumiendo que conmuta y Prof. Leopoldo Silva Bijit. 14-11-2015 213 UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA ELO211 Sistemas Digitales que se muestrea el valor de la entrada en el canto de subida, se muestra la forma de Q1, Tp segundos después del canto de subida de clk1. Más adelante podrá determinarse que la conexión cascada de los flip-flops se comporta como un registro de desplazamiento. Debido al desfase podría dejar de ser un registro de desplazamiento. Previo al primer canto de subida de clk0, se está en estado Q0 = 0 y Q1 = 0. Después el estado será: Q0 = 1 y Q1 = 1, previo al segundo canto de subida del reloj clk0. Lo cual no da una conducta predecible, ésta depende del tiempo de desfasamiento entre los diferentes relojes aplicados a los flipflops. Más adelante se desarrollará más sobre este problema y cómo garantizar el funcionamiento de los sistemas digitales sincrónicos, considerando los tiempos de propagación y de desfase entre relojes. El análisis anterior nos lleva a uno más general y es de cómo tratar entradas asincrónicas a sistemas sincrónicos. Es decir las entradas pueden cambiar en cualquier instante y puede que no satisfagan los requerimientos de set-up y hold. Esta dificultad no puede evitarse en algunas situaciones, como por ejemplo, en caso de una entrada generada por un operador( y también cuando se emplean memorias en forma asincrónica). Debido a lo anterior es preferible diseñar con entradas sincrónicas(si las entradas son salidas de otros flip-flops, esto se produce naturalmente) y también muestra que son preferibles los circuitos generados por modelos de Moore. Cuando las entradas a un flip-flop cambian muy cercanas al canto del reloj, éste puede tener inestabilidades internas que no permiten asegurar que se cumplan las ecuaciones del flip-flop. En estos casos puede reducirse la probabilidad de falla bajando la frecuencia del reloj, o empleando compuertas más rápidas, o empleando un sincronizador. El sincronizador simplemente es un flip-flop, cuya salida cambia sólo en los cantos del reloj. El empleo de sincronizadores garantiza que el resto del sistema tendrá entradas sincrónicas, pero no se puede garantizar que el sincronizador no tendrá fallas. No es recomendable conectar una entrada asincrónica a dos entradas de flip-flops, sin previamente haber sincronizado la entrada, ya que uno de los flip-flops podría no capturar la entrada, por violar ésta los requerimientos de set-up o hold. El siguiente diagrama ilustra que Q1 no cambia de igual forma que Q0. Entrada Q0 Q1 CLK Prof. Leopoldo Silva Bijit. 14-11-2015 214