You are on page 1of 15

PLDs -DISPOSITIVOS LÓGICOS PROGRAMABLES-

“Una lección crucial es que para comprender cuestiones


complejas –o incluso sencillas- debemos tratar de liberar
nuestra mente del dogma y garantizar la libertad de
publicar, de rebatir y de experimentar.”

Carl Sagan, Miles de Millones

INTRODUCCIÓN
Desde finales de la década de los sesenta, los equipos electrónicos digitales se han
construido utilizando circuitos integrados (CI) de función lógica fija, realizados en
pequeña o mediana escala de integración. Para las aplicaciones complejas que exigen un
número elevado de circuitos integrados de función fija, se utilizan circuitos diseñados a
medida que sólo sirven para dicha aplicación. Son los llamados ASIC (Application
Specific Integrated Circuit, Circuito Integrado de Aplicación Específica). Por regla
general, los ASICs son producidos por los fabricantes de CI con las especificaciones
proporcionadas por el solicitante. Los equipos integrados con ASICs ocupan menos
espacio, son más confiables, estables, consumen menos energía y en grandes volúmenes
resultan más baratos que los equipos equivalentes realizados con CI de función fija
genéricos. Por otro lado, estos circuitos son muy difíciles de copiar.

Diferentes modalidades de ASICs son: los Circuitos a Medida (Full Custom), las
Matrices de Compuertas (Gate Arrays), las Células Normalizadas (Standard Cell).

¾ Los Circuitos Integrados a Medida (Full Custom), se diseñan a petición de un


cliente para que resuelvan una determinada aplicación. Implican un alto costo de
desarrollo y su empleo sólo se justifica para volúmenes de producción muy
elevados. El tiempo necesario para la construcción de un CI a medida es
considerable ya que puede oscilar de unos meses a unos años.

¾ Las Matrices de compuertas (Gate Arrays) son pequeños trozos de silicio


pendientes de algún proceso de metalización que defina las conexiones entre un
importante número de compuertas o transistores que poseen en su interior. Las
matrices de compuertas proporcionan densidades superiores a las 100.000
compuertas, con un aprovechamiento del 80 al 90 por 100 para los dispositivos
pequeños y del 40 por 100 para los grandes. Los fabricantes de silicio ponen a
disposición de sus potenciales clientes abundante documentación sobre estos
Gate Arrays, con una serie de macros que pueden utilizar de forma inmediata y
otras que pueden construirse ellos mismos. Los macros son agrupaciones de un
número de células básicas que realizan funciones comunes como; sumadores;
compuertas NOT, AND, NAND, NOR XOR, etc.; latches y flip-flops S-R, J-K,
D; buffers; osciladores; registros, decodificadores, multiplexores, etc. Junto a
esta documentación, los fabricantes aportan un software que contabiliza el
número de células básicas utilizadas por todas las macros, sugiere el Gate Array
adecuado para la aplicación, calcula la potencia disipada por el Gate Array que

1
alojará el diseño del cliente, proporciona información sobre los tiempos de
propagación de las señales y permite verificar el funcionamiento del circuito.
Una vez superadas todas las etapas previas, el cliente envía la documentación
generada al fabricante para que éste ultime los procesos de metalización y
fabrique un primer prototipo. El diseño con Gate Arrays puede durar semanas o
meses. Requiere un volumen alto de circuitos para justificar sus costos.

¾ Las células normalizadas (Standard Cell) son, en cierta forma, similares a las
matrices de compuertas. Su principal ventaja sobre ellas es que en lugar de
trabajar con simples compuertas o transistores, se dispone de colecciones de
diferentes partes de circuitos que han sido depurados (compuertas lógicas,
circuitos MSI, RAM estáticas, archivos de registros, etcétera). El usuario tiene
que ensamblar estos circuitos, verificarlos y finalmente enviar documentación al
fabricante de CI para el desarrollo del primer prototipo. A pesar del concepto de
célula normalizada, los períodos y los costos de desarrollo son superiores a los
de las matrices de compuertas. En las matrices de compuertas sólo hay que
realizar la máscara final que define las conexiones entre las compuertas,
mientras que en las células normalizadas, hay que realizar máscaras para todos
los procesos de producción de los CI. Una vez más, el volumen de fabricación
deberá ser los suficientemente alto como para amortizar la inversión económica
realizada en el desarrollo.

El PLD (Programmable Logic Device, Dispositivo Lógico Programable) es un


dispositivo cuyas características pueden ser modificadas y almacenadas mediante
programación. La fabricación de PLDs se fundamenta en el concepto de que cualquier
función lógica se puede realizar mediante una suma de productos –minitérminos-;
por ello, la mayoría de los PLDs consisten en una matriz de compuertas AND seguida
de otra matriz de compuertas OR.

Aunque las memorias PROM, EPROM EEPROM y Flash son PLDs, muchas veces se
les excluye de esta denominación, debido a que su contenido se define utilizando
herramientas de desarrollo propias de microprocesadores. Cuando estas memorias se
destinan para realizar una función lógica y no para guardar el programa de un
microprocesador, se les incluye dentro del término PLD.

Los PLDs están situados en una zona intermedia entre los dispositivos a medida y la
lógica de CI de función fija. Tienen casi todas las ventajas de los ASICs sin estar
penalizados por un costo elevado para pequeñas series. Además el ciclo de diseño con
PLDs es mucho más rápido que los de las matrices de compuertas o las células
normalizadas. En determinadas aplicaciones, un PLD puede sustituir desde unos pocos
hasta unas decenas de CI de función fija, mientras que los grandes ASICs pueden

2
sustituir a cientos e incluso miles de CI. En ocasiones, los PLD se utilizan para realizar
prototipos que posteriormente se llevarán a un ASIC más complejo. Entre las ventajas
de los PLDs se pueden resaltar:

¾ Facilidad de diseño.- Las herramientas de soporte para diseño con PLDs


facilitan enormemente este proceso. Las hojas de codificación que se utilizaban
en 1975 han dado paso a los ensambladores y compiladores de lógica
programable (PALASM, AMAZE, VHDL, ABEL, CUPL, OrCAD/PLD, etc.).
Estas nuevas herramientas permiten expresar la lógica de los circuitos utilizando
formas variadas de entrada tales como; ecuaciones, tablas de verdad,
procedimientos para máquinas de estados, esquemas, etc. La simulación digital
posibilita la depuración de los diseños antes de la programación de los
dispositivos. Todo el equipo de diseño se reduce a un software que corre en una
PC, y a un programador.

¾ Prestaciones.- Los PLDs TTL que hay en el mercado tienen tiempos de


conmutación tan rápidos como los circuitos integrados de función fija más
veloces. Los PLDs ECL son todavía más rápidos. Sin embargo, el incremento de
velocidad obtenido con los dispositivos CMOS, que ya han igualado o superado
en prestaciones a los dispositivos TTL, está provocando el abandono de la
tecnología bipolar por parte de los fabricantes. En cuanto al consumo de
potencia, los PLDs generalmente consumen menos que el conjunto de chips a
los que reemplazan.

¾ Confiabilidad.- Cuanto más complejo es un circuito, más probabilidades hay de


que alguna de sus partes falle. Puesto que los PLDs reducen el número de chips
en los sistemas, la probabilidad de un fallo disminuye. Los circuitos impresos
con menor densidad de CI son más fáciles de construir y más confiables. Las
fuentes de ruido también se reducen.

¾ Economía.- En este apartado, hay aspectos que resultan difíciles de cuantificar.


Por ejemplo, los costos de pérdida de mercado por una introducción tardía de un
producto. Otros son más claros, por ejemplo, la reducción del área de las placas
de circuito impreso obtenida gracias a que cada PLD sustituye a varios circuitos
integrados de función fija. Muchas veces se consigue reducir el número de
placas de circuito impreso economizándose en conectores. De la misma manera
que para altos volúmenes de producción las memorias ROM resultan de menor
costo que las EPROM, las HAL (Hard Array Logic) o PLDs programados por el
fabricante proporcionan ahorros adicionales en grandes cantidades.

¾ Seguridad.- Los PLDs tienen fusibles de seguridad que impiden la lectura de los
dispositivos programados, protegiendo los diseños frente a copias. Además de
los puntos mencionados, podemos añadir que los PLDs facilitan el ruteado de las
placas de circuito impreso debido a la libertad de asignación de terminales que
proporcionan. Permiten realizar modificaciones posteriores del diseño y en
ocasiones hacen posible la reutilización de circuitos impresos con algunos fallos,
mediante una reasignación de las terminales y/o funciones.

3
En el siguiente diagrama podemos observar donde se ubican los dispositivos
programables dentro de los dispositivos lógicos:

En síntesis, en una primera división podemos considerar tres grandes grupos:

¾ El primero está constituido por la denominada lógica discreta, circuitos


integrados que implementan circuitos lógicos muy sencillos, y que se utilizan
para funciones concretas auxiliares dentro de un sistema digital.

¾ Circuitos ASIC o circuitos integrados de aplicación específica, donde se ubican


los dispositivos programables estudiados.

¾ Sistemas microprocesadores.

Dentro de los circuitos ASIC tenemos dos tipos de dispositivos:

¾ Dispositivos programables eléctricamente, constituidos por los SPLDs, CPLDs y


FPGAs.

¾ Dispositivos programables a nivel de máscaras, constituidos por las Gate Arrays,


Standard cells y los circuitos integrados Full-Custom. Estos dispositivos
aparecen en el diagrama con un orden creciente de programabilidad a nivel de
máscaras, de modo que los circuitos full-custom constituyen circuitos totalmente
a medida.

Una diferencia importante entre ambos tipos de dispositivos se centra en el llamado


NRE (Non Recurring Engineering) o ingeniería no recuperable. Se trata del costo fijo
que suponen las máscaras del proceso de fabricación. En el caso de dispositivos
programables eléctricamente el costo NRE es cero, ya que se trata de dispositivos
estándar que pueden comprarse en el mercado.

4
DESCRIPCIÓN DE LOS DISPOSITIVOS PROGRAMABLES

¾ SPLDs

PROM (Programable Read Only Memory).- Son memorias programables de sólo


lectura. Aunque el nombre no implica la lógica programable, las PROM, son de hecho
lógicas. La arquitectura de la mayoría de las PROM consiste generalmente en un
número fijo de términos AND que alimenta una matriz programable OR.

Ejemplo de las funciones:

S0 = A ⊕ B ; S1 = /AB ; S2 = A/B ; S3 = B

PAL (Programmable Array Logic).- Son dispositivos de matriz programable. La


arquitectura interna consiste en términos AND programables que alimentan términos
OR fijos. Todas las entradas a la matriz pueden ser combinadas mediante AND entre sí,
pero los términos AND específicos se dedican a términos OR específicos.

Ejemplo de las funciones:

S0 = A ⊕ B ; S1 = /AB ; S2 = A/B ; S3 = B

5
Las PAL tienen una arquitectura muy popular y son probablemente el tipo de
dispositivo programable más empleado. Si un dispositivo contiene macroceldas,
comúnmente tendrá una arquitectura PAL. Las macroceldas típicas pueden programarse
como entradas, salidas, o entrada/salida (e/s) usando una habilitación tri-estado.
Normalmente tienen registros de salida que pueden usarse o no conjuntamente con el
pin de e/s asociado. Algunas macroceldas tienen más de un registro, retroalimentación
en las matrices, y ocasionalmente realimentación entre macroceldas.

PLA (Programmable Logic Array).- Son matrices lógicas programables; estos


dispositivos contienen ambos términos AND y OR programables, lo que permite a
cualquier término AND alimentar cualquier término OR. Las PLA probablemente
tienen la mayor flexibilidad frente a otros dispositivos con respecto a la lógica
funcional. Normalmente poseen realimentación desde la matriz OR hacia la matriz
AND que puede usarse para implementar máquinas de estado asíncronas. La mayoría de
las máquinas de estado, sin embargo, se implementan como máquinas síncronas. Con
esta perspectiva, los fabricantes crearon un tipo de PLA denominado Secuencial
(Sequencer) que posee registros de realimentación desde la salida de la matriz OR hacia
la matriz AND.

Ejemplo de las funciones:

S0 = A ⊕ B ; S1 = /AB ; S2 = A/B ; S3 = B

GAL (Generic Array Logic).- Son dispositivos de matriz lógica genérica. Están
diseñados para emular diferentes tipos de PAL. Estos dispositivos también son
eléctricamente borrables, lo que los hace muy útiles para los ingenieros de diseño.

GAL es una denominación que utilizaba originalmente Lattice Semiconductor y que


más tarde se licenció a otros fabricantes- actualmente son los únicos que las fabrican-.
Un GAL en su forma básica es un PLD con una matriz AND reprogramable, una matriz
OR fija y una lógica de salida programable mediante una macrocelda. Esta estructura
permite implementar cualquier función lógica como suma de productos con un número
de términos en cada macrocelda predefinido. En los PLDs no reprogramables la síntesis
de ecuaciones lógicas se realiza mediante quema de fusibles en cada punto de

6
intersección de las matrices. En el caso de un GAL es básicamente la misma idea, pero
en vez de estar formada por una red de conductores ordenados en filas y columnas en
las que en cada punto de intersección hay un fusible, el fusible se reemplaza por una
celda CMOS eléctricamente borrable (EECMOS). Mediante la programación se activa o
desactiva cada celda EECMOS, y se puede aplicar cualquier combinación de variables
de entrada -o sus complementos- a una compuerta AND para generar cualquier
minitérmino que se desee. Una celda activada conecta su correspondiente intersección
de fila y columna, y una celda desactivada desconecta la intersección. Las celdas se
pueden borrar y reprogramar eléctricamente. A continuación se muestran la estructura
típica de un GAL22V10.

La cantidad de salidas de
compuertas AND conectadas a
compuertas OR va de 8 a 16. La
macrocelda está formada por dos
multiplexores y un flip-flop; esto
permite diseñar circuitos
combinacionales o secuenciales
en función de la configuración de
las macroceldas.

7
¾ CPLDs

Los CPLDs (Complex Programmable Logic Device).- son lo que el nombre implica,
Dispositivos Complejos de Lógica Programable. Fueron introducidos inicialmente por
Altera, y su estructura no es más que una agrupación de PALs.

Las CPLDs constituyen una extensión del concepto de los SPLDs a un nivel de
integración más alto. En lugar de fabricar dispositivos con matrices programables cada
vez mayores, el CPLD está formado por la interconexión de muchos bloques lógicos,
cada uno de ellos similar a una pequeña PAL, como por ejemplo, una 22V10. En el
esquema genérico de un CPLD se aprecia que los diferentes bloques lógicos se
interconectan entre sí mediante una matriz de interconexiones programable, y con el
exterior a través de los bloques de entrada y salida.

Esquema genérico de un CPLD

Cada bloque lógico es una PAL con una matriz AND programable y una macroceldas
de salida, que se conecta con el exterior y que realimenta a la matriz de interconexiones
programables. Las tecnologías de programación son las mismas que las que utilizan los
SPLDs, esto es, fusible, EPROM, EEPROM y Flash. El bloque de interconexiones
programables se encarga de
unir las entradas de los
bloques de entrada/ salida
con las entradas de los
bloques lógicos, y las salidas
de estos últimos con sus
propias entradas o con
entradas de otros bloques
lógicos. La mayoría de los
CPLDs utilizan una de dos
técnicas para implementar la
matriz de interconexiones
programable: utilizando una

8
matriz de elementos de memoria (Fusible, EPROM o EEPROM) o empleando una
matriz de multiplexores controlados por memorias. La primera de ellas, la que se
encuentra basada en una matriz de elementos de memoria, permite que cualquier señal
de la matriz de interconexiones pueda llegar a cualquier entrada de un bloque lógico.

La figura muestra un detalle de la


matriz de interconexiones
programable. En ella se aprecia
que existen tanto conexiones
verticales como entradas a
bloques lógicos. Además, en
cada cruce de las líneas verticales
con salidas de bloques lógicos o
entradas externas existe un
elemento de programación
(representado en la figura por un
transistor de puerta flotante).
Este elemento de programación
actúa a modo de interruptor
inversor, de modo que el usuario
puede programarlo “siempre
abierto” (sin conexión) o
“siempre cerrado” (con conexión, invertido). La idea es similar a la de los elementos de
programación vistos en las PLAs. Esto significa que la ruteabilidad es total, esto es,
cualquier entrada a la matriz de interconexiones programables puede ser llevada a una
entrada no usada de un bloque lógico, programando convenientemente los interruptores.
A pesar de esta ventaja, el inconveniente principal es que para conseguir esta elevada
ruteabilidad se requiere un área de silicio muy elevada, debido a la gran cantidad de
elementos de programación.

La técnica basada en multiplexores emplea


un multiplexor por cada entrada a un bloque
lógico. Las señales de la matriz de
interconexiones programable se conectan a
las entradas de los multiplexores. Las
señales de selección de dichos multiplexores
se programan mediante celdas de memoria,
de modo que sus salidas sirvan de entrada a
bloques lógicos. En este caso la ruteabilidad
no es completa y está estrechamente
relacionada con la dimensión de los
multiplexores, cuyas entradas sólo se
conectan a un número pequeño de señales de
la matriz de interconexiones programable.
Cuanto mayor sea la dimensión de los
multiplexores, tanto más se verá favorecida
la ruteabilidad, aunque a costa de usar un
área mayor. Igual que siempre, disponer de
un mayor número de recursos de ruteado
siempre requiere una mayor área de silicio.

9
Además de los bloques lógicos, recursos de ruteado, tecnologías de programación,
existen otras prestaciones que actualmente se incorporan en la mayoría de integrados
que aparecen en el mercado, y que se detallan a continuación:

¾ ISP (In System Programability). Es la posibilidad de programar un dispositivo


cuando se encuentra en una placa de circuito impreso. Es una prestación
importante porque permite ahorrar tiempo en la depuración de un diseño. Es
especialmente importante en los dispositivos que no van en zócalo, como los de
montaje superficial, cuyos pines se sueldan sobre la huella en la placa de circuito
impreso. En este caso no es posible desoldar el integrado para llevarlo al
programador, por lo que es vital la posibilidad de programación en placa con el
dispositivo ya soldado.

¾ ISR (In System Reprogramability). Es la posibilidad de reprogramar un


dispositivo cuando se encuentra soldado en una placa de circuito impreso y
funcionando dentro de una aplicación concreta. Es decir, se trata de la
posibilidad de modificar la funcionalidad del dispositivo dentro de la propia
aplicación, por ejemplo, para realizar una serie de tareas secuenciales en el
tiempo usando el mismo dispositivo programable. Muchos dispositivos utilizan
un puerto JTAG, para llevar a cabo los procesos de ISP o ISR.

¾ Puerto JTAG: muchos dispositivos programables incorporan este estándar


(IEEE/ANSI 1149.1) que define un método para verificar la funcionalidad y las
conexiones dentro de un integrado así como las interconexiones con otros
integrados. También puede usarse para programar o reprogramar un dispositivo
programable. Desde un punto de vista de hardware, consta de varios pines
externos que permiten definir un modo de funcionamiento en el que se serializan
todos los biestables de las macroceldas (boundary scan), de modo que podemos
introducir una cadena de bits que recorren ese registro de desplazamiento que
constituyen todos los biestables del dispositivo. A través de la salida del puerto
JTAG, se lee la cadena de bits de salida, o bien directamente a través de los
pines externos de salida del dispositivo. Normalmente, el puerto JTAG cuenta
con cuatro señales:

• TDI: señal de entrada a través de la cual se introducen los vectores de


test.
• TDO: señal de salida a través de la cual se leen los vectores de test.
• TMS: señal que permite la evolución del autómata interno que contiene
el bloque de control del puerto JTAG.
• TCLK: señal de reloj.

Algunos puertos JTAG usan una quinta señal: TRST que sirve para resetear el
bloque de control del JTAG. Serializando los registros internos de varios
dispositivos - conectándolos en cascada- mediante las señales TDI y TDO, es
posible verificar las conexiones entre varios dispositivos.

10
¾ FPGAs

Una FPGA (Field Programmable Gate Array) o Matriz de Compuertas Programables en


Campo es una matriz de celdas lógicas que se comunican unas con otras y con los pines
de entrada salida a través de líneas de interconexión -cuyas conexiones son
programables-. En general, se puede decir que posee una estructura bastante regular,
aunque el bloque lógico y la arquitectura de ruteado varían de un fabricante a otro. La
estructura de una FPGA, comparada con la de un CPLD, es mucho más regular, y se
encuentra más orientada a diseños que manejan mayores transferencias de datos y
registros, en tanto que los CPLD implementan más recientemente diseños con una parte
combinacional mayor.

Como hemos visto, la arquitectura de un CPLD es una agrupación de PALs,


interconectadas entre sí. Cada bloque lógico tiene su propia parte combinacional que
permite realizar un gran número de funciones lógicas programables, más un biestable
asociado al pin de entrada/salida en caso de encontrarse habilitado. La arquitectura de la
FPGA cuenta también con bloques lógicos con una parte combinacional y una parte
secuencial. La parte combinacional es mucho más simple que la de una de las PAL
interna de un CPLD. La parte secuencial posee uno o dos biestables, que no están
generalmente asociados a un pin de entrada salida, pues los bloques lógicos se
distribuyen regularmente en todo el dispositivo.

Con respecto a la densidad, los CPLDs poseen una densidad media en tanto que las
FPGAs tienen unas densidades altas con capacidades crecientes que llegan incluso hasta
más del millón de compuertas equivalentes. Finalmente, es importante señalar como
otra diferencia interesante el hecho de que los retrasos asociados a la propagación de las
señales son predecibles en un CPLD, en función de los parámetros temporales que nos
proporciona el fabricante. En el caso de una FPGA, los retrasos hay que determinarlos
posteriormente al diseño, pues vendrán determinados por el ruteado final de las señales.

11
Cada bloque lógico es funcionalmente similar a los bloques lógicos de un CPLD. La
diferencia está en que una FPGA normalmente utiliza generadores de funciones en vez
de compuertas. Cada uno de estos generadores es como una memoria en donde en vez
de implementar la función lógica mediante compuertas, se precalcula el resultado y se
almacena en el generador. Las entradas al generador funcionan como un bus de
direcciones, y mediante las diferentes combinaciones de las entradas al generador se
selecciona el resultado correcto. Esto le da una gran densidad al dispositivo ya que se
maneja un gran número de generadores, pero el tiempo de propagación al implementar
una función lógica en estos generadores es menor al que se necesitaría si utilizáramos
compuertas. La estructura de los bloques lógicos y las formas en que estos pueden ser
interconectados, tanto salidas como entradas del bloque, varían de acuerdo al fabricante.
En general un bloque lógico tiene menos funcionalidad que la combinación de sumas de
productos y macroceldas de un CPLD, pero como cada FPGA tiene un gran cantidad de
bloques lógicos es posible implementar grandes funciones utilizando varios bloques
lógicos en cascada. Además de los bloques lógicos también es importante la tecnología
utilizada para crear las conexiones entre las líneas, las más importantes son las
siguientes:

Antifusible.- es un dispositivo de dos terminales cuyo estado no programado presenta


una gran resistencia óhmica. Se trata de la antítesis de un fusible. Suele emplearse
silicio amorfo (no cristalizado) que se deposita en una vía entre dos capas de metal.
Inicialmente presenta una elevada resistencia, pero, aplicando un pulso de programación
de 10 a 12 V a través de la vía, las capas de metal en ambos lados penetran el silicio
amorfo dando lugar a una conexión eléctrica. La figura muestra el estado no
programado y programado de un antifusible. Esta técnica que emplea silicio amorfo se
denomina Vialink.

Existe otra técnica denominada PLICE que emplea un dieléctrico de oxígeno-nitrógeno-


oxígeno (ONO) entre una capa de polisilicio y una difusión n+, aunque tiene peores
características resistivas que la anterior. La principal ventaja del antifusible reside en
que se trata de un elemento de interconexión de alta densidad, ya que tan sólo ocupa el
tamaño de una vía más el circuito común de programación. No obstante, como
inconvenientes principales hay que señalar los siguientes:

¾ No son reprogramables. Una vez formada la conexión es imposible volver al


estado no programado.

¾ La serialización de elementos antifusibles programados en líneas largas puede


dar lugar a conexiones de una resistencia elevada.

¾ Es necesario un circuito adicional de programación.

12
RAM estática.- Las celdas de memoria
RAM estática controlan el estado de los
transistores de paso que actúan como
interruptores. Programando estas celdas de
memoria se pueden realizar conexiones
entre líneas verticales y horizontales, como
en el ejemplo de la figura. Las ventajas e
inconvenientes de las celdas de RAM
estáticas como elemento de programación
son opuestas a los antifusibles. Su principal
ventaja es la reprogramabilidad que ofrecen
las celdas de memoria RAM, lo que permite
cambiar la funcionalidad una vez
programada la FPGA. Como inconvenientes
cabe señalar los siguientes:

¾ Las celdas de RAM estática son volátiles, por lo que normalmente van
acompañadas de una memoria externa que guarda la configuración interna. En el
momento del arranque, la FPGA carga desde esta memoria EPROM externa su
configuración y, a continuación, comienza a operar normalmente.

¾ Al igual que los antifusibles, necesita de un circuito externo de programación.

¾ El tamaño de una celda RAM estática es mucho mayor que el de un antifusible.

Flash.- El avance experimentado en los últimos años en el diseño y prestaciones de las


celdas de memoria Flash ha permitido su incorporación al mundo de los dispositivos
programables como tecnología de programación. Las FPGAs basadas en celdas Flash
recogen las ventajas principales de las dos técnicas anteriores situándose en un punto
intermedio.

¾ Su tamaño es bastante más reducido que el de una celda de RAM estática,


aunque sin llegar al tamaño reducido de un antifusible.

¾ Son reprogramables, aunque la velocidad de programación es bastante más lenta


que en el caso de una RAM estática.

¾ Son no volátiles, por lo que no necesitan un dispositivo auxiliar para guardar la


configuración interna, como en el caso de la SRAM.

La tecnología de programación es un parámetro de diseño fundamental en una FPGA,


ya que condiciona su arquitectura interna. Las FPGAs basadas en antifusibles se
caracterizan por tener una elevada ruteabilidad debido a que el elemento de
programación ocupa poco espacio. Prácticamente, existe un interruptor en cada
intersección, siendo posible llegar a ocupar el 100% de los bloques lógicos internos.
Este bloque lógico se caracteriza por ser bastante sencillo, con poca lógica en su parte
combinacional. No obstante, posee un elevado número de entradas y salidas para poder
aprovechar la gran cantidad de recursos de ruteado disponibles. El hecho de usar un
bloque lógico sencillo supone que para implementar una función lógica compleja haya

13
que dividirla entre varios bloques lógicos, lo que introduce mayores retrasos en la
propagación de las señales, limitando la velocidad máxima que puede alcanzarse. Las
FPGAs basadas en SRAM se caracterizan por poseer muchos menos recursos de
ruteado, como consecuencia de emplear un interruptor que ocupa un mayor espacio. El
bloque lógico es más complejo que el de las FPGAs basadas en antifusibles, con una
parte combinacional que permite implementar funciones lógicas más complicadas.
Como contrapartida, nunca llegan a aprovechar el 100% de la lógica interna. A
diferencia de las FPGAs de antifusibles, no suele ser necesario partir funciones lógicas
entre muchos bloques lógicos, lo que redunda en menores retrasos de propagación para
lógicas complejas. En los últimos años esta situación ha ido cambiando. Las FPGAs
basadas en SRAM utilizan procesos convencionales de fabricación de CMOS. Esto
permite que puedan aprovecharse de cada avance en la tecnología de fabricación. Las
FPGAs basadas en antifusibles utilizan máscaras especiales para la fabricación de sus
interruptores y las tensiones necesarias para la programación no estan disponibles en las
últimas tecnologías (la tensión de ruptura en procesos de 0,18 micras es menor que la
tensión de programación del interruptor antifusible). Esto significa que en los últimos
años los recursos de ruteado de FPGAs basado en SRAM han avanzado hasta superar
los recursos de ruteado en las FPGAs de antifusibles, y los retrasos de las dos técnicas
son ya muy parecidas. Finalmente, las FPGAs basadas en celdas Flash suelen emplear
un bloque lógico sencillo para incrementar los recursos de ruteado, como ocurre con las
FPGAs de antifusibles.

Algunas prestaciones que suelen incluir las FPGAs son similares a las vistas para las
CPLDs:

¾ ISP (In System Programability).

¾ ISR (In System Reprogramability).

¾ Puerto JTAG.

Además, hay FPGAs, como la familia XC4000 de Xilinx, que incluyen biestables en las
celdas de entrada y salida (IOBs), disponen de búferes con triestados internos y poseen
dispositivos de baja tensión. Las líneas futuras, que serán realidad en los próximos años,
trabajan en los siguientes puntos:

¾ Crecimiento en velocidad y capacidad. Tecnologías con más metales y menos


escalas de integración (actualmente llegan a las 0,18 micras) permitirán
dispositivos con mayores prestaciones en capacidad y velocidad.

¾ Dispositivos de baja tensión. A medida que aumenta la escala de integración es


preciso disminuir las tensiones de alimentación

¾ Reprogramabilidad. Actualmente, se trabaja intensamente en dispositivos que


puedan ser reprogramados rápidamente para implementar funcionalidades
distintas que tengan que estar presentes en un sistema digital de forma
secuencial en el tiempo. Esta posibilidad permitiría emplear un único dispositivo
programable en lugar de varios.

14
¾ La distinción entre CPLDs y FPGAs irá disminuyendo en el futuro, con la
aparición de dispositivos híbridos.

La principal dificultad que encuentra el usuario de dispositivos programables radica en


la elección del fabricante. Esto se debe a que dos FPGAs con dos arquitecturas
diferentes resultan difícilmente comparables de una manera objetiva. Cada fabricante
publica un sólo numero de compuertas equivalentes para cada dispositivo que limita la
comparación entre ellos. Aunque estos datos sirven de guía al ingeniero, tienen sin
embargo algunos inconvenientes, por ejemplo, algunas FPGAs llevan mega-celdas de
RAM dentro de la matriz y estas celdas son contadas en el número de compuertas
equivalentes. Además las limitaciones en la ruteabilidad, y las restricciones de tiempo
de cada CPLD/FPGA, reducen el porcentaje de compuertas utilizables, normalmente
hasta un 70 u 80% del número publicado por el fabricante. Este porcentaje es una
función de cada diseño y es entonces difícil estimar.

15