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

Ao de la Diversificacin Productiva y del Fortalecimiento de la Educacin

UNIVERSIDAD NACIONAL DE PIURA


FACULTAD CIENCIAS

ESCUELA PROFESIONAL DE INGENIERIA ELECTRONICA Y


TELECOMUNICACIONES

ALUMNO : KENZO YC

DOCENTE : ING. JUAN JACINTO SANDOVAL

AREA : CIRCIITOS DIGITALES I

TEMA : FPGA HDL - EJERCICIOS PROGRAMADOS EN VHDL

CICLO : V CICLO

FECHA : 31 DE JULIO DEL 2015

UNP-PIURA-PERU
FPGA (FIELD PROGRAMMABLE GATE ARRAY)
Una FPGA (del ingls Field Programmable Gate Array) es un dispositivo
semiconductor que contiene bloques de lgica cuya interconexin y
funcionalidad puede ser configurada 'in situ' mediante un lenguaje de descripcin
especializado. La lgica programable puede reproducir desde funciones tan
sencillas como las llevadas a cabo por una puerta lgica o un sistema
combinacional hasta complejos sistemas en un chip.
Las FPGA se utilizan en aplicaciones similares a los ASIC; sin embargo son ms
lentas, tienen un mayor consumo de potencia y no pueden abarcar sistemas tan
complejos como ellos. A pesar de esto, las FPGA tienen las ventajas de ser
reprogramables (lo que aade una enorme flexibilidad al flujo de diseo), sus
costes de desarrollo y adquisicin son mucho menores para pequeas
cantidades de dispositivos y el tiempo de desarrollo es tambin menor.
Ciertos fabricantes cuentan con FPGA que slo se pueden programar una vez,
por lo que sus ventajas e inconvenientes se encuentran a medio camino entre
los ASIC y las FPGA reprogramables.
Histricamente las FPGA surgen como una evolucin de los conceptos
desarrollados en las PAL y los CPLD.
LOS FPGAs tiene celdas que se configuran con una funcin especfica ya sea
como memoria (FLIP-FLOP tipo D), como multiplexor o con una funcin lgica
tipo AND, OR, XOR. La labor del "programador" es describir el hardware que
tendr la FPGA. Por consiguiente, la tarea del "programador" es definir la funcin
lgica que realizar cada uno de los CLB, seleccionar el modo de trabajo de cada
IOB e interconectarlos.
El diseador cuenta con la ayuda de entornos de desarrollo especializados en el
diseo de sistemas a implementarse en un FPGA. Un diseo puede ser
capturado ya sea como esquemtico, o haciendo uso de un lenguaje de
programacin especial. Estos lenguajes de programacin especiales son
conocidos como HDL o Hardware Description Language (lenguajes de
descripcin de hardware). Los HDL ms utilizados son:
VHDL
Verilog
ABEL
En un intento de reducir la complejidad y el tiempo de desarrollo en fases de
prototipaje rpido, y para validar un diseo en HDL, existen varias propuestas y
niveles de abstraccin del diseo. Los niveles de abstraccin superior son los
funcionales y los niveles de abstraccin inferior son los de diseo al nivel de
componentes hardware bsicos. Entre otras, National Instruments LabVIEW
FPGA propone un acercamiento de programacin grfica de alto nivel.
HISTORIA DE LOS FPGAs
Las FPGAs fueron inventadas en el ao 1984 por Ross Freeman y Bernard
Vonderschmitt, co-fundadores de Xilinx, y surgen como una evolucin de los
CPLDs.
Tanto los CPLDs como las FPGAs contienen un gran nmero de elementos
lgicos programables. Si medimos la densidad de los elementos lgicos
programables en puertas lgicas equivalentes (nmero de puertas NAND
equivalentes que podramos programar en un dispositivo) podramos decir que
en un CPLD hallaramos del orden de decenas de miles de puertas lgicas
equivalentes y en una FPGA del orden de cientos de miles hasta millones de
ellas.
La arquitectura de las FPGAs, por otro lado, se basa en un gran nmero de
pequeos bloques utilizados para reproducir sencillas operaciones lgicas, que
cuentan a su vez con biestables sncronos. La enorme libertad disponible en la
interconexin de dichos bloques confiere a las FPGAs una gran flexibilidad.
Otra diferencia importante entre FPGAs y CPLDs es que en la mayora de las
FPGAs se pueden encontrar funciones de altos niveles (como sumadores y
multiplicadores) embebidas en la propia matriz de interconexiones, as como
bloques de memoria.

APLICACIONES:
Cualquier circuito de aplicacin especfica puede ser implementado en un FPGA,
siempre y cuando esta disponga de los recursos necesarios. Las aplicaciones
donde ms comnmente se utilizan los FPGA incluyen a los DSP (procesamiento
digital de seales), radio definido por software, sistemas aeroespaciales y de
defensa, prototipos de ASICs, sistemas de imgenes para medicina, sistemas
de visin para computadoras, reconocimiento de voz, bioinformtica, emulacin
de hardware de computadora, entre otras. Cabe notar que su uso en otras reas
es cada vez mayor, sobre todo en aquellas aplicaciones que requieren un alto
grado de paralelismo.
Existe cdigo fuente disponible (bajo licencia GNU GPL)1 de sistemas como
microprocesadores, microcontroladores, filtros, mdulos de comunicaciones y
memorias, entre otros. Estos cdigos se llaman cores.
Radio definida por software: de forma tradicional, una radio consista en
una antena, encargada de recibir y enviar una seal, y un hardware
encargado de procesar esa seal, filtrarla, modificar su frecuencia, etc.
Este hardware no poda modificar de forma notable la funcionalidad para
la cual haba sido diseada. En la actualidad gran parte de esta
funcionalidad se traslada a un dispositivo electrnico, que con frecuencia
suele ser una FPGA, pudiendo limitarse la parte analgica a una antena
y a los convertidores ADC y DAC.
Reconocimiento de voz: el reconocimiento de la persona que habla es
una tcnica empleada en seguridad, sistemas de recuperacin de
informacin, etc., y se espera que en el futuro su mbito de aplicacin
aumente. En este contexto, la FPGA resulta muy eficiente a la hora de
realizar la comparacin de la voz de una persona con unos patrones
previamente almacenados.

FABRICANTES:

Desde principios de 2007, hay dos grandes productores de FPGA de propsito


general, adems de un conjunto de otros competidores quienes se diferencian
por ofrecer dispositivos con caractersticas nicas.

Xilinx es uno de los dos grandes lderes en la fabricacin de FPGA.


Altera es el otro gran lder.
Lattice Semiconductor lanz al mercado dispositivos FPGA con tecnologa
de 90nm. Adems, Lattice es un proveedor lder en tecnologa no voltil,
FPGA basadas en tecnologa Flash, con productos de 90nm y 130nm.
Actel tiene FPGAs basados en tecnologa Flash reprogrammable. Tambin
ofrece FPGAs que incluyen mezcladores de seales basados en Flash.
QuickLogic tiene productos basados en antifusibles (programables una sola
vez).
Atmel es uno de los fabricantes cuyos productos son reconfigurables (el
Xilinx XC62xx fue uno de estos, pero no estn siendo fabricados
actualmente). Ellos se enfocaron en proveer microcontroladores AVR con
FPGAs, todo en el mismo encapsulado.
Achronix Semiconductor a travs de tecnologa de Intel de 22 nm, su
catlogo incluye dispositivos FPGA de hasta 1.5 GHz

NOTA: En la siguiente grfica puede apreciarse la distribucin de las


aplicaciones de las FPGA en el ao 2008.
HDL
Un lenguaje de descripcin de hardware (HDL, Hardware Description Language)
es un lenguaje de programacin especializado que se utiliza para definir la
estructura, diseo y operacin de circuitos electrnicos, y ms comnmente, de
circuitos electrnicos digitales. As, los lenguajes de descripcin de hardware
hacen posible una descripcin formal de un circuito electrnico, y posibilitan su
anlisis automtico y su simulacin.
Los lenguajes de descripcin de hardware se parecen mucho a otros lenguajes
de programacin de ordenadores tales como el C o Java: bsicamente consisten
en una descripcin textual con expresiones, declaraciones y estructuras de
control. Sin embargo, una importante diferencia entre los HDL y otros lenguajes
de programacin est en que el HDL incluye explcitamente la nocin de tiempo.
ESTRUCTURA DE LOS HDL
Los HDL utilizan expresiones estndar basadas en texto que reflejan la
estructura de los circuitos electrnicos, as como su comportamiento a lo largo
del tiempo. Al igual que los lenguajes de programacin concurrentes, la sintaxis
y semntica de los HDL incluyen notaciones especficas para manejar la
concurrencia. Sin embargo, al contrario de lo que ocurre con la mayora de los
lenguajes de programacin, los HDL incluyen tambin una notacin especfica
para el tiempo, debido a que este es una caracterstica fundamental en los
circuitos electrnicos reales. Los lenguajes cuyo nico propsito es expresar la
conectividad entre una jerarqua de bloques son ms bien clasificados como
"lenguajes de listas de conexiones" (o lenguajes "netlist"), tales como los que se
usan en los programas de diseo asistido por ordenador (CAD). Los HDL son
algo ms rico que estos lenguajes de listas de conexiones, ya que no slo
permiten definir la estructura de un circuito, sino tambin su comportamiento.
As, los HDL pueden ser usados para escribir especificaciones "ejecutables" de
hardware. Es decir, un programa escrito en HDL hace posible que el diseador
de hardware pueda modelar y simular un componente electrnico antes de que
este sea construido fsicamente. Es esta posibilidad de "ejecucin" de
componentes lo que hace que a veces los HDL se vean como lenguajes de
programacin convencionales, cuando en realidad se debera clasificarlos ms
precisamente como lenguajes de modelado.
En la prctica existen distintos tipos de simuladores capaces de trabajar tanto
con eventos discretos (digitales) como continuos (analgicos), existiendo
lenguajes HDL especficos para cada caso.
Pero desde el punto de vista prctico, una gran ventaja de los HDL est en que,
utilizando un programa llamado "sintetizador" es posible inferir, a partir de la
expresin textual del programa, el conjunto de operaciones lgicas y el circuito
equivalente necesarios para realizar la funcin del programa. Esto permite saltar
desde el mbito de la simulacin software al de la implementacin real del
hardware sobre circuitos lgicos reales tales como los ASIC o las FPGA.
VHDL
VHDL es un lenguaje definido por el IEEE (Institute of Electrical and Electronics
Engineers) (ANSI/IEEE 1076-1993) usado por ingenieros y cientificos para
describir circuitos digitales o modelar fenomenos cientificos respectivamente.
VHDL es el acrnimo que representa la combinacin de VHSIC y HDL, donde
VHSIC es el acrnimo de Very High Speed Integrated Circuit y HDL es a su vez
el acrnimo de Hardware Description Language. Para el modelado fisico existe
la derivacion del lenguaje VHDL-AMS. Originalmente, el lenguaje VHDL fue
desarrollado por el departamento de defensa de los Estados Unidos a inicios de
los aos 80's basado en ADA, con el fin de realizar simulacion de circuitos
electricos digitales; sin embargo, posteriormente se desarrollaron las
herramientas de sintesis e implementacin en hardware a partir de los archivos
.VHD. Aunque puede ser usado de forma general para describir cualquier circuito
digital se usa principalmente para programar PLD (Programable Logic Device -
Dispositivo Lgico Programable), FPGA (Field Programmable Gate Array), ASIC
y similares.
Otros mtodos para disear circuitos son la captura de esquemas (con
herramientas CAD) y los diagramas de bloques, pero stos no son prcticos en
diseos complejos. Otros lenguajes para el mismo propsito, pero con un nivel
de abstraccin superior son Verilog y ABEL.
ESTRUCTURA DE PROGRAMA
VHDL fue diseado con base a los principios de la programacin estructurada.
La idea es definir la interfaz de un mdulo de hardware mientras deja invisible
sus detalles internos. La entidad (ENTITY) en VHDL es simplemente la
declaracin de las entradas y salidas de un mdulo mientras que la arquitectura
(ARCHITECTURE) es la descripcin detallada de la estructura interna del
mdulo o de su comportamiento. En la siguiente figura se ilustra el concepto
anterior. Muchos diseadores conciben la Entity como una funda de la
arquitectura dejando invisible los detalles de lo que hay dentro (architecture).
Esto forma la base de un sistema de diseo jerrquico, la arquitectura de la
entidad de ms nivel (top level) puede usar otras entidades, dejando invisible los
detalles de la arquitectura de la identidad de menos nivel. En la figura las
entidades B, E y F no utilizan otras entidades. Mientras que la entidad A utiliza
todas las dems. A la pareja entidad-arquitectura se la llama modelo. En un
fichero texto VHDL la entidad y la arquitectura se escriben separadas, por
ejemplo a continuacin se muestra un programa muy simple en VHDL de una
compuerta de 2 entradas. Como otros programas, VHDL ignora los espacios y
saltos de lneas. Los comentarios se escriben con 2 guiones (--) y terminan al
final de la lnea. En la figura siguiente se muestra la estructura de un modelo en
VHDL. SINTAXIS PARA LA DECLARACIN DE LA ENTIDAD VHDL define
muchos caracteres especiales llamados palabras reservadas. Aunque las
palabras reservadas no son sensibles a las maysculas o minsculas, en el
ejemplo que sigue las utilizaremos en maysculas y negrita para identificarlas.
BIBLIOTECAS
Una biblioteca en VHDL es un lugar en donde se guarda la informacin
relacionada con un diseo determinado. Al comienzo de cada diseo el
compilador crea automticamente una biblioteca llamada WORK con este
objetivo. Adems de esta biblioteca particular existen otras bibliotecas de tipo
general que contienen un conjunto de definiciones que pueden utilizarse en
cualquier diseo. Un ejemplo de biblioteca general es la llamada Library IEEE,
que contiene definiciones estndar para VHDL. Para utilizar una biblioteca
general es necesario escribir su nombre al inicio del programa, por eso es muy
comn que en la primera lnea de un diseo en VHDL aparezca escrito "Library
IEEE", de sta forma dicha biblioteca se hace visible para el diseo.
PAQUETES
En los paquetes se guardan definiciones de tipos y objetos que pueden ser
utilizados en los diferentes diseos que invoquen su utilizacin. Un paquete muy
utilizado es el paquete estndar IEEE_STD_LOGIC_1164.ALL; La utilizacin de
un paquete en un diseo se realiza invocando su empleo mediante la clusula
USE y el nombre del paquete. Por ejemplo USE IEEE_STD_LOGIC_1164.ALL;
La terminacin ALL, permite utilizar todas las definiciones y objetos que contiene
dicho paquete. Adems del estndar, existen otros paquetes de utilizacin
general y tambin los diseadores que trabajan con VHDL pueden definir sus
propios paquetes, lo que les permite reutilizar diseos realizados anteriormente
como parte de nuevos diseos.
VENTAJAS:
Algunas ventajas del uso de VHDL para la descripcin hardware son:
VHDL permite disear, modelar, y comprobar un sistema desde un alto
nivel de abstraccin bajando hasta el nivel de definicin estructural de
puertas.
Circuitos descritos utilizando VHDL, siguiendo unas guas para sntesis,
pueden ser utilizados por herramientas de sntesis para crear
implementaciones de diseos a nivel de puertas.
Modularidad: VHDL permite dividir o descomponer un diseo hardware y
su descripcin VHDL en unidades ms pequeas.
- EJEMPLOS

1. Cuando las entradas a, b, c sean bajas o altas su salida debe ser


uno (1), adems cuando a y b son altas su salidas deben ser uno
(1) y cuando b y c sean altas su salida cera cero (0); mientras tanto
ser cero (0).

a b c f(a,b,c)
0 0 0 1
0 0 1 0
0 1 0 0
0 1 1 1
1 0 0 0
1 0 1 0
1 1 0 1
1 1 1 1

PROGRACION EN LENGUAJE VHDL

;
. __1164. ;
1
(, , : _;
: _);
;
_1 1

<= 1 ( = 0 = 0 = 0)
1 ( = 0 = 1 = 1)
1 ( = 1 = 1 = 0)
1 ( = 1 = 1 = 1)
0;
_1;
2. (, , , , )

a b c f(a,b,c)
0 0 0 1
0 0 1 1
0 1 0 0
0 1 1 1
1 0 0 0
1 0 1 1
1 1 0 0
1 1 1 1

PROGRACION EN LENGUAJE VHDL

;
. __1164. ;
2
(, , : _;
: _);
2;
_2 2

<= 1 ( = 0 = 0 = 0)
1 ( = 0 = 0 = 1)
1 ( = 0 = 1 = 1)
1 ( = 1 = 0 = 1)
1 ( = 1 = 1 = 1)
0;
_2;
3. MULTIPLEXOR
1) Se procede a la implementacin de una tabla de verdad, en la cual se aprecian los
valores de la salida dependiendo del valor de la seal de control y de la seal de
habilitacin (enable):
Ejemplos de explicacin:
1-.Si el Enable est en alto activo, el circuito est apagado.
2-.Si el Enable est en bajo activo, el circuito funciona y selecciona la entrada atribuida
a la seal de control.

ENABLE D1 D0 S0 Z
0 0 0 0 0
0 0 0 1 0
0 0 1 0 1
0 0 1 1 0
0 1 0 0 0
0 1 0 1 1
0 1 1 0 1
0 1 1 1 1
1 X X X 0

(, , , )
PROGRACION EN LENGUAJE VHDL

;
. . __1164. ;
41
(: __(3 0);
: __(1 0);
: _;
: _);
4;
41

(, , )

= 1 ;

<= 0;


00 => <= (0);
01 => <= (1);
10 => <= (2);
11 => <= (3);
=> <= (3);
;
;
;
;
4. DECODIFICADOR

DECODIFICADOR DE BCD A 7-SEGMENTOS

SALIDAS EN ACTIVO - BAJO

CODIGO BCD (A) SEGMENTOS DEL DISPLAY (D)


D6 D5 D4 D3 D2 D1 D0
A3 A2 A1 A0
a b c d e f g
0 0 0 0 0 0 0 0 0 0 1
0 0 0 1 1 0 0 1 1 1 1
0 0 1 0 0 0 1 0 0 1 0
0 0 1 1 0 0 0 0 1 1 0
0 1 0 0 1 0 0 1 1 0 0
0 1 0 1 0 1 0 0 1 0 0
0 1 1 0 0 1 0 0 0 0 0
0 1 1 1 0 0 0 1 1 1 0
1 0 0 0 0 0 0 0 0 0 0
1 0 0 1 0 0 0 0 1 0 0
PROGRAMACION EN LENGUAJE VHDL

( )
;
. __1164. ;
_7
(: __ (3 0);
: __ (6 0));
_7;
_7

()

0000 => <= 0000001;
0001 => <= 1001111;
0010 => <= 0010010;
0011 => <= 0000110;
0100 => <= 1001100;
0101 => <= 0100100;
0110 => <= 0100000;
0111 => <= 0001110;
1000 => <= 0000000;
1001 => <= 0000100;
=> <= 1111111;
;
;
;