Home
Support
Como puedo Optimizar/Reducir el Uso de Recursos y/o Incrementar la Velocidad en un FPGA?
Como puedo Optimizar/Reducir el Uso de Recursos y/o Incrementar la Velocidad en un FPGA?
Software Primario:
Versión de Software Primario: 1.0
Versión de Software Primario Corregido: N/A
Software Secundario: N/A
Problema: Cuando compilo mi código FPGA obtengo un error de sobremapeo. ¿Hay recomendaciones para reducir el uso de recursos del FPGA para poder cargar mi código al blanco FPGA?
Cuando ejecuto mi código FPGA, el código no se ejecuta a la velocidad de ciclo deseada. Hay recomendaciones para modificar la aplicación para aumentar la velocidad de ciclo?
Solución: Reduce gate usage and increase speed:
Disminuir el uso de recursos e incrementar la velocida
- Evite VIs grandes
Después de compilar, se genera un reporte que provee información sobre la velocidad y tamaño del VI compilado. La sección de Resumen de Utilización de Dispositivo provee información en el número de SLICEs usado. Éste métrica es la medida más importante sobre el tamaño del programa en el hardware. El proceso de diseño debe ser iterativo. Durante el proceso, hay un aumento en las SLICEs utilizadas mientras el programa se vuelve más grande.
- Utilice el "Single Cycle Timed While Loop (SCTL) para optimizar código
Cualquier código de LabVIEW FPGA puesto en un SCTL se optimiza para un mayor rendimiento y toda la lógica extra para forzar el flujo de datos es eliminada. Por lo tato, al poner partes del código en un SCTL y escribiendo un verdadero a la condición de paro (corre solo una vez) creará código optimizado para reducir el uso del FPGA.
- Utilice arbitraje apropiado
Los recursos compartidos y subVIs reentrantes llevan a que exista arbitraje. El arbitraje consume una gran cantidad de recursos FPGA y puede impedir la ejecución en paralelo.
Solamente reducir el número de compuertas:
- Elimine arreglos en el panel frontal
Los arreglos en el panel frontal tomán cantidades extraordinarias de espacio en el chip, ya que se tienen que cargar dos veces en el FPGA. Los arreglos e indicadores en el panel frontal pueden ser reemplazados por DMA FIFOs, instalación de memoria de bloques, look-up tables o constantes de diagrama de bloques.
- Minimice Elementos del panel frontal
Cada elemento del panel frontal de un FPGA VI crea un registro para que el anfitrión pueda usarlo para comunicación. Este proceso toma compuertas extra. Si no deseea comunicación con el anfitrión convierta las terminales en constantes o variables globales.
- Reemplace los subVIs de la paleta aritmética con cálculos basados en lógica binaria
subVIs de la paleta de funciones como Quotient and Remainder, Greater than?, and In Range and Coerce pueden ser simplificadas a operaciones binarias en algunos casos.Esto puede reducir el uso de compuertas en el FPGA.
- Use Block de Memoria al crear FIFO´s
Utilice la memoria de bloque en la tarjeta FPA para guardar datos de FIFOs mas grandes que 300 bytes.
- Mande parte del código al anfitrión.
A veces hay procesos que no es necesario hacerlos en el FPGA. Puede haber partes del programa que pueden trabajar en el programa anfitrión y regresar los resultados por DMA o comunicación por nodos de I/O.
- Parta el código
Hay veces donde el código FPGA esta en partes múltiples que no necesariamente deben estar en el chip al mismo tiempo. Por ejemplo una prueba que tiene cuatro casos de prueba. En lugar de poner todos los casos en el chip en un programa, cree cuatro programas separados, corriendolos cuando sea necesario desde el anfitrión.
Incrementando la velocidad:
- Use Reentrant SubVI's
Los VIs creados en un blanco FPGA son reentrantes por defecto. Para hacer que un subVI sea no reentrante cambie las propiedades del VI. Copias múltiples de un VI reenttrante permite una creación rápida de código similar. Evite tener recursos compartidos en subVIs reentrantes.
- Haga operaciones paralelas
Haga dos o más operaciones simultáneas.
- Use "Pipelining"
Utilice registros de cambio o nodos de retroalimentación para permitir que la lógica se ejecute en paralelo y se pasen datos entre iteraciones subsecuentes.
Ligas Relacionadas: KnowledgeBase 38S79L9U: Why Does My FPGA Compile Give An OVERMAPPED Error When Compiling?
DeveloperZone Tutorial: Utilization of LabVIEW FPGA Structures/Functions/Data Types on an FPGA
DeveloperZone Tutorial: Optimizing your LabVIEW FPGA VIs: Parallel Execution and Pipelining
LabVIEW FPGA 8.6 Help: Optimizing FPGA VIs for Speed and Size
Archivos Adjuntos:
Día del Reporte: 04/05/2006
Última Actualización: 06/19/2012
Identificación del Documento: 3W4CJJXJ
Other Support Options
Ask the NI Community
Collaborate with other users in our discussion forums
Request Support from an Engineer
A valid service agreement may be required, and support options vary by country.