METODOLOGÍA DE DISEÑO DE SISTEMAS
SECUENCIALES
M. Mazo, S. E. Palazuelos, L. M. Bergasa Mayo 2002
1.- ASPECTOS GENERALES SOBRE CIRCUITOS SECUENCIALES.
Los circuitos secuenciales se caracterizan porque las variables de salida, en un determinado instante, dependen de las variables de entrada en ese mismo instante y de la historia del circuito (los estados anteriores por los que haya pasado). Son, por tanto, sistemas capaces de memorizar cierta información de lo sucedido con anterioridad a un determinado momento (historia pasada por el circuito), y utilizar esta información conjuntamente con una combinación lógica de sus entradas de datos para determinar el futuro estado del sistema. Muchos de los sistemas digitales prácticos se realizan siguiendo la filosofía de los circuitos secuenciales (circuitos de control, sistemas de alarma y seguridad, relojes, etc).
La estructura general de un circuito secuencial responde al diagrama de bloques de la figura 1 (modelo de Huffman). Como se puede observar, incluye un circuito combinacional y una memoria (flip-flops por ejemplo). Existen “u” entradas físicas cada una de las cuales la identificaremos por la letra “e” (e0, e1, ... eu-1), “v” salidas, que identificaremos por la letra “s” (s0, s1, ... sv-1), y “p” elementos de memoria que identificaremos por la letra M (M0, M1, ... MP-1). Cada elemento “i” de memoria tiene como entrada una variable que vamos a denominar por Qi(t+1) y como salida otra que llamaremos Qi(t) . Además existe una señal auxiliar que se denomina señal de reloj, CLK, que juega un papel fundamental en los sistemas secuenciales síncronos. Esta última señal no existe en los sistemas secuenciales asíncronos.
Como se puede observar en la figura 1 las entradas al bloque circuito combinacional están formadas por dos grupos: uno de entradas de datos (e0, e1, ... eu-1) y otro de las salidas de la memoria [Q0 (t), ... QP-1(t)]. Las salidas del circuito combinacional, parte constituyen las salidas de datos (s0, s1, ... sv-1) y parte las entradas de los elementos de memoria [Q0 (t+1), ... QP-1(t+1)], si bien en ciertos casos algunas de estas variables pueden ser comunes. El hecho de que parte de las salidas del circuito combinacional se introduzcan de nuevo a su entrada, previo paso por la memoria, se conoce como realimentación.
1.1.- Tipos de circuitos secuenciales.
Los sistemas secuenciales se pueden clasificar en dos grandes bloques: síncronos y asíncronos. Esta clasificación se hace atendiendo a los tipos de elementos de memoria (Mi) utilizados. La diferencia entre los sistemas secuenciales síncronos y asíncronos está en que en los primeros los cambios de estado son controlados por una señal de referencia común (señal de reloj) y los segundos no.
En un circuito secuencial asíncrono ante un cambio en las señales de entrada de datos, las salidas alcanzarán sus niveles definitivos, transcurrido un tiempo que será función de los tiempos de propagación del circuito combinacional y de los elementos de memoria (en realidad las salidas de datos -si- se estabilizarán cuando se estabilicen las salidas de los elementos de memoria, Qi(t)). Tiempos estos que pueden variar entre un valor mínimo y un máximo, y que por tanto introducen
Figura 1.- Estructura general de un circuito secuencial
metaestables).
Según esto, en los circuitos secuenciales asíncronos después de producirse un cambio en las entradas hay que esperar un tiempo hasta que se estabilicen los valores de las salidas y sólo después de que se alcance esta estabilización se podrá realizar otro cambio en sus entradas, ya que en caso contrario no se verán reflejados en las salidas estos cambios. Evidentemente, el tiempo mínimo entre dos cambios consecutivos en las entradas de datos es función de los tiempos de propagación del circuito combinacional y elementos de memoria.
El gran inconveniente de los circuitos asíncronos es que la incertidumbre de los tiempos de propagación se traducen en incertidumbres en el cambio de las señales de salida.
Los circuitos síncronos lo que hacen es eliminar esta incertidumbre utilizando una señal de sincronismo o señal de reloj. La señal de reloj lo que hace es permitir que los cambios en las entradas y en los estados internos tengan efecto sobre el resto del sistema sólo en instantes discretos de tiempo; instantes a los que denominaremos por t, t+1, t+2, .... Estos instantes discretos suelen coincidir con los flancos de subida o bajada de la señal de reloj. Así, si nos fijamos en el circuito de la figura 1, la salida que adopten los elementos “Mi” de memoria, después de un flanco de reloj (CLK), será función únicamente de los valores que tenían sus entradas en el instante anterior al flanco de CLK.
Finalmente indicar que si bien parece que los circuitos síncronos presentan ventajas frente a los asíncronos, no siempre es así. De hecho al realizar el diseño de un circuito VLSI (Very Large Scale Integration), es necesario establecer una comparación rigurosa entre las alternativas síncrona y asíncrona, a fin de valorar las limitaciones y restricciones de ambos modos de
operación . Actualmente existe un auge e interés por el diseño de circuitos VLSI asíncronos o autotemporizados, ya que el aumento de velocidad de operación y la complejidad de los circuitos digitales conllevan grandes problemas para conseguir que las señales de reloj que se propaguen por caminos diferentes tengan idénticos tiempos de propagación. Esto hace que la distribución de la señal de reloj dentro de los circuitos digitales es una tarea compleja, siendo una de las razones de esta complejidad los retrasos en la señal de reloj (lo que se conoce como clock skew), además de los problemas de interferencias que puede sufrir la señal de reloj (cross-talk). Nosotros aquí no vamos a entrar en el estudio de todos estos detalles porque están fuera de los objetivos de este libro.
2.- ASPECTOS BÁSICOS SOBRE CIRCUITOS SECUENCIALES SÍNCRONOS En este capítulo se van a presentar los aspectos más importantes que intervienen en el diseño de sistemas secuenciales síncronos. Como ya se ha comentado, muchos de los sistemas digitales prácticos responden a la filosofía de funcionamiento de los sistemas síncronos, por lo tanto la evolución de las diferentes variables, que responden a un determinado diagrama de flujo, está sincronizada con una señal de reloj.
Para facilitar la compresión de los diferentes conceptos que intervienen en el diseño de sistemas secuenciales síncronos se va a comenzar por el análisis de algunos de estos sistemas.
Posteriormente se tratarán los aspectos relacionados con el diseño (que es el más importante), centrándonos en dos configuraciones básicas: Autómatas deterministas de Mealy y de Moore (también denominados como máquinas de Mealy y de Moore).
Si bien la palabra “autómata” puede tener diferentes significados (es frecuente relacionar la palabra autómata con las máquinas capaces de imitar funciones de movimientos de los seres vivos, equipos electrónicos de control industrial, etc), en nuestro caso se utiliza para definir sistemas electrónicos capaces de tratar información. Así, un autómata puede ser un dispositivo con unos terminales de entrada y salida de datos (ver figura 1) y una señal de reloj (CLK). El autómata transforma los datos de entrada en otros datos de salida y todo ello sincronizado con la señal CLK. En este contexto, ejemplos de autómatas sencillos son: contadores digitales, sumadores, registros, unidades aritmético-lógicas, unidades de control, etc. Un ejemplo de autómata más complejo sería un ordenador. El autómata recibe los datos de entrada uno detrás de otro, distribuidos en el tiempo (esto es, secuencialmente). Como tal sistema secuencial, los datos de salida del autómata, en cada instante serán función de los datos de entrada en ese mismo instante y de las secuencias de datos previas (historia pasada por el autómata). Esto significa que ante una misma entrada la salida del autómata puede ser diferente dependiendo de la historia. Finalmente, indicar que la realización física de sistemas secuenciales síncronos (autómatas) puede llevarse a cabo utilizando diferentes alternativas tecnológicas, si bien actualmente la más
3.- DEFINICIÓN DE SISTEMAS SECUENCIALES SÍNCRONOS (MÁQUINAS DE ESTADOS FINITOS O AUTÓMATAS DE ESTADOS FINITOS)
Un sistema secuencial síncrono se puede describir como una secuencia de eventos que se producen en instantes discretos de tiempo, impuestos por la señal de reloj (coincidiendo, normalmente con los flancos de subida o bajada de los pulsos de reloj). A estos instantes, como ya se ha indicado anteriormente, le denominaremos t, t+1, t+2, .... El modelo matemático que describe un sistema secuencial síncrono es la máquina de estados finitos o autómata de estados finitos. El calificativo de “estados finitos” se debe a que el sistema secuencial tendrá una memoria finita y por tanto solamente podrá almacenar un número finito de estados.
La máquina de estados finitos, como ya se vio anteriormente, se puede representar como se indica en la figura 2 donde los elementos de memoria pueden ser flip-flops (FF).
Antes de proseguir vamos a hacer referencia a la nomenclatura que se va a utilizar en lo que sigue:
1.- Las diferentes combinaciones de las entradas (combinaciones de 0 y 1 en los terminales físicos e0, e1, ... eu-1) les denominaremos simplemente “entradas” y las identificaremos por la letra x; así x0, x1, ... representan diferentes combinaciones de las entradas físicas e0, e1, ... eu-1. Al conjunto
de todas las posibles combinaciones de las señales de entrada, que con “u” terminales físicos de entrada pueden ser n = 2u, lo identificaremos por X = {x
0, x1, ...., xn-1 }. Así por ejemplo, con dos
entradas físicas podemos tener las siguientes combinaciones de las señales de entrada: x0=00, x1=01, x2=10 y x3=11.
2.- Las diferentes combinaciones de las salidas físicas de los flip-flops (Q0, ... QP-1), que constituyen los estados del autómata, los identificaremos por la letra “q”; así q0, q1, ... representan diferentes estados (combinaciones de Q0, ... QP-1). Al conjunto de los diferentes estados, que con
“p” flip-flops pueden ser m = 2p, lo identificaremos por Q = {q0, q1, ...., qm-1 }. Así por ejemplo con 3 fli-flops (Q0, Q1, Q2) los estados posibles son: q0=000, q1=001, q2 = 010, q3=011, q4=100, q5 =101, q6=110, q7=111.
3.- Las diferentes combinaciones de salida les denominaremos simplemente “salidas” y las identificaremos por la letra “z”; así z0, z1 ... representan diferentes combinaciones de las salidas físicas s0, s1, ... sv-1. Al conjunto de las combinaciones de las salidas, que con “v” salidas físicas pueden ser r = 2v, lo identificaremos por Z = {z
0, z1, ...., zr-1 }. Así por ejemplo, con dos salidas
físicas podemos tener las siguientes combinaciones de las salidas: z0,=00, z1=01, z2=10 y z3=11. Con todo esto, si a una máquina de estados finitos, que denominaremos abreviadamente MEF, se le introducen datos a lo largo del tiempo, la salida, z(t), de la MEF, en un instante t será función de la entrada en ese instante, x(t) y de los estados internos q(t). Es evidente que si la memoria tiene p elementos (FF0 .... FF P-1), siendo p un número finito, el número de estados que se pueden almacenar será también finito. Dado que la memoria del sistema secuencial tiene como misión memorizar diferentes situaciones pasadas por el circuito desde su puesta en funcionamiento (estados internos) es evidente que si existe un número finito de elementos de
Figura 2.- Diagrama de bloques general de un autómata de estados finito
memoria el número de estados internos también es finito.
Observando la figura 2, se puede ver que las entradas de datos x(t), junto con las variables de estado q(t), constituyen las entradas del circuito combinacional. La salida del circuito combinacional está formada por las salidas de datos z(t) y por las salidas q(t+1)
El funcionamiento del autómata es tal que si recibe una nueva entrada en t, x(t)
,
{X}, (se hace efectiva mediante la señal de reloj en el instante t) y se encuentra en el estado q(t),
{Q} (salidas de los FF), entonces la salida del autómata en el instante t será función de x(t) y q(t), esto es, z(t) = g[x(t),q(t)] y pasa a un nuevo estado que será función de x(t) y q(t) en el instante t+1, esto es, denominando al nuevo estado q(t+1) = f[x(t),q(t)]. A g se le denomina como función de salida y a f función de transición:q t( + )= f x t q t[ ( ), ( )]
=
MEF = < x z q f g, , , , > siendo:
x: Datos de entrada, z: Datos de salida, q: Estados internos (variables de estado), f: función de transición o de estado siguiente, y g: función de salida.
Las dos realizaciones básicas de los autómatas finitos son las máquinas de Mealy y de Moore. En las figuras 3 y 4 se muestran los diagramas de bloques de estas dos realizaciones básicas, donde se han reflejado los bloques combinacionales que representan las funciones de transición
f y de salida g. Obsérvese que en ambos casos existe un bloque de memoria (realizado, por ejemplo, por flip-flops -FFi-) define el conjunto de estados (q) del autómata, y una realimentación de esos estados hacia el bloque combinacional que implementa la función de salida g. La diferencia entre ambas realizaciones reside en que en el autómata de Moore la salida z(t) es función únicamente del estado actual {q(t)}, mientras que en un autómata de Mealy la salida actual z(t)} depende tanto de los estados {q(t)} como de las entradas actuales {x(t)}. Este aspecto es de especial importancia a la hora de realizar el diseño de circuitos prácticos. El hecho de que en los autómatas de Mealy la salida sea función tanto de la entrada como de los estados: z(t) = g[x(t), q(t)] supone dos inconvenientes: 1) la salida cambia si cambia la entrada, independientemente de la señal de reloj, 2) una transición de entrada puede provocar varias transiciones en la salida, ya que la salida depende tanto de x(t) como de q(t) y aunque después de recibir una entrada x(t), ésta permanezca constante, el estado q(t) cambiará, en general, y por tanto la salida z(t) puede tomar distintos valores para los dos distintos estados. Por contra, en los autómatas de Moore, para una única transición de la entrada, x(t), solamente se producirá una transición en la salida, z(t), ya que ésta sólo depende de q(t).
Con el fin de clarificar estos aspectos fijémonos en los diagramas de bloques de los autómatas de Mealy y Moore y supongamos que los flip-flops son activos en el flanco de subida. En este caso la secuencia temporal de las diferentes fases del autómata en un ciclo de la señal de reloj es la mostrada en la figura 5, donde se han considerado los tiempos de set-up y propagación de los flip-flops y los de propagación de los circuitos combinacionales. Si ahora se considera un ejemplo como el mostrado en la figura 6 (donde se refleja una transición de entrada-dos entradas diferentes- y dos posibles estados diferentes), las salidas, considerando los dos tipos de autómatas, pueden ser las indicadas. En este ejemplo se considera que con entrada y estado actuales xa y qi la salida del autómata de Moore es zw, y la del Mealy zr. Como se puede observar al pasar la entrada de xa a xb, la salida del autómata de Moore no cambia (ya que el estado sigue siendo el mismo) pero sí lo hace el autómata de Mealy (se supone que la salida es zs para qi y xb).
Figura 5.- Secuencia temporal de las diferentes fases del autómata en un ciclo de la señal de reloj
Figura 6.- Ejemplo de temporización para autómatas de Moore y Mealy
Tabla 1.- Ejemplo génerico de tabla de estados de autómatas de Mealy
4.- REPRESENTACIÓN DE LOS AUTÓMATAS
Para representar el comportamiento de los circuitos secuenciales se utilizan tablas de estados o
tablas de transición (en un formato similar a las tablas de verdad) y grafos (también conocidos como diagramas de estados), donde aparecen los diferentes estados (que son finitos) y las funciones de transición de las salidas para cada combinación de las entradas (que también son finitas). Estas tablas y grafos difieren dependiendo de si se trata de un autómata a máquina de Mealy o de Moore.
4.1.-Autómata de Mealy
Tablas de estados o de transición:para el caso de los autómatas o máquinas de Mealy, la función de transición f y salida g se pueden representar mediante una tabla con tantas filas como estados, q, y tantas columnas como entradas, x. Si la fila k corresponde al estado qk y la columna m corresponde a la entrada xm, en la intersección de ambas se escribirá el valor de f(xm, qk) y g(xm, qk); bien de la forma f(xm, qk) /g(xm, qk) o bien f(xm, qk), g(xm, qk). En la tabla 1 se muestra un ejemplo genérico de este tipo de tabla, para el caso de p estados (q0 ... qP-1) y n posibles entradas. Observése que la salida actual depende tanto del estado actual como de la entrada.
Tabla E1.1.- Tabla de estados del ejemplo 1
En el siguiente ejemplo se muestran estos dos tipos de tablas así como el grafo.
Ejemplo 1: Supongamos un circuito secuencial con dos entradas físicas e0, e1, lo que supone que puede tener 4
posibles entradas x = {x0=00, x1 =01, x2 =10, x3 =11}, 2 estados internos q ={q0, q1} (luego se pueden representar por una variable p, p = 0 = q0, y p=1 =q1) y una salida física, s0, por tanto z puede adoptar 2 posibles valores:
z={z0=0, z1=1}. Si de la definición del sistema se sabe que se debe cumplir:
Estando en el estado q0 si se aplica una entrada 00 el estado siguiente es q0 . La salida para el estado q0 y entrada 00
es 0.
Estando en el estado q0 si se aplica una entrada 01 el estado siguiente es q0 . La salida para el estado q0 y entrada 01
es 1.
Estando en el estado q0 si se aplica una entrada 10 el estado siguiente es q0. La salida para el estado q0 y entrada 10
es 1.
Estando en el estado q0 si se aplica una entrada 11 el estado siguiente es q1 . La salida para el estado q1 y entrada 11
es 0.
Estando en el estado q1 si se aplica una entrada 00 el estado siguiente es q0 . La salida para el estado q1 y entrada 00
es 1.
Estando en el estado q1 si se aplica una entrada 01 el estado siguiente es q1 . La salida para el estado q1 y entrada 01
es 0.
Estando en el estado q1 si se aplica una entrada 10 el estado siguiente es q1. La salida para el estado q1 y entrada 10
es 0.
Estando en el estado q1 si se aplica una entrada 11 el estado siguiente es q1 . La salida para el estado q1 y entrada 11 es 1.
Todo esto se puede representar en una tabla de estados como la siguiente (tabla E.1.1)
La tabla de estados o de transición anterior se puede representar también de la forma indicada en la tabla E1.2, basta con recordar que q0=0, q1= 1, que al estado actual le denominaremos por q(t), al estado siguiente por q(t+1), y las
Figura 7.- Ejemplo que refleja la forma general de representar los diagramas de estados o grafo de los autómatas de Mealy.
Tabla E1.2.- Alternativa de representación de la tabla E1.1
Estado actual q(t) Entrada actual x(t) x0 x1 x2 x3 00 01 10 11 Entrada actual x(t) x0 x1 x2 x3 00 01 10 11 0 1 0 0 0 1 0 1 1 1 0 1 1 0 1 0 0 1 Próximos estados q (t+1) Salida z(t)
Grafos:En este tipo de representación los estados se muestran dentro de círculos. La transición entre estados se indica con arcos que conectan dos estados y sobre estos arcos se indica la entrada que provoca la transición y la salida para esa entrada y el estado actual [x/g(x, q)]. En la figura 7 se muestra la forma general de un diagrama de estados o grafo para el caso de autómata de Mealy
Figura E1.1.- Grafo del ejemplo 1
Tabla 2.- Ejemplo genérico de tabla de estados para los autómatas de Moore.
4.2.- Autómata de Moore
Tablas de estados:para el caso de las máquinas de Moore, las tablas de estados son como la mostrada en la tabla 2. De nuevo, la tabla 2 muestra un ejemplo genérico de este tipo de tabla, para el caso de p estados (q0 ... qP-1), n posibles entradas (x0,... xn-1) y diferentes salida (z)
Ejemplo 2:Supongamos un circuito secuencial con dos entradas físicas e0, e1, lo que supone un total de 4 posibles entradas {00,01,10,11}, 4 estados internos Q ={q0, q1, q2, q3} y una salida física, s, por tanto z puede adoptar 2
Tabla E2.1.- Tabla de estados del ejemplo 2
Para los estados q0 y q1 la salida es 0, y para los estados q2 y q3 la salida es 1.
Estando en el estado q0 si se aplica una entrada 00 el estado siguiente es q0.
Estando en el estado q0 si se aplica una entrada 11 el estado siguiente es q1.
Estando en el estado q0 si se aplica una entrada 10 ó 10 el estado siguiente es q2. Estando en el estado q1 si se aplica una entrada 10 ó 01 el estado siguiente es q1.
Estando en el estado q1 si se aplica una entrada 11 el estado siguiente es q3 . Estando en el estado q1 si se aplica una entrada 00 el estado siguiente es q2 .
Estando en el estado q2 si se aplica una entrada 01 ó 10 el estado siguiente es q2.
Estando en el estado q2 si se aplica una entrada 00 el estado siguiente es q0.
Estando en el estado q2 si se aplica una entrada 11 el estado siguiente es q1. Estando en el estado q3 si se aplica una entrada 11 el estado siguiente es q3.
Estando en el estado q3 si se aplica una entrada 10 ó 01 el estado siguiente es q1. Estando en el estado q3 si se aplica una entrada 00 el estado siguiente es q2.
Todo esto se puede representar en una tabla como la siguiente
Grafos: en este tipo de representación los estados y salidas actuales se muestran dentro de círculos. La transición entre estados se indica con arcos que conecta dos estados y sobre estos arcos se indica la entrada que provoca la transición. En la figura 8 se muestra la forma general de representación de un grafo para una máquina de Moore.
Figura 8.- Forma general de representar los grafos en los autómatas de Moore
Figura E3.1.- Autómata de Mealy correspondiente al ejemplo 3
5.- ANÁLISIS DE CIRCUITOS SECUENCIALES SÍNCRONOS
Si bien el aspecto más importante de los sistemas secuenciales es su diseño, en este apartado se va a abordar el tema de análisis. Con ello se pretende presentar al alumno los aspectos más importantes que aparecerán posteriormente en el diseño, lo que facilita la comprensión de este último.
El análisis tiene por objetivo, dado un circuito secuencial, obtener unas tablas en las que se muestren, para cada combinación digital de sus entradas (entrada actual), y cada posible estado (estado actual) el estado siguiente al que pasa y el valor de las salidas para cada uno de los estados y combinaciones de las entradas. Esto es, la tabla de estados o grafo que define una máquina de Mealy o Moore. El proceso de análisis se puede sistematizar en los siguientes pasos, que se ilustran con un ejemplo de autómata de Mealy. Posteriormente se analizará un circuito que responda a un autómata de Moore.
Ejemplo 3 (Análisis de un autómata de Mealy): Supóngase el circuito mostrado en la figura E3.1. Como se puede observar es un sistema con una sola entrada (x) y salida (z), y dos flip-flops (JK) activos en el flanco de subida. Además, se puede ver que la salida es función de la entrada (x) y de las salidas de los flip-flops (estados), por lo tanto, la realización de este circuito responde a una máquina de Mealy.
analizar), y entradas y salidas del sistema a analizar.
En nuestro ejemplo las ecuaciones lógicas de las entradas de los flip-flops son:
J K Q x J Q x Q K Q x 1 1 1 2 1 2 2 1 1 = = ⋅ = ⋅ ⋅ = ⋅
5.2.- Obtener las ecuaciones lógicas del próximo estado de los flip-flops [Q(t+1) ó /Q(t+1)]: A partir de las ecuaciones de cada flip-flop, sustituir las expresiones lógicas de las entradas obtenidas en el punto 1. Recuérdese que las ecuaciones de los flip-flops son:
BiestablesJK Q(t ) J(t)Q(t) K(t)Q t BiestablesT Q(t ) T t Q t BiestablesD Q(t ) D t : ( ) : ( ) ( ) : ( ) + = + + = ⊕ + = 1 1 1
Para el ejemplo, al tratarse de flip-flops JK, las ecuaciones lógicas de los próximos estados son
Q t J t Q t K t Q t Q t Q t x t Q t Q t J t Q t K t Q t Q t x t Q t Q t Q t x t Q t 1 1 1 1 1 1 1 1 2 2 2 2 2 1 2 2 1 2 1 1 1 ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) + = + = ⋅ + ⋅ ⋅ + = + = ⋅ ⋅ ⋅ + ⋅ ⋅
simplificando estas expresiones se obtiene:
Q t Q t Q t Q t Q t x t Q t 1 1 2 2 1 2 1 1 ( ) ( ) ( ) ( ) ( ) ( ) ( ) + = + = + ⋅ ⋅
5.3.- El tercer paso consiste en obtener la función lógica que relaciona las variables de salida del sistema con los próximos estados de los flip-flops (obtenidas en el paso 2) y las entradas del sistema.
En el ejemplo solamente hay una salida (z) y ésta coincide con K2:
z t( )= Q t1( )⋅x t( )
5.4.- Representar la tabla de transición (con ceros y unos) en la que se muestren como entradas los diferentes estados actuales y las entradas actuales y como salidas los próximos estados y la salida actual del sistema. Téngase en cuenta que los valores de q(t) son las posibles combinaciones de Q2(t) Q1(t) y por tanto los de q(t+1) serán las de Q2(t+1) Q1(t+1).
Tabla E3.1.- Tabla de transición correspondiente al ejemplo 3. Estado actual q(t) Q2(t) Q1(t) Entrada actual x(t) 0 1 Entrada actual x(t) 0 1 0 0 0 1 1 0 1 1 1 1 1 0 0 1 0 0 1 1 1 0 0 1 10 1 1 1 1 1 0 1 0 Próximos estados q(t+1) [Q2(t+1) Q1(t+1)] Salida z(t)
que de forma resumida, en el formato del autómata de Mealy, se puede escribir (ver tabla E3.2):
Tabla E3.2.- Tabla de estados resumida del ejemplo 3 Estado actual q(t) Entrada actual x(t) 0 1 0 0 0 1 1 0 1 1 11/1 11/1 10/1 10/0 01/1 01/1 00/1 10/0 q(t+1)/z(t)
5.5.- Asignar a cada posible estado un nombre: q0, q1, q2, ...qn-1. y reescribir la tabla obtenida en el punto 5.4) como tabla de estados.
Para el ejemplo 3, haciendo la siguiente asignación de estados: q0 = 00, q1 = 01, q2=10, q3= 11, la tabla de estados
será(tabla E3.3)
Tabla E3.3.- Tabla de estados del ejemplo 3 Estado actual
q(t)
Entrada actual
x(t) 0 1
Figura E3.2.- Grafo correspondiente al ejemplo 3
Figura E4.1.- Autómata de Moore correspondiente al ejemplo 4 q0 q1 q2 q3 q3/1 q3/1 q2/1 q2/0 q1/1 q1/1 q0/1 q2 /0 q(t+1)/z(t)
5.6.- Representar el diagrama de estados o grafo de comportamiento del sistema.
A partir de la tabla anterior se obtiene el grafo de la figura E3.2:
Ejemplo 4 (análisis de un autómata de Moore): Para este ejemplo vamos a utilizar el circuito de la figura E4.1. Como se puede observar la salida (de un solo terminal) depende únicamente de las salidas de los flip-flops (en este caso de tipo D), y por tanto se trata de un autómata de Moore.
D x t Q t Q t D x t Q t Q t 1 2 1 2 2 1 = ⋅ + = ⋅ + ( ) [ ( ) ( )] ( ) [ ( ) ( )]) Q t x t Q t Q t Q t x t Q t Q t 1 2 1 2 2 1 1 1 ( ) ( ) [ ( ) ( )] ( ) ( ) [ ( ) ( )]) + = ⋅ + + = ⋅ + z t( )= Q t Q t2( )⋅ 1( ) 1) 2) 3) 4)
Tabla E4.1.- Tabla de transiciones del ejemplo 4. Estado actual q(t) Q2(t) Q1(t) Entrada actual x(t) 0 1 Salida actual z(t) 0 0 0 1 1 0 1 1 00 01 00 10 00 11 00 11 q(t+1) 0 0 0 1
5) Haciendo la siguiente asignación de estados: q0 = 00, q1 = 01, q2=10, q3= 11, la tabla de estados será (ver tabla E4.2) Tabla E4.2.- Tabla de estados del ejemplo 4. Estado actual q(t) Entrada actual x(t) 0 1 Salida actual s(t) q0 q1 q2 q3 q0 q1 q0 q2 q0 q3 q0 q3 q(t+1) 0 0 0 1
Figura E4.2- Grafo correspondiente al autómata de Moore del ejemplo 4
6.- SÍNTESIS DE CIRCUITOS SECUENCIALES SÍNCRONOS
La síntesis de circuitos secuenciales síncronos tiene por objetivo obtener el esquema físico del circuito (formado por puertas lógicas y flip-flops) a partir de la descripción de la función que se quiere que realice el circuito. Los pasos a seguir son prácticamente los mismos que los del proceso de análisis, pero en sentido inverso. En lo que sigue se va a ver un método sistemático de diseño, tratando de minimizar el número de flip-flops.
De forma resumida los pasos a seguir son: 6.1.- Planteamiento del problema.
6.2.- Obtención del grafo (diagrama de estados). 6.3.- Obtención de la tabla de estados inicial. 6.4.- Minimización de la tabla de estados.
6.5.- Asignación de estados y obtención de la tabla de transición. 6.6.- Obtención de las ecuaciones de salida del sistema.
6.7.- Obtención de las tablas de excitación y ecuaciones de entrada de cada flip-flop del circuito. 6.8.- Implementación del circuito.
En lo que sigue se va a describir de forma general cada uno de estos pasos, reforzando las explicaciones con algunos ejemplos sencillos. Con el objetivo de conseguir mayor claridad al punto 4 (minimización de estados) se expondrán más adelante unos ejemplos partiendo de tablas de estados iniciales genéricas.
6.1.- Planteamiento del problema
Se trata de una descripción funcional del circuito a diseñar o, lo que es lo mismo, del problema a resolver. Esta descripción, generalmente, se realiza en lenguaje natural ayudado en algunos
Ejemplo 5. Diseño de un autómata de Mealy: “Se quiere diseñar un circuito que realice la suma de dos datos que llegan en serie por dos canales diferentes. Esto es, los bits de los sumandos se presentan secuencialmente y por parejas. Primero se presentan los bits de menor peso de ambos sumandos, el sumador los suma y obtiene el bit de menor peso del resultado y toma nota del acarreo, luego los siguientes y así sucesivamente. Los resultados secuenciales de la suma se supone que se almacenan en un registro (registro con entrada serie) “. El objetivo, por tanto, de este ejemplo es diseñar un “circuito sumador serie”.
Ejemplo 6. Diseño de un autómata de Mealy: “ Se quiere diseñar un circuito secuencial síncrono que proporcione a su salida un nivel alto cada vez que en su línea de entrada se presente la secuencia 101".
Ejemplo 7. Diseño de un autómata de Moore: “Se pide diseñar un circuito que recibe por una línea de entrada datos en serie y debe ser capaz de detectar secuencias de tres o más “1's” consecutivos”
Ejemplo 8. Diseño de un autómata de Moore: “Diseñar un circuito contador síncrono BCD módulo diez"
6.2.- Obtención del grafo (diagrama de estados)
Partiendo del planteamiento del problema hay que obtener el grafo. Para ello hay que empezar por identificar el número de: estados, salidas y entradas al sistema; a continuación establecer la transición entre estados en función de las entradas, indicando los valores de las salidas del sistema en función del estado y la entrada.
Sin duda esta es la parte más complicada del proceso de síntesis ya que es el más intuitivo y menos sistemático.
Hemos de indicar que un mismo enunciado puede dar lugar a diferentes grafos iniciales, todos ellos válidos, pero que pueden ser muy diferentes y, por tanto, con mayor o menor complejidad de implementación. Sin duda el mejor grafo inicial será aquel que tenga un menor número de estados. De la habilidad, ingenio y experiencia del diseñador depende la calidad del grafo; sin embargo pese a todas estas cualidades no garantizan que el grafo inicial obtenido sea el mejor posible.
Los pasos a seguir para establecer un grafo a partir del enunciado podrían resumirse en:
1.- Elegir una realización de máquina de Mealy o de Moore (en nuestro caso, tal como se ha indicado en los enunciados, los ejemplos 1 y 2 deben diseñarse como máquinas de Mealy y los ejemplos 3 y 4 como Moore).
2.- Identificar estados y asignarle a cada uno un nombre, por ejemplo q0, q1, q2 ..., entradas y asignarle un nombre, por ejemplo x0, x1, ..., salidas y asignarle un nombre, por ejemplo z0, z1, .... 3.- Seleccionar un estado inicial, llamémosle q0, (este estado inicial, en muchos casos, lo sugiere el propio enunciado). Partiendo de este estado inicial, y para cada una de las posibles combinaciones de entrada, establecer la salida y el siguiente estado (que puede ser otro o
coincidiendo con un pulso de reloj, CLK) y la salida actual.
5.- Si se trata de una máquina de Moore: sobre cada flecha que une dos estados (la flecha sale del estado actual y finaliza en el estado siguiente) indicar la combinación de entrada (entrada actual) que origina dicha transición entre estados. Las salidas actuales, para cada estado, se indican junto al estado.
6.- El proceso indicado en 4) (caso de máquina de Mealy) o 5) (caso de máquina de Moore) se repite para todos los estados.
Ejemplo 5: es fácil ver que existen dos entradas de datos, que llamaremos sumando A y B y una salida que es el resultado de la suma de dos bits y que llamaremos S.
Para ver los estados que se necesitan solamente hay que darse cuenta que las dos situaciones que se pueden presentar es que la suma se realice con y sin acarreo (si se genera acarreo hay que almacenarlo y sumarlo con los dos bits A, B, siguientes). Por tanto si la suma no genera acarreo estamos en un estado que vamos a llamar q0 y si genera en uno q1. Por otra parte sabemos que la tabla de verdad de un sumador de dos bits es la mostrada en la tabla
siguiente.
Tabla E5.1. Tabla de verdad del sumador del ejemplo 5 Acarreo Anterior B A Acarreo Suma (S) Generado 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 0 0 (q0) 1 0 (q0) 1 0 (q0) 0 1 (q1) 1 0 (q0) 0 1 (q1) 0 1 (q1) 1 1 (q1)
Según esto, si estando en el estado q0 (acarreo inicial 0) los bits A y B toman valores A=0 y B= 0, A= 0 y B= 1 ó
A=1 y B=0 la suma es 0, 1, 1, respectivamente y el acarreo generado es 0 en todos los casos, por tanto se permanece en el estado q0 ; sin embargo si el dato es A=1 y B=1 la suma es S=0 y se produce acarreo, por tanto esta situación hace que el estado siguiente sea q1.
Por otra parte si estando en q1(acarreo inicial 1) los datos de entrada son A=0 y B=1, A=1 y B=0 ó A=1 y B=1 la
suma es 0 (Acarreo inicia (l) + 0 +1=0), 0 (Acarreo inicial (1) + 1+0=0), 1 (Acarreo inicial (1) + 1+1=1), respectivamente, y en todos los casos el acarreo generado es 1, lo que hace que permanezca en el estado q1; por
contra si el dato es A=0 y B=0, la suma es 1 y el acarreo generado es 0, y se pasa al estado q0. En resumen el grafo es el mostrado en la figura E5.1
Figura E5.1.- Grafo correspondiente al ejemplo 5
Ejemplo 6: En este caso está claro que el circuito dispone de una sola entrada, que llamaremos e, y una salida, que llamaremos s. En cuanto a los estados, es evidente que se puede pensar inicialmente en los siguientes:
Estado q0 : no se ha recibido el primer 1 (estado inicial)
Estado q1: se ha recibido un primer 1.
Estado q2: se ha recibido un 1 y un 0. Estado q3: se ha recibido un 1, un 0 y un 1.
A partir de estos estados es fácil ver (siguiendo las sugerencias del punto 2.3) que:
1- Si estando en el estado q0 la entrada es 1 se debe pasar al estado q1, y si es 0 se debe permanecer en q0 (la
secuencia se rompe y se debe retornar al estado inicial). En ambos casos la salida debe ser 0.
2.- Estando en q1 (indicativo de que se ha recibido el primer 1) si se recibe un 0 se debe pasar al estado q2 (indicativo de que se ha recibido un la secuencia 10), si por contra se recibe un 1 se debe interpretar a este como el primero de la posible secuencia, por tanto hay que permanecer en q1. En ambos casos la salida debe ser 0.
3.- Si estando en q2 se recibe un 1 se pasa al estado q3 (indicativo de haber recibido una secuencia 101). En este caso
la salida se debe poner a 1. Por contra si se recibe un 0, la secuencia se rompe, y hay que retornar al estado inicial q0 (es como si no se hubiera recibido ningún 1); en este caso la salida debe ser 0.
4.- Si estando en q3 (indicativo de que se ha recibido la secuencia 101) se recibe un 0 se debe retornar al estado q2
(estado al que se llega con un 1 como último dato). En este caso la salida debe ser 0. Si por contra el dato de entrada es 1 se retorna al estado q1, ya que este nuevo 1 se considera como el primero de una nueva secuencia.
Figura E7.1. Grafo correspondiente al ejemplo 7
Figura E8.1.- Grafo correspondiente al ejemplo 8
Ejemplo 7: En este caso, de nuevo, el circuito dispone de una sola entrada, que llamaremos e, y una salida, que llamaremos s. En cuanto a los estados se puede pensar inicialmente en los siguientes:
Estado q0 : no se ha recibido el primer 1 (estado inicial)
Estado q1: se ha recibido un primer 1.
Estado q2: se han recibido dos 1's consecutivos.
Estado q3: se han recibido tres o más 1's consecutivos.
A partir de estos estados se tiene:
1- Si estando en el estado q0 la entrada es 1 se debe pasar al estado q1, y si es 0 se debe permanecer en q0 (la
secuencia se rompe y se debe retornar al estado inicial). La salida estando en q0 debe ser 0.
2.- Estando en q1 (indicativo de que se ha recibido el primer 1) si se recibe un 1 se debe pasar al estado q2 (indicativo
de que se ha recibido un la secuencia 11), si por contra se recibe un 0 la secuencia se rompe, y hay que retornar al estado inicial q0 (es como si no se hubiera recibido ningún 1). La salida estando en q1 debe ser 0 .
3.- Si estando en q2 se recibe un 1 se pasa al estado q3 (indicativo de haber recibido una secuencia 111). Por contra
si se recibe un 0, la secuencia se rompe, y hay que retornar al estado inicial q0 (es como si no se hubiera recibido ningún 1). La salida estando en q2 debe ser 0
4.- Si estando en q3 (indicativo de que se ha recibido la secuencia 111) se recibe un 0 se debe retornar al estado q0,
y si la entrada es 1 se debe permanecer en q3 . La salida estando en q3 debe ser 1.
Por tanto, el grafo es el mostrado en la figura E7.1
Ejemplo 8: En este caso el circuito no debe tener ninguna entrada de datos (solamente la entrada de reloj CLK), como salida debe tener cuatro líneas (s3, s2, s1, s0). En cuanto a los
estados es evidente que serán 10 (q0, q1, q2, q4,q5, q6, q7, q8 q9), tantos como estados posibles tiene el contador. En este caso al no existir entradas, la transición entre estados, partiendo de un estado inicial (por ejemplo q0), se produce para cada pulso de
reloj. En la figura E8.1 se muestra el grafo.
Una vez obtenido el grafo es fácil obtener la tabla de estados, siguiendo el proceso inverso al visto en el apartado de análisis.
Ejemplo 5: A partir del grafo de la figura E5.1 es inmediato obtener la tabla de estados indicada a continuación
Tabla E5.2.- Tabla de estados del ejemplo 5
Estado actual Entrada actual
x0 x1 x2 x3 00 01 10 11 q0 q1 q0/0 q0/1 q0/1 q1/0 q0/1 q1/0 q1/0 q1/1
Ejemplo 6: Para este caso la tabla de estados es la indicada a continuación (tabla E6.1)
Tabla E6.1.- Tabla de estados del ejemplo 6
Estado actual Entrada actual
x0 x1 0 1 q0 q1 q2 q3 q0/0 q1/0 q2/0 q1/0 q0/0 q3/1 q2/0 q1/0
Ejemplo 7: La tabla de estados para este caso es (tabla E7.1)
Tabla E7.1.- Tabla de estados del ejemplo 7
Estado actual Entrada actual
x0 x1 0 1 Salida actual z s q0 q1 q2 q0 q1 q0 q2 q0 q3 0 0 0
Estado actual Estado siguiente Salida actual z s3 s2 s1 so q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 q1 q2 q3 q4 q5 q6 q7 q8 q9 q0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1
6.4.- Minimización de la tabla de estados
La tabla de estados inicial obtenida en el apartado 3 no siempre es la óptima, por ello, y a fin de que la realización práctica se pueda hacer con el mínimo coste (menor número de flip-flops), se debe minimizar la tabla de estados. Una vez obtenida la tabla mínima, el número de flip-flops que se necesitan para implementar el circuito viene dado por la relación 2 número de biestables
$
Número deestados. El método que se va utilizar para obtener la tabla mínima es el de Huffman (otro método es el denominado de tablas de implicación).
Estados equivalentes: Dos estados qi y qj se dice que son equivalentes (qi
/
qj) si y sólo si para cada combinación de entradas posibles (llamémosle x a cada combinación posible) se cumple: 1) las señales de salida correspondiente, llamémosle zi (si el estado inicial es qi) o zj (si el estado inicial es qj) son las mismas; y 2) los estados siguientes correspondientes también son equivalentes.Con el fin de ilustrar este proceso de minimización vamos a utilizar una tabla de estados suficientemente significativa, que nos permita tener una idea clara del proceso a seguir. La tabla que vamos a utilizar es la mostrada a continuación (tabla 3).
Tabla 3.- Ejemplo de tabla a minimizar.
Estado actual Entrada actual
x0 x1 0 1
q0 q1 q2 q3 q4 q5 q6 q7 q0/0 q1/0 q1/0 q4/0 q2/0 q7/0 q0/1 q1/0 q0/1 q1/0 q4/1 q5/0 q1/0 q4/0 q3/0 q4/1
Los pasos a seguir son:
Dividir la tabla de estados en grupos de estados actuales tales que estados actuales en el mismo grupo tengan la misma salida ante la misma entrada (obsérvese que en la formación de estos grupos no se tiene en cuenta los próximos estados). Cada grupo de estos estados se puede nombrar con una letra o un número.
En nuestro ejemplo, como se puede ver en la tabla 3 los estados actuales q0, q1, q2 y q6 tienen salidas 00, por otra parte los estados actuales q3, q4 y q5 tienen salidas 10 y el estado actual q7 tiene salidas 01. Por tanto, siguiendo el punto 4.1, y denominando a los grupos por letras, se obtiene la siguiente división de la tabla de estados (tabla 3):
Salidas 0 0 0 1 1 0
Grupos A B C
Estados actuales que constituyen el grupo
q0 q1 q2 q6 q7 q3 q4 q5
Grupos de los próximos estados (*)
A, A A, C A, B A, C C, C A, A A, A C, C
(*) Grupos a los que pertenecen los próximos estados de cada estado actual. Así por ejemplo, los estados siguientes al estado actual q0 son q0 (que pertenece al grupo A) y q1 (que pertenece al
grupo A); los estados siguientes al estado actual q6 son q1 (que pertenece al grupo A) y q4 (que pertenece al grupo C); los estados siguientes al estado actual q5 son q4 (que pertenece al grupo C) y q5 (que pertenece al grupo C), ... ...
Si en esta última tabla hay algún “grupo” (casillas de la segunda fila) dendro del cual hay algún “estado actual que constituye el grupo” que no tiene los mismos “grupos de los próximos estados” (casillas de la última fila), esto significa que los “estados actuales” de dicho “grupo” no son equivalentes entre sí. En este caso hay que dividir dicho “grupo” en otros más pequeños que contengan estados actuales con los mismos “grupos de los próximos estados”.
Salidas 0 0 0 1 1 0
Grupos A D E B C F
Estados actuales que constituyen el grupo
q0 q1 q6 q2 q7 q3 q4 q5
Grupos de los próximos estados (*)
A,D D,C D,C E,B C,C A,D A,D C,F
Este proceso se repite hasta conseguir una tabla en la que los “estados actuales que constituyen el grupo” dentro de cada “grupo” tengan los mismos “grupos de los próximos estados”. Dentro de esta tabla final los “estados actuales que constituyen el grupo” dentro de cada “grupo” constituyen estados equivalentes entre sí, y por tanto se pueden sustituir por un único estado. Según esto, la última tabla es ya la tabla final, ya que los “estados actuales que constituyen el grupo” de cada “grupo” tienen los mismos “grupos de los próximos estados”. Por tanto q1 y q6 son estados equivalentes y también lo son q3 y q4. Los nuevos estados se pueden identificar utilizando letras en sus subíndices. Así por ejemplo, se pueden identificar los estados finales utilizando como subíndice la letra del grupo al que pertenecen. En nuestro caso, por tanto, tenemos: qa = q0, qb = q7, qc = q3 = q4, qd = q1 =q6, qe =q2, y qf = q5 y, sustituyendo estos nuevos estados en la tabla 3 se obtiene la tabla mínima equivalente a la misma, que resulta ser la mostrada a continuación (tabla 4):
Tabla 4.- Tabla mínima correspondiente a la tabla 3
Estado actual Entrada actual
x0 x1 0 1 qa qb qc qd qe qf qa/0 qd/0 qc/0 qc/1 qa/1 qd/0 qd/0 qc/0 qe/0 qb/0 qc/1 qf/0
Para los ejemplos 5, 7 y 8, se puede comprobar que las tablas de estados son las mínimas, por tanto no procede la realización de este punto.
6.5.- Asignación de estados y obtención de la tabla de transición resultante
La asignación de estados consiste en asignar a cada estado de la tabla de estados mínima un combinación binaria de las salidas de los flip-flops. Esta asignación no es única y, por tanto, la complejidad (número de puertas a utilizar en la realización del circuito) del sistema final también será diferente. Evidentemente, una alternativa para encontrar el circuito más reducido sería realizar todas las alternativas y después elegir la más sencilla. Esto, sin embargo, sólo es posible utilizando programas informáticos para un número de flip-flops reducido. En caso contrario el número de posibles realizaciones es muy grande, lo que conlleva un elevado tiempo de diseño.
posibles asignaciones viene dado por: 2 2 2 m m m N N N = − ! ! ( )!
Una alternativa práctica es utilizar ciertas reglas, basadas únicamente en los estados actuales q(t) y próximos q(t+1) de la tabla de estados. Estas reglas, sin entrar en su justificación, lo que persiguen es que las combinaciones binarias de los estados actuales, q(t), y sus próximos estados, q(t+1), sean adyacentes (que sólo se diferencien en un bit). De forma resumida estas reglas son: 1.- Buscar en la tabla de estados, estados actuales (q(t)) que tengan idénticos próximos estados para las mismas entradas. Esto es, buscar por filas estados actuales que tienen dentro de cada columna (cada columna se corresponde con una entrada) de estados próximos, estados próximos iguales. A los estados actuales que cumplen esta condición les vamos a llamar actuales-uno, y a sus próximos estados si son distintos los denominaremos próximos-uno. Para conseguir una realización “buena” del circuito, se deben asignar códigos binarios adyacentes (que sólo se diferencien en un bit) a los estados actuales-uno y también deberán se adyacentes las asignaciones de los próximos-uno (si son distintos).
2.- Buscar en la tabla de estados, estados actuales (q(t)) que tengan idénticos próximos estados, y en la misma cantidad, pero para entradas diferentes. Esto es, buscar por filas estados actuales que tienen para diferentes columnas de estados próximos, estados próximos iguales (y en la misma cantidad). A los estados actuales que cumplen esta condición le vamos a llamar
actuales-dos, y a sus próximos estados si son distintos los denominaremos próximos-dos. Para conseguir una realización “buena” del circuito, se deben asignar códigos binarios adyacentes a los estados actuales-dos y también se debe hacer lo mismo con los estados próximos-dos.
3.- Buscar en la tabla de estados, estados actuales (q(t)) que tengan idénticos próximos estados para alguna de las entradas. Esto es, buscar por filas estados actuales que tienen en algunas columnas estados próximos iguales. A los estados actuales que cumplen esta condición le vamos a llamar actuales-tres. Para conseguir una realización “buena” del circuito, se deben asignar códigos binarios adyacentes a los estados actuales-tres, teniendo prioridad aquellos estados
actuales-tres que tengan mayor número de próximos estados iguales.
4.- Otra regla práctica es asignar códigos adyacentes a los próximos estados de cada fila. 5.- Y por último, para una realización “buena” del circuito, se deben asignar códigos binarios adyacentes a los estados actuales y sus próximos estados.
Dado que no siempre se podrá conseguir aplicar todas estas reglas, el orden de prioridad de aplicación es el mismo que el de su numeración.
de estados tal como la indicada a continuación. Lógicamente esta tabla si se fuera a implementar habría que minimizarla, pero para dar mayor claridad al proceso de asignación de estados se va a utilizar sin minimizarla:
Tabla 5.- Ejemplo de tabla para la asignación de estados y obtención de la tabla de transición
Estado actual Entrada actual
x0 x1 x2 x3 00 01 10 11 q0 q1 q2 q3 q4 q5 q6 q7 q0/0 q0/0 q1/0 q2/0 q0/1 q7/0 q2/1 q6/0 q4/0 q5/1 q0/0 q2/1 q4/1 q5/0 q3/1 q3/0 q2/1 q1/1 q3/1 q1/1 q0/1 q0/0 q1/1 q2/0 q1/0 q2/1 q1/0 q3/1 q2/0 q7/1 q2/0 q6/1
Aplicando las reglas anteriores tenemos: Regla 5.1: q0 adyacente q5; Regla 5.2: q4 adyacente q6; Regla 5.3: q1 adyacente q7 (3); q2 adyacente q3 (2); q3 adyacente q4 (1) q3 adyacente q6 (1) q0 adyacente q1 (1); q1 adyacente q5 (1); q4 adyacente q7 (1); q5 adyacente q6 (1); q0 adyacente q2 (1)
Regla 5.4: q0 adyacente q1 adyacente a q2
q0 adyacente q7 adyacente a q2 adyacente a q6
...
...
Regla 5.5: q0 adyacente con q1 y q2
q1 adyacente con q0, q7, q2 y q6
...
...
Según esto, una posible asignación es la indicada en el mapa de Karnaugh siguiente:
Una vez realizada la asignación de estados se obtiene la tabla de transición (mera traducción de la tabla de estados) tal como se hizo en el apartado de diseño. Es aconsejable que en la tabla de transición aparezcan en columnas diferentes los
Es evidente que si hay N estados y se necesitan m flip-flops, la diferencia 2m -N serán estados que
no existen y, por tanto, se le podrán asignar cualquier valor (X) y las salidas correspondientes también se le puede asignar cualquier valor (X).
Para los ejemplos 5, 7 y 8, no existe posibilidad de reducir estados, por tanto la asignación de éstos, siguiendo los criterios expuestos, y partiendo de las tablas E5.2, E7.1 y E8.1 son:
Ejemplo 5 (tabla E5.2): q0= 0, q1= 1
Ejemplo 7 (tabla E7.1): q0= 00, q1= 01, q2= 10, q3=11
Ejemplo 8 (tabla E8.1): q0= 0000, q1= 0001, q2= 0010, q3=0011,q4= 0100, q5= 0101, q6= 0110, q7=0111, q8=1000,
q9=1001
Sin embargo el ejemplo 6 se puede ver (tabla E6.1) que los estados q1 y q3 son equivalentes, por ello los nuevos
estados los denominaremos por qa =q0, qb =q1= q3, y qc=q2, resultando la siguiente nueva tabla asignación: Tabla E6.2.- Tabla de estados mínima del ejemplo 6
Estado actual Entrada actual
x0 x1 0 1 qa qb qc qa/0 qb/0 qc/0 qb/0 qa/0 qb/1
siendo la asignación de estados:
Ejemplo 6 (tabla E6.1): qa= 00, qb= 01, qc= 10
A partir de la asignación de estados anterior, las tablas de transición (partiendo de las tablas de estados), reflejando en columnas diferentes los próximos estados y las salidas actuales, son las indicadas a continuación:
Ejemplo 5 (ver tabla E5.2): la tabla de transición es la mostrada a continuación (tabla E5.3). Obsérvese que las salida del flip-flop (salida física) se ha identificado, en este caso, por Q0, las entradas físicas por A y B, y la salida física
por s.
Tabla E5.3. tabla de transición de estados del ejemplo 5. Estado actual q (t) Q0(t) x(t) AB 00 01 10 11 x(t) AB 00 01 10 11 q0 0 q1 1 0 0 0 1 0 1 1 1 0 1 1 0 1 0 0 1 Q0 Q0 Q0 Q0 Próximos estados Salida (s) s(t)
Tabla E6.3. Tabla de transición de estados del ejemplo 6. Estado actual q (t) Q1 (t)Q0(t) x(t) e 0 1 x(t) e 0 1 qa 0 0 qb 0 1 qc 1 0 1 1 0 0 1 0 0 0 X X 0 1 0 1 0 1 X X 0 0 0 X 0 0 1 X Q1 Q0 Q1 Q0 Próximos estados Q1 (t+1)Q0(t+1) Salida s(t)
Ejemplo 7 (ver tabla E7.1): La tabla de transición es la mostrada a continuación (tabla E7.2)
Tabla E7.2. Tabla de asignación de estados del ejemplo 7. Estado actual q (t) Q1 (t)Q0(t) x(t) e 0 1 Salida s q0 0 0 q1 0 1 q2 1 0 q3 1 1 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 1 0 0 0 1 Q1 Q0 Q1 Q0 Próximos estados Q1 (t+1)Q0(t+1)
Ejemplo 8 (ver tabla E8.1): La tabla de transición es la mostrada a continuación (tabla E8.2). En este caso los estados 1010, 1011, 1100, 1101, 1110 y 1111 nuca se presentan y por tanto a las salidas y próximos estados, correspondientes, se les puede asignar cualquier valor (situación que se indica por la letra X)
Tabla E8.2. Tabla de asignación de estados del ejemplo 8. Estado actual
q (t) Q3(t)Q2(t) Q1 (t)Q0(t)
Entrada actual Salida
s3 s2 s1 s0 q0 0 0 0 0 q1 0 0 0 1 q2 0 0 1 0 q3 0 0 1 1 q4 0 1 0 0 q5 0 1 0 1 q6 0 1 1 0 q7 0 1 1 1 q8 1 0 0 0 q9 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 0 0 0 0 XXXX XXXX XXXX XXXX XXXX XXXX 0 0 0 0 0 0 0 1 0 0 10 0 0 11 0 10 0 0 1 0 1 0 11 0 0 11 1 1 0 0 0 1 0 0 1 XXXX XXXX XXXX XXXX XXXX XXXX Q3Q2Q1Q0 Próximos estados Q3(t+1)Q2(t+1) Q1 (t+1)Q0(t+1)
6.6.- Obtención de las ecuaciones de salida del sistema.
Las ecuaciones lógicas de las diferentes salidas se pueden obtener directamente a partir de la tabla de transición. Recuérdese que en los autómatas de Mealy z(t) = f[q(t), x(t)] y para los de Moore z(t)= f[q(t)], por ello en la tabla de transiciones las entradas son q(t) y x(t) y la salida z(t). Por tanto, cada salida física se debe implementar en función de las entradas físicas y los estados actuales [Q0(t)... ]. Estas funciones de salida de deberán minimizar por alguno de los métodos conocidos (Karnaugh, por ejemplo).
Para los ejemplos 5, 6, 7 y 8 las ecuaciones de salida son las indicadas a continuación, donde se han reflejado los mapas de Karnaugh
Ejemplo 5:Para este caso las entradas físicas son A y B, el terminal físico del estado actual es Q0(t) y la salida física la llamaremos s(t). A partir de la tabla E5.3, y utilizando mapas de Karnaugh, se obtiene (figura E5.2):
s= ⋅e Q1
Figura E6.2.- Función de salida del ejemplo 6
s= Q Q1 0
Figura E7.2.- Función de salida del ejemplo 7
s0 = Q0 s1 = Q1
s2 = Q2 s3 = Q3
Ejemplo 6: Este caso es similar al anterior, pero con una sola entrada, e y dos estados Q1 y Q0. A partir de la tabal E6.3, y
utilizando mapas de Karnaugh, se obtiene (figura E6.2):
Ejemplo 7: En este caso, al tratarse de un autómata de Moore, la salida s sólo depende del estado interno. A partir de la tabla E7.2, y utilizando mapas de Karnaugh, se obtiene:
Ejemplo 8: Este caso existen cuatro salidas, s3, s2, s1 y s0. A partir de la tabla E8.2, y utilizando mapas de Karnaugh, se obtiene (figura E8.2):
6.7.- Obtención de las tablas de excitación y ecuaciones de entrada de cada flip-flop del circuito.
En este punto se trata de resolver dos problemas:
1.- Definir los flip-flops a utilizar (RS, JK, T, D). A modo de recordatorio se reproducen las tablas de verdad de los diferentes tipos de flip-flops, supuesto que sus entradas sean activas a nivel alto. En estas tablas se ha omitido la señal de reloj, que por supuesto debe existir siempre.
Q(t) Q(t+1) R S J K T D 0 0 0 1 1 0 1 1 X 0 0 1 1 0 0 X 0 X 1 X X 1 X 0 0 1 1 0 0 1 0 1 2.- Obtener las ecuaciones de entrada de cada flip-flop (valores de R, S; J,K; T; D) en función de los estados actuales y entradas al sistema. Con esto quedaría ya definido el circuito. Para ello, y una vez elegido el tipo de flip-flop, solamente hay que escribir las tablas de transición obtenidas en el punto 6, reflejando, por una parte, los estados actuales y próximos estados (para cada entrada) y, por otra parte, los valores de las entradas de los flip-flops, para cada entrada (que serán función de los estados actual y próximo y del tipo de flip-flop elegido). En general será necesario realizar la simplificación (utilizando, por ejemplo, mapas de Karnaugh) simplificar las ecuaciones de entrada a los flip-flops. Veamos este último proceso, para los ejemplos 5, 6, 7 y 8. Ejemplo 5.- Dado que existen 2 estados, se necesita un flop. Utilizando un flop JK, la salida de dicho flip-flop la denominaremos Q0 y las entradas J0, K0. La tabla E5.3, considerando únicamente los estados actuales y próximos y los valores de J0, K0 será la indicada a continuación (tabla E5.4). Obsérvese que las primeras columnas dentro del cuadro “Entradas del flip-flop” y para cada entrada, corresponde al valor que debe tomar J0 y la segunda corresponde a K0, valores éstos que, para cada entrada, vienen impuestos por los de Q0(t) y Q0(t+1) para cada entrada. Tabla E5.4. Tabla de transiciones para la obtención de las ecuaciones de entrada de los flip-flops (ejemplo 5). Estado actual q (t) Q0(t) x(t) AB 00 01 10 11 x(t) AB 00 01 10 11 q0 0 q1 1 0 0 0 1 0 1 1 1 0 X X 1 0 X X 0 0 X X 0 1 X X 0
J0= AB K0= AB
Figura E5.3.- Ecuaciones de las entradas del flip-flop del ejemplo 4
J0 =e K0 = e
J1=Q e0 K1=1
Utilizando mapas de Karnaugh para obtener las funciones de entrada al flip-flop, se tienen los resultados mostrados en la figura E5.3.
Ejemplo 6.- En este caso hay 3 estados, por tanto se necesitan 2 flip-flops. Utilizando flip-flops JK, las salidas de dichos flip-flops las denominaremos Q1, Q0 y sus respectivas entradas J1, K1 y J0, K0. La tabla E6.3, considerando
únicamente los estados actuales y próximos y los valores de J1, K1 y J0, K0 será la indicada a continuación (tabla E6.4).
Tabla E6.4. Tabla de transiciones para la obtención de las ecuaciones de las entradas de los flip-flops (ejemplo 6) Estado actual q (t) Q1 (t)Q0(t) x(t) e 0 1 x(t) e 0 1 x(t) e 0 1 qa 0 0 qb 0 1 qc 1 0 1 1 0 0 1 0 0 0 X X 0 1 0 1 0 1 X X 0 X 1 X X 1 X X 0 X 0 X X 1 X X 0 X X 1 0 X X X 1 X X 0 1 X X X Q1Q0 Q1Q0 Próximos estados Q1 (t+1)Q0(t+1) J1 K1 J1 K1 J0 K0 J0 K0
Entradas de los flip-flops
Los mapas de Karnaugh, correspondientes a las entradas de los dos flip-flops se muestran en la figura E6.3, junto a las funciones de entrada ya simplificadas
D0 = ⋅ + ⋅ =Q e Q e0 1 (Q0+Q1)⋅e
D
Q e Q e
Q Q e
1
= ⋅ + ⋅ =
1 0(
1+ ⋅
0)
Figura E7.3.- Funciones lógicas de las entradas de los flip-flops del ejemplo 7
Ejemplo 7.- Hay 4 estados, por tanto se necesitan 2 flip-flops. En este caso se van a utilizar flip-flops del tipo D, cuyas salidas las denominaremos por Q1, Q0 y sus respectivas entradas por D1 y D0. La tabla E7.2, considerando únicamente los estados actuales y próximos y los valores de D1 y D0 se muestra en la tabla E7.3.
Tabla E7.3. Tabla de transiciones para la obtención de las ecuaciones de las entradas de los flip-flops (ejemplo 7) Estado actual q (t) Q1 (t)Q0(t) x(t) e 0 1 x(t) e 0 1 x(t) e 0 1 q0 0 0 q1 0 1 q2 1 0 q3 1 1 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 1 0 0 0 0 0 1 1 1 0 0 0 0 1 0 1 1 Q1Q0 Q1Q0 Próximos estados Q1 (t+1)Q0(t+1) D1 D1 D0 D0 Entradas flip-flops
Los mapas de Karnaugh correspondientes a las entradas D1 y D0 se muestran en la figura E7.3, junto a las funciones
ya simplificadas
Ejemplo 8.- En este caso hay diez estados, por lo tanto se necesitan 4 flip-flops. Utilizando flip-flops tipo JK, sus salidas las denominaremos Q3, Q2, Q1, Q0 y sus respectivas entradas por J3, K3 ; J2, K2 ; J1, K1 y J0, K0. La tabla E8.1,
considerando únicamente los estados actuales y próximos y los valores de las entradas a los flip-flops se muestra en la tabla E8.3.
Tabla E8.3. Tabla de transiciones para la obtención de las ecuaciones de las entradas de los flip-flops (ejemplo 8) Estado actual Q3Q2 Q1Q0 Entrada actual 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 0 0 0 0 XXXX XXXX XXXX XXXX XXXX XXXX 0 X 0 X 0 X 0 X 0 X 0 X 0 X 1 X X 0 X 1 X X X X X X X X X X X X 0 X 0 X 0 X 1 X X 0 X 0 X 0 X 1 0 X 0 X X X X X X X X X X X X X 0 X 1 X X 0 X 1 0 X 1 X X 0 X 1 0 X 0 X X X X X X X X X X X X X 1 X X 1 1 X X 1 1 X X 1 1 X X 1 1 X X 1 X X X X X X X X X X X X Próximos estados Q3Q2 Q1Q0 J3 K3 J2, K2 J1 K1 J0, K0 Entradas flip-flops
A partir de la tabla E8.3 se obtienen los valores de las entradas de cada flip-flop. En la figura E8.3 se muestran estas ecuaciones de entrada.
J0 = 1 K0 = 1
J2 = Q Q0 1
J1= Q0⋅Q3 K1 = Q0
Entradas flip flops J A B K A B Salida s A B Q ( ): ; : − = ⋅ = ⋅ = ⊕ ⊕ 0 0 0
Figura E5.4.- Implementación del autómata del ejemplo 5 (sumador en serie)
Entradas flip flops
J e K e J Q e K Salida s e Q ( ): ; ; : − = = = ⋅ = = ⋅ 0 0 1 0 1 1 1
Figura E.6.4.- Implementación del ejemplo 6
6.8.- Implementación del circuito.
Las “ecuaciones de entrada” a los flip-flops (obtenidas en el punto 7) y las “ecuaciones de salida” (obtenidas en el punto 7), nos permiten dibujar el esquema final del circuito a diseñar.
Para el caso de los ejemplos 5, 6, 7 y 8 los circuitos son los mostrados en las figuras E5.4, E6.4, E7.4 y E8.4, respectivamente. Para mayor facilidad se resumen las ecuaciones de salida y entrada a los flip-flops, para cada uno de los ejemplos.
Ejemplo 5 (sumador en serie) :
Figura E7.4.- Implementación del ejemplo 7(detector de secuencias de tres o más 1's consecutivos)
Ejemplo 7 (detector de tres o más 1''s consecutivos): Entradas flip flops
D Q e Q e Q Q e D Q e Q e Q Q e Salidas s Q Q ( ): ( ) ( ) : − = ⋅ + ⋅ = + ⋅ = ⋅ + ⋅ = + ⋅ = ⋅ 0 0 1 0 1 1 1 0 1 0 0 1
Figura E8.4.- Implementación del autómata del ejemplo 8 (contador BCD)
Ejemplo 8 (contador BCD):
Entradas flip flops
J K J Q Q K Q J K Q Q J Q Q Q K Q Salidas s Q s Q s Q s Q ( ): ; ; : ; ; ; − = = = ⋅ = = = ⋅ = ⋅ ⋅ = = = = = 0 0 1 0 3 1 0 2 2 0 1 3 2 1 0 3 0 3 3 2 2 1 1 0 0 1
Por último, indicar que en las realizaciones finales de los ejemplos 5, 6, 7 y 8 habría que incluir un terminal de “CLEAR” que actúe sobre todos los flip-flops, para que permita forzar al circuito a su estado inicial (q0 para los ejemplos 5, 7 y 8, y qa para el ejemplo 6).
Ejemplos propuestos
1.- Diséñese un circuito secuencial síncrono tipo Moore que proporcione a su salida un nivel alto cada vez que en su línea de entrada se presente la secuencia 010.
2.- Diséñese un circuito detector de paridad para caracteres binarios de 4 bits, que se reciben en serie por una línea “e”. Una salida “z” debe ponerse a 1 si en el momento de llegar el cuarto bit el número de 1's es par y permanecer en 0 en caso contrario. Después del cuarto bit el sistema debe volver al estado inicial, quedando preparado para recibir el siguiente carácter.
3.- (Castillo encantado). Un ejemplo curioso (ASHBY, 1956 y reproducido en “Fundamentos de los Ordenadores” -G. Fernández y F. Sáenz) es el del castillo encantado:
mansión tuve la desagradable sorpresa de comprobar que está hechizada con dos sonidos de ultratumba que la hacen prácticamente inhabitable: un canto picaresco y una risa sardónica.
Sin embargo, aún conservo cierta esperanza, pues la experiencia me ha demostrado que su comportamiento obedece a ciertas leyes, oscuras pero infalibles, y que puede modificarse tocando el órgano y quemando incienso.
En cada minuto, cada sonido está presente o ausente. Lo que cada uno de ellos hará en el minuto siguiente depende de lo que pasa en el minuto actual, de la siguiente manera:
El canto conservará el mismo estado (presente o ausente) salvo si durante el minuto actual no se oye la risa y toco el órgano, en cuyo caso el canto toma el estado opuesto.
En cuanto a la risa, si no quemo incienso, se oirá o no según que el canto esté presente o ausente (de modo que la risa imita al canto con un minuto de retardo). Ahora bien, si quemo incienso la risa hará justamente lo contrario de lo que hacía el canto.
En el momento en que te escribo estoy oyendo a la vez la risa y el canto. Te quedaría muy agradecido si me dices qué manipulaciones de órgano e incienso debo seguir para restablecer definitivamente la calma”.