¿Hay algún beneficio adicional de usar LabView FPGA en lugar del diseño crudo de VHDL? ¿El desarrollo usando LV es mucho más rápido?

LV tiene algunos puntos fuertes que pueden o no importar a su diseño, pero la mayoría de las quejas sobre LabVIEW en comparación con la programación basada en texto se aplican igualmente bien al sabor de FPGA.

Otra respuesta habla sobre el uso de declaraciones de generación para instanciar rápidamente un grupo de componentes idénticos como un beneficio basado en texto, pero, francamente, eso se puede hacer en LV haciendo que el componente sea su propio VI y luego agregue repetidamente un grupo al diagrama. Sin embargo, tiene razón en que conectar todos los cables para operaciones bit a bit es definitivamente un dolor en comparación con un HDL que fue diseñado con eso en mente y puede expresar esas conexiones de manera eficiente.

Otra cosa que puede hacer tropezar al programador experimentado de LV son todas las restricciones que se aplican a los VIs de sabor FPGA que no están permitidos, el uso adecuado de bucles de ciclo único, etc. Realmente ayuda tener algo de experiencia en HDL y luego mapear esos conceptos de programación para trabajar en LV, en lugar de intentar comenzar desde LV convencional y aprender cómo hacer eficientemente lo que quiere (y obtener los beneficios del paralelismo y la velocidad de la FPGA) sin tropezar con todas las cosas que puede ‘ No lo haga en el sabor FPGA despojado.

Los beneficios de LV son principalmente estos:

  • Soporte directo para hardware de NI que incluye el FPGA: la configuración de E / S es mucho más simple, y la entrada y salida de los datos del FPGA se maneja principalmente a través de componentes invisibles que se agregan al VHDL final, lo que puede ser un importante ahorrador de tiempo.
  • VIs preconstruidos que aprovechan los bloques DSP para operaciones matemáticas eficientes, decimales de punto fijo, filtros digitales, etc. Este tipo de cosas requiere más trabajo en un HDL y se requiere una comprensión más profunda de los DSP del chip.
  • Estructuras de datos fácilmente invocadas, como FIFO, RAM en bloque o distribuida y otras.

Cada uno tiene sus ventajas y desventajas.

Cuando diseña un sistema digital, por lo general, lo primero que debe hacer es ir a un bloc de notas y papel (o marcador y pizarra) y dibujar el sistema en forma gráfica. Esto tiene sentido porque lo que sucede en un sistema digital es el flujo de información, en lugar de la ejecución de instrucciones.

Al programar un circuito en un lenguaje de descripción de hardware, la similitud con C u otros lenguajes de procedimiento puede hacer tropezar al desarrollador no veterano porque los HDL deben ser lenguajes de flujo de datos o de comportamiento, no de procedimiento. (Los bancos de prueba serán en parte procesales, claro, pero ese es un tema diferente). Quiero decir, vamos, es texto escrito en líneas. Simplemente parece que debería ser de procedimiento. Y algunos de los errores más comunes en el diseño se hacen porque el ingeniero pensó que las cosas se ejecutaban en secuencia en lugar de simultáneamente.

LabVIEW FPGA omite toda la parte de convertir lo que ha dibujado en texto, porque es un lenguaje de flujo de datos gráfico: dibuja su circuito de la misma manera que lo dibuja en una pizarra.

Dicho esto, tiene sus desventajas.

Una de mis construcciones favoritas en VHDL es la declaración for-generate , es decir, si hay una parte recurrente de un circuito a la que puedo asignar algorítmicamente estas partes recurrentes y conectarlas, puedo desplegarlas en unas pocas líneas en lugar de tener que dibujar y volver a dibujar las conexiones una y otra vez. Además, es completamente generalizable, lo que significa que puedo codificarlo una vez y alimentarlo con un parámetro y se implementará con el nuevo parámetro generalizado: podría ser una profundidad, podría ser un ancho de bus, podrían ser ambos .

LabVIEW FPGA? Tienes que dibujar y volver a dibujar y volver a dibujar. . .

Otro beneficio de las HDL es que a veces desea realizar un conjunto de operaciones simples, como un montón de operaciones en varios cables. Por ejemplo, me resulta mucho más fácil escribir

A <= B + (C [7 abajo 1] y C [15 abajo 8]) * D [7 abajo 1] - D [15 abajo 8];

en una sola línea de lo que es dibujar todo lo que sucede.