En informática , un bloque lógico o bloque lógico configurable (CLB) es un bloque de construcción fundamental de la tecnología de matriz de puertas programables en campo (FPGA). El ingeniero puede configurar bloques lógicos para proporcionar puertas lógicas reconfigurables .
Los bloques lógicos son la arquitectura FPGA más común y generalmente se colocan dentro de una matriz de bloques lógicos. Los bloques lógicos requieren almohadillas de E / S (para interactuar con señales externas) y canales de enrutamiento (para interconectar bloques lógicos).
Los bloques lógicos programables fueron inventados por David W. Page y LuVerne R. Peterson, y se definieron en sus patentes de 1985. [1] [2]
Aplicaciones
Se debe asignar un circuito de aplicación a una FPGA con los recursos adecuados. Si bien el número de bloques lógicos y E / S necesarios se determina fácilmente a partir del diseño, el número de pistas de enrutamiento necesarias puede variar considerablemente incluso entre diseños con la misma cantidad de lógica.
Por ejemplo, un interruptor de barra transversal requiere mucho más enrutamiento que una matriz sistólica con el mismo recuento de puertas. Dado que las pistas de enrutamiento no utilizadas aumentan el costo (y disminuyen el rendimiento) de la pieza sin proporcionar ningún beneficio, los fabricantes de FPGA intentan proporcionar las pistas suficientes para que la mayoría de los diseños que se ajusten en términos de tablas de búsqueda (LUT) y E / S puedan ser enrutado. Esto se determina mediante estimaciones como las derivadas de la regla de Rent o mediante experimentos con diseños existentes.
Los FPGA también se utilizan ampliamente para la validación de sistemas, incluida la validación previa al silicio, la validación posterior al silicio y el desarrollo de firmware. Esto permite a las empresas de chips validar su diseño antes de que el chip se produzca en la fábrica, lo que reduce el tiempo de comercialización.
Arquitectura
En general, un bloque lógico consta de algunas celdas lógicas (llamadas ALM, LE, Slice, etc.). Una celda típica consta de una LUT de 4 entradas , un sumador completo (FA) y un flip-flop tipo D , como se muestra a la derecha. En esta figura, los LUT están divididos en dos LUT de 3 entradas. En el modo normal, se combinan en una LUT de 4 entradas a través del mux izquierdo . En modo aritmético , sus salidas se envían al FA. La selección del modo se programa en el multiplexor central. La salida puede ser síncrona o asíncrona, dependiendo de la programación del mux a la derecha, en el ejemplo de la figura. En la práctica, la totalidad o partes de la FA se colocan como funciones en las LUT para ahorrar espacio. [3] [4] [5]
Los bloques lógicos suelen contener algunos ALM / LE / Slices. Los ALM y Slices generalmente contienen 2 o 4 estructuras similares a la figura del ejemplo, con algunas señales compartidas.
En los últimos años, los fabricantes han comenzado a cambiar a LUT de 6 entradas en sus piezas de alto rendimiento, afirmando un mayor rendimiento. [6]
Arquitectura 3D
Para reducir el tamaño y el consumo de energía de los FPGA, proveedores como Tabula y Xilinx han introducido nuevas arquitecturas 3D o apiladas. [7] [8] Tras la introducción de sus FPGA de la serie 7 de 28 nm, Xilinx reveló que varias de las piezas de mayor densidad en esas líneas de productos FPGA se construirán utilizando múltiples matrices en un solo paquete, empleando tecnología desarrollada para la construcción 3D y conjuntos de matrices apiladas. La tecnología apila varios (tres o cuatro) dados FPGA activos uno al lado del otro en un intercalador de silicio , una sola pieza de silicio que lleva una interconexión pasiva. [8] [9] La construcción de múltiples matrices también permite crear diferentes partes de la FPGA con diferentes tecnologías de proceso, ya que los requisitos del proceso son diferentes entre la estructura de la FPGA y los transceptores seriales de muy alta velocidad de 28 Gbit / s. Una FPGA construida de esta manera se denomina FPGA heterogénea . [10]
E / S externas
Dado que las señales de reloj (y a menudo otras señales de alta distribución ) normalmente se enrutan a través de redes de enrutamiento dedicadas de propósito especial (es decir, búferes globales) en FPGA comerciales, estas y otras señales se administran por separado.
Para esta arquitectura de ejemplo, las ubicaciones de los pines del bloque lógico FPGA se muestran a la derecha.
Cada entrada es accesible desde un lado del bloque lógico, mientras que el pin de salida puede conectarse a los cables de enrutamiento tanto en el canal de la derecha como en el canal debajo del bloque lógico.
Cada pin de salida del bloque lógico puede conectarse a cualquiera de los segmentos de cableado en los canales adyacentes a él.
De manera similar, una plataforma de E / S puede conectarse a cualquiera de los segmentos de cableado en el canal adyacente a él. Por ejemplo, una almohadilla de E / S en la parte superior del chip se puede conectar a cualquiera de los cables W (donde W es el ancho del canal) en el canal horizontal inmediatamente debajo de él.
Enrutamiento
Generalmente, el enrutamiento FPGA no está segmentado. Es decir, cada segmento de cableado abarca solo un bloque lógico antes de terminar en una caja de interruptores. Al encender algunos de los interruptores programables dentro de una caja de interruptores, se pueden construir caminos más largos. Para una interconexión de mayor velocidad, algunas arquitecturas FPGA utilizan líneas de enrutamiento más largas que abarcan múltiples bloques lógicos.
Siempre que un canal vertical y uno horizontal se cruzan, hay una caja de interruptores. En esta arquitectura, cuando un cable ingresa a una caja de interruptores, hay tres interruptores programables que le permiten conectarse a otros tres cables en segmentos de canal adyacentes. El patrón, o topología, de los conmutadores utilizados en esta arquitectura es la topología de caja de conmutadores planar o basada en dominios. En esta topología de caja de interruptores, un cable en la pista número uno se conecta solo a los cables en la pista número uno en segmentos de canal adyacentes, los cables en la pista número 2 se conectan solo a otros cables en la pista número 2 y así sucesivamente. La figura de la derecha ilustra las conexiones en una caja de interruptores.
Generalmente, todos los canales de enrutamiento tienen el mismo ancho (número de cables). Varias almohadillas de E / S pueden caber en la altura de una fila o en el ancho de una columna de la matriz.
Bloques duros
Las familias modernas de FPGA amplían las capacidades anteriores para incluir una funcionalidad de nivel superior fijada en el silicio. Tener estas funciones comunes incrustadas en el silicio reduce el área requerida y les da a esas funciones una mayor velocidad en comparación con la construcción de las primitivas. Ejemplos de estos incluyen multiplicadores, bloques DSP genéricos, procesadores integrados, lógica de E / S de alta velocidad y memorias integradas.
Los FPGA de gama alta pueden contener transceptores de varios gigabits de alta velocidad y núcleos IP rígidos , como núcleos de procesador, Ethernet MAC , controladores PCI / PCI Express y controladores de memoria externa. Estos núcleos existen junto con el tejido programable, pero están construidos con transistores en lugar de LUT, por lo que tienen un rendimiento y consumo de energía de nivel ASIC sin consumir una cantidad significativa de recursos del tejido, lo que deja más tejido libre para la lógica específica de la aplicación. Los transceptores de varios gigabits también contienen circuitos de entrada y salida analógicos de alto rendimiento junto con serializadores y deserializadores de alta velocidad, componentes que no se pueden construir a partir de LUT. La funcionalidad de la capa PHY de nivel superior, como la codificación de línea, puede implementarse o no junto con los serializadores y deserializadores en lógica rígida, dependiendo de la FPGA.
Señales de reloj
La mayoría de los circuitos integrados dentro de un FPGA son circuitos síncronos que requieren una señal de reloj. Los FPGA contienen redes de enrutamiento regionales y globales dedicadas para el reloj y el reinicio, de modo que puedan entregarse con un sesgo mínimo . Además, los FPGA generalmente contienen componentes analógicos PLL y / o DLL para sintetizar nuevas frecuencias de reloj y atenuar la fluctuación . Los diseños complejos pueden usar múltiples relojes con diferentes relaciones de frecuencia y fase, cada uno formando dominios de reloj separados. Estas señales de reloj se pueden generar localmente mediante un oscilador o se pueden recuperar de un flujo de datos en serie de alta velocidad. Se debe tener cuidado al construir circuitos de cruce de dominios de reloj para evitar la metaestabilidad. Los FPGA generalmente contienen RAM de bloque que son capaces de funcionar como RAM de puerto dual con diferentes relojes, lo que ayuda en la construcción de FIFO de construcción y búferes de puerto dual que conectan dominios de reloj diferentes.
Referencias
- ^ Búsqueda de patentes de Google, " PLA reprogramable ". Archivado el 11 de enero de 1983. Concedido el 2 de abril de 1985. Consultado el 5 de febrero de 2009.
- ^ Búsqueda de patentes de Google, " PLA reprogramable de datos dinámicos ". Archivado el 11 de enero de 1983. Concedido el 18 de junio de 1985. Consultado el 5 de febrero de 2009.
- ^ http://www.altera.com/literature/hb/cyc2/cyc2_cii51002.pdf
- ^ "Documentación: dispositivos Stratix IV" (PDF) . Altera.com. 2008-06-11. Archivado desde el original (PDF) el 26 de septiembre de 2011 . Consultado el 1 de mayo de 2013 .
- ^ http://www.xilinx.com/support/documentation/user_guides/ug070.pdf
- ^ http://www.origin.xilinx.com/support/documentation/white_papers/wp245.pdf
- ^ Dean Takahashi, VentureBeat. " La conexión Intel ayudó a la startup de chips Tabula a recaudar 108 millones de dólares ". 2 de mayo de 2011. Consultado el 13 de mayo de 2011.
- ↑ a b Lawrence Latif, The Inquirer. "El fabricante de FPGA afirma haber superado la ley de Moore ". 27 de octubre de 2010. Consultado el 12 de mayo de 2011.
- ^ EDN Europa. " Xilinx adopta el empaque 3D de matriz apilada ". 1 de noviembre de 2010. Consultado el 12 de mayo de 2011.
- ^ http://www.xilinx.com/support/documentation/white_papers/wp380_Stacked_Silicon_Interconnect_Technology.pdf
Ver también
- Xilinx
- Altera