Sei sulla pagina 1di 19

PRÁCTICA No.

3
CIRCUITOS LÓGICOS SECUENCIALES

1. OBJETIVOS

1.1. Objetivo General

• Realizar el diseño de máquinas de estado, utilizando las sentencias case e if – then – else.

1.2. Objetivos Específicos

• Familiarizarse a través de ejemplos sencillos con la lógica secuencial.


• Familiarizarse a través de ejemplos sencillos con el diseño de máquinas de estados.
• Realizar un ejemplo práctico haciendo uso de la tarjeta Atlys Spartan 6.

2. JUSTIFICACIÓN

La realización de esta práctica le permitirá al estudiante realizar diseños circuitos lógicos


secuenciales utilizando máquinas de estados, además de aplicar los conocimientos teóricos
vistos en clase.

3. MARCO TEÓRICO

Existen dos limitantes básicas cuando se realizan diseños en dispositivos de lógicos


programables específicamente en FPGA, la primera es la cantidad de hardware utilizado en
la aplicación y la otra es la frecuencia máxima a la cual puede ser usado el diseño, por dicha
razón se debe buscar usar la menor cantidad de recursos y además de ello verificar que la
implementación tenga un retardo de propagación tolerable.

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.

3.1. Circuitos lógicos secuenciales

Un circuito cuya salida depende no solo de la combinación de entrada, sino también de la


historia de las entradas anteriores se denomina Circuito Secuencial. La historia de las
entradas anteriores en un momento dado se encuentra resumida en el estado del circuito, el
cual se expresa en un conjunto de variables de estado.

Microelectrónica – Lab03, Circuitos Lógicos Secuenciales


(© Ángelo Joseph Soto Vergel)

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.

• En un circuito secuencial asíncrono, los cambios de estado ocurren al ritmo natural


marcado por los retardos asociados a las compuertas lógicas utilizadas en su
implementación, es decir, estos circuitos no usan elementos especiales de memoria,
pues se sirven de los retardos propios (tiempos de propagación) de las compuertas
lógicas usados en ellos. Esta manera de operar puede ocasionar algunos problemas
de funcionamiento, ya que estos retardos naturales no están bajo el control del
diseñador y además no son idénticos en cada compuerta lógica.

• Los circuitos secuenciales síncronos, sólo permiten un cambio de estado en los


instantes marcados por una señal de sincronismo de tipo oscilatorio denominada reloj.
Con esto, se pueden evitar los problemas que tienen los circuitos asíncronos
originados por cambios de estado no uniformes en todo el circuito.

Un sistema secuencial posee un 2𝑛 estados de entrada para 𝑛 entradas (𝑋1 . . . 𝑋𝑛 ); poseen


además 2𝑝 estados de salida para 𝑝 salidas (𝑍1 . . . 𝑍𝑝 ) y un número finito de estados internos
(𝑌1 . . . 𝑌𝑚 ) de ahí que sean conocidos como autómatas finitos.

3.2. Máquinas de estados finitos

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).

Microelectrónica – Lab03, Circuitos Lógicos Secuenciales


(© Ángelo Joseph Soto Vergel)

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».

3.3. Caracterización de las máquinas de estados

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.

3.3.1. Caracterización en dependencia de su geometría

• 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.

Figura 2. Máquina de estados lineal.

Microelectrónica – Lab03, Circuitos Lógicos Secuenciales


(© Ángelo Joseph Soto Vergel)

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.

Figura 3. Máquina de estados multicolumna.

• Multicolumna bidireccional: este tipo de máquinas de estado se diferencian de las


anteriores porque estas retornan al estado inicial por el mismo brazo. Son utilizadas
en secuencias con un punto común, por ejemplo, para el control de un robot en una
carpintería.

Figura 4. Máquina de estados multicolumna bidireccional.

Microelectrónica – Lab03, Circuitos Lógicos Secuenciales


(© Ángelo Joseph Soto Vergel)

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.

Figura 5. Máquina de estados concéntrica.


• Caótica: las máquinas de estado caóticas no tienen una forma geométrica definida.

3.3.2. Caracterización en dependencia de su codificación de estados

• Codificación de estados hecha automáticamente por las herramientas CAD (Computer


– Aided Design, Diseño Asistido por Computadora):

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.

• Codificación de estados realizada directamente por el diseñador:

o Aleatorio (Random): codificación de estados sin orden aparente.


o Two Hot: codificación de estados donde hay dos unos por código. También
utiliza tantos Flip – Flops como estados existan.
o Igual a las salidas: codificación de estados donde el código del estado es igual
a la salida de la máquina de estados.

Microelectrónica – Lab03, Circuitos Lógicos Secuenciales


(© Ángelo Joseph Soto Vergel)

Página 5 de 19
3.3.3. Caracterización en dependencia de la relación entre las salidas y los
estados internos

Esta en la única clasificación o caracterización que se encuentra en la literatura formal,


dentro de la cual se pueden distinguir:

• El autómata de Mealy: donde las salidas se obtienen en función de las entradas y los
estados internos.

• El autómata de Moore: en el que las salidas coinciden o dependen solo de los


estados internos.

En las figuras 6, 7 y 8 se pueden apreciar las diferentes representaciones gráficas de las


máquinas de estados Mealy y Moore con sus diferencias características.

Figura 6. Máquinas de estados Mealy y Moore.


Principales características y diferencias:

✓ La máquina de Mealy es más económica en componentes físicos que la máquina de


Moore.
✓ En un diseño tipo Moore es más fácil seguir la operación del sistema en pasos a
través de sus estados y, por tanto, más fácil la detección de errores.
✓ En un sistema tipo Mealy las salidas pueden cambiar concambios indeseados de las
entradas.
✓ En un diseño con modelo Moore la salida es síncrona con el reloj, en Mealy no lo es.

Figura 7. Diagrama general de las Máquinas de estados Mealy y Moore.

Microelectrónica – Lab03, Circuitos Lógicos Secuenciales


(© Ángelo Joseph Soto Vergel)

Página 6 de 19
Figura 8. Diagrama de flujo que representa el funcionamiento de las Máquinas de estados Mealy y Moore.

3.4. Formas de implementación de las máquinas de estados

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.

3.4.1. Pasos para la implementación de una máquina de estados en general

A partir de la caracterización, se plantea la siguiente metodología de diseño de máquinas de


estados con la cual se podría lograr reducción de hardware, todo esto se realizó sobre los
parámetros de la metodología Top – Down:

Microelectrónica – Lab03, Circuitos Lógicos Secuenciales


(© Ángelo Joseph Soto Vergel)

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.

El diseñador tomando en cuenta las características de la máquina de estados y el reporte de


la herramienta CAD usada debe tener en cuenta las siguientes recomendaciones:

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.

3.5. Máquinas de estado con VHDL

En la figura 9 se describe la estructura básica de una máquina de estados para ser


implementada correctamente en VHDL.

Figura 9. Estructura básica de una Máquina de Estados con las señales requeridas para su descripción en
VHDL.

• La sección combinacional (Combinational logic), tiene dos entradas: pr_state (estado


presente) y la señal de entrada externa (input). Además, posee dos salidas:
nx_state (estado siguiente) y salida externa.

Microelectrónica – Lab03, Circuitos Lógicos Secuenciales


(© Ángelo Joseph Soto Vergel)

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.

3.5.1. Diseño con salida asíncrona

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. Definición de la entidad y la arquitectura de una máquina de estados en VHDL.

Figura 10. Plantilla típica de diseño del bloque secuencial de una máquina de estados en VHDL.

Microelectrónica – Lab03, Circuitos Lógicos Secuenciales


(© Ángelo Joseph Soto Vergel)

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

En la figura 12 se muestra el funcionamiento básico para una máquina de estados con


diseño síncrono; usa una señal adicional para contener el valor de la salida (en la sección
superior), pero solo pasa este valor a la salida cuando un evento de reloj ocurre (sección
inferior).

Figura 12. El estilo de diseño síncrono: (a) Máquina de Moore, (b) Máquina de Mealy

Microelectrónica – Lab03, Circuitos Lógicos Secuenciales


(© Ángelo Joseph Soto Vergel)

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.

Microelectrónica – Lab03, Circuitos Lógicos Secuenciales


(© Ángelo Joseph Soto Vergel)

Página 11 de 19
5. DESARROLLO DE LA PRÁCTICA

CIRCUITOS LÓGICOS SECUENCIALES


Ejemplo 1: Contador ascendente/descendente con inicialización
Antecedentes: Un contador es un circuito secuencial construido a partir de biestables y
compuertas lógicas capaz de realizar el cálculo de los pulsos que recibe en la entrada
destinada a tal efecto, almacenar datos o actuar como divisor de frecuencia.
Desarrollo: Basándose en el principio de funcionamiento de un contador binario antes
mencionado, implementar un programa el cual realice un conteo ascendente para un vector
de 4 bits, además de un conteo descendiente para el mismo, dependiendo la posición que
conserve un selector. Y respetando una señal de reset con la cual se reinicia la secuencia del
programa.
Descripción en VHDL

Nota: Una vez verificado el código, realizar el flujo de diseño para lógica programable.

Microelectrónica – Lab03, Circuitos Lógicos Secuenciales


(© Ángelo Joseph Soto Vergel)

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.

Microelectrónica – Lab03, Circuitos Lógicos Secuenciales


(© Ángelo Joseph Soto Vergel)

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.

Desarrollo: Implementar una máquina de estados utilizando VHDL.


Descripción en VHDL

Nota: Una vez verificado el código, realizar el flujo de diseño para lógica programable.

Microelectrónica – Lab03, Circuitos Lógicos Secuenciales


(© Ángelo Joseph Soto Vergel)

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.

Microelectrónica – Lab03, Circuitos Lógicos Secuenciales


(© Ángelo Joseph Soto Vergel)

Página 15 de 19
Simulación Temporizada

Ejemplo 5: Detector de secuencia


Antecedentes: Un detector de secuencia es
un circuito secuencial que recibe una sucesión
infinita de bits (sincronizado por reloj) en la
cual debe encontrar una secuencia concreta
(tantas veces como aparezca). Se puede
detectar una secuencia “sin” y “con”
solapamiento. Se dice que es “con”
solapamiento cuando hay al menos un elemento común entre secuencias reconocidas.

Desarrollo: Definir en VHDL un detector de


secuencia que tiene como entrada una cadena
serial de bits y su salida será 1 cuando la secuencia
“111” ocurra. En caso de solapamiento, esto es, una
secuencia “0111110” suceda, la salida debe
mantenerse activa por tres ciclos consecutivos de
reloj.

Microelectrónica – Lab03, Circuitos Lógicos Secuenciales


(© Ángelo Joseph Soto Vergel)

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.

Microelectrónica – Lab03, Circuitos Lógicos Secuenciales


(© Ángelo Joseph Soto Vergel)

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.

d. Se necesita un circuito detector de secuencias que active su salida 𝑍1 cuando se reciba la


secuencia 10101, y su salida 𝑍1 cuando se reciba la secuencia 10110. Se considera que
las secuencias pueden venir superpuestas. Hacer el diseño mediante máquinas de estado.

Nota: Presentar un informe con los resultados de la práctica.

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

Microelectrónica – Lab03, Circuitos Lógicos Secuenciales


(© Ángelo Joseph Soto Vergel)

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

Microelectrónica – Lab03, Circuitos Lógicos Secuenciales


(© Ángelo Joseph Soto Vergel)

Página 19 de 19