¿Cómo ayuda un FPGA a un desarrollador de software con su código?

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.

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.

Es hardware programable. Programable en el lugar, incluso. Realmente no ayudan a un desarrollador con su código, pero se pueden usar para reemplazar algunos SW con algoritmos implementados en HW, como un procesador auxiliar, etc.

Permiten la creación (y modificación) de hardware de pegamento, algoritmos asistidos por hardware, etc. Un FPGA podría programarse para que sea un SoC completo en el que podría intercambiar la CPU o su conjunto de instrucciones. Permiten la creación de prototipos de sistemas, o la producción de sistemas de bajo volumen, sin tener que grabar un chip.

Las matrices de puertas programables de campo ayudan a los desarrolladores de software a configurar nuevo hardware para fines específicos y hacer algunas modificaciones cuando sea necesario.

Algo parecido a los adaptadores de interfaz programables (PIA) utilizados en los años 80 para conectar procesadores de 8 bits a periféricos.

Espero que esto ayude. Buena suerte.

No es asi. Un FPGA tiene su propio lenguaje de programación y se usa para hacer chips de propósito especial para ejecutar un código determinado. Los FPGA son chips dedicados que pueden ser programados por un desarrollador. Los ASIC son chips programados por el fabricante. FPGA es bueno para tareas rápidas y repetitivas, que no necesitan la potencia de una computadora.

More Interesting

¿Qué habilidades necesito para ser ingeniero de JavaScript?

¿Cuáles son los temas que tuve que aprender para ser un gran hacker y desarrollador de software?

¿Cuál es la descripción del trabajo de un desarrollador de software?

¿Debo seguir un M.Tech de una buena universidad (IIT / NIT / BITS) o comenzar un trabajo?

¿Qué curso debo elegir para convertirme en desarrollador de software, arquitecto de software o desarrollador de juegos?

Cuando un desarrollador de software dice que una tarea no se puede hacer técnicamente, ¿qué haces?

¿Cómo se actualizan los desarrolladores de software con nuevas tecnologías y herramientas?

¿Cómo califica su eficiencia (1-10) cuando desarrolla usando plataformas que nunca antes había usado mientras aprendía sobre la marcha? ¿Qué haces para mejorarlo?

¿Cómo sobreviviste a la industria del desarrollo de software con un trabajo monótono, sin amigos, lejos de casa y viviendo como una máquina repetitiva todos los días?

¿Qué es mejor para comenzar una carrera, desarrollador de software o funcionario de IAS?

Cómo convertirme en un desarrollador de software exitoso si no me gusta programar

Siento que la programación se trata de unir piezas de código y rezar para que funcione. ¿Este sentimiento de caos y suciedad desaparecerá cuando me convierta en un programador senior?

Cómo desarrollar software para un cajero automático

¿Los desarrolladores / programadores se sienten más inteligentes que otras personas?

¿Me puede decir el uso de prototipos en el desarrollo de software?