En un post anterior se explicó que la celda de configuración es el elemento básico de cualquier FPGA y que en ella se determina la configuración de cada elemento lógico y la configuración de los elementos de ruteo y de las interconexiones. Ahora toca hablar sobre otros componentes y como estos están organizados dentro de un FPGA para que puedan realizar la función de lo que nosotros hemos programado, es decir hablaremos sobre su Arquitectura Interna.
La arquitectura de un FPGA varía de un fabricante a otro. En realidad es una discusión permanente, en la que cada fabricante se atribuye que tiene la mejor arquitectura. Independientemente del fabricante elegido para el diseño, ciertamente el más beneficiado en esta competencia es el usuario final de los FPGAs. En la carrera por diferenciarse como el mejor, cada fabricante incluye tecnología de punta en sus dispositivos, aumenta el rendimiento, baja los costos, ofrece bloques enteros de propiedad intelectual (Intellectual Property, IP) como así también bloques en silicio dentro del FPGA para aplicaciones complejas especificas, tales como procesador(es) PowerPC, Gigabit Transceivers, PCIe, controlador Ethernet, etc.
A pesar de tratar de diferenciarse uno del otro, en realidad los FPGAs de los diferentes fabricantes tienen muchos componentes en común, tales como bloques lógicos programables, bloques de memoria de doble puerto (dual port), bloques para ejecución de MACs ( Multiplicador–Acumulador o bloques DSPs), bloques de control de reloj (generación de frecuencias a partir de una frecuencia base, corrimiento de fase), bloques de entrada/salida, etc. Debido a su similitud con otros FPGAs, en este blog se verá en detalle la arquitectura de uno de los fabricantes, los FPGAs de Xilinx.
La empresa Xilinx ofrece al mercado dos tipos de FPGAs: una de bajo costo, performance media y otra de alto costo, performance alta-muy alta. La primera se denomina la familia de los FPGA Spartan, y la segunda los FPGA Virtex. A su vez, y debido a la gran competitividad del mercado, estas familias se van renovando cada dos o tres años. Tal es así que, por ejemplo, la familia Spartan fué evolucionando como Spartan, Spartan 2, Spartan 3 y la recientemente lanzada Spartan 6. Del mismo modo para la Virtex, comenzando con Virtex, Virtex-E, Virtex 2, Virtex 2Pro, Virtex 4, Virtex 5 y la reciente Virtex 6.
Figura 1. Arquitectura de un FPGA Spartan 3
Por ejemplo, la Figura 1 muestra cómo están organizados los distintos componentes en un FPGA Spartan 3. Se puede observar el anillo de bloques de E/S (Input/Output Blocks, IOBs) que rodea el arreglo matricial de los bloques lógicos configurables (Configurable Logic Blocks, CLBs). Los bloques de memoria RAM en realidad constan de varios bloques de memoria RAM de 18K bits. Cada
bloque de memoria RAM está asociado a un multiplicador dedicado. Los controladores de reloj (Digital Clock Manager, DCM) están distribuidos de manera que hay dos en la parte superior, dos en la inferior y uno en cada uno de los costados del FPGA. En la Figura no se muestran la gran cantidad de recursos destinados a la interconexión de los diferentes componentes del FPGA.
Los seis elementos funcionales programables que componen la arquitectura de un FPGA modelo Spartan III son los siguientes:
bloque de memoria RAM está asociado a un multiplicador dedicado. Los controladores de reloj (Digital Clock Manager, DCM) están distribuidos de manera que hay dos en la parte superior, dos en la inferior y uno en cada uno de los costados del FPGA. En la Figura no se muestran la gran cantidad de recursos destinados a la interconexión de los diferentes componentes del FPGA.
Los seis elementos funcionales programables que componen la arquitectura de un FPGA modelo Spartan III son los siguientes:
- Bloques Lógicos configurables (Configurable Logic Blocks – CLBs): Contienen Look-Up Tables basadas en tecnología RAM (LUTs) para implementar funciones lógicas y elementos de almacenamiento que pueden ser usados como flip-flops o como latches.
- Bloques de entrada/salida (Input/Output Blocks – IOBs): Controlan el flujo de datos entre los pines de entrada/salida y la lógica interna del dispositivo. Soportan flujo bidireccional más operación tri-estado y un conjunto de estándares de voltaje e impedancia controlados de manera digital.
- Bloques de memoria RAM (Block RAM): Proveen almacenamiento de datos en bloques de 18 Kbits con dos puertos independientes cada uno.
- Bloques de multiplicación: Aceptan dos números binarios de 18 bit como entrada y entregan uno de 36 bits.
- Celdas de Interconexión: Son celdas que definen el camino (ruta) a seguir por cada señal interna del FPGA.
- Administradores digitales de reloj (Digital Clock Managers – DCMs): Estos elementos proveen funciones digitales auto calibradas, las que se encargan de distribuir, retrazar arbitrariamente en pocos grados, desfasar en 90, 180, y 270 grados, dividir y multiplicar las señales de reloj de todo el circuito.
No hay comentarios:
Publicar un comentario