You are on page 1of 36

ESCUELA SUPERIOR POLITECNICA DEL LITORAL

FACULTAD DE INGENIERIA EN ELECTRICIDAD Y COMPUTACIN

LABORATORIO DE SISTEMAS
DIGITALES
Ing. Ludmila Gorenkova Labicova

Fundamentos de CPLDs y FPGAs

Manual de Laboratorio de Sistemas Digitales,

Publicacin interna ESPOL.


Versin original:
Ing. Ludmila Gorenkova, Ing. Ronald Ponguillo

Reimpresin y actualizacin:
Ing. Ronald Ponguillo Intriago
Octubre de 2014

Introduccin.
Una variedad de dispositivos esta disponible para la implementacin de diseos de
lgica digital. La Fig. 1.1 muestra la clasificacin general de tecnologas de Lgica
Digital.

Fig. 1.1. Clasificacin de las tecnologas de Lgica Digital.

Los circuitos integrados (chips) estndar tales como SSI y MSI TTL y CMOS realizan
funciones fijas (registro, decodificador, multiplexor, etc.) definidas por el fabricante.
Pero se puede construir chips que tienen una circuitera que puede ser configurada por
el usuario para implementar un amplio rango de circuitos lgicos diferentes.
Lgica Programable y Circuitos Integrados de Aplicacin Especfica (ASICs) son
circuitos integrados cuya funcin interna es definida por el usuario. Los PLDs (SPLDs),
FPGAs y CPLDs requieren la configuracin o programacin por parte del usuario para
realizar la operacin deseada. Los ASICs son configurados por los fabricantes pero
con las funciones definidas por el usuario.

La Fig. 1.2 muestra la relacin entre costo y tiempo de desarrollo de un nuevo


producto y su velocidad, densidad y volumen de produccin.
El desarrollo de un diseo como producto Full Custom VLSI puede requerir algunos
aos de esfuerzo para disear y probar el dispositivo. Un trabajo tan caro solo se
justifica para un volumen muy grande de dispositivos.
Los circuitos integrados de los microprocesadores y las memorias RAM usadas en
computadoras personales son ejemplos de dispositivos Full Custom.

Fig. 1.2. Relaciones de tecnologa de lgica digital.

Los dispositivos ASICs requieren algunos meses para su desarrollo y demandan


esfuerzo adicional por parte de usuario para su prueba. Cualquier error en el diseo
del chip va a conducir a una demora y costo adicional.
Pero para los productos con largo tiempo de uso y grandes volmenes de produccin
este mtodo tiene un costo por unidad mas bajo que CPLDs o FPGAs.
Aunque ltimamente ms altas densidades, ms altas velocidades y ventajas de costo
han permitido el uso de CPLDs y FPGAs en una amplia variedad de diseos.
Los diseos con CPLDs y FPGAs requieren tpicamente algunas semanas de trabajo
de los ingenieros en vez de meses o aos.
Los diseos ASICs y Full Custom aceptan frecuencias de Clock ms rpidas y usan
menores reas del chip que CPLDs y FPGAs ya que ellos son hardwired y, por lo
tanto, los retardos de propagacin en las interconexiones son optimizados. Por otro
lado para muchos diseos sobre todo de tipo acadmico las frecuencias de Clock del
rango de 50 400 MHz que usan CPLDs y FPGAs de las series ms bsicas son
suficiente.
Los CI de Lgica Programable pueden ser clasificados de la siguiente manera:
-

PLDs (Dispositivos Lgicos Programables Simples):


ROM (AND fijo, OR programable)
PAL (AND programable, OR fijo)
PLA (AND programable, OR programable)

CPLD (Dispositivos Lgicos Programables Complejos)

FPGA (Arreglos de Puertas Programables por Campos).

Los PLDs son un conjunto de puertas AND cuyas salidas son conectados a un
conjunto de puertas OR.

El tamao de CPLDs y FPGAs se describe tpicamente en funcin de mximo nmero


de puertas NAND de dos entradas. Puerta NAND de dos entradas se utiliza como
unidad de tamao estimada.

Los

CPLDs

FPGAs

comerciales

estn

disponibles

en

varios

tipos

de

empaquetamientos.

a.

b.

c.

Fig. 1.3. Ejemplos de tipos de empaquetamiento de los CPLD y FPGA.


a. Altera MAX CPLD esta empaquetado como PLCC (plastic-leaded chip carrier).

b. Altera FLEX FPGA esta empaquetado como PQFP (plastic quad flat pack).
Existe una variacin de este tipo de empaquetamiento TQFP (thin quad flat pack).

c. Xilinx FPGA esta en paquete PGA (pin grid array) que puede tener mas de cien
pines.

Y hay un nuevo tipo de empaquetamiento conocido como BGA (ball grid array).
BGA es similar a PGA pero los pines largos son remplazados por pequeas bolitas.
Este tipo de empaquetamiento puede tener aun mas entradas.

1.

CPLD (Complex Programmable Logic Device).

CPLD es una coleccin de los PLDs individuales dentro de un chip, acompaada por
una estructura programable de interconexin que permite a los PLDs

estar

conectados entre si dentro del chip de la misma manera que un diseador puede hacer
con los PLDs discretos.

Diferentes fabricantes tienen diferentes maneras de implementar la estructura general.


La gran cantidad de formas en que se puede elevar la complejidad de los CPLDs da
lugar a arquitecturas diferentes, orientadas a un cierto campo de aplicaciones cada
una.

En los CPLDs usualmente se utiliza el termino macrocelda para referirse a la puerta


OR combinada con la circuiteria adicional (FFs, Mux, buffers de tres estados).

Fig. 1.4. Arquitectura general de un CPLD.


Pueden ser implementados de diferente manera tanto los Bloques Lgicos, como los
Bloques de Entrada/Salida e Interconexiones Programables (CPLDs con
macroceldas complejas, CPLDs con bloques lgicos complejos, CPLDs con recursos
lgicos adicionales, CPLDs con recursos de interconexin distribuidos, etc.).

1.1.

Bloques de Arreglos Lgicos (LAB) / Bloques Funcionales (FB).

La Fig. 1.5 muestra un CPLD formado por cuatro LAB (Altera) / FB (Xilinx) tipo PAL
(PLA) que son conectados por un conjunto de interconectores.

Fig. 1.5. Estructura de un CPLD.


Cada Bloque Lgico PAL (PLA) es tambin conectado a un subcircuito llamado
Bloque de Entrada/Salida (I/O Block).
6

La cantidad de bloques lgicos que puede tener un CPLD depende de la familia y


fabricante del dispositivo.
Un CPLD comercial puede tener ms de 100 bloques LAB / FB.
La Fig. 1.6 presenta la estructura y conexiones de un bloque tipo PAL en un CPLD.

Fig. 1.6. Un LAB / FB del CPLD.

Este LAB / FB incluye 3 macroceldas (un CPLD real XC95288 de fabricante Xilinx
tiene 288 macroceldas en 16 bloque). Cada macrocelda tiene una puerta OR de
cuatro entradas (un CPLD real puede tener las puertas OR con hasta 20 entradas).
Las salidas de las puertas OR estn conectadas a las entradas de las puertas XOR.
Una de las entradas de los XOR puede ser programada para ser conectada a 0 o 1.
De esta manera en la salida XOR se obtiene la seal igual o inversa que en la salida
OR.
Las macroceldas tambin incluyen los FFs, multiplexores y buffers de tres estados. Los
FFs son usados para almacenar los valores producidos por las puertas OR. Los buffers
de tres estados actan como interruptores que permiten que cada terminal pueda ser
usado tanto como salida o como entrada. Para usar el terminal como la salida, el buffer
debe ser habilitado. Para usar el terminal como la entrada, el buffer de tres estados se
7

deshabilita. Entonces una seal externa puede ser aplicada al terminal y mandada a
otras macroceldas, ya que en este caso la macrocelda correspondiente a este terminal
no puede ser usada.

Por lo general un CPLD tiene macroceldas de entrada / salida y macroceldas de


entrada. Tambin puede tener macroceldas cuyas salidas son usadas solo
internamente llamadas macroceldas ocultas (buried macrocells).

Ejemplo:
La Fig. 1.7 presenta un Diagrama Esquemtico implementado con tres tipos de
elementos de almacenamiento.

Fig. 1.7. Ejemplo de segmento de un Diagrama Esquemtico.

Un latch es un flip-flop tipo D con disparo por nivel.


Un latch puede ser implementado de la manera indicada en la Fig. 1.8a.

a.

b.

Fig. 1.8. Ejemplos de implementacin de un latch.


8

Pero tambin puede ser implementado como suma de productos que tiene
realimentacin Fig. 1.8b.
Todo circuito de la Fig. 1.7 puede ser implementado en un CPLD de la manera
indicada en la Fig. 1.9.

Fig. 1.9.

1.2.

Implementacin del circuito de la Fig. 1.7 en un CPLD.

Matriz de Interconexiones Programables.

La Matriz de Interconexiones Programables (Programmable Interconect Matrix / PIM o


Programmable Interconect Array / PIA) permite unir los terminales de entrada/salida a
las entradas del bloque lgico, o las salidas de un bloque lgico a las entradas de otro
bloque lgico, o inclusive a las entradas del mismo bloque.
9

El elemento bsico de la PIM / PIA es un switch programable y borrable


elctricamente basado en el comportamiento del transistor EEPROM.

La Fig. 1.10a. presenta configuracin de un switch programable y la Fig.1.10b muestra


la estructura de un transistor EEPROM.

a.

b.

Fig. 1.10. Un switch programable y un transistor EEPROM.

El transistor EEPROM tiene dos puertas (Gate): el Gate normal y otro llamado floating
Gate. Se llama flotante porque esta rodeado por vidrio aislante y no esta conectado a
ninguna parte del transistor.
Cuando el transistor no esta programado la puerta flotante no tiene ningn efecto y el
transistor funciona como un transistor normal.
Durante de programacin se aplica a la puerta normal del transistor EEPROM un
voltaje bastante elevado (tpicamente Ve =12v). Esto causa la circulacin de una gran
corriente por el transistor. Una corriente tan alta hace que algunos electrones penetren
a travs del aislante y se queden atrapados bajo la puerta flotante.

Despus de la programacin los electrones atrapados repelen a los electrones que


tratan de pasar por el canal y mantiene el transistor abierto.
Para revertir el proceso (borrar), se aplica el voltaje del mismo valor que se usa en la
programacin pero de polaridad opuesta. Los electrones atrapados bajo al puerta
flotante regresan al canal por efecto tnel.

La mayora de los CPLDs usan dos configuraciones de PIM / PIA:

Interconexiones mediante arreglo

interconexiones mediante multiplexores.


10

La primera se basa en una matriz de filas y columnas con un switch programable en


cada interseccin. Este switch puede ser activado para conectar o desconectar la
correspondiente fila y columna. Esta configuracin permite una total interconexin
entre las entradas y salidas de los bloques lgicos.

En la interconexin mediante multiplexores existe un multiplexor por cada entrada al


bloque lgico. Las vas de interconexin programable son conectadas a las entradas
de un nmero fijo de multiplexores por cada bloque lgico. Las entradas de seleccin
de estos Mux son programadas para permitir que sea seleccionada nicamente una
va de la matriz de interconexiones por cada Mux.

Una tpica PIM / PIA es un compromiso entre las dos configuraciones. De su diseo
depende la velocidad, rea y costo de un CPLD. La solucin de este problema es
top secret y generalmente no es revelado por los fabricantes de los CPLDs.

1.3.

Bloques de Entrada/Salida (IOB).

Bloque de I/O podra considerarse parte del bloque lgico, pero no necesariamente
tiene que estar en la salida de un bloque lgico. La funcin de un IOB es permitir el
paso de una seal hacia dentro o hacia el exterior del dispositivo. Por lo tanto IOB
deben ser bidireccionales y deben poder manejar corrientes importantes.
Existen bsicamente dos tipos de IOB:

IOB elementales

IOB complejos

IOB elementales slo permiten definir si el pin ser de entrada, salida o bidireccional,
y cada IOB est asociado a un Bloque Lgico determinado.

IOB complejos cuentan con muchas opciones de configuracin y realizan algunas


tareas de sincronizacin de datos externos. Ellos no tienen una relacin
predeterminada con los Bloques Lgicos. Para vincularlos se usan los recursos de la
PIM.

11

Pero los IOB tambin contribuyen fuertemente a crear ciertos problemas de diseo
como retardos adicionales y picos de corriente de consumo y consiguiente ruido de la
fuente.

1.4.

Anlisis de un CPLD de Altera.

Altera MAX 7000.


Matriz de Arreglo Mltiple (Multiple Array MatriX) es una familia de CPLDs con 600 a
20 000 puertas. Estos dispositivos se configuran programando una memoria EEPROM
interna.
Existen las familias MAX 5000, MAX 7000, MAX 3000 y MAX 9000.

LAB Local Array


Global Global
Clear Clock
From I/O Pin
(E and S versions only)

Parallel
Expanders

PRN
D Q
ProductTerm
Select
Matrix

to PIA and
I/O Contol Block

EN
CLRN
A

Clock

Clear
Select

From PIA

Shared
Logic
Expanders

Fig. 1.11. Una macrocelda de la familia MAX 7000.

La familia MAX 7000 contiene de 600 a 5000 puertas equivalentes arreglados en 32 a


512 macroceldas del tipo mostrado en la Fig. 1.6.
Un MAX EPM7128SLC84-7 tiene 128 celdas. Si hay letra S presente en el nombre del
chip esto significa que es programable in-system. Las subfamilias MAX 7000S y MAX
7000E tienen posibilidad de control de la pendiente de seales de salida. La subfamilia
MAX 7000S tambin tiene opcin de salida en colector abierto.
12

Tienen diferentes tipos de empaquetamiento: PLCC, PGA, PQFP y TQFP.


Tambin tienen un bit programable de seguridad que impide la lectura de la
configuracin del PLD y as permite proteger la propiedad intelectual.

Hay cinco trminos de productos (puertas AND) que pueden ser conectados mediante
Product Term Select Matrix (matriz de seleccin de trminos de producto) a la puerta
OR. Esta OR puede ser configurada para usar solo los productos necesarios para
implementar la funcin deseada.
Cuando se requiere ms de cinco productos pueden ser utilizados productos
adicionales de otras macroceldas.

La puerta OR es conectada a travs de una XOR a un flip-flop programable.


El flip-flop tiene bypass, Enable, Clear y Preset y puede ser programado para
funcionar como flip-flop tipo D, tipo T, tipo JK o como SR latch.

La Fig. 1.12 muestra como trminos de productos pueden ser compartidas entre las
celdas.

Fig. 1.12. Interconexin entre macroceldas.

La puerta OR de una macrocelda incluye una entrada extra que puede ser conectada a
la salida de la puerta OR de la macrocelda que esta arriba. Esta caracterstica se llama
13

parallel expanders y es usada para funciones lgicas con hasta 20 trminos de


productos.

Si se requiere aun ms de trminos de productos, entonces se usa una caracterstica


llamada shared expanders.
Como muestra la Fig. 1.11, uno de los trminos de productos se invierte y se
realimenta a la matriz de trminos de productos.
Entonces usando el teorema de DeMorgan se produce una suma de trminos. Un
shared expander puede ser usado por cualquier macrocelda en el mismo LAB.
La arquitectura total de una MAX 7000 se presenta en la Fig.1.13.

Fig. 1.13. Arquitectura de CPLD MAX 7000.

Hay cuatro pines de entrada para propsitos especiales.


Dos de ellos pueden ser usados como entradas del Clock global (GCLK).
Otro pin puede ser usado como un Clear global (GCLRn) para todos los flip-flops.
Tambin hay una entrada de habilitacin de salidas OE.
Las macroceldas estn agrupadas en grupos de 16 para formar LABs. Cada LAB esta
conectado al PIA. El PIA es usado para conducir datos hacia o desde otros LABs o
14

desde los pines externos del dispositivo. Todas las conexiones entre macroceldas se
realizan a travs de PIA.

Cada LAB tambin esta conectado a un IOB.


Cada pin de I/O tiene un buffer de tres estados programable. Un pin del CPLD puede
ser programado para funcionar como entrada, salida con tri-state driver o como pin
bidireccional de tres estados.

La Fig. 1.14 presenta un IOB elemental de la familia MAX 7000.

Fig. 1.14. IOB elemental de la familia MAX 7000.

Cada IOB esta asociada a una macrocelda determinada.


Por medio del Mux se puede seleccionar una de las seales de control para que el pin
de I/O funcione solo como salida cuando buffer esta habilitado, solo como entrada
cuando buffer esta deshabilitado o como I/O bidireccional controlado por las entradas
externas OE.

Cada dispositivo MAX 7000 especifico esta disponible en un rango de velocidades.


Estas velocidades indican el retardo de propagacin desde un pin de entrada a travs
del PIA y una macrocelda a un pin de salida.

Por ejemplo, un chip EPM 7128S-7 tiene retardo de propagacin de 7.5 ns.
Si la funcin lgica implementada usa parallel o shared expanders, el retardo de
propagacin se incrementa.
15

1. 5. Anlisis de un CPLD de Xilinx.

Xilinx XC9500.
Los CPLDs de la familia XC9500 tienen similar arquitectura pero diferente numero de
terminales de entrada / salida externos y diferente cantidad de PLDs internos, que
Xilinx llama FB (Funcional Block). Por ejemplo, XC9536 tiene 2 FB y 36
macroceldas. Pero XC95288 tiene 16 FB y 288 macroceldas.
Otra importante caracterstica de esta familia es que cualquier dispositivo, por ejemplo,
XC95108 esta disponible en varios tipos de empaquetamientos. Esto es importante, ya
que en la mayora de las aplicaciones no es necesario que todas seales internas de
una mquina de estados o un subsistema sean visibles para ser usadas por el resto
del sistema. As que XC95108 tiene 69 pines I/O en empaquetamiento PLCC y 81
pines en empaquetamiento PQFP.
La Fig.1.15 presenta la configuracin de una macrocelda del XC9500. Igual como la
macrocelda de Altera tiene cinco trminos de producto (puertas AND) que pueden ser
conectados mediante Product Term Allocators que es una estructura equivalente a
Product Term Select Matrix de Altera y que permite que un termino de producto no
usado de una macrocelda puede ser usado por otra macrocelda del mismo FB.

Fig. 1.15. Una macrocelda del XC9500.


16

Los bloques rectangulares (S1-S8) son elementos de direccionamiento que conectan el


trmino de producto (AND) a una de sus dos o tres salidas. M1-M5 son multiplexores
programables para seleccionar una de sus entradas y pasar a la salida.
La salida superior de los elementos de direccionamiento S1-S5 esta conectada a la
puerta OR principal G4. Pero esto no significa que solo estn disponibles cinco
trminos de producto por macrocelda.
La entrada superior de OR G4 se conecta a otro OR G3 que recibe trminos de
producto desde macroceldas superior e inferior.
Cualquier trmino de producto no usado puede ser direccionado por medio de S1-S5
hacia la puerta OR G1 cuya salida puede ser direccionada hacia macroceldas superior
o inferior por medio de S8. Antes de esto, este trmino de producto puede combinarse
con trminos de productos superiores o inferiores por medio de S6, S7 y G2.
La puerta XOR G5 recibe suma de productos de OR G4 y su otra entrada puede recibir
0, 1 o un trmino de producto por medio de Mux M1. De esta manera la macrocelda
puede ser configurada para tener cualquier polaridad para fines de minimizacin de las
ecuaciones lgicas.
El flip-flop de cada macrocelda puede ser programado para funcionar como tipo D o
tipo T que se usa para implementar contadores.
Mux

M4

selecciona

una

entrada

de

Clock

entre

cuatro

fuentes:

tres entradas de Clock global o un trmino de producto. La eleccin de un trmino de


producto como Clock no es recomendable en los diseos sincrnicos con excepcin
de las aplicaciones de sincronizacin bien definidas.
El ltimo Mux M3 selecciona la salida de flip-flop o su dato de entrada para mandarlo a
la salida OUT. Esta seal es mandada a PIM o a IOB junto con un trmino de producto
seleccionado por S5 que puede ser usado como PTOE
(Product Term Output Enable) si es necesario.

La Fig. 1.16 muestra la estructura bsica de un FB del XC9500.

Fig.1.16. Arquitectura de un FB XC9500.


17

Cada FB de cualquier dispositivo de la familia XC9500 tiene 36 entradas que recibe de


PIM y 18 macroceldas y, por lo tanto, 18 salidas.

Las entradas a PIM son las 18 salidas de las macroceldas de cada FB y las mismas 18
salidas son mandadas al IOB.

La Fig. 1.17 muestra la arquitectura interna tpica de los CPLDs de la familia XC9500.

Fig. 1.17. Arquitectura de la familia XC9500.

Cada terminal externo I/O puede ser como una entrada, una salida o un pin
bidireccional.

Tambin hay pines de propsitos especiales.


Tres pines de Clock global (GCK).
Cada macrocelda puede ser programada para usar un Clock seleccionado.

Un pin puede ser usado como Set / Reset global (GSR) y cada macrocelda puede ser
programada para usar esta seal como un Preset o Clear asincrnico.
Finalmente, dos o cuatro pines pueden ser usados como Global three-state control
(GTS).
18

La arquitectura de IOB del XC9500 esta mostrada en la Fig. 1.18.

Fig.1.18. IOB de XC9500.


Por medio de Mux M0 se puede elegir una de las siete seales para habilitar el output
driver que es un buffer de tres estados.
Por lo tanto, output driver puede ser on si se desea utilizar el pin I/O como salida
como, puede ser off si el pin I/O se usa como entrada, puede ser controlado por el
PTOE de la macrocelda correspondiente o controlado por cualquiera de los cuatro
GTS.
Adems, hay tres controles ms:
Slew-rate control permite control de tiempo de subida y bajada de las seales de
salida. El tiempo ms rpido proporciona menores retardos de propagacin, mientras
19

el tiempo ms lento ayuda eliminar zumbido de lnea de transmisin y ruido de sistema


aadiendo un pequeo retardo adicional.
Pull-up resistor previene que los pines estn en el estado flotante en el momento de
prender la fuente de poder. Esto es muy til en casos cuando las salidas son usadas
para habilitar las entradas verdaderas bajas de otros circuitos lgicos que no deben
ser activados durante el encendido de la fuente.
User-programmable groud reasigna a un I/O pin para ser un pin de tierra. Esto es til
en aplicaciones de altas velocidades. Pines extra de tierra son necesarios para
manejar las altas corrientes dinmicas que circulan cuando mltiples salidas son
conmutadas simultneamente.
La familia XC9500 es compatible con dispositivos externos alimentados tanto con 5v
como con 3.3v. El buffer de entrada y la circuiteria interna funciona con 5v de
alimentacin (VCCINT). Dependiendo del voltaje de operacin de los dispositivos
externos output driver usa alimentacin de 5v o 3.3v (VCCIO).

La tabla presentada indica los nombres de los principales fabricantes de los CPLDs.

2.

FPGA (Field-Programmable Gate Array).

Una macrocelda representa como 20 puertas equivalentes y as que un CPLD grande


con 1000 macroceldas representa 20 000 puertas equivalentes.
Para estndares modernos un circuito lgico con 20 000 puertas no es muy grande.
Para implementar circuitos ms grandes es conveniente usar un dispositivo diferente.
Un FPGA es un dispositivo lgico configurable que puede implementar los circuitos
lgicos relativamente grandes.
20

Fig. 2.1. Arquitectura general de un FPGA.

Los FPGAs estn formados por tres elementos principales:

Bloques lgicos configurables / Bloques de Arreglo Lgico


Bloques de entrada/salida
Interconexiones programables

La mayor o menor concentracin de Bloques Lgicos se denomina granularidad. La


granularidad de un FPGA es elevada (fine grain) si posee un gran nmero de
Bloques Lgicos de reducida complejidad cada uno, y es baja en caso contrario.

2.1.

Bloques Lgicos Configurables (CLB) / (LAB).

Se distinguen tres grandes organizaciones de los bloques lgicos internos de los


FPGAs:

FPGA de organizacin tipo terraza, donde los bloques lgicos estn


dispuestos en filas separadas por los canales en los que se ubican los recursos
de interconexin horizontal.

La conexin entre los bloques lgicos y entre ellos y los bloque I/O se realiza
principalmente mediante recursos de interconexin horizontal. Existen tambien
recursos de interconexin vertical que facilitan la comunicacin entre los canales
horizontales y transmiten seales globales como Clock, etc. Los recursos de

21

interconexin vertical no se agrupan formando canales, sino que se distribuyen por


todo el circuito y se solapan con el resto de los elementos que lo forman.

FPGA de organizacin tipo cuadricula (Manhattan), donde los bloques


lgicos estn dispuestos en forma de filas y columnas delimitadas por los
recursos de interconexin que se extiende de forma vertical y horizontal entre
los bloques.

En este tipo de organizacin los recursos de interconexin vertical no se solapan


con los bloques lgicos sino que se distribuyen entre ellos.

22

FPGA de organizacin tipo mar de puertas, donde los bloques lgicos


tambien estn dispuestos en filas y columnas como en la cuadricula, pero los
recursos de interconexin se solapan con los bloques lgicos. Para ello los
recursos de interconexin se sitan en capas diferentes de las de los bloques
lgicos.

Este tipo de organizacin de los FPGAs tiene una gran densidad de los bloques
lgicos configurables porque la ausencia de los recursos de interconexin en la capa
de los bloques lgicos permite un mejor aprovechamiento del rea.
En el mercado existen muchos FPGAs que pueden utilizar diferentes tipos de
CLB (Xilinx) / LAB (Altera).
Ms comnmente se utilizan los que estn basados en LUT (lookup table) o tabla de
bsqueda que contiene celdas de almacenamiento.

Fig. 2.2. Una LUT de dos entradas.


23

Es fcil entender que es una LUT si imaginamos una tabla de verdad almacenada en
una memoria. Usualmente los LUT tienen cuatro o cinco entradas, por lo tanto 16 o 32
celdas de almacenamiento.
Las celdas de almacenamiento son celdas tipo SRAM. Cada celda puede almacenar
un 0 o un 1 lgico.
En las salidas de los LUT se conecta la circuiteria adicional. La Fig. 2.3 muestra como
un flip-flop puede ser incluido en un bloque lgico.

Fig. 2.3. Inclusin de un flip-flop en un bloque lgico.

El flip-flop es usado para almacenar en el la salida de LUT bajo control de Clock.

Como las celdas de almacenamiento son de tipo SRAM, la informacin se pierde


cuando se apaga la fuente de alimentacin. A menudo una pequea memoria PROM
que mantiene los datos se incluye en la misma tarjeta donde esta el FPGA. Cuando se
enciende la fuente de poder los datos se cargan automticamente desde PROM a las
celdas de almacenamiento de los LUT.

2.2.

Bloque de Entrada / Salida.

Los FPGAs solo utilizan los IOB / IOE (Elementos de I/O) tipo complejos.
Muy a menudo son aun ms complejos que los IOB de los CPLDs XC9500 de Xilinx.
Es decir, no hay una relacin predeterminada entre los bloques de I/O y las salidas de
los CLB / LAB.
Para vincularlas se usan los recursos de interconexin.
Se delegan a los bloques de I/O ciertas tareas de sincronizacin de datos externos.
Se cuenta con muchas opciones de configuracin, como control de slew rate, de
pullups o pulldowns, agregado de retardos, etctera.
24

2.3. Interconexiones programables.

Las

FPGAs

no

utilizan

tecnologa

EEPROM

para

implementar

los

switch

programables. En su lugar utilizan tambin las celdas SRAM para configurar los
alambres de interconexin. La Fig. 2.4 muestra una pequea seccin del FPGA.

Fig. 2.4. Switches de transistores de paso en una FPGA.


Una LUT genera en el alambre horizontal la seal f1. Para conectar esta seal con
algn alambre vertical se usa el switch programable. Cada switch es implementado
usando un transistor NMOS cuyo terminal Gate es controlado por una celda SRAM. Un
switch implementado de esta manera se conoce como un pass-transistor switch. Si
un 0 es almacenado en una celda SRAM, entonces el transistor NMOS
correspondiente a esta celda no esta conduciendo. Pero si en la celda SRAM se
almacena un 1, entonces transistor conduce y de esta manera se forma la conexin
entre los dos alambres conectados a los terminales Drain y Source del transistor.

2.4.

Anlisis de un FPGA de Altera.

Altera FLEX 10K.


Matriz de Elemento Lgico Flexible (Flexible Logic Element MatriX) es una familia de
dispositivos FPGA con 10 000 a 250 000 puertas lgicas equivalentes.
La Fig. 2.5 presenta un Elemento Lgico (LE) basado en LUT de un FPGA FLEX 10K.
Un LE tiene una LUT de cuatro entradas y un flip-flop que puede ser bypasseado.
Para la implementacin de sumadores aritmticos una LUT de cuatro entradas puede

25

ser usada para la implementacin de dos funciones de tres entradas que son
funciones de suma y transporte (carry) en un sumador completo.

Fig. 2.5. Arquitectura de un Elemento Lgico (LE) de un FLEX 10K.


Clock, Clear y Preset pueden ser configurados por la lgica interna o por un pin I/O
externo. El flip-flop puede ser configurado como flip-flop D, flip-flop T, flip-flop JK o
como SR latch (celda binaria).

Fig. 2.6. Un LAB de FLEX 10K.


26

La Fig. 2.6 muestra como los LE estn configuradas en un LAB.


Un LAB esta compuesta de ocho LE y puede recibir las seales provenientes tanto de
la fila adyacente de interconexiones (Row Interconnect) como de un conjunto de
interconexiones locales (LAB Local Interconnect).
Las seales de entradas de los LE provienen desde el conjunto de interconexiones
locales, que tambin recibe seales de salidas de los LE.
A su vez las salidas de los LE tambin se conectan a la columna y fila adyacente de
interconexiones

La Fig. 2.7 muestra la arquitectura total de un FLEX 10K que contiene un conjunto de
LABs, que a su vez contienen ocho LE basados en LUTs.
Adems, podemos observar la presencia de bloques adicionales EABs que son
Bloques de Arreglo Incrustado (embedded array block).
EAB es un bloque de SRAM que puede ser configurada para proporcionar una
memoria SRAM de varias dimensiones.
Los LABs y los EABs pueden ser interconectados usando las filas y columnas de
interconexiones.
Las filas y columnas de interconexiones tambin se utilizan para proporcionar
conexiones con terminales de entrada y salida del chip.

Fig. 2.7. Arquitectura de un FPGA FLEX 10K.


27

La Fig. 2.8 muestra la estructura de un EAB.

Fig. 2.8. Un EAB de FLEX 10K.

EAB contiene 2048 celdas de SRAM que pueden ser organizadas para proporcionar
un bloque de memoria de diferentes dimensiones: 256 x 8, 512 x 4, 1024 x 2 o
2048 x 1 bits.
Las entradas de direcciones (Address) y las entradas de datos (Data) para bloque de
memoria provienen de un conjunto de interconexiones locales (EAB Local
Interconnect).
Estas entradas y tambin la seal de habilitacin de escritura (WE) pueden
opcionalmente ser almacenadas en flip-flops. Las salidas de datos tambin pueden
opcionalmente ser almacenadas en flip-flop. En FPGAs muy grandes es posible
implementar un bloque de memoria grande combinando multiple EABs.

Los chips de FLEX 10K estn disponibles en el rango de tamaos de 10K 10 a


10K 250, es decir, de 10 000 a 250 000 puertas lgicas equivalentes.

28

Los FPGAs tambin estn disponibles en varias velocidades cuyos valores se indican
por medio de letra del sufijo, por ejemplo, FLEX 10K 10A. El nmero que va despus
de letra de sufijo indica grado de velocidad, por ejemplo, FLEX10K 10A-1.
A diferencia de los CPLDs el grado de velocidad para un FPGA no especifica un
retardo real de propagacin en nanosegundos. El grado de velocidad representa una
relativa velocidad dentro la familia de los FPGAs. Por ejemplo, el FLEX10K 10-1 es
mas rpido que FLEX10K 10-2. El retardo de propagacin real depende de la
complejidad del circuito que se desea implementar.

2.5.

Anlisis de un FPGA de Xilinx.

Xilinx XC4000.
La familia Xilinx XC4000 es una familia de los FPGAs con de 2 000 a 180 000 puertas
lgicas equivalentes.
La Fig. 2.9 presenta la estructura de bloque lgico configurable (CLB) del XC4000.

Fig. 2.9. CLB del XC4000 de Xilinx.

29

Cada CLB tiene tres LUT (lookup table) basadas en la memoria SRAM.
Las salidas de LUT G y F son funciones lgicas combinatoriales de cuatro variables.
Por medio de los mux programables M1 M3 las salidas G y F as como las entradas
adicionales C son direccionadas a las entradas de LUT H. La salida de LUT H es
entonces la funcin de tres variables.
Con apropiada programacin de los mux M7 M8 y M12 M13 las salidas de estas
tres LUTs pueden ser dirigidas a las salidas del CLB X e Y o pueden ser almacenadas
en flip-flops tipo D de disparo por flanco FF1 y FF2. Los flip-flops pueden usar el flanco
de subida o de bajada del CLK comn K que se seleccionan por medio de los mux M9
y M14. Los flip-flops tambin pueden usar la seal de habilitacin EN que se
selecciona por los mux M10 y M15.
Las salidas XQ e YQ son salidas de los flip-flops. Si un flip-flop no es usado en esta
CLB los mux M11 y M16 pueden seleccionar las salidas XQ YQ para las seales C
seleccionadas por medio de los mux M4 y M6.
Un FPGA de la familia XC4000 puede tener desde 64 hasta 3 136 CLB.
Naturalmente, la configuracin del dispositivo no se realiza manualmente, sino por
medio de herramientas CAD.
La Fig. 2.10 muestra la estructura de un bloque de entrada/salida.

Fig. 2.10. Un bloque de I/O de un XC4000.


30

Un bloque de I/O puede ser usado para entrada, para la salida o para ambos.
IOB de XC4000 tiene ms lgica de control que IOB de XC9500.
Sus lneas de entrada y salida tienen flip-flops tipo D de disparo por flanco
seleccionables por los mux M5 M7. Esto resulto muy til.
Por ejemplo, en la salida, el retardo relativamente grande de un flip-flop interno de un
CLB al IOB puede crear la dificultad para conexin con un sistema sincrnico externo
que trabaja con un Clock muy rpido.
En la entrada, el retardo grande desde los pines I/O hasta la entrada del flip-flop de un
CLB puede crear problema si las seales de entrada externas no son guardadas
primero por un flip-flop del IOB.
Otro control del IOB selecciona la polaridad de las entradas provenientes desde CLB
usando los mux M1 M4. Estas entradas son: OUT (output bit), T (three-state enable),
OCLK (output clock) e ICLKEN (input clock enable).
Como XC9500 IOB, XC4000 IOB tiene programacin de flancos de subida y de bajada
de seales de salida y las resistencias pull-up y pull-down.
Cada CLB en un FPGA esta incrustado en una estructura de interconexiones los
cuales son unos alambres con conexiones programables entre ellos.
La Fig. 2.11 muestra un CLB y los alambres de interconexin.
Los cuatro alambres en el grupo Global son para usarlos como entradas de Clock
hacia CLBs con un retardo muy corto.
Los dos grupos Single son para conexin flexible entre bloque adyacentes.
Los dos grupos Direct Connect son de dos alambres nicamente y tienen limitaciones
a causa de que son unidireccionales.
Es posible conectar un CLB con otro que no es CLB adyacente usando los alambres
Single, pero ellos tienen que conectarse por medio de los switch programables, lo que
agrega retardo adicional. Los alambres de grupos Double estn interconectados
pasando dos CLBs lo que proporciona menores retardos para conexiones ms largas.
Para conexiones realmente largas los grupos Long son ms apropiados ya que ellos
se conectan tanto con filas como con columnas de alambres y son manejadas por los
drivers de tres estados cercanos al CLB.

31

El rea sombreada es un PSM (programmable switch matrix). Cada pequeo diamante


es un PSE (programmable switch element) que puede conectar cualquier lnea con
cualquier otra horizontal o vertical.

Fig. 2.11. Detalles de conexiones en un XC4000.

La tabla presentada indica los nombres de los principales fabricantes de los FPGAs.

32

Productos recientes.
Altera.

APEX 20K

La familia APEX 20K es la siguiente generacin de los FPGAs despus de FLEX 10K.
Su Elemento Lgico (LE) es una versin optimizada del mostrado en la Fig. 2.5
y contiene un LUT de cuatro entradas y un flip-flop.

Estn disponibles en tamao de

1 200 a 51 840 LE. Lo nuevo en este FPGA es el hecho que los Bloques Lgicos
Configurables estn agrupados en MegaLABs con hasta ms de 24 LABs en una
MegaLAB. Y contiene tambin un bloque de memoria llamado Embedded System
Block (ESB) que es similar a EAB de la Fig. 2.8 pero es mucho mas grande.

Stratix

Stratix es el FPGA que sustituye la familia APEX. Cada chip contiene columnas de
recursos de varios tipos. Las columnas de LABs tienen LAB con 10 LE en cada LAB.
Cada LE tiene LUT de cuatro entradas y un registro y puede ser configurado en una
variedad de modos. Hay tambin varios tipos de recursos de alambrado. Las
conexiones dentro de un LAB estn hechas usando recursos locales rpidos. Para la
conexin de una LAB a otra existen conexiones vecinales cercanas, alambres que
cruzan cuatro columnas o filas y alambres largos. Adems, Stratix tiene tres otros
tipos de columnas. Las columnas M512 son los bloques de memoria con 512 bits cada
uno. Y las columnas M4K tienen grandes bloques de memoria con 4K bits por bloque.
Tambin hay bloques de memoria muy grandes llamados MegaRAMs con 512K bits
cada uno. Finalmente hay columnas con bloques DSP (Digital Signal Processing).
Cada uno de estos bloques incluye circuitos multiplicadores y sumadores para permitir
rpida multiplicacin y suma (acumulacin) de datos. Chips Stratix estn disponibles
en tamao de 10 570 a 79 040 LE.

Cyclone

Los FPGAs Cyclone estn basados en la arquitectura Stratix pero pensada para las
aplicaciones de bajo costo. Un chip Cyclone tiene la misma estructura bsica con la
excepcin que no tiene las columnas DSP y tiene solo los bloques de memoria M4K.
Los FPGAs Cyclone estn disponibles en tamaos de 2 920 a 20 060 LE y 288K bits
de memoria.
33

Xilinx.

Virtex

Los FPGAs Virtex son la siguiente generacin de las familias despus de XC4000.
Cada chip Virtex tiene recursos lgicos llamados CLBs y recursos de memoria
llamados BRAMs (Block RAMs). El CLB es una versin mejorada del de la Fig. 2.9.
Pero los CLB de Virtex estn divididos en dos partes. Cada parte es llamada slice.
Cada slice tiene dos LUT de cuatro entradas, dos registros y lgica aritmtica. El
bloque BRAM tiene 4K bits de memoria que puede ser configurada de 4096 x 1 hasta
256 x 16. Los FPGAs Virtex estn disponibles en tamaos de 256 a 46 592 CLB
slices.

Virtex II y Virtex II Pro

Los FPGAs Virtex II y Virtex II Pro son sucesores de la familia Virtex. Ellos
ofrecen tamaos de 3 168 hasta 99 216 LE y mas que 8M bits de memoria. Los LE
estn arreglados en slices similares al FPGA de Virtex pero con cuatro slices en un
CLB. El chip de Virtex II Pro incluye uno o ms ncleos de microprocesadores
dentro del chip y tiene avanzadas caractersticas adicionales que no estn presentes
en Virtex II.

Spartan 3

Los FPGAs Spartan 3 son la versin de bajo costo de la arquitectura del Virtex II.
Similar a Virtex II los LE estn arreglados dentro de CLBs en cuatro slices, pero no
todos los slices tienen el mismo conjunto de caractersticas que como en Virtex II.
Los chips Spartan 3 estn disponibles en tamaos de 1728 hasta 74 880 LE y mas
1.8M bits de memoria.

Aplicaciones de los CPLD y FPGA.


Actualmente la alta densidad, alta velocidad y ventajas de costo han impulsado el uso
de los FPLDs (as se llaman los CPLD y FPGA juntos) en una amplia variedad de los
diseos.
La nueva generacin de FPLDs puede tener cerca de 10 millones de puertas y la
frecuencia del Clock de 1 GHz.
34

Un FPLD puede reemplazar el diseo con los mltiples chips de la vieja tecnologa.
Adems, los FPLDs se utilizan en reas de procesamiento digital de seal (DSP),
procesamiento de imagen, aplicaciones de multimedia, comunicaciones de alta
velocidad y en equipos de red como routers y switches, en implementacin de
protocolos de bus tales como interconexin de componentes perifricos (PCI), en
circuitos de interfase de procesadores (llamados glue lgic), coprocesadores y
microcontroladores perifricos.
Algunos grandes FPLDs con una red de interconexin adicional son usados para
construir Emuladores de Hardware. Emuladores de Hardware son dispositivos
comerciales diseados especialmente para probar complejos diseos de hardware que
luego

sern

implementados

como

dispositivos

Full

Custom

tales

como

microprocesadores, por ejemplo.


Algunos de los recientes microprocesadores de Intel y AMD fueron probados en
Emuladores de Hardware antes de iniciar su produccin.
La ms nueva rea de aplicacin de los FPLDs es clculo reconfigurable. En clculo
reconfigurable los FPLDs son rpidamente reprogramados o reconfigurados mltiples
veces durante la operacin para habilitarlos a realizar diferentes clculos en diferentes
momentos para una aplicacin particular.

Criterios de seleccin del FPLD.


Hemos analizado dos tipos de PLDs complejos que son apropiados para la
implementacin de circuitos lgicos grandes, con mas de 20 000 puertas.
Muchas de estas aplicaciones pueden ser realizadas tanto con CPLDs como con
FPGAs.
La eleccin de un FPLD no es tarea fcil porque en la misma influyen gran cantidad de
parmetros cuya importancia depende de las caractersticas que debe poseer el
Sistema Digital que se quiere implementar.
Por ejemplo, hay sistemas en los que la frecuencia de trabajo es un parmetro crtico,
mientras que en otros lo es el costo.
Inicialmente para algunos diseos los CPLDs proporcionaban las velocidades
ligeramente ms grandes que los FPGAs. Pero actualmente las velocidades de los
FPGAs son cada vez mayores, adems, pueden soportar circuitos ms grandes.

35

El conjunto de los parmetros que pueden ser analizados para la eleccin de un FPLD
adecuado pueden ser clasificados en tres categoras:
1. Parmetros tcnicos, que incluyen

Arquitectura interna
Frecuencia mxima de operacin
Tecnologa del PLD
Verificabilidad
Fiabilidad
Proteccin de la propiedad intelectual
Encapsulado

2. Parmetros de diseo, que incluyen

Herramientas de CAD
Servicio tcnico del fabricante

3. Parmetros comerciales, que incluyen

Costos
Disponibilidad
Estabilidad en el mercado

Varios fabricantes han introducido diferentes arquitecturas CPLD y FPGA casi al


mismo tiempo. Mientras Xilinx es el lder en los FPGAs, el campo de los CPLDs es
dominado por varios fabricantes. Altera es el fabricante mas importante de los CPLDs.
Lattice y Cypress son otros importantes fabricantes de los CPLDs.
Bibliografa.
1. S. Brown, Z. Vranesic. Fundamentals of Digital Logic with VHDL design.
McGraw Hill. 2000.
2. J. F. Wakerly. Digital Design, Principles & practices.
Prentice Hall. 2001.
3. J.O.Hamblen, M.D. Furman. Rapid prototyping of Digital Systems.
Kluwer Academic Publishers. 2001.
4. E. Mandado, L.J. Alvarez, M.D. Valdes. Dispositivos Lgicos Programables.
Thomson. 2002.
5. G. Jaquenod. Tcnicas de diseo lgico.
Intectra Inc. 1999.

36

You might also like