16. Análisis y diseño de sistemas secuenciales Oliverio J. Santana Jaria Sistemas Digitales Ingeniería Técnica en Informática de Sistemas Curso 2006 – 2007 Introducción No resulta fácil deducir el funcionamiento de un circuito secuencial a partir de un diagrama de puertas lógicas De la misma manera, dada la descripción funcional de un circuito secuencial, no es trivial obtener el diagrama que represente la implementación del mismo Los objetivos de este tema son: Describir el proceso de análisis que permite comprender el funcionamiento de un circuito secuencial partiendo de su implementación Describir el proceso de síntesis que permite implementar un circuito secuencial a partir de una descripción funcional Análisis y diseño de sistemas secuenciales 2 1 Estructura del tema Introducción Modelo de máquinas de estados finitos Análisis de sistemas secuenciales Análisis de sistemas de tipo Moore Análisis de sistemas de tipo Mealy Ejemplos Diseño de sistemas secuenciales Resumen y bibliografía Generación del diagrama de estados Minimización del diagrama de estados Codificación de estados Elección de los biestables Implementación y verificación del sistema Ejemplos Análisis y diseño de sistemas secuenciales 3 Estado de un sistema secuencial Los sistemas secuenciales se caracterizan por el hecho de que sus salidas dependen no sólo de las entradas actuales, sino de toda la secuencia de entradas anteriores Toda esta secuencia de entradas anteriores da lugar a lo que se denomina el estado del circuito, que está almacenado en componentes de memorización x0 x1 xm conjunto … de puertas lógicas {x0, x1, … xm} ≡ Xt y0 y1 yn … memoria Análisis y diseño de sistemas secuenciales {y0, y1, … yn} ≡ Yt Yt = F(Xt, Xt-1, Xt-2 , …) 4 2 Estado de un sistema secuencial De acuerdo con esta definición, el estado de un sistema secuencial depende de la secuencia de entradas anteriores al sistema Et = F(Xt-1, Xt-2 , …) Yt = F(Xt, Xt-1, Xt-2 , …) = F(Xt, Et) Este planteamiento permite descomponer la ecuación general de los sistemas secuenciales en otras dos ecuaciones: una de salida y otra de estado siguiente Yt = F(Xt, Et) salida actual Yt = h(Xt, Et) estado siguiente Et+1 = f(Xt, Et) Análisis y diseño de sistemas secuenciales 5 Caracterizació Caracterización de sistemas secuenciales Para caracterizar completamente un sistema secuencial es necesario plantear: Las tablas y ecuaciones booleanas que definen el siguiente estado del sistema a partir de las entradas del circuito y el estado actual del mismo Las tablas y ecuaciones booleanas que definen las salidas del sistema a partir de las entradas del circuito y el estado actual del mismo Esta información puede visualizarse usando un diagrama de estados que muestre todos los estados posibles del sistema y las transiciones entre ellos Análisis y diseño de sistemas secuenciales 6 3 Modelo de máquinas de estados finitos Esta forma de caracterizar un sistema secuencial está basada en un modelo de máquinas de estados finitos FSM – Finite-State Machine) ( Teóricamente, el modelo FSM se define como una quíntupla < S, I, O, f, h> S conjunto de estados (states) I conjunto de entradas (inputs) O conjunto de salidas (outputs) f función de estado siguiente h función de salida Análisis y diseño de sistemas secuenciales 7 Modelo de máquinas de estados finitos Este modelo FSM supone que el tiempo se divide en intervalos uniformes y que las transiciones de un estado a otro solo ocurren al principio de cada intervalo La función de salida h define los valores de salida durante el intervalo de tiempo actual de acuerdo con el estado y las entradas actuales Y = h(X , E ) t t t La función de estado siguiente f define cuál será el estado en el siguiente intervalo de tiempo de acuerdo con el estado y las entradas en el intervalo actual Et+1 = f(Xt, Et) Análisis y diseño de sistemas secuenciales 8 4 Tipos de FSM En realidad, la función de salida puede definirse de dos maneras distintas, lo que da lugar a dos modelos FSM distintos El modelo de Moore describe sistemas secuenciales cuyas salidas dependen única y exclusivamente del estado del circuito Y = h(E ) t t Et+1 = f(Xt, Et) El modelo de Mealy describe sistemas secuenciales cuyas salidas dependen del estado del circuito y de las entradas en el intervalo de tiempo actual Yt = h(Et, Xt) Et+1 = f(Xt, Et) Análisis y diseño de sistemas secuenciales 9 Implementación de FSM De esta manera, cualquier sistema secuencial se puede modelar utilizando una máquina de estados finitos y, a partir de ella, realizar su implementación El estado del sistema secuencial será almacenado en circuitos biestables que actuarán como elementos de memorización Las funciones de estado siguiente f y de salida implementarán utilizando lógica combinacional Análisis y diseño de sistemas secuenciales h se 10 5 Estructura del tema Introducción Modelo de máquinas de estados finitos Análisis de sistemas secuenciales Análisis de sistemas de tipo Moore Análisis de sistemas de tipo Mealy Ejemplos Diseño de sistemas secuenciales Resumen y bibliografía Generación del diagrama de estados Minimización del diagrama de estados Codificación de estados Elección de los biestables Implementación y verificación del sistema Ejemplos Análisis y diseño de sistemas secuenciales 11 Análisis de sistemas secuenciales El proceso de análisis de un sistema secuencial consiste en la generación de una descripción funcional a partir del diagrama lógico de un determinado circuito La descripción funcional contendrá varios elementos Diagrama de estados del circuito Ecuaciones y tablas que definan el estado siguiente Ecuaciones y tablas que definan la salida del circuito Una vez obtenida la descripción funcional, es posible desarrollar cronogramas que permitan estudiar el comportamiento del sistema Análisis y diseño de sistemas secuenciales 12 6 Estructura del tema Introducción Modelo de máquinas de estados finitos Análisis de sistemas secuenciales Análisis de sistemas de tipo Moore Análisis de sistemas de tipo Mealy Ejemplos Diseño de sistemas secuenciales Resumen y bibliografía Generación del diagrama de estados Minimización del diagrama de estados Codificación de estados Elección de los biestables Implementación y verificación del sistema Ejemplos Análisis y diseño de sistemas secuenciales 13 Análisis de sistemas de tipo Moore Los circuitos secuenciales de tipo Moore son aquellos en los que las salidas no dependen del valor actual de las entradas, sino únicamente del estado actual Este diagrama muestra un circuito secuencial de tipo Moore compuesto de dos biestables D Análisis y diseño de sistemas secuenciales 14 7 Análisis de sistemas de tipo Moore El primer paso en el análisis es obtener las ecuaciones de entrada a cada biestable del circuito 0y En este caso hay dos biestables cuyas entradas son D D1, por lo que plantearemos dos ecuaciones en función de la entrada Cnt y de las salidas de los biestables Análisis y diseño de sistemas secuenciales 15 Análisis de sistemas de tipo Moore Estas ecuaciones se denominan ecuaciones de excitación, ya que determinan el valor de las entradas de los biestables del circuito A continuación hay que transformar estas ecuaciones en las ecuaciones de estado siguiente características de cada biestable Dado que el estado siguiente de un biestable D es igual al valor de la señal D, tenemos que: Análisis y diseño de sistemas secuenciales 16 8 Análisis de sistemas de tipo Moore A continuación debemos calcular la ecuación de salida Dado que estamos hablando de un circuito de tipo Moore, la salida dependerá sólo del estado actual del sistema, es decir, de las salidas de los biestables Análisis y diseño de sistemas secuenciales 17 Análisis de sistemas de tipo Moore A partir de las ecuaciones de estado siguiente y de salida generamos una tabla que refleje esta información Cada fila de la tabla se corresponde con un estado del circuito Cada columna de la tabla representa un valor de las entradas Dado que el circuito tiene dos biestables, el número total de estados posibles es cuatro Análisis y diseño de sistemas secuenciales 18 9 Análisis de sistemas de tipo Moore Para facilitar la visualización del funcionamiento del circuito podemos representar el contenido de esta tabla usando un diagrama de estados Cada estado se representa con un círculo que contiene el valor de los biestables que representa y el valor de las salidas Las transiciones entre estados se representan como flechas entre los círculos, etiquetadas con el valor de las entradas que causa la transición En general, en un circuito con m biestables y k m y el entradas, el número total de estados será 2 m · 2k número total de transiciones será 2 Análisis y diseño de sistemas secuenciales 19 Análisis de sistemas de tipo Moore El diagrama de estados puede obtenerse fácilmente a partir de la tabla de estado siguiente y de salida Análisis y diseño de sistemas secuenciales 20 10 Análisis de sistemas de tipo Moore Con este diagrama podemos comprobar que: Cuando Cnt = 0 el circuito permanece en el estado actual Mientras Cnt = 1 el circuito va recorriendo todos los estados siguiendo esta secuencia: 0, 1, 2, 3, 0, 1, 2, 3, 0, … Por lo tanto, este circuito es un contador módulo 4 con una entrada de control que habilita la cuenta Análisis y diseño de sistemas secuenciales 21 Análisis de sistemas de tipo Moore Con toda esta información podemos generar un cronograma que permita ver el comportamiento del circuito bajo determinadas circunstancias Análisis y diseño de sistemas secuenciales 22 11 Análisis de sistemas de tipo Moore Este cronograma muestra cuatro ciclos de reloj con la 0 y t4 señal Cnt activa entre los instantes de tiempo t Suponemos que el estado inicial del contador es 00 Análisis y diseño de sistemas secuenciales 23 Análisis de sistemas de tipo Moore El contador pasa al estado 01 tras el flanco de subida de 1 la señal de reloj en t El contador pasa al estado 10 tras el flanco de subida de 2 la señal de reloj en t Análisis y diseño de sistemas secuenciales 24 12 Análisis de sistemas de tipo Moore El contador pasa al estado 11 tras el flanco de subida de 3 la señal de reloj en t , activando la salida Y 3 Dado que la señal Cnt se desconecta en t , el contador 5 permanece en el estado 11 tras el flanco de subida de t Análisis y diseño de sistemas secuenciales 25 Análisis de sistemas de tipo Moore Para comprobar el comportamiento del circuito sería necesario construir cronogramas para todas las posibles secuencias de valores de entrada Finalmente, estos cronogramas deben ser verificados utilizando una herramienta de simulación de circuitos Las herramientas de simulación a nivel físico permiten describir el circuito lógico utilizando puertas y biestables Las herramientas de simulación a nivel funcional permiten describir el circuito en base a tablas o diagramas de estado En cualquier caso, estas herramientas no permiten verificar los retardos reales del circuito, ya que no tienen información sobre su implementación Análisis y diseño de sistemas secuenciales 26 13 Estructura del tema Introducción Modelo de máquinas de estados finitos Análisis de sistemas secuenciales Análisis de sistemas de tipo Moore Análisis de sistemas de tipo Mealy Ejemplos Diseño de sistemas secuenciales Resumen y bibliografía Generación del diagrama de estados Minimización del diagrama de estados Codificación de estados Elección de los biestables Implementación y verificación del sistema Ejemplos Análisis y diseño de sistemas secuenciales 27 Análisis de sistemas tipo Mealy Los circuitos secuenciales de tipo Mealy son aquellos en los que las salidas dependen del valor actual de las entradas y del estado actual Este diagrama muestra un circuito secuencial de tipo Mealy compuesto de dos biestables D Análisis y diseño de sistemas secuenciales 28 14 Análisis de sistemas de tipo Mealy El primer paso en el análisis es obtener las ecuaciones de excitación que definen la entrada de cada biestable 0y En este caso hay dos biestables cuyas entradas son D D1, por lo que plantearemos dos ecuaciones en función de la entrada Cnt y de las salidas de los biestables Análisis y diseño de sistemas secuenciales 29 Análisis de sistemas de tipo Mealy A continuación hay que transformar estas ecuaciones en las ecuaciones de estado siguiente características de cada biestable Dado que el estado siguiente de un biestable D es igual al valor de la señal D, tenemos que: Análisis y diseño de sistemas secuenciales 30 15 Análisis de sistemas de tipo Mealy A continuación calculamos la ecuación de salida En un circuito de tipo Mealy la salida depende tanto del estado actual del sistema como de los valores actuales de las entradas del mismo Análisis y diseño de sistemas secuenciales 31 Análisis de sistemas de tipo Mealy A partir de estas ecuaciones generamos la tabla de estado siguiente y de salida La principal diferencia de esta tabla con la de un circuito de tipo Moore es que los valores de salida también dependen de los valores de entrada Análisis y diseño de sistemas secuenciales 32 16 Análisis de sistemas de tipo Mealy El diagrama de estados puede obtenerse a partir de esta tabla, pero teniendo en cuenta que las salidas no se asocian con los estados sino con las transiciones Análisis y diseño de sistemas secuenciales 33 Análisis de sistemas de tipo Mealy Un arco con la etiqueta X/Y se interpreta así: Mientras el circuito permanezca en el estado del que sale el arco y el valor de las entradas sea igual a X, la salida del circuito será igual a Y Si el valor de las entradas en el flanco de reloj es igual a X, el circuito cambiará en el siguiente ciclo al estado apuntado por el arco Análisis y diseño de sistemas secuenciales 34 17 Análisis de sistemas de tipo Mealy A partir del diagrama de estados podemos comprobar que el circuito es un contador módulo 4 con una entrada de control que habilita la cuenta Cuando Cnt = 0 el circuito permanece en el estado actual Mientras Cnt = 1 el circuito va recorriendo todos los estados siguiendo esta secuencia: 0, 1, 2, 3, 0, 1, 2, 3, 0, … Análisis y diseño de sistemas secuenciales 35 Análisis de sistemas de tipo Mealy Con toda esta información podemos generar un cronograma que permita ver el comportamiento del circuito bajo determinadas circunstancias Análisis y diseño de sistemas secuenciales 36 18 Análisis de sistemas de tipo Mealy Este cronograma muestra cuatro ciclos de reloj con la señal Cnt activa entre los instantes de tiempo t0 y t4 Suponemos que el estado inicial del contador es 00 Análisis y diseño de sistemas secuenciales 37 Análisis de sistemas de tipo Mealy El contador pasa al estado 01 tras el flanco de subida de la señal de reloj en t1 El contador pasa al estado 10 tras el flanco de subida de la señal de reloj en t2 Análisis y diseño de sistemas secuenciales 38 19 Análisis de sistemas de tipo Mealy El contador pasa al estado 11 tras el flanco de subida de la señal de reloj en t3, activando la salida Y Dado que la señal Cnt se desconecta en t3, el contador permanece en el estado 11 tras el flanco de subida de t5 Análisis y diseño de sistemas secuenciales 39 Análisis de sistemas de tipo Mealy La principal diferencia con respecto al contador equivalente de tipo Moore es que la salida Y no permanece a 1 cuando se desactiva Cnt, sino que también pasa a 0 Análisis y diseño de sistemas secuenciales 40 20 Estructura del tema Introducción Modelo de máquinas de estados finitos Análisis de sistemas secuenciales Análisis de sistemas de tipo Moore Análisis de sistemas de tipo Mealy Ejemplos Diseño de sistemas secuenciales Resumen y bibliografía Generación del diagrama de estados Minimización del diagrama de estados Codificación de estados Elección de los biestables Implementación y verificación del sistema Ejemplos Análisis y diseño de sistemas secuenciales 41 Procedimiento de análisis En general, el procedimiento de análisis de lógica secuencial sigue los pasos que pueden verse en este diagrama A continuación vamos a ver unos ejemplos que nos permitirán clarificar todos estos conceptos Análisis y diseño de sistemas secuenciales 42 21 Ejemplo de análisis 1 Vamos a realizar el análisis de este circuito En primer lugar podemos determinar que se trata de un circuito de tipo Moore, ya que las salidas dependen únicamente del estado del circuito y no de las entradas Análisis y diseño de sistemas secuenciales 43 Ejemplo de análisis 1 El circuito tiene 3 biestables, es decir, 8 estados posibles El circuito tiene una única señal de entrada X El circuito tiene tres señales de salida Y0, Y1, e Y2 Análisis y diseño de sistemas secuenciales 44 22 Ejemplo de análisis 1 A partir del circuito podemos obtener las ecuaciones correspondientes a las entradas de los biestables Análisis y diseño de sistemas secuenciales 45 Ejemplo de análisis 1 Conociendo el funcionamiento de un biestable JK es posible, partiendo de las ecuaciones de las entradas, generar la tabla de excitación y de estado siguiente Análisis y diseño de sistemas secuenciales 46 23 Ejemplo de análisis 1 A partir del circuito también podemos obtener las ecuaciones correspondientes a las señales de salida Análisis y diseño de sistemas secuenciales 47 Ejemplo de análisis 1 Dadas las ecuaciones de salida, es sencillo obtener la tabla de salida Análisis y diseño de sistemas secuenciales 48 24 Ejemplo de análisis 1 Con las tablas anteriores podemos obtener el diagrama de estados que describe el funcionamiento del circuito Análisis y diseño de sistemas secuenciales 49 Ejemplo de análisis 1 El circuito es un contador módulo 8 Cuando X = 1 sigue la secuencia 0,1,2,3,4,5,6,7,0,1,2,3,… Cuando X = 0 el circuito cuenta en orden inverso Análisis y diseño de sistemas secuenciales 50 25 Estructura del tema Introducción Modelo de máquinas de estados finitos Análisis de sistemas secuenciales Análisis de sistemas de tipo Moore Análisis de sistemas de tipo Mealy Ejemplos Diseño de sistemas secuenciales Resumen y bibliografía Generación del diagrama de estados Minimización del diagrama de estados Codificación de estados Elección de los biestables Implementación y verificación del sistema Ejemplos Análisis y diseño de sistemas secuenciales 51 Ejemplo de análisis 2 A continuación analizaremos el siguiente circuito Podemos determinar que se trata de un circuito de tipo Mealy porque las salidas dependen tanto del estado del circuito como de las entradas del mismo Análisis y diseño de sistemas secuenciales 52 26 Ejemplo de análisis 2 El circuito tiene 2 biestables, es decir, 4 estados posibles El circuito tiene una única señal de entrada X El circuito tiene una única señal de salida Y Análisis y diseño de sistemas secuenciales 53 Ejemplo de análisis 2 A partir del circuito podemos obtener las ecuaciones correspondientes a las entradas de los biestables Análisis y diseño de sistemas secuenciales 54 27 Ejemplo de análisis 2 Conociendo el funcionamiento de los biestables JK y D es posible, partiendo de las ecuaciones de las entradas, generar la tabla de excitación y de estado siguiente Análisis y diseño de sistemas secuenciales 55 Ejemplo de análisis 2 Partiendo del circuito también podemos obtener la ecuación correspondiente a la señal de salida Análisis y diseño de sistemas secuenciales 56 28 Ejemplo de análisis 2 A partir de la ecuación de salida podemos generar la tabla de salida Análisis y diseño de sistemas secuenciales 57 Ejemplo de análisis 2 Con las tablas anteriores podemos obtener el diagrama de estados del circuito que describe su funcionamiento Análisis y diseño de sistemas secuenciales 58 29 Ejemplo de análisis 2 El circuito es un contador módulo 4 La entrada X es una señal de reset síncrono La salida Y es una indicación de vuelta a cero Análisis y diseño de sistemas secuenciales 59 Estructura del tema Introducción Modelo de máquinas de estados finitos Análisis de sistemas secuenciales Análisis de sistemas de tipo Moore Análisis de sistemas de tipo Mealy Ejemplos Diseño de sistemas secuenciales Resumen y bibliografía Generación del diagrama de estados Minimización del diagrama de estados Codificación de estados Elección de los biestables Implementación y verificación del sistema Ejemplos Análisis y diseño de sistemas secuenciales 60 30 Diseño de sistemas secuenciales El objetivo del proceso de diseño es generar la implementación de un sistema secuencial a partir de una descripción funcional El primer paso de este proceso es tomar la descripción del sistema y convertirla en un diagrama de estados con las correspondientes tablas de estado siguiente y salida Una vez obtenido el diagrama de estados hay que reducir lo más posible el número de estados para minimizar el número de biestables necesarios Análisis y diseño de sistemas secuenciales 61 Diseño de sistemas secuenciales Con el diagrama de estados minimizado debe realizarse la codificación de estados, es decir, asignar los códigos binarios que representarán cada estado en los biestables Tras la codificación es posible generar las ecuaciones de estado siguiente y de salida El siguiente paso es determinar el tipo de biestables más adecuado para la implementación del circuito, ya que cada biestable necesitará una cantidad de lógica diferente para representar una determinada función Análisis y diseño de sistemas secuenciales 62 31 Diseño de sistemas secuenciales Una vez elegido el tipo de biestable se pueden obtener las ecuaciones de excitación para las entradas de cada uno de los biestables Estas ecuaciones permiten diseñar y optimizar la lógica necesaria para completar el circuito El diseño del circuito proporciona la base para la generación de un cronograma que pueda verificarse por simulación para comprobar si el comportamiento del sistema es el que se deseaba obtener Análisis y diseño de sistemas secuenciales 63 Diseño de sistemas secuenciales Este diagrama muestra un resumen de todos los pasos necesarios para completar el diseño de un sistema secuencial a partir de una descripción funcional del mismo Análisis y diseño de sistemas secuenciales 64 32 Estructura del tema Introducción Modelo de máquinas de estados finitos Análisis de sistemas secuenciales Análisis de sistemas de tipo Moore Análisis de sistemas de tipo Mealy Ejemplos Diseño de sistemas secuenciales Resumen y bibliografía Generación del diagrama de estados Minimización del diagrama de estados Codificación de estados Elección de los biestables Implementación y verificación del sistema Ejemplos Análisis y diseño de sistemas secuenciales 65 Generación de un diagrama de estados El diseño de un sistema secuencial se inicia con la generación de un diagrama de estados a partir de una descripción funcional de su comportamiento Esta descripción puede estar en lenguaje natural e incluir cronogramas, aunque es preferible usar métodos más precisos para evitar ambigüedades Diagramas de flujo o diagramas ASM Lenguajes de descripción de hardware (VHDL,…) Con el diagrama de estados se pueden generar las tablas de estado siguiente y salida para facilitar el diseño Análisis y diseño de sistemas secuenciales 66 33 Ejemplo de sistema secuencial Como ejemplo vamos a generar el diagrama de estados de un contador ascendente/descendente módulo 3 El circuito tendrá dos entradas C – habilitación de cuenta: cuando C=1 el circuito contará y cuando C=0 el circuito permanecerá parado D – dirección de cuenta: cuando D=0 el circuito contará ascendentemente y cuando D=1 contará descendentemente El circuito tendrá una salida Y que se activará cuando regrese al valor 0 en sentido ascendente o al valor 2 en sentido descendente Análisis y diseño de sistemas secuenciales 67 Generación del diagrama de estados Este contador debe memorizar los códigos de tres dígitos: 0, 1, y 2 Además, siempre que la entrada C esté activa, debe permitir dos secuencias de acuerdo con el valor de la entrada D: una ascendente y otra descendente Análisis y diseño de sistemas secuenciales 68 34 Generación del diagrama de estados El contador puede cambiar de dirección durante la cuenta si cambia el valor de D mientras C está activa Ya que no se menciona en la descripción, podemos suponer que el contador seguirá contando en la nueva dirección a partir del estado actual Análisis y diseño de sistemas secuenciales 69 Generación del diagrama de estados Por último, es necesario tener en cuenta el caso en el que la señal C está desactivada, lo que implicará que el contador debe permanecer en el estado actual Análisis y diseño de sistemas secuenciales 70 35 Tabla de estado siguiente y salida Ahora que el diagrama de estados está completo podemos generar la tabla de estado siguiente y salida Análisis y diseño de sistemas secuenciales 71 Estructura del tema Introducción Modelo de máquinas de estados finitos Análisis de sistemas secuenciales Análisis de sistemas de tipo Moore Análisis de sistemas de tipo Mealy Ejemplos Diseño de sistemas secuenciales Resumen y bibliografía Generación del diagrama de estados Minimización del diagrama de estados Codificación de estados Elección de los biestables Implementación y verificación del sistema Ejemplos Análisis y diseño de sistemas secuenciales 72 36 Minimización del diagrama de estados Resulta sencillo entender el diagrama de estados generado para el contador ascendente/descendente módulo 3, ya que los dos modos de operación se distinguen claramente Sin embargo, la claridad no es el objetivo prioritario, ya que una mayor cantidad de estados implica una mayor cantidad de biestables y un coste mayor Desde este punto de vista, es importante considerar la minimización del diagrama de estados como parte del proceso de diseño Análisis y diseño de sistemas secuenciales 73 Minimización del diagrama de estados El objetivo de la minimización de estados es reducir el número de estados y, por tanto, el de biestables necesarios para implementarlos Menor número de biestables implica menor complejidad Menor número de biestables también implica menos puertas para implementar la funciones de entrada y salida Estas puertas también necesitarán un menor número de entradas, por lo que serán más rápidas Hay que tener en cuenta que para reducir realmente el número de biestables es necesario reducir el número de estados por debajo de una potencia de dos Análisis y diseño de sistemas secuenciales 74 37 Equivalencia funcional Dos máquinas de estados finitos son funcionalmente equivalentes si producen la misma secuencia de salidas para todas las posibles secuencias de entrada Dentro de una máquina de estados también puede darse el caso de que dos estados sean equivalentes, por lo que se los puede asociar para reducir el número de estados Dos estados son equivalentes si y sólo si: Ambos estados producen la misma salida para cada entrada Ambos estados tienen estados siguientes equivalentes para cada entrada Análisis y diseño de sistemas secuenciales 75 Procedimiento de minimizació minimización de estados El procedimiento para la minimización de estados requiere agrupar todos los estados del sistema en grupos denominados clases de equivalencia En primer lugar se comparan las salidas de cada estado para cada entrada y se agrupan todos los estados que coincidan En segundo lugar se determina el estado siguiente de cada estado del grupo para cada entrada, creando subgrupos de estados cuyos estados siguientes estén en un mismo grupo Este segundo paso puede hacer que estados que tenían los estados siguiente en un mismo grupo ya no los tengan, por lo que sería necesaria una nueva partición Cada grupo estará representado por un único estado Análisis y diseño de sistemas secuenciales 76 38 Minimización de estados El contador ascendente/descendente módulo 3 de nuestro ejemplo tiene seis estados, como puede comprobarse en la tabla de estado siguiente y salida A partir de esta tabla se puede aplicar la minimización Análisis y diseño de sistemas secuenciales 77 Minimización de estados Se empieza por el conjunto de todos los estados y se determinan los valores de salida para cada combinación de valores de entrada, lo que da lugar a tres grupos Análisis y diseño de sistemas secuenciales 78 39 Minimización de estados Para cada valor de las entradas los estados siguientes de cada estado de un grupo siempre están en el mismo grupo, por lo que no es necesario seguir particionando Análisis y diseño de sistemas secuenciales 79 Minimización de estados Cada grupo representa una clase de estados equivalentes y, por lo tanto, solo es necesario que la máquina de estados final tenga un estado perteneciente a cada uno de los grupos Análisis y diseño de sistemas secuenciales 80 40 Estructura del tema Introducción Modelo de máquinas de estados finitos Análisis de sistemas secuenciales Análisis de sistemas de tipo Moore Análisis de sistemas de tipo Mealy Ejemplos Diseño de sistemas secuenciales Resumen y bibliografía Generación del diagrama de estados Minimización del diagrama de estados Codificación de estados Elección de los biestables Implementación y verificación del sistema Ejemplos Análisis y diseño de sistemas secuenciales 81 Codificación de estados Cada biestable es capaz de almacenar un valor binario por lo que un circuito con total de n 2 n biestables puede tener un estados, cada uno con un código binario Cada código se asignará a un único estado aunque, en principio, cualquier código puede asignarse a cualquiera de los estados Sin embargo, el coste y el retardo de la lógica de entrada y salida dependerá de a qué estado concreto se le asigna cada uno de los códigos Análisis y diseño de sistemas secuenciales 82 41 Codificación de estados Por ejemplo, una máquina de estados finitos con cuatro estados necesitará dos biestables, los cuales podrán codificar los estados de (4!) formas diferentes Análisis y diseño de sistemas secuenciales 83 Codificación de estados La comprobación manual de todas las posibles codificaciones, así como la estimación de su retardo y complejidad, sería un proceso tedioso en el que un error podría suceder con facilidad Para evitar este problema se usan varias estrategias y heurísticas de asignación, siendo tres de ellas las más comúnmente usadas: Mínimo cambio de bits Prioridad de adyacencia Codificación del uno caliente Análisis y diseño de sistemas secuenciales 84 42 Mínimo cambio de bits Esta estrategia asigna valores booleanos a los estados de forma que se minimice el número total de cambios de bits en todas las transiciones De esta forma se reducirá la cantidad de puertas lógicas usadas para implementar el circuito Para cada cambio de bit, un biestable cuya lógica asociada está diseñada en dos niveles en forma de suma de productos necesita: Una puerta AND adicional Una entrada más en la puerta OR Análisis y diseño de sistemas secuenciales 85 Mínimo cambio de bits A cada arco del diagrama de estados le podemos asignar un peso igual al número de bits distintos entre los códigos de los estados origen y destino De acuerdo con esta estrategia, la codificación óptima será aquella que minimice la suma de los pesos de todas las transiciones Análisis y diseño de sistemas secuenciales 86 43 Prioridad en adyacencia Esta estrategia consiste en asignar codificaciones adyacentes (que sólo difieran en un bit) a todos los estados que tengan un destino, fuente o salida común Se da mayor prioridad a los estados que tienen el mismo estado siguiente para un valor dado de entrada El motivo de esta prioridad es que, si minimizamos por Karnaugh, aparecerá la misma codificación de estado siguiente en dos celdas adyacentes, permitiendo simplificar la lógica asociada a los biestables Análisis y diseño de sistemas secuenciales 87 Prioridad en adyacencia Un segundo nivel de prioridad se asigna a los estados siguientes de un mismo estado Esta prioridad se basa en el hecho de que, si las entradas difieren en un bit, estos estados aparecen adyacentes en el mapa de Karnaugh durante la minimización Finalmente, el tercer nivel de prioridad se da a los estados que tienen el mismo valor de salida para los mismos valores de entrada, facilitando también la minimización por Karnaugh Análisis y diseño de sistemas secuenciales 88 44 Prioridad en adyacencia En este diagrama de cuatro estados podemos ver que: S1 y S2 tienen un mismo estado siguiente S3 para el valor de entrada 0 (primera prioridad) S1 y S2 son estados siguientes de S0 (segunda prioridad) S0 y S1 tienen el mismo valor de salida 0 para el mismo valor de entrada 0 (tercera prioridad) S2 y S3 tienen el mismo valor de salida 1 para el mismo valor de entrada 0 (tercera prioridad) Análisis y diseño de sistemas secuenciales 89 Codificación del uno caliente Esta estrategia utiliza codificación redundante, de manera que, en lugar de usar n biestables para 2n estados, a cada estado se le asigna su propio biestable En cada momento sólo habrá un biestable con valor 1, que será aquel que se corresponda con el estado actual, mientras que todos los demás estarán a 0 De esta forma, el 1 va pasando de biestable en biestable según el circuito cambia de estado en estado, siguiendo el algoritmo del juego de la “patata caliente” Análisis y diseño de sistemas secuenciales 90 45 Codificación del uno caliente La ventaja de esta estrategia está en el hecho de que la lógica para implementar las funciones de entrada a los biestables es muy simple La principal desventaja radica en el hecho de que es necesario utilizar una cantidad mayor de biestables de lo que es habitual En consecuencia, esta estrategia debe usarse para implementar sistemas secuenciales con pocos estados, ya que en otro caso el coste adicional sería excesivo Análisis y diseño de sistemas secuenciales 91 Elección de una estrategia En general, la estrategia para codificar estados consiste en determinar las posibles opciones y, después, estimar el coste y el retardo de la lógica de entrada y salida para cada tipo de codificación A modo de ejemplo aplicaremos las tres estrategias al contador ascendente/descendente módulo 3 Dado que este circuito tiene tres estados necesitaremos dos biestables para implementarlo, a excepción de la estrategia del uno caliente, que necesitará tres Análisis y diseño de sistemas secuenciales 92 46 Codificación del contador módulo 3 Si se utiliza la estrategia del mínimo cambio de bits se obtiene una codificación sencilla, que llamaremos codificación A, omitiendo la combinación 11 y asignando S0 = 00, S1 = 01 y S2 = 10 Usando la estrategia de prioridad en adyacencia no hay estados que cumplan las dos primeras reglas de prioridad, pero la tercera la cumplen S0S1 y S1S2 La codificación A cumple estas condiciones, pero podríamos plantear una alternativa, que llamaremos codificación B, que asigna 01 a S0 y 10 a S2 para reducir el número de entradas de la puerta AND de salida Análisis y diseño de sistemas secuenciales 93 Codificación del contador módulo 3 Finalmente, la estrategia del uno caliente daría lugar a una codificación que llamaremos codificación C y que necesitaría tres biestables Para elegir una de estas tres codificaciones es necesario estimar el coste y el retardo de la implementación de la lógica de entrada y salida Análisis y diseño de sistemas secuenciales 94 47 Codificación del contador módulo 3 En primer lugar es necesario obtener las ecuaciones de excitación para cada uno de los biestables, así como la ecuación de salida A partir de estas ecuaciones puede estimarse el coste y el retardo de su implementación usando dos niveles de puertas NAND Para simplificar la estimación supondremos que el complemento de cada variable está disponible sin retardo respecto al propio valor de la variable Análisis y diseño de sistemas secuenciales 95 Codificación del contador módulo 3 Aquí podemos ver la estimación del coste y retardo de la codificación A, usando el método de Karnaugh para obtener las ecuaciones de estado siguiente y salida Análisis y diseño de sistemas secuenciales 96 48 Codificación del contador módulo 3 Aquí podemos ver la estimación del coste y retardo de la codificación B, usando el método de Karnaugh para obtener las ecuaciones de estado siguiente y salida Análisis y diseño de sistemas secuenciales 97 Codificación del contador módulo 3 Aquí podemos ver la estimación del coste y retardo de la codificación C, usando el método de Karnaugh para obtener las ecuaciones de estado siguiente y salida Análisis y diseño de sistemas secuenciales 98 49 Codificación del contador módulo 3 La codificación C es la más rápida, pero también es la más costosa, por lo que la elección de la codificación adecuada dependerá de las prioridades del diseñador La codificación A tiene un coste 66, un retardo máximo de entrada de 4,0ns y un retardo de salida de 3,6ns La codificación B tiene un coste 64, un retardo máximo de entrada de 4,0ns y un retardo de salida de 3,2ns La codificación C tiene un coste 82, un retardo máximo de entrada de 3,6ns y un retardo de salida de 3,2ns Usaremos la codificación A para seguir desarrollando este ejemplo, ya que es la más común y fácil de entender Análisis y diseño de sistemas secuenciales 99 Estructura del tema Introducción Modelo de máquinas de estados finitos Análisis de sistemas secuenciales Análisis de sistemas de tipo Moore Análisis de sistemas de tipo Mealy Ejemplos Diseño de sistemas secuenciales Resumen y bibliografía Generación del diagrama de estados Minimización del diagrama de estados Codificación de estados Elección de los biestables Implementación y verificación del sistema Ejemplos Análisis y diseño de sistemas secuenciales 100 50 Elección de los biestables Una vez completado el proceso de minimización y codificación de estados hay que elegir el tipo de biestable más apropiado para la implementación Los biestables T suelen ser una buena elección para circuitos de tipo contador, donde los biestables deben cambiar de estado con gran frecuencia Los biestables D son más apropiados cuando la información de entrada debe almacenarse durante algún tiempo para su uso posterior Análisis y diseño de sistemas secuenciales 101 Elección de los biestables En situaciones en las que el estado de los biestables cambia en función de varias señales de entrada pueden usarse biestables SR o JK, ya que tienen dos entradas El biestable JK es más complejo que el SR, pero no tiene ninguna combinación de entrada prohibida Sin embargo, aunque tienden a reducir el coste de la lógica asociada por tener dos entradas, los biestables SR y JK también necesitan el doble de conexiones Dado que necesitan un menor número de conexiones, los biestables D y T se adaptan mejor al diseño de circuitos integrados Análisis y diseño de sistemas secuenciales 102 51 Elección de biestables para el contador Para elegir el tipo de biestable que minimice el coste y el retardo de la lógica de entrada del contador ascendente/descendente módulo 3 hay que partir de: La tabla de estados siguientes del contador La tabla de excitación de los cuatro tipos de biestable Análisis y diseño de sistemas secuenciales 103 Elección de biestables para el contador Para cada pareja de estados actual y siguiente se sustituyen los valores de estado siguiente por los valores de entrada requeridos en la tabla de excitación De esta forma se obtendrán los mapas de entrada para los cuatro tipos de biestable, que contendrán dos submapas en el caso de los biestables D y T, y cuatro submapas en el caso de los biestables SR y JK A partir de estos mapas de entrada se pueden obtener las expresiones mínimas de la lógica de entrada de cada uno de los biestables Análisis y diseño de sistemas secuenciales 104 52 Elección de biestables para el contador Este es el mapa de entrada correspondiente al uso de biestables SR, junto con la expresión mínima de las ecuaciones de entrada Análisis y diseño de sistemas secuenciales 105 Elección de biestables para el contador Este es el mapa de entrada correspondiente al uso de biestables JK, junto con la expresión mínima de las ecuaciones de entrada Análisis y diseño de sistemas secuenciales 106 53 Elección de biestables para el contador Este es el mapa de entrada correspondiente al uso de biestables D, junto con la expresión mínima de las ecuaciones de entrada Análisis y diseño de sistemas secuenciales 107 Elección de biestables para el contador Este es el mapa de entrada correspondiente al uso de biestables T, junto con la expresión mínima de las ecuaciones de entrada Análisis y diseño de sistemas secuenciales 108 54 Elección de biestables para el contador La estimación de coste y retardo que acompaña a cada ecuación no incluye los inversores de entrada ni el coste y retardo de los biestables De acuerdo con los resultados obtenidos, el biestable más apropiado es el JK ya que implica un menor coste y retardo de la lógica de entrada En la práctica, no sólo habría que tener en cuenta el coste y retardo de la lógica de entrada, sino el de todo el circuito en su conjunto antes de tomar una decisión Análisis y diseño de sistemas secuenciales 109 Estructura del tema Introducción Modelo de máquinas de estados finitos Análisis de sistemas secuenciales Análisis de sistemas de tipo Moore Análisis de sistemas de tipo Mealy Ejemplos Diseño de sistemas secuenciales Resumen y bibliografía Generación del diagrama de estados Minimización del diagrama de estados Codificación de estados Elección de los biestables Implementación y verificación del sistema Ejemplos Análisis y diseño de sistemas secuenciales 110 55 Implementación del sistema El paso final en el diseño de un sistema secuencial consiste en realizar su implementación utilizando componentes lógicos Análisis y diseño de sistemas secuenciales 111 Implementación del sistema Se han utilizado inversores dobles en la entrada para suministrar más corriente al circuito y, por tanto, reducir el retardo de las puertas Análisis y diseño de sistemas secuenciales 112 56 Implementación del sistema Los retardos de cada puerta determinarán el tiempo de ciclo mínimo que debe tener la señal de reloj para que el circuito funcione correctamente Análisis y diseño de sistemas secuenciales 113 Verificación del sistema Por último, hay que desarrollar cronogramas que permitan verificar el comportamiento del sistema al compararlos con los resultados proporcionados por una herramienta de simulación Análisis y diseño de sistemas secuenciales 114 57 Verificación del sistema La señal C habilita el contador en t0 y, a partir de ahí, dado que la señal D está desactivada, va realizando la cuenta módulo 3 en sentido ascendente en cada pulso de la señal de reloj Análisis y diseño de sistemas secuenciales 115 Verificación del sistema Más adelante, en el instante t4, se activa la señal D, por lo que el contador empieza a realizar la cuenta en sentido descendente en cada pulso de la señal de reloj Análisis y diseño de sistemas secuenciales 116 58 Verificación del sistema Para una completa verificación sería necesario desarrollar cronogramas para todos los casos posibles, teniendo también en cuenta el retardo de los componentes lógicos Análisis y diseño de sistemas secuenciales 117 Estructura del tema Introducción Modelo de máquinas de estados finitos Análisis de sistemas secuenciales Análisis de sistemas de tipo Moore Análisis de sistemas de tipo Mealy Ejemplos Diseño de sistemas secuenciales Resumen y bibliografía Generación del diagrama de estados Minimización del diagrama de estados Codificación de estados Elección de los biestables Implementación y verificación del sistema Ejemplos Análisis y diseño de sistemas secuenciales 118 59 Ejemplo de diseño 1 Vamos a realizar el diseño del circuito secuencial correspondiente a este diagrama de estados Las salidas dependen sólo del estado actual (están indicadas en el estado) así que obtendremos un circuito de tipo Moore Análisis y diseño de sistemas secuenciales 119 Ejemplo de diseño 1 A partir del diagrama de estados puede generarse fácilmente la tabla de estado siguiente Análisis y diseño de sistemas secuenciales 120 60 Ejemplo de diseño 1 Dado que los estados del diagrama dado ya están codificados, no tenemos necesidad de asignar ninguna codificación a los estados El diagrama contiene cuatro estados, por lo que tendremos que utilizar dos biestables Para simplificar el ejemplo supondremos que el primer biestable es de tipo JK y el segundo biestable es de tipo D Análisis y diseño de sistemas secuenciales 121 Ejemplo de diseño 1 A partir de la tabla de estado siguiente, y conociendo el tipo de biestable, podemos generar la tabla de excitación Análisis y diseño de sistemas secuenciales 122 61 Ejemplo de diseño 1 La lógica de entrada a los biestables puede obtenerse simplificando las funciones correspondientes Análisis y diseño de sistemas secuenciales 123 Ejemplo de diseño 1 La lógica de entrada a los biestables puede obtenerse simplificando las funciones correspondientes Análisis y diseño de sistemas secuenciales 124 62 Ejemplo de diseño 1 La lógica de entrada a los biestables puede obtenerse simplificando las funciones correspondientes Análisis y diseño de sistemas secuenciales 125 Ejemplo de diseño 1 A partir del diagrama de estados también puede generarse la tabla de salida, teniendo en cuenta que estamos hablando de un circuito de tipo Moore Análisis y diseño de sistemas secuenciales 126 63 Ejemplo de diseño 1 La lógica de salida del circuito puede obtenerse simplificando las funciones correspondientes Análisis y diseño de sistemas secuenciales 127 Ejemplo de diseño 1 Ahora que tenemos las ecuaciones podemos completar el proceso de diseño dibujando el diagrama del circuito Análisis y diseño de sistemas secuenciales 128 64 Estructura del tema Introducción Modelo de máquinas de estados finitos Análisis de sistemas secuenciales Análisis de sistemas de tipo Moore Análisis de sistemas de tipo Mealy Ejemplos Diseño de sistemas secuenciales Resumen y bibliografía Generación del diagrama de estados Minimización del diagrama de estados Codificación de estados Elección de los biestables Implementación y verificación del sistema Ejemplos Análisis y diseño de sistemas secuenciales 129 Ejemplo de diseño 2 Vamos a diseñar un circuito que monitorice una determinada línea de entrada y que active una señal de salida cuando detecte que la entrada ha seguido la secuencia 0110 durante los últimos cuatro ciclos El circuito diseñado será de tipo Mealy, por lo que las salidas dependerán tanto del estado actual como del valor de la entrada A partir de esta descripción en lenguaje natural debemos desarrollar el diagrama de estados que describa el circuito de forma funcional Análisis y diseño de sistemas secuenciales 130 65 Ejemplo de diseño 2 Dado un estado inicial, debemos permanecer en él hasta que aparezca un cero A partir del primer cero debemos avanzar de estado mientras nos sigan llegando bits de la secuencia 0110 Análisis y diseño de sistemas secuenciales 131 Ejemplo de diseño 2 En el caso de que aparezca un número que no pertenezca a la secuencia correcta tendremos que regresar a un estado anterior Si llega un 0 fuera de secuencia lo consideramos como el primer 0 de la siguiente secuencia y vamos al segundo estado Si llega un 1 fuera de secuencia regresamos al estado inicial a esperar que llegue un 0 Análisis y diseño de sistemas secuenciales 132 66 Ejemplo de diseño 2 Por último regresaremos al estado inicial Si regresamos porque se completó la secuencia correcta con un 0 activaremos la señal de salida Si regresamos porque apareció un 1 fuera de secuencia mantendremos la señal de salida desactivada Análisis y diseño de sistemas secuenciales 133 Ejemplo de diseño 2 A continuación debemos asignar códigos a los cuatro estados del diagrama Para no entrar en demasiado detalle, asignaremos los códigos de forma arbitraria En total necesitaremos dos biestables, que también elegiremos de forma arbitraria: un JK y un D Análisis y diseño de sistemas secuenciales 134 67 Ejemplo de diseño 2 A partir del diagrama de estados podemos generar la tabla de estado siguiente Análisis y diseño de sistemas secuenciales 135 Ejemplo de diseño 2 Con la tabla de estado siguiente, y conociendo cuáles son los tipos de biestable utilizados, podemos generar la tabla de excitación y obtener las ecuaciones Análisis y diseño de sistemas secuenciales 136 68 Ejemplo de diseño 2 A partir del diagrama de estados también puede generarse la tabla de salida y la ecuación correspondiente, siempre teniendo en cuenta que estamos hablando de un circuito de tipo Mealy Análisis y diseño de sistemas secuenciales 137 Ejemplo de diseño 2 Ahora que tenemos las ecuaciones podemos completar el proceso de diseño dibujando el diagrama del circuito Análisis y diseño de sistemas secuenciales 138 69 Estructura del tema Introducción Modelo de máquinas de estados finitos Análisis de sistemas secuenciales Análisis de sistemas de tipo Moore Análisis de sistemas de tipo Mealy Ejemplos Generación del diagrama de estados Minimización del diagrama de estados Codificación de estados Elección de los biestables Implementación y verificación del sistema Ejemplos Diseño de sistemas secuenciales Resumen y bibliografía Análisis y diseño de sistemas secuenciales 139 Ejemplo de diseño 3 Como último ejemplo diseñaremos un circuito que implemente el funcionamiento descrito por este diagrama de estados usando biestables tipo T La parte combinacional del sistema la vamos a implementar usando únicamente puertas NAND Análisis y diseño de sistemas secuenciales 140 70 Ejemplo de diseño 3 A partir del diagrama de estados podemos deducir la tabla de estado siguiente Análisis y diseño de sistemas secuenciales 141 Ejemplo de diseño 3 Conociendo el comportamiento de los biestables T podemos extender la tabla de estado siguiente y formar la tabla de excitación Análisis y diseño de sistemas secuenciales 142 71 Ejemplo de diseño 3 La tabla de excitación nos permite obtener las ecuaciones de excitación de los biestables Análisis y diseño de sistemas secuenciales 143 Ejemplo de diseño 3 La tabla de excitación nos permite obtener las ecuaciones de excitación de los biestables Análisis y diseño de sistemas secuenciales 144 72 Ejemplo de diseño 3 A partir del diagrama de estados también podemos deducir la tabla y las ecuaciones de salida, teniendo en cuenta que se trata de un sistema de tipo Moore Análisis y diseño de sistemas secuenciales 145 Ejemplo de diseño 3 Todo lo que nos queda por hacer es transformar las ecuaciones usando las leyes de DeMorgan para que puedan ser implementadas con puertas NAND Análisis y diseño de sistemas secuenciales 146 73 Ejemplo de diseño 3 Una alternativa para la implementación de este tipo de sistemas sería utilizar decodificadores o multiplexores para implementar la parte combinacional del circuito En este ejemplo utilizaremos un decodificador con dos entradas de control para generar T0 y un multiplexor con dos entradas de control para generar T1 A parte del decodificador y el multiplexor hará falta lógica adicional que implementaremos con el menor número posible de puertas AND, OR y NOT Análisis y diseño de sistemas secuenciales 147 Ejemplo de diseño 3 Esta implementación del circuito puede deducirse a partir de la tabla de excitación, ya que la tabla de salida es trivial Análisis y diseño de sistemas secuenciales 148 74 Estructura del tema Introducción Modelo de máquinas de estados finitos Análisis de sistemas secuenciales Análisis de sistemas de tipo Moore Análisis de sistemas de tipo Mealy Ejemplos Generación del diagrama de estados Minimización del diagrama de estados Codificación de estados Elección de los biestables Implementación y verificación del sistema Ejemplos Diseño de sistemas secuenciales Resumen y bibliografía Análisis y diseño de sistemas secuenciales 149 Resumen Los circuitos secuenciales implementados usando biestables son vitales para el diseño de sistemas digitales complejos Dado un circuito secuencial, no es sencillo comprender su objetivo, por lo que resulta necesario un detallado proceso de análisis para estudiarlo De la misma forma, dada la descripción funcional de un objetivo, el diseño de un sistema secuencial que lo implemente debe seguir un conjunto determinado de pasos para llegar a un resultado óptimo Análisis y diseño de sistemas secuenciales 150 75 Bibliografía Principios de Diseño Digital Capítulo 6 Daniel D. Gajski Prentice Hall, 1997 Análisis y diseño de sistemas secuenciales 151 76