Necesito hacer procesamiento de señal digital en 8 líneas analógicas a 10 kHz. Esta es una tarea bastante exigente, y estaba pensando que un FPGA podría ser el enfoque correcto. Actualmente estoy buscando kits de desarrollo de Xilinx, y como no tengo experiencia con FPGA, me resulta muy difícil saber cómo elegir el chip correcto. Me imaginé usando un kit de desarrollo y expandiéndolo usando los pines de E / S para conectar a un chip A / D de 8 canales y un chip D / A de 8 canales.
¿Cuáles son las diferencias entre usar Spartan, Virtex, Altera, etc.? Ni siquiera sé cómo calcular cuántas puertas necesitaré. ¿Hay alguna regla general para eso? ¿Cómo me aseguro de que la velocidad del reloj sea suficiente (en función del número de sumas y multiplicaciones)? ¿Es difícil hacer el procesamiento de punto flotante en un FPGA, debería seguir las matemáticas de punto fijo? ¿Cuál es la mejor manera de comenzar?
Necesito una solución que sea programable usando Linux. Xilinx proporciona esto, pero no estoy seguro de cuáles son las limitaciones.
fuente
Respuestas:
No usaría un FPGA.
Menciona que no tiene experiencia con FPGA y, sin embargo, está interesado en hacer el procesamiento de señal digital en un FPGA ... la manipulación numérica + el procesamiento de señal son lo suficientemente difíciles de obtener en una computadora / DSP / microprocesador, donde las herramientas de programación son convencionales programación. Me parece que usar un proyecto de procesamiento de señal digital para un primer proyecto FPGA es probablemente una receta para la frustración.
Si desea aprender FPGA, intente hacer algo más adecuado para las herramientas de desarrollo, como máquinas de estado o procesamiento de paquetes de comunicaciones.
Para un proyecto DSP como el que ha descrito, recomendaría un DSP o un Cypress PSOC o un microconvertidor de dispositivos analógicos (= microcontrolador con ADC + DAC incorporado).
(divulgación completa, que proporciona algún contexto para mi consejo: no uso FPGA yo mismo. He usado lógica programable = PLD en raras ocasiones. Mi compañero de oficina usa FPGA con frecuencia, y he visto suficiente código VHDL / Verilog revisando su hombro para saber que es adecuado para manipulaciones de bits. Es un ingeniero experimentado con mucha experiencia con FPGA; en una conversación reciente con él donde estaba haciendo algunas matemáticas bastante simples en enteros con diferentes anchos de bits, le dije que necesitaba para extender el signo en el número de ancho de bits más corto para restarlo correctamente, y obtuvo esta expresión en su rostro, como "oh hombre, no quiero tener que hacer la extensión del signo ..." Sumar y restar no es muy difícil en un FPGA. Más allá de la suma y la resta, realmente necesitas conocer las herramientas y las bibliotecas.Y procesamiento de punto flotante ??!? !! ??!? !!?)
fuente
Todos son bastante buenos. No necesitará demasiado del FPGA para hacer algo simple como eso, por lo que cualquier FPGA principiante (como la línea Spartan-3) debería ser suficiente.
Sin embargo, solo una advertencia: programar un FPGA es un LOOOOTTTTTT diferente de algo como C ++, C, perl ... Sugeriría comenzar con verilog porque probablemente sea la transición más fácil hacia ... VHDL es muy COBOL pero Verilog es más similar a los lenguajes de programación modernos.
Sobre la velocidad del reloj: no te preocupes por eso. La ventaja de usar FPGA es que son masivamente paralelos, por lo que si bien un reloj de 50MHz puede parecer ridículamente lento para los estándares actuales, tenga en cuenta que pueden hacer cientos de cosas a la vez, mientras que una CPU "normal" a 3GHz tiene que hacer cola. arriba uno a la vez. Esta es la ventaja de usar FPGA: paralelismo. Entonces, para algo especializado, no necesita preocuparse tanto por la velocidad.
Pero como el otro comentario, es un paradigma completamente diferente. La curva de aprendizaje es empinada, pero una vez que comprende el idioma, todo tiene sentido (solo asegúrese de comprender los componentes básicos).
Feliz FPGA'ing :)
fuente
Hace un tiempo, armé una tabla de comparación de placas FPGA de nivel de entrada , de los dos proveedores de FPGA Xilinx y Altera. Son los dos jugadores principales en FPGA, algo así como PIC vs AVR o Sony vs Nintendo. Proporcionan la mejor inversión por dinero. Hay otros proveedores que proporcionan funciones específicas, pero generalmente terminas pagando más o perdiendo funciones / potencia de procesamiento.
Sé que esto no responde directamente a su pregunta específica, pero debería ser útil para cualquiera que esté buscando comenzar con una placa FPGA.
fuente
Muchas preguntas; tratemos de responderlas en orden:
fuente
Un compañero llamado Anthony Burch ha reunido una serie descendente de videos sobre FPGA . Uno de los gratuitos incluye información sobre cómo elegir un FPGA.
fuente
Casi cualquier vendedor de FPGA lo hará. Es como Intel vs AMD ... hay diferencias entre Xilinx y Altera, pero son notablemente similares en términos de funcionalidad. Compre cualquier kit de desarrollo que se encuentre en su rango de precios, personalmente me gustaron los Spartan 3 de Xilinx, y ejecútelo.
Con respecto al recuento de puertas, el kit de desarrollo generalmente será muy grande, con suerte mucho más grande de lo que necesita. Cuando esté listo para pasar a su propia PCB, las herramientas de síntesis estimarán cuántas puertas requiere su diseño. Puede usar esto para seleccionar un FPGA más pequeño, aunque puede descubrir que las restricciones del paquete (QFP vs BGA) también juegan un papel importante.
Con técnicas de diseño adecuadas, la velocidad del reloj no será un problema. De hecho, normalmente puede usar un cristal de velocidad relativamente baja, como 12 MHz, y el FPGA puede sintetizar un reloj mucho más rápido (¡o muchos relojes más rápidos!) Si está realmente preocupado por las sumas múltiples, sé que la serie Virtex4 tiene segmentos DSP dedicados que pueden acelerar esos cálculos. Pero los FPGA son masivamente paralelos, por lo que no necesita demasiados MHz para hacer un montón de trabajo.
Definitivamente me quedaría con el punto fijo si puedes. Es posible hacer punto flotante, y Xilinx incluso tiene un generador de núcleo que le proporcionará un núcleo de punto flotante, pero el punto fijo será mucho más rápido y requerirá muchas menos puertas. Otra ventaja es que puede hacer algún punto fijo extraño; puede usar tantos bits como desee, no tiene que ser una cuenta de potencia de 2 bits, y / o puede usar puntos fijos más grandes para etapas intermedias.
¿La mejor manera de comenzar con los FPGA? Encuentra una clase o un seminario o algo así. Si no está familiarizado con la tecnología, las herramientas de desarrollo serán muy confusas, porque hay muchas cosas que pueden salir mal. Las herramientas para MCU son mucho más indulgentes y requieren menos intimidad con la arquitectura subyacente.
Ah, y deberías leer la hoja de datos de FPGA, de adelante hacia atrás.
fuente
Echa un vistazo a XMOS
Se pueden usar para reemplazar FPGA en muchas aplicaciones.
fuente
Si desea estimar el recuento de compuertas, aún no necesita comprar hardware: los principales fabricantes de FPGA tienen software gratuito, y muchos tendrán notas sobre cómo hacer dsp. Puede diseñar y simular cosas sin hardware, y el software le dirá qué recursos se utilizan. Sin embargo, para el procesamiento de señales, un dsp normalmente sería el primer paso, y FPGA solo si se queda sin potencia de procesamiento.
fuente