¿Cómo puedo manejar el desbordamiento o el subdesbordamiento en VHDL?

-1

¿Cómo puedo manejar el desbordamiento o el subdesbordamiento al implementar la siguiente ecuación en VHDL para algunas iteraciones?

$$ α = α (s) - max (αi) ~~~~ i ϵ (0,3) $$

Si alguno de los \ $ αi \ $ 'se convierte en 0 o negativo, el \ normal normalizado resultante $ se convierte en negativo y de esta manera, al avanzar, obtenemos \ $ α \ $ un gran valor negativo, por lo que la pregunta es ¿Cómo manejar este desbordamiento?

    
pregunta user125007

1 respuesta

0
  1. Obtenga la aritmética correcta antes de pasar al hardware. Ya sea en VHDL de nivel superior para simulación, o en Matlab / Ada / Python / etc antes de pasar a VHDL.
  2. En este nivel, detecte y maneje los desbordamientos EXPLÍCITAMENTE, es decir, no utilice las características accidentales de la aritmética en su idioma elegido. Verifique este modelo explícito con un modelo de resolución completa (por ejemplo, utilizando un punto flotante de precisión doble) para asegurarse de que ofrece resultados idénticos o resultados con un error aceptablemente bajo (redondeo).
    Tres razones por las que me gusta Ada para esto son: (a) admite tipos de puntos fijos personalizados como ciudadanos de primera clase
    (b) genera excepciones para errores de rango, desbordamientos, etc., por lo que confío en que detecto los problemas antes de tiempo. (NOTA: el compilador gcc Ada necesita algunos indicadores configurados para hacer esto correctamente)
    (c) los elementos comunes con VHDL hacen que la traducción entre ellos sea una brisa.
  3. CORRE los problemas y verifica que las respuestas sean satisfactorias. Por ejemplo:
    (a) verifique que los flujos excesivos / insuficientes se hagan en pares y cancelen para dar respuestas correctas en algunos tipos de filtro simétrico
    (b) ampliar los tipos de datos intermedios para manejar los desbordamientos, luego redondear y truncar en el tipo de datos de salida requerido
    (c) Detecte valores fuera de rango y los sature hasta los límites de rango (en Ada, puede hacer esto en un controlador de excepciones)

Una vez que sepa que las matemáticas son correctas en detalle, tradúzcalas a VHDL sintetizable y verifique que la versión sintetizable dé resultados idénticos a los bits.

    
respondido por el Brian Drummond

Lea otras preguntas en las etiquetas