Comencemos con una pequeña explicación de qué es realmente FPGA y qué papel tiene en el mundo moderno de la tecnología. Estoy seguro de que te sorprenderás 🙂
La matriz de compuerta programable en campo es un chip diseñado para tener circuitos lógicos recableados o reprogramados. Se pueden reprogramar para dos propósitos: creación de prototipos o hardware redefinible.
Dejemos de lado la creación de prototipos, ya que esto generalmente se usa en laboratorios para investigaciones y pruebas de viabilidad y centrémonos en lo que el hardware redefinible tiene para ofrecer. Imagine un circuito digital en la radio digital (puede ser DAB; esto es solo un ejemplo), tradicionalmente la parte lógica podría hacerse en algunas partes discretas o en el procesador. El procesador está limitado al procesamiento secuencial, y la velocidad de ejecución del código es limitada, la ruta de ejecución es susceptible a interrupciones, bucles largos, etc. El demodulador diseñado como un circuito lógico digital siempre hará exactamente el mismo trabajo de manera predecible y repetible, por lo que el flujo de datos no se verá afectado. Pero una vez que diseñe su circuito, debe vivir con eso: si necesita agregar un nuevo esquema de modulación, debe visitar a cada cliente y reemplazar el PCBA por uno nuevo.
- Estoy trabajando como ingeniero de redes. No estoy interesado en este campo. Estoy cambiando mi perfil a desarrollador de software. ¿Qué idioma debo elegir que tenga un futuro muy brillante para los próximos 5 años al menos?
- En el desarrollo de software, ¿cómo es posible dar una cotización fija basada únicamente en el documento de especificaciones / requisitos técnicos?
- ¿Todos los desarrolladores de software necesitan usar o comprender algoritmos?
- ¿Se considera que un desarrollador de software de automatización de pruebas es un desarrollador de software "normal"?
- ¿Qué compañía desarrolla software de reserva de taxis en los Estados Unidos?
FPGA viene como una ayuda aquí. Usted diseña su dispositivo con FPGA a bordo, es un poco más costoso que el diseño tradicional, pero si su cliente necesita una nueva función en su hardware, solo obtendrá una nueva imagen para flashear en el chip de soporte y FPGA se programará a sí mismo a cada potencia ciclo (hay otras formas). Otro aspecto desde otra perspectiva es que cuando no todos los clientes pueden recibir exactamente el mismo producto debido a restricciones de control de exportación; Si ciertas características no son legales, simplemente no las obtienen. Si entra en vigencia una nueva regulación que afecta a los clientes de su equipo de radio en un espectro con licencia, usted nuevamente entrega un nuevo archivo de imagen para el FPGA. Fácil.
Gracias a FPGA, muchas tecnologías pudieron desarrollarse efectivamente desde finales de los 90 y pienso especialmente en las redes celulares (UMTS, HSDPA, LTE, 5G), televisión digital (DVB, compresión 4K) y algunas otras tecnologías inalámbricas, satelitales y médicas. La cantidad de potencia del procesador que se necesitaría para manejar de manera efectiva el procesamiento digital de una sola estación base podría ocupar tanto espacio que no encajaría en un edificio grande, y aún se producirían latencias entre procesadores. Los FPGA no son más rápidos que las CPU, en realidad son entre uno y dos órdenes de magnitud más lentos en términos de velocidad de reloj, pero su ventaja radica en el paralelismo masivo y la capacidad de procesar cualquier número de bits de 1 a 128 en un solo bus. Y los FPGA se pueden usar para implementar los llamados procesadores suaves en ellos, algunos de ellos se venden con el núcleo de la CPU listo para formar parte del diseño. Los FPGA probablemente estén presentes en algunos teléfonos inteligentes premium, pueden estar ocultos como algunos chips dedicados, sin embargo, es muy probable que se hayan convertido en ASIC en un producto final.
Hace un tiempo estuve trabajando para una empresa que implementó un sistema de archivos en FPGA: aceleración completa de las operaciones de archivos en un servidor de almacenamiento conectado a la red. Eso tenía que ser todo un desafío.
Para responder a su pregunta en este momento, existen herramientas en el mercado que pueden admitir algunas tareas informáticas a través de la autogeneración del código HDL que luego puede sintetizarse y programarse en FPGA y luego dicho dado puede actuar como acelerador de hardware para la CPU de la computadora. Sin embargo, veo un futuro más brillante para OpenCL y GPU en la aceleración de cómputo que para FPGA, pero hay dominios en los que todavía son útiles en los cálculos (las transformaciones rápidas de Fourier son imbatibles si se ejecutan en FPGA, por ejemplo). Intel / Altera (y probablemente otros) tienen tecnología que se casa con el mundo OpenCL y HDL.
Pero cada rosa tiene sus espinas.
Diseñar y programar cualquier FPGA grave es una tarea muy tediosa y lenta. La síntesis completa y el lugar y la ruta del diseño de tamaño mediano pueden llevar horas de computadora muy rápida. El proceso requiere un buen conocimiento de la electrónica digital y al menos un conocimiento mínimo de programación, sin embargo, estamos hablando de un paradigma completamente diferente (algunos podrían ver similitudes con la programación funcional). A veces, tener demasiada experiencia como programador tradicional en realidad dificulta el proceso de escribir código HDL.
Existe una barrera significativamente mayor para la entrada con FPGA que con cualquier CPU o DSP general, el aprendizaje y el ejercicio requieren un equipo más costoso. Los diseñadores experimentados de HDL generalmente son ingenieros con experiencia en electrónica y son reacios a aplicar cualquier técnica de ingeniería de software en su trabajo, incluso si escriben código de manera efectiva. Pero esa es probablemente otra historia.
Y la guinda del pastel es el hecho, hay preocupaciones de seguridad sobre el hecho de que algunos dispositivos electrónicos en el dispositivo se pueden volver a conectar a algo menos seguro o incluso letal simplemente intercambiando el archivo cargable.