Está en la página 1de 24

Biestables

< Diseo de circuitos digitales y tecnologa de computadores


Revisin del 22:34 3 feb 2013 de Ralgisbot (discusin | contribuciones) (Bot: Convirtiendo o corrigiendo HTML; cambios triviales)
(dif) Revisin anterior | Revisin actual (dif) | Revisin siguiente (dif)

Los biestables son circuitos digitales capaces de almacenar un bit. Constituyen las clulas de memoria de los
sistemas secuenciales. Pueden ser:
Asncronos
Las variables de entrada actan directamente sobre sobre el sistema e influyen en las variables de
salida si se dan las condiciones necesarias.
Sncronos
Las variables de entrada actan sobre el sistema en los instantes en que se activa una entrada de
control o sincronismo.
Contenido
[ocultar]

1Biestables asncronos
o

1.1Biestable SR

1.2Biestable JK

2Biestables sncronos
2.1Biestables sincronizados por nivel

2.1.1Biestable SR (sincronizado por nivel alto)

2.1.2Biestable D (transparent latch)

2.2Biestables sincronizados por cambio de nivel (flip-flops)

2.2.1Biestable D maestro-esclavo

2.2.2Desinhibicin de un flip-flop

2.2.3Flip-flop SR (sincronizado por flanco descendente)

2.2.4Flip-flop JK (sincronizado por flanco ascendente)

2.2.5Flip-flop T

Biestables asncronos[editar]
Biestable SR[editar]
El biestable SR dispone de dos entradas denominadas R (RESET poner a 'cero') y S (SET poner a
'uno'), y dos salidas cuyo estado lgico es opuesto.
Entradas

Salidas

Qt+1

Qt+1

Accin

Qt

Qt

No cambia

SET

RESET

(combinacin prohibida)

Bloque funcional

El circuito del biestable SR puede realizarse con puertas NOR o NAND. En el circuito con puertas
NAND, las entradas S y R son activas a nivel bajo.

La ecuacin del prximo estado es una expresin algebraica que relaciona las entradas con el estado
actual para conocer el estado final. La ecuacin de prximo estado de un biestable SR viene dada por
la siguiente funcin Qt+1:
Qt

Qt+1

Qt+1 = S + RQt

Biestable JK[editar]
El biestable JK aprovecha la combinacin prohibida del biestable SR.

Qt+1

Accin

Qt

No cambia

RESET

SET

Qt

Cambia

Bloque funcional

El biestable JK puede implementarse a partir de un biestable SR:

Qt J K Qt+1 S R
0

0 0

0 X

0 1

0 X

1 0

1 1

0 0

X 0

0 1

1 0

X 0

1 1

S = JQt
R = KQt
Ecuacin del prximo estado:

Qt+1 = S + RQt = JQt+


KQt

Biestables sncronos[editar]
Adems de las entradas de informacin disponen de una entrada de control cuya misin es establecer
el instante en el que actan las entradas de informacin sobre el biestable.
Los biestables sncronos se clasifican en:

biestables sincronizados por nivel

biestables sincronizados por cambio de nivel (flip-flop)

Biestables sincronizados por nivel[editar]


Biestable SR (sincronizado por nivel alto)[editar]
C

Qt+1

Qt

Qt

SET

RESET

combinacin prohibida

Accin
No cambia

a) Circuito b) Bloque funcional

La etiqueta C1 representa una dependencia de control con respecto a las entradas R y S;


cuando C=0 el biestable no modifica su estado en funcin de R y S (se inhiben).
Las entradas asncronas son terminales adicionales sobre el biestable que sirven para establecer su
estado de salida con prioridad absoluta, es decir, si estn activas se ignora el estado de las otras
entradas de informacin y sincronismo. Normalmente son activas a nivel bajo.
Sa

Ra

Qt+1

Qt+1

Accin

combinacin prohibida

CLEAR

PRESET

Qt

Qt

no cambia

Bloque funcional

Qt

Qt

no cambia

RESET

SET

combinacin prohibida

Biestable D (transparent
latch)[editar]
Tiene una nica entrada de informacin. Se utiliza para almacenar un bit.

E D Qt+1
0 X

Qt

Ecuacin del
prximo estado
Qt+1 = Qt
Qt+1 = D

Bloque funcional
Circuito con puertas NOR

Biestables sincronizados por cambio de nivel (flip-flops) [editar]


Biestable D maestro-esclavo[editar]
El biestable maestro-esclavo (master-slave) est formado por dos biestables sincronizados por nivel,
interconectados por sus terminales de informacin (la salida del primero con la entrada del segundo) y
con sus entradas de sincronismo inversas (se dice que funcionan en contrafase). Al primer biestable se
le denomina maestro y al segundo, esclavo, seguidor o subordinado.
La figura siguiente muestra el circuito de un biestable D master/slave.

Cuanto C=0, el maestro est desconectado de su entrada de informacin (D IN) y el esclavo est
habilitado, mostrando en sus salidas (DOUT) el estado del maestro (DMSTR).
Cuando C=1, el esclavo se desconecta del maestro y mantiene el estado de salida (D OUT), mientras que
el maestro habilita su entrada de informacin (DIN).

En el instante en que C cambia de 0 a 1 (flanco descendente), el maestro se desconecta de su entrada


de informacin y el esclavo actualiza su estado, que est determinado por el que posee el maestro. El
biestable D master/eslave se comporta como un biestable sincronizado por flanco.
En el smbolo de un biestable D sincronizado por flanco, la entrada de sincronismo se representa
mediante un tringulo isosceles. Junto al smbolo de inversin lgica (crculo), indica que el biestable
est sincronizado por flanco descendente; en caso contrario (sin crculo), est sincronizado por flanco
ascendente:

Sincronizado por flanco ascendente

Sincronizado por flanco descendente

Desinhibicin de un flip-flop[editar]
En los sistemas secuenciales, la desinhibicin es diferente a la de los combinacionales. Su frmula es
siempre Qt+1=Qt, es decir, se mantiene el estado de salida.
El siguiente ejemplo muestra el circuito de desinhibicin del flip-flop D y el bloque funcional
correspondiente.

Flip-flop SR (sincronizado por flanco descendente)[editar]


Los esquemas siguientes representan el circuito de un biestable SR de tipo maestro/esclavo
sincronizado por flanco descendente y su bloque funcional.

Flip-flop JK (sincronizado por flanco ascendente)[editar]


Tabla de verdad
C

J K

Qt+1

X X

Qt

0
1

Bloque funcional
0 0

Qt

0 1

1 0

Circuito a partir de un flip-flop SR

1 1

Qt

Ejemplo de funcionamiento
Flip-flop T[editar]
Equivale a un flip-flop JK con las entradas J y K unidas.

Diseo de circuitos digitales y tecnologa de


computadores
Registros
< Diseo de circuitos digitales y tecnologa de computadores
Revisin del 12:15 5 jun 2013 de Savh (discusin | contribuciones) (Revertidos los cambios de 190.106.242.182 (disc.) a la ltima
edicin de Dualitas)
(dif) Revisin anterior | Revisin actual (dif) | Revisin siguiente (dif)

Un registro es un sistema secuencial sncrono constituido por un conjunto de flip-flops funcionando como
elementos de memoria (biestables D). Se emplean como elementos de memoria de reducida capacidad.
Contenido
[ocultar]

1Registros de entrada y salida en paralelo

2Registros de desplazamiento
o

2.1Registro de desplazamiento con salidas en paralelo

2.2Registro de desplazamiento con entradas paralelo sncronas

2.3Registro de desplazamiento de derecha a izquierda

2.4Registro de desplazamiento bidireccional

2.5Registro de desplazamiento universal

Registros de entrada y salida en paralelo[editar]


Los registros de entrada y salida en paralelo (o simplemente registros) se emplean como bancos de memoria.
Estn formados por biestables D activados por flanco o por nivel. El siguiente esquema muestra el circuito y el
bloque funcional de un registro de 4 bits sincronizado por flanco ascendente. El bloque funcional se caracteriza
porque carece de identificacin.

Registros de desplazamiento[editar]
En los registros de desplazamiento los biestables estn encadenados en serie a travs de sus terminales de
informacin, de manera que un impulso de sincronismo desplaza la informacin de un biestable a otro.

Se pueden agregar entradas y/o salidas paralelo a un registro de desplazamiento para obtener distintos tipos de
registros con diferentes aplicaciones:

Registro de desplazamiento con salidas en paralelo[editar]

El smbolo de calificacin general es SRGm (de Shift ReGister) donde 'm' indica el nmero de bits. La flecha
en la entrada de sincronismo significa desplazamiento hacia la derecha.

Registro de desplazamiento con entradas paralelo sncronas [editar]

La entrada D/C' (Desplazamiento/Carga) escoge el modo de funcionamiento del registro. Cuando vale 1
funciona como un registro de desplazamiento serie-serie y las entradas paralelo sncronas estn inhibidas.
Cuando vale 0 se inhibe el desplazamiento y la entrada serie, y se desinhiben las entradas paralelo sncronas
para la carga de datos en el registro.

Registro de desplazamiento de derecha a izquierda [editar]


El registro de desplazamiento de derecha a izquierda se obtiene conectando la salida de cada biestable
(excepto la del primero, que es la salida serie del registro) con la entrada de informacin de la etapa anterior. El
siguiente ejemplo muestra el circuito con biestables D y el bloque funcional:

Registro de desplazamiento bidireccional[editar]


Un registro bidireccional desplaza la informacin de izquierda a derecha, o de derecha a izquierda, en funcin
del estado lgico de una lnea de control. El siguiente ejemplo muestra el circuito y el bloque funcional de un
registro bidireccional de 3 bits.

Registro de desplazamiento universal[editar]


Un registro de desplazamiento bidireccional con entradas y salidas en paralelo se denomina registro de
desplazamiento universal. La figura siguiente muestra el bloque funcional de un registro universal de 3 bits.

M1

M0

Modo

Inhibido

Desplazamiento izda. a dcha.

Desplazamiento dcha. a izda.

Entradas paralelo sncronas

Programacin en VHDL
Apndices
Sntesis
< Programacin en VHDL | Apndices
Revisin del 14:15 21 nov 2013 de 87.220.251.255 (discusin) (Mquinas de estados)
(dif) Revisin anterior | Revisin actual (dif) | Revisin siguiente (dif)

Apndices

Sntesis

Apndices/Instalacin y uso de GHDL

Contenido

1Restricciones y Consejos

2Construcciones bsicas
o

2.1Descripcin de la lgica combinacional

2.2Descripcin de la lgica secuencial

3Mquinas de estados

4Lgica programable

La sntesis de un circuito consiste en abstraer la descripcin del circuito hasta conseguir un diseo puramente
estructural. Cualquier descripcin VHDL es sintetizable, independiente del nivel de abstraccin, evidentemente
no ser el diseo ms apropiado puesto que la velocidad que se requiere no se cumplir, pero su funcionalidad
si corresponder a lo descrito.
Hoy en da las herramientas de sntesis realizan la sntesis de forma eficiente, pero an no se encuentran tan
avanzadas para realizar la sntesis a partr de una descripcin de alto nivel, puesto que la optimizacin es
psima.

Restricciones y Consejos[editar]
En esta seccin se ver como interpreta algunas instrucciones en VHDL las herramientas de sntesis. Muchas
herramientas de sntesis realizan mal la sntesis de ciertas partes, por consiguiente el diseador debe facilitar
estas partes.
Es posible que el comportamiento que se obtiene en la simulacin sea la misma que en la sntesis, puesto que
en un circuito real existen retrasos o incluso el comportamiento puede variar. Adems dependiendo de la
herramienta de sntesis utilizada se obtedrn unos resultados u otros.

Evitar clusulas temporales y esperas. El uso de retrasos esta prohibido, puesto que el propio
sintetizador ignorar estos retrasos. Al igual que las esperas mediante el comando WAIT (no las listas de
sensibilidad mediante dicha palabra).
Identificadores de puertas claros.

Uso de funciones y mdulos. La divisin del cdigo ayuda a la sntesis del cdigo. Adems de la
posible reutilizacin.

Cuidado con las listas sensibles. Incluir las seales pertinentes para poder activar el proceso
oportuno.

Permitir discrepancia. Es posible asignaciones dl tipo s <= NOT s.

Inicializacin de variables y seales. Normalmente la sntesis no toma en cuenta ninguna


inicializacin, a menos que se disponga de un reset o algo parecido.

Seales de reloj. Slo se permite una seal de reloj por proceso, indicndola de la siguiente manera:
clk='1' and clk'event.

Asignaciones nicas.

Niveles lgicos. No se admiten todos los valores de una seal, como puede ser el don't care.

Evitar IF's anidados. Como mximo tres niveles, pero lo mejor es utilizar bloques CASE.

Construcciones bsicas[editar]
Existen dos formas de describir la lgica de un diseo, stas son combinacional o secuencial.

Descripcin de la lgica combinacional[editar]


Si la salida del circuito depende de una o varias entradas en ese mismo instante, es decir que lo sucedido
anteriormente no afecta a la salida, se podr describir como lgica combinacional.
Una seal la cual se le est asignando un valor no debe intervenir en dicha asignacin en caso de la ejecucin
concurrente. Ejemplo:

-- Combinacional
a <= b WHEN t = '1' ELSE c;
d <= b AND a;
-- Secuencial
a <= b WHEN t = '1' ELSE a;
d <= b AND d;

En caso de la ejecucin serie debe asegurarse que las seales de activacin de un proceso se encuentran en la
lista de sensibilidad. Tambin se deben contemplar todos los casos posibles cuando existen instrucciones
condicionales, en caso de que no se contemple alguna condiccin se tratara de un latch, por lo tanto se trata de
un elemento de memoria. Ejemplo:

-- Combinacional
PROCESS (b,c,d,e)
BEGIN
IF b = '1' THEN
d <= c;
ELSE
d <= '0';
END IF;
a <= d OR e;
END PROCESS;
-- Secuencial
PROCESS (b,c,d,e)
BEGIN
IF b = '1' THEN

d <= c;
END IF;
a <= d OR e;
END PROCESS;

Descripcin de la lgica secuencial[editar]


Si la salida del diseo implementado depende de la entrada actual y del estado anterior o de las entradas que
sucedieron, se deber realizar una descripcin secuencial.

Descripcin de cerrojos. Un cerrojo mantiene la salida a un valor cuando una seal de entrada la
activa. Es posible realizarlo de forma concurrente y serie.
Serie: Existen varias opciones.
No se consideran todas las opciones.

PROCESS (b,en)
BEGIN
IF en = '1' THEN
a <= b;
END IF;
END PROCESS;

No se especifican todas las seales en la lista de sensibilidad. La mayora de los sintetizadores incluyen
todas las seales que intervienen en el proceso de aignacin o consulta.

PROCESS (b)
BEGIN
a <= c OR b;
END PROCESS;

Concurrente: Cuando una seal interviene en la asignacin de s misma.

a <= b AND c WHEN t = '1' ELSE a;

Descripcin de seales de reloj. Una seal de reloj se obtiene en el instante de un flanco de


subida o bajada de una seal, en VHDL slo es posible una de ambas formas, es decir o
mediante la subida o la bajada, pero no ambas. nicamente es posible un nico reloj por
proceso, y a la hora de detectar dicho evento no debe haber un ELSE, ni tampoco negar el
evento con un NOT.

clk = '0' AND clk'event


clk = '1' AND clk'event

Cabe resaltar que existen expresiones equivalentes para estas descripciones de seales de reloj.

-- clk = '0' AND clk'event


falling_edge(clk)
-- clk = '1' AND clk'event
rising_edge(clk)

Decripcin de registros. Son como latches, pero la salida se activa en uno de los flancos.

PROCESS (clk, rst)


BEGIN
IF rst = '1' THEN
a <= '0'
ELSIF clk = '1' AND clk'event THEN
a <= b;
END IF;
END PROCESS;

Mquinas de estados[editar]
Lo ms comn a la hora de disear un circuito, es realizar su descripcin mediante una mquina de
estados. Una maquina de estados se compone de dos partes, una que calcula el siguiente estado
dependiendo de las entradas y del estado actual, y otra que calcula la salida.
Existen dos tipos de mquinas de estados, una las de Mealy, que son muy generales y su salida
depende del estado actual y las entradas, y la otra las de Moore, que son un subconjunto de las
anteriores, ya que la salida slo depende del estado actual.
A continuacin se muestra la elaboracin de una mquina de estados sncrona.

ENTITY maq_est IS
PORT (
clk : IN

std_logic;

rst : IN

std_logic;

: IN

std_logic_vector(3 downto 0);

: IN

std_logic;

: OUT std_logic_vector(3 downto 0));

END maq_est;
ARCHITECTURE syn OF maq_est IS
TYPE Type_state IS (stIDLE, stWAIT, stOPER);
SIGNAL state, next_state : Type_state;

BEGIN

-- syn

pSeq: PROCESS (clk, rst)


BEGIN

-- process pSeq

IF rst = '1' THEN


state <= stIDLE;
ELSIF clk'event AND clk = '1' THEN
state <= next_state;
END IF;
END PROCESS pSeq;
pCom: PROCESS (state, a, b)
BEGIN

-- process pCom

next_state <= state;


c <= (OTHERS => '0');
CASE state IS
WHEN stIDLE =>
IF b = '1' AND a = "1111" THEN
next_state <= stOPER;
ELSIF b = '1' THEN
next_state <= stWAIT;
END IF;
WHEN stWAIT =>
IF a = "1111" THEN
next_state <= stOPER;
END IF;
WHEN stOPER =>
c <= "1010";
IF b = '0' THEN
next_state <= stIDLE;
END IF;
WHEN OTHERS => null;
END CASE;
END PROCESS pCom;
END syn;

Lgica programable[editar]
Qu es un PLD (Dispositivo de Lgica Programable)
Un dispositivo lgico programable es un circuito integrado, formado por una matriz de puertas
lgicas y flip-flops, que proporcionan una solucion al diseo de forma anlogas, a las soluciones de

suma de productos, productos de sumas y multiplexores. La estructura bsica de una PLD permite
realizar cualquier tipo de circuito conbinacional basndose en una matriz formada por puertas AND,
seguida de una matriz de puertas OR. Tres son los tipos ms estendidos de PLD's, la PROM, PLA,
y la PAL.
PROM (Programmable Read Only Memory): Este tipo de dispositivo se basa en la utilizacin de
una matriz AND fija, seguida de una matriz OR programable. La matriz programable esta formada
por lneas distribuidas en filas y columnas en las cuales los puntos de cruce quedaran fijos por unos
diodos en serie con unos fusibles que sern los encargados de aislar las uniones donde no se
requiera la funcion lgica. La fase de programacin se realiza haciendo circular una corriente capaz
de fundir el fusible en aquellas uniones donde no se desee continuidad. Por otra parte, para cada
combinacion de las seales de entrada, el codificador activa una nica fila y a su vez activa aquella
columna a las que esta todava unida a travz del diodo.
PLA (Programmable Logic Array): Parecido en la dispositivo a la PROM, difiere de esta, en que
aqu en la PLD , ambas matrices, la de puertas And, as como la de puertas Or es programable, por
lo que nos vemos habilitados a incrementar el nmero de entradas disponibles, sin aumentar el
tamao de la matriz. Esta estructura permite una mejor utilizacin de los recursos disponibles en el
circuito integrado, de tal forma que se genera el mnimo numero de trminos necesarios para
generar una funcin lgica .
PAL (Programmable array Logic): Una PAL es diferente de una PROM a causa de que tiene una
red Y programable y una red O fija. Con un programador Prom podemos obtener los productos
fundamentales deseados quemando los eslabones y luego conseguir la suma lgica de dichos
productos mediante las conexiones fijas de salida.
FPGA (Field Programmable Gate Array): Una FPGA es la ultima tecnologia de dispositivos
programables. Se puede reprogramar y las ultimas veriones lo permiten de forma dinamica.
Implementan modulos programables, memorias, flip-flops e interconexiones. Lo que permite la
mayor flexibilidad en este tipo de despositivos. Se suele utilizar para equipos que se puedan
reprogramar y como dispositivos para realizar los TEST de equipos que parasar a fabricarse en
ASICs.

Autmatas secuenciales finitos


Detalles
ltima actualizacin el Lunes, 25 Noviembre 2013 20:25
Escrito por Biblioman

En este artculo vamos a ver como implementar con un ejemplo prctico un autmata
secuencial finito paso a paso, empezando por el desarrollo del DTE (Diagrama de Transicin de Estados),
construccin de la tabla de verdad, simplificacin a travs de los diagramas de Karnaugh, obtencin de las
ecuaciones de salida e implementacin y simulacin del circuito resultante. El desarrollo de circuitos con
autmatas secuenciales es una herramienta muy potente y cuya comprensin abre el camino a otras
tcnicas de desarrollo como son por ejemplo en los Microcontroladores los RTOS (Sistemas Operativos en
Tiempo Real).

En el desarrollo de sistemas digitales combinacionales las salidas de nuestro circuito en un momento dado
dependen nicamente de los valores de las entradas en ese momento. En un sistema secuencial adems del
valor de las entradas en un instante dado tenemos que tener en cuenta tambin el estado anterior por el
que ha pasado el sistema, por lo que ha estos circuitos se les suele llamar sistemas con memoria. Para
implementar esa memoria se suele utilizar biestables (flip-flop) memorias ROM. Pero...

A que se le llama un autmata secuencial finito?


Una definicin podra ser la siguiente: Un autmata es una mquina secuencial sncrona (controlada por una
seal de reloj) que se puede encontrar en uno de entre un nmero posible de estados, recibe una serie de
entradas binarias y en funcin de estas entradas y del estado particular en el que se encuentra, genera una
o varias salidas binarias determinadas. Se le llama finito por que el nmero de estados en el que puede
encontrarse el autmata tiene que quedar perfectamente determinado, de ah que a estos sistemas se les
llame tambin deterministas.
Siempre que hagamos el diseo de un circuito con autmatas secuenciales finitos podremos diferenciar en
l los siguientes elementos:
Una memoria que permite almacenar el estado actual del autmata.
Dos circuitos combinacionales, uno para calcular el estado siguiente del autmata y el otro para
hallar la salida.
Un diagrama de bloques del circuito sera el siguiente:

Bsicamente existen dos tipos de autmatas finitos: el autmata de Mealy y el autmata de Moore.

Autmatas de Mealy

En un Autmata de Mealy, tanto la salida del autmata como su estado siguiente, en un instante
determinado, depende tanto del estado en el que se encuentra el autmata en ese instante como de la
entrada entradas binarias introducidas.
Esto implica que un autmata de Mealy, estando en un determinado estado, puede evolucionar hacia
estados siguientes distintos y producir salidas distintas si se introduce una varias entradas binarias
distintas.
Un ejemplo en el que podemos ver los diferentes elementos que componen un diagrama de Transicin de
Estados de un Autmata de Mealy sera el siguiente:

En el podemos distinguir los siguientes elementos:


Estados: que se pueden definir como las posibles situaciones a las que puede llegar el autmata.
Transiciones: son los eventos producidos por las entradas y que producirn el cambio de un
estado a otro, en el sentido indicado por las flechas.
Un ejemplo de cmo debe leerse el diagrama para su comprensin sera el siguiente: desde el estado Q0,
con entradas 11, se pasa al estado Q1 y produce salida 0; desde el estado Q1, con entradas 00 se pasa al
estado Q0, y la salida ser igual a "1", y as para todas las posibles transiciones.
Para que el autmata sea determinista de cada estado deben de salir 2 elevado a n transiciones donde n es
el nmero de entradas.
Como vemos en el DTE (Diagrama de Transicin de Estados), la salida depende del estado en que nos
encontremos y del valor de las entradas.

Autmatas de Moore
Son aquellos en los cuales el estado siguiente, en un instante determinado, depende tanto del estado en el
que se encuentra el autmata como de la entrada o entradas binarias introducidas, pero la salida en ese
mismo instante slo depende del estado en el que se encuentra el autmata.
Esto implica que un autmata de Moore, estando en un determinado estado, produce siempre la misma
salida, independientemente de cul sea la entrada entradas de datos en ese estado.
Un ejemplo de un Diagrama de Estados de un Autmata de Moore sera el siguiente:

Como vemos en el DTE la salida depende del estado en que nos encontremos pero no del valor de la entrada
entradas de ese estado.
El diagrama debe de interpretarse de la siguiente forma: desde el estado 00 (en el cual siempre se da
salida 0) y con entrada E0=1 se pasa al estado 01 (en el que siempre tenemos salida 0), una vez que el
sistema a evolucionado a este nuevo estado y con entrada E0=1 se pasa al estado 10 con salida 0), y as
para todas las posibles transiciones.
Al igual que el autmata de Mealy de cada estado debe salir 2 elevado a n transiciones donde n es el
nmero de entradas.

Pero qu Autmata elegir para mis diseos?


La mayora de las veces suele ser una cuestin de gustos. Algunos puntos prcticos que diferencian a ambos
autmatas son los siguientes:
En Mealy la salida es obtenida antes que en Moore.
Mealy es ms gil y nervioso que Moore, que es ms ordenado y tranquilo.
Los diseadores tienen a Mealy por peligroso, ya que tiene cierto carcter asncrono.
Los estados en Mealy suelen o pueden ser ms abstractos que en Moore.
Mealy suele o puede tener menos estados que Moore, por tanto su implementacin resulta ms
econmica.
Suele ser ms cmodo obtener el DTE de Moore que el de Mealy, pero como he dicho antes suele
ser una cuestin de gustos. En el ejemplo prctico que vamos hacer utilizaremos a Moore.

Tablas de excitacin de los biestables


Si utilizamos biestables como dispositivo de memoria para almacenar el estado actual del autmata, estas
tablas nos sirven para relacionar el estado actual y el estado siguiente en que se encuentre el autmata con
las entradas del biestable. En el ejemplo prctico que vamos hacer veremos cmo utilizarlas para hacer la
tabla de verdad de nuestro autmata. Cada biestable tiene su propia tabla de excitacin, en la figura de
abajo se nuestra la tabla de excitacin para cada uno de los biestables existentes.

Ejemplo prctico

Vamos hacer un ejemplo prctico y lo vamos a resolver utilizando el modelo del autmata de Moore.
Se trata de resolver la parte de control de un pequeo robot de juguete que funciona a travs de un mando
a distancia. La caja de control dispone de dos pulsadores (I1 y I2) como entradas del sistema y de dos
salidas S0 y S1.
Se deben de cumplir las siguientes condiciones:
En estado de reposo (I1=I2=0) el robot no se mover.
Si se pulsa el pulsador I1 el robot se mover hacia adelante, continuando el movimiento al dejar
de presionar dicho pulsador.
Si se pulsan ambos pulsadores I1 y I2 a la vez el robot se mover hacia atrs, continuando el
movimiento al dejar de pulsarlos.
Si se pulsa el pulsador I2 el robot se parar.
Las seales de salida en funcin del movimiento del robot debern de ser las siguientes:
Si el robot est parado S0=S1=0
Si el robot se mueve hacia atrs S0=0 y S1=1
Y si el robot se mueve hacia adelante S0=1 y S1=0

Resolucin del ejemplo


Lo primero y ms importante que tenemos que hacer es dibujar nuestro diagrama de estados de transicin
(DTE), lo podemos dibujar directamente en un papel ayudarnos de algn software de los muchos que hay,
para la realizacin de este paso (al final del artculo pondr los enlaces de algunos de ellos). Hay que tener
en cuenta, que si nos equivocamos aqu, todo lo que hagamos despus no servir de nada. Una cosa que
siempre tenemos que comprobar es que sea un autmata determinista, para ello hay que comprobar que no
queden posibles estados sin definir. El DTE del ejemplo es el siguiente:

Como se ve en la figura nuestro DTE tiene tres estados llamados (Para, Adel, Atrs), que definen los tres
posibles estados de movimiento en los que se puede encontrar el robot.
Como vemos de cada estado salen 4 transiciones, contndose tambin las que salen y entran al mismo
estado. Como tenemos dos entradas, nuestro autmata es determinista (2 elevado a 2 igual a 4). Vamos a
ver un ejemplo de cmo habra que ir construyendo nuestro DTE.
Partimos del estado (Para) con entradas I1=I2=0 donde las salidas son S0=0 y S1=0, si pulsamos I1 (I1=1
, I2=0), se producir la transicin al estado (Adel) y la salida cambiar a S0=1 y S1=0 y el robot se mover
hacia adelante. Si ahora soltamos el pulsador (I1=0, I2=0), vemos que continuamos en el mismo estado y
por tanto el robot continuar movindose en la misma direccin, que es como se haba definido en las
condiciones del ejemplo. Pues de esta forma hay que ir comprobando todos los estados que definamos y
comprobando todas las posibles transiciones entre ellos.
Una vez dibujado y comprobado nuestro DTE. Debemos de construir la tabla de verdad, que en este ejemplo
ser la siguiente:

Vamos a ir viendo poco a poco como se ha construido esta tabla. En otros ejemplos los nombres de los
campos se mantendrn, aunque el nmero de columnas depender del nmero de estados que tenga
nuestro DTE as como del tipo de biestable que utilicemos.
Lo primero que tenemos que hacer es codificar los estados, resultado de hacer nuestro DTE. Como tenemos
tres estados (paro, adel y atrs) necesitaremos 2 bits.
Q1

Q0

Estado

paro

adelante

atras

Nos sobra la combinacin (1,1), hay que ponerla porque nos servir para simplificar las funciones de salida.
Las variables Q1 y Q0 necesarias para representar en binario cada uno de los estados, pasaran a formar
parte de las entradas de nuestro autmata y forman parte del circuito combinacional que habamos visto en
el diagrama de bloques para determinar el estado siguiente del autmata.
Otro dato a tener en cuenta y que ya podemos deducir con lo que llevamos hecho es que: el nmero de
Biestables necesarios en nuestro circuito depende de los bits en binario necesarios para representar todos
los estados. En este ejemplo como el nmero de estados necesita dos bits para su codificacin,
necesitaremos dos biestables. Tambin tendremos que decidir ahora el tipo de biestable que deseamos
utilizar, yo he utilizado el flip-flop tipo D, luego en el campo flip-Flop de la tabla aadiremos las columnas D0
y D1, que corresponden a las salidas de estos flip-flop y que pasaran a formar parte de las funciones de
salida de nuestro autmata.
Para tener los campos de las columnas de la tabla completa, tendremos que aadir como entradas I1 y I2
definidas como variables de entrada en nuestro ejemplo y como variables de salida aadiremos S0 y S1,
definidas tambin en el ejemplo. Aadiremos tambin las columnas del campo correspondiente al estado
siguiente de los flip-flop, que aunque no las he definido ni como entradas ni como salidas son necesarias,
para hallar el valor de las entradas de los biestables (veremos un ejemplo de cmo hacer esto).
Pues bien, una vez definidas todas las columnas que tendr nuestra tabla de verdad, es hora de empezar a
insertar filas con datos. Empezaremos con las variables de entrada: como tenemos cuatro (Q1, Q0, I2, I1)
necesitaremos 16 combinaciones para poder representar todos sus posibles valores, luego empezaremos a

rellenar las filas correspondiente a estas columnas, empezando con el valor (0000) y terminando con
(1111).
El siguiente paso es rellenar las filas correspondientes a las columnas del campo estado siguiente.
Cmo se hace esto?, pues con ayuda del DTE. Por ejemplo estoy en el estado presente paro (Q1=0,
Q1=0) si las variables de entrada son (I1=0, I2=0), miro en el DTE cul sera el estado siguiente, como la
transicin sale y entra al mismo estado, en las variables (t+1) de Q1 y Q0 tendr que poner cero en ambas
tambin y as igual para todas las combinaciones posibles de Q1 Q0 correspondientes al estado presente.
Los siguientes campos a rellenar son las entradas de los Flip-Flop en este caso D0 y D1, para ello
necesitamos la ayuda de la tabla de excitacin del biestable. Mira la figura de abajo, donde se calcula el
valor que tiene que tener D1 para una fila en concreto:

Como veis se trata de ir viendo que valores le corresponde a la entrada del flip-flop segn los valores Q(t) y
Q(t+1) que tengamos en cada fila.
Ya solo queda rellenar los valores del campo variables de salida (S1 y S0). Lo podemos hacer fcilmente
mirando el DTE. Y poniendo los valores de la salida en funcin del estado presente en que nos encontremos.
Nota: en este ejemplo coincide por casualidad la codificacin del estado con el valor de las variables de
salida, pero es una simple coincidencia.
Pues ya tenemos nuestra tabla de verdad completa. Ahora toca obtener las funciones de salida, previamente
es aconsejable obtener las expresiones mnimas por un mtodo de simplificacin como losdiagramas de
Karnaugh.

Una vez obtenida las funciones de salida simplificadas, ha llegado la hora de construir nuestro circuito y
simularlo. Lo podemos hacer con Proteus, pero existe otro IDE que es perfecto por su sencillez para este tipo
de circuitos. Se trata logisim, que adems se puede descargar de forma gratuita desde la pgina del autor,
el circuito terminado sera el siguiente:

Fuentes de informacin
Autmatas finitos (wikipedia)
IDE chalchalero
IDE BOOLE-DEUSTO
Logisim
El DTE y el esquema del circuito con logisim lo tenis aqu.
Para saber como implementar un autmata secuencial finito en un PIC mirar este artculo.