Red de conocimiento informático - Conocimiento informático - Si quieres convertirte en ingeniero de desarrollo de software FPGA, ¿qué especialidad deberías estudiar para tu maestría?

Si quieres convertirte en ingeniero de desarrollo de software FPGA, ¿qué especialidad deberías estudiar para tu maestría?

1. No estar familiarizado con la estructura interna de FPGA y los principios básicos de los dispositivos lógicos programables.

¿Por qué es programable FPGA? Me temo que muchos novatos no lo saben y no quieren saberlo. Porque piensan que no importa. Subconscientemente creen que ser programable debe ser como escribir software. La idea de programación de software está tan arraigada que ver Verilog o VHDL es como ver C u otros lenguajes de programación de software. Léelos uno por uno y analízalos uno por uno. Si estos novatos todavía no están dispuestos a comprender por qué FPGA es programable y no comprenden la estructura interna de FPGA, puede ser un sueño de tontos aprender bien FPGA. Aunque el software EDA actual es muy avanzado, puedes dibujar un gato y sintetizar algo como escribir software, pero tal vez solo Dios sepa qué sintetizará el software EDA al final. Tal vez encender una lámpara y hacer correr un caballo. Es por eso que muchos novatos siguen siendo novatos después de aprenderlo durante mucho tiempo.

Entonces, ¿por qué se puede "programar" la FPGA? Primero, es necesario comprender qué es un "programa". El "Programa" de Revelación es un conjunto de códigos 01 que tienen un significado determinado. La programación en realidad consiste en escribir estos códigos 01. Es solo que ahora tenemos muchas herramientas de desarrollo. Por lo general, no escribimos estos códigos 01 directamente, sino que los escribimos en un lenguaje de alto nivel y, finalmente, las herramientas de desarrollo los convierten en estos códigos 01. Para la programación de software, el procesador tendrá un circuito decodificador dedicado para convertir estos códigos 01 en varias señales de control una por una, y luego controlar sus circuitos internos para completar una operación u otras operaciones. Por lo tanto, el software lee línea por línea a medida que las operaciones del software se completan paso a paso.

Aunque FPGA debe ser programable, su esencia es confiar en estos códigos 01 para realizar cambios en sus funciones. Sin embargo, la diferencia es que la razón por la cual FPGA puede completar diferentes funciones no depende de la programación como el software. 01 El código se traduce y luego se usa para controlar un circuito informático que no tiene estas cosas. Hay tres bloques principales dentro de la FPGA: unidad lógica programable, conexión programable y módulo IO programable. ¿Qué es una unidad lógica programable? La estructura básica de algún tipo de memoria (SRAM, FLASH, etc.) que consta de una "tabla de verdad" de 4 entradas o 6 entradas y 1 salida más un flip-flop D. Cualquier circuito lógico combinacional con 4 entradas y 1 salida tiene una "tabla de verdad" correspondiente. De manera similar, si usa dicha memoria para hacer una "tabla de verdad" con 4 entradas y 1 salida, solo necesita modificar su "tabla de verdad". Si usa esto Usando la memoria para hacer una "tabla de verdad" 4 en 1, solo necesita modificar los valores internos de la "tabla de verdad" para que sean equivalentes a cualquier combinatoria 4 en 1. lógica. ¿Cuáles son los valores internos de estas "tablas de verdad"? Esos son los códigos 01. ¿Qué hacer si desea implementar un circuito lógico de sincronización? Convertido en un flip-flop D de lógica combinacional, después de todo, solo implementa 4 entradas y 1 salida. Por lo general, el volumen del circuito lógico es bastante grande. Necesitamos usar cables programables. Hay muchos puntos de conexión controlados por la memoria. El valor de la memoria puede determinar qué líneas están conectadas y qué líneas están desconectadas. Al reescribir los valores de memoria correspondientes, se pueden combinar muchas celdas lógicas programables para formar una gran cantidad. Finalmente, hay un IO programable. Un requisito previo para el uso de FPGA a nivel de chip. Cualquier chip debe tener pines de entrada y IO programables se pueden definir arbitrariamente como pines no dedicados. pines de prueba y descarga accesibles para el usuario), como entrada o salida, también puede establecer estándares de nivel IO.

En resumen, la razón por la que FPGA es programable es que se puede convertir en una "tabla de verdad" a través de Código 01 dedicado y combine estas "tablas de verdad" para lograr funciones lógicas a gran escala.

Sin comprender la estructura interna de una FPGA, es imposible entender cómo llega el código final dentro de la FPGA. No entiendo cómo aprovechar al máximo la FPGA. La FPGA actual no solo tiene los tres bloques principales mencionados anteriormente, sino que también tiene muchas unidades funcionales de hardware especializadas. Cómo utilizar estas unidades para implementar diseños de circuitos lógicos complejos es lo que un novato debe superar. en el camino de convertirse en un maestro obstáculo. Y todo esto primero debe comprender la lógica interna de FPGA y su principio de funcionamiento antes de que podamos comenzar.

2. Malentendido del lenguaje HDL, dependiendo de cómo se mire la estructura del hardware.

El nombre en inglés del lenguaje HDL es Lenguaje de descripción de hardware: Lenguaje de descripción de hardware. Tenga en cuenta que es Descripción, no Diseño. ¿Por qué los extranjeros utilizan la palabra Descripción en lugar de Diseño? Porque de hecho, HDL no se utiliza para diseñar hardware, sino solo para describir hardware. La palabra Descripción refleja con precisión la esencia del lenguaje HDL. El lenguaje HDL es solo una expresión de texto de un circuito de hardware conocido y solo describe el circuito en texto. El circuito de hardware debería haberse diseñado antes de escribir el lenguaje. El lenguaje no es más que la traducción de ese diseño a la expresión escrita. Pero muchas personas no entienden que, dado que el hardware ha sido diseñado y entregado directamente al departamento de producción, ¿por qué tenemos que pasar por el problemático proceso de convertirlo en expresión de texto y luego usar herramientas EDA? De hecho, este es un problema que muchos principiantes no entienden sobre el nivel de abstracción del diseño. Cualquier diseño, incluido el de ropa, maquinaria y publicidad, tiene un problema de nivel de abstracción. Tomemos como ejemplo el diseño publicitario. El diseño inicial puede ser un concepto, y el diseño de este concepto es solo una idea, y aún está lejos del anuncio final.

El diseño de hardware también tiene diferentes niveles de abstracción, y cada nivel requiere diseño. El nivel más alto de abstracción es la capa de algoritmo, seguida por la capa de arquitectura, la capa de transferencia de registros, la capa de puerta y la capa de diseño físico. La ventaja de usar HDL es que ya hemos diseñado el circuito de nivel de transferencia de registro. Después de usar HDL para describirlo y convertirlo en formato de texto, el trabajo de conversión restante a niveles inferiores se puede realizar mediante herramientas EDA, lo que reduce en gran medida el aumento de la carga de trabajo. Este es el concepto de sintetizabilidad, es decir, la descripción de una unidad de hardware en este nivel de abstracción puede ser entendida por herramientas EDA y convertida en circuitos con circuitos subyacentes a nivel de puerta u otras estructuras. En el diseño de FPGA, son las opiniones descritas en lenguaje HDL en este nivel de abstracción las que se pueden convertir en la forma de implementación de la función lógica interna de FPGA descrita en la pregunta 1 a través del software de desarrollo de FPGA. HDL también puede describir niveles de abstracción más altos, como el nivel de algoritmo o el nivel de arquitectura, pero actualmente limitado por el desarrollo del software EDA, el software EDA no puede comprender un nivel de abstracción tan alto, por lo que HDL describe un nivel de abstracción tan alto, lo que permite que el software EDA sea incomprensible. . Por lo tanto, el HDL que describe este nivel de abstracción no se puede convertir a un nivel de abstracción más bajo, lo que se denomina no sintetizable.

Por lo tanto, al leer o escribir HDL (especialmente HDL sintetizable), lo que ve no debería ser el lenguaje en sí, sino la estructura del circuito de hardware detrás del lenguaje. Si todo lo que ves en HDL son líneas de código, nunca saldrás de las filas de novatos. Si un día el código que ves ya no son líneas de código, sino bloques de módulos de hardware, entonces felicidades por romper con el nivel de novato y entrar en un nivel que no es tan novato.

3. FPGA en sí no es nada, todo está fuera de FPGA

Esto es probablemente lo más difícil de entender para muchos principiantes cuando aprenden FPGA. ¿Para quién son los FPGA? Muchas escuelas explican que son para estudiantes que estudian microelectrónica o diseño de circuitos integrados. De hecho, esto se debe simplemente a que muchas escuelas tienen fondos limitados y no pueden permitirse comprar herramientas profesionales de diseño de circuitos integrados y utilizar herramientas FPGA. De hecho, los FPGA son para ingenieros que diseñan sistemas electrónicos.

Estos ingenieros suelen utilizar chips existentes para completar un dispositivo electrónico, como estaciones base, decodificadores, equipos de videovigilancia, etc. Cuando los chips existentes no pueden satisfacer las necesidades del sistema, se necesita FPGA para definir rápidamente un chip que se pueda utilizar. Como se mencionó anteriormente, FPGA no puede ser algunas "tablas de verdad", flip-flops, varios cables y algunos recursos de hardware. Cuando los ingenieros de sistemas electrónicos utilizan el diseño de FPGA, no necesitan considerar cómo combinar estos recursos para lograr ciertas funciones lógicas. ¿Qué necesitan? Los ingenieros de diseño de circuitos integrados siempre se han preocupado por si se puede fabricar el chip final. En esencia, no hay diferencia entre utilizar un chipset existente para sintetizar un sistema electrónico diferente, sólo hay que prestar atención a los recursos subyacentes.

Es muy sencillo utilizar FPGA, porque no pueden ser esos recursos. Después de comprender los dos primeros puntos, puede obtener una placa de prueba, realizar experimentos y hacer algunas cosas simples. Para hacer un buen uso de FPGA, no basta con saber un poco sobre FPGA. Porque al final, es necesario conocer cada vez más conocimientos sobre cómo combinar los recursos en la FPGA y qué funciones implementar para satisfacer las necesidades del sistema.

En la actualidad, las aplicaciones FPGA tienen principalmente tres direcciones: la primera dirección, que también es la dirección tradicional, se utiliza principalmente para el diseño de circuitos de interfaz de alta velocidad de equipos de comunicación. Esta dirección utiliza principalmente FPGA para procesar alta velocidad. -Protocolos de interfaz de velocidad. Completa el envío, recepción e intercambio de datos de alta velocidad. Estas aplicaciones generalmente requieren el uso de FPGA con interfaces de transceptor de alta velocidad y requieren que los diseñadores comprendan el diseño de circuitos de interfaz de alta velocidad y el diseño a nivel de placa de circuito digital de alta velocidad, tengan conocimientos de diseño EMC/EMI y tengan un buen circuito analógico. base y necesidad de resolver los problemas de integridad de la señal del proceso del transceptor de alta velocidad. FPGA fue originalmente y es actualmente el más utilizado en el campo de las comunicaciones. ¡Por un lado! Por un lado, el campo de la comunicación requiere un procesamiento de protocolos de comunicación de alta velocidad. Por otro lado, los protocolos de comunicación siempre se modifican, lo que resulta muy inadecuado para fabricar chips para fines especiales. Por lo tanto, los FPGA que pueden cambiar funciones de manera flexible se convierten en la primera opción. Hasta ahora, más de la mitad de las aplicaciones FPGA se encuentran en la industria de las comunicaciones.

La segunda dirección puede denominarse dirección de procesamiento de señales digitales o dirección de cálculo matemático, porque esta dirección ha excedido en gran medida el alcance del procesamiento de señales. Por ejemplo, ya en 2006, el autor escuchó que los FPGA se usaban para el análisis de datos financieros en los Estados Unidos, y luego vio casos de FPGA que se usaban para el análisis de datos médicos. Desarrollarse en esta dirección requiere que los diseñadores de FPGA tengan ciertas habilidades matemáticas, comprendan y mejoren algoritmos matemáticos más complejos y utilicen varios recursos en FPGA para convertirlos en circuitos informáticos prácticos. En la actualidad, lo que es realmente práctico es la investigación en curso en los campos del procesamiento de señales inalámbricas, códecs de canales y procesamiento de señales de imágenes en el campo de las comunicaciones. La razón principal por la que no hay muchas aplicaciones prácticas es que quienes estudian finanzas y. La medicina no entiende esto. Sin embargo, recientemente descubrí que muchos doctores en ingeniería electrónica e informática de países europeos y americanos se han transferido a la industria financiera para realizar procesamiento de señales financieras. Creo que a medida que más personas cambian de carrera, las funciones de computación matemática de los FPGA en otros campos. será mejor utilizado. También planeo hacer algunas investigaciones en esta área. Sin embargo, los estudiantes nacionales que se especializan en finanzas y medicina probablemente rara vez usan matemáticas, y mucho menos usan FPGA para ayudarlos a completar operaciones matemáticas. Este tema solo puede discutirse nuevamente.

La tercera dirección es la llamada dirección SOPC. De hecho, estrictamente hablando, esto ya está dentro del alcance del diseño de FPGA. Simplemente utiliza FPGA como plataforma para construir el hardware subyacente de un sistema integrado. .Entorno, y luego los diseñadores desarrollan principalmente software integrado en él. El volumen de diseño de la FPGA en sí es bastante pequeño. Pero si se trata de una aceleración de algoritmo especial en FPGA, en realidad es necesario utilizar el conocimiento de la segunda dirección, y si necesita diseñar un circuito de interfaz especial, es necesario utilizar el conocimiento de la primera dirección. En la actualidad, el desarrollo de la dirección SOPC es en realidad muy inferior al de la primera y segunda dirección. La razón principal es que SOPC se basa principalmente en FPGA, o implementa un procesador de recursos "suave" en la FPGA, o incorpora un núcleo de procesador. la FPGA.

Sin embargo, la mayoría de los diseños integrados se centran en el software y se desarrollan utilizando hardware existente. La mayoría de las interfaces se han estandarizado y no requieren tantos recursos lógicos FPGA para diseñar interfaces demasiado complejas. En la actualidad, parece que las herramientas de desarrollo relacionadas con SOPC aún están lejos de ser perfectas. Varias herramientas de desarrollo de procesadores integrados representadas por ARM han estado profundamente arraigadas en los corazones de la gente. La mayoría de los chips SOC con ARM como núcleo proporcionan la mayor parte del estándar. Interfaces e integramos una gran cantidad de En la serie de microcontroladores/procesadores integrados, proporcionamos los circuitos de aceleración de hardware necesarios para industrias relacionadas. De hecho, hay muy pocas ocasiones en las que se requiere hardware personalizado. De hecho, hay muy pocas situaciones en las que se requiere hardware personalizado. De hecho, hay muy pocas situaciones en las que se requiere hardware personalizado. Por lo general, en algunas industrias especiales existe una necesidad muy urgente a este respecto. Incluso si Xilinx agrega núcleo duro a ARM FPGA, creo que la situación actual no cambiará mucho. No olvide que muchos microcontroladores antiguos de 8 bits todavía se mezclan en el campo integrado no se basa principalmente en diferencias de hardware. se refleja más en las diferencias en el software. Me enamoré de la idea Psoc de cypress. A diferencia de la serie SOPC, la idea de Psoc es integrar una pequeña FPGA en el chip SOC histórico, que en realidad puede cumplir con las diferencias menores de interfaz de hardware en el sistema integrado. Por ejemplo, una determinada aplicación requiere 4 USB y, por lo general, el procesador lo hará. Si no proporciona tantas, puede usar una FPGA de este tipo para proporcionar múltiples interfaces USB. Otra aplicación que requiere 6 UART se puede realizar de la misma manera. Las empresas de diseño integrado solo necesitan disponer de un chip para todos los cambios menores en estos diseños. Su principal diferenciación sigue siendo a través del software. Sin embargo, si usa ARM como núcleo de procesador, con su cadena de herramientas completa, el Cypress actual parece demasiado cerrado. Al mismo tiempo, es muy prometedor abrir la cooperación en materia de propiedad intelectual y permitir que un gran número de terceros le proporcionen diseños de propiedad intelectual. Pero por ahora, es posible que Cypress no esté pasando por un buen momento y la idea de Psoc no sabe cuándo despegará.