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 dado que no tengo experiencia con FPGA, me resulta muy difícil saber cómo elegir el chip adecuado. Me imaginé usando un kit de desarrollo y expandiéndolo usando los pines de E/S para conectarlo 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 estimar 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 un procesamiento de punto flotante en un FPGA? ¿Debería ceñirme a las matemáticas de punto fijo? ¿Cuál es la mejor manera de empezar?
Necesito una solución que sea programable usando Linux. Xilinx proporciona esto, pero no estoy seguro de cuáles son las limitaciones.
Yo no usaría un FPGA.
Menciona que no tiene experiencia con FPGA y, sin embargo, está interesado en realizar el procesamiento de señales digitales en un FPGA ... la manipulación numérica + el procesamiento de señales son bastante difíciles de lograr 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ñales digitales para un primer proyecto de FPGA es probablemente una receta para la frustración.
Si desea aprender sobre 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) en su lugar.
(Divulgación completa, que proporciona algo de contexto para mi consejo: yo mismo no uso FPGA. 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 muy adecuado para la manipulación de bits. Es un ingeniero experimentado con mucha experiencia con FPGA; en una conversación reciente con él, en la que estaba haciendo algunas operaciones matemáticas bastante simples con números enteros con diferentes anchos de bits, le dije que necesitaba hacer la extensión de signos en el número de ancho de bit más corto para restarlo correctamente, y él puso esta expresión en su rostro, como "oh hombre, no quiero tener que hacer la extensión de signos ..." Sumar y restar No es muy difícil en un FPGA, más allá de sumar y restar, realmente necesitas conocer las herramientas y bibliotecas.Y procesamiento de coma flotante??!?!!??!?!!?)
Todos son bastante buenos. No necesitará mucho de la FPGA para hacer algo tan simple como eso, por lo que cualquier FPGA para principiantes (como la línea Spartan-3) debería ser suficiente.
Sin embargo, solo una advertencia, programar un FPGA es MUY diferente a algo como C ++, C, Perl ... Sugiero comenzar con verilog porque probablemente sea más fácil hacer la transición a ... VHDL es muy parecido a 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 50 MHz puede parecer ridículamente lento según los estándares actuales, tenga en cuenta que pueden hacer cientos de cosas a la vez, mientras que una CPU "normal" a 3 GHz tiene que poner cosas en cola. subir 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 dominas el idioma, todo tiene sentido (solo asegúrate de entender los componentes básicos).
Feliz FPGA :)
Hace un tiempo preparé un cuadro comparativo 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 relación calidad-precio. Hay otros proveedores que brindan funciones específicas, pero generalmente termina 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.
Muchas preguntas; intentemos responderlas en orden:
Un compañero llamado Anthony Burch ha creado una serie de videos sobre FPGA . Uno de los gratuitos incluye información sobre cómo elegir un FPGA.
Casi cualquier proveedor 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 dentro de su rango de precios (personalmente me gustó el Spartan 3 de Xilinx) y utilícelo.
En cuanto al número de puertas, el kit de desarrollo suele 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 las 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 la FPGA puede sintetizar un reloj mucho más rápido (¡o muchos relojes más rápidos!). Si realmente le preocupan las adiciones 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 mucho trabajo.
Definitivamente me quedaría con el punto fijo si puedes. Es posible hacer punto flotante, y Xilinx incluso tiene un generador central 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 puedes hacer algún que otro punto fijo; puede usar tantos bits como desee, no tiene que ser un conteo 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 del FPGA, de adelante hacia atrás.
Echa un vistazo a XMOS
Se pueden usar para reemplazar los FPGA en muchas aplicaciones.
Si desea estimar el conteo de puertas, no necesita comprar hardware todavía: 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.
geschema
stevenvh