1.1. Tecnologías de diseño de circuitos integrados



Documentos relacionados
CONTROL DIGITAL PARA CONVERTIDOR MULTINIVEL ALIMENTADO CON ENERGÍA SOLAR. Anexo A: FPGA. Introducción

Encuesta sobre utilización de la microelectrónica en la Argentina

Técnicas de Programación Hardware: CAD para FPGAs y CPLDs

LÓGICA PROGRAMABLE. Introducción Simple PLDs Complex PLDs FPGAs. Dpto. Ingeniería Electrónica y Comunicaciones

Introducción a los FPGAs y el Cómputo Reconfigurable Miguel Morales Sandoval INAOE, 2006

Dispositivos Lógicos Programables (FPGAs) Guillermo Güichal Emtech

Metodologías de diseño de hardware

Curso S08 para Cavernícolas

Electrónica Digital II

UNIDADES FUNCIONALES DEL ORDENADOR TEMA 3

BLOQUE 2. (PARTE 3: Tema 1) CONJUNTO CONFIGURABLE DE PUERTAS FPGA (Field Programmable Gate Array) Clasificación y descripción

ÍNDICE DISEÑO DE CONTADORES SÍNCRONOS JESÚS PIZARRO PELÁEZ

5. Metodologías de diseño de un ASIC

TEMA VII: DISEÑO SECUENCIAL PROGRAMABLE

CAPITULO 5. DISPOSITIVOS DE LOGICA RECONFIGURABLE

Introducción a FPGAs. Contenido

Orientado a reducir costes en el proceso de fabricación disminuyendo el número de pasos de fabricación

El tamaño, estructura, número de bloques y la cantidad y conectividad de las conexiones varian en las distintas arquitecturas.

Laboratorio de Diseño de Sistemas Digitales

Figura 1. Símbolo que representa una ALU. El sentido y la funcionalidad de las señales de la ALU de la Figura 1 es el siguiente:

Universidad Autónoma de Baja California Facultad de Ingeniería Mexicali

18. Camino de datos y unidad de control

DISCOS RAID. Se considera que todos los discos físicos tienen la misma capacidad, y de no ser así, en el que sea mayor se desperdicia la diferencia.

Curso Completo de Electrónica Digital

App para realizar consultas al Sistema de Información Estadística de Castilla y León

SINTESIS Y DESCRIPCIÓN DE CIRCUITOS DIGITALES UTILIZANDO VHDL ANTECEDENTES

Tema 11: Instrumentación virtual

DISPOSITIVOS DE LÓGICA PROGRAMABLES EN CAMPO (FPGA)

Circuitos Electrónicos. Septiembre 2005/2006. Problema 1º parcial

Maxpho Commerce 11. Gestión CSV. Fecha: 20 Septiembre 2011 Versión : 1.1 Autor: Maxpho Ltd

Elementos requeridos para crearlos (ejemplo: el compilador)

Circuitos Electrónicos. Primer parcial curso

Introducción a las redes de computadores

GENERALIDADES DE BASES DE DATOS

Alternativas de implementación: Estilos

UNIVERSIDAD TECNOLOGICA ECOTEC DIEGO BARRAGAN MATERIA: Sistemas Operativos 1 ENSAYO: Servidores BLADE

El Modelo de Referencia OSI

Conmutación. Conmutación telefónica. Justificación y definición.

Capítulo 12: Indexación y asociación

Día :00h Lugar: Obra Social Ibercaja, Sala De actos, Rambla Ferran 38, 3º, Lleida

Transformación de binario a decimal. Transformación de decimal a binario. ELECTRÓNICA DIGITAL

Clase 20: Arquitectura Von Neuman

Tipos de instalaciones

Gestión de la Configuración

1.2 SISTEMAS DE PRODUCCIÓN

INSTITUTO POLITÉCNICO NACIONAL ESCUELA SUPERIOR DE INGENIERIA MECANICA Y ELECTRICA INGENIERIA EN COMUNICACIONES Y ELECTRÓNICA ACADEMIA DE COMPUTACIÓN

FPGA (CAMPO DE MATRIZ DE PUERTAS PROGRAMABLES).

INTRANET DE UNA EMPRESA RESUMEN DEL PROYECTO. PALABRAS CLAVE: Aplicación cliente-servidor, Intranet, Área reservada, Red INTRODUCCIÓN

Curso Excel Básico - Intermedio

CODIFICADORES. Cuando solo una de las entradas está activa para cada combinación de salida, se le denomina codificador completo.

Adobe Illustrator CS5. Duración: Objetivos:

Seminario Electrónico de Soluciones Tecnológicas sobre VPNs de Extranets

Un filtro general de respuesta al impulso finita con n etapas, cada una con un retardo independiente d i y ganancia a i.

Plan de ahorro en costes mediante telefonía IP

Base de datos en Excel

Capítulo 5. Álgebra booleana. Continuar

No se requiere que los discos sean del mismo tamaño ya que el objetivo es solamente adjuntar discos.

Intel Tera-Scale Computing Alumno: Roberto Rodriguez Alcala

CAPÍTULO 1 Instrumentación Virtual

INTRODUCCION A LA PROGRAMACION DE PLC

Una computadora de cualquier forma que se vea tiene dos tipos de componentes: El Hardware y el Software.

forma de entrenar a la nuerona en su aprendizaje.

DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI. Ingeniería Electrónica

Tema 16 ELECTRÓNICA DIGITAL LENGUAJES DE DESCRIPCIÓN DE LOS SISTEMAS DIGITALES (PARTE 1)

x

CAPAS DEL MODELO OSI (dispositivos de interconexión)

Organización de Computadoras. Turno Recursantes Clase 8

En los últimos años, se ha presentado una enorme demanda por servicios portátiles,

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal)

Estructura y Tecnología de Computadores (ITIG) Luis Rincón Córcoles Ángel Serrano Sánchez de León

Operación de Microsoft Excel

Ventajas del software del SIGOB para las instituciones

Capítulo 1. 10I 1.0 Introducción 1.1 Diseño de LAN 1.2 El entorno conmutado. Presentation_ID 2

PREGUNTAS DE RESPUESTA CORTA SELECTIVIDAD TEMA 4:

Figura 1: Símbolo lógico de un flip-flop SR

Diseño dinámico de arquitecturas de información

Informe final Proyecto de Innovación Docente ID11/129. Uso de FPGAs y medios audiovisuales en la docencia de la Electrónica Digital

CONVERTIDORES DIGITAL ANALÓGICO Y ANALÓGICO - DIGITAL

CAPÍTULO 3 MÓDULO DIGITAL PARA CONVERSIÓN DE VIDEO

MEMORIAS DE SEMICONDUCTORES

Introducción. Ciclo de vida de los Sistemas de Información. Diseño Conceptual

LINEAMIENTOS ESTÁNDARES APLICATIVOS DE VIRTUALIZACIÓN

CELERINET ENERO-JUNIO 2013 ESPECIAL

Los mayores cambios se dieron en las décadas de los setenta, atribuidos principalmente a dos causas:

HISTORIA Y EVOLUCIÓN DE LOS SISTEMAS OPERATIVOS

La Unidad Procesadora.

Estructuras de Control - Diagrama de Flujo

APLICAR LAS NUEVAS TECNOLOGÍAS EN LOS CICLOS DE ELECTRICIDAD-ELECTRÓNICA EN ANDALUCÍA

INSTALACIÓN, OPERACIÓN Y PROGRAMACIÓN DE EQUIPOS Y SISTEMAS TELEFÓNICOS

UNIVERSIDAD DE ORIENTE FACULTAD DE CIENCIAS ECONOMICAS

Práctica 5. Curso

Sistemas de numeración

Seminario Electrónico de Soluciones Tecnológicas sobre Content Networking

Tema 3. Medidas de tendencia central Introducción. Contenido

pymegnu v2.0 PRESENTACIÓN DE PRODUCTOS

TIPOS DE REDES QUE CONFORMAN INTERNET. LAN, WAN, MAN, WLAN, WMAN, WWMAN, SAN y PAN: Qué significa cada término?

Breve Curso de VHDL. M. C. Felipe Santiago Espinosa. Profesor Investigador UTM

Sistemas de Computadoras Índice

La presente tesis pretende que los estudiantes observen la teoría de las acciones de control

Transcripción:

1.1. Tecnologías de diseño de circuitos integrados Durante la década de los 80, varias compañías intentaron resolver el viejo compromiso de complejidad versus estandarización. Por un lado se tenía la opción barata del microprocesador, componente completamente estándar, y por otro lado los ASICS denominados full-custom, es decir, circuitos integrados de aplicación específica diseñados completamente a medida, óptimos pero muy caros. En estos, los ingenieros diseñaban todas las máscaras presentes en el proceso de fabricación de los circuitos integrados. También existía la posibilidad de realizar diseños denominados semi-custom, con las tecnologías denominadas Gate Array y Standard Cells [3]. En la tecnología Gate Arrays se estandarizan las etapas iniciales de fabricación, por lo que los clientes comparten una estructura similar en forma de filas de transistores sin interconexión. La conexión se realizaba a medida en las últimas fases del proceso de fabricación, diseñando a media una o más capas de metalizaciones, finalizando así el diseño. La tecnología Standard Cells, en cambio, no era un proceso premanufacturado, pero se dispone de células prediseñadas y estandarizadas, como RAMs, ALUs, multiplicadores, etcétera, con lo que se optimiza en densidad, velocidad y área respecto los Gate Arrays. Una de las maneras de caracterizar las prestaciones de un diseño digital es evaluar conjuntamente el área que ocupa, la velocidad máxima a la que puede operar y la potencia que consume, lo que se denomina figura ATP (área-tiempo-potencia). Teniendo esto en cuenta, los ASICs tienen mejores prestaciones que los componentes estándares tipo microprocesador, además de ser más confidenciales y fiables. Por el contrario, los ASICs son mucho más difíciles de depurar y tienen un coste fijo elevado, por lo que requieren un volumen de fabricación muy elevado. Pero lo peor era, sin duda, la imposibilidad de corregir errores, ya que una vez se enviaba el circuito a fabricar, era imposible hacer modificaciones. Los avances en la tecnología hacían que se pudieran elaborar sistemas cada vez más complejos, lo que hace inevitable la aparición de errores. Además, la propia complejidad de los sistemas hacía que su diseño supusiera cada vez un tiempo mayor. Por otra parte, la ley de Moore hacía obsoleto cualquier producto en dos años, que se veía reflejado en una presión adicional sobre los diseñadores. 1.. Dispositivos lógicos programables La crisis anteriormente citada hizo que algunos ingenieros buscaran ofrecer un producto, o una metodología de diseño que combinara el notable ATP de los ASICs con las ventajas centrales de los microprocesadores: bajo costo, alta estandarización, facilidad de corrección de errores y reducción del tiempo de salida al mercado. Varias compañías se lanzaron en los 80 a fabricar un ASIC reprogramable. La idea era sencilla: en primer lugar, reemplazar la interconexión fija de los Gate Arrays y Standard Cells 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. Históricamente, los arreglos de lógica programable (PLA) fueron los primeros dispositivos lógicos programables. Los PLA contenían compuertas AND y OR con una estructura de dos niveles (figura 1.4), con conexiones programables por el usuario [4]. La estructura de los PLA sufrió mejoras y su costo disminuyó con la introducción de dispositivos lógicos de arreglo programable (PAL), en los que el array de puertas OR es fijo

(no programable) y los dispositivos de arreglos genéricos (GAL). Actualmente, tales dispositivos se denominan de manera genérica como dispositivos de lógica programable y se puede decir que son los MSI de la industria de la lógica programable. Figura 1.4a. PLA 4x6x3, arrays de puertas AND y OR programables. Figura 1.4b. PAL 4x6x3, array de puertas OR fija Estos dispositivos, antecesores de las FPGAs, ya se configuraban haciendo uso de un lenguaje de descripción de hardware, en los que se profundizará más adelante. Sin embargo, la configuración de los primeros circuitos se realizaba, inicialmente, mediante la destrucción física de unos fusibles y sólo se podían programar una vez, con todas las limitaciones que esto suponía. Con el paso del tiempo, la tecnología permitió el borrado o desconfiguración del dispositivo mediante exposición a rayos UV o bien eléctricamente y, por tanto, su reconfiguración. Los dispositivos lógicos programables evolucionaron con la idea de proporcionar al diseñador mayor flexibilidad y posibilidades de configuración, con lo que incorporaron registros, realimentaciones a los arrays programables, buffers tri-estado, etcétera (figura 1.5).

Figura 1.5. Diagrama lógico de una PAL16R8 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 ilinx, 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, ilinx 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 Figura 1.7. Arquitectura general de una FPGA Slices: En los slices se realiza la mayor parte de la funcionalidad de la FPGA y suelen estar agrupados de en o de 4 en 4 formando bloques lógicos configurables (CLBs). Dentro de este componente encontramos los módulos LUT, registros y multiplexores programables en un número que depende de familia de FPGA, pero la arquitectura básica común es la que se muestra en la figura 1.8.

G 4 G 3 G LUT G SR D Q CE YQ G 1 H H 1 Y F 4 F 3 F LUT F SR D Q CE Q F 1 =multiplexor programable Figura 1.8. Slice simplificado de una FPGA Los elementos programables más importantes son los generadores reprogramables de función lógica, realizadas por las denominadas LUT (Look-up Table) o tablas de búsqueda, que son celdas de memoria SRAM y multiplexores para seleccionar la salida (figura 1.9) [7]. Figura 1.9. LUT de entradas, implementación de la función (AB) Los generadores de función pueden diseñarse para cualquier número de variables que se desee sin más que aumentar el tamaño de la memoria SRAM y la ubicación de selectores que escojan un solo valor almacenado para cada combinación de valores de las variables, de la manera que se muestra en la figura 1.10.

SRAM SRAM SRAM f f f b -LUT a c 3-LUT b a d c b a 4-LUT Figura 1.10. LUTs de, 3 y 4 variables 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]. Área normalizada Retraso promedio (ns) Figura 1.11. Tamaño óptimo de las LUTs Cualquier función lógica que se desee implementar con un número de variables mayor se realiza usando varias LUTs, ya que dicha función siempre podrá ponerse en función de varias funciones de 4 variables aplicando el conocido teorema de Shannon las veces que sea necesario [9]: F(,, K n ) = 1 F(1,, K n ) + 1 F(0,, K 1 n )

En general, los slices contienen alguna lógica adicional aparte de las LUTs para aumentar las prestaciones y la eficiencia de estos bloques, como biestables para obtener salidas registradas o lógica para implementar eficientemente comparadores, contadores o sumadores serie. Además, como las funciones lógicas se generan en realidad a través de memorias SRAM, los propios slices se pueden configurar para usarlos como bloques de memoria en lugar de lógica, es lo que se denomina memoria distribuida para diferenciarla de bloques de memoria específicos que pudiera haber en la FPGA. Los slices más próximos suelen agruparse siguiendo esta filosofía en grupos denominados CLBs o bloques lógicos configurables. IOBs: Los bloques de Entrada/Salida de las FPGAs cumplen la misma función que las macroceldas de salida en otros dispositivos lógicos programables, pero con más controles lógicos, entre los que se incluyen, configuraciones de entrada y salida combinacionales o registradas, alta impedancia, elementos de retardo, controles analógicos y otros. Interconexión programable: Según se mostró en la figura 1.7, cada CLB en la FPGA se encuentra incrustado en la estructura de interconexión, que se componen en realidad de cables con conexiones programables para ellos. Inicialmente, se disponía de unas interconexiones heterogéneas de propósito general, aunque en la década pasada se evolucionó hacia una estructura de interconexión jerárquica, tal como se muestra en la figura 1.1. Las líneas del grupo del reloj están optimizadas para su uso como entradas de reloj a los CLB, proporcionando un retardo corto. El conjunto de líneas simples se optimizan para conectividad flexible entre bloques adyacentes, pero en mayor cantidad y sin la limitación unidireccional de las líneas directas. 8 Simple 4 Doble 3 Larga CLB Conexión directa 6 4 8 4 3 Larga Larga Doble Simple Reloj Global Conexión Directa Figura 1.1. Estructura de interconexión de una FPGA C4000 de ilinx 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 C4000 [10], las que imperan hoy en día, familias como la Spartan-3 [11-1] o Virtex-4 [13-14], representantes de la gama baja y la gama alta de las FPGA de ilinx respectivamente, disponen de diversos dispositivos embebidos dentro del dispositivo, como memorias, multiplicadores, DCMs (administradores de reloj), e incluso microprocesadores. La FPGA Spartan-3 C3S00 En la tabla 1.1 se muestran las características principales del dispositivo que puede extraerse de las especificaciones del fabricante. En este caso se dispone de columnas de 6 multiplicadores integrados en el dispositivo. También se dispone de 1 bloques de 18Kbits de RAM. En esta familia, los slices se agrupan de 4 en 4 formando los CLBs, teniendo un array de 4x0 de estos bloques. Cada slice contiene generadores de función (LUT) y flip-flops, acorde con la figura 1.8. Características de la Spartan-3 CS00 General Recursos CLBs Puertas equivalentes 50K Filas 4 DCMs 4 Columnas 0 CLBs 480 Total 480 Pines E/S 173 Slices 190 Multiplicadores 1 LUTs/Flip-Flops 3840 Módulos BRAM RAM16/SRL16 190 Columnas de RAM Memoria distribuida 30K Bloques de RAM por columna 6 Bloques de RAM 1 Memoria RAM disponible 16K Tabla 1.1. Características principales de la Spartan-3 C3S00 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. La FPGA Virtex-4 C4VS35 Examinando los datos de la tabla 1. podemos observar que la Virtex-4 posee mayores recursos que la Spartan-3. En el caso de este dispositivo los multiplicadores han sido sustituidos por unos circuitos aritméticos más completos denominados DSP48s y vienen en mayor cantidad. Nuevamente los slices se asocian cada 4 formando un CLB, aunque estos difieren ligeramente de los que forman parte de la Spartan-3 y se dispone de mayor cantidad de memoria, tanto en módulos específicos (también de 18Kbits) como en memoria distribuida. Características de la Virtex-4 C4VS35 General Recursos CLBs

Celdas lógicas 34560 Filas 96 DCMs 8 Columnas 40 CLBs 3840 Total 3840 Pines E/S 448 Slices 15360 DSP48s 19 LUTs/Flip-Flops 3070 Módulos BRAM RAM16/SRL16 15360 Columnas de RAM 8 Memoria distribuida 40K Bloques de RAM por columna 4 Bloques de RAM 19 Memoria RAM disponible 3456K Tabla 1.. Características principales de la Virtex-4 C4VS35 Circuitos aritméticos específicos en FPGA Algunos de los componentes específicos que más éxito están teniendo dentro de las FPGAs son aquellos pensados para resolver de manera eficiente cálculos matemáticos complejos. Según qué FPGA analicemos podemos tener circuitos aritméticos distintos, ya que estos se van mejorando según van apareciendo nuevas familias. Por ejemplo, la Spartan-3, contiene unos módulos denominados MULT18x18 bastante sencillos. La Virtex- 4, en cambio, contiene un módulo más avanzado, el DSP48, con mayores prestaciones. La familia más potente que tiene ilinx en el mercado, la Virtex-5, dispone de bloques DSP48 mejorados, los denominados DSP48E. 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: Circuitos DSP48 Spartan-3 Dispositivo Multiplicadores C3S50 4 C3S00 1 C3S400 16 C3S1000 4 C3S1500 3 C3S000 40 C3S4000 96 C3S8000 104 Tabla 1.3. Número de multiplicadores en diferentes Spartan-3. En negrita aparece la FPGA disponible en el laboratorio 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 L Sub-Familia S Sub-Familia F Dispositivo DSP48 Dispositivo DSP48 Dispositivo DSP48 C4L15 3 C4VS5 18 C4VF1 3 C4L5 48 C4VS35 19 C4VF0 3 C4L40 64 C4VS55 51 C4VF40 48 C4L60 64 C4VF60 18 C4L80 80 C4VF100 160 C4L100 96 C4VF140 19 C4L160 96 C4L00 96 Tabla 1.4. Número de DSP48s en diferentes Virtex-4. En negrita aparece la FPGA disponible en el laboratorio La familia Virtex-4 S 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.