Вы находитесь на странице: 1из 205

DISEO BSICO EN FPGA CON

VHDL
M.I BENJAMN O. HERNNDEZ GARCIA
C.R.O.D.E CELAYA

Material Elaborado por: M.C Adolfo Rafael Lpez Nez

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

CONTENIDO

PRESENTACIN
OBJETIVO DEL CURSO
1.- INTRODUCCIN
2.- TARJETA DE DESARROLLO NEXYS 2/BASYS 2
3.- ORGANIZACIN DE VHDL
4.- AMBIENTE DE TRABAJO XILINX ISE DESIGN
SUITE 12.1
5.- DISEO LGICO COMBINACIONAL EN VHDL
6.- DISEO LGICO SECUENCIAL EN VHDL
7.- VHDL ESTRUCTURAL
8.- SIMULACIN DE DISEOS
9.- MQUINAS DE ESTADOS EN VHDL

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

OBJETIVO

El participante comprender y aplicar los


principios bsicos del lenguaje VHDL
haciendo uso de una tarjeta de desarrollo
basado en un FPGA de manera adecuada.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

1.- INTRODUCCIN

OBJETIVO DE LA UNIDAD
El
participante
identificar
las
caractersticas
principales
de
los
dispositivos lgicos programables y del
lenguaje VHDL mediante la presentacin de
dichos temas de acuerdo al plan de sesin.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

1.- INTRODUCCIN

El desarrollo del transistor de difusin


planar, construido durante 1947 y 1948,
permiti en 1960 la fabricacin del primer
circuito integrado monoltico. Este integra
cientos de transistores, resistencias, diodos
y capacitores, todos fabricados sobre una
pastilla de silicio.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

1.- INTRODUCCIN

En la actualidad el nivel de integracin


alcanzado
con
el
desarrollo
de la
microelectrnica
ha
hecho
posible
desarrollar sistemas completos dentro de un
solo circuito integrado SOC (System On
Chip).

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

1.1 Dispositivos lgicos programables (PLD)

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

1.1.1 Estructura interna de un PLD

Los dispositivos PROM, PLA, PAL y GAL estn


formados por arreglos o matrices que
pueden ser fijos o programables, mientras
que los CPLD y FPGA se encuentran
estructurados mediante bloques lgicos
configurables y celdas lgicas de alta
densidad, respectivamente.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

1.1.1 Estructura interna de un PLD

La arquitectura bsica de un PLD est


formada por un arreglo de compuertas AND
y OR conectadas a las entradas y salidas del
dispositivo.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

1.1.1 Estructura interna de un PLD

a) Arreglo AND. Est


formado por varias
compuertas AND
interconectadas a
travs de alambres, los
cuales cuentan con un
fusible en cada punto
de interseccin

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

1.1.1 Estructura interna de un PLD

b) Arreglo OR. Est


formado por un
conjunto de
compuertas OR
conectadas a un
arreglo
programable, el
cual contiene un
fusible en cada
punto de
interseccin.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

1.1.1 Estructura interna de un PLD

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

1.1.1 Estructura interna de un PLD

La PROM no se utiliza como un dispositivo lgico, sino como


una memoria direccionable, debido a las limitaciones que
presenta con las compuertas AND fijas.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

1.1.1 Estructura interna de un PLD

En esencia, el PLA se desarroll para superar las limitaciones de


la memoria PROM. Este dispositivo se llama tambin FPLA
(arreglo lgico programable en campo), ya que es el usuario y
no el fabricante quien lo programa.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

1.1.1 Estructura interna de un PLD

El PAL se desarroll para superar algunas limitaciones del PLA,


como retardos provocados por la implementacin de fusibles
adicionales, que resultan de la utilizacin de dos arreglos
programables y de la complejidad del circuito.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

1.2 Arreglo Lgico Genrico (GAL)

El Arreglo Lgico Genrico (GAL) es


similar al PAL, ya que se forma con
arreglos AND programable y OR fijo, con
una salida lgica programable. Las dos
principales
diferencias
entre
los
dispositivos GAL y PAL radican en que el
primero es reprogramable y contiene
configuraciones de salida programables.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

1.2 Arreglo Lgico Genrico (GAL)

Los dispositivos GAL se pueden programar una y otra vez, ya


que usan la tecnologa E2CMOS (Ellectrically Erasable CMOS:
CMOS borrable elctricamente), en lugar de tecnologa
bipolar y fusibles.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

1.2.1 Programacin de un arreglo GAL

A diferencia de un PAL, el GAL est formado por celdas


programables, las cuales se pueden reprogramar las veces
que sea necesario.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

1.4 Dispositivos Lgicos


Programables Complejos (CPLD)

Un circuito CPLD consiste en un arreglo de mltiples PLD


agrupados como bloques en un chip. Se califican como de alto
nivel de integracin, ya que tienen una gran capacidad
equivalente a unos 50 PLD sencillos.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

1.4.1 Arreglos de Compuertas


Programables en Campo (FPGA)

Los dispositivos FPGA se basan en lo que se


conoce como arreglos de compuertas, los
cuales consisten en la parte de la
arquitectura que contiene tres elementos
configurables: bloques lgicos configurables
(CLB), bloques de entrada y de salida (IOB)
y canales de comunicacin.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

1.4.1 Arreglos de compuertas


programables en campo (FPGA)

A diferencia de los CPLD, la densidad de los


FPGA se establece en cantidades
equivalentes a cierto nmero de
compuertas.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

1.4.1 Arreglos de compuertas


programables en campo (FPGA)

Cada FPGA contiene una matriz de bloques


lgicos idnticos, por lo general de forma
cuadrada, conectados por medio de lneas
metlicas
que
corren
vertical
y
horizontalmente entre cada bloque.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

1.4.1 Arreglos de compuertas


programables en campo (FPGA)

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

1.4.1 Arreglos de compuertas


programables en campo (FPGA)

Los bloques lgicos (llamados tambin


celdas generadoras de funciones) estn
configurados para procesar cualquier
aplicacin lgica.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

1.4.1 Arreglos de compuertas


programables en campo (FPGA)

El diseo lgico se implementa mediante


bloques conocidos como generadores de
funciones o LUT (Look Up Table: tabla de
bsqueda), los cuales permiten almacenar
la lgica requerida, ya que cuentan con una
pequea memoria interna, por lo general de
16 bits.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

1.4.1 Arreglos de compuertas


programables en campo (FPGA)

Cuando se aplica alguna combinacin en las


entradas de la LUT, el circuito la traduce en
una direccin de memoria y enva fuera del
bloque el dato almacenado en esa
direccin.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

1.4.1 Arreglos de compuertas


programables en campo (FPGA)

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

1.5 Metodologa de diseo con


FPGA's

Se realiza una descripcin del hardware


utilizando algn lenguaje de descripcin de
hardware, como VHDL o Verilog Con esta
descripcin se pueden realizar simulaciones del
circuito, para comprobar que lo diseado trabaja
correctamente de lo contrario se volver a
modificar la descripcin (esquemas programa)
hasta que la simulacin sea satisfactoria.

VHDL NO ES UN LENGUAJE DE PROGRAMACIN!

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

1.5 Metodologa de diseo con


FPGA's

En el caso del hardware hay que construir el


circuito. Y aqu es donde vienen las FPGA's
para hacerlo. A partir de la especificacin
hardware y utilizando un compilador
especial, obtenemos un archivo binario,
llamado bitstream que contiene toda la
informacin necesaria para configurar la
FPGA.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

1.6 Configuracin y uso del


software y hardware FPGA

El software de diseo programacin y


simulacin
INTEGRATED
SOFTWARE
ENVIROMENT (ISE) 12.1

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

1.7 Breve historia del lenguaje


VHDL

VHDL es el Lenguaje de Descripcin de Hardware,


que se desarroll en la dcada de los 80s como
un proyecto de investigacin de circuito integrado
de gran velocidad el cual fue consolidado por el
Departamento Americano de Defensa.
Un equipo de ingenieros de tres compaas - IBM,
Texas Instruments e Intermetrics - fue contratado
por el Departamento de Defensa para completar
la especificacin y aplicacin de un nuevo idioma
basado en mtodo de descripcin de diseos
digitales ideado por ellos.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

1.7 Breve historia del lenguaje


VHDL

La primera versin pblicamente disponible


de VHDL, versin 7.2, se liber en 1985.En
1986, el Instituto de Ingenieros Elctricos y
Electrnicos (IEEE) se present con una
propuesta para estandarizar el idioma que
hizo en 1987.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

1.7 Breve historia del lenguaje


VHDL
Poco despus la norma IEEE 1076-1987 fue
adoptada, las compaas de simuladores
empezaron reforzando VHDL con los nuevos
tipos no estandarizados y permitirles a sus
clientes simular los circuitos electrnicos
complejos con precisin.
Las normas IEEE 1076-1987 e IEEE 1164
completan el estndar VHDL siendo el ms
usado hoy.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

2. TARJETA DE DESARROLLO NEXYS


2
Objetivo de la unidad

El participante identificar las


caractersticas generales de la tarjeta de
desarrollo Nexys 2 mediante la presentacin
de dicho tema de acuerdo al plan de sesin.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

2.1 Caractersticas generales

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

2.1 Caractersticas generales

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

2.1 Caractersticas generales

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

2.2 Verificacin de funcionamiento

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

3. Organizacin de VHDL

Objetivo de la unidad
El participante reconocer la organizacin bsica
de VHDL identificando las partes principales de
dicho lenguaje de acuerdo al plan de sesin.
Al Servicio del Sistema
Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

3.1 Unidades bsicas de diseo

La estructura general de un programa en


VHDL est formada por mdulos o unidades
de diseo, cada uno de ellos compuesto por
un conjunto de declaraciones e
instrucciones que definen, describen,
estructuran, analizan y evalan el
comportamiento de un sistema digital.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

3.1 Unidades bsicas de diseo


Existen cuatro tipos de unidades de diseo
en VHDL:

Declaracin de entidad (Entity declaration)


Arquitectura (Architecture)
Declaracin del paquete (Package
declaration)
Cuerpo del paquete (Package body)

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

3.2 Entidad

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

3.2.1 Puertos de entrada y salida

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

3.2.2 Modos

Un modo permite definir la direccin en la


cual el dato es transferido a travs de un
puerto. Puede tener uno de cuatro valores:
in (entrada), out (salida), inout
(entrada/salida) y buffer.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

3.2.2 Modos
Modo in. Se refiere a las seales de entrada a la
entidad. Este slo es unidireccional y nada ms
permite el flujo de datos hacia dentro de la entidad.
Modo out. Indica las seales de salida de la entidad.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

3.2.2 Modos
Modo inout. Permite declarar a un puerto de forma
bidireccional es decir, de entrada/salida; adems permite
la retroalimentacin de seales dentro o fuera de la entidad.
Modo buffer. Permite hacer retroalimentaciones internas dentro
de la entidad, pero a diferencia del modo inout, el puerto
declarado se comporta como una terminal de salida.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

3.2.3 Tipos de datos


Algunos de los tipos ms utilizados en VHDL
son:
Bit El cual tiene valores de 0 y 1 lgico.
Boolean (Booleano) que define valores de
verdadero o falso en una expresin
Bit_vector (Vectores de bits) que
representa un conjunto de bits para cada
variable de entrada o salida.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

3.2.3 Tipos de datos


Integer (Entero) que representa un nmero entero.
Std_logic Extensiones del tipo Bit, pueden tomar 9
valores diferentes:
U --No inicializado
X --Forzando valor desconocido
0 --Forzando un 0
1 --Forzando un 1
Z --Alta impedancia
W -- Desconocido dbil, terminacion de bus
L -- 0 Debil
H -- 1 Debil
-
-- Sin importancia (dont care)
Std_logic_vector Vectores del std_logic

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

3.2.4 Declaracin de entidades

La declaracin de una entidad consiste en la


descripcin de las entradas y salidas de un
circuito de diseo identificado como entity
(entidad); es decir, la declaracin seala las
terminales o pines de entrada y salida con
que cuenta la entidad de diseo.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

3.2.4 Declaracin de entidades

1 --Declaracin de la entidad de un circuito


sumador
2 entity sumador is
3 port (A, B, Cin: in bit;
4 SUMA, Cout: out bit);
5 end sumador;
Al Servicio del Sistema
Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

3.2.5 Identificadores

Los identificadores son simplemente los


nombres o etiquetas que se usan para referir
variables, constantes, seales, procesos, etc.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

3.2.6 Diseo de entidades mediante


vectores

En la prctica se utilizan conjuntos


(palabras) de varios bits; los cuales se
consideran un grupo y no como bits
individuales.

vector_A = [A3, A2, A1, AO]


vector_B = [B3, B2, B1, BO]
vector_SUMA = [S3, S2, S1, SO]

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

3.2.6 Diseo de entidades mediante


vectores

En la siguiente figura se observa la entidad


del sumador incorporando vectores.

entity sumador is
port (A,B: in bit_vector (3 downto 0);
Cin: in bit;
Cout: out bit;
SUMA: out bit_vector(3 downto
0));
end sumador;
Al Servicio del Sistema
Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

3.2.7 Declaracin de entidades


mediante libreras y paquetes

Una librera o biblioteca es un lugar al que


se tiene acceso para utilizar las unidades de
diseo predeterminadas por el fabricante de
la herramienta (paquete) y su funcin es
agilizar el diseo.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

3.2.7 Declaracin de entidades


mediante libreras y paquetes

En VHDL se encuentran definidas dos


libreras llamadas ieee y work.

Cuando en el diseo se utiliza algn


paquete es necesario llamar a la librera
que lo contiene. Para esto se utiliza la
siguiente declaracin:

library ieee;

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

3.2.7 Declaracin de entidades


mediante libreras y paquetes

Lo anterior permite el uso de todos los


componentes incluidos en la librera ieee.
En el caso de la librera de trabajo (work),
su uso no requiere la declaracin library,
dado que la carpeta work siempre est
presente al desarrollar un diseo.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

3.3 Paquetes

El paquete std_logic_1164 (estndar


lgico_1164) que se encuentra en la librera
ieee contiene todos los tipos de datos que
suelen emplearse en VHDL
(std_logic_vector, std_logic, entre otros).

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

3.3 Paquetes

El acceso a la informacin contenida en un


paquete es por medio de la sentencia use,
seguida del nombre de la librera y del
paquete, respectivamente:

use nombre_librera.nombre_paquete.all;

por ejemplo:

use IEEE.STD_LOGIC_1164.ALL;

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

3.3 Paquetes

El paquete use
IEEE.STD_LOGIC_ARITH.ALL; define
funciones y operadores aritmticos, como
igual (=), mayor que (>), menor que (<),
entre otros.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

3.4 Arquitecturas

Se trata de una descripcin funcional


porque expone la forma en que trabaja el
sistema; es decir, las descripciones
consideran la relacin que hay entre las
entradas y las salidas del circuito, sin
importar cmo est organizado en su
interior.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

3.4.1 Descripcin funcional

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

3.4.2 Descripcin por flujo de datos


Indica la forma en que los datos se pueden
transferir de una seal a otra sin necesidad
de declaraciones secuenciales (if-then-else).
En este tipo de descripcin se pueden
utilizar dos formatos: mediante
instrucciones when else (cuando-si no) o
por medio de ecuaciones booleanas.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

3.4.2 Descripcin por flujo de datos


a) Descripcin por flujo de datos mediante
when-else.
A continuacin se muestra el cdigo del
comparador de igualdad de dos bits
descrito antes. Ntese que la diferencia
radica en la eliminacin del proceso y en la
descripcin sin declaraciones secuenciales
(if-then-else).

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

3.4.2 Descripcin por flujo de datos

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

3.4.2 Descripcin por flujo de datos

b) Descripcin por flujo de datos mediante


ecuaciones booleanas

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

3.4.2 Descripcin por flujo de datos

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

4. AMBIENTE DE TRABAJO XILINX


ISE DESIGN SUITE 12.1
Objetivo de la unidad
El
participante
identificar
las
caractersticas principales del ambiente de
trabajo del software Xilinx ISE mediante una
prctica demostrativa de acuerdo al plan de
sesin.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

4.1 Arranque del programa

Arrancar
el
programa
Xilinx
Project
Navigator,
que
se
encuentra
en
InicioTodos los ProgramasXilinx ISE
12.1Project Navigator.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

4.1 Arranque del programa

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

4.1 Arranque del programa

La ventana 1 llamada Sources muestra los diferentes archivos


fuente adicionados al proyecto.
La ventana 2 llamada Processes muestra los diferentes
procesos que se pueden realizar al archivo fuente seleccionado
en la ventana 1.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

4.1 Arranque del programa

La ventana 3 es el rea de trabajo para mostrar y/o editar lo


diferentes archivos fuente seleccionados en la ventana 1.
La ventana 4 llamada Transcript muestra mensajes de
estado de los diferentes procesos ejecutados durante el
diseo.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

4.2 Creacin de un proyecto


Para crear el nuevo proyecto procedemos
de la siguiente manera:
A.- Seleccione File >New Project.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

4.2 Creacin de un proyecto

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

4.2 Creacin de un proyecto

B.- Clic Next


para moverse a
la pgina de
propiedades del
dispositivo.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

4.2 Creacin de un proyecto

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

4.2 Creacin de un proyecto

C. Haga clic en next


nuevamente, as se
muestra en pantalla
el resumen de las
propiedades
del
nuevo
proyecto
creado.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

4.2 Creacin de un proyecto

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

4.2 Creacin de un proyecto

Haga clic en
finish, de esta
manera el proyecto
esta creado, En la
ventana sources se
observa el icono
del nuevo proyecto

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

4.3 Creacin de un archivo fuente


HDL

A. Clic en New Source dentro de la


ventana New Project Wizard

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

4.3 Creacin de un archivo fuente


HDL
B Seleccione un tipo de archivo fuente de la
lista dependiendo del dispositivo y diseo
especificado para su proyecto, para este
caso seleccione VHDL Module como tipo
de fuente.
C. Digite en el campo file name el nombre
iniciando por una letra (A-Z, a-z) y debe
contener solamente caracteres
alfanumricos (A-Z, a-z, 0-9) y underscores
(_).

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

4.3 Creacin de un archivo fuente


HDL

Location contiene
la ruta del proyecto
actual por defecto.

Verifique que la
casilla Add to
project este
seleccionada, para
adicionar el archivo
fuente al proyecto

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

4.3 Creacin de un archivo fuente


HDL
D. Clic en Next.
E. Declare los puertos
para el diseo de la
compuerta con cuatro
entradas y una
salida, esta se define
seleccionando out,
llenando la
informacin como se
muestra en la figura
F. Clic Next.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

4.3 Creacin de un archivo fuente


HDL

Se observa el
cuadro resumen
del nuevo
archivo fuente
del proyecto que
se est
realizando. Ahora
damos clic en
Finish

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

4.3 Creacin de un archivo fuente


HDL

El archivo
fuente contiene
el par entidad /
arquitectura
visualizados en
el espacio de
trabajo

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

4.3 Creacin de un archivo fuente


HDL

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

4.3 Creacin de un archivo fuente


HDL
En la parte de la arquitectura escriba lo
siguiente para generar una compuerta and:

architecture Behavioral of New Source is
C<= A and B;
end Behavioral;

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

4.3 Creacin de un archivo fuente


HDL

A continuacin se
guarda el fichero
y se comprueba
si se ha tenido
algn error de
sintaxis haciendo
clic en Synthesize
XSTCheck
Syntax. Esto est
en la subventana
de Processes

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

4.3 Creacin de un archivo fuente


HDL

Si se tiene algn error, se debe localizar y


corregir. Cuando no se tengan errores, se
puede hacer clic directamente en
Synthesize - XST para sintetizar.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

4.3 Creacin de un archivo fuente


HDL

Una vez que hayamos sintetizado tenemos


que indicar los pines de la FPGA que vamos
a utilizar y su correspondencia con los
puertos de la entidad, esto se logra por
medio de un archivo con terminacin UCF
(User Constraints File)

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

4.3 Creacin de un archivo fuente


HDL

Para lo cual se
selecciona
Project>New
Source y se
escoge
Implementatio
n Constraints
File, se le da
un nombre y
se da clic en
Next.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

4.3 Creacin de un archivo fuente


HDL

Una vez realizado esto, se verifica en la


ventana sources que el archivo ha sido
creado y se da doble clic para abrir el
archivo que contiene la localizacin de los
pines del proyecto en cuestin.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

4.3 Creacin de un archivo fuente


HDL

En un principio, el archivo UCF aparecer en


blanco, por lo que se debe escribir que
terminal del FPGA le corresponde a cada
una de las entradas y salidas del proyecto
en el que se est trabajando.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

4.3 Creacin de un archivo fuente


HDL

Ahora hacemos doble clic en Generate


Programming File dentro de la ventana
Processes, y esperamos a que termine el
proceso de sntesis e implementacin,
viendo si hay algn error o advertencia de
importancia (warning).

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

4.4 Implementacin en la tarjeta


NEXYS 2

Se debe asegurar que


los jumpers de POWER
SELECT (jumpers de
seleccin
alimentacin) se
encuentren en la
posicin USB.
Ejecutar el programa
Adept: InicioTodos los
ProgramasDigilentA
dept.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

4.4 Implementacin en la tarjeta


NEXYS 2

Posteriormente se
conecta la tarjeta
Nexys2 a la
computadora mediante
el cable USB y ponemos
el interruptor de
alimentacin en la
posicin ON.
Transcurrido un tiempo,
en la ventana del Adept
aparecer que se ha
conectado una tarjeta

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

4.4 Implementacin en la tarjeta


NEXYS 2

A continuacin se da
clic en el botn
browse
correspondiente a la
FPGA, y buscamos el
fichero con extensin
bit que hemos
generado en nuestro
proyecto. Aparecer
una advertencia
(warning).A este
mensaje contestamos
S.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

4.4 Implementacin en la tarjeta


NEXYS

Si todo ha salido bien, slo tenemos que


hacer clic en Program y se programar la
FPGA. Ahora solo queda verificar el correcto
funcionamiento de nuestro diseo en la
tarjeta de desarrollo.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

Ejercicio 4.1.- Creacin de un


proyecto

Crear e implementar en la tarjeta Nexys 2 el


diseo explicado del subtema 4.1 al 4.4.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

5. DISEO LGICO COMBINACIONAL


EN VHDL
Objetivo de la unidad
El participante aplicar los principios del
diseo combinacional en VHDL mediante
diversos ejercicios prcticos utilizando la
tarjeta de desarrollo Nexys 2 de manera
adecuada.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

5.1 Programacin de estructuras


bsicas mediante declaraciones
concurrentes

Las declaraciones concurrentes suelen


usarse en las descripciones de flujo de
datos. Esto se debe a que en una
declaracin concurrente no importa el orden
en que se escriban las seales, ya que el
resultado para determinada funcin sera el
mismo.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

5.1 Programacin de estructuras


bsicas mediante declaraciones
concurrentes

En VHDL existen tres tipos de declaraciones


concurrentes:

Declaraciones condicionales asignadas a


una seal (when-else)
Declaraciones concurrentes asignadas a
seales
Seleccin de una seal (with-select-when)

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

5.1.1 Declaraciones condicionales


asignadas a una seal (when-else)

La declaracin when-else se utiliza para


asignar valores a una seal, determinando
as la ejecucin de una condicin propia del
diseo.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

5.1.1 Declaraciones condicionales


asignadas a una seal (when-else)

1 -- Ejemplo combinacional bsico


2 library ieee;
3 use ieee.std_logic_1164.all ;
4 entity tabla is port(
5 a,b,c: in std_logic;
6 f: out std_logic);
7 end tabla;
8 architecture Behavioral of tabla is
9 begin
10 f<= '1' when (a= '0' and b= '0' and c= '0' )
else
11 '1' when (a= '0' and b= '1' and c= '1' )
else
12 '1' when (a= '1' and b= '1' and c= '0' )
else
13 '1' when (a= '1' and b= '1' and c= '1' )
else
14 '0';
15 end Behavioral;

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

5.1.1 Declaraciones condicionales


asignadas a una seal (when-else)

Ejercicio 5.1.- Primer ejercicio con


declaracin When-Else.

En base a lo visto en el captulo 4, introducir


el diseo anterior en la tarjeta Nexys 2.
Utilizar SW0 como la entrada a, SW1 como
la entrada b y SW2 como la entrada c. La
salida f estar dada por el led LD0. Verificar
el correcto funcionamiento del diseo
realizado.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

5.1.1 Declaraciones condicionales


asignadas a una seal (when-else)

Ejercicio 5.2.- Segundo ejercicio con


declaracin When-Else.

Realizar haciendo uso de la declaracin


When-Else un diseo lgico de 4 entradas
que van desde 0000 hasta 1111 y que
produzca una salida alta siempre que la
entrada decimal equivalente sea mayor que
10. Verificar el correcto funcionamiento del
diseo realizado.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

5.2 Operadores lgicos

Los operadores lgicos ms utilizados en la


descripcin de funciones booleanas, y
definidos en los diferentes tipos de datos
bit, son los operadores and, or, nand, xor,
xnor y not.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

5.1.2 Operadores lgicos

En el momento de ser compilados los


operadores lgicos presentan el siguiente orden
y prioridad:

1) Expresiones entre parntesis


2) Complementos
3) Funcin AND
4) Funcin OR
Las operaciones xor y xnor son transparentes al
compilador y las interpreta mediante la suma
de productos correspondiente a su funcin.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

5.1.3 Declaraciones concurrentes


asignadas a seales

En este tipo de declaracin encontraremos


las funciones de salida mediante la
ecuacin booleana que describe el
comportamiento de cada una de las
compuertas.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

5.1.3 Declaraciones concurrentes


asignadas a seales
library ieee;
use ieee.std_logic_1164.all;

entity logic is port (


a,b,c,d,e,f: in std_logic;
xl,x2,x3: out std_logic) ;
end logic;

architecture behavioral of logic is


begin
xl <= a xnor b;
x2 <= ( ( (c and d)or(a xnor b) ) nand
( (e xor f)and(c and d) ) ) ;
x3 <= (e xor f) and (c and d) ;
end behavioral;

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

Ejercicio 5.3 Circuito lgico con


compuertas

En base a lo visto en el captulo 4, introducir


el diseo anterior en la tarjeta Nexys 2.
Utilizar de SW0 a SW5 como entradas. Las
salidas estarn dadas por los leds LD0, LD1
Y LD2. Verificar el correcto funcionamiento
del diseo realizado obteniendo su tabla de
la verdad.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

Ejercicio 5.4 Segundo circuito


lgico con compuertas

Realizar un diseo lgico por medio de


compuertas que tenga 4 entradas que van
desde 0000 hasta 1111 y que produzca una
salida alta siempre que la entrada decimal
equivalente sea mayor que 10. Verificar el
correcto funcionamiento del diseo
realizado.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

Ejercicio complementario
Una funcin depende de 4 variables D,C,B,A,
que representan un nmero binario, donde A
es la variable menos significativa. La funcin
F adopta el valor de uno si el nmero
formado por las cuatro variables es inferior o
igual a 7 y superior a 3. En caso contrario la
funcin F es cero.
Obtenga la tabla de la verdad de la funcin F
e implemente el diseo correspondiente en
VHDL, utilice estructuras del tipo when-else y
operadores lgicos.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

5.1.4 Seleccin de una seal (withselect-when)

La declaracin with select - when se utiliza


para asignar un valor a una seal con base
en el valor de otra seal previamente
seleccionada.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

5.1.4 Seleccin de una seal (withselect-when)

El valor de la
salida c depende
de las seales de
entrada
seleccionadas
a(0) y a(1), de
acuerdo con la
tabla de verdad
correspondiente.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

5.1.4 Seleccin de una seal (withselect-when)


library ieee;
use ieee.std_logic_l164.all;
entity circuito is port(
a: in std_logic_vector (1 downto 0) ;
c: out std_logic);
end circuito;
architecture behavioral of circuito is
begin
with a select
c <= '1' when "00",
'0' when "01",
'1' when "10",
'0' when others;
end behavioral;

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

Ejercicio 5.5.- Declaracin WithSelect-When


En base a lo visto en el captulo 4, introducir
el diseo anterior en la tarjeta Nexys 2.
Utilizar de SW0 a SW1 como la entrada a. La
salida estar dada por el led LD0. Verificar el
correcto funcionamiento del diseo.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

Ejercicio 5.6.- Implementacin de


tabla de verdad
Implementar tabla de verdad 5.1 en la
tarjeta de desarrollo Nexys 2 de la siguiente
manera:
Implementar la tabla de verdad mediante la
declaracin When-Else.
Implementar la tabla de verdad haciendo
uso de operadores lgicos (compuertas).
Implementar la tabla de verdad mediante la
seleccin de una seal (With-Select-When).

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

Ejercicio 5.6.- Implementacin de


tabla de verdad

A
0
0
0
0
1
1
1
1

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

ENTRADAS
B
0
0
1
1
0
0
1
1

C
0
1
0
1
0
1
0
1

SALIDA
X
1
0
1
0
1
0
1
1

5.2 Programacin de estructuras


bsicas mediante declaraciones
secuenciales

A diferencia de una declaracin


concurrente, una secuencial debe
ejecutarse en el orden en que aparece y
formar parte de un proceso (process).

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

5.2.1 Declaracin if-then-else

Declaracin if-then-else (si-entonces-si no). Esta


declaracin sirve para seleccionar una
condicin o condiciones basadas en el resultado
de evaluaciones lgicas (falso o verdadero). Por
ejemplo, observemos que en la instruccin:

if la condicin es cierta then


realiza la operacin 1;
else
realiza la operacin 2;
end if;

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

5.2.1 Declaracin if-then-else

--Ejemplo de declaracin de la entidad comparador


entity comp is
port (a,b: in bit_vector( 1 downto 0);
c: out bit);
end comp ;
architecture behavioral of comp is
begin
process (a,b)
begin
if a = b then
c <='1';
else
c <= ' 0 ' ;
end if;
end process;
end behavioral;

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

5.2.1 Declaracin if-then-else


Cuando se requieren ms condiciones de
control, se utiliza una nueva estructura
llamada elsif (si no-si).
if la condicin 1 se cumple then
realiza operacin 1;
elsif la condicin 2 se cumple then
realiza operacin 2:
else
realiza operacin 3;
end if;

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

Ejercicio 5.7.- Comparador de 2 bits

Introducir el diseo anterior del comparador


en la tarjeta Nexys 2. Utilizar de SW0 a SW1
como la entrada a y SW6 Y SW7 como
entrada b. La salida estar dada por el led
LD0. Verificar el correcto funcionamiento.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

Ejercicio complementario

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

5.2.2 Operadores relacionales

Los operadores relacionales se usan para


evaluar la igualdad, desigualdad o la
magnitud en una expresin.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

5.3 Buffer tri-estado

Los registros de tres estados (buffers triestado) tienen diversas aplicaciones, ya sea
como salidas de sistemas (modo buffer) o
como parte integral de un circuito. En VHDL
estos dispositivos son definidos a travs de
los valores que manejan (0,1 y alta
impedancia 'Z').

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

5.3 Buffer triestado


library ieee;
use ieee.std_logic_1164.all ;
entity tri_est is port(
enable, entrada: in std_logic;
salida: out std_logic);
end tri_est;
architecture behavioral of tri_est is
begin
process (enable, entrada) begin
if enable = '0' then
salida <= 'Z';
else
salida <= entrada;
end if;
end process ;
end behavioral;

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

5.3 Buffer triestado

El tipo std_logic soporta este valor al igual


que 0 y 1. A esto se debe que en el diseo
se prefiera utilizar el estndar
std_logic_l164 y no el tipo bit, ya que el
primero es ms verstil al proveer valores
de alta impedancia y condiciones de no
importa, los cuales no estn considerados
en el tipo bit.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

Ejercicio 5.8 Buffer triestado

Introducir el diseo anterior en la tarjeta


Nexys 2. Utilizar a SW0 para la entrada
enable y BTN0 como entrada. La salida
estar dada por el led LD0. Verificar el
correcto funcionamiento.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

5.4 Multiplexores

Los multiplexores se disean describiendo


su comportamiento mediante la declaracin
with-select-when o ecuaciones booleanas.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

5.5 Sumadores

Para observar en detalle el funcionamiento


de un circuito medio sumador, considere la
suma de los nmeros A y B mostrados.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

5.5 Sumadores

La ecuacin lgica que


corresponde
a
la
expresin
es
la
funcin
lgica
orexclusiva
A
B,
mientras
que
la
ecuacin lgica del
acarreo de salida es
Cout
=
AB
que
corresponde
a
la
compuerta lgica and.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

5.5 Sumador
library ieee;
use ieee.std_logic_1164.all ;
entity m_sum is port (
A,B: in std_logic;
SUMA, Cout: out std_logic) ;
end m_sum;
architecture behavioralof m_sum is
begin
SUMA <= A XOR B;
Cout <= A AND B;
end behavioral;

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

Ejercicio 5.9 Medio sumador

Introducir el diseo anterior en la tarjeta


Nexys 2. Utilizar a SW0 la entrada A, SW1
como la entrada B. LDO como la salida
SUMA y LD1 como la salida Cout.
Verificar el correcto funcionamiento.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

5.5.1 Diseo de un sumador


completo

Un sumador completo (SC) a diferencia del


circuito medio sumador considera un
acarreo de entrada (Cin).

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

5.5.1 Diseo de un sumador


completo
library ieee;
use ieee.std_logic_1164.all;
entity sum is port (
A,B,Cin: in std_logic;
Suma, Cout: out std_logic);
end sum;
architecture behavioral of sum is
begin
Suma <= A xor B xor Cin;
Cout <= (A and B) or ((A xor B) and Cin);
end behavioral;

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

Ejercicio 5.10 Sumador completo

Introducir el diseo anterior en la tarjeta


Nexys 2. Utilizar a SW0 como la entrada A,
SW1 como la entrada B y SW2 como la
entrada Cin, LD0 como la salida Suma y LD1
como la salida Cout. Verificar el correcto
funcionamiento.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

Ejercicio complementario 2
Dada la siguiente tabla, halle las ecuaciones de X,Y y
Z de la forma suma de productos e implemntelas
en la FPGA.
A

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

Ejercicio complementario 3

Realizar e implementar el diseo del


siguiente multiplexor. Revise su correcto
funcionamiento.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

5.6 Decodificador de BCD a display


de siete segmentos

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

5.6 Decodificador de BCD a display


de siete segmentos

library ieee;
use ieee.std_logic_1164.all ;
entity deco is port (
A: in std_logic_vector(3 downto 0);
anodo: out std_logic_vector (3 downto 0);
d: out std_logic_vector(6 downto 0));
end deco;
architecture behavioral of deco is
begin
anodo<=1110;
process (A) begin
case A is
when "0000" => d <= "0000001";
when "0001" => d <= "1001111";
when "0010" => d <= "0010010";
when "0011" => d <= "0000110";
when "0100" => d <= "1001100";
when "0101" => d <= "0100100";
when "0110" => d <= "0100000";
when "0111" => d <= "0001110";
when "1000" => d <= "0000000";
when "1001" => d <= "0000100";
when others = > d < = "1111111";
end case;
end process;
end behavioral;

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

Ejercicio 5.11 Decodificador BCD a


siete segmentos

Introducir el diseo anterior en la tarjeta


Nexys 2. Utilizar de SW0 a SW3 como
entradas y los valores del display de 7
segmentos como la salida d. Recuerde que
los valores de los displays de 7 segmentos
los puede localizar impresos en la tarjeta de
desarrollo o en el manual de usuario.
Verificar el correcto funcionamiento del
diseo.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

6. DISEO LGICO SECUENCIAL EN


VHDL
Objetivo de la unidad
El participante aplicar los principios del
diseo secuencial en VHDL mediante
diversos ejercicios prcticos utilizando la
tarjeta de desarrollo Nexys 2 de manera
adecuada.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

6.1 Sistema 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 slo depende del valor
presente de las entradas, sino tambin de la
historia del sistema

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

6.1 Sistema secuencial

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

6.2 Flip-Flops

La caracterstica principal de un flip-flop es


mantener o almacenar un bit de manera
indefinida hasta que a travs de un pulso o
una seal cambie de estado.

Los flip-flops ms conocidos son los tipos


SR, JK, T y D.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

6.2.1 Flip-Flop tipo D

Es importante
recordar el
significado de la
notacin Q y Q(t+i);

Q = estado presente
o actual
Qt+1 = estado
futuro o siguiente

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

6.2.1 Flip-Flop tipo D


En el diseo secuencial con VHDL las
declaraciones If-then-else son las ms
utilizadas.
La ejecucin del proceso es sensible a los
cambios en clk (pulso de reloj); esto es,
cuando clk cambia de valor de una
transicin de 0 a 1 (clk = 1), el valor de D
se asigna a Q y se conserva hasta que se
genera un nuevo pulso.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

6.2.1 Flip-Flop tipo D


1 library ieee;
2 use ieee.std_logic_1164.all ;
3 entity Flip_Flop_D is
4
Port ( D : in STD_LOGIC;
5
CLK : in STD_LOGIC;
6
Q : out STD_LOGIC;
7
Qn: out STD_LOGIC);
8 end Flip_Flop_D;
9 architecture Behavioral of Flip_Flop_D is
10 begin
11 process (CLK)
12 begin
13 if clk'event and clk='1' then
14 Q <= D;
15 Qn<=not D;
16 end if;
17 end process;
18 end Behavioral;

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

6.3 Atributo event

En el lenguaje VHDL los atributos sirven


para definir caractersticas que se pueden
asociar con cualquier tipo de datos, objeto o
entidades. El atributo event (evento) se
utiliza para describir un hecho u ocurrencia
de una seal en particular.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

6.3 Atributo event

La condicin if clk 'event es cierta slo


cuando ocurre un cambio de valor; es decir,
un suceso (event) de la seal clk. Como se
puede apreciar, la declaracin (if-then) no
maneja la condicin else, debido a que el
compilador mantiene el valor de Q hasta
que no exista un cambio de valor en la
seal clk.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

Ejercicio 6.1 Implementacin del


Flip-Flop D

Introducir el diseo anterior en la tarjeta


Nexys 2. Utilizar SW0 como entrada D y LD0
como la salida Q. Recuerde que la terminal
que corresponde al reloj interno de la tarjeta
es B8. Verificar el correcto funcionamiento
del diseo.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

6.4 Flip-Flop SR

El programa en VHDL puede realizarse


utilizando instrucciones condicionales y un
nuevo tipo de datos: valores no importa ('-'),
los cuales permiten adoptar un valor de 0 o 1
lgico de manera indistinta.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

6.4 Flip-Flop SR

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity Flip_Flop_SR is
Port ( S : in STD_LOGIC;
R : in STD_LOGIC;
clk : in STD_LOGIC;
Q : out STD_LOGIC;
Qn : out STD_LOGIC);
end Flip_Flop_SR;

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

architecture Behavioral of
Flip_Flop_SR is
begin
process (clk, S, R)
begin
if (clk'event and clk = '1') then
if S = '0' and R = '1' then

Q <= '0';

Qn <= '1';
elsif (S = '1' and R = '0') then

Q <= '1';

Qn <= '0';
elsif (S = '0' and R = '0') then
else

Q <= '-';

Qn <= '-';
end if;
end if;
end process;
end Behavioral;

Ejercicio 6.2 Implementacin del


Flip-Flop SR

Introducir el diseo anterior en la tarjeta


Nexys 2. Utilizar SW0 como entrada S, SW1
como entrada R, LD0 como la salida Q y
LD1 como salida Qn. Recuerde que la
terminal que corresponde al reloj interno de
la tarjeta es B8. Verificar el correcto
funcionamiento del diseo.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

6.5 Registros

El diseo es muy similar al flip-flop anterior,


la diferencia radica en la utilizacin de
vectores de bits en lugar de un solo bit.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

6.5 Registros
library ieee;
use ieee.std_logic_1164.all;
entity reg is port (
D: in std_logic_vector(0 downto 7);
clk: in std_logic;
Q: out std_logic_vector(0 downto 7));
end reg ;
architecture behavioral of reg is
begin
process (clk) begin
if (clk'event and clk='1') then
Q <= D;
end if;
end process;
end behavioral;

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

Ejercicio 6.3 Registro paralelo de 8


bits

Introducir el diseo anterior en la tarjeta


Nexys 2. Utilizar SW0 a SW7 como entrada
D y LD0 A LD7 como la salida Q. Recuerde
que la terminal que corresponde al reloj
interno de la tarjeta es B8. Verificar el
correcto funcionamiento del diseo.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

6.6 Contadores

Los contadores son entidades muy


utilizadas en el diseo lgico. La forma
usual para describirlos en VHDL es
mediante operaciones de incremento,
decremento de datos o ambas.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

6.6 Contadores

library ieee;
use ieee.std_logic_1164.all ;
use ieee.std_logic_unsigned.all;
entity cont4 is port (
clk: in std_logic;
Q: out std_logic_vector(3 downto 0));
end cont4;
architecture behavioral of cont4 is
begin
process (clk)
variable Qaux: std_logic_vector (3 downto 0) := 0000;
begin
If (clk'event and clk = '1') then
Qaux := Qaux + 1;
end if;
Q <= Qaux;
end process ;
end behavioral;

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

6.6 Contadores

Se necesita una seal auxiliar llamada Qaux


porque la salida Q no puede usarse dentro
del proceso, la salida no puede emplearse
para hacer lgica.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

Ejercicio 6.4 Contador binario de 4


bits

Introducir el diseo anterior en la tarjeta


Nexys 2. Utilizar SW0 como entrada D y LD0
como la salida Q. Recuerde que la terminal
que corresponde al reloj interno de la tarjeta
es B8. Es correcto el comportamiento de la
tarjeta?

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

6.6 Contadores

Ahora se describir el funcionamiento de un


contador de 4 bits con una seal de control
(Up/Down) que determine el sentido del
conteo: ascendente o descendente.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

6.6 Contadores
library ieee;
use ieee.std_logic_1164.all ;
use ieee.std_logic_unsigned.all;
entity contador is port (
clk: in std_logic;
UP:in std_logic;
Q: out std_logic_vector(3 downto 0));
end contador;
architecture behavioral of contador is
begin
process (UP, clk)
variable Qaux: std_logic_vector(3 downto 0) := 0000;
begin
if (clk'event and clk = '1')then
if (UP = '0') then
Qaux := Qaux + 1;
else
Qaux := Qaux - 1;
end if ;
end if ;
Q <= Qaux;
end process ;
end behavioral;

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

7. VHDL ESTRUCTURAL
Objetivo de la unidad
El participante aplicar el diseo estructural
en VHDL mediante ejercicios prcticos
utilizando la tarjeta de desarrollo Nexys 2
de manera adecuada.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

7.1 Creacin de un diseo


estructural

En un diseo grande puede haber varios


niveles de jerarqua, donde unas
arquitecturas estructurales contienen a
otras. Las ventajas de realizar el diseo de
esta manera son varias, entre ellas se
cuentan las siguientes:

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

7.1 Creacin de un diseo


estructural

Permite dividir el circuito en partes ms


sencillas, haciendo que el diseo sea ms
manejableyentendible.Estoademsfacilitael
trabajoenequipo.

Esfcilmodificaralgnbloquedeldiseo,
mientrasquesedejaelrestoigual.

Permitelareutilizacinyaquepuedequeun
bloquedeundiseolonecesitemospara otro.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

7.1 Creacin de un diseo


estructural

Para explicar cmo se describe una


arquitectura estructural en VHDL, en este
ejemplo
se
asume
que
se
han
implementado en un nuevo proyecto el
diseo de una compuerta XNOR y en otro
proyecto el diseo de una compuerta AND.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

7.1 Creacin de un diseo


estructural

Para iniciar el diseo de una entidad de


manera estructural, es necesario la
descomposicin lgica del diseo en
pequeos submdulos.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

7.1 Creacin de un diseo


estructural
1 library ieee;

2 use ieee.std_logic_1164.all;
3 entity comp is port (
4 a,b: in std_logic;
5 c: out std_logic);
6 end comp;
7 architecture estructural of comp is
8 component xnor
9 port (a0,b0: in std_logic;
10 salida: out std_logic);
11 end component;
12 component and
13
port (a1,b1: in std_logic;
14
salida: out std_logic);
15 end component;
16 signal x0,x1: std_logic;
17
18 begin
19 U0: xnor port map (a,b,x0);
20 Ul: xnor port map (a,b,x1);
21 U2: and port map (x0,x1, c);
Al Servicio del
Sistema
22
end estructural;

Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

7.1 Creacin de un diseo


estructural
U0: xnor port map (a,b,x0);
U1: xnor port map (a,b,x1);
U2: and port map (x0,x1, c);

U0: xnor port map (a0=>a,b0=>b, salida=>x0);


U1 xnor port map (a1=>a,b1=>b, salida=>x1);
U2: and port map (x0=>a1,x1=>a2,salida=>c);

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

Ejercicio 7.1

Realice e implemente el diseo estructural


mostrado anteriormente. Verifique su
correcto funcionamiento.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

7.2 DIVISOR DE FRECUENCIA

Para realizar el divisor de frecuencia se debe


considerar primero la frecuencia a la que trabaja
la tarjeta Nexys 2, la cual es 50Mhz, cuyo periodo
es de 20 ns, es decir, si queremos que la
frecuencia sea de 1Hz su periodo debe de ser
cada 50 x10 nanosegundos o lo que es lo mismo,
cada 50 x10 pulsos a una frecuencia de 50MHz,
teniendo esto en mente se puede realizar un
divisor de frecuencia a 1 Hz manteniendo una
salida en 1 durante 25 x10
pulsos de reloj y
posteriormente cambiar la salida a un 0 lgico
los 25 x10 pulsos de reloj restantes.
6

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

7.2 DIVISOR DE FRECUENCIA

Se pueden observar varios aspectos del


diseo anterior, uno de ellos es el uso de la
palabra reservada constant en lugar de
usar una variable, esto debido a que los
valores que se obtengan para max y half se
mantienen constantes a lo largo del tiempo.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

7.2 DIVISOR DE FRECUENCIA

Dentro del proceso Clk50Mhz se lleva a


cabo el conteo de los flancos de subida en
la variable count, la cual se resetea al llegar
a los 50,000,000 pulsos; por otra parte se
lleva a cabo el conteo de los pulsos para
variar la salida entre un 1 y un 0 lgico
cada 25,000,000 pulsos de reloj, de esta
manera se obtiene como resultado una
frecuencia de salida de 1Hz.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

7.2 DIVISOR DE FRECUENCIA


library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use ieee.std_logic_unsigned.all;

entity Div2 is
PORT (Clk50Mhz: IN STD_LOGIC;

Clk: OUT STD_LOGIC);


end Div2;

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

7.2 DIVISOR DE FRECUENCIA


architecture Behavioral of Div2 is

constant max: INTEGER := 50000000;

constant half: INTEGER := max/2;



begin

process (Clk50Mhz)

variable count: integer;

begin

if Clk50Mhz'EVENT and Clk50Mhz = '1' then

if

count < max then count := count + 1;

else count := 0;

end if;

if

count < half then Clk <= '0';

else Clk <= '1';

end if;

end if;

end process;
end Behavioral;

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

Ejercicio 7.2 Implementacin de un


divisor de frecuencia

Implementar el divisor de frecuencia


previamente mostrado, en la tarjeta de
desarrollo Nexys 2 utilizando como salida el
led LD0 (terminal J14). Verificar el correcto
funcionamiento del diseo.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

Ejercicio 7.3 Contador de 4 bits con


divisor de frecuencia

Ya que se cuentan con los diseos del


divisor de frecuencia a 1Hz y el contador
binario de 4 bits, realizar un diseo
estructural en el cual la seal de reloj que
entra al contador provenga del divisor de
frecuencia en lugar de la tarjeta.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

8. SIMULACIN DE DISEOS
Objetivo de la unidad
El participante comprender la manera de
realizar simulaciones de los diseos
realizados en VHDL mediante el uso
adecuado del software ModelSim.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

8. SIMULACIN DE DISEOS
library ieee;
use ieee.std_logic_1164.all;

entity Circuito is
port (a,b,c: in std_logic;
y: out std_logic);
end Circuito;

signal net1,net2: std_logic;


begin
u1: c_and port map
(a=>a, b=>b, z=>net1);
u2: c_or port map (a=>c,
b=>a, z=> net2);
u3: c_xor port map
(a=>net1, b=>net2,
z=>y);
end str;
Al Servicio del Sistema
Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

architecture str of Circuito is


component c_and
port(a,b: in std_logic;
z: out std_logic);
end component;
component c_or
port(a,b: in std_logic;
z: out std_logic);
end component;
component c_xor
port(a,b: in std_logic;
z: out std_logic);
end component;

8. SIMULACIN DE DISEOS
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity Circuito_test is
end Circuito_test;

architecture tst of Circuito_test is

component Circuito

Port (a : in std_logic;

b : in std_logic;

c : in std_logic;

y : out std_logic);
end component;

signal a,b,c,y: std_logic;

begin

uut: Circuito port map (a=>a, b=>b, c=>c,
y=>y);
a <='0', '1' after 200ns, '0' after 400ns;
b <='1', '0' after 300ns, '1' after 600ns;
c <='1', '0' after 350ns, '1' after 700ns;
end tst;

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

8. SIMULACIN DE DISEOS

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

8. SIMULACIN DE DISEOS

Edit>Preferences

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

8. SIMULACIN DE DISEOS

Cambio a Simulation

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

8. SIMULACIN DE DISEOS

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

8. SIMULACIN DE DISEOS

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

8. SIMULACIN DE DISEOS

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

8. SIMULACIN DE DISEOS

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

8. SIMULACIN DE DISEOS

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

Ejercicio 8.1 Simulacin de un FlipFlop

Realizar un archivo de prueba para el


diseo del Flip-Flop D del ejercicio 6.1 y
simlelo en ModelSim. Corra la simulacin
con al menos dos tipos diferentes de
estmulos, los cuales quedan a eleccin del
participante.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

Ejercicio 8.2 Simulacin de un


divisor de frecuencia

Realizar un archivo de prueba para el


diseo del divisor de frecuencia del ejercicio
7.2 y simlelo en ModelSim.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

Ejercicio 8.3 Simulador de un


contador de 4 Bits con divisor de
frecuencia

Realizar un archivo e prueba para el diseo


del contador de 4 bits con divisor de
frecuencia del ejercicio 7.3 y simlelo en
ModelSim.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

9. Mquina de estados en VHDL


Objetivo de la unidad
El participante comprender el diseo e
implementacin de una mquina de estados
en VHDL haciendo uso de una tarjeta
basada
en
FPGA
de
acuerdo
al
procedimiento establecido.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

9.1 Definicin de mquina de


estados

Los diagramas de estados, tablas de


estados y otras descripciones de mquina
de estados finitos contienen bsicamente la
misma
informacin:
describen
el
comportamiento deseado del circuito en
trminos de transiciones de estado y
cambios de salida en respuesta a todas las
combinaciones posibles de entradas y
estados.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

9.1 Definicin de mquina de


estados

Mquina Mealy: Es la mquina de estado en


la cual la salida depende tanto del estado
presente como de las entradas externas.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

9.1 Definicin de mquina de


estados

Mquina de Moore: Es la mquina de estado


en la cual las salidas solo dependen del
estado presente

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

9.2 Diseo de una mquina de


estados Moore

Donde:
x=> Vector de entrada.
Z=> Vector de salida.
y=> Vector de estado actual.
Y=> Vector de estado prximo.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

9.2 Diseo de una mquina de


estados Moore
library ieee;
use
ieee.std_logic_1164.all;

entity maquina is

port( x: in
std_logic_vector (1
downto 0);

clk: in std_logic;

reset: in std_logic;

z: out std_logic);
end maquina;

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

9.2 Diseo de una mquina de


estados Moore
architecture
beh of maquina
is
type estado is
(alfa,beta,gama
,delta,eta);
signal actual,
proximo:
estado;

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

9.2 Diseo de una mquina de


begin
estados Moore

combinacional: process (x,


actual)

begin

case actual is
when alfa=> if x(1)=0
then proximo <= beta;
else proximo <= alfa;
end if;
when beta=> if x(0)=0
then proximo <= delta;
else proximo <= gama;
end if;
when gama=> proximo <= eta;
when delta=> prximo <= eta;
when eta=> prximo <= alfa;
end case;
end process;

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

9.2 Diseo de una mquina de


estados Moore

registro: process (clk)


begin
if clkevent and clk=1
then if reset = 0
then actual <= alfa;
else actual <= proximo;
end if;
end if;
end process;

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

9.2 Diseo de una mquina de


estados Moore

salida: process (actual)


begin
case actual is
when alfa => z <=0;
when beta => z <=0;
when gama => z <=1;
when delta => z <=0;
when eta => z <=1;
end case;
end process;
end beh;

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

Ejercicio 9.1 Simulacin de una


mquina de estados

Disee en Xilinx ISE y simule en ModelSim


la
mquina
de
estados
expuesta
anteriormente, simule las seales de
entrada
que
crea
pertinentes
para
demostrar que el diseo se comporta de
acuerdo a lo esperado.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

Ejercicio 9.2 Contador de 3 bits con


mquina de estados

Disee en Xilinx ISE y simule en ModelSim


un contador binario de 3 bits modificando la
seal de salida por medio de una mquina
de estados, el cual debe de funcionar al
encontrarse en alto una seal de entrada
con una frecuencia de reloj de 1 Hz.

Al Servicio del Sistema


Nacional de Educacin
Superior Tecnolgica

Rev. 3
CR-PP-PO-05-05

Вам также может понравиться