Está en la página 1de 24

FPGA (FIELD PROGRAMMABLE GATE ARRAY)

CONCEPTO:

Es un dispositivo semiconductor que contiene bloques de


lgica que se pueden reprogramar en tiempo de ejecucin.
Los FPGA (Field Programmable Gate Array) son circuitos lgicos
programables directamente por el usuario, lo cual requiere de
herramientas de costo relativamente bajo, como lo son el software de
desarrollo y el dispositivo grabador. La grabacin o programacin de
uno de estos dispositivos se puede llevar a cabo en milisegundos.
Cada FPGA contendr un nmero grande de estos bloques.
Un FPGA est compuesto por un gran nmero de bloques lgicos
islas rodeados por un mar de interconexiones programables.
Adems, suele haber interconexiones globales de alta velocidad que
atraviesan todo el chip.
Y, entradas/salidas.

Estructura de una FPGA


Dependiendo del fabricante nos podemos encontrar con diferentes
soluciones. Las FPGAs que existen actualmente en el mercado,
dependiendo de la estructura que adoptan los bloques lgicos que
tengan definidos, se pueden clasificar como pertenecientes a cuatro
grandes familias.

FPGA, Tipos de familias


1.
2.
3.
4.

Matriz simtrica (symmetrical Array), XILINX


Basada en columnas (Row-Based), ACTEL
Mar de puertas (Sea-of-Gates), ORCA
PLD jerrquico (Hierarchical PLD), ALTERA o CPLDs de XILINX

Arquitectura general de un FPGA


Un FPGA consiste en arreglos de varios bloques programables (bloques
lgicos) los cuales estn interconectados entre s y con celdas de
entrada/salida mediante canales de conexin vertical y horizontal.
En general, se puede decir que posee una estructura bastante regular,
aunque el bloque lgico y la arquitectura de rutado varan de un
fabricante a otro.

Arquitectura bsica de un FPGA

Bloques Lgicos:
El bloque lgico consta de una parte combinacional, que permite
implementar funciones lgicas booleanas, ms una parte secuencial que
permite sincronizar la salida con una seal de reloj externa e
implementar registros.
La parte combinacional vara de un fabricante a otro. A continuacin,
explicaremos dos de ellas, representativas porque poseen unas
prestaciones opuestas.

Bloque lgico basado en LUT (look-up table): Una LUT es un


componente de clulas de memoria SRAM que almacena una tabla
de verdad.

Las direcciones de las clulas son las entradas de la funcin lgica


que queremos implementar, y en cada celda de memoria se guardan
el resultado para una de las combinaciones de las entradas.
Veamos un ejemplo. Supongamos que queremos implementar la funcin
lgica de tres entradas f = X. Y + Z. La figura indica cul debe ser el
contenido de una LUT de 8 x 1.

Ejemplo de implementacin de una funcin lgica


de tres entradas en una LUT de 8 x 1

Bloque lgico basado en multiplexores: El bloque lgico basado en


multiplexores, se caracteriza porque requiere mucha menos lgica que el
anterior basado en una LUT, y, en consecuencia, ocupa mucha menos
rea. De este modo, se pueden implementar mayor nmero de bloques
lgicos en el mismo espacio, o, para el mismo nmero de bloques,
disponer de ms espacio para incrementar los recursos de rutado.

Interconexin entre bloques programables:


Adems de los bloques programables tambin es importante la
tecnologa utilizada para crear las conexiones entre los canales
(tecnologa de programacin). Las ms importantes son las siguientes:
1. Antifusible (Antifuse): Al igual que la tecnologa PROM (memoria de
solo lectura programable), un FPGA que utiliza este tipo de tecnologa
slo se puede programar una sola vez, y utilizan algo similar a un
fusible para las conexiones. Una vez que es programado ya no se
puede recuperar. La diferencia entre un fusible y un antifusible es que
el primero se desactiva deshabilitando la conexin, en cambio, para
el segundo se produce una conexin cuando son programados, por lo
que normalmente se encuentran abiertos.
2. SRAM (StaticRAM): Estas guardan la configuracin del circuito. Esto
quiere decir que las SRAM son utilizadas como generadores de
funciones y adems son usadas para controlar multiplexores (que
estn incluidos en los FPGAs) y la interconexin entre bloques.
3. Flash: Las FPGAs basadas en celdas Flash recogen las ventajas
principales de las dos tcnicas anteriores situndose en un punto
intermedio. Su tamao es bastante ms reducido que el de una celda
de SRAM, aunque sin llegar al tamao reducido de un antifusible; son
reprogramables, aunque la velocidad de programacin es bastante
ms lenta que en el caso de una SRAM; y son no voltiles, por lo que
no necesitan un dispositivos auxiliar para guardar la configuracin
interna, como en el caso de la SRAM

Bloques entrada/salida
La funcin de un bloque de entrada/salida es permitir el paso de una
seal hacia dentro o hacia el exterior del dispositivo. Adems debe
contar con recursos tales como:
Salidas configurables como TRI-STATE u open-collector.
Entradas con posibilidad de pull-up o pull-down programables.
Registros de salida.
Registros de entrada.

Bloque entrada/salida (IOB) de XC4000

Arquitectura de los Dispositivos FPGAs de Xilinx


En este punto se describir la estructura interna bsica que utiliza Xilinx
para sus modelos ms utilizados de FPGAs. Los dispositivos que se van a
abarcar utilizan tecnologa SRAM para su programacin, y a esta
memoria se le mencionar en adelante como celdas de configuracin.
Los FPGAs de Xilinx constan de una cuadrcula de bloques lgicos
programables (CLBs o bloques programables como se mencion
anteriormente). Tanto como los bloques lgicos como la estructura de
interconexin se pueden programar cargando desde una fuente externa
valores a las celdas de configuracin.

Arquitectura bsica de una FPGA de Xilinx

Las celdas de configuracin controlan la lgica y la interconexin que


realizan la funcin de aplicacin del FPGA. No hay un rea de RAM
separada en el chip, sino que las celdas de configuracin estn
distribuidas en el chip. En los bordes, rodeando los bloques lgicos hay
bloques de entrada/salida configurables (IOBs).
Los bloques bsicos que componen un FPGA de Xilinx son:
1. CLBs (Configurable Logic Block)
2. IOBs (Input Output Block)
3. Estructura de interconexin

FPGA, elementos bsicos en las FPGAs de Xilinx (Spartam/XC4000

Bloques Lgicos (CLBs)


Como dijimos en la explicacin sobre las FPGAs, el bloque lgico consta
de una parte combinacional, que permite implementar funciones lgicas
booleanas, ms una parte secuencial que permite sincronizar la salida
con una sea de reloj externa e implementar registros.
En el caso de Xilinx, la parte combinacional se realiza mediante tablas de
look-up. (LUTs). Estas tablas se encuentran en las celdas de
configuracin (SRAM) que corresponde, por lo tanto, a la tabla de verdad
de la implementacin lgica. La cantidad de estas LUT depender del
tipo de familia de dispositivos FPGA Xilinx utilizada.
Adems se aaden componentes tales como flip-flops, multiplexores,
buffers etc. Estos componentes estn en posiciones fijas del dispositivo,
y al igual que las LUTs, la cantidad depende de la familia utilizada.

FPGA, bloques lgicos configurables (CLBs)

Bloques de entrada/salida (IOB)


Estos bloques conectan el circuito con el exterior. Dichos bloques ofrecen
salidas de tres estados y sirven para almacenar temporalmente las
seales de entrada y salida.

FPGA, bloques de entrada/salida (IOBs)

Lneas de interconexin:
Constituyen un conjunto de caminos que permiten conectar las entradas y salidas de
los diferentes bloques.
Estn constituidas por lneas metlicas de dos capas que recorren horizontal y
verticalmente las filas y columnas existentes entre los CLBs.

Tipo de lneas de interconexin:


Lneas de propsito general
Conjunto de lneas horizontales y verticales conectadas a una
matriz de interconexin.

Lneas directas
Lneas de conexin directa entre bloques, sin tener que pasar por
ninguna matriz de interconexin. Proporcionan la implementacin ms
eficiente de redes entre CLBs e IOBs adyacentes, al introducir retardos
mnimos y no usar recursos generales (SM).

Lneas largas
Lneas conductoras de seal de gran longitud que atraviesan la FPGA de
arriba abajo y de izquierda a derecha.

HDL, Lenguaje de descripcin de hardware


Un lenguaje para mquinas, segn la real academia de la lengua
espaola es un Conjunto de instrucciones codificadas que una
computadora puede interpretar y ejecutar directamente.. No
obstante, cuando aplicamos el trmino lenguaje a los lenguajes de
descripcin de hardware la definicin de lenguaje, seria El conjunto
de operaciones codificadas que una mquina puede ejecutar
directamente.
HDL es el acrnimo de Hardware Description Language (Lenguaje de
Descripcin de Hardware). Son lenguajes de programacin en los que
el objetivo es programar un circuito electrnico.
El flujo de diseo es:
1. Definir la tarea o tareas que tiene que hacer el circuito.

2. Escribir el programa usando un lenguaje HDL.


3. Comprobacin de la sintaxis y simulacin del programa.
4. Programacin del dispositivo y comprobacin del funcionamiento.

HDL, flujo de diseo


Un rasgo comn a estos lenguajes suele ser la independencia del
hardware y la modularidad o jerarqua, es decir, una vez hecho un diseo
ste puede ser usado dentro de otro diseo ms complicado y con otro
dispositivo compatible.

Tipos de HDLs:
Hoy en da existen una gran infinidad de HDLs, no obstante, como ocurre
con otros lenguajes de programacin, se pueden agrupar en dos grandes
grupos, segn su nivel de abstraccin para desarrollar las aplicaciones y
segn su grado de sntesis.

Lenguajes de programacin de nivel bajo:


Sntesis alta (HLS):

Verilog
VHL
ABEL
Lenguajes de programacin de nivel alto (Diseo ESL):

Sntesis baja (LLS):

SystemC

Sntesis alta (HLS):

Handel-C

COMPARACIN ENTRE AHDL Y VHDL


VHDL no es un lenguaje nuevo. El Departamento de Defensa de los
Estados Unidos lo desarrollo a principios de la dcada de 1980 como una

forma concisa de documentar los diseos en el proyecto de circuitos


integrados de muy alta velocidad (VHSIC). Como era demasiado adjuntar
HDL a este acrnimo (incluso hasta para los militares), el lenguaje se
abrevio como VHDL. Se desarrollaron programas de computadora para
tomar los archivos de lenguaje VHDL y simular la operacin de los
circuitos. Con el crecimiento de los dispositivos logicos programables
complejos en los sistemas digitales, VHDL ha evolucionado para
convertirse en uno de los principales lenguajes de descripcion de
hardware de alto nivel para disenar e implementar circuitos digitales
(sintesis). El IEEE estandarizo este lenguaje, con lo cual se hizo atractivo
para los ingenieros, asi como para los fabricantes de herramientas de
software que traducen los disenos a los patrones de bits utilizados para
programar los dispositivos reales.
AHDL es un lenguaje desarrollado por Altera Corporation para ofrecer
una forma conveniente de configurar los dispositivos logicos que ofrecen.
Altera fue una de las primeras compaas en introducir dispositivos
lgicos que pueden reconfigurarse mediante electrnica. A estos
dispositivos se les conoce como dispositivos lgicos programables
(PLDs). A diferencia del VHDL, este lenguaje no esta disenado para
usarse como un lenguaje universal para describir cualquier circuito
logico, sino para programar sistemas digitales complejos en PLDs de
Altera, en un lenguaje que se perciba en general como mas sencillo de
aprender, pero que es muy similar al VHDL. Tambien cuenta con
caracteristicas que aprovechan por completo la arquitectura de los
dispositivos de Altera. En todos los ejemplos de este libro utilizaremos el
software Altera MAX _PLUS II o Quartus II para desarrollar archivos de
diseno en AHDL y VHDL.
Podra ver la ventaja de usar el sistema de desarrollo de Altera para
ambos lenguajes cuando programe un dispositivo real. El sistema de
Altera facilita el desarrollo de circuitos en forma considerable; ademas,
contiene todas las herramientas necesarias para traducir el archivo de
diseno de HDL a uno listo para cargarse en un PLD de Altera.

VHDL:
VHDL Acrnimo de VHSIC (Very High Speed Integrated Circuit) HDL,
es un lenguaje para el modelado y sntesis automtica de circuitos. Es
un lenguaje basado en ADA. Permite describir la funcionalidad y la
organizacin de sistemas hardware digitales, placas de circuitos y
componentes.
VHDL es un lenguaje que fue diseado inicialmente para ser usado en
el modelado de sistemas digitales. Es por esta razn que su
utilizacin en sntesis no es inmediata, aunque lo cierto es que la
sofisticacin de las herramientas actuales de sntesis es tal, que
permiten implementar diseos especificados en un alto nivel de

abstraccin. La sntesis a partir de VHDL constituye hoy en da una de


las principales aplicaciones del lenguaje con una gran demanda de
uso. Las herramientas de sntesis basadas en el lenguaje permiten en
la actualidad ganancias importantes en la productividad de diseo.
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.

Al estar basado en un estndar (IEEE Std 1076-1987) los ingenieros de toda la


industria de diseo pueden usar este lenguaje para minimizar errores de
comunicacin y problemas de compatibilidad.

VHDL permite diseo Top-Down, esto es, permite describir (modelado) el


comportamiento de los bloques de alto nivel, analizndolos (simulacin), y refinar
la funcionalidad de alto nivel requerida antes de llegar a niveles ms bajos de
abstraccin de la implementacin del diseo.

Modularidad: VHDL permite dividir o descomponer un diseo hardware y su


descripcin VHDL en unidades ms pequeas.

Ventajas del VHDL


Notacin Estandarizada
Disponibilidad al Pblico
Independencia del Sistema de Desarrollo
Independencia de la Metodologa de Diseo (PLDs, ASICs, FPGAs)
Independencia de la Tecnologa y Proceso de Fabricacin (CMOS, Bipolar, BiCMOS)
Reutilizacin de Cdigo
Capacidad descriptiva del comportamiento del sistema en distintos niveles de abstraccin:
Algortmico, RTL (Register Transfer Logic) o concurrente, estructural (Lgico), Netlist.
Facilitar la Verificacin/Prueba y puesta a punto del sistema a disear.

ensin analgica (IEEE1076.1) que permite la especificacin, simulacin y sntesis de sistemas digitales, ana

Elementos sintcticos del VHDL

Se consideran comentarios despus de dos guiones medios seguidos --.

Comentarios

speciales

Existen caracteres especiales sencillos como (&, #, +, *, =) o dobles como (

Identificadores

Es lo que se usa para dar nombre a los diferentes objetos del lenguaje.

Se considera que se encuentra en base 10, se admite la notacin cientfica conven


osible definir nmeros en otras bases utilizando el smbolo # : 2#11000100#

Caracteres
Cadenas

Es cualquier letra o carcter entre comillas simples: 3, t

Son un conjunto de caracteres englobados por comillas dobles: hola

en realidad tipo carcter y arreglo de caracteres respectivamente, se coloca un pre

bras reservadas

Son lasEntidad
instrucciones,
rdenes y elementos que permiten definir sentenc
(entity) Bloque elemental de diseo

Circuitos elementales digitales que forman de manera individual o en conjunto


un sistema digital

Ejemplos: Compuertas, Flip-Flops, Sumadores/Restadores, Multiplexores, Contadores,


Multiplicadores, ALUs, Neurona-Digital, etc.

Declaracin de una entidad Consiste en la descripcin de los


puertos de entrada o salida de un circuito, el cual es identificado como
una entidad (entity)

Ejemplo-1: Sumador
Cin
Puertos de Entrada

Entidad
Sumador

Cout
Puertos de Salida
SUMA

Paquetes predefinidos comnmente utilizados


Standard
Standard

Contiene tipos bsicos: bit, bit_vector, integer

Paquete incluido por omisin.

Define los tipos: std_logic, std_ulogic, std_logic_vector,


std_ulogic_vector

IEEE
std_logic_116
4

numeric_bit

numeric_std

Define funciones de conversin basadas sobre estos tipos.

Define tipos de vectores signados y no-signados basados en e


bit y todos los operadores aritmticos sobre estos tipos.

Define funciones extendidas y de conversin para dichos tipos

Define tipos de vectores signados y no-signados basados en el tipo


std_logic. Paquete equivalente al Paquete std_logic_arith

Synopsys
std_logic_arith

Define tipos de vectores signados y no-signados, y todos los


operadores aritmticos sobre estos tipos.

Define funciones extendidas y de conversin para dichos tipos

std_logic_unsi
gned

Define operadores aritmticos sobre el tipo std_ulogic_vector y


considera como operadores no-signados.

std_logic_sign
ed

Define operadores aritmticos sobre el tipo std_logic_vector y


considera como operadores signados.

std_logic_misc

Define tipos, subtipos, constantes y funciones complementario


el paquete std_logic_1164.

Arquitectura (architecture):
Unidad de Diseo Secundaria que describe el comportamiento interno de
una entidad.
Cmo? - A travs de la programacin de varios procedimientos que
permitan que la entidad (entity) cumpla con las condiciones de
operacin o comportamiento deseadas.

SIMULACIONES DE LAS SIGUIENTES ECUACIONES BOOLEANAS:


EXPRESION BOOLENA #1:

C=

( A 0 B 0)(C 0 D 0)

DISEO DEL CIRCUITO LOGICO EN EL SOFTWARE QUARTUS II:

TABA DE VERDAD:
A0

B0

C0

D0

C=

( A 0 B 0)(C 0 D 0)
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1

0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1

DIAGRAMA DE TIEMPO:

0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1

1
0
0
1
0
0
0
0
0
0
0
0
1
0
0
1

TAMBIEN EN PROGRAMACION HDL:


TIPO DE ARCHIVO VHDL
EN DONDE DESPUES SE COMPILA Y CARGA EN LA TARJETA FPGA

SE GENERA A SIGUIENTE PROGRAMACION:

PROGRAMACION:

-- Copyright (C) 1991-2016 Altera Corporation. All rights reserved.


-- Your use of Altera Corporation's design tools, logic functions
-- and other software and tools, and its AMPP partner logic
-- functions, and any output files from any of the foregoing
-- (including device programming or simulation files), and any
-- associated documentation or information are expressly subject
-- to the terms and conditions of the Altera Program License
-- Subscription Agreement, the Altera Quartus Prime License Agreement,
-- the Altera MegaCore Function License Agreement, or other
-- applicable license agreement, including, without limitation,
-- that your use is for the sole purpose of programming logic
-- devices manufactured by Altera and sold by Altera or its
-- authorized distributors. Please refer to the applicable
-- agreement for further details.

-- PROGRAM

"Quartus Prime"

-- VERSION

"Version 16.0.0 Build 211 04/27/2016 SJ Lite Edition"

-- CREATED

"Tue Jul 12 14:56:23 2016"

LIBRARY ieee;
USE ieee.std_logic_1164.all;
LIBRARY work;
ENTITY simulacion1 IS
PORT
(
a0 : IN STD_LOGIC;
b0 : IN STD_LOGIC;
c0 : IN STD_LOGIC;
d0 : IN STD_LOGIC;
c : OUT STD_LOGIC
);

END simulacion1;

ARCHITECTURE bdf_type OF simulacion1 IS

SIGNAL

SYNTHESIZED_WIRE_0 : STD_LOGIC;

SIGNAL

SYNTHESIZED_WIRE_1 : STD_LOGIC;

BEGIN
SYNTHESIZED_WIRE_0 <= NOT(a0 XOR b0);
SYNTHESIZED_WIRE_1 <= NOT(c0 XOR d0);
c <= SYNTHESIZED_WIRE_0 AND SYNTHESIZED_WIRE_1;

END bdf_type;

EXPRESION BOOLEANA #2:

+ D)

X =( A B ) ( BC

TABLA DE VERDAD PARA S:

S=

+D

BC

0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1

0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
DIAGRAMA DE TIEMPO:

0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1

0
0
0
0
1
1
0
1
0
0
0
0
0
0
0
0

B)
)

PROGRAMACION EN QUARTUS II:

PROGRAMACION:
-- Copyright (C) 1991-2016 Altera Corporation. All rights reserved.
-- Your use of Altera Corporation's design tools, logic functions
-- and other software and tools, and its AMPP partner logic
-- functions, and any output files from any of the foregoing
-- (including device programming or simulation files), and any
-- associated documentation or information are expressly subject
-- to the terms and conditions of the Altera Program License
-- Subscription Agreement, the Altera Quartus Prime License Agreement,
-- the Altera MegaCore Function License Agreement, or other
-- applicable license agreement, including, without limitation,
-- that your use is for the sole purpose of programming logic
-- devices manufactured by Altera and sold by Altera or its
-- authorized distributors. Please refer to the applicable
-- agreement for further details.

-- PROGRAM

"Quartus Prime"

-- VERSION

"Version 16.0.0 Build 211 04/27/2016 SJ Lite Edition"

-- CREATED

"Tue Jul 12 17:52:00 2016"

LIBRARY ieee;
USE ieee.std_logic_1164.all;
LIBRARY work;
ENTITY SIMULACION3 IS
PORT
(
A : IN STD_LOGIC;
B : IN STD_LOGIC;
C : IN STD_LOGIC;
D : IN STD_LOGIC;
S : OUT STD_LOGIC
);
END SIMULACION3;
ARCHITECTURE bdf_type OF SIMULACION3 IS
SIGNAL

SYNTHESIZED_WIRE_0 : STD_LOGIC;

SIGNAL

SYNTHESIZED_WIRE_1 : STD_LOGIC;

SIGNAL

SYNTHESIZED_WIRE_2 : STD_LOGIC;

SIGNAL

SYNTHESIZED_WIRE_3 : STD_LOGIC;

SIGNAL

SYNTHESIZED_WIRE_4 : STD_LOGIC;

BEGIN

SYNTHESIZED_WIRE_0 <= NOT(A);

SYNTHESIZED_WIRE_1 <= NOT(D);

SYNTHESIZED_WIRE_2 <= NOT(C AND B);


SYNTHESIZED_WIRE_3 <= SYNTHESIZED_WIRE_0 XOR B;

SYNTHESIZED_WIRE_4 <= SYNTHESIZED_WIRE_1 OR


SYNTHESIZED_WIRE_2;

S <= SYNTHESIZED_WIRE_3 AND SYNTHESIZED_WIRE_4;

END bdf_type;

También podría gustarte