Professional Documents
Culture Documents
La siempre creciente capacidad de los circuitos integrados creó una oportunidad para
los fabricantes de diseñar PLDs más grandes para aplicaciones mayores de diseño digital.
Sin embargo, un dispositivo demasiado grande usando una estructura alambrada del estilo
de las figuras 1.4 y 1.5 sería demasiado lento y, desde el punto de vista del fabricante, no se
haría un uso efectivo en cuanto al costo del área del chip [5].
Como escalar esta estructura resultaba irrealizable, los fabricantes idearon un
dispositivo lógico programable complejo (CPLD) que consistía, básicamente, en una
colección de PLD individuales en un simple chip, en compañía de una estructura de
interconexión programable que permitía que los PLD fueran conectados entre sí en el chip
de la misma manera que un diseñador conectaría externamente PLDs individuales (figura
1.6).
Figura 1.6. Arquitectura genérica de un CPLD
Actualmente, las compañías Xilinx, Altera y Lattice fabrican CPLDs que difieren en
las PLDs internas (tanto el array de puertas AND como en las macroceldas de salida), en
los bloques de entrada y salida, y en la interconexión programable.
1.3. FPGAs
La invención del microprocesador retrasó al menos una década la aparición del
primer dispositivo FPGA. Siempre teniendo en mente las ventajas e inconvenientes de los
ASIC, Xilinx sacó al mercado un Gate Array programable por campo, es decir, la
sustitución de la interconexión fija de los Gate Arrays por una serie de pistas metálicas
conectables por transistores de paso controlados por un conjunto de bits de control
almacenados en una memoria interna. De hecho, la interconexión reconfigurable ya había
sido detallada en un artículo de 1967 [6]. Así, estos dispositivos surgen en 1985 con el
nombre de LCA (Logic Cell Array), aunque posteriormente se renombraron como FPGA
(Field Programmable Gate Array)
Arquitectura general
Básicamente, en una FPGA la lógica se divide en un gran número de bloques lógicos
programables que son individualmente más pequeños que un PLD (figura 1.7). Se
encuentran distribuidos a través de todo el chip en un mar de interconexiones
programables y todo el arreglo se encuentro rodeado de bloques de E/S programables
(IOBs). Un bloque lógico programable (CLB o slice) de FPGA es menos eficiente que un
PLD típico, pero un chip FPGA contiene muchos más bloques lógicos que los PLD que
contiene un CPLD del mismo tamaño [5].
Celda lógica
Bloque de memoria
Multiplicador dedicado
Bloque de E/S
DCM
Buffer de reloj
F4 SR
LUT
F3 D
F Q XQ
F2 CE
F1
X
=multiplexor programable
SRAM X X
X X X
X X X
f f f
X X X
X X X
b a X X
X X
2-LUT
c b a X
X
3-LUT X
X
d c b a
4-LUT
Sin embargo, el número de variables con que pueden diseñarse las LUTs no
es trivial. Si intentamos realizar una LUT con un número de entradas elevado, el
área que ocuparía sería relativamente grande, con lo que el número de slices dentro
de la FPGA se reduciría. Si, por el contrario, se opta por LUTs con pocas entradas,
cabrían muchos slices, pero la rutabilidad sería complicada, se necesitarían muchas
conexiones por lo que el retardo debido al cableado entre los slices sería importante.
Por lo que puede apreciarse en las figura 1.11, parece alcanzarse un compromiso
entre el área y la velocidad usando LUTs de 4 entradas [8].
Retraso promedio (ns)
Área normalizada
8 Simple
4 Doble
3 Larga
2
2 CLB 2
Conexión
directa
3 Larga
6 4 8 4 2
Sería posible conectar dos CLBs no adyacentes usando líneas simples, pero
deberían pasar por un conmutador programable para cada salto, lo que agregaría
retardos adicionales. Las líneas de los grupos doble viajan pasados dos CLBs antes
de llegar a un conmutador, de modo que proporcionan retardos más cortos para
conexiones más largas. Para conexiones muy largas, se emplean los grupos largos,
que no pasan por ningún conmutador programable y recorren todo la FPGA en
vertical u horizontal.
• Otros componentes dentro de una FPGA: Las FPGAs muchas veces se evalúan
en función de la flexibilidad de sus arquitecturas y la consistencia de los resultados
obtenidos de un ajuste después de que se han efectuado pequeños cambios de
diseño. De esta manera, los fabricantes proporcionan recursos extra en sus
arquitecturas para ayudar a asegurar resultados consistentes e implementar algunos
sistemas de manera muy eficiente.
Así, si las FPGAs más antiguas eran muy homogéneas, como las XC4000
[10], las que imperan hoy en día, familias como la Spartan-3 [11-12] o Virtex-4 [13-
14], representantes de la gama baja y la gama alta de las FPGA de Xilinx
respectivamente, disponen de diversos dispositivos embebidos dentro del
dispositivo, como memorias, multiplicadores, DCMs (administradores de reloj), e
incluso microprocesadores.
Cada LUT puede configurarse como una memoria de 16x1 bits o como un registro
de desplazamiento que puede ser de 16 bits como máximo. Configurados como memoria
distribuida, se puede almacenar hasta 30Kbits.
• Circuitos MULT18x18
Se trata de multiplicadores de números de 18 bits en complemento a dos. El
resultado tiene una precisión de 36 bits. A continuación, en la tabla 1.3 se muestra
en el número de estos circuitos en las FPGAs de la familia Spartan-3:
Spartan-3
Dispositivo Multiplicadores
XC3S50 4
XC3S200 12
XC3S400 16
XC3S1000 24
XC3S1500 32
XC3S2000 40
XC3S4000 96
XC3S8000 104
• Circuitos DSP48
Estos circuitos proporcionan un mayor nivel de integración de procesado de
señales que las anteriores FPGAs del fabricante. Se suele disponer de un buen
número de estos circuitos teniendo en mente un empleo mínimo de lógica genérica
adicional, lo que conlleva a un menor consumo, alto rendimiento en términos de
velocidad, y un uso eficiente de los recursos del dispositivo [15]. La figura 1.13
muestra dos circuitos DSP48. Estos módulos aparecen asociados en parejas pues
comparten el puerto C, además de líneas de interconexión dedicadas.
Figura 1.13. Aspecto de dos DSP48
El módulo fundamental de este circuito es el multiplicador 18x18 de números
en complemento a dos. Este multiplicador viene acompañado de un
sumador/restador/acumulador de 48 bits, el cual es necesario en multitud de
aplicaciones dentro del procesado digital de señal. El resto de componentes de la
figura proporcionan una enorme posibilidad de configuración del circuito, lo que se
revierte una gran versatilidad y alta velocidad de funcionamiento. De esta manera,
el DSP48 puede implementar funciones matemáticas básicas de manera sencilla y a
alta velocidad, como sumadores/restadores, acumuladores, varios tipos de
multiplicadores, multiplicadores/acumuladores (MAC), multiplexores,
desplazadores, contadores, divisores y raíces cuadradas. Así, la asociación de varios
de estos circuitos se presenta como un recurso muy potente para la implementación
de funciones avanzadas de manera eficiente [16].
A continuación se muestra, en la tabla 1.4, los DSP48 que disponen las
distintas FPGAs de la familia Virtex-4.
Virtex-4
Sub-Familia LX Sub-Familia SX Sub-Familia FX
Dispositivo DSP48 Dispositivo DSP48 Dispositivo DSP48
XC4LX15 32 XC4VSX25 128 XC4VFX12 32
XC4LX25 48 XC4VSX35 192 XC4VFX20 32
XC4LX40 64 XC4VSX55 512 XC4VFX40 48
XC4LX60 64 XC4VFX60 128
XC4LX80 80 XC4VFX100 160
XC4LX100 96 XC4VFX140 192
XC4LX160 96
XC4LX200 96
La familia Virtex-4 SX ofrece la más alta relación de DSP48s frente a slices, así
que ésta es la familia adecuada para realizar aplicaciones donde existe un alto
componente matemático.