¿Cómo elegir un FPGA?

17

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.

fpganewbie
fuente
55
Sería de gran ayuda saber qué tipo de algoritmos necesita implementar. Lo más probable es que no es necesario un FPGA en absoluto, lo que le ahorrará un montón de tiempo de desarrollo ;-)
geschema
Estoy de acuerdo con geschema; Es posible que no necesite un FPGA. Quizás un DSP sea una mejor solución. En cualquier caso, es más fácil comenzar si solo tienes experiencia en uC. ¡Los FPGA son muy diferentes!
stevenvh

Respuestas:

13

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 ??!? !! ??!? !!?)

Jason S
fuente
2
MyHDL intenta solucionar algunos de esos problemas.
Shawn J. Goff, el
No creo que los FPGA sean más difíciles de usar que los micros, simplemente tienen un conjunto diferente de advertencias.
Connor Wolf
10

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 :)

Vincent P
fuente
2
¡VHDL se basa realmente en Ada! Leon
Leon Heller
2
Además, al elegir Verilog o VHDL, considere el lenguaje a la luz de que es una inversión en su comercialización futura. En los EE. UU., Verilog es más popular en el desarrollo de circuitos integrados / chips que VHDL, por lo que conocer Verilog (y su versión mejorada, System Verilog) probablemente será una mejor inversión a largo plazo. También parece que todas las grandes compañías de EDA están invirtiendo en verilog y verilog del sistema, mientras que VHDL no está recibiendo mucha atención. (atestigüe la simulación mixta VCS con vhdl vs las diferencias de rendimiento del simulador verilog VCS). (Que la llama) Sí, puedes aprender ambos, pero ¿por qué no priorizar?
Ross Rogers el
Puedes escribirlo en cualquier idioma. Creo que las herramientas Xilinx pueden tomar Verilog y VHDL, incluso en el mismo proyecto. FWIW, estoy en los Estados Unidos y nunca he usado Verilog.
ajs410
1
"VHDL es muy parecido a COBOL". ¡No por un millón de millas!
stevenvh
9

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.

davr
fuente
7

Muchas preguntas; tratemos de responderlas en orden:

  1. Requisito de recursos para el procesamiento de la señal: para determinar qué hardware necesita usar / construir, necesita una idea de la cantidad de procesamiento que desea hacer en las señales en cuestión. 8 canales a 10 kHz no es una velocidad de datos muy alta, por lo que a menos que sus requisitos sean muy especiales, la mayoría de los FPGA y DSP deberían poder procesar los datos.
  2. ¿Cómo elijo el dispositivo correcto? Según los requisitos del procesamiento de su señal, debería poder determinar qué dispositivo se requiere para su aplicación. Los puntos clave son requisitos de memoria, se requieren multiplicadores duros, consideraciones especiales de E / S, etc. La mayoría de los proveedores de FPGA tienen herramientas (basadas en la web) que le permiten buscar en su cartera en función de dichos factores.
  3. ¿Cómo empiezo con DSP? Los DSP son computadoras normales que generalmente tienen instrucciones SIMD [Instrucción única, Datos múltiples] relevantes para el procesamiento de señales. Para comenzar, solo necesita comprender las limitaciones del hardware "incorporado" y un compilador de C para poder probar su código en una PC normal.
  4. ¿Cómo empiezo con los FPGA? Los FPGA se programan en un lenguaje de descripción de hardware. Estos son significativamente diferentes de los lenguajes secuenciales como C o Java. Para desarrollar para FPGA, debe comprender la naturaleza concurrente del hardware real. Las herramientas que necesita para comenzar es un simulador HDL como Simili (gratis para diseños pequeños) o Modelsim. Esto le permite simular su código en la PC. Después de eso, necesita una herramienta de síntesis específica del proveedor que compile su código HDL en un archivo de bits que se utiliza para configurar el FPGA. Si obtiene un kit de inicio de Altera, Actel o Xilinx, todas las herramientas que necesita son parte del kit.
  5. Compatibilidad con Linux: las herramientas FPGA de la mayoría de los proveedores se ejecutan en Linux, pero en el campo DSP generalmente se ve obligado a usar compilaciones solo para Windows a menos que su DSP sea compatible con GCC (Blackfin de Analog y varios modelos de Texas Instruments).
trondd
fuente
+1 para "8 canales a 10 kHz no es una velocidad de datos muy alta" - No puedo creer que nadie haya dicho eso todavía.
Kevin Vermeer
No si está haciendo FFT de 8 canales ...
ajs410
Los DSP son a menudo unidades de procesamiento paralelo de un solo subproceso, cada una capaz de ejecutar una instrucción diferente (a diferencia de SIMD, donde todas las unidades comparten la misma instrucción).
Ben Voigt el
4

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.

ajs410
fuente
0

Echa un vistazo a XMOS

Se pueden usar para reemplazar FPGA en muchas aplicaciones.

Leon Heller
fuente
0

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.

mikeselectricstuff
fuente