Está en la página 1de 25
MATERIA Diseño Digital con VHDL SERIE 5IE6 PRACTICA No.4 NOMBRE DE LA PRACTICA Máquina de

MATERIA

Diseño Digital con VHDL

MATERIA Diseño Digital con VHDL SERIE 5IE6 PRACTICA No.4 NOMBRE DE LA PRACTICA Máquina de Estados

SERIE

5IE6

PRACTICA No.4

NOMBRE DE LA PRACTICA Máquina de Estados en VHDL

NOMBRE DEL ALUMNO

Martínez Rivera Hermes Julio Adrián Alcaraz Valdés

FECHA DE ELABORACION

22/ABRIL/13

NOMBRE DEL MAESTRO M.CJazmin Maldonado Robles.

1

Instituto Tecnológico de Tijuana

Departamento de Ingeniería Eléctrica y Electrónica

I. INDICE GENERAL
I.
INDICE GENERAL

I. Indice general

 

2

II.

Indice de figuras

 

2

III.Indice de tablas

 

2

IV.

Introducción

3

V.

Objetivos

3

VI.

Marco Teórico

4

6.1

Diseño lógico secuencial

 

4

6.2

Flip-flops

4

6.3

Diseño de

sistemas secuenciales síncronos

7

VII.Material y Equipo

 

11

VIII. Procedimiento y metodología

 

12

8.1

Maquina de estados Mealy

12

8.2

Maquina de estados tipo Moore

16

IX.

Discusión de resultados experimentales

20

X.

Conclusiones

21

XI.

Bibliografía

21

XII.

Anexos

22

 

II. INDICE DE FIGURAS

 

Figura 6. 1 Estructura de un sistema secuencial

4

Figura

6. 2

Flip-flops y

tablas de verdad características

5

Figura 6.3

a)

Diagrama y tabla de verdad del flip-flop D, b) Flujo de información en el dispositivo.

 

5

 

Figura 6. 4 Simulación

del flip-flop D

 

6

Figura 6. 5 Arquitectura secuencial de

 

Mealy

8

Figura

6. 6

Arquitectura

secuencial de

Moore

8

Figura

6.7

Detector

de

secuencia

9

Figura 6.8

Transición de

un estado a otro

 

9

Figura 6.9

a)

Diagrama de Estados,

b)

Tabla de

10

Figura 8.1 Problema inciso a-- Diagrama de estados Figura 8.2 Problema inciso b---- Diagrama de estados Figura 9.1 Asignación de pines del problema 8.1a Figura 9.2 Asignación de pines del problema 8.2b

12

16

20

20

III. INDICE DE TABLAS

 

Tabla I. Tabla de estados del problema a Tabla II. Tabla de estados del problema b)

 

13

17

 

2

Instituto Tecnológico de Tijuana

Departamento de Ingeniería Eléctrica y Electrónica

IV. INTRODUCCIÓN En esta práctica se utilizará VHDL para sintetizar máquinas de estados de Mealy

IV.

INTRODUCCIÓN

IV. INTRODUCCIÓN En esta práctica se utilizará VHDL para sintetizar máquinas de estados de Mealy y

En esta práctica se utilizará VHDL para sintetizar máquinas de estados de Mealy y Moore, para ello presentamos en la seccion 8.1 y 8.2 dos ejemplos implementados en VHDL, en donde teniendo el diagrama y la tabla de estados , lo codificamos al lenguaje de descripción de hardware.

Además también se presenta en la sección 6 la teoría básica para la comprensión de las maquinas de estado, las cuales son básicamente sistemas secuenciales con un numero finito de estados, las cuales tienen aplicaciones, como el sistema de un semáforo, elevador, el televisor, contadores, etc.

V. OBJETIVOS

Diseñar máquinas de estados Mealy y Moore en código VHDL.

3

Instituto Tecnológico de Tijuana

Departamento de Ingeniería Eléctrica y Electrónica

VI. MARCO TEÓRICO

VI.

MARCO TEÓRICO

VI. MARCO TEÓRICO

6.1 Diseño lógico secuencial

Un sistema

secuencial está formado por un circuito combinacional y un elemento de

memoria encargado de almacenar de forma temporal la historia del sistema.

En esencia, la salida de un sistema secuencial no sólo depende del valor presente de las

entradas,

sino también de la historia del sistema, según se observa en la figura 6.1

la historia del sistema, según se observa en la figura 6.1 Figura 6. 1 Estructura de

Figura 6. 1

Estructura de

un

sistema secuencial

 

Básicamente

 

hay

dos

tipos

de

sistemas

secuenciales :

 

síncronos

y

asin- cronos;

 

el

comportamiento

de

los

primeros

se

encuentra

sincronizado

mediante

el

pulso

 

de

reloj

del

sistema,

mientras

 

que

el

funcionamiento

de

los sistemas

asincronos

depende del orden y

momento en

el

cual se

aplican sus señales

de

entrada,

por

lo

que

no

requieren

un

pulso

de

reloj para

sincronizar

sus

acciones .

 

6.2

Flip-flops

 
 

El

elemento

de

memoria

utilizado

indistintamente

en

el

diseño

de

los

sistemas

síncronos

o

asincronos

se

conoce

como flip-flop

o

celda

binaria.

 
 

La

característica

principal

de

un

flip-flop

es

mantener

o almacenar

un bit de

Los flip-flops

más conocidos son los tipos SR , JK, T y D. En la figura 6.2 se presenta cada uno de

estos

manera indefinida hasta que a través de un pulso o una señal cambie de estado.

elementos y

la

tabla de verdad que

describe su comportamiento.

4

Instituto Tecnológico de Tijuana

Departamento de Ingeniería Eléctrica y Electrónica

flip-flop Figura 6. 2 Flip-flops y tablas de verdad características . Es importante recordar el

flip-flop

Figura

6. 2

Flip-flops y

tablas de verdad características .

Es importante recordar el significado de

la notación Q y Q( +i);

Q = estado presente

o

actual

Q +1 =

estado futuro o

siguiente t

Por

ejemplo,

consideremos

la

tabla de

tipo D,

mostrado en la figura 6.2c)

y que

verdad que

describe

el

funcionamiento del

se muestra de nuevo en la figura 6.3a) .

funcionamiento del se muestra de nuevo en la figura 6.3a) . de 1: Figura 6.3 a)

de

1:

Figura 6.3

a)

Diagrama y tabla de verdad del flip-flop D, b) Flujo de información en el dispositivo.

Cuando el valor de la entrada D es igual a

1, figura 6.3b),

la salida Q t + i adopta el valor

Q t+i

=1

siempre y cuando se genere

un pulso de reloj. Es importante

resaltar que

el

5

Instituto Tecnológico de Tijuana

Departamento de Ingeniería Eléctrica y Electrónica

valor actual en la entrada D es transferido a la salida Q t + ¡
valor actual en la entrada D es transferido a la salida Q t + ¡

valor actual en la entrada D es transferido a la salida Q t + ¡ sin importar cuál sea el valor

previo que haya tenido la salida Q

en el estado presente.

En

el

diseño

secuencial con

VHDL

las

declaraciones If-then*else

son las más

utilizadas;

por ejemplo,

el programa del listado 6.1

usa estas declaraciones.

La ejecución del proceso es sensible a los cambios en clk

(pulso de reloj); esto es, cuando

clk cambia de valor de una transición de 0

a

1 (clk 1),

el valor de

D se

asigna a Q y se

conserva hasta que se genera un nuevo pulso. A

la

inversa,

si

clk

no

presenta

dicha

transición, el valor

en la simulación del circuito, fig. 6.4.

de

Q

se

mantiene igual.

Esto

puede

observarse

con

claridad

de Q se mantiene igual. Esto puede observarse con claridad Listado 6.1 Descripción de un flip-flop

Listado 6.1

Descripción de un flip-flop disparado por flanco

6.1 Descripción de un flip-flop disparado por flanco Figura 6. 4 Simulación del flip-flop D .

Figura 6. 4 Simulación

del flip-flop D .

6

Instituto Tecnológico de Tijuana

Departamento de Ingeniería Eléctrica y Electrónica

Notemos que la salida Q toma el valor de la entrada D sólo cuando la

Notemos

que

la

salida

Q

toma

el

valor

de

la

entrada D sólo cuando la
entrada
D
sólo
cuando la

transición del pulso de reloj es de 0 a 1 y se mantiene hasta que se ejecuta de nuevo el

cambio de valor

de

la

entrada clk.

Atributo event

En

el

lenguaje VHD L los

atributos sirven

para definir

características que se

pueden asociar con cualquier tipo de datos, objeto o entidades . El atributo event1 (evento) se utiliza para describir un hech o u ocurrencia de una señal en particular.

 

En

el código

del

listado

4-1

podemos

observar

que

la condición

if

clk'event es cierta sólo cuando ocurre

un cambio de valor;

es decir,

un suceso

(event)

de

la

señal

clk.

Como

se

puede

apreciar,

la

declaración (if-then) no

maneja

la

condición

else,

debido

a

que

el

compilador

mantiene

el valor de

Q

hasta

que

no

exista

un

cambio

de

valor

en

la

señal clk.

6.3

Diseño de

sistemas secuenciales síncronos

 

Como ya se mencionó,

la estructura de

los

sistemas secuenciales

síncronos basa

su funcionamiento en

los

elementos

de

memoria

conocidos

como flip-flops .

La

palabra

sincronía

se

refiere

a

que

cada

uno de

estos

elementos

de

memoria

que

interactúan

en

un

sistema

se

encuentran

conectados a

la

misma señal

de

reloj,

de

forma tal

que

sólo

se

producirá

un

cambio

de

estado

en

el

sistema

cuando

ocurra

un

flanco

de

disparo

o

un

pulso

en

la señal

de

reloj .

 

Existe

una división en

el

diseño de

los

sistemas

secuenciales

que se

refiere

al

momento en

que

se

producirá la salida del sistema .

 

• En la estructura de Mealy (Fig. 6.5) las señales de salida dependen tanto del estado en que se encuentra el sistema, como de la entrada que se aplica en determinado momento .

depende

En

la

estructura

del estado

en

de

que

Moore

(Fig.

se

encuentra .

6.6)

la

señal

de

salida

sólo

7

Instituto Tecnológico de Tijuana

Departamento de Ingeniería Eléctrica y Electrónica

Figura 6. 5 Arquitectura secuencial de Mealy. Figura 6. 6 Arquitectura secuencial de Moore .

Figura 6. 5 Arquitectura secuencial de

Mealy.

Figura 6. 5 Arquitectura secuencial de Mealy. Figura 6. 6 Arquitectura secuencial de Moore . Un

Figura

6. 6

Arquitectura

secuencial de

Moore .

Un sistema secuencial se desarrolla a través de una serie de pasos generalizados que comprenden el enunciado del problema, diagrama de estados, tabla de estados, asignación de estados, ecuaciones de entrada a los elementos de memoria y diagrama electrónico del circuito .

 

Como ejemplo

consideremos el diseño

del siguiente sistema

secuencial (Fig,

6.7) ,

en

el

cual

se

emite

un

pulso

de

salida Z( Z = l ) cuando

en

la línea

de

entrada

(X

)

se reciben cuatro unos en forma consecutiva en caso contrario, la salida Z es igual a cero .

8

Instituto Tecnológico de Tijuana

Departamento de Ingeniería Eléctrica y Electrónica

Diagramas de estado Figura 6.7 Detector de secuencia . El uso de diagramas de estados

Diagramas

de

estado

Figura

6.7

Detector

de

secuencia .

El

uso

de

diagramas

de

estados

en

la

lógica

programable

facilita

de

manera

significativa

la

descripción

de

un

diseño

secuencial,

ya

que

no

es

necesario seguir

la

metodología

tradicional

de

diseño .

En

VHD L

se

puede

utilizar

un modelo

funcional

en

que sólo

se

indica

la

transición

que

siguen los

estados y las

condiciones

que controlarán

el

proceso .

 
 

De

acuerdo

con nuestro

ejemplo (Fig.

6.9),

vemos que el sistema

secuencial

se

puede

representar

por

medio

del

diagrama

de

estados

de

la

figura

6.9a) :

arquitectura Mealy.

En

este

diagrama

se

advierte

que

el

sistema cuenta

con

una

señal

de

entrada

denominada

X y

una

señal

de

salida

Z . En la figura 6.9b)

se muestra

la tabla de estados que describe el comportamiento

del

circuito .

 

Cuando se está en el estado dO y la señal

de

entrada X es

igual

a

uno,

se avanza

al

estado

di

y

la

salida

Z

durante

esta

transición

es

igual

a

cero;

en caso

contrario,

cuando

la

entrada

X

es

igual

a

cero,

el

circuito

se

mantiene en el estado

dO y

la salida

también es cero

(Fig.

6.8) .

dO y la salida también es cero (Fig. 6.8) . Figura 6.8 Transición de un estado

Figura 6.8

Transición de

un estado a otro .

9

Instituto Tecnológico de Tijuana

Departamento de Ingeniería Eléctrica y Electrónica

Con un poco de lógica se puede intuir el comportamiento del diagrama de estados .
Con
un
poco
de
lógica
se
puede
intuir
el
comportamiento
del
diagrama de
estados . Observe
Z = 1.
como sólo la secuencia de cuatro unos consecutivos provoca que
la
salida
de cuatro unos consecutivos provoca que la salida Figura 6.9 a) Diagrama de Estados, b) Tabla

Figura 6.9

a)

Diagrama de Estados,

b)

Tabla de estados.

 

Este

diagrama

se

puede

codificar

con facilidad

mediante

una descripción de

alto

nivel en

VHDL .

Esta

descripción

supone

el

uso

de

declaraciones case-when

las

cuales determinan,

en

un

caso

particular,

el

valor

que

tomará el

siguiente

estado .

Por

otr o

lado, la transición

entre

estados

se

realiza

por medio

de

declaraciones

if-

then'else ,

de tal forma

que

éstas

se

encargan

de establecer la lógica que

seguirá

el programa

para realizar la asignación del estado.

 

10

Instituto Tecnológico de Tijuana

Departamento de Ingeniería Eléctrica y Electrónica

VII. MATERIAL Y EQUIPO 1. Tarjeta Spartan XC3S700A 2. Software Xilinx v13.4 3. Libro: El

VII. MATERIAL Y EQUIPO

VII. MATERIAL Y EQUIPO 1. Tarjeta Spartan XC3S700A 2. Software Xilinx v13.4 3. Libro: El arte

1. Tarjeta Spartan XC3S700A

2. Software Xilinx v13.4

3. Libro: El arte de programar en VHDL

11

Instituto Tecnológico de Tijuana

Departamento de Ingeniería Eléctrica y Electrónica

VIII. PROCEDIMIENTO Y METODOLOGÍA

VIII.

VIII. PROCEDIMIENTO Y METODOLOGÍA

PROCEDIMIENTO Y METODOLOGÍA

En la presente sección, nos enfocaremos en los pasos que se llevan a cabo para el diseño en VHDL de una maquina autómata finita: Moore y Mealy.

Esta sección se subdivide en dos: 8.1 y 8.2, en la primera explicaremos la implementación de una maquina de Mealy en VHDL empleando un ejemplo, y en la segunda parte se presenta el código para una maquina de tipo moore.

8.1 Maquina de estados Mealy

Para la implementación en vhdl, se utilizará el siguiente ejemplo:

a) Un circuito secuencial tiene una entrada X y una salida Z, dibuje un diagrama de estados que cumpla con lo siguiente, la salida es Z=1 sí y sólo si el número total de unos es divisible por 3.

Como primer paso para su resolución, dibujaremos el diagrama y la tabla de estados .

resolución, dibujaremos el diagrama y la tabla de estados . Figura 8.1 Problema inciso a-- Diagrama

Figura 8.1 Problema inciso a-- Diagrama de estados

12

Instituto Tecnológico de Tijuana

Departamento de Ingeniería Eléctrica y Electrónica

Tabla I. Tabla de estados del problema a Edo Presente Edo Siguiente Salida X=0 X=1

Tabla I. Tabla de estados del problema a

Tabla I. Tabla de estados del problema a Edo Presente Edo Siguiente Salida X=0 X=1 X=0

Edo Presente

Edo Siguiente

Salida

X=0

X=1

X=0

X=1

S0

S0

S1

0

0

S1

S1

S2

0

0

S2

S2

S0

0

1

El segundo paso corresponde en su codificación en el lenguaje de descripción de hardware(VHDL), para ello empezamos declarando los puerto de entrada y salida dentro del cuerpo de la entidad (líneas 4 a la 9), en donde se observa que se define como entrada CLK,X e INI, las cuales son el reloj de pulsos, la entrada de excitación y el habilitador respectivamente.

Para poder representar los estados (S0,S1 Y S2) en VHDL, hay que definirlos dentro de un tipo de datos enumerados mediante la declaración type(línea 12). Así también se declara en la línea 15 las señales del estado actual y estado siguiente. Las líneas 13 y 16 se enfocan en las señales auxiliares que se utilizaran para la transición de los estados. Tal vez cabe aclarar que se emplea la señal CLK_1hz para definir el ciclo de un pulso.

emplea la señal CLK_1hz para definir el ciclo de un pulso. Antes de declarar la transición

Antes de declarar la transición entre estados hay que definir un reset, el divisor de frecuencia y la inicialización de la memoria de los biestables.

Empezamos por definir en la línea 19, el reset, para que posteriormente se defina el divisor de frecuencia, el cual en nuestro caso será de un 1hz, esto para que se pueda percibir el cambio de un estado a otro, para ello se usa un “process” el cual está definido dentro de las líneas 21 a la 31.

13

Instituto Tecnológico de Tijuana

Departamento de Ingeniería Eléctrica y Electrónica

Para el proceso “process” de inicialización de la memoria de los biestables se declara dentro

Para el proceso “process” de inicialización de la memoria de los biestables se declara dentro de las líneas 37 a la 45, el cual tiene la condición: si el reset es uno, entonces que le asigne el estado S0 al estado actual, si en cambio detecta un flanco ascendente en el pulso de reloj que el estado siguiente pase a ser el estado actual.

reloj que el estado siguiente pase a ser el estado actual. La transición de un estado

La transición de un estado a otro emplearemos el processque esta definido dentro de las líneas 43-68, el cual usa la instrucción casepara cuando el estado actual se encuentre en S0,S1 o S2, y una vez que se determina el estado se evalua el valor de la entrada,ya sea 0 o 1 , y una vez que el “process” verifique estas condiciones, le asigna al estado siguiente el valor determinado por las entradas.

14

Instituto Tecnológico de Tijuana

Departamento de Ingeniería Eléctrica y Electrónica

La salida estará determina por la línea 69, en donde se le asigna un 1

La salida estará determina por la línea 69, en donde se le asigna un 1 cuando el estado actual sea igual a S2, en el caso contrario que el estado actual no se encuentre en S2 el valor de la salida será 0.

actual no se encuentre en S2 el valor de la salida será 0. 15 Instituto Tecnológico

15

Instituto Tecnológico de Tijuana

Departamento de Ingeniería Eléctrica y Electrónica

8.2 Maquina de estados tipo Moore Para ilustrar la implementación de una maquina moore en

8.2 Maquina de estados tipo Moore

8.2 Maquina de estados tipo Moore Para ilustrar la implementación de una maquina moore en vhdl,

Para ilustrar la implementación de una maquina moore en vhdl, nos basamos del siguiente ejemplo:

b) Diseñe un circuito secuencial que proporcione una salida Z=1 durante exactamente cuatro ciclos de reloj cada vez que una persona pulse un botón (X=1). Tenga en cuenta que el reloj de un circuito digital es usualmente mucho más rápido que el dedo de una persona. La persona probablemente no haya podido todavía soltar el botón en el instante en el que ya han transcurrido los cuatro ciclos de reloj, por lo que X puede continuar valiendo 1 después de haberse generado las cuatro salidas Z=1. Por tanto, después de que Z sea 1 durante cuatro ciclos de reloj, Z debe pasar a valer 0, hasta que Z vuelva a 0 y pase a 1 de nuevo. Diseñe un diagrama de de Mealy para este circuito.

La resolución de la máquina de estados se presenta en la figura 8.2

de la máquina de estados se presenta en la figura 8.2 Figura 8.2 Problema inciso b----

Figura 8.2 Problema inciso b---- Diagrama de estados

16

Instituto Tecnológico de Tijuana

Departamento de Ingeniería Eléctrica y Electrónica

Tabla II. Tabla de estados del problema b) Edo presente Edo Siguiente Salida X=0 X=1

Tabla II. Tabla de estados del problema b)

Tabla II. Tabla de estados del problema b) Edo presente Edo Siguiente Salida X=0 X=1 S0

Edo presente

Edo Siguiente

Salida

X=0

X=1

S0

S0

S1

0

S1

S2

S2

0

S2

S3

S3

0

S3

S4

S4

1

S4

S0

S0

0

Una vez que tenemos la resolución del problema en la fig.7.2, se procede a implementarlo en código VHDL, y para ello empezamos declarando los puertos de entrada y salida (líneas 4-9). Las entradas son: el pulso de reloj CLK , la entrada de excitación X, el reset ~INI, y el puerto de salida Z. Todas ellas de tipo std_logic.

y el puerto de salida Z. Todas ellas de tipo std_logic. Ahora se procede a definir

Ahora se procede a definir la arquitectura de la entidad definida en las líneas 11-101, en la cual declaramos el comportamiento de nuestra maquina secuencial, y para ello se requiere declarar en primer lugar el estado actual y siguiente como señales de tipo std_logic_vector de tres componentes, y las señales: clk_1hz,cuenta e iniciar se declaran para su uso en el divisor de frecuenciay el estado de memoria.

su uso en el divisor de frecuenciay el estado de memoria. 17 Instituto Tecnológico de Tijuana

17

Instituto Tecnológico de Tijuana

Departamento de Ingeniería Eléctrica y Electrónica

Quizás la diferencia más notable en el listado anterior con el código de una maquina
Quizás la diferencia más notable en el listado anterior con el código de una maquina

Quizás la diferencia más notable en el listado anterior con el código de una maquina mealy es la manera en que se declaran los estados, en donde ya no se declaran como tipo de datos, sino como constantes y se les asigna su valor como un vector de tres componentes de tipo std_logic_vector.

Para el proceso del divisor de frecuencia es equivalente al visto en la sección 7.1, en donde se usa el divisor para una frecuencia de 1 hertz, aunque si se desea que el ciclo del pulso sea otra, el diseñador la puede modificar en las líneas 30 a la línea 40.

la puede modificar en las líneas 30 a la línea 40. En el proceso “Memoria” (líneas

En el proceso “Memoria” (líneas 42-50) se establecen las condiciones iníciales de la máquina de estados para el problema del inciso b, en donde se puede observar en listado inferior, que cuando la senal “iniciar” adquiere el valor de 1 el estado SO es asignado como el estado actual, o sino cuando detecte un flanco ascendente que el estado siguiente venga a valer el estado actual.

que el estado siguiente venga a valer el estado actual. Para determinar el estado siguiente de

Para determinar el estado siguiente de la maquina en código, se tiene que declarar primeramente un process (líneas 52 a la 97), la cual se construye en base a la tabla de estado de la figura 7.2 b. para determinar el edo siguiente se usa la declaración case-when, y para las entradas

18

Instituto Tecnológico de Tijuana

Departamento de Ingeniería Eléctrica y Electrónica

en S0, S1. se emplea if-else ,así por ejemplo cuando el estado actual se encuentre
en S0, S1.
en S0,
S1.

se emplea if-else ,así por ejemplo cuando el estado actual se encuentre

y en la entrada

tenga un valor x=1 que el estado siguiente se le asigne el valor de S5 sino

x=1 que el estado siguiente se le asigne el valor de S5 sino Para el código

Para el código de la salida se utiliza la siguiente asignación:

el código de la salida se utiliza la siguiente asignación: 19 Instituto Tecnológico de Tijuana Departamento
IX.
IX.

DISCUSIÓN DE RESULTADOS EXPERIMENTALES

IX. DISCUSIÓN DE RESULTADOS EXPERIMENTALES

Para el ejercicio visto en la sección 8.1, los pines que se utilizaron fueron los que se ilustran en la figura 9.1.

se utilizaron fueron los que se ilustran en la figura 9.1. Figura 9.1 Asignación de pines

Figura 9.1 Asignación de pines del problema 8.1a

E12 Para el pulso de reloj, U10 para el INI, U8 para la variable de entrada y R20 el indicador de la salida, los resultados obtenidos fueron satisfactorios, debido a que cuando se deja en uno el sw2 una vez que pasen 3 segundos la salida se hace uno, con esto se confirma el diseño exitoso de la maquina secuencial mealy.

Para el ejercicio de la sección 7.2 se asignaron los pines como se muestra en la figura 9.2, siendo E12 al pulso de reloj , T15 la variable de entrada x, U10 como INI y por ultimo R20 como la salida Z.

entrada x, U10 como INI y por ultimo R20 como la salida Z. 20 Instituto Tecnológico

20

Instituto Tecnológico de Tijuana

Departamento de Ingeniería Eléctrica y Electrónica

X.
X.
X. Figura 9.2 Asignación de pines del problema 8.2b CONCLUSIONES

Figura 9.2 Asignación de pines del problema 8.2b

CONCLUSIONES

Hermes Martinez Rivera

autómata; ya sea moore o mealy, se debe de

tener en cuenta los siguientes pasos: diseñar el diagrama de estados, la tabla de transiciones, la codificación de la tabla , los mapas de karnaugh, las ecuaciones del estado siguiente y el logigrama.

Para el diseño de una maquina secuencial

La implementación del código en vhdl, se baso del ejemplo hecho en clase, para el cual es necesario tener presente que se requieren 3 procesos para poder llevar a cabo un correcto funcionamiento; el primer proceso es para el divisor de frecuencia, el segundo es para la memorización o inicialización de los estados, y el tercer proceso se emplea para determinar el valor del estado siguiente.

La diferencia en la implementación de las dos maquinas en VHDL fue el tipo de datos que se empleo para asignar los estados, en el cual para la máquina de mealy se utilizo la instrucción type, y en la maquina de moore la declaración de los estados como constant de tipo std_logic_vector.

XI.

Julio Alcaraz

BIBLIOGRAFÍA

[1] VHDL El arte de programar sistemas digitales, David G. Maxinez ,Jessica Alcalá Jar a, 1ra edición, editorial continental, imprimido en Mexico 2002.

[2] Manual Spartan 3ª.

21

Instituto Tecnológico de Tijuana

Departamento de Ingeniería Eléctrica y Electrónica

XII. ANEXOS

XII.

ANEXOS

XII. ANEXOS

Código del problema de la sección 7.1

library IEEE; use IEEE.STD_LOGIC_1164.ALL;

entity Maq_Mealy_a is

Port ( CLK : in STD_LOGIC;

X : in STD_LOGIC;

INI : in STD_LOGIC;

Z : out STD_LOGIC);

end Maq_Mealy_a; architecture Behavioral of Maq_Mealy_a is

type Estado is (S0,S1,S2); signal Edo_A, Edo_S: Estado; signal Iniciar: STD_LOGIC; signal CLK_1hz: STD_LOGIC:= '0'; signal cuenta: integer:= 0; begin

Iniciar<= not INI;

divisor: process(CLK,Iniciar) begin

if(CLK='1' and CLK'EVENT) then if(cuenta= 25000000) then cuenta<= 0; CLK_1hz <= not CLK_1hz;

else

end if;

end if; end process divisor;

cuenta<= cuenta +1;

Memoria: process(CLK_1hz,Iniciar) begin

if(Iniciar='1') then Edo_A <= S0;

elsif(rising_edge(CLK_1hz))then

Edo_A <= Edo_S;

end if;

22

Instituto Tecnológico de Tijuana

Departamento de Ingeniería Eléctrica y Electrónica

end process Memoria; Edo_siguiente: process(X, Edo_A) begin Case Edo_A is when S0 => if(X='1') then

end process Memoria;

Edo_siguiente: process(X, Edo_A) begin

Case Edo_A is when S0 => if(X='1') then Edo_S <= S1;

else

Edo_S <= S0;

end if; when S1 => if(X='1') then Edo_S <= S2;

else

Edo_S <= S1;

end if; when S2 => if (X='1') then Edo_S <= S0;

else

 

Edo_S <= S2;

end if; when others =>

 

Edo_S <= S0;

end case;

end process Edo_siguiente;

Z <= '1' when Edo_A = S2 else '0';

end Behavioral;

Código del problema de la seccion 7.2

library IEEE; use IEEE.STD_LOGIC_1164.ALL;

entity Maq_Moore is Port ( CLK : in STD_LOGIC;

X : in STD_LOGIC;

INI : in STD_LOGIC;

Z : out STD_LOGIC);

X : in STD_LOGIC; INI : in STD_LOGIC; Z : out STD_LOGIC); 23 Instituto Tecnológico de

23

Instituto Tecnológico de Tijuana

Departamento de Ingeniería Eléctrica y Electrónica

end Maq_Moore; architecture Behavioral of Maq_Moore is --type Estado is (S0,S1,S2,S3); signal Edo_A, Edo_S:

end Maq_Moore;

architecture Behavioral of Maq_Moore is --type Estado is (S0,S1,S2,S3);

signal Edo_A, Edo_S: std_logic_vector(2 downto 0):="000"; signal Iniciar: STD_LOGIC; signal CLK_1hz: STD_LOGIC:= '0'; signal cuenta: integer:= 0;

constant S0: std_logic_vector(2 downto 0):= "001"; constant S1: std_logic_vector(2 downto 0):= "010"; constant S2: std_logic_vector(2 downto 0):= "011"; constant S3: std_logic_vector(2 downto 0):= "100"; constant S4: std_logic_vector(2 downto 0):= "101"; constant S5: std_logic_vector(2 downto 0):= "110";

begin

Iniciar<= not INI;

divisor: process(CLK,Iniciar) begin

if(CLK='1' and CLK'EVENT) then if(cuenta= 25000000) then cuenta<= 0; CLK_1hz <= not CLK_1hz;

end if;

end process;

else

cuenta<= cuenta +1;

end if;

Memoria: process(CLK_1hz,Iniciar) begin

if(Iniciar='1') then Edo_A <= S0;

elsif(rising_edge(CLK_1hz))then

end if;

end process;

Edo_A <= Edo_S;

Edo_siguiente: process(X, Edo_A) begin

Case Edo_A is when S0 => if(X='1') then Edo_S <= S5;

else

Edo_S <= S1;

end if;

then Edo_S <= S5; else Edo_S <= S1; end if; 24 Instituto Tecnológico de Tijuana Departamento

24

Instituto Tecnológico de Tijuana

Departamento de Ingeniería Eléctrica y Electrónica

when S1 => if(X='1') then Edo_S <= S4; else Edo_S <= S2; end if; when

when S1 => if(X='1') then Edo_S <= S4;

else

Edo_S <= S2;

end if; when S2 => if (X='1') then Edo_S <= S3;

else

Edo_S <= S1;

end if; when S3 => if(X= '1') then Edo_S <= S2;

else

Edo_S <= S4;

end if;

when S4 => if(X= '1') then Edo_S <= S1;

else

Edo_S <= S3;

end if;

when S5 => if(X= '1') then Edo_S <= S0;

else

 

Edo_S <= S4;

end if; when others =>

 

Edo_S <= S0;

end case;

end process;

Z <= '1' when Edo_A = S3 else '0';

end Behavioral;

when Edo_A = S3 else '0'; end Behavioral; 25 Instituto Tecnológico de Tijuana Departamento de

25

Instituto Tecnológico de Tijuana

Departamento de Ingeniería Eléctrica y Electrónica