Documente Academic
Documente Profesional
Documente Cultură
Objetivos:
- Análisis de circuitos secuénciales sincrónicos (CSS).
- Conocer un método de diseño de CSS.
- CSS realizados con PLD, programación con VHDL.
- Aplicaciones.
Sumario:
- Introducción.
- Análisis de CSS.
- Método manual de diseño de CSS
- Diseño de CSS con VHDL
- Ejemplos.
Bibliografía:
Monografia, Alberto Hernandez, capitulo 1, Introducción al diseño digital de circuitos lógicos secuenciales, 2002.
Digital Design Principles and Practices. John F. Wakerly, Second edition, Prentice Hall, 2000
Analisis, Capitulo: VII , paginas: 550 a 562
Diseño, Capitulo: VII , paginas: 563 a 604, 641 a 644, 747 a 787
1
Electrónica Digital II Diseño de Circuitos Secuénciales Sincrónicos
Profesor Víctor Escartín
Introducción.
En el diseño de CSS se pueden emplear varios métodos, dependiendo del nivel de integración de las componentes que se utilicen.
1. Construir una tabla de estado/salida correspondiente a la descripción en palabras, utilizando nombres nemotécnicos para los
estados. También es posible partir de un diagrama de estado.
2. (opcional) Minimizar el número de estados en la tabla de estado/salida.
3. Seleccionar un conjunto de variables de estado y asignar combinaciones a las variables de estado.
4. Sustituir la combinación de las variables de estados en la tabla de estado / salida.
5. Seleccionar el tipo de flip-flop.
6. Construir la tabla de excitación.
7. Obtener las ecuaciones de excitación.
8. Obtener las ecuaciones de salida.
9. Dibujar el diagrama lógico.
En esta sección se describirá cada uno de estos pasos básicos para el diseño de una maquina secuencial sincrónica. El primer paso es el
más importante, ya que es en este, donde el diseñador realmente diseña. En el mismo se pasa por el creativo proceso de trasladar
desde una descripción en palabra de la máquina de estados hasta una descripción tabular de la misma. El segundo paso es algo difícil
aún para diseñadores experimentados, aunque el tercer paso también necesita de experiencia. Los siguientes pasos se realizan
siguiendo un proceso de diseño bien definido.
El orden en que se ponga las combinaciones de las entradas no tiene importancia en esta parte del diseño pero se escribe en el mismo
orden que en los mapas de Karnaugh para facilitar posteriormente la obtención de las ecuaciones de excitación.
En una máquina Mealy se omite la columna de la salida y se escribe el valor de la salida para cada combinación de las variables de
entrada. La primera columna es simplemente una observación sobre el significado de cada estado o la historia asociada con él.
La descripción en palabra no es específica acerca de lo que pasa cuando esta máquina es inicializada por lo que hay que improvisar.
Supondremos que cuando el equipo se enciende la máquina entra en un estado inicial, identificado como INIT en este ejemplo. Se
escribe el nombre del estado inicial (INIT) en la primera fila y se deja el espacio suficiente para completar el diseño. También se llena
en la columna de la salida el valor correspondiente al estado INIT, por sentido común este debe ser 0 ya que no hay historia anterior a
este estado. Ahora hay que escribir en los estados futuros a partir del estado INIT. La salida Z no puede ser 1 hasta que se observe
durante dos periodos de reloj la entrada A, por lo que crearemos dos estados A0 y A1. Estos recordaran los valores de A en los relojes
anteriores ver figura 2. En estos dos estados la salida es cero ya que no se ha satisfecho la primera condición para que la salida sea 1.
El significado preciso del estado A0 es que se obtuvo un cero en A en el reloj anterior además como Z = 0 esto implica que en él reloj
anterior a este A fue igual a uno, porque sino Z debería ser 1, además B = 0 desde que un par de relojes antes con dos A iguales.
El significado para el caso de A1, es que en el reloj anterior a este A = 0, y B = 0, para garantizar Z = 0.
En este momento ya sabemos que esta máquina tiene al menos tres estados.
Para seguir es mejor ir recorriendo el camino para lograr que la salida se active. Por lo que en el estado A0, si de nuevo A0 es cero
entonces iremos a un nuevo estado con la salida en 1 y que denominaremos OK según se muestra en la figura 3.
En el estado inicial si A = 1 no podemos tener dos entradas iguales en una fila, por lo que vamos al estado A1 para recordar que hemos
recibido un 1. En forma similar ocurrirá con OK, ver figura 4.
Si estamos en el estado OK, la descripción en palabras nos dice que debemos permanecer en este estado mientras que B = 1
independiente de A. Si B = 0 hay que volver a esperar por dos 0 o dos 1 en la entrada A. En este caso ocurre un pequeño problema. La
entrada A actual puede ser el segundo valor igual o no, por lo que en caso afirmativo habría que seguir en el estado OK o volver a A0
o A1.
3
Electrónica Digital II Diseño de Circuitos Secuénciales Sincrónicos
Profesor Víctor Escartín
Hasta aquí hemos definido el estado OK no muy precisamente, este estado no recuerda lo suficiente como para decirnos que camino
seguir. este problema se puede resolver según se muestra en la figura 6. En la cual se ha separado el estado OK en dos estados
identificados como OK00 y OK11 que recuerdan el valor de la entrada A. Los siguientes estados se pueden seleccionar de los ya
existentes, como se muestra en la figura 7. Por ejemplo si en OK00, A = 0 debemos permanecer en OK00, no hay que crear un nuevo
estado que recuerde que han ocurrido tres ceros seguidos en A, ya que la máquina no necesita recordar este caso. De este modo
cerramos la tabla de estado con un número finito de estados.
Minimización de estados
La figura 7 es una tabla de estado mínima para nuestra descripción en palabras ya que contiene el menor número posible de estados.
En la figura 8 se muestra una tabla de estados con más estados que los necesarios. Existe un procedimiento para minimizar el número
de estados en estos casos. La idea básica es identificar estados equivalentes. Estos no dependen solo de tener la salida igual sino
también del valor de las variables de estado internas. Dos estados equivalentes pueden sustituirse por uno solo.
Dos estados son equivalentes si se cumplen dos condiciones:
-Deben producir la misma salida, en una máquina Mealy esto debe ser cierto para todas las combinaciones de las variables de entrada.
-Para cada combinación en las entradas deben tener el mismo estado futuro.
En el ejemplo de la figura 8 los estados OK00 y OKA0 son equivalentes porque producen la misma salida y tienen los mismos estados
futuros. En forma similar puede plantearse que OK11 y OKA1 también son equivalentes y pueden sustituirse por uno de los dos.
4
Electrónica Digital II Diseño de Circuitos Secuénciales Sincrónicos
Profesor Víctor Escartín
Los procedimientos de simplificación son raramente utilizados por los diseñadores. Con un cuidadoso diseño para problemas no muy
complejos se pueden lograr tablas de estados mínimas o casi mínimas sin tener que utilizar procedimientos de simplificación. Además
hay casos en que incrementar el número de estados puede simplificar el diseño. En general es más importante tratar de simplificar
durante la etapa de asignación de estados.
Asignación de estados.
El siguiente paso es determinar cuantas variables binarias son requeridas para representar los estados de la tabla de estados y asignar
una combinación específica a cada estado. Llamaremos a la combinación binaria asignada a un estado particular un estado codificado.
El número total de estados en una máquina con N flip- flops es 2N, por lo que el número de flip-flops necesarios para codificar S
estados es log2[s].
El ejemplo que hemos venido analizando cuya tabla de estado/salida fue mostrada en la figura 7, tiene 5 estados por lo que requiere 3
flip-flops. Desde luego que 3 flip-flops producen hasta 8 estados, por lo que en este caso tendremos 8 - 5 = 3 sin utilizar.
El total de opciones que tenemos para seleccionar M códigos de un total de N esta dado por los coeficientes binomiales lo que se
representa por [NM] y se calcula en base a:
N!
En nuestro ejemplo hay [85] modos diferentes de seleccionar 5 códigos de 8 estados posibles y 5! modos de
( M !*(N − M )!)
asignar los 5 nombres a cada selección. Es decir hay:
[(8!)/(5!*3!)]*5! = 6720 modos diferentes de asignar los 5 estados de nuestro ejemplo a las combinaciones de tres variables binarias.
Lo que resulta imposible de analizar.
La asignación más simple resulta en utilizar la numeración binaria en su orden. Sin embargo este orden no siempre da el circuito más
simple y por lo tanto el más económico.
¿Como seleccionar la mejor asignación de estados para un problema dado? En general la única forma de encontrar la mejor
asignación es probar todas las variantes posibles. Lo que es prácticamente imposible, por lo que hay que acudir a la experiencia y a
algunas reglas practicas para lograr una asignación de estados razonable:
-Seleccionar un código para el estado inicial en el cual la máquina pueda ser fácilmente forzada al ser reseteada (00 o 11).
-Minimizar el número de variables de estados que cambian en una transición.
-Maximizar el número de variables de estados que no cambian en un grupo de estados relacionados, es decir un grupo de estados en
los cuales la mayoría de las transiciones esten en ese grupo.
-Explotar las simetrías que presente el problema en particular con las correspondientes simetrías en la tabla de estados. Supongamos
por ejemplo que un estado o un grupo de estados significan casi la misma cosa. una vez que la asignación ha sido realizada para el
primero, una asignación similar que se diferencie en solo un bit debe utilizarse para el segundo.
-Si hay estados sin utilizarse, utilizar lo mejor de los estados disponibles para lograr los resultados deseados. O sea no limitar a los
primeros números binarios.
-Descomponer el conjunto de variables de estados en bits o campos individuales donde cada bit o campo tiene un significado definido
con respecto al efecto de las entradas o al comportamiento de las salidas.
-Considerar el utilizar más del mínimo número de variables de estado para lograr un mejor resultado.
Algunas de estas ideas estan incorporada en las asignaciones de estados presentes en la figura 9.
En la columna encabezada por descompuesto el estado inicial es el 000 que es fácilmente realizable con el terminal de reset de los
biestables. Esta asignación aprovecha en que solo hay 4 estados además del inicial en el cual no se vuelve a entrar. Por lo tanto Q1 = 0,
5
Electrónica Digital II Diseño de Circuitos Secuénciales Sincrónicos
Profesor Víctor Escartín
puede utilizarse para indicar que se esta en el estado INIT. Q2 y Q3 pueden utilizarse para la selección de los otros 4 estados posibles.
En la figura 9 los otros 4 estados aparecen con la asignación correspondiente con el conteo binario, pero esto es una casualidad. Q2 y
Q3 tienen significado relacionado con las entradas y salidas. Q3 señala el valor anterior de A y Q2 que la condición de que la salida es
1 fue satisfecha en el estado actual.
Descomponiendo el significado de los bits que identifican a los estados como hemos hecho en este ejemplo esperamos que la lógica
que se requiera para el próximo estado y la salida sea más simple que una asignación arbitraria.
La asignación identificada como one-hot, también da resultados satisfactorios. Utiliza más del mínimo número de variables de estados,
utiliza un bit por estado. Presenta la ventaja de que usualmente requiere de ecuaciones de excitación muy simples ya que cada flip-flop
solo tiene que ir a 1 en un solo estado. Una desventaja es que si hay muchos estados se necesitan muchos flip- flops. Es ideal para
máquinas con S estados que requieran de un 1 para indicar su estado y por lo tanto no necesitan de circuitos.
La última columna de la figura 9 utiliza una combinación "no-hot" para su estado inicial la cual es más facil de lograr en general y en
caso de que este estado no se vuelva a necesitar esto no tiene implicaciones.
Hay dos recomendaciones para el caso que existan estados sin utilizar:
-Mínimo riesgo. (Minimal risk)
Esta aproximación considera que es posible que la máquina pueda caer en uno de los estados no utilizados (quizás por un
fallo del hardware, por una entrada no esperada o por un error en el diseño), por lo que se debe prever que de estos estados
avance al estado inicial o a un estado "seguro". Esto puede ser una consecuencia automática de alguna metodología de
diseño, si el estado inicial es codificado por 00.
-Mínimo costo. (Minimal cost).
En este caso se considera que la máquina nunca entra en un estado no utilizado. Por lo que en las tablas de transición y de
excitación los estados siguientes a los no utilizadas se identifican como "don't-cares".
El próximo paso es escribir la tabla de excitación, que muestra para cada estado codificado y cada entrada del sistema la excitación
que se requiere en cada entrada de los flip-flops a utilizar para que avancen al estado siguiente. Esta claro esta depende del tipo de
flip-flop que se utilice.
En este ejemplo utilizaremos flip-flop tipo D, cuya ecuación característica es Q* = D y cuya tabla de excitación se muestra en la figura
11.
6
Electrónica Digital II Diseño de Circuitos Secuénciales Sincrónicos
Profesor Víctor Escartín
QN QN+1 D
0 0 0
0 1 1
1 0 0
1 1 1
Dada la ecuación característica del Flip-Flop D y que tiene una sola entrada la tabla de excitación y la de transición son iguales
excepto en que en esta última lo que se representan son las entradas D y en la otra son las salidas Q, que en este caso coinciden. En
base a lo anterior podemos plantear que para el flip-flop tipo D no hay que escribir la tabla de excitación sino una sola que podemos
identificar como tabla de transición/excitación. La tabla de excitación es semejante a una tabla de verdad para tres funciones lógicas
combinacionales (D1, D2, D3) de 5 variables (A, B, Q1, Q2, Q3).
A continuación en la figura 12, se muestran los mapas de Karnaugh para el ejemplo anterior considerando que de los estados no
utilizados se obligue al estado inicial (mínimo riesgo).
En la figura 13, se muestra los mapas para el caso que se consideren los estados no utilizados como don't-care (mínimo costo).
Figura 12 Mapas de Karnaugh del ejemplo, considerando que todos los estados opcionales fuerzan al estado inicial.
Q1 = 0 Q1 = 1
AB AB
Q2 Q3 00 01 11 10 Q2 Q3 00 01 11 10
00 1 1 1 1 00 1 1 1 1
01 0 0 0 0 01 1 1 1 1
11 0 0 0 0 11 1 1 1 1
10 0 0 0 0 10 1 1 1 1
D1 = Q1 +/Q2 /Q3
Q1 = 0 Q1 = 1
AB AB
Q2 Q3 00 01 11 10 Q2 Q3 00 01 11 10
00 0 0 0 0 00 1 1 0 0
01 0 0 0 0 01 0 0 1 1
11 0 0 0 0 11 0 1 1 1
10 0 0 0 0 10 1 1 1 0
D2 = Q1 /Q3 /A + Q1 Q3 A + Q1 Q2 B
Q1 = 0 Q1 = 1
AB AB
Q2 Q3 00 01 11 10 Q2 Q3 00 01 11 10
00 0 0 1 1 00 0 0 1 1
01 0 0 0 0 01 0 0 1 1
11 0 0 0 0 11 0 0 1 1
10 0 0 0 0 10 0 0 1 1
D3 = Q1 A + Q2' Q3' A
7
Electrónica Digital II Diseño de Circuitos Secuénciales Sincrónicos
Profesor Víctor Escartín
Figura 13. Mapas der Karnaugh del ejemplo, considerando que todo los estados opcionales sean don't-care.
Q1 = 0 Q1 = 1
AB AB
Q2 Q3 00 01 11 10 Q2 Q3 00 01 11 10
00 1 1 1 1 00 1 1 1 1
01 x x x x 01 1 1 1 1
11 x x x x 11 1 1 1 1
10 x x x x 10 1 1 1 1
D1 = 1
Q1 = 0 Q1 = 1
AB AB
Q2 Q3 00 01 11 10 Q2 Q3 00 01 11 10
00 0 0 0 0 00 1 1 0 0
01 x x x x 01 0 0 1 1
11 x x x x 11 0 1 1 1
10 x x x x 10 1 1 1 0
D2 = Q1 /Q3 /A + Q3 A + Q2 B
Q1 = 0 Q1 = 1
AB AB
Q2 Q3 00 01 11 10 Q2 Q3 00 01 11 10
00 0 0 1 1 00 0 0 1 1
01 x x x x 01 0 0 1 1
11 x x x x 11 0 0 1 1
10 x x x x 10 0 0 1 1
D3 = A
Z = Q1 Q2 (mínimo riesgo)
Z = Q2 (mínimo costo)
Ejemplo # 2.
Diseñar un circuito secuencial sincrónico con dos entradas X, Y y una sola salida Z. La salida debe ser 1, si el número de unos en las
entradas X y Y desde que la máquina comenzó es múltiplo de 4 y la salida es cero en los otros casos.
Paso No 1. Tabla de estado, ver la figura 14
Estado
Estado futuro (S*)
Presente
XY
Observación S 00 01 11 10 Z
Solo ceros S0 S0 S1 S2 S1 1
Primer 1 S1 S1 S2 S3 S2 0
Segundo 1 S2 S2 S3 S0 S3 0
Tercer 1 S3 S3 S0 S1 S0 0
8
Electrónica Digital II Diseño de Circuitos Secuénciales Sincrónicos
Profesor Víctor Escartín
La asignación es la misma que la utilizada en los mapas de Karnaugh por dos razones:
-Se minimiza el número de cambio entre transiciones.
-Simplifica la realización de la tabla de excitación
XY XY
Q2 Q1 00 01 11 10 Q2 Q1 00 01 11 10
00 0 1 1 1 00 0 0 1 0
01 1 1 0 1 01 0 1 1 1
11 1 0 0 0 11 1 1 0 1
10 0 0 1 0 10 1 0 0 0
D1 D2
D2 = Q2 /X /Y + Q1 /X Y + /Q2 X Y + Q1 X /Y
Z = /Q2 /Q1
9
Electrónica Digital II Diseño de Circuitos Secuénciales Sincrónicos
Profesor Víctor Escartín
J K
XY XY
Q2 Q1 00 01 11 10 Q2 Q1 00 01 11 10
00 0 1 1 1 00 x 0 0 0
01 x x 0 x 01 0 0 1 0
11 x 0 0 0 11 0 1 1 1
10 0 0 1 0 10 x x 0 x
J K
XY XY
Q2 Q1 00 01 11 10 Q2 Q1 00 01 11 10
00 0 0 1 0 00 x x 0 x
01 0 1 1 1 01 x 0 0 0
11 x x 0 x 11 0 0 1 0
10 x 0 0 0 10 0 1 1 1
Ejemplo # 3
Diseñar una cerradura combinacional, que se abre para una cierta secuencia binaria. Esta máquina secuencial sincrónica tiene una
entrada X y dos salidas UNLK y HINT. La salida UNLK debe ser 1 si y solo si X = 0 y la secuencia de entradas recibida en los 7
relojes anteriores fue 0110111. La salida HINT debe ser 1 solo si el valor actual de X es el correcto en la secuencia.
Esta es una máquina Mealy para las dos salidas ya que las dos dependen de la historia anterior y del valor actual en X.
En la figura 16 se muestra la tabla de estados.
En A se considera que no se ha recibido ningún bit de la secuencia correcta. Son 8 estados por lo que se necesitan 3 flip- flops y no
sobran estados en este caso se utilizará la asignación más simple o sea el conteo binario. En la figura 17 se presenta la tabla de estado /
salida.
10
Electrónica Digital II Diseño de Circuitos Secuénciales Sincrónicos
Profesor Víctor Escartín
Q3 Q2 Q1 X
0 1
000 001,01 000,00
001 001,00 010,01
010 001,00 011,01
011 100,01 000,00
100 001,00 101,01
101 001,00 110,01
110 100,00 111,01
111 001,11 000,00
Q3*, Q2*, Q1*, UNLK, HINT
X Q3 X Q3
Q2 Q1 00 01 11 10 Q2 Q1 00 01 11 10
00 1 1 1 0 00 0 0 0 0
01 1 1 0 0 01 0 0 1 1
11 0 1 0 0 11 0 0 0 0
10 1 0 1 1 10 0 0 1 1
D1 = /Q2 /X + /Q2 /Q1 Q3 + Q2 /Q1 X + Q1 X Q3 + /Q1 /X /Q3 D2 = /Q2 Q1 X + Q2 /Q1 X
X Q3 X Q3
Q2 Q1 00 01 11 10 Q2 Q1 00 01 11 10
00 0 0 1 0 00 1 1
01 0 0 1 0 01 1 1
11 1 0 0 0 11 1 1
10 0 1 1 0 10 1 1
D3 = Q2 Q1 /X /Q3 + Q2 X Q3 + Q2 /Q1 Q3 HINT = /Q2 /Q1 /X /Q3 + Q2 Q1 /X + Q2 /Q1 X + /Q2 Q1 X + /Q2 X Q3
UNLK = Q1 Q2 Q3 /X
11
Electrónica Digital II Diseño de Circuitos Secuénciales Sincrónicos
Profesor Víctor Escartín
Sentencia IF. Se utiliza para escoger en función de alguna condición que sentencias deben ejecutarse.
IF condición # 1 THEN sentencia_secuencial;
ELSIF condición # 2 THEN sentencia_secuencial;
ELSE sentencia_secuencial;
END IF;
Enumeration TYPES (Tipos Enumerados). Es una lista del conjunto de todos los posibles valores que un objeto de ese
tipo puede tener. Se llama tipo enumerado porue en la lista se enumeran todos y cada uno de los valores que forman el
tipo. Se suele utilizar para decir los estados en una maquina de estados. Ejemplo:
CASE-WHEN
Se utiliza para escoger que grupo de sentencias deben ejecutarse entre un conjunto de posibilidades, basándose en el rango
de valores de una determinada expresión de selección.
CASE Selection_Signal IS
WHEN value_1_of_Selection_Signal => (do something)
WHEN value_2_of_Selection_Signal => (do something)
WHEN last_value_of_Selection_Signal => (do something)
END CASE;
13
Electrónica Digital II Diseño de Circuitos Secuénciales Sincrónicos
Profesor Víctor Escartín
Ejemplo 4
Diseñar la maquina definida por el diagrama de estado mostrado en la siguiente figura.
/X, /Z X, Z
S0 S1
X, /Z
X, Z
X, /Z
/X, /Z
S2 S3
X, /Z
/X, Z
LIBRARY IEEE;
USE IEEE.Std_Logic_1164.ALL;
PROCESS (Reset,CLK)
14
Electrónica Digital II Diseño de Circuitos Secuénciales Sincrónicos
Profesor Víctor Escartín
BEGIN
IF Reset='0' THEN Estado <= S0;
ELSIF CLK' Event AND CLK = '1' THEN Estado <= Nxt_Estado;
END IF;
END process;
END;
z= estadoSBV_0.Q * estadoSBV_1.Q
+ x * estadoSBV_1.Q
estadoSBV_0.AR = /reset
estadoSBV_0.SP = GND
estadoSBV_0.C = clk
estadoSBV_1.D = /x * /estadoSBV_1.Q
+ estadoSBV_0.Q
estadoSBV_1.AR = /reset
estadoSBV_1.SP = GND
estadoSBV_1.C = clk
15
Electrónica Digital II Diseño de Circuitos Secuénciales Sincrónicos
Profesor Víctor Escartín
Ejemplo 5.
Veamos otro ejemplo del estilo explicito, que es una variante del problema anterior utilizando la misma tabla de estado
anterior.
LIBRARY IEEE;
USE IEEE.Std_Logic_1164.ALL;
END;
DESIGN EQUATIONS
z= estadoSBV_0.Q * estadoSBV_1.Q
+ x * estadoSBV_1.Q
estadoSBV_0.AR = /reset
estadoSBV_0.SP = GND
estadoSBV_0.C = clk
estadoSBV_1.D = /x * /estadoSBV_1.Q
+ estadoSBV_0.Q
estadoSBV_1.AR = /reset
estadoSBV_1.SP = GND
estadoSBV_1.C = clk
Ejemplo # 6
Diseñe una maquina de estado sincrónica tipo MOORE con una entrada X y una salida W, tal que W = 1 cuando ocurra una
cualquiera de las secuencias 10101 ó 10110 en la variable de entrada. En cualquier otro caso W = 0. Se admite superposición de
secuencias.
EP X W
0 1
A A B 0
B C B 0
C A D 0
D E F 0
E A G 0
F H B 0
G E F 1
H A D 1
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY EJ4 IS
PORT (X, CLK: IN Std_logic;
W: OUT Std_Logic);
17
Electrónica Digital II Diseño de Circuitos Secuénciales Sincrónicos
Profesor Víctor Escartín
END EJ4;
DESIGN EQUATIONS
w= estadoSBV_0.Q * estadoSBV_1.Q
estadoSBV_0.C = clk
estadoSBV_1.C = clk
estadoSBV_2.C = clk
Ejemplo # 7
Igual al ejemplo #4, pero añadiéndole:
ATTRIBUTE STATE_ENCODING OF ESTADOS TYPE IS one_hot_zero;
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY EJ5 IS
PORT (X, CLK: IN Std_logic;
W: OUT Std_Logic);
END EJ5;
DESIGN EQUATIONS
estadoSBV_1.D = /x * estadoSBV_0.Q
estadoSBV_1.C = clk
estadoSBV_5.D = x * estadoSBV_3.Q
estadoSBV_5.C = clk
estadoSBV_6.D = /x * estadoSBV_4.Q
estadoSBV_6.C = clk
/w = /estadoSBV_5.Q * /estadoSBV_6.Q
estadoSBV_0.C = clk
estadoSBV_4.D = x * estadoSBV_2.Q
+ estadoSBV_5.Q * x
estadoSBV_4.C = clk
estadoSBV_2.D = x * estadoSBV_1.Q
+ estadoSBV_6.Q * x
estadoSBV_2.C = clk
20
Electrónica Digital II Diseño de Circuitos Secuénciales Sincrónicos
Profesor Víctor Escartín
estadoSBV_3.D = /x * estadoSBV_2.Q
+ estadoSBV_5.Q * /x
estadoSBV_3.C = clk
Ejemplo # 8
Igual al ejemplo #4, pero añadiéndole:
ATTRIBUTE STATE_ENCODING OF ESTADOS TYPE IS Gray;
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY EJ6 IS
PORT (X, CLK: IN Std_logic;
W: OUT Std_Logic);
END EJ6;
DESIGN EQUATIONS
w= estadoSBV_0.Q * /estadoSBV_1.Q
estadoSBV_0.C = clk
estadoSBV_1.C = clk
estadoSBV_2.C = clk
Ejemplo # 9
Igual al ejemplo #4, pero con la salida registrada codificada a partir de los bits de estados.
En este caso es necesario realizar la codificación manual garantizando que exista un bit del código que tome el valor 1 solamente
en los estados donde la salida es 1. En los demás estados este bit tuene que ser 0. Lo anterior permite identificar este bit con la
salida de la maquina de estado. En esta maquina la salida es 1 en los estados G y H por tanto una codificación posible es la
siguiente.
Estado Asignación
A 0000
B 0001
C 0011
D 0010
E 0110
F 0111
G 1111
H 1110
22
Electrónica Digital II Diseño de Circuitos Secuénciales Sincrónicos
Profesor Víctor Escartín
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY EJ6 IS
PORT (X, CLK: IN Std_logic;
W: OUT Std_Logic);
END EJ6;
BEGIN
PROCESS (CLK)
BEGIN
IF (CLK'Event AND CLK = '1') THEN
CASE estado IS
WHEN A => IF X = '1' THEN estado <= B;
ELSE estado <= A;
END IF;
WHEN B => IF X = '1' THEN estado <= B;
ELSE estado <= C;
END IF;
WHEN C => IF X = '1' THEN estado <= D;
ELSE estado <= A;
END IF;
WHEN D => IF X = '1' THEN estado <= F;
ELSE estado <= E;
END IF;
WHEN E => IF X = '1' THEN estado <= G;
ELSE estado <= A;
END IF;
WHEN F => IF X = '1' THEN estado <= B;
ELSE estado <= H;
END IF;
WHEN G => IF X = '1' THEN estado <= F;
ELSE estado <= E;
END IF;
WHEN H => IF X = '1' THEN estado <= D;
ELSE estado <= A;
END IF;
WHEN OTHERS => estado <= A;
END CASE;
END IF;
23
Electrónica Digital II Diseño de Circuitos Secuénciales Sincrónicos
Profesor Víctor Escartín
END Process;
-- salida combinacional
W <= '1' WHEN (estado = G) OR (estado = H) ELSE '0';
END;
DESIGN EQUATIONS
estado_3.C = clk
estado_2.C = clk
estado_1.C = clk
estado_0.C = clk
Ejemplo # 10
Igual al ejemplo #4, pero con la salida registrada decodificada a partir de los bits de estados.
Para esto es necesario escribir la tabla de estado excitación de la salida en lugar de la tabla estados /salida.
ES W*
EP X X
0 1 0 1
A A B 0 0
B C B 0 0
C A D 0 0
D E F 0 0
E A G 0 1
F H B 1 0
G E F 0 0
H A D 0 0
24
Electrónica Digital II Diseño de Circuitos Secuénciales Sincrónicos
Profesor Víctor Escartín
-- Proyecto: CSS_1
-- EJ_7
-- 16V8
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY EJ7 IS
PORT (X, CLK: IN Std_logic;
W: OUT Std_Logic);
END EJ7;
DESIGN EQUATIONS
w.C = clk
estadoSBV_0.C = clk
estadoSBV_1.C = clk
estadoSBV_2.C = clk
Ejemplo # 11
Igual al ejemplo #4, pero considerando que la maquina es del tipo Mealy
EP ES,W
X
0 1
A A,0 B,0
B C,0 B,0
C A,0 D,0
D E,0 F,0
E A,0 D,1
F C,1 B,0
La salida W es asincrónica, pues cuando se alcanza el estado E o F, W = 1 en función del valor que tenga la entrada X.
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY EJ8 IS
PORT (X, CLK: IN Std_logic;
W: OUT Std_Logic);
END EJ8;
DESIGN EQUATIONS
27
Electrónica Digital II Diseño de Circuitos Secuénciales Sincrónicos
Profesor Víctor Escartín
estadoSBV_0.D = estadoSBV_2.Q * estadoSBV_1.Q
estadoSBV_0.C = clk
estadoSBV_2.D = x
estadoSBV_2.C = clk
w= x * estadoSBV_0.Q * /estadoSBV_2.Q
+ /x * estadoSBV_0.Q * estadoSBV_2.Q
estadoSBV_1.C = clk
Ejemplo # 12
Diseñar un circuito secuencial sincrónico con dos entradas X, Y y una sola salida Z. La salida debe ser 1, si el número de unos en las
entradas X y Y desde que la máquina comenzó es múltiplo de 4 y la salida es cero en los otros casos.
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY EJ10 IS
PORT (X,Y, CLK: IN Std_logic;
Z: OUT Std_Logic);
END EJ10;
DESIGN EQUATIONS
z= /estadoSBV_0.Q * /estadoSBV_1.Q
estadoSBV_0.D = estadoSBV_1.Q * x * /y
+ estadoSBV_1.Q * /x * y
+ estadoSBV_0.Q * /x * /y
+ /estadoSBV_0.Q * x * y
estadoSBV_0.C = clk
estadoSBV_1.D = /estadoSBV_0.Q * /x * y
+ /estadoSBV_0.Q * x * /y
+ /estadoSBV_1.Q * x * y
+ estadoSBV_1.Q * /x
estadoSBV_1.C = clk
Ejemplo # 13
Es una cerradura combinacional, que se abre para una cierta secuencia binaria. Diseñar una máquina secuencial sincrónica con una
entrada X y dos salidas UNLK y HINT. La salida UNLK debe ser 1 si y solo si X = 0 y la secuencia de entradas recibida en los 7
relojes anteriores fue 0110111. La entrada HINT debe ser 1 solo si el valor actual de X es el correcto en la secuencia.
ENTITY EJ11 IS
PORT (X,CLK: IN Std_logic;
UNLK, HINT: OUT Std_Logic);
END EJ11;
DESIGN EQUATIONS
unlk = /x * estadoSBV_0.Q * /estadoSBV_1.Q * /estadoSBV_2.Q
estadoSBV_0.C = clk
estadoSBV_1.C = clk
estadoSBV_2.C = clk
31
Electrónica Digital II Diseño de Circuitos Secuénciales Sincrónicos
Profesor Víctor Escartín
Ejemplo # 14
Diseñe (NO PLD) un circuito con solo dos entradas (X1 y X2) y dos salidas (F1 y F2) El circuito debe comportarse como se
muestra en la figura. Es decir a partir de que X2 = 1 y a partir de la segunda transición positiva de X1 la salida F1 se activa según
se muestra. Y si se mantiene X2=1, a partir de la cuarta transición positiva de X1 la salida F2 se activa según se muestra en el
siguiente gráfico. Lo anterior no se repite hasta que en X2 ocurra otra transición positiva.
Tomando a X1 como la señal de reloj, tenemos:
X1
X2
F1
F2
Estados Estados
Presentes Futuro
X2 Salidas
0 1 F1 F2
S0 S0 S1 0 0
S1 S0 S2 0 0
S2 S0 S3 1 0
S3 S0 S4 1 1
S4 S0 S5 1 1
S5 S0 S6 1 0
S6 S0 S7 1 0
S7 S0 S7 0 0
Estado Estado
Presente Futuro
X2 Salidas
Q3 Q2 Q1 0 1 F1 F2
0 0 0 0 0 0 0 0 1 0 0
0 0 1 0 0 0 0 1 1 0 0
0 1 1 0 0 0 0 1 0 1 0
0 1 0 0 0 0 1 0 0 1 0
1 0 0 0 0 0 1 1 1 1 1
1 1 1 0 0 0 1 1 0 1 0
1 1 0 0 0 0 1 0 1 1 0
1 0 1 0 0 0 1 0 1 0 0
La asignación esta realizada para evitar que en F2 ocurran Hazard, se procuro que los estados S3, S4 y S5 no fueran adyacentes.
32
Electrónica Digital II Diseño de Circuitos Secuénciales Sincrónicos
Profesor Víctor Escartín
D1 D2 D3
Q2 Q1 Q2 Q1 Q2 Q1
0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0
X2 Q3 X2 Q3 X2 Q3
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0
0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0
1 1 1 1 0 0 1 1 1 0 1 0 1 1 0 0 0 1
1 0 1 1 0 1 1 0 0 1 1 0 1 0 1 1 1 1
Q2 Q1 Q2 Q1
0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0
X2 Q3 X2 Q3
0 0 0 0 0 0 0 0
0 0 0 0
0 1 0 0 0 0 0 1 0 0 0 0
1 1 1 0 1 1 1 1 1 0 1 0
1 0 0 0 1 1 1 0 0 0 0 1
F1 F2
D1 = X2 /Q2 + X2 Q3 Q2 /Q1
D3 = X2 /Q3 + X2 Q2 /Q1
F1 = X2 Q2 + X2 Q3 /Q1
33