Documentos de Académico
Documentos de Profesional
Documentos de Cultura
3
CIRCUITOS LÓGICOS SECUENCIALES
1. OBJETIVOS
• Realizar el diseño de máquinas de estado, utilizando las sentencias case e if – then – else.
2. JUSTIFICACIÓN
3. MARCO TEÓRICO
Las máquinas de estados finitos (siglas en inglés FSM), se utilizan para describir cualquier
tipo de sistema secuencial como control de otros bloques digitales o simplemente con
descripción de muchas otras funciones digitales. La descripción de estas, en un lenguaje de
alto nivel se realiza de una forma sencilla, pero en ciertas ocasiones dicha descripción utiliza
bastantes recursos del dispositivo, y además el tiempo de respuesta dado por los retardos de
propagación es difícil de controlar. De aquí la necesidad de aprender a describirlas de formas
diferentes buscando el diseño más eficiente.
Página 1 de 19
El circuito secuencial debe ser capaz de mantener su estado durante algún tiempo, para ello
se hace necesario el uso de dispositivos de memoria. Los dispositivos de memoria
utilizados en circuitos secuenciales pueden ser tan sencillos como un simple retardador
(inclusive, se puede usar el retardo natural asociado a las compuertas lógicas) o tan
complejos como un circuito completo de memoria denominado multivibrador biestable o Flip
Flop.
Como puede verse entonces, en los circuitos secuenciales entra un factor que no se había
considerado en los combinacionales, dicho factor es el tiempo. De hecho, los circuitos
secuenciales se clasifican de acuerdo a la manera como manejan el tiempo en circuitos
secuenciales síncronos y circuitos secuenciales asíncronos.
Una máquina de estados finitos es un sistema sincrónico (gobernado por un reloj), el cual
tiene un número fijo de estados, una cantidad de transiciones o saltos entre estados, los
cuales son gobernados por unas entradas que pueden o no influir directamente en las salidas
del sistema, estas salidas pueden ser totalmente combinatorias figura 1 (a) o pueden tener
un registro a la salida para evitar instantes de tiempo inesperados «glitch» figura 1 (b).
Página 2 de 19
Figura 1. Arquitectura de una máquina de estados: (a) Bloques básicas de una máquina de estados,
(b) Bloques básicos con registro de salida para evitar «Glitch».
Cuando se diseña una máquina de estado se pueden tener en cuenta varios factores, entre
los cuales están la cantidad de estados, la geometría de la máquina como tal y la codificación
de los estados, así como la relación entre las salidas y los estados internos; seguramente se
lograrían mejores resultados en cuanto a la optimización del hardware, si el diseñador se
detuviera un instante a verificar el tipo de máquina de estado la cual quiere implementar. A
continuación, se muestran algunas caracterizaciones de las máquinas de estados logradas a
través de la práctica, estas caracterizaciones no se encuentran en ninguna literatura formal, y
son un posible objeto de estudio.
• Lineal: en este tipo de máquinas los estados están geométricamente alineados uno
después del otro, son ideales para procesos de comunicaciones, en que el reinicio
depende de una señal externa. En la figura 2, se muestra un diagrama ejemplo de una
máquina lineal.
Página 3 de 19
• Multicolumna: son máquinas de estados donde existe un punto que se bifurca
dependiendo de las señales de entrada y cada brazo retorna a un estado inicial. Es
usado típicamente para las unidades de control de procesos complejos, por ejemplo,
para la unidad de control de un procesador.
Página 4 de 19
• Concéntrica: el ejemplo típico de estas máquinas es el sistema de control de luces de
un semáforo vista en la figura 5, secuenciadores o controles de motores de paso. Se
diferencia de las lineales en que estas últimas son mucho más largas y no
necesariamente son cíclicas. Por ejemplo, el control de semáforos.
o One Hot: codificación de estados donde hay solamente un uno por código y se
utilizan tantos flip – flops como estados existan.
o Mínimo cambio de Bit (código Grey): codificación de estados donde
solamente hay un cambio de bit entre códigos adyacentes.
o Conteo enumerado (binario): codificación de estados que utiliza la
numeración binaria como asignación de códigos.
Página 5 de 19
3.3.3. Caracterización en dependencia de la relación entre las salidas y los
estados internos
• El autómata de Mealy: donde las salidas se obtienen en función de las entradas y los
estados internos.
Página 6 de 19
Figura 8. Diagrama de flujo que representa el funcionamiento de las Máquinas de estados Mealy y Moore.
Como primera medida si dentro de una aplicación existe una máquina de estados finitos muy
compleja se debe contemplar la posibilidad de dividirla en varias máquinas más pequeñas,
con funciones mucho más simples. En este caso las herramientas CAD soportan el diseño de
más de un diagrama de estados y su posterior unión en una sola entidad final.
Una máquina de estados se puede desarrollar en una de las siguientes formas según la
descripción en alto nivel que de ella se haga, específicamente en este caso se da mediante
un estilo de diseño donde se ve una única entidad y se dividen cada una de sus partes
internas en procesos independientes y paralelos.
Página 7 de 19
• Diseño del diagrama de estados. En este paso el diseñador, debe dibujar el diagrama
de estados examinando si hay estados repetidos, o señales que se comporten igual
utilizando solo una de ellas, o si la máquina es de mucha complejidad y lo apropiado
es subdividirla.
• En seguida el diseñador observando el diagrama de estados, puede determinar su
tamaño, forma y número de estados y salidas como principales características. En
este paso es donde el usuario debe determinar si vale la pena realizar la descripción
por código o simplemente, se debe utilizar una herramienta CAD que arroje una
descripción estándar. También las herramientas poseen estándar.
a. Ocupa muchos Flip – flops: debería tratar de codificar los estados por código, o
contemplar la posibilidad de utilizar una ROM.
b. Las salidas presentan Glitch: el diseñador debería realizar la lógica de salida, donde la
salida que presente problemas se encuentre en un proceso dependiente del reloj.
c. Ocupa muchas LUT (Look – Up Tables, memorias) o compuertas: El diseñador
debería utilizar una codificación One – hot ó Two – hot.
Figura 9. Estructura básica de una Máquina de Estados con las señales requeridas para su descripción en
VHDL.
Página 8 de 19
• La sección secuencial (Sequential logic) tiene tres entradas: clock, reset y nx_state
y una salida: pr_state.
Se recuerda que, si la salida de la máquina depende no solo del estado presente sino
también de la entrada actual, se denomina máquina de estado de Mealy. Si la máquina
depende solo del estado actual, se denomina máquina de Moore.
A continuación, se describen dos posibles estilos de diseño: con salida asíncrona y con
salida síncrona. En el primero solo el estado presente es almacenado, en este caso, si se
usa una máquina de Mealy (la salida depende de la entrada actual) la salida cambia cuando
la entrada cambia (salida asíncrona). No obstante, en muchas aplicaciones, las señales
deben ser síncronas, de modo que la salida debe actualizarse solo cuando existe un pulso de
reloj, este sería el segundo estilo de diseño, en el que para hacer una máquina de Mealy
síncrona, la salida deber ser almacenada también.
Diseño de la sección secuencial: Los Flip Flop están en la sección inferior, de tal forma que el
reloj y reset se conectan a ella. Siendo la sección inferior secuencial, es necesario un
proceso, en el cual se puede usar cualquier sentencia secuencial. Una plantilla típica de
diseño de la sección inferior se muestra a continuación en las figuras 10 y 11.
Figura 10. Plantilla típica de diseño del bloque secuencial de una máquina de estados en VHDL.
Página 9 de 19
Diseño de la sección combinacional: El código contiene la asignación a la salida y el
establecimiento de estado siguiente. Observar que no hay asignación a señal hecha en la
transición de otra señal, de modo que no se infieren Flip Flop’s. (Figura 11)
Figura 11. Plantilla típica de diseño del bloque combinacional de una máquina de estados en VHDL.
3.5.2. Diseño con salida síncrona
Figura 12. El estilo de diseño síncrono: (a) Máquina de Moore, (b) Máquina de Mealy
Página 10 de 19
Una plantilla típica de diseño se muestra a continuación en la figura 13.
Figura 12. Plantilla típica de diseño de una máquina de estados síncrona en VHDL
4. TRABAJO PREVIO
a. Realizar una lectura selectiva o de búsqueda del libro “VHDL, el arte de programar
sistemas digitales” de los autores David G. Maxinez y Jessica Alcalá, con el fin de
comprender la organización y estructura del lenguaje, así como conocer la descripción en
VDHL de un diseño lógico combinacional (estructuras básicas concurrentes y
secuenciales) y de un diseño lógico secuencial (Flip – Flops, registros, contadores…).
b. Realizar la descripción en VHDL para todas las compuertas existentes (dos entradas de 4
bits), para un comparador de magnitud (dos entradas de 4 bits), un multiplexor (4 entradas
de 2 bits), un sumador con acarreo (dos entradas de 4 bits), un decodificador (BCD a
decimal), un codificador (decimal a BCD), los diferentes tipos de latch y flip flops tanto
síncronos como asíncronos.
Página 11 de 19
5. DESARROLLO DE LA PRÁCTICA
Nota: Una vez verificado el código, realizar el flujo de diseño para lógica programable.
Página 12 de 19
Ejemplo 2: Máquina de estados (Dado digital)
Antecedentes: Se denomina máquina de estados a un sistema cuyas señales de salida
dependen no sólo del estado de las señales de entrada actuales sino también de las señales
de salida anteriores que han configurado un cierto "estado". El estado del sistema depende
del estado anterior y del estado de las entradas en ese instante. En ocasiones los estados
son sucesivos monótonamente. En otros casos, existen desvíos a estados anteriores o
posteriores. Los cambios de estado son gobernados por una señal de pulsos sincrónicos o
asincrónicos.
Desarrollo: Crear una máquina de estados que entregue pseudo aleatoriamente los valores
de un dado (del 1 al 6) al oprimir un botón.
Descripción en VDHL
Nota: Una vez verificado el código, realizar el flujo de diseño para lógica programable.
Página 13 de 19
Ejemplo 3: Contador BDC
Antecedentes: Un contador de décadas BCD es un ejemplo de una máquina de Moore, ya
que la salida depende solo del estado presente. Dispone de una secuencia binaria que no es
completa, va desde 0000 hasta 1001. Cuando llega a 1001 en lugar de pasar al siguiente
estado, que sería 1010, inicia un nuevo ciclo a partir de 0000. La figura muestra un contador
de décadas BCD síncrono, hecho con flip – flops tipo T, y el diagrama de estados de cada
una de las salidas.
Nota: Una vez verificado el código, realizar el flujo de diseño para lógica programable.
Página 14 de 19
Ejemplo 4: Máquina de estados simple y su análisis de tiempo
Desarrollo: Implementar una máquina de estados utilizando VHDL y analizar su simulación
temporal.
Descripción en VHDL
Diseño con salida asíncrona Diseño con salida síncrona
Nota: Una vez verificado el código, realizar el flujo de diseño para lógica programable.
Página 15 de 19
Simulación Temporizada
Página 16 de 19
Descripción en VDHL
Nota: Una vez verificado el código, realizar el flujo de diseño para lógica programable.
Página 17 de 19
Simulación Temporizada
Notar que la salida no depende de la entrada actual. Todas las asignaciones a q son incondicionales, esto es,
no dependen de d; por lo tanto, la salida es automáticamente sincronizada.
6. EVALUACIÓN
a. Modificar la descripción del contador del ejemplo 1 para que la secuencia contenga
números impares solamente.
b. Cambiar el código del ejemplo 2 de tal forma que uno de los números del dado tenga una
probabilidad del 0.5 con respecto a los demás de 0.1, inicialmente todos tienen una
probabilidad de 1/6.
c. Capturar una máquina de estados tipo Moore y otra tipo Mealy, generar el código VHDL y
realizar una simulación funcional.
7. BIBLIOGRAFÍA
Atlys Spartan-6 FPGA Development Board - Lógica Programable. (n.d.). Retrieved March 6,
2018, from https://sites.google.com/site/logicaprogramable/calculadoras/fpga/digilent---
atlys-spartan-6-fpga-development-board
Página 18 de 19
Castedo, L. (n.d.). Prácticas De Microelectrónica. Madrid: Universidad Politécnica De Madrid.
Retrieved from
http://www.elai.upm.es/webantigua/spain/Asignaturas/uElectronica/archivos/pue.pdf
Domínguez Gómez, M. Á. (2011). Introducción Al Software ISE (Integrated Software
Environment) De Xilinx. España: Universidad De Vigo. Retrieved from
http://mdgomez.webs.uvigo.es/SED/Guia_Inicio_ISE.pdf
Maxinez, D. G., & Alcalá, J. (2004). VHDL: El arte de programar sistemas digitales.
Compañía Editorial Continental.
Pereira, M. P., Gómez, E. J., & Restrepo, M. F. R. (2013). Implementación de máquinas de
estado basadas en rom en dispositivos FPGA de xilinx de bajo costo. Ingenium Revista
de la facultad de ingeniería, 14(28), 86-94.
Rangel Magdaleno, J. de J., & Romero Troncoso, R. de J. (2006). Manual De Prácticas -
Electrónica Digital II. México: Universidad De Guanajuato. Retrieved from
http://www.hspdigital.org/Documentos/HSP/EDII/LabED-II.pdf
Reyes Barranca, M. A., Arellano Cárdenas, O., & Flores Nava, L. M. (2014). Electrónica
Digital - Prácticas De Laboratorio. Madrid: Universidad Politécnica De Madrid. Retrieved
from http://www.vlsilab.cinvestav.mx/files/Practicas_Spartan_6.pdf
Página 19 de 19