Fonaments de Computadors CIRCUITOS SECUENCIALES SÍNCRONOS 1. INTRODUCCIÓN Los circuitos combinacionales nos p
Views 75 Downloads 57 File size 484KB
Fonaments de Computadors
CIRCUITOS SECUENCIALES SÍNCRONOS
1. INTRODUCCIÓN Los circuitos combinacionales nos permiten generan señales como respuesta a un conjunto de señales de entrada determinadas, pero lo que no nos permiten hacer es definir secuencias de señales, esto es, responder a necesidades del tipo… “quiero que cuando se detecte un valor determinado en las entradas del circuito se inicie una serie de acciones que (1) enciendan una luz verde, (2) a continuación abran la puerta de acceso al garaje, (3) y luego, si pasados 2 min no he recibido una cierta señal de entrada, se active una alarma sonora”. Los circuitos secuenciales nos van a permitir generar secuencias de señales de salida (de ahí el nombre de “secuenciales”) que producirán las secuencias de acciones deseadas. En el mundo de los computadores estos circuitos son fundamentales: No es posible construir un computador, por muy sencillo que sea, que no contenga circuitos secuenciales. Un ejemplo: El procesador de un computador repite constantemente un ciclo muy simple: (1) Va a buscar la siguiente instrucción a ejecutar (a esto se le llama “ciclo de búsqueda” o “ciclo de fetch”), (2) la ejecuta y (3) deja preparadas las cosas para ir a buscar la instrucción siguiente. ¿Cómo va a buscar el procesador la instrucción siguiente?... las instrucciones se guardan en memoria, de manera que para “buscar” la instrucción el procesador debe
1) generar una señal de lectura de memoria (se supone que la dirección en la que se guarda la instrucción siguiente ya se ha volcado en el bus de dirección de la memoria en el sub‐ciclo‐3 de la instrucción anterior), 2) abrir el paso para que dicha instrucción llegue a su destino (típicamente el llamado “registro de instrucción”). Esto implica generar una o más señales que determinen el camino que va seguir la instrucción a través de los buses del procesador. Y … 3) generar una señal que cargue la instrucción en el registro de instrucción. Lo importante de este ejemplo es que muestra cómo la acción “obtener la siguiente instrucción de memoria” consiste, ni más ni menos, en generar una secuencia de señales de control. Y eso es precisamente lo que hacen los sistemas secuenciales. Para ser capaces de diseñar circuitos secuenciales y trabajar con ellos hemos de conocer primero los elementos básicos que los conforman. Igual que las puertas lógicas son los bloques básicos a partir de los cuales se construyen los circuitos combinacionales, los circuitos secuenciales se construyen a partir de los llamados biestables o elementos de memoria. Para estudiar los sistemas digitales vamos a seguir los siguientes pasos: 1) Estudiaremos los biestables de uso más común: los latches y los flip‐flops, 2) Veremos cómo se puede representar el comportamiento de un sistema secuencial utilizando las llamadas “cartas ASM”, 3) Aprenderemos cómo diseñar cualquier circuito secuencial a partir de biestables, 4) Estudiaremos los llamados módulos secuenciales (registros y contadores), que juegan un rol importantísimo en los computadores y, finalmente, 5) Veremos los diferentes tipos de memorias que se utilizan en un computador. Los puntos 2, 3 y 4 los estudiaremos tomando como base un ejemplo: Diseñaremos el sistema de control de un semáforo de carretera, en el que los peatones, poco frecuentes, deben pulsar un botón para que el semáforo les de paso. (Si, ya lo sé, no es un ejemplo muy “apasionante”, pero es un ejemplo sencillo y fácil de entender…) © Copyright
página 1 de 10
Fonaments de Computadors
2. BIESTABLES Un biestable es un circuito electrónico que tiene dos estados estables a los que llamaremos “0” y “1”. Dicho de otra manera, un biestable es un dispositivo capaz de almacenar un bit de información. Esta función de almacenamiento de información se consigue conectando elementos lógicos muy simples formando un bucle. En la figura 1 podemos ver la manera más sencilla de obtener esta función de memoria: Dos inversores en los que la salida de cada uno de ellos está conectada a la entrada del otro. Este dispositivo tan sencillo recibe el nombre de punto de memoria. Si la entrada del inversor 1 está conectada a tierra (entrada 0), la salida de dicho inversor se pone a Vdd (salida 1). Como la salida del inversor 1 es a su vez la entrada al inversor 2, éste último recibe un 1 en su entrada y genera un 0 a la salida, de modo que el conjunto de los dos inversores permanece indefinidamente en esta configuración. Si, por el contrario, la entrada al inversor 1 hubiese sido un 1, la salida de éste habría sido 0 y la salida del inversor 2 sería 1. Como puede verse, el conjunto de los dos inversores tiene dos estados estables que, por convenio, llamaremos respectivamente 1 y 0. 0
1
1
1
2
0
(a) (b) (c)
Figura 1: (a) Punto de memoria, (b) estado “0”, (c) estado “1” El problema del punto de memoria tal como lo muestra la figura 1 es que no sabemos cómo modificar a voluntad el estado del circuito, esto es, cómo forzar un 0 o un 1 a la entrada del inversor 1. La forma más sencilla de hacerlo consiste en añadir dos puertas de paso1 que rompan el bucle cuando queramos introducir un valor 0 o 1 a la entrada del inversor 1; algo así como el circuito ampliado que muestra la figura 2.
D
1
b1
b2
Q 2
Load
Q Figura 2: Biestable de tipo D
Cuando la señal “Load” está a 0 la puerta de paso b1 está en alta impedancia y la puerta de paso b2 deja pasar la señal, con lo que los dos inversores 1 y 2 los tenemos conectados en bucle como en la figura 1.a. Por el contrario, cuando la señal “Load” es 1 la puerta de paso b2 está en alta impedancia, rompiendo el bucle, mientras que la puerta de paso b1 deja pasar la señal que introduzcamos por D a la entrada del inversor 1. Si ponernos D=0 y a continuación cerramos el bucle poniendo la señal Load a 0, tenemos la misma configuración que en la figura 1.b (es decir, tenemos el biestable en el estado “0”). Si ponemos D=1 y Load=0, tenemos el biestable en el estado “1”.
1
A efectos de estos apuntes, una “puerta de paso” es lo mismo que un “buffer tri-state”. Estrictamente hablando se trata de dispositivos diferentes puesto que el buffer tri-state regenera la señal de salida, mientras que la puerta de paso no es capaz de hacerlo.
© Copyright
página 2 de 10
Fonaments de Computadors
Se ha aprovechado la figura 2 para dar nombre a la(s) salida(s) del biestable: Por convenio la salida Q nos da el estado del biestable (si el biestable está en el estado 0, Q toma el valor 0; si el biestable está en el estado 1, Q toma el valor 1). El hecho de que la salida del inversor 2 sea el valor negado de Q se aprovecha para obtener la salida Q , muy útil como veremos cuando diseñemos circuitos con estos elementos. En estos momentos ya estamos en condiciones de conocer al biestable más sencillo del mundo: El biestable de tipo D, que se representa así en la práctica:
D
Q
Load
Q
Figura 3: Representación esquemática del biestable D Para describir el comportamiento del biestable vamos a introducir el concepto de “estado siguiente”: Si el biestable está en el estado 0 y introducimos un 1 por D (esto es, ponernos D=1 y Load=1), el biestable pasa al estado 1. Si el biestable está en el estado 0 y introducimos un 0 por D (D=0 y Load=1), el biestable se queda en el estado 0. En resumen, cuando ponemos Load=1, el valor que introducimos por la entrada D se convierte en el nuevo estado del biestable. Al estado siguiente se le conoce como QΔ. El funcionamiento del biestable D cuando Load es 1 se puede resumir en una tabla de verdad como la que muestra la figura 4 y, tal como hacíamos con los circuitos combinacionales, podemos obtener la función “estado siguiente” (QΔ) a partir del estado actual (Q) y de la entrada D. La función “estado siguiente” recibe el nombre de “ecuación característica del biestable. D Q QΔ 0 0 0 ó í : QΔ = D 0 1 0 1 0 1 1 1 1 Figura 4: Tabla de verdad del biestable D (izquierda) y ecuación característica (derecha) La ecuación característica nos dice cual será el estado siguiente del biestable en función del estado actual (Q) y de la entrada (D) cuando la señal Load es 1. A veces nos será útil saber qué valor hemos de poner en le entrada D para que el biestable pase del estado actual Q al estado siguiente QΔ deseado. Esta información nos la da la ecuación de excitación del biestable. Es el caso del biestable D la ecuación es trivial: ó
ó D = QΔ
…. ¿Existen otros tipos de biestables? Siiii, montones de ellos. Vamos a ver sólo dos ejemplos:
Biestable tipo T Se trata de un biestable bastante parecido al D, con una entrada (que ahora se llama T) y dos salidas que representan el estado y el estado negado como en el caso anterior, pero que funciona de una forma diferente: Cuando Load=1, si T es 0 se mantiene el estado actual y si T es 1 el estado cambia (si era 0 pasa a 1 y si era 1 pasa a 0). La figura 5 muestra su representación, su tabla de verdad y sus ecuaciones característica y de excitación. © Copyright
página 3 de 10
Fonaments de Computadors
T
Q
Load
Q
T 0 0 1 1
Q Δ 0 1 1 0
Q 0 1 0 1
ó
í
ó
∆
: ó :
. .
⊕Q
.
∆
.
∆
∆
⊕
Figura 5: Biestable T
Biestable tipo JK El biestable JK tiene dos entradas (J y K) y dos salidas que representan el estado y el estado negado. Su funcionamiento es el siguiente: Cuando Load=1,
si J=0 y K=0 se mantiene el estado actual, si J=1 y K=1 el estado cambia (si era 0 pasa a 1 y si era 1 pasa a 0) si J=1 y K=0 el biestable pasa al estado 1, independientemente del estado actual si J=0 y K=1 el biestable pasa al estado 0, independientemente del estado actual
Como en el caso anterior, en la figura 6 podéis ver su representación, su tabla de verdad y sus ecuaciones característica y de excitación.
Q
J K Load
Q
J 0 0 0 0 1 1 1 1
K 0 0 1 1 0 0 1 1
Q 0 1 0 1 0 1 0 1
Q Δ 0 1 0 0 1 1 1 0
ó
í
:
∆
.
.
ó : .
∆
.
∆
Figura 6: Biestable JK
© Copyright
página 4 de 10
Fonaments de Computadors
3. CONCEPTO DE SINCRONIZACIÓN. SEÑAL DE RELOJ. Los computadores contienen miles de elementos de memoria organizados en estructuras que veremos más adelante como registros, contadores y memorias que deben funcionar al unísono. Esto significa que se desea que todos los biestables cambien de estado en los mismos instantes de tiempo, y que estos “momentos de cambio” estén predefinidos. Para ello se define lo que se llama una “señal de reloj”, que no es sinó una señal digital periódica y cuadrada como la que se muestra en la figura 7: Voltage (valor lógico) 1 0 tiempo
Figura 7.a: Señal de reloj
En la figura 7.b podemos ver algunos de los términos más utilizados cuando se habla de una señal de reloj:
Flanco de subida
Ciclo
Pulsos positivos
Periodo(T)
Flanco de bajada
Pulsos negativos
Frecuencia= 1/T
Figura 7.b: Señal de reloj
Ciclo: Segmento mínimo de la señal que se repite indefinidamente. Flanco de subida: Parte de la señal de reloj en la que se produce la transición de 0 a 1. Flanco de bajada: Parte de la señal de reloj en la que se produce la transición de 1 a 0. Periodo: Duración de un ciclo. Se mide en segundos, microsegundos (μseg), nanosegundos (nseg) o incluso famtosegundos (fseg)2 Frecuencia: Inversa del periodo. Representa el número de ciclos que se completan en 1 segundo y se mide en Hertzios (Hz), Kilohertzios (KHz), Megahertzios (MHz), Gigahertzios (GHz) o Terahertzios (THz)3 Pulso positivo: parte del ciclo en que la señal se mantiene a 1. Pulso negativo: parte del ciclo en que la señal se mantiene a 0. Es habitual nombrar a la señal de reloj como “CK” o “Clk”, de acuerdo con la terminología anglosajona de “Clock”.
2 3
1μseg=10‐6 seg; 1nseg=10‐9 seg; 1fseg=10‐12 seg 1KHz=103Hz; 1MHz=106Hz; 1GHz=109Hz; 1THz=1012Hz
© Copyright
página 5 de 10
Fonaments de Computadors
4. LATCHES Y FLIP FLOPS Hemos visto cómo secomportan los biestables desde un punto de vista lógico; es decir, qué estado toman dependiendo del estado en el que están y del valor de las entradas. Sin embargo no hemos dicho nada sobre en qué momento cambia de estado el biestable. Dependiendo de cuando tiene lugar el cambio de estado, los biestables se clasifican en dos tipos: latches y flip flops. Un latch es un biestable que puede cambiar de estado (dependiendo de los valores de entrada), durante todo el tiempo en que la señal de reloj que lo gobierna tiene el valor 1. Se dice, por esta razón, que los latches son biestables “controlados por nivel” (sólo cuando el nivel de la señal de CK es 1 pueden cambiar de estado). Es algo así como si los latches sólo fuesen capaces de “ver” el valor que toman sus entradas durante todo el tiempo en que CK es 1. Un flip flop es un biestable que sólo puede cambiar de estado (dependiendo de los valores de entrada), durante los flancos de subida de la señal de reloj. Se dice que son biestables “controlados por flanco” y, análogamente al caso anterior, es algo así como si los flips flops sólo fuesen capaces de ver el valor que toman sus entradas durante las transiciones de 0 a 1 (flancos) de la señal de reloj. Tanto los latches como flips flops pueden ser de tipo D, T, JK, etc.
D Clk
Q Q
FF
LATCH
En la figura 8 podemos ver el distinto comportamiento, a lo largo del tiempo (eje horizontal), de un latch (izquierda) y de un flip flop (derecha) de tipo D. A nivel de esquema los flip flops se distinguen de los latches por un pequeño triangulito que aparece en la entrada de reloj y que se puede ver en la misma figura 8.
D Clk
Q Q
Figura 8: Diagrama de tiempo de los comportamientos de un latch y un flip flop (FF) de tipo D Obsérvese como en el caso del latch, durante todo el tiempo en el que Clk está a 1 (zonas sombreadas), el estado (Q) toma el mismo valor que la entrada (D); mientras que en el caso del flip flop D, el estado sólo cambia (tomando el valor de la entrada D) en los flancos de subida de la señal de reloj (líneas verticales en rojo). Los pequeños redondeles marcan el valor de la entrada D que el flip flop “ve” en el flanco de subida, y que define el estado que toma el flip flop. Las tablas de verdad y las ecuaciones características de los latches y de los flip flops son idénticas a las explicadas en el caso de los biestables. Las ecuaciones características contienen información de cuál será el valor que tomará el estado del biestable en función de sus entradas, pero no contienen información alguna sobre en qué instante de tiempo cambiará el valor del estado, por eso son válidas tanto para los latches como para los flip flops. Las gráficas de la figura 8 que visualizan el valor 0 o 1 que toman diversas señales de un circuito o dispositivo a lo largo del tiempo (eje horizontal) reciben el nombre de diagramas de tiempo.
© Copyright
página 6 de 10
Fonaments de Computadors
5. LAS SEÑALES ASÍNCRONAS DE SET Y RESET En la figura 9 vemos un flip flop de tipo D, un flip flop de tipo T y una flip flop de tipo JK. Las entradas D, T, J y K reciben el nombre de “entradas de datos”, y su efecto sobre el estado del flip flop depende de la señal de reloj. Se dice por esta razón que las entradas de datos de los flip flops son entradas síncronas puestos que su efecto viene sincronizado por la señal CK. D
Q
CK
Q
T CK
Q
(a)
J K
Q
Q
CK
Q
(b)
(c)
Figura 9: Flip flops de tipo D (a), T (b) y JK (c) Los flip flops y los latches pueden llevar asociadas otras entradas cuyo efecto sobre el estado del biestable es inmediato e independiente de la señal de reloj. Dichas entras reciben el nombre de entradas asíncronas. Existen dos tipos de entradas asíncronas: Las entradas capaces de poner a 0 el biestable independientemente de los valores de las entradas síncronas y de reloj (entrada de Reset) y las entradas capaces de poner a 1 el estado del biestable con independencia del resto de las entradas (entrada de Set). Las señales de Set y Reset nunca pueden estar activas al mismo tiempo. Todo latch o flip flop puede no tener señales asíncronas, tener cualquiera de las dos, o tener las dos señales de Set y de Reset. En la figura 10 vemos los mismos flip flops de la figura 9 con ambas entradas asíncronas de Set y Reset. La figura 11 muestra un diagrama de tiempos de un flip flop D en el que se han incorporado las señales Set y Reset para ver su comportamiento. Fijémonos que en el segundo flanco de subida de Clk, a pesar de que la entrada D es 1, el estado del flip flop se mantiene a 0 porque la señal de Reset está activa. Set
Set
D
Q
CK
Q Reset
T
Set J K
Q
CK
Q Reset
CK
Q Q Reset
Figura 10: Flip flops de tipo D, T y JK con entradas asíncronas de Set y Reset
Reset Set
Figura 11: Diagrama de tiempos del comportamiento de un flip flop D con entradas de Set y Reset Una última aclaración sobre cuando las señales de Set y de Reset están “activas”: Se dice que una señal “está activa” cuando realiza la función para la que ha sido diseñada …¿significa esto que una señal realiza la función para la que ha sido diseñada cuando toma el valor 1?, ¿o cuando toma el valor 0?. Tomemos como ejemplo las señales de Set y de Reset de los flip flops de la figura 10. Todas ellas realizan © Copyright
página 7 de 10
Fonaments de Computadors
su función cuando toman el valor 1, es decir, cuando Reset=1 el flip flop se pone a 0 (se dice coloquialmente que el flip flop se “resetea”) y cuando Set=1 el flip flop se pone a 1. Los flip flops se pueden diseñar de forma que las señales de Set y Reset se activen a 0. En este caso, cuando Reset=0 el flip se resetea y cuando Set=0 el flip flop se pone a 1. En el esquema del flip flop esto se indica dibujando un pequeño círculo en la entrada correspondiente como muestra la figura 12. En la figura se compara el funcionamiento de dos flips flops, el de la derecha con señales Set y Reset activas a 1, y el de la izquierda, con señales de Set y Reset activas a 0: Set
D
Set
Q
CK
Q
D CK
Q
Reset (a) Si Set=1 → Q=1 Si Reset=1 → Q=0
Q
Reset (b) Si Set=0 → Q=1 Si Reset=0 → Q=0
Figura 12: Flip flop D con Set y Reset activas a 1 (a) o activas a 0 (b) Se pueden tambier diseñar latches que cambien de estado cuando la señal de reloj está a 0 en vez de lo que hemos visto hasta ahora, y flip flops que cambian de estado con el flanco de bajada del reloj en vez de con el flanco de subida. Ambas situaciones se indican de la misma manera en el esquema, añadiendo un pequeño círculo a la entrada de reloj. Set
D CK
Set
Q Q Reset
(a) Latch que cambia de estado cuando CK=0
D CK
Q Q Reset
(b) Flip flop que cambia de estado en el flanco de bajada de CK
Figura 13: Latch y flip con señal de reloj activa a 0 (latch) o en el flanco de bajada (flip flop)
6. MODELO CLÁSICO DE SISTEMA SECUENCIAL SÍNCRONO Ahora que ya conocemos los elementos que forman los circuitos secuenciales deberíamos preguntarnos cómo los vamos a combinar para lograr diseñar sistemas que hagan una función determinada. La idea básica, que iremos detallando y mejorando más adelante, es la siguiente: Vamos a construir sistemas que utilizarán un cierto número de biestables. Cada biestable, en un momento dado, estará en un estado 0 o 1. Llamaremos estado del sistema al “estado” formado por todos los estados de los diferentes biestables que lo forman. Por ejemplo, si nuestro sistema consta de 4 biestables que, en un momento dado, están respectivamente en el estado 0, 1, 1, 0, diremos que el estado del sistema es el 0110 (o incluso, diremos que el estado del sistema es 6). Los biestables cambiarán de estado a cada ciclo de reloj (pulso o flanco según se trate de latches o flip‐flops), de modo que nuestro sistema también cambiará de estado en cada ciclo de reloj. Un sistema (circuito) con n biestables se puede encontrar en como máximo 2n estados diferentes.
© Copyright
página 8 de 10
Fonaments de Computadors
Las entradas a los biestables dependerán de las entradas externas al sistema y de los estados de los biestables. De una manera muy simplificada, podemos representar un sistema secuencial por un conjunto de biestables cuyas entradas provienen de un circuito combinacional que genera una cierta función a partir de las salidas Q de los biestables y de las entradas externas, como muestra la figura 14.
.....
Circuito combinacional
.....
Salidas
Entradas
B1
B2
..... Bn
Figura 14: Modelo de sistema secuencial B1, B2, … Bn representan los biestables4. Formalmente, si llamamos Σ al conjunto de valores posibles de las entradas, Ω al conjunto de valores de salida y Q al conjunto de valores posibles de los estados, el sistema secuencial queda definido por las llamadas funciones de transición y funciones de salida:
Las funciones de transición (δ) definen cuál será el estado siguiente del sistema a partir del estado actual del mismo y de las entradas, es decir: δ: Σ x Q → Q
Las funciones de salida (γ) definen qué valores tomarán las salidas en cada estado del sistema5, es decir: γ: Q → Ω
El objetivo del diseño de un circuito secuencial consiste en descubrir cuáles son los valores que hemos de colocar en las entradas de los biestables para que el sistema cumpla las funciones de transición y de salidas que nosotros deseamos. Esto es lo que vamos a estudiar en el siguiente capítulo.
4
Para mayor simplicidad del esquema se ha dibujado una sola entrada para cada uno de ellos pero, evidentemente, si se tratara de latches o flip‐flops JK tendrían dos entradas cada uno de ellos. 5 Las funciones de salida se pueden definir también como los valores que tomarán las salidas del sistema cuando, estando en un cierto estado le lleguen unas entradas determinadas. En este caso, γ: Q x Σ → Ω Si un sistema se diseña con esta definición de las funciones de salida (salidas dependientes del estado y de las entradas) se dice que el sistema secuencial es una máquina de Mealy. Si, por el contrario, las funciones de salida se definen tan como aparecen en el texto (salidas dependientes únicamente del estado del sistema), se dice que en sistema secuencial en una máquina de Moore. Cualquier problema susceptible de ser resuelto por un sistema secuencial admite cualquiera de los dos diseños. © Copyright
página 9 de 10
Fonaments de Computadors
RESUMEN DEL FUNCIONAMIENTO LÓGICO DE LOS PRINCIPALES LATCHES Y FLIP FLOPS Biestable
Ecuación característica
Ecuaciones de excitación
BIBLIOGRAFÍA El texto que habéis leído probablemente no es suficiente para que entendáis todos los conceptos. Es conveniente que completéis vuestros conocimientos consultando alguna de las referencias siguientes. Si seguís teniendo dudas, consultadme (haré lo que pueda para que avancéis en el conocimiento de los sistemas secuenciales síncronos).
Tocci, RJ; Widmer NS. Sistemas Digitales: Principios y Aplicaciones. Pearson Ed 2003 (8ª edición) Explica bastante bien los biestables en el capítulo 5, apartados 5.4, 5.5, 5.7, 5.8, 5.9 y 5.11. El único "inconveniente" es que el autor es un profesor de Méjico, de modo que la nomenclatura no es exactamente la que utilizamos en clase (p.e., llama "disparo por borde" a una transición por flanco...). Está en la biblioteca de Ciència i Tecnologia.
Floyd TL. Fundamentos de Sistemas Digitales. Prentice Hall 1997. Es un clásico, aunque la parte de biestables no es la que mejor se adecúa a la asignatura puesto que le dedica demasiado espacio al diseño de los propios biestables con puertas lógicas. En todo caso, puede consultarse en la biblioteca de Ciència i Tecnologia o, todavía mejor, podéis consultar on‐line un resumen en: http://serdis.dis.ulpgc.es/~itig‐fc1/Teoria/Tema%205/Floyd.pdf
García Zubía, Javier. Problemas resueltos de Electrónica Digital. Thompson 2003. Libro de problemas con sus soluciones. Podéis encontrar problemas sobre biestables y sobe diagramas de tiempo en el capítulo 6. . Está en la biblioteca de Ciència i Tecnologia.
© Copyright
página 10 de 10