Aritmética de punto fijo de chips DSP en formato Q
1> Clasificación de desbordamiento:
Desbordamiento (desbordamiento), desbordamiento insuficiente (desbordamiento insuficiente)
2> Resultado de desbordamiento: Min Max carácter sin firmar 0 255 carácter firmado -128 127 int sin signo 0 65535 int con signo -32768 32767 El desbordamiento se mueve en sentido antihorario según los datos en el círculo; el desbordamiento inferior se mueve en el sentido de las agujas del reloj en el círculo.
Ejemplo: int firmado: 32767+1=-32768; 32768-1=32767
carácter sin firmar: 255+1=0; p>3>Para evitar que se produzca desbordamiento, la función de protección de desbordamiento generalmente se puede configurar en el DSP. Cuando se produce un desbordamiento, el resultado se establece automáticamente en el valor máximo o mínimo. 1> Defina las variables como tipos de punto flotante (flotante, doble) y utilice el lenguaje C para suavizar las diferencias entre procesadores de punto fijo y procesadores de punto flotante. Sin embargo, el código del programa es enorme y la velocidad de operación es lenta.
2>Amplía un determinado número de veces para representar decimales. Por ejemplo, si desea representar una variable con una precisión de 0,01, amplíela 100 veces para realizar el cálculo y luego conviértala una vez completado el cálculo. Sin embargo, este enfoque es relativamente rígido. Si desea redefinir las variables anteriores con una precisión de 0,001, debe ampliarla 1000 veces y reescribir todo el programa para considerar problemas como el desbordamiento.
3>Método de escala: Formato Q: determine la precisión de los decimales suponiendo que el punto decimal se encuentra a la derecha de qué dígito.
P0: El punto decimal está después del dígito 0, que es el método que usamos generalmente
P15 El punto decimal está después del dígito 15, y de 0 a 14 dígitos son todos decimales lugares.
Fórmula de conversión: Q=(int)(F×pow(2,q)) F es un número de coma flotante
F=(float)(Q×pow(2, -q) )) Q es el número de escala 1> Suma y resta de punto fijo: debe convertirse al mismo formato Q para sumar y restar
2> Multiplicación de punto fijo: Multiplicación de datos en diferentes Los formatos Q equivalen a la suma de valores Q
3>División de punto fijo: Dividir datos en diferentes formatos Q equivale a restar el valor Q
4>Punto fijo a la izquierda desplazamiento: el desplazamiento a la izquierda equivale a aumentar el valor Q
5> Desplazamiento a la derecha de punto fijo: el desplazamiento a la derecha equivale a la reducción de Q En aplicaciones prácticas, la mayoría de las operaciones de punto flotante tienen tanto una parte entera como una. parte decimal. Por lo tanto, es necesario elegir un formato de escala adecuado para manejar mejor la operación. Generalmente, se utilizan los siguientes dos métodos:
1> Use una escala moderada al usarlo, que puede representar un cierto reinicio de enteros o un reinicio de decimales. Por ejemplo, para el sistema 2812 de 32 bits, use el. Formato Q15, que puede representar datos en el rango de -65536,0~65535,999969482.
2>Se utilizan todos los decimales, de modo que la multiplicación de decimales siempre es un decimal y nunca se desborda. Tome un valor máximo límite (preferiblemente usando 2 elevado a la enésima potencia) y conviértalo en un decimal de x/Max (si Max se lleva a la enésima potencia de 2, puede usar desplazamiento en lugar de división).