¿Son los FPGA más intuitivos de aprender que los microprocesadores para hacer DSP?

Quiero aprender a hacer hardware DSP

Nunca he hecho nada de DSP y solo un poco de programación, pero llevo 15 años haciendo circuitos analógicos. Me gusta la idea de aprender FPGA porque suena más como construir circuitos, pero la gente suele decir que los FPGA son realmente difíciles. Tal vez estas personas estén acostumbradas a la programación secuencial. Me pregunto si los FPGA son más fáciles de aprender que los microprocesadores si hacen las cosas en las que los FPGA son buenos. Por ejemplo, si quiero hacer un filtro FIR, ¿será más intuitivo un FPGA?

No​​​​​​​​​​​​​​​​​​​​​
Muchos FPGA incluyen recursos de DSP y el software de los proveedores incluye generadores centrales que escribirán el código específico de DSP para usted, como un filtro FIR, que puede configurar en un asistente. Dicho esto, el FPGA puede ser algo muy complicado de entender en el primer crack, más que solo el código HDL. Pero, tiene la máxima flexibilidad con un FPGA.
puede que le resulte útil estudiar DSP en Matlab o un entorno similar antes de incorporarlo.
Me imagino que apoyarme en Matlab será útil para aprender conceptos generales de DSP, pero no me enseñará sobre el contexto físico del DSP implementado en un hardware en particular. Es ese contexto físico con menos niveles de abstracción lo que parece tan atractivo de los FPGA. Tal vez también debería comenzar a comprar tutoriales de tipo LED intermitente simple inclinado en YouTube. También estoy aprendiendo cosas de matemáticas, como transformadas de Fourier, convolución, Laplace, ese tipo de cosas.
Para ser honesto, los tutoriales de LED parpadeantes no le enseñarán nada sobre los FPGA. Más bien, debería comenzar a investigar/aprender cómo se comportan los circuitos lógicos digitales y tratar de representar diferentes circuitos puramente lógicos (contadores, registros, puertas, etc.).
Cuando venga del circuito analógico, al menos está familiarizado con el concepto de que todo sucede en paralelo. Escribir HDL no es como la programación secuencial y procedimental. Cuando haya tomado esa colina, el diseño de FPGA es tan fácil/complicado como el diseño analógico :).
@TomCarpenter Recuerdo haber hecho un sumador binario con puertas lógicas en la universidad hace años. Disfruto apoyándome en este tipo de cosas.
Si te gustan las cosas de lógica digital, definitivamente vale la pena jugar con FPGA y aprender Verilog. Podría valer la pena conseguir algo como una placa Papilio que es bastante económica.

Respuestas (4)

Tome un consejo de qué manera se está moviendo la industria profesional. Algunas organizaciones programan las partes DSP de sus FPGA escribiendo un programa MATLAB o C, luego usan una herramienta de síntesis para compilarlo en VHDL. Al igual que la mayoría de la gente dejó de escribir código de máquina o ensamblador, cuando los compiladores se aceptaron como la forma de hacerlo.

Sin embargo, estas herramientas suelen ser muy costosas y enseñarles cómo paralelizar el diseño es una gran curva de aprendizaje, por lo que no son aplicables a los aficionados en este momento. No muchas empresas los usan para la producción tampoco, porque todavía hay muchos ingenieros de DSP que se quejan de que "pueden hacerlo mejor en el hardware que un compilador", al igual que los programadores ensambladores solían quejarse hace 30 años.

Incluso si finalmente desea apuntar al hardware, siempre comience con una herramienta fácil de usar como MATLAB (costos), Octave (gratis) o Python+numpy+matplotlib (gratis), para que pueda ver lo que está sucediendo y generar alguna prueba. vectores para probar su hardware.

Podrá hacer DSP de audio con bastante facilidad en microprocesadores DSP razonablemente disponibles. Sin embargo, hacer trabajo de radiofrecuencia necesitará FPGA.

Neil, pareces estar sugiriendo que un lenguaje de descripción de hardware es una forma de trabajo de bajo nivel, pero pensé que había formas de hacer HDL usando técnicas gráficas que se parecen más a un dibujo esquemático. Lo cual sería una forma de trabajo de alto nivel que describe mejor un FPGA que la programación en C. Lo siento, no he investigado demasiado.
La entrada de nivel esquemático de @NickCollier para diseños de FPGA es casi inútil. Terminaría pasando más tiempo tratando de conectar las cosas con herramientas a medias que solo escribiendo en HDL. En términos de describir lo que sucede en un FPGA, los lenguajes HDL son muy superiores y, en cierto modo, podrían considerarse de mayor nivel que la entrada esquemática. Realmente no puede usar C para describir FPGA, son bestias completamente diferentes, pero las cosas de DSP tienden a ser bastante procedimentales, por lo que hasta cierto punto puede describirlo en C y trasladarlo a un FPGA (pero las herramientas para hacerlo son subdesarrollado).
Además, para agregar, HDL se creó específicamente porque la gente estaba cansada de tener que diseñar circuitos integrados gráficamente, que era la única forma de hacerlo durante muchos años. Los HDL son de hecho un paso adelante.
Lo que dijo Tom. Los métodos de entrada gráfica tienden a estar vinculados a una herramienta y, a menudo, a una sola versión. VHDL de texto puro funcionará con cualquier proveedor, herramienta, simulador, en cualquier momento, en cualquier lugar, en cualquier lugar. Puede usar C para describir las partes intensivas en computación del diseño, compilarlas en hardware paralelo y luego "conectar" el sistema junto con VHDL. MATLAB tiene una herramienta gráfica llamada Simulink que 'facilita' la entrada de bloques DSP, que puede usarse como fuente de VHDL compilado, pero eso es mucho denarios.

Si usa un microcontrolador con funcionalidad DSP, un chip DSP o un FPGA (al menos en teoría) no es tan importante como los algoritmos y coeficientes de filtro que usa. Entonces, una vez que da el salto al procesamiento digital, se trata de si necesita el rendimiento que solo un FPGA puede brindarle o no. Incluso dentro de un diseño de FPGA tiene varias compensaciones, por ejemplo, estamos haciendo un cálculo CORDIC y para ahorrar recursos serializamos los cálculos para que se requieran menos multiplicadores. Puede realizar pequeños cambios, como desenrollar bucles con microcontroladores, pero básicamente está atascado con los procesadores en el chip y eso es todo.

No creo que sea nada más fácil usar FPGA... las partes generalmente están en paquetes necesitados (BGA típicamente), necesitan mucha energía y diferentes fuentes de alimentación, la flexibilidad conduce a una mayor variación en el rendimiento (debido al diseño, por ejemplo) y el consumo de energía también es más variable. Tenga en cuenta que, por lo general, necesitará otras funciones para obtener señales de entrada y salida y para tareas de supervisión. Los chips como el Zynq combinan un pequeño núcleo ARM de microcontrolador de 32 bits con un FPGA y deberían ser lo mejor de ambos mundos, pero descubrimos que la curva de aprendizaje es bastante ardua, incluso con herramientas costosas como los paquetes MATLAB de costo adicional. Existen muchas quejas sobre las herramientas Vanilla FPGA, si observa los foros y tienden a ser costosas si necesita toda la capacidad.

En este momento, creo que la combinación de un procesador y FPGA es una buena solución para muchas tareas de procesamiento de señales, estén integrados o no (también existe la posibilidad de procesadores 'suaves' en el FPGA, pero tienden a ser un poco decepcionantes en rendimiento y utilizan muchos recursos).

Los FPGA son más caros, más complejos, tienen herramientas de software menos fáciles de usar y son más difíciles de depurar.

Diría que la forma más fácil de comenzar con DSP es en el software de PC, comenzando con herramientas de nivel superior como Matlab, lenguajes de dificultad intermedia como Python (con numpy, esto es lo suficientemente rápido para el mero audio), hasta C.

Una vez que tenga un algoritmo que funcione en C, puede transferirse a un microcontrolador o DSP dedicado.

Como muchos han señalado, FPGA puede ser difícil para aprender los algoritmos DSP. Creo que una de las principales razones por las que usaría un FPGA es para reducir el tiempo de procesamiento. Pero implementar un algoritmo en el FPGA requiere que aprenda un HDL. Incluso si usa IP preconstruidas, aún necesita conectarse y realizar una comunicación entre IP si es necesario. Un microcontrolador basado en DSP sería mucho más fácil de manejar.