Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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).
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.
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:
¾ 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:
¾ Sistemas microprocesadores.
4
DESCRIPCIÓN DE LOS DISPOSITIVOS PROGRAMABLES
¾ SPLDs
S0 = A ⊕ B ; S1 = /AB ; S2 = A/B ; S3 = B
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.
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.
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.
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.
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:
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
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:
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.
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:
¾ 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:
14
¾ La distinción entre CPLDs y FPGAs irá disminuyendo en el futuro, con la
aparición de dispositivos híbridos.
15