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

Introducción a los PLDs

Embed Size (px)

Citation preview

Page 1: Introducción a los PLDs

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

Page 2: Introducción a los PLDs

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

Page 3: Introducción a los PLDs

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

Page 4: Introducción a los PLDs

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

Page 5: Introducción a los PLDs

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

Page 6: Introducción a los PLDs

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

Page 7: Introducción a los PLDs

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

Page 8: Introducción a los PLDs

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

Page 9: Introducción a los PLDs

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

Page 10: Introducción a los PLDs

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

Page 11: Introducción a los PLDs

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

Page 12: Introducción a los PLDs

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

Page 13: Introducción a los PLDs

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

Page 14: Introducción a los PLDs

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

Page 15: Introducción a los PLDs

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