Conceptos fundamentales de los FPGA – Parte 2: Presentación de los FPGA de Lattice Semiconductor
Colaboración de Editores de DigiKey de América del Norte
2019-12-18
Nota del editor: Las soluciones óptimas de procesamiento a menudo son proporcionadas por combinaciones de RISC (computación por conjunto de instrucciones reducidas), CISC (computación por conjunto de instrucciones complejas), procesadores gráficos y FPGA, solo por FPGA, o por FPGA que cuentan con núcleos rígidos de procesadores como parte de su estructura. Sin embargo, muchos diseñadores no están familiarizados con las capacidades de los FPGA, cómo han evolucionado y cómo usarlos. La parte 1 de esta serie de varias partes proporciona una presentación de alto nivel acerca de los FPGA y por qué son necesarios. Luego, la parte 2 se centra en las familias de dispositivos de los FPGA y las herramientas de diseño ofrecidas por el proveedor de los FPGA, Lattice Semiconductor. Las partes 3, 4 y 5 analizarán los FPGA de Altera, Microchip y Xilinx.
Como se mencionó en la parte 1, los arreglos programables de puertas en campo (FPGA) tienen muchas características que los convierten en un activo informático invaluable, ya sea de forma independiente o en una arquitectura heterogénea; sin embargo, muchos diseñadores no están familiarizados con los FPGA y cómo incorporar estos dispositivos en sus diseños.
Una forma de superar este impedimento es conocer más detalladamente las arquitecturas de los FPGA y las herramientas asociadas de los principales proveedores; la línea de Lattice Semiconductor que se presenta aquí es un buen comienzo.
Descripción general de las opciones de FPGA de alto nivel
Existen muchos tipos diferentes de FPGA en el mercado, cada uno con diferentes combinaciones de capacidades y funciones. En el centro de cualquier FPGA, se encuentra su estructura programable, que se presenta como una matriz de bloques lógicos programables (Figura 1a). El siguiente paso en la estructura de los FPGA incluye elementos como bloques de SRAM (memoria estática de acceso aleatorio), llamados RAM de bloque (BRAM), circuitos de sincronización de fase (PLL) y administradores de reloj (Figura 1b). También se pueden agregar bloques de procesador de señal digital (DSP) (cortes DSP) y bloques de serializadores/deserializadores de alta velocidad (SERDES) (Figura 1c).
Figura 1: Los FPGA más simples contienen solo estructura programable y entradas y salidas de uso general (GPIO) configurables (a); diferentes arquitecturas aumentan esta estructura básica con bloques SRAM, PLL y administradores de reloj (b), bloques DSP e interfaces SERDES (c), y núcleos y periféricos rígidos del procesador (d). (Fuente de la imagen: Max Maxfield)
Las funciones de la interfaz periférica como CAN, I2C, SPI, UART y USB se pueden implementar como núcleos flexibles en la estructura programable, pero muchos FPGA las incluyen como núcleos rígidos en el silicio. Del mismo modo, los microprocesadores pueden implementarse como núcleos flexibles en la estructura programable o como núcleos rígidos en el silicio (Figura 1d). Diferentes FPGA ofrecen distintos conjuntos de funciones, características y capacidades dirigidas a diferentes mercados y aplicaciones.
Existen varios proveedores de FPGA, incluidos Altera (que fue adquirido por Intel), Atmel (que fue adquirido por Microchip Technology), Lattice Semiconductor, Microsemi (que también fue adquirido por Microchip Technology) y Xilinx.
Todos estos proveedores ofrecen múltiples familias de FPGA; algunos ofrecen FPGA de sistema en chip (SoC) (que contienen núcleos de procesador rígido), y algunos ofrecen dispositivos tolerantes a la radiación dirigidos a entornos de alta radiación como el espacio. Elegir el mejor dispositivo para la tarea en cuestión puede ser complicado porque existen muchas familias, y cada una de ellas ofrece diferentes recursos. Este artículo se centra en las familias de dispositivos y las herramientas de diseño que ofrece Lattice Semiconductor.
Presentación de los FPGA de Lattice Semiconductor
Los FPGA de Lattice Semiconductor abarcan el rango bajo a medio, con un enfoque en dispositivos de baja potencia que resuelven los problemas de los clientes en toda la red, desde el borde hasta la nube, dentro de los mercados de comunicaciones, informática, industriales, automotrices y de consumo en rápido crecimiento.
Lattice ofrece cuatro familias principales de FPGA:
- iCE (que promociona como los FPGA de consumo ultrabajo más pequeños del mundo)
- CrossLink y CrossLinkPlus (optimizados para aplicaciones de video y sensores de alta velocidad)
- MachXO (optimizado para aplicaciones de puente, expansión y administración de plataforma y seguridad)
- ECP (dispositivos de uso general destinados a aplicaciones de conectividad y aceleración)
Lattice también ofrece una serie de conjuntos de herramientas de diseño y verificación, incluidos el software Lattice Diamond (para dispositivos CrossLink/CrossLinkPlus, MachXO y ECP [dispositivos de uso general destinados a aplicaciones de conectividad y aceleración]) y el software Lattice Radiant (para FPGA iCE y arquitecturas futuras), junto con LatticeMico (una herramienta gráfica para crear diseños basados en microprocesadores flexibles), además de Lattice sensAI Stack y el compilador de redes neuronales (para diseños de inteligencia artificial [IA]) y aprendizaje automático [ML]).
Tradicionales: los FPGA ECP
Los dispositivos ECP de Lattice son lo que muchos diseñadores considerarían FPGA «tradicionales». Pueden contener hasta 85.000 (k) tablas de consulta de cuatro entradas (LUT) en un paquete de paso de 0,5 milímetros (mm), 10 mm x 10 mm. Presentan un bajo consumo de energía estática y dinámica con funciones SERDES agnósticas de protocolo de un solo canal por debajo de 0,25 vatios y funciones SERDES de cuatro canales por debajo de 0,5 vatios.
Además de los bloques SRAM, los bloques de procesador de señal digital (DSP), los circuitos de sincronización de fase (PLL) y los administradores de reloj, los FPGA ECP cuentan con soporte de E/S programable para interfaces de entrada/salida de LVCMOS 33/25/18/15/12, XGMII, LVTTL, LVDS , Bus-LVDS, 7:1 LVDS, LVPECL y MIPI D-PHY.
Las celdas de configuración de los FPGA ECP están basadas en SRAM, lo que significa que, como todos los otros FPGA basados en SRAM, su configuración debe cargarse desde una fuente externa (por ejemplo, dispositivo de memoria flash, microprocesador, microcontrolador) cuando se aplica energía al sistema.
Un buen ejemplo de un dispositivo ECP es el FPGA compatible con ECP5 5G SERDES LFE5UM5G-25F-8BG381C en un paquete de 10 mm x 10 mm. Para permitir que los diseñadores investiguen y experimenten mejor las características de la familia ECP5 de FPGA, Lattice también proporciona una placa de desarrollo ECP5-5G correspondiente, la LFE5UM5G-45F-VERSA-EVN (Figura 2).
Figura 2: La placa de evaluación ECP5 es una placa de prototipos con abundantes cabeceras de expansión, lógica, E/S y 5G SERDES. (Fuente de la imagen: Lattice Semiconductor)
De tamaño pequeño, pero potentes: los FPGA iCE de Lattice
Los dispositivos iCE son los FPGA más pequeños disponibles, y el miembro más pequeño de la familia ofrece 18 E/S en un paquete de 1,4 mm x 1,4 mm. Los FPGA iCE ofrecen una arquitectura lógica flexible con hasta 5k LUT de cuatro entradas, hasta 128 kilobits (Kbits) de sysMEM BRAM integrado de Lattice y 1 megabit (Mbit) de RAM de puerto único (SPRAM), bloques DSP de alto rendimiento y E/S personalizables.
Aunque son pequeños y de baja potencia con una corriente de reposo de tan solo 75 microamperios (µA) y una corriente activa de 1 a 10 miliamperios (mA) para la mayoría de las aplicaciones, los FPGA iCE también son potentes. Por ejemplo, pueden implementar redes neuronales artificiales (ANN) para la coincidencia de patrones necesaria para llevar la inteligencia siempre activa al borde.
Los datos de configuración en los FPGA iCE se almacenan en memoria no volátil (NVM), lo que significa que estos dispositivos son programables una sola vez (OTP). Dicho esto, también contienen celdas de configuración basadas en SRAM. Durante el desarrollo, se puede probar el diseño cargando directamente las celdas de configuración basadas en SRAM del mundo exterior. Una vez que se confirma el diseño, se puede cargar en el NVM. Cuando el dispositivo se activa, la configuración almacenada en el NVM se copia automáticamente en las celdas de configuración basadas en SRAM de una manera masivamente paralela.
Un dispositivo iCE de ejemplo sería el ICE40UL1K-SWG16ITR1K iCE40 UltraLite, que es el FPGA de factor de forma más pequeño del mundo (en el momento de la publicación de este artículo), que proporciona 42 microvatios (µW) de potencia estática en un paquete de 1,4 mm x 1,4 mm. Una placa de desarrollo representativa sería el blindaje Himax HM01B0 UPduino HM01B0-UPD-EVN y la placa de demostración modular sensAI (Figura 3).
Figura 3: El blindaje Himax HM01B0 UPduino es un kit de desarrollo completo para la implementación de inteligencia artificial (IA) que utiliza la visión y el sonido como entradas sensoriales. (Fuente de la imagen: Lattice Semiconductor)
El kit se basa en la placa UPduino 2.0, una placa de desarrollo de prototipos rápidos en el factor de forma Arduino con el rendimiento y las capacidades de E/S del FPGA iCE40 UltraPlus. También incluye el sensor de imagen de baja potencia Himax HM01B0 y dos micrófonos I2S.
Especializados: los FPGA CrossLink y CrossLinkPlus
Las familias CrossLink y CrossLinkPlus son FPGA especializados que, además de lógica programable y capacidades de E/S importantes, contienen versiones reforzadas de especificaciones que se usan ampliamente en aplicaciones industriales y automotrices. Estos incluyen los núcleos estándar de capa física de comunicaciones de datos de alta velocidad D-PHY de la interfaz de procesador de la industria móvil (MIPI), de la interfaz de la serie de la cámara 2 (CSI2) y de la interfaz de la pantalla serie 2 (DSI2), todo en paquetes de 6 mm x 6 mm (CrossLink) y 3,5 mm x 3,5 mm (CrossLinkPlus).
Al igual que los FPGA iCE, los datos de configuración en los dispositivos CrossLink se almacenan en NVM OTP, y también contienen celdas de configuración basadas en SRAM que se pueden cargar directamente durante el desarrollo para las pruebas. Una vez que se confirma el diseño, se carga en el NVM y se copia automáticamente en las celdas de configuración basadas en SRAM de forma masivamente paralela al momento de la activación. En comparación, las celdas de configuración en los dispositivos CrossLinkPlus están basadas en flash, lo que significa que estos dispositivos pueden reprogramarse según sea necesario; además, proporcionan capacidad de encendido instantáneo en menos de 10 milisegundos (ms).
Un ejemplo de dispositivo CrossLink sería el LIF-MD6000-6JMG80I con 5936 elementos/celdas lógicas, 184 320 bits de RAM totales y 37 E/S. Para comenzar con los diseños de visión integrada, el kit de desarrollo de visión integrada LF-EVDK1-EVN permite a los diseñadores combinar entradas MIPI basadas en CrossLink con procesamiento FPGA ECP5 para crear prototipos de diseños de visión integrada (Figura 4).
Figura 4: El kit de desarrollo de visión integrada LF-EVDK1-EVN de Lattice proporciona a los diseñadores de sistemas integrados un entorno de creación de prototipos de software y hardware que incluye la capacidad de mezclar y combinar placas de entrada y salida para interactuar con una variedad de sensores y pantallas de imagen. (Fuente de la imagen: Lattice Semiconductor)
Para funciones de gestión de energía y E/S: los FPGA MachXO
Con cientos de E/S, los FPGA MachXO son perfectos para una amplia gama de aplicaciones que requieren expansión de entrada y salida de uso general, puente de interfaz y funciones de administración de encendido. Los miembros recientes de la familia están diseñados para cumplir con NIST e incluyen características de seguridad adicionales para garantizar que el hardware y el firmware del sistema se mantengan seguros.
Los FPGA MachXO tienen un conjunto robusto de entradas y salidas de uso general que incluyen características como la capacidad de «conexión en caliente», lo que significa que se puede aplicar voltaje a las E/S independientemente del estado de los rieles de la fuente de alimentación. Además, mientras que la mayoría de las entradas de FPGA pasan por defecto al estado de elevación, las entradas de MachXO pasan por defecto al estado de reducción, lo que las hace muy adecuadas para controlar las aplicaciones de funciones. Con encendido instantáneo en menos de 10 ms, los FPGA MachXO proporcionan soluciones ideales para dispositivos de control de «primer encendido, último apagado» que administran y secuencian otros componentes durante el encendido y apagado del sistema.
Los datos de configuración en los dispositivos MachXO se almacenan en la memoria flash. Los dispositivos MachXO también contienen celdas de configuración basadas en SRAM. Cuando el dispositivo se activa, la configuración almacenada en el flash se copia automáticamente en las celdas de configuración basadas en SRAM de una manera masivamente paralela. Además, mientras el dispositivo se está ejecutando, es posible cargar una nueva configuración en flash y luego hacer que esta nueva configuración se copie en las celdas SRAM en el momento adecuado.
Un buen ejemplo de un dispositivo MachXO es el LCMXO3LF-9400C-6BG256C con 9.400 elementos/celdas lógicas, 442.368 bits de RAM totales y 206 E/S. Una placa de desarrollo representativa sería el kit de inicio MachXO3 LCMXO3LF-6900C-S-EVN (versión MachX03L).
Figura 5: El kit de inicio MachXO3L es una placa de interfaz básica que permite la evaluación y el desarrollo simples de los diseños básicos de MachXO3L. (Fuente de la imagen: Lattice Semiconductor)
El flash SPI está disponible en la placa del kit para evaluar las capacidades funcionales de inicio externo o inicio doble. Se recomienda la placa de interfaz DSI MachXO3L LCMXO3L-DSI-EVN para la evaluación de E/S de MIPI DSI y CSI2, y se recomienda la placa de interfaz SMA MachXO3L LCMXO3L-SMA-EVN para la evaluación de E/S de alta velocidad diferencial.
Diseño y desarrollo con los FPGA de Lattice Semiconductor
Una de las técnicas más comunes que se utilizan para desarrollar con los FPGA es la del diseño basado en lenguaje (LDD). Esto implica capturar la intención del diseño en un nivel de abstracción conocido como nivel de transferencia de registro (RTL) utilizando un lenguaje de descripción de hardware (HDL), como Verilog o VHDL. Después de la verificación a través de la simulación lógica, esta representación se introduce en un motor de síntesis, junto con información adicional, como el tipo de FPGA objetivo, las asignaciones de pines y las restricciones de tiempo (por ejemplo, retrasos máximos de entrada a salida). La salida del motor de síntesis es un archivo de configuración, que se carga directamente en el FPGA o se carga en un dispositivo de memoria externa en el caso de los FPGA basados en SRAM (Figura 6).
Figura 6: Después de la verificación a través de la simulación lógica, la descripción del diseño RTL se introduce en un motor de síntesis junto con detalles de diseño adicionales como el tipo de FPGA, las asignaciones de pines y las restricciones de tiempo. La salida del motor de síntesis es un archivo de configuración que se carga directamente en el FPGA (en el caso de NVM o dispositivos basados en flash) o en un dispositivo de memoria externa (en el caso de dispositivos basados en SRAM). (Fuente de la imagen: Max Maxfield)
Lattice Diamond pertenece a esta clase de herramienta y ofrece un entorno completo de diseño y verificación de FPGA basado en interfaz gráfica de usuario (GUI) para dispositivos CrossLink, MachXO y ECP.
Al igual que Lattice Diamond, Lattice Radiant también ofrece un entorno completo de diseño y verificación de FPGA basado en GUI, pero Lattice Radiant está dirigido a FPGA iCE y arquitecturas futuras.
Lattice Radiant ofrece una variedad de características:
- Cifrado de propiedad intelectual (IP) IEEE 1735 estándar de la industria y restricciones de diseño de Synopsys (SDC) para una interoperabilidad máxima
- Facilidad de navegación de diseño y depuración habilitada por un entorno de conjunto de herramientas integrado
- Ejecución de implementación de diseño simple de «un clic» habilitada por una nueva barra de herramientas de proceso
- Sondeo cruzado completo de implementación de diseño físico a lógico de circuito cerrado
- Capacidad de empaquetado de IP que permite a los desarrolladores y proveedores de IP de terceros empaquetar IP encriptada en una forma adecuada para su distribución
Herramientas de desarrollo del sistema LatticeMico
Lattice ofrece dos núcleos de procesador flexibles, el LatticeMico8 y el LatticeMico32, que pueden implementarse en una estructura programable de FPGA.
El LatticeMico8 es un microcontrolador de 8 bits optimizado y totalmente probado para la familia de dispositivos lógicos programables (PLD) MachXO2. También se pueden usar como un diseño de referencia para las otras familias de FPGA. El núcleo del microcontrolador combina un conjunto completo de instrucciones de 18 bits de ancho con 32 registros de propósito general y consume recursos mínimos del dispositivo, menos de 200 LUT en la configuración más pequeña, al tiempo que mantiene un amplio conjunto de características.
LatticeMico32 es un microprocesador de arquitectura RISC de Harvard de 32 bits. Al combinar un conjunto de instrucciones de 32 bits de ancho con 32 registros de propósito general, el LatticeMico32 proporciona el rendimiento y la flexibilidad adecuados para una amplia variedad de mercados. Al usar una arquitectura RISC, el núcleo consume recursos mínimos del dispositivo, al tiempo que mantiene el rendimiento requerido para un amplio conjunto de aplicaciones. Para acelerar el desarrollo de sistemas de microprocesador, se pueden integrar varios componentes periféricos compatibles con el controlador WISHBONE opcional con LatticeMico32.
Las herramientas de desarrollo del sistema LatticeMico proporcionan una interfaz gráfica de usuario que permite a los usuarios arrastrar y soltar núcleos y periféricos del procesador LatticeMico, conectarlos a buses y definir varios parámetros para cada componente, como su ubicación en el espacio de direcciones del procesador. Una vez que se ha definido el sistema, las herramientas pueden generar automáticamente el RTL correspondiente para que se simule y se sintetice. El sistema también incluye las herramientas que permiten a los usuarios generar el software que se ejecutará en los núcleos del procesador.
Herramientas de aprendizaje automático: Lattice sensAI Stack y compilador de redes neuronales
Las aplicaciones de aprendizaje automático (ML) e inteligencia artificial (IA) se están implementando actualmente en una amplia gama de sistemas integrados y en todos los elementos del Internet de las cosas (IoT), incluido el IoT industrial (IIoT).
Lattice sensAI Stack incluye todo lo necesario para evaluar, desarrollar e implementar soluciones de ML/AI basadas en FPGA, incluyendo plataformas de hardware modulares, demostraciones de ejemplo, diseños de referencia, núcleos IP de redes neuronales, herramientas de software para el desarrollo y servicios de diseño personalizados. Esta pila está diseñada para acelerar el tiempo de comercialización para los desarrolladores de inferencias de aprendizaje automático flexibles en aplicaciones de IoT industriales y de consumo.
El núcleo IP del acelerador de red neuronal convolucional Lattice (CNN) es un motor de cálculo para redes neuronales profundas (DNN). El motor está optimizado para redes neuronales convolucionales, por lo que puede usarse para aplicaciones basadas en la visión, como clasificación o detección y seguimiento de objetos. El núcleo CNN IP no requiere un procesador adicional, ya que puede realizar los cálculos requeridos.
Mientras tanto, el compilador de red neuronal de Lattice permite a los diseñadores tomar redes neuronales creadas en marcos de desarrollo comunes, como TensorFlow, Caffe y Keras, y compilarlas para implementarlas en núcleos IP de acelerador CNN compacto y CNN de Lattice.
Conclusión
Las soluciones óptimas de diseño a menudo son proporcionadas por combinaciones de FPGA, solo por FPGA, o por FPGA que cuentan con núcleos rígidos de procesadores como parte de su estructura. Como tecnología, los FPGA han evolucionado rápidamente a lo largo de los años y pueden servir para muchos requisitos de diseño en términos de flexibilidad, velocidad de procesamiento y potencia, lo que los hace útiles para una amplia gama de aplicaciones.
Como se muestra, los FPGA de Lattice Semiconductor abarcan el rango bajo a medio, con un enfoque en dispositivos de baja potencia que resuelven los problemas de la red, desde el borde hasta la nube, dentro de los mercados de comunicaciones, informática, industriales, automotrices y de consumo en rápido crecimiento. Lattice también ofrece varios conjuntos de herramientas de diseño y verificación que abordan múltiples flujos de diseño, que van desde el diseño basado en el lenguaje hasta el diseño basado en un procesador gráfico, además de diseños centrados en aplicaciones de inteligencia artificial y aprendizaje automático.
Descargo de responsabilidad: Las opiniones, creencias y puntos de vista expresados por los autores o participantes del foro de este sitio web no reflejan necesariamente las opiniones, las creencias y los puntos de vista de DigiKey o de las políticas oficiales de DigiKey.


