SQNR de 16 bits de multiplicación con signo con MSB almacenado en 16 bits

-2

Estoy tratando de averiguar qué es el SQNR si multiplico 2 valores enteros con signo de 16 bits y almaceno el resultado como un entero con signo de 16 bits, eliminando los bits menos significativos.

Por ejemplo:

a (16 bits con signo) * b (16 bits con signo) = c (16 bits con signo) sin los LSB

Y para aclarar qué hay después de esto, estoy sumando muchos valores sucesivos de la 'c' resultante: esta suma se almacena en una representación de entero con signo de longitud infinita.

¿Cómo calculo el SQNR en esta situación?

    
pregunta Nektarios

1 respuesta

1

Recuerde eliminar 15 LSB, no 16. La multiplicación con signo es un poco imparada, numéricamente, ya que está multiplicando 2 números de 15 bits y 2 bits de signo, dando un número de 30 bits y 2 bits de signo casi redundantes.

Casi redundante porque la única ocasión en la que llevarán información diferente es -2 ** 15 * -2 ** 15 cuyo producto es 2 ** 30. Si puede descontar -2 ** 15 en cualquiera de las entradas (por ejemplo, porque conoce sus coeficientes de filtro), puede llamar a los bits de signo completamente redundantes. Si esto falla, toma el MSB como el confiable.

Aparte de eso, el SQNR no será diferente de un truncamiento con la misma longitud de palabra que es un resultado estándar, susceptible de mejora mediante las técnicas habituales de redondeo interpolado o conformación de ruido.

O manteniendo más (o todo) el producto. Trunque o modifique la salida del acumulador, no sus entradas ...

    
respondido por el Brian Drummond

Lea otras preguntas en las etiquetas