Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Índice General
m m
Bloque Bloque
lógico lógico
n n
Matriz de
m interconexiones m
Bloque Bloque
entradas / salidas
entradas / salidas
lógico programables lógico
n n
m m
Bloque Bloque
lógico lógico
n n
Bloque m m Bloque
lógico lógico
n n
Cada bloque lógico es una PAL con un plano AND y una macrocelda de salida, que se
conecta con el exterior y se realimenta a la matriz de interconexiones programable. La figura
6.2 es un detalle del esquema genérico anterior.
Macrocelda
Plano
AND
celda I/O
bloque de Macrocelda
interconexiones
programables
Las tecnologías de programación son las mismas que las que utilizaban las sPLDs, esto
es, fusible, EPROM, EEPROM y Flash.
4 Dispositivos Programables de Alta Capacidad
pin de entrada
bloque
lógico
bloque
lógico
pin de entrada
bloque
lógico
Señales de selección
lógico
Matriz de interconexiones
programables
Bloque
I/O Matriz de lógico
interconexiones
I/O
programables
Bloque
entradas / salidas
I/O
lógico
I/O
Bloque
Reloj global
3 lógico
set/reset global
1
Bloque
tri-estado global
lógico
2 ó 4
una cPLD con tecnología Flash, que admite hasta 10.000 ciclos de programación y borrado.
Siguiendo el esquema general de un cPLD, cuenta con varios bloques lógicos dependiendo de
qué elemento de la familia se trate. Cada bloque lógico es una 36V18, esto es, una PAL con
18 macroceldas de salida versátiles: programables con salida a registro o combinacional. El
elemento más básico de la familia es la XC9536, llamada así porque cuenta con 36 macro-
celdas de salida, permitiendo utilizar hasta un total de 36 biestables. La gama de cPLDs es
variable hasta llegar a la XC95576, con un total de 576 macroceldas de salida. Los tiempos de
propagación también se mueven entre los 5 ns de la 9526 y los 10ns de la 95576. La tabla 6.1
6 Dispositivos Programables de Alta Capacidad
La serie 9500 cuenta además con un puerto JTAG que permite testear el diseño o pro-
gramarlo en placa usando este estándar. Asimismo, dispone de varias entradas de reloj y un
set/reset que llegan a todos a los bloques lógicos.
Macrocelda Macrocelda
Lógica del
sistema
Macrocelda Macrocelda
Macrocelda Macrocelda
Macrocelda Macrocelda
Macrocelda Macrocelda
Algunos puerto 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án-
dolos en cascada mediante las señales TDI y TDO, es posible testear las conexiones de
varios dispositivos, como se indica en la figura 6.7
Lógica de control del puerto JTAG Lógica de control del puerto JTAG Lógica de control del puerto JTAG
TDI TDO TDI TDO TDI TDO
Figura 6.7: Testeo de las conexiones de varios dispositivos a través de un puerto JTAG
• "Through-hole": son los encapsulados DIP ("Dual In-line Package", figura 6.8a) y
PGA ("Pin Grid Array"), caracterizados porque tienen pines "largos"que admiten
el empleo de un zócalo. La ventaja que tiene este tipo de encapsulado estriba en
un montaje más sencillo, mayor resistencia mecánica (interesante en aplicaciones
8 Dispositivos Programables de Alta Capacidad
Bloque
lógico
Canales de rutado
horizontales
Canales de rutado
verticales Bloque
entrada salida
cPLD FPGA
Figura 6.10: Esquema de bloques de la arquitectura interna de una cPLD y una FPGA
través de la matriz de interconexiones programable. Cada bloque lógico es una PAL con una
parte combinacional que permite realizar un gran número de funciones lógicos programables,
más un biestable asociado al pin de entrada salida e caso de encontrarse habilitado. La ar-
quitectura de la FPGA cuenta también con un bloque lógico 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 una cPLD. La parte secuencial posee uno o dos biestables, que ya no están siempre
asociados a un pin de entrada salida, pues los bloques lógicos se distribuyen regularmente en
todo el dispositivo.
Con respecto a la densidad, las cPLDs poseen una densidad media o baja en tanto que
las FPGAs tienen unas densidades altas con capacidades crecientes que llegan incluso hasta
más del millón de puertas 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 a priori en una 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 de forma exacta a posteriori, pues vendrán
determinados por el rutado final de las señales.
lógica de tres entradas f = X · Y + Z. La figura 6.11 indica cuál debe ser el contenido de
un LUT de 8 × 1.
X
Y
f=XY+Z LUT 8x1
Z
0
1
Tabla de verdad 0
X 1
X Y Z f Y Salida
Z 0
0 0 0 0 1
0 0 1 1 1
0 1 0 0 1
0 1 1 1
1 0 0 0
1 0 1 1
1 1 0 1
1 1 1 1
Figura 6.11: Ejemplo de implementación de una función lógica de tres entradas en una LUT
de 8 × 1
A0 A1 SA
0
α
1
0 f
1
0 γ
β
1
B0 B1 SB S0 S1
α = SA A1 + SA A0 (6.1)
6.2 Estructura de una FPGA 11
β = SB B0 + SB B1 (6.2)
γ = S0 + S1 (6.3)
De donde resulta f = γ α + γ β. Evidentemente, cualquier función lógica que se
desee implementar debe respetar las ecuaciones anteriormente escritas. Si se quiere
realizar la misma función lógica del ejemplo anterior, f = X Y + Z, será necesario
elegir adecuadamente la asignación de las entradas para tener el resultado requerido.
Si tomamos A0 = Y , A1 = 0 y SA = X en la ecuación (6.1), resulta α = XY . Tomando en
la ecuación (6.2) B0 = 1, B1 = 0 y SB = 0, resulta que β = 1. Finalmente, sustituyendo
S0 = Z y S1 = 0 en la ecuación (6.2) se obtiene γ = Z. A partir de estos resultados, la
salida f = Z X Y + Z = X Y + Z. A través de otras asignaciones se puede llegar al
mismo resultado. Lo que está claro es que no podemos efectuar cualquier función lógica
de 8 entradas, pues tenemos las restricciones de las ecuaciones lógicas.
conexión
metal via metal via
SiO 2 SiO 2
RAM estática. Las celdas de memoria RAM estática controlan el estado de los transis-
tores de paso que actúan como interruptores. Programando estas celdas de memoria se
pueden realizar conexiones entre cables verticales y horizontales, como en el ejemplo de
la figura 6.14.
Las ventajas e inconvenientes de las celdas de RAM estática como elemento de progra-
mació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 una circuitería externa de programación.
• El tamaño de una celda RAM estática es mucho mayor que el de un antifusible.
• 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 dispositivos auxiliar para guardar la
configuración interna, como en el caso de la SRAM
6.2 Estructura de una FPGA 13
Bloque de
entrada salida
Bloque lógico
(IOB)
(CLB)
Interconexiones
programables
C1 C2 C3 C4
H1 DIN S/R EC
Control
set reset
SD
G4 D Q YQ
Generador
G3 de funciones
G
G2
EC
RD
G1
"1"
Generador Y
de funciones
H
F4
Generador Control
set reset
F3 de funciones
F
SD
F2 D Q XQ
F1
EC
RD
"1"
X
clk
Los bloques lógicos de entrada y salida o IOBs proporcionan la interfaz entre los pines
externos y la lógica interna del integrado. Cada IOB controla un pad externo que puede ser
configurado como entrada, salida o bidireccional. La figura 6.17 es un detalle de la estructura
interna de una IOB. Las señales I1 e I2 son entradas a la lógica interna y pueden pasar por
Vcc
Pasivo,
Control de
Pull-up
slew-rate
Pull-down
T/OE
D Q Buffer
O de salida
CE
Pad
I1
I2
D Q
Delay
Clock enable
CE
IK (Input clock)
Flip Flop / Latch
un biestable incluido en la propia IOB o pasar directamente desde el pad de entrada, según la
programación interna de la IOB. La señal de salida O procedente de la lógica interna también
posee la posibilidad de pasar por un biestable. Los dos biestables internos de la IOB poseen
señales de reloj independientes y carecen de set y reset, a diferencia de los biestables de la
CLB. Finalmente, la señal T permite controlar el estado de alta impedancia del buffer de
salida, necesario para implementar pads bidireccionales o conectar la salida a un bus.
Conexiones directas. Son las que tienen lugar entre CLBs adyacentes. Estas conexiones
se indican mediante flechas en la figura 6.18.
Líneas largas. En diseños complejos, siempre existen líneas que deben recorrer el inte-
grado o que tienen longitudes grandes, como ocurre con las señales de reloj o los buses
internos. Para evitar que estas líneas atraviesen muchos elementos de conexión, que in-
troducen retrasos, se contempla la existencia de líneas largas, que recorren el integrado,
y que normalmente se usan para llevar la señal de reloj o soportar buses internos.
16 Dispositivos Programables de Alta Capacidad
CLB CLB
Matriz de Matriz de
conexiones conexiones
CLB CLB
La familia XC4000 tiene FPGAs que oscilan entre las 3.000 y las 62.000 puertas. Este
no es un valor excesivo si se tiene en cuenta que existen ya FPGAs que superan el millón de
puertas y además de forma creciente en un futuro inmediato. No obstante, la familia XC4000
posee una capacidad suficiente para implementar diseños de cierta complejidad. La tabla 6.2
es un resumen de los distintos miembros de la familia.
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 dis-
positivos de baja tensión.
6.2 Estructura de una FPGA 17
Las líneas futuras, que veremos hechas realidad en los próximos años, trabajan en los
siguientes puntos:
Tecnología ( µ
m)
1.2
Menor coste 1
5V
Menor potencia 0.4
3.3 V
2.5 V
0.2
1.8 V
1.3 V
0
1990 1992 1994 1996 1998 2000 2002
Un acumulador de 16 bits.
Cada uno de los fabricantes implementa estos circuito en sus dispositivos programables
y entrega los resultados y prestaciones. Concretamente, indica el número de veces que cada
uno de los circuitos puede implementarse en el dispositivos bajo estudio. Caso de ser más de
una, las salidas de los circuitos se unen a la entrada de los adicionales. También se indican
las prestaciones en velocidad, cómo se ha realizado la optimización, la herramienta utilizada,
etc. El PREP se encarga de recoger, verificar y publicar estos datos.
Aunque estos datos sirven de guía al ingeniero, tienen sin embargo algunos inconve-
nientes:
Los circuitos utilizados como patrón de comparación no son los más adecuados para
dispositivos de gran capacidad, pues repiten una y otra vez el mismo circuito hasta
ocupar toda la capacidad, en lugar de usar un sistema más realista.
Los circuitos anteriores no dan idea de la facilidad para conseguir esos resultados ni de
las prestaciones de los sistemas de desarrollo utilizados.
Más información sobre las actividades del PREP pueden encontrase en su página web,
http://www.prep.org.
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.
Sistemas microprocesadores.
6.3 Resumen de los dispositivos programables 19
La figura 6.20 ubica los dispositivos programables dentro de los dispositivos lógicos.
Dispositivos
lógicos
Lógica Micro-
ASIC
discreta procesadores
Dispositivos programables a nivel de máscaras, constituidos por las Gate Arrays, Stan-
dard cells y los circuitos integrados Full-Custom. Estos dispositivos aparecen en la figu-
ra 6.20 en orden creciente de programabilidad a nivel de máscaras, de modo que los
circuitos full-custom constituyen circuitos totalmente a medida.
La diferencia entre ambos tipos de dispositivos se centra en el llamado NRE ("Non Re-
curring Engineering") o ingeniería no recuperable. Se trata del coste fijo que suponen las
máscaras del proceso de fabricación. En el caso de dispositivos programables eléctricamente
el coste NRE es cero, ya que se trata de dispositivos estándar que pueden comprarse en el mer-
cado. Por contra, los dispositivos programables a nivel de máscaras tienen un NRE bastante
alto, ya que las máscaras son específicas de ese diseño y debe pagarlas el cliente. Se trata
pues de un coste fijo asociado a la propia fabricación. En cuanto al coste variable o coste por
unidad, resulta mucho más barato el dispositivo programado con máscaras, donde no es nece-
sario incluir elementos de programación y, en consecuencia, el área final de silicio es menor.
De todo lo anterior se deduce que el hecho de usar uno u otro tipo de dispositivos es un proble-
ma económico, que depende de la tirada final de integrados requerida. Para tiradas grandes,
el coste NRE de los dispositivos de programados con máscaras se reparte entre muchos inte-
grados, afectando de manera pequeña a cada uno de ellos, de modo que el coste por unidad
no se incrementa demasiado y son más rentables. Para tiradas bajas, el coste NRE, que no
existe en cPLDs, FPGAs ..., incrementa tanto el coste por unidad, que dejan de ser rentables.
El límite de la tirada se obtiene calculando el punto de apalancamiento o "breakeven point".
20 Dispositivos Programables de Alta Capacidad
Veamos un ejemplo. Supongamos que se desea realizar un diseño digital para el que tenemos
como alternativas realizarlo con un standard cells o con una FPGA.
El coste NRE de la opción standard cell es de 27.000$. A esto hay que sumarle el coste
de la ingeniería y las herramientas de desarrollo, que suman un total de 72.000$. Final-
mente, el coste por unidad es de 10$.
El coste NRE de la opción FPGA es cero. El coste de ingeniería y herramientas es más
pequeño que en la opción anterior, unos 23.000$. El coste por unidad es bastante más
caro, 75$ por cada integrado.
Si denominamos X al número de piezas fabricadas, el "brakeven point"se calcula de la sigu-
iente forma:
Resolviendo la ecuación (6.4) resulta X = 1.169 unidades. esto significa que, para tiradas
iguales o inferiores a esa cantidad es más rentable la opción de la FPGA. Para tiradas superi-
ores, resulta más rentable utilizar standard cells.
El problema que acabamos de resolver es puramente económico. Sin embargo, existen
otros factores que también hay que tener en cuenta al tomar la decisión y que, indirecta-
mente, también tienen incidencia en el aspecto económico. Estos son el riesgo y el llamado
time to market o tiempo que tarda nuestro diseño en comercializarse. Ambos factores se de-
cantan hacia el lado de los dispositivos programables eléctricamente. El riesgo es menor, pues
se pueden reprogramar. Un fallo en un dispositivo programado a nivel de máscaras puede
suponer que resulte inservible. Por este motivo, en los dispositivos programables a nivel de
máscaras de lleva a cabo una preserie antes de la tirada completa, para validar el diseño. Por
lo que respecta al time to market, también es bastante inferior en el caso de los dispositivos
programables estudiados, ya que los puede programar el propio usuario y no necesita de la
elaboración de máscaras que implican un mayor tiempo de fabricación. Un diseño como el del
ejemplo anterior puede tardar del orden de 11 semanas si se emplea una FPGA y unas 32
semanas con un circuito standard cell. El retraso en llegar al mercado puede suponer unas
pérdidas de beneficios cuantificables que alterarían el punto de apalancamiento calculado ha-
cia un valor mucho más alto.
Para evitar el problema del coste unitario alto de los dispositivos programables eléc-
tricamente, los fabricante ofrecen la posibilidad de migrar un diseño a lo que se llama un
dispositivo "hardwire". Son dispositivos exactamente iguales a las FPGAs o cPLDs, pero en
los que los elementos de programación se sustituyen por metalizaciones. Evidentemente, no
se pueden reprogramar. Pero se usa para migrar diseños ya probados en el correspondiente
dispositivo programable, sustituyendo sus conexiones ya definidas por metalizaciones, lo que
da lugar a un área mucho menor de silicio y reduce el coste por unidad, sin añadir ningún
coste de ingeniería adicional.
Captura esquemática:
La introducción del diseño se puede efectuar desde una captura esquemática. La her-
ramienta de desarrollo CAD nos permite dibujar el circuito digital a partir de los símbo-
los de una librería suministrada por el fabricante en función del dispositivo final elegido
6.4 Sistemas de desarrollo 21
Captura HDL :
esquemática : - VHDL
- Viewlogic - Verilog
- Cadence - ABEL
- Orcad
- Mentor
Síntesis
Simulación
Simulación
Optimización
Fitting
Placement
Routing
Simulación
post-layout
Fichero de
configuración
Programación
para implementar el diseño. Existen diferentes entornos, entre los que Viewlogic, Orcad,
Cadence o Mentor figuran entre los más conocidos.
Síntesis:
Es el proceso por el cual se transforma una descripción en alto nivel, mediante un
lenguaje HDL, a un conjunto de puertas lógicas, en base a una librería seleccionada.
El resultado es un archivo de netlist o archivo de conexiones. El proceso de síntesis se
dice que depende de la tecnología en el sentido de que se realiza sobre una librería
concreta de un fabricante determinado.
Simulación:
Este módulo establece el primer bucle iterativo de todo diseño digital, e interviene tanto
desde la captura esquemática como desde los lenguajes HDL. Se trata de comprobar
la funcionalidad del diseño introduciendo unos estímulos y comprobando que el compor-
tamiento resultado es el deseado. La herramienta de simulación es uno de los elementos
más importantes de un sistema de desarrollo y, quizás, donde más tiempo puede estar
trabajando el diseñador. Su facilidad en el manejo y sus prestaciones son fundamentales
a la hora de elegir un sistema de desarrollo. En el caso de la introducción de un diseño
a partir de un lenguaje HDL existen dos tipos de simulaciones que pueden realizarse:
22 Dispositivos Programables de Alta Capacidad
• Simulación del código HDL: se ha indicado con una línea punteada en la figura
6.21. Se trata de simular únicamente la funcionalidad o comportamiento descritos
en HDL. Es, pues, una simulación independiente de la tecnología, porque todavía
no se ha realizado la síntesis sobre una librería concreta.
• Simulación en puertas: es la simulación que se lleva a cabo tras el proceso de sín-
tesis. Por tanto, depende de la tecnología concreta con la que se está trabajando.
Optimización:
Consiste en la optimización de las expresiones lógicas en función de los recursos disponibles
en el dispositivo final y de las restricciones introducidas por el usuario, como pueden ser
restricciones de tiempo o de área.
Fitting:
Consiste en tomar la lógica producida por los procesos de síntesis y optimización y par-
ticionarla, si es necesario, en estructuras que se acomoden lo mejor posible a los bloques
lógicos del dispositivo final de implementación. A veces se usa también el término "map-
ping"para referirse a esta tarea.
Placement y routing:
El proceso conocido como placement consiste en la colocación de los bloques resultado
del proceso de fitting en posiciones óptimas para su posterior cableado. El proceso de
routing es el cableado entre los bloques lógicos y de éstos con los bloques de entrada y
salida. Ambos procesos de placement y routing llevan a cabo complejos problemas de
optimización que además son fuertemente no lineales, ya que tanto para la colocación
como para él cableado existe un número finito de recursos disponibles. La resolución
de estos problemas de optimización utilizan técnicas que contienen una componente
probabilística, lo que puede dar lugar a que se llegue a soluciones diferentes lanzando
dos procesos de placement y routing sobre el mismo diseño.
Simulación post-layout:
La simulación post-layout se lleva a cabo no tanto para verificar la funcionalidad como
para comprobar que las restricciones en tiempo son las requeridas. Por eso se realiza
una vez que se tiene el diseño muy cercano a la realidad, tras el placement y routing.
En el caso de las FPGAs, no se puede tener unos parámetros de tiempo predecibles como
en las sPLDs o las cPLDs. Los tiempos de propagación de las señales dependen de su
cableado final. En este caso, es imprescindible la simulación post-layout para validar el
diseño.
Programación:
El resultado final de los procesos anteriores es llegar a un archivo de programación que
permita configurar al dispositivo programables con la circuitería lógica diseñada.
La mayor parte de los procesos del diagrama de la figura 6.21 tienen lugar de forma
automática y transparente al usuario. Tan sólo la entrada (esquemática o HDL) y las simula-
ciones son realizadas manualmente por el usuario.