Preguntas Frecuentes Sobre el Ciclo Temporizado de Ciclo Único para el Módulo LabVIEW FPGA

Actualizado el Nov 6, 2023

Reportado en

Software

  • LabVIEW FPGA Module

Otros

FPGA

Detalles del problema

Veo que el módulo LabVIEW FPGA tiene acceso a bucles temporizados de ciclo único (SCTL - Single-Cycle Timed Loop). ¿Qué es un SCTL y qué fortalezas y limitaciones tienen?

Solución

¿Qué es el ciclo temporizado de ciclo único?
El ciclo temporizado de ciclo único (SCTL - Single-Cycle Timed Loop ) es un uso especial de la estructura del ciclo temporizado de LabVIEW. Las estructuras de bucle temporizado siempre son SCTL cuando se utilizan en un VI de FPGA. Cuando se usa en un dispositivo FPGA, este bucle ejecuta todas las funciones dentro de una marca del reloj FPGA que ha seleccionado. La selección por defecto es el reloj global FPGA de 40 MHz. Puede usar el SCTL con relojes derivados para cronometrar el bucle a una velocidad diferente a 40 MHz. No puede cambiar dinámicamente las propiedades de tiempo del bucle temporizado cuando se usa con un objetivo FPGA.

¿Cuánto más rápido ejecutarán los programas usando el SCTL?
El uso de un bucle While tradicional en su VI de FPGA requiere un mínimo absoluto de 3 tics para ejecutar cada iteración. Esto se debe a la cadena de habilitación utilizada en el VI de FPGA compilado. La explicación sobre la cadena de habilitación está fuera del alcance de este documento, pero en corto, se utiliza para garantizar el flujo de datos cuando el VI de FPGA se compila en un archivo de bits.

Además, cada función dentro de While Loop requerirá al menos un tick para ejecutarse, aunque las funciones se ejecutarán en paralelo si no hay dependencia de datos. Con el SCTL, todas las funciones dentro del bucle deben ejecutarse dentro de un solo tick.

Los beneficios de rendimiento de usar un SCTL en su VI de FPGA variarán dependiendo de lo que haya dentro el bucle. Si su código se puede compilar con éxito dentro de un SCTL en lugar de un bucle normal, notará una mejora notable en el rendimiento.

¿Es el SCTL más eficiente en bienes raíces con recursos FPGA?
Sí. Debido a que su lógica se implementa de manera combinatoria en hardware, la configuración de la FPGA generada por el código usará menos recursos. En lugar de hacer una suma, guardar el resultado, y luego multiplicar y guardar el resultado, el SCTL hace ambas cosas en una sola marca y no tiene que guardar el resultado entre ellas. Esto conserva los recursos FPGA porque no se necesita flip flop entre las operaciones para guardar el resultado de cada operación anterior.

¿Se pueden usar todas las funciones y estructuras dentro del SCTL?
No. Las funciones que llevan más de una marca, como las funciones de E / S analógicas o cualquier función que espere, no se pueden usar dentro de la SCTL. Además, si tiene una cadena de lógica dentro del bucle que demora más de una marca de reloj en ejecutarse, esta lógica no se puede usar dentro del SCTL y su VI no se compilará.

Las Estructuras de secuencia se pueden colocar dentro de la SCTL, pero se eliminarán del código antes de que se ejecute en el FPGA.

La página de ayuda del Ciclo temporizado de ciclo único tiene una lista de funciones que no se pueden usar en un SCTL. Consulte la Ayuda de LabVIEW para obtener más información sobre el soporte de SCTL y la información de tiempo para los VI individuales.
  • Analog Period Measurement VI
  • Butterworth Filter VI
  • Discrete Delay VI
  • Divide function
  • FIFO Clear function
  • FPGA I/O Method Node except with some FPGA targets
  • FPGA I/O Property Node except with some FPGA targets
  • Interrupt VI
  • Look-Up Table 1D VI with the Interpolate data checkbox selected
  • Loop Timer VI
  • Multiple FPGA I/O Nodes configured for the same I/O resource if at least one node is inside the loop and at least one node is outside the loop
  • Non-reentrant subVIs if you use multiple instances
  • Notch Filter VI
  • PID VI
  • Quotient & Remainder function
  • Reciprocal function
  • Rotate 1D Array function
  • Sine Wave Generator VI
  • Single-precision floating-point operations
  • Square Root function
  • Timed Loop
  • Wait Express VI
  • Wait on Occurrence function
  • While Loop
¿Puedo usar la canalización para permitir que se ejecute más lógica dentro del SCTL?
Sí. Puede usar registros de desplazamiento o nodos de retroalimentación para permitir que la lógica se ejecute en paralelo y pase datos entre iteraciones subsiguientes del SCTL; por lo tanto, toda la cadena lógica se ejecuta en múltiples iteraciones SCTL. Como con cualquier implementación paralela en un VI FPGA, esto utiliza recursos FPGA adicionales.

¿Recibiré un mensaje de error si mi lógica dentro de SCTL no puede ejecutarse en una marca?
Sí, aunque LabVIEW normalmente no arrojará errores relacionados con el tiempo hasta que intente compilar su VI de FPGA. Hay dos puntos diferentes en su compilación en los que puede encontrar errores relacionados con SCTL. Primero, cuando LabVIEW FPGA intenta compilar el código de VI a VHDL (Generar archivos intermedios), recibirá un cuadro de diálogo de error si ha usado alguna función no compatible (por ejemplo, Cociente y Resto) en su SCTL. Solo tomará unos segundos para que aparezca este cuadro (no comienza el proceso completo de compilación de VHDL).

Incluso si evita usar funciones no compatibles en su SCTL, si el SCTL contiene suficiente lógica como para que el bucle aún no pueda ejecutarse en un solo reloj, su compilación fallará con una infracción de tiempo. Este tipo de error ocurre durante la compilación real en las herramientas de Xilinx, y puede ocurrir varios minutos (o más) en su compilación. Si se encuentra con un error de este tipo, considere reducir la lógica en su SCTL o canalizar su algoritmo para permitir que su VI compile con éxito.

¿Es el SCTL una característica avanzada?
Sí. Si bien algunas tareas pueden implementarse de manera muy simple en el SCTL, algunas pueden ser desafiantes. Por ejemplo, la implementación de protocolos digitales de alta velocidad no se puede hacer usando las funciones de espera si se usa el SCTL. Debe utilizar una máquina de estados para que cada iteración del bucle tome solo una marca. El SCTL proporciona velocidad y eficiencia para las aplicaciones que lo requieren, pero pueden ser difíciles de usar. En algunas situaciones, puede ser más apropiado usar el tradicional While Loop.

¿Puedo usar el SCTL con un reloj global más rápido?
Sí, sin embargo, se pueden ejecutar menos funciones en un SCTL compilado a 80 MHz o superior.