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?
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.
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.
PlasmaHH
johnnymopo
Enida
Juan Spence
tom carpintero
Paebbels
Juan Spence
tom carpintero