Circuitos Secuenciales Síncronos En estas notas se aprenderá: ♦ ♦ ♦ ♦ ♦ ♦ ♦
Técnicas de diseño para circuitos que usan flip-flops El concepto de estados y su implementación con flip-flops Control sincrónico al usar una señal de reloj Comportamiento secuencial de circuitos digitales Un procedimiento completo para diseñar circuitos digitales Una especificación VHDL de circuitos digitales El concepto de máquinas de estados finitos
En este apartado se aborda una clase general de circuitos en los cuales las salidas dependen del comportamiento anterior del circuito, así como de los valores presentes de las entradas que se llaman circuitos secuenciales. En la mayoría de los casos una señal de reloj es usada para controlar la operación de un circuito secuencial; tal que un circuito es llamado un circuito secuencial síncrono. La alternativa, en la cual no se usa señal de reloj, es llamado un circuito secuencial asíncrono. Los circuitos Síncronos son fáciles de diseñar y se usan en la vasta mayoría de las aplicaciones prácticas; y son el tópico de este apartado. Los circuitos Asíncronos no serán discutidos aquí. Los circuitos Síncronos secuenciales se realizan realizan usando lógica combinacional y uno o más flip-flops. La estructura general de tal circuito es mostrada en la Figura 1. El circuito tiene un conjunto de entradas primaria, V, y produce un conjunto de salidas, S. Los valores de las salidas de los flip-flops son referidos como el estado, Q, del circuito. Bajo el control de la señal de reloj, las salidas de flip-flops cambian su estado como lo determina la lógica combinacional que alimentan las entradas de tales flip-flops. Por tanto, el circuito se mueve desde un estado a otro, para asegurar que solo una transición desde un estado a otro tome lugar durante un ciclo de reloj, los flip-flops deben ser del tipo disparados por flanco. Ellos pueden ser disparados ya sea por el flanco positivo (transición 0 a 1) o por el flanco negativo (transición 1 a 0) del reloj. Se usara el termino flanco activo del reloj para referirse al flanco del reloj que causa el cambio en el estado. La lógica combinacional que provee las señales de entrada para los flip-flops derives sus entradas desde dos fuentes: las entradas primarias, V, y las salidas presentes (actuales) de los flip-flops, Q. Es
decir, los cambios en el estado depende tanto del estado presente como de los valores de las entradas primarias. La figura 1 indica que las salidas del circuito secuencial son generadas mediante otro circuito combinacional, tal que las salidas son una función del estado presente de los flip-flops y de las entradas primarias. Aunque las salidas siempre dependen del estado presente, ellas no necesariamente deben de depender directamente de las entradas primarias. Esto es, la conexión mostrada en guinda en la figura puede o no puede existir. Para distinguir entre estas dos posibilidades, es costumbre decir que los circuitos secuenciales cuyas salidas dependen solo del estado del circuito son del tipo Moore, mientras que aquellas cuyas salidas dependen de ambos el estado y las entradas primarias son del tipo Mealy. Tales nombres son en honor de Edward Moore y George Mealy,
Prof. S. Saucedo
ICE/2010
quienes investigaron el comportamiento de tales circuitos en los 1950s.
Figura 1. Diagrama general de un circuito secuencial.
Los circuitos secuenciales son también llamados maquinas de estados finitos (FSMs), lo que es una manera más formal para nombrar lo que a menudos se halla en la literatura técnica. Ese nombre se deriva del hecho de que la funcionalidad de tales circuitos se puede representar usando un número finito de estados. En este apartado se usa a menudo el termino maquina de estados finitos, o simplemente maquina, al referirse a los circuitos secuenciales. 1. Pasos para un Diseño Básico
Para introducir las técnicas para diseñar circuitos secuenciales por medio de un ejemplo simple. Suponer que se desea diseñar un circuito que satisfaga la siguiente especificación: 1. El circuito tiene una entrada, V, y una salida, S. 2. Todos los cambios en el circuito ocurren en el flanco positivo de la señal de reloj. 3. La salida S es igual a 1 si durante los tres tres ciclos de reloj inmediatamente precedentes precedentes la entrada V fue igual a 1. De otro modo, el valor de S es igual a 0. Esto es, el circuito detecta si tres o más 1s consecutivos ocurren en su entrada V. Circuitos que detectan la ocurrencia de un patrón particular en su(s) entrada(s) son referidos como detectores
de secuencia. A partir de esta especificación es aparente que la salida S no puede depender únicamente del valor presente de V. Para ilustrar esto, considerar la secuencia de valores de señales V y S durante 10 ciclos de reloj, según se muestra en la figure 2. Los valores de V se asumen arbitrariamente; los valores de S corresponden a nuestra especificación. Tales secuencias de valores de entrada y salida indican que para un valor de entrada dado la salida puede ser 0 o 1. Por ejemplo, V = 0 durante los ciclos de reloj t2 y t5, pero S = 0 durante t2 y S = 1 durante t5. Similarmente, V = 1 durante t1 y t 8, pero S = 0 durante t1 y durante t8. Esto significa que S no está determinada sólo por el valor presente de V, así que deben existir diferentes estados en el circuito que determinan el valor de S. 1.1
Diagrama de Estados
Prof. S. Saucedo
ICE/2010
El primer paso al diseñar una maquina de estados finitos es determinar cuántos estados son necesarios y cuales transiciones son posible de un estado hacia otro. No hay un procedimiento para esta tarea. El diseñador debe pensar con mucho cuidado acerca de lo que la maquina debe realizar. Una buena manera de iniciar es seleccionar un estado particular como el estado de arranque ; esto es, el estado que el circuito debe tomar cuando la energía es encendida o cuando la señal de inicio es aplicada. Para nuestro ejemplo, suponer que el estado de arranque es llamado estado A. Mientras le entrada V es 0, el circuito no necesita hacer algo, y en cada flanco activo del reloj debe resultar en que el circuito permanezca en el estado A. Cuando V se hace igual a 1, la maquina debe reconocer eso, y moverse hacia un estado diferente, al que llamaremos estado B. Esta transición toma lugar en el siguiente flanco activo de reloj después que V ha llegado a ser igual a 1. En estado B, como en el estado A, el circuito debe mantener el valor de salida S en 0, pues el no ha visto aun V = 1 por tres ciclos consecutivos de reloj. Cuando en el estado B, si V es 0 al siguiente flanco activo de reloj, el circuito debe regresar al estado A. Sin embargo, si V = 1 cuando está en el estado B, el circuito debe cambiar al tercer estado, llamado C, y seguir generando una salida S = 0. Si estando en C se detecta una valor de 1 en el siguiente flanco activo del reloj se arriba al cuarto estado, D, y la salida S debe tomar el valor 1. El circuito debe permanecer en el estado D mientras V = 1 y debe continuar el mantener S = 1. Cuando V se hace 0, la maquina debe moverse al estado A. Ya que la descripción precedente maneja todos los posible valores de la entrada V que la maquina puede encontrar en sus varios estados, se puede concluir que los cuatro estados se necesitan para implementar la maquina deseada. Ciclos Reloj:
V: EDO: S:
t0 0 A 0
t1 1 B 0
t2 0 A 0
t3 1 B 0
t4 1 C 0
t5 1 D 1
t6 0 A 0
t7 0 A 0
t8 1 B 0
Figura 2 Ejemplo de secuencias de entrada y salida.
Ahora que se ha determinado en una manera informal las posibles transiciones entre estados, se describirá un procedimiento más formal que se puede usar para diseñar el correspondiente circuito secuencial. El comportamiento de un circuito secuencial puede describirse en diferentes maneras. El método conceptualmente más simple es usar una representación grafica en la forma, diagrama de estados, que es un grafo que describe estados del circuito como nodos (círculos) y transiciones entre estados como arcos dirigidos. El diagrama de estados en la figura 3 define el comportamiento que corresponde a nuestra especificación. Los estados A, B, C y D aparecen como nodos en el diagrama. El nodo A representa el estado de arranque, y es, además, el estado que el circuito alcanzara después que una entrada V = 0 es aplicada. En este estado la salida S debe ser 0, lo cual se indica como A/0 en el nodo. El circuito debe permanecer en el estado A mientras V = 0, lo cual se indica mediante un arco con una etiqueta 0 que se origina y termina en este nodo. .Tras la primera ocurrencia de V = 1 (después de la condición V = 0) es registrado moviéndose desde el estado A al estado B. Esta transición es indicada en el grafo con un arco originado en A y terminando en B. La etiqueta 1 en este arco denota el valor de entrada que causa la transición. In estado B la salida permanece en 0, lo que se indica como B/0 en dicho nod0.
Prof. S. Saucedo
ICE/2010
Cuando el circuito esta en el estado B, cambiara al estado C si V es aun igual a 1 al siguiente flanco activo de reloj. En el estado C la salida S no se hace igual a 1. Si V sigue en 1 el estado D es alcanzado y la salida S se hace 1. Si durante subsecuentes ciclos de reloj V = 1, el circuito permanecerá en el estado D manteniendo S = 1. Sin embargo, si V se hace 0 cuando el circuito esta ya sea en el estado B o en los estados C o D, el siguiente flanco activo de reloj causara una transición al estado A y S = 0. En el diagrama se indica que la entrada Inicio es usada para forzar al circuito al estado 1, lo cual es posible sin importar en qué estado el circuito esta. Se puede tratar a Inicio justo como otra entrada al circuito, y demostrar que una transición desde cada estado hacia el estado de arranque A bajo el control de la entrada Reset. Esto complicaría el diagrama innecesariamente. Los estados en una maquina de estados finitos se implementan usando flip-flops. Puesto que los flip-flops usualmente cuentan con la capacidad de inicio, según se discutió en un apartado anterior, se puede suponer que la entrada Inicio es usada para limpiar todos los flip-flops a 0 al emplear esta capacidad. Se indicaría esto como se muestra en la figura 3 para mantener los diagramas lo más simples como sea posible.
Figura 3 diagrama de Estado de un circuito secuencial simple. (BOOLE-DEUSTO).
1.2 Tabla de Estado
Aunque el diagrama de estados proporciona una descripción del comportamiento de un circuito secuencial que es fácil de entender, para proceder con la implementación del circuito, es conveniente trasladar la información contenida en el diagrama de estados hacia una forma tabular. La figura 4 ilustra la tabla de estado para nuestro circuito secuencial. La tabla indica todas las transiciones desde cada estado presente al siguiente estado para diferentes valores de la señal de entrada. Notar que la salida S se especifica con respecto al estado presente, esto es, el estado en que el circuito esta en el tiempo presente. Notar también que no se incluyo la entrada Inicio; en cambio, se hizo la suposición implícita de que el primer estado en la tabla es el estado de arranque. Se ven ahora los pasos del diseño que producirán el circuito final. Para
Prof. S. Saucedo
ICE/2010
explicar los conceptos básicos de diseño, primero vamos a través de un proceso tradicional de manualmente efectuar cada paso de diseño. Esto es seguido por una discusión de técnicas automatizadas de diseño que usan herramientas de diseño moderno con la ayuda por computadora (CAD). 1.3 Asignación de Estados
La tabla de estados en la figure 4 define los cuatro estados en términos de las letras A, B, C y D. Cuando se implementa en un circuito lógico, cada estado es representado por una valuación (combinación de valores) particular de variables de estado. Cada variable de estado puede estar implementada en la forma de un flip-flop. Dado que cuatro estados deben realizarse, es suficiente usar dos variables de estado. Se eligen dichas variables de estado como q1 y q0. Ahora se puede adaptar el diagrama a bloques general en la figura 1 para nuestro ejemplo según se muestra en la figura 5, para indicar la estructura del circuito que implementa la maquina requerida de estados finitos. Dos flip-flops representan a las variables de estado. En la figura no se ha especificado el tipo de flip-flops a ser usados; este aspecto es abordado en la próxima sub sección. From the Presente Estado A
B C D
estado siguiente V= 0 V= 1 A B
A A A
C D D
Salida S 0
0 0 1
Figura 4 Tabla de estado para el circuito secuencial de la figura 3
Figure 5. Diagrama a bloques del diseño.
Prof. S. Saucedo
ICE/2010
A B C D
Estado presente q1q0 00 01 10 11
Estado siguiente V=0 V=1 Q1Q0 Q1Q0 00 01 00 10 00 11 00 11
Salida: S 0 0 0 1
Figura 6 Tabla de asignación de estados.
1.4 Elección de Flip-Flops y Derivación del Estado siguiente y Expresiones de Salida
A partir de la tabla de asignación de estados en la figura 6, se pueden derivar las expresiones lógicas para el siguiente estado y las funciones de salida. Pero primero se debe decidir sobre el tipo de flip-flops que serán usados en el circuito. La elección más directa es usar flip-flops tipo D, porque en este caso los valores de Ql y Q0 son simplemente enviados hacia los flip-flops para que sean los nuevos valores de q1 y q0. En otras palabras, si las entradas a los flip-flops son llamadas D1 y D0, entonces tales señales son las mismas que Q1 y Q0. Notar que el diagrama en la figura 5 corresponde exactamente a este uso de los flip-flops tipo D. Para otros tipos de flipflops, tales como el tipo JK, hallar las relaciones entre la siguiente variable de estado y las entradas para un flip-flop no es tan directo; se considera esta situación en la sección 7. Las expresiones lógicas requeridas se derivan como se ilustra en la figura 7. Se usan mapas de Karnaugh para que al lector le sea fácil la verificación de la validez de tales expresiones. Recordar que en la figura 6 se necesito el total de las cuatro valuaciones binarias posibles para representar los estados. La cuarta valuación, q1q0 = 11, cuando ocurra en el circuito hará que S se haga 1; por ello, no habrá condiciones irrelevantes. Usando los enlaces con 1s se simplifican las expresiones, y se obtiene
·
Como no se usaron irrelevantes, entonces las expresiones resultantes son ligeramente más complejas. Dado que D1 = Q1 y D0 = Q0, el circuito lógico que corresponda a las expresiones precedentes se implementa como se exhibe en la figura 8. Observar que una señal de reloj es incluida, el circuito es provisto con la capacidad de inicio activa-alta. Conectando la entrada clr en los flip-flops a una señal externa Reset, como se muestra en la figura, provee un medio simple para forzar al circuito hacia un estado conocido. Si se aplica la señal Reset = 1 al circuito, entonces ambos flip-flops serán limpiados a 0, colocando a la FSM en el estado q1q0 = 00
Prof. S. Saucedo
ICE/2010
Figura 7. Derivación de expresiones lógicas para el circuito secuencial en la figura 6.
1.5 Cronograma
Para entender completamente la operación del circuito en la figura 8, considerar su diagrama de tiempos presentado en la figura 9. Tal diagrama bosqueja las formas de onda de las señales que corresponden a una secuencia semejante a la de valores en la figura 2. Debido a que se usan flip-flops disparados por flanco positivo, todos los cambios en las señales ocurren poco después del flanco positivo del reloj. La cantidad de nanosegundos del retardo desde el flanco del reloj depende en los retardos por propagación a través de los flipflops. Notar que la señal de entrada V también se muestra que cambia después del flanco inactivo del reloj. Esto es una buena suposición porque en un sistema digital típico una entrada como V puede ser una salida de otro circuito que es sincronizado por otro reloj. Se discute la sincronización de señales de entrada con la señal de reloj en uno de los proyectos finales. Un punto clave a observar es que incluso si V cambia poco después del flanco activo de reloj, y el valor de V es igual a 1 (o 0) por casi el ciclo entero del reloj, no ocurrirán cambios en el circuito hasta el inicio del siguiente ciclo de reloj cuando el flanco positivo cause que los flipflops cambien su estado. Por ello, el valor de V debe ser igual a 1 por tres ciclos seguidos de reloj si el circuito debe alcanzar el estado D y generar la salida S = 1.
Prof. S. Saucedo
ICE/2010
Figura 8. Implementación final del circuito secuencial en la figura 7. (BOOLE-DEUSTO).
Figura 9 Cronograma del circuito en la figura 8. 1.6 Sumario de los pasos del diseño
Se pueden sumariar los pasos implicados en el diseño de un circuito secuencial síncrono como sigue: 1. Obtener la especificación del circuito deseado. 2. Derivar los estados para la maquina al seleccionar primero un estado de arranque. Entonces, dada la especificación del circuito, considerar todas las valuaciones de las entradas al circuito y crear nuevos estados según necesite la máquina para responder a esas entradas. Para rastrear los estados cuando ellos son visitados, crear un diagrama de estados. Cuando este completo, el diagrama de estado exhibe todos los estados de la maquina y da las condiciones bajo las cuales el circuito se mueve desde un estado a otro. 3. Crear una tabla de estados a partir del diagrama de estados. Alternativamente, puede ser conveniente el directamente crear la tabla de estados en el paso 2, en vez de primero crear el diagrama de estados. 4. En nuestro circuito secuencial de ejemplo, sólo hay cuatro estados; de ahí que fue simple el crear la tabla de estados que no contenga más estados de los necesarios. Sin embargo, en la
Prof. S. Saucedo
ICE/2010
práctica es muy común lidiar con circuitos que tienen un gran número de estados. En esos casos es improbable que el primer intento para derivar la tabla de estados produzca resultados óptimos. Casi siempre se tendrán más estados de los realmente necesarios. Esto se corrige mediante un procedimiento que minimiza el número de estados. Se discutirá tal proceso de minimización de estado en el último apartado. 5. Decidir en el número de variables de estado necesarias para representar todos los estados y realizar la asignación de estados. Hay muchas asignaciones diferentes del estado posibles para un circuito secuencial dado. Algunas asignaciones pueden ser mejor que otras. En el ejemplo visto se uso lo que parecía ser la asignación natural estado. Se puede retornar a esto con otro ejemplo y demostrar que una diferente asignación puede conducir a un circuito más simple. 6. Escoger el tipo de flip-flops a usar en el circuito. Derivar las expresiones lógicas para siguiente-estado para controlar las entradas a todos los flip-flops y entonces derivar las expresiones lógicas para las salidas del circuito. Hasta ahora se han usado solo flip-flops tipo D. Se deben considerar otros tipos de flip-flops e inclusive pensar en mezcla de tipos. 7. Implementar el circuito según lo indican las expresiones lógicas. Se han ilustrado los pasos de diseño usando un circuito secuencial muy simple. Desde el punto de vista del lector, un circuito que detecta que una señal de entrada fue alta por tres pulsos consecutivos de reloj puede no tener mucha significancia práctica. 2. Diseño de Circuitos secuenciales con herramientas CAD
Veamos ahora la metodología para diseñar un circuito síncrono empleando un dispositivo SPLD: una GAL22V10 mediante el software ispLEVER classic de la firma Lattice Semiconductors. El lenguaje a usar es VHDL.
El ejemplo consiste en diseñar el circuito que cumple con el enunciado: El sistema tiene cuatro entradas: las señales de inicio y de reloj; además de las entradas U y V. Existe una salida, Y, que será 1 sólo cuando U sea igual a V durante tres flancos activos consecutivos del reloj, de caso contrario será 0. (Paso 1). La señal inicio tiene como finalidad colocar al estado en su estado inicial o de arranque. Como se dijo la señal de reloj provee los pulsos para que el sistema pueda evolucionar. 2.1 Diagrama de Estados
Se eligen cuatro estados como necesarios para implementar el diseño: El estado A que es el de arranque y que indica que no ha existido todavía una igualdad entre U y V. El estado B indica que se ha detectado una primera igualdad entre las entradas U y V. El tercer estado, C, indica que ha habido dos igualdades entre ambas entradas los dos flancos activos anteriores del reloj. El último estado es D, en el que la salida Y vale 1, pues han llegado tres empates consecutivos en las entradas. La figura 10 es el diagrama de estados del diseño. (Paso 2).
Prof. S. Saucedo
ICE/2010
Figura 10 Diagrama de estados para el ejemplo.
2.2 Tabla de estados
La siguiente figura refleja el diagrama de estados para apoyar al diseñador a escribir el código VHDL que resuelve el ejemplo dado, paso 3. Notar que tabla y diagrama brindan la misma información. Presente Estado A B C D
UV= 00
estado siguiente UV= 01 UV= 11
UV= 10
B A B A C A C A D A D A B A B A Figura 11 Tabla de estado para el circuito secuencial de la figura 10
Salida Y 0 0 0 1
2.3 Modulo fuente del diseño
La siguiente figura contiene el texto para que el compilador VHDL implemente el diseño. Notar que la asignación de estados la hace ahora el software sinplify que acompaña al navegador de proyectos de Lattice. De igual forma se simularon diez vectores de prueba para cotejar el funcionamiento. library IEEE;
use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity Sin_Titulo is
Prof. S. Saucedo
ICE/2010
Port ( inicio: in std_logic; ck: in std_logic; U: in std_logic; V: in std_logic; Y: out std_logic ); end Sin_Titulo; architecture behavioral of Sin_Titulo is type nombres_estados is (A, B, C, D); signal estado: nombres_estados; signal entrada_aux: std_logic_vector (1 downto 0); begin entrada_aux <= U&V; process(inicio, ck) begin if inicio='1' then estado <= A; elsif ck='1' and ck'event then case estado is when A => case entrada_aux is when "00" => estado <= B; when "01" => estado <= A; when "10" => estado <= A; when "11" => estado <= B; when others => estado <= A; end case; when B => case entrada_aux is when "00" => estado <= C; when "01" => estado <= A; when "10" => estado <= A; when "11" => estado <= C; when others => estado <= A; end case; when C => case entrada_aux is when "00" => estado <= D; when "01" => estado <= A; when "10" => estado <= A; when "11" => estado <= D; when others => estado <= A; end case; when D => case entrada_aux is when "00" => estado <= B; when "01" => estado <= A; when "10" => estado <= A; when "11" => estado <= B; when others => estado <= A; end case; when others => estado<=A; end case; end if; end process;
process(estado) begin case estado is when A => Y <= '0';
Prof. S. Saucedo
ICE/2010
when B => Y <= '0'; when C => Y <= '0'; when D => Y <= '1'; end case; end process; end behavioral;
Figura 12. Modulo de texto para compilar el diseño con VHDL. En el cronograma de la figura 13 se aprecia que la salida Y se hace 1 despues de tres coincidencias en las dos entradas. El estado de arranque A es q 1q0 = 10.
Figura 13. Cronograma para probar diez vectores de prueba.
Figura 13. Asignación de terminales realizada por el software.
Prof. S. Saucedo
ICE/2010
PROBLEMAS 1. Diseñar la FSM dada por la tabla de estados, usando flip-flops tipo D.
A B C D
Estado presente q1q0 00 01 10 11
Estado siguiente V=0 V=1 Q1Q0 Q1Q0 10 11 01 00 11 00 10 01
Salida: Z 0 0 0 1
Figura 14 Tabla de asignación de estados Problemas 1 y 2. 2. Diseñar la FSM dada por la tabla de estados, usando flip-flops tipo J-K. 3. Diseñar una FSM con una entrada V y una salida Z de manera que Z sea 1 cuando la entrada V ha sido 0110 o 0000 los últimos cuatro flancos del reloj, y 0 en caso contrario. Usar flip-flops tipo D.
Cortesía BOOLE-DEUSTO
Prof. S. Saucedo
ICE/2010
4. Usar la GAL22V10 y lenguaje VHDL para resolver el problema 3. library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity FSMprob3 is Port ( inicio: in std_logic; ck: in std_logic; V: in std_logic; Z: out std_logic ); end FSMprob3; architecture behavioral of FSMprob3 is type nombres_estados is (A, B, C, D, E, F, G); signal estado: nombres_estados; signal aux: std_logic; begin aux <= V; process(inicio, ck) begin if inicio='1' then estado <= A; elsif ck='1' and ck'event then case estado is when A => case aux is when '0' => estado<=B; when '1' => estado<=A; when others => estado <= A; end case; when B => case aux is when '0' => estado <= C; when '1' => estado <= D; when others => estado <= A; end case; when C => case aux is when '0' => estado <= E; when '1' => estado <= D; when others => estado <= A; end case; when D => case aux is when '0' => estado <= B; when '1' => estado <= F; when others => estado <= A; end case; when E =>
Prof. S. Saucedo
ICE/2010
case aux is when '0' => estado <= G; when '1' => estado <= D; when others => estado <= A; end case; when F => case aux is when '0' => estado <= G; when '1' => estado <= A; when others => estado <= A; end case; when G => case aux is when '0' => estado <= B; when '1' => estado <= A; when others => estado <= A; end case; when others => estado<=A; end case; end if; end process; process(estado) begin case estado is when A => when B => when C => when D => when E => when F => when G => end case; end process; end behavioral;
Z<='0'; Z<='0'; Z<='0'; Z<='0'; Z<='0'; Z<='0'; Z<='1';
5. Derivar una tabla de estado mínima para una sola entrada y una sola salida tipo Moore para una FSM que produce una salida de 1 si en la secuencia de entrada se detectan patrones ya sea 110 o 101. Las secuencias traslapadas no deben ser detectadas. 6. Repetir problema anterior para una FSM tipo Mealy. 7. Derivar circuitos que satisfagan las dos tablas de estado siguientes.
A B C D E F G
Estado presente Q2q1q0 000 001 010 011 100 101 110
Estado siguiente V=0 V=1 Q1Q0 Q1Q0 B C D F F E B G F C E D F G
Salida: Z 1 1 0 1 0 0 0
Figura 15 para problema 7.
Prof. S. Saucedo
ICE/2010
Circuito para tabla anterior tras simplificar diagrama de estados.
A B C F
Estado presente q1q0 00 01 10 11
Estado siguiente V=0 V=1 Q1Q0 Q1Q0 B C A F F C C A
Salida: Z 1 1 0 0
Figura 16 Tabla de asignación de estados Problemas 7. 8. Dado el siguiente diagrama de estados, intentar reducir el número de estados y efectuar el diseño mediante biestables tipo D.
Prof. S. Saucedo
ICE/2010
Diagrama de estados (BOOLE-DEUSTO)
Circuito para el diagrama anterior, tras reducir un estado. 9. La tabla de estados siguiente puede ser simplificada. Diseñar con biestables JK, tras simplificar. X indica una combinación imposible en la entrada. Figura 8.56 del Brown-Vranesic.
Prof. S. Saucedo
ICE/2010
Estado Presente A B C D E F G H I
UV= 00
estado siguiente UV= 01 UV= 11
Salida Y
UV= 10
A C X B B D X E C F X G A A X A C C X C F H X I A A X A A A X A C C X C Tabla de estado para el circuito secuencial del problema 9.
0 0 0 1 1 0 1 1 1
Las particiones para simplificar son:
P1 = (A, B, C, D, E, F, G, H, I) P2 = (A, B, C, F)(D, E, G, H, I) P3 = (A)(C)(B, F)(D, E, G, H, I) P4 = (A)(C)(B, F)(D, G, H)(E, I) P5 = P4 Tabla Parcial de excitación de biestables y circuito correspondiente: |V
|U
|q2
|q1
|q0
|Q2
|Q1
|Q0
|J2
|K2
|J1
|K1
|J0
|K0
|
|----|----|----|----|----|----|----|----|----|----|----|----|----|----| |0
|0
|0
|0
|0
|0
|0
|0
|0
|x
|0
|x
|0
|x
|
|----|----|----|----|----|----|----|----|----|----|----|----|----|----| |0
|0
|0
|0
|1
|0
|0
|1
|0
|x
|0
|x
|x
|0
|
|----|----|----|----|----|----|----|----|----|----|----|----|----|----| |0
|0
|0
|1
|0
|0
|1
|0
|0
|x
|x
|0
|0
|x
|
|----|----|----|----|----|----|----|----|----|----|----|----|----|----| |0
|0
|0
|1
|1
|0
|0
|0
|0
|x
|x
|1
|x
|1
|
|----|----|----|----|----|----|----|----|----|----|----|----|----|----| |0
|0
|1
|0
|0
|0
|1
|0
|x
|1
|1
|x
|0
|x
|
|----|----|----|----|----|----|----|----|----|----|----|----|----|----| |0
|0
|1
|0
|1
|x
|x
|x
|x
|x
|x
|x
|x
|x
|
|----|----|----|----|----|----|----|----|----|----|----|----|----|----| |0
|0
|1
|1
|0
|x
|x
|x
|x
|x
|x
|x
|x
|x
|
|----|----|----|----|----|----|----|----|----|----|----|----|----|----| |0
|0
|1
|1
|1
|x
|x
|x
|x
|x
|x
|x
|x
|x
|
|----|----|----|----|----|----|----|----|----|----|----|----|----|----| |0
|1
|0
|0
|0
|0
|1
|0
|0
|x
|1
|x
|0
|x
|
|----|----|----|----|----|----|----|----|----|----|----|----|----|----| |0
|1
|0
|0
|1
|0
|1
|1
|0
|x
|1
|x
|x
|0
|
|----|----|----|----|----|----|----|----|----|----|----|----|----|----|
Prof. S. Saucedo
ICE/2010
|0
|1
|0
|1
|0
|0
|0
|1
|0
|x
|x
|1
|1
|x
|
|----|----|----|----|----|----|----|----|----|----|----|----|----|----| |0
|1
|0
|1
|1
|x
|x
|x
|x
|x
|x
|x
|x
|x
|
|----|----|----|----|----|----|----|----|----|----|----|----|----|----| |0
|1
|1
|0
|0
|x
|x
|x
|x
|x
|x
|x
|x
|x
|
|----|----|----|----|----|----|----|----|----|----|----|----|----|----| |0
|1
|1
|0
|1
|x
|x
|x
|x
|x
|x
|x
|x
|x
|
|----|----|----|----|----|----|----|----|----|----|----|----|----|----| |0
|1
|1
|1
|0
|x
|x
|x
|x
|x
|x
|x
|x
|x
|
|----|----|----|----|----|----|----|----|----|----|----|----|----|----| |0
|1
|1
|1
|1
|x
|x
|x
|x
|x
|x
|x
|x
|x
|
|----|----|----|----|----|----|----|----|----|----|----|----|----|----| |1
|0
|0
|0
|0
|0
|0
|1
|0
|x
|0
|x
|1
|x
|
|----|----|----|----|----|----|----|----|----|----|----|----|----|----| |1
|0
|0
|0
|1
|1
|0
|0
|1
|x
|0
|x
|x
|1
|
|----|----|----|----|----|----|----|----|----|----|----|----|----|----| |1
|0
|0
|1
|0
|0
|1
|1
|0
|x
|x
|0
|1
|x
|
Etc.
10. Dado el diagrama de estados, diseñar el circuito secuencial tipo Moore con flip-flops tipo D.
Prof. S. Saucedo
ICE/2010
X: valor irrelevante. La fórmula para D1 se obtiene del siguiente mapa de Kaurnaugh, que tiene cuatro enlaces.
Prof. S. Saucedo
ICE/2010