Cómo crear prototipos de algoritmos MATLAB y Simulink en FPGA
flujos de trabajo manuales, la cuantificación de punto fijo normalmente se realiza durante la codificación HDL. En este flujo de trabajo, los ingenieros no pueden cuantificar fácilmente el impacto de la cuantificación de punto fijo comparando representaciones de punto fijo y referencias de punto flotante, y es igualmente difícil analizar desbordamientos de pines en implementaciones HDL.
Para tomar una decisión informada sobre el número de decimales necesarios, los ingenieros necesitan alguna forma de comparar los resultados de la simulación de punto flotante con los resultados de la simulación de punto fijo antes de comenzar el proceso de codificación HDL. Aumentar el número de puntos decimales puede reducir el error de cuantificación; sin embargo, este enfoque requiere un aumento en el tamaño de la palabra (más área, mayor consumo de energía).
Por ejemplo, la Figura 5 muestra la diferencia entre los resultados de la simulación de punto flotante y de punto fijo para la primera etapa del filtro de paso bajo en una cadena de filtros DDC. Estas diferencias se deben a la cuantificación de punto fijo. La figura anterior muestra el impacto de la superposición de resultados de simulación de punto flotante y punto fijo. La siguiente figura muestra el error cuantificado en cada punto del gráfico. Es posible que los ingenieros necesiten aumentar el número de puntos decimales para minimizar los errores de cuantificación, según las especificaciones de diseño.
Además de seleccionar el número de decimales, los ingenieros también necesitan optimizar la longitud de la palabra para lograr un bajo consumo de energía y diseños con área optimizada.
En el caso de estudio de DDC, los ingenieros utilizaron el conjunto de bloques de punto fijo de Simulink para reducir la longitud de la palabra de la sección de enlace del filtro digital hasta en 8 bits (Figura 6).
Genere prototipos FPGA más rápido con la generación automática de código HDL
El código HDL es esencial a la hora de generar prototipos FPGA. Los ingenieros necesitan escribir código Verilog o VHDL a mano. Como alternativa, utilizar un codificador HDL para generar automáticamente código HDL tiene muchas ventajas claras. Los ingenieros pueden evaluar rápidamente si pueden implementar algoritmos actuales en hardware; evaluar rápidamente diferentes implementaciones de algoritmos y elegir la mejor y crear prototipos de algoritmos más rápido en FPGA.
En el caso de estudio de DDC, se generaron 5780 líneas de código HDL en 55 segundos. Los ingenieros pueden escanear y comprender rápidamente el código (Figura 7). La generación automática de código permite a los ingenieros realizar cambios en los modelos a nivel de sistema regenerando el código HDL, lo que produce una implementación HDL actualizada en minutos.
Banco de pruebas a nivel de sistema de reutilización con cosimulación verificada por HDL
Verificación funcional: la cosimulación HDL permite a los ingenieros reutilizar modelos de Simulink, dirigir estímulos a simuladores HDL y validar simulaciones. La salida realiza un análisis interactivo a nivel del sistema (Figura 8).
La simulación HDL proporciona solo salida de forma de onda digital, mientras que la cosimulación HDL proporciona una vista completa del código HDL y acceso al conjunto completo de herramientas de análisis a nivel de sistema de Simulink. Cuando los ingenieros encuentran discrepancias entre los resultados esperados y los resultados de la simulación HDL, se puede utilizar la cosimulación para comprender mejor el impacto de la falta de coincidencia a nivel del sistema.
Por ejemplo, en la Figura 9, la vista del espectrómetro permite al ingeniero tomar una decisión informada para ignorar la discrepancia entre los resultados esperados y los resultados de la simulación HDL porque las diferencias ocurren en la región de la banda resistiva. Por el contrario, la salida de forma de onda digital
simplemente señala como errores las discrepancias entre los resultados esperados y los resultados de la simulación HDL. Si bien los ingenieros pueden llegar finalmente a la misma conclusión, llevará más tiempo completar el análisis requerido.
Cobertura de prueba: los ingenieros pueden automatizar el análisis de cobertura de código utilizando herramientas de verificación HDL, herramientas de verificación de diseño Simulink y ModelSim/Questa.
En este flujo de trabajo, la herramienta de verificación de diseño de Simulink genera un conjunto de casos de prueba para la cobertura del modelo, y la herramienta de verificación HDL ejecuta automáticamente ModelSim/Questa utilizando este conjunto de casos de prueba para recopilar datos de cobertura de código para analizar completamente el código generado.
Acelere la verificación con simulación de bucle interno FPGA
Después de verificar el algoritmo DDC mediante simulación a nivel de sistema y cosimulación HDL, el algoritmo DDC se puede implementar inmediatamente en la plataforma de destino FPGA. . La verificación de algoritmos basada en FPGA (también conocida como simulación en bucle FPGA) aumenta la confianza en que el algoritmo se ejecutará de manera efectiva en un entorno del mundo real. Esta verificación permite a los ingenieros ejecutar escenarios de prueba más rápido en comparación con la simulación HDL basada en host.
Para los algoritmos DDC, se pueden utilizar modelos de Simulink para controlar el estímulo de entrada de FPGA y analizar la salida de FPGA (Figura 10). Al igual que con la cosimulación HDL, los datos relevantes siempre están disponibles para su análisis en Simulink.
La Figura 11 compara la cosimulación HDL y la simulación FPGA-in-the-loop, dos métodos de verificación para diseños DDC. En este caso, la simulación FPGA-in-the-loop es 23 veces más rápida que la cosimulación HDL.
El aumento de velocidad permite a los ingenieros ejecutar una gama más amplia de casos de prueba y pruebas de regresión en sus diseños. Esto les permite identificar áreas problemáticas potenciales para un análisis más detallado.
Aunque es más lenta, la cosimulación HDL mejora la visibilidad del código HDL. Por lo tanto, es ideal para un análisis más detallado de áreas problemáticas descubiertas durante la simulación en bucle de FPGA.