18
Herramientas de Diseño y Aritmética de Punto Fijo Página 1 de 18 FCEFyN Universidad Nacional de Cordoba Procesamiento Digital de Señales FCEFyN UNC Herramientas de Diseño y Aritmética de Punto Fijo CAPÍTULO V INTRODUCCIÓN El objetivo de este capítulo es introducir al lector en las técnicas de diseño de sistemas digitales empleando aritmética de punto fijo. El enfoque del mismo es sustancialmente práctico, dejando las cuestiones más teóricas a la abundante literatura disponible. ARITMÉTICAS EXISTENTES En el mundo de la programación existen dos tipos de representación numérica: Figura 1. Diferencias entre punto fijo y punto flotante En el caso de la aritmética de punto fijo, el punto binario se encuentra siempre en la misma posición, es decir, existirán m bits para la parte entera y n bits para la parte decimal. En algunos casos puede ocurrir que 0 = m (no existe parte entera) o bien, 0 = n (no existe parte decimal). En cambio, para la aritmética de punto flotante, la ubicación del punto binario puede variar (Figura 1). En el presente apunte se ahondará sobre la aritmética de punto fijo ya que es la utilizada tanto por la familia DSP5680x como por la mayoría de los DSP´s disponibles en el mercado. ARITMÉTICA DE PUNTO FIJO Muchas veces cuando se trabaja con procesadores digitales pasa por desapercibido el tipo de aritmética utilizada. En cambio, una de las cuestiones donde se hace más hincapié es la longitud de palabra. Así, se

Punto fijo sobre template - facultad.efn.uncor.edu

  • Upload
    others

  • View
    14

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Punto fijo sobre template - facultad.efn.uncor.edu

 

 

        

Herramientas de Diseño y Aritmética de Punto Fijo 

Página  1 de 18

FCEFyN  Universidad Nacional de Cordoba

Procesamiento Digital de Señales – FCEFyN – UNC     Herramientas de Diseño y Aritmética de Punto Fijo 

CAPÍTULO V INTRODUCCIÓN 

El  objetivo  de  este  capítulo  es  introducir  al  lector  en  las  técnicas  de  diseño  de  sistemas  digitales 

empleando  aritmética  de  punto  fijo.  El  enfoque  del mismo  es  sustancialmente  práctico,  dejando  las 

cuestiones más teóricas a la abundante literatura disponible. 

 

ARITMÉTICAS EXISTENTES 

En el mundo de la programación existen dos tipos de representación numérica: 

 

Figura 1. Diferencias entre punto fijo y punto flotante  

En el caso de la aritmética de punto fijo, el punto binario se encuentra siempre en la misma posición, es 

decir, existirán m bits para la parte entera y n bits para la parte decimal. En algunos casos puede ocurrir 

que  0=m   (no  existe  parte  entera)  o  bien,  0=n   (no  existe  parte  decimal).  En  cambio,  para  la 

aritmética de punto flotante, la ubicación del punto binario puede variar (Figura 1). 

En el presente apunte se ahondará sobre  la aritmética de punto fijo ya que es  la utilizada tanto por  la 

familia DSP5680x como por la mayoría de los DSP´s disponibles en el mercado. 

 

ARITMÉTICA DE PUNTO FIJO 

Muchas veces cuando se trabaja con procesadores digitales pasa por desapercibido el tipo de aritmética 

utilizada. En cambio, una de las cuestiones donde se hace más hincapié es la longitud de palabra. Así, se 

Page 2: Punto fijo sobre template - facultad.efn.uncor.edu

 

 

        

Herramientas de Diseño y Aritmética de Punto Fijo 

Página  2 de 18

FCEFyN  Universidad Nacional de Cordoba

Procesamiento Digital de Señales – FCEFyN – UNC     Herramientas de Diseño y Aritmética de Punto Fijo 

sabe bien que un registro de 4 bits permite representar 16 combinaciones diferentes, pero pocas veces 

el  programador  se  detiene  a  pensar  qué  está  diciendo  ese  conjunto  combinaciones  o  cómo 

interpretarlos.  

Se  supone que un ADC de 4 bits,  el  cual  se  encuentra digitalizando una  señal  cualquiera,  entrega  la 

siguiente muestra (en base binaria): 

20101=Qx (1)

Ahora bien, ¿qué número decimal representa esta muestra? La respuesta no es una sola, ni varias, sino 

infintas, ya que la interpretación de esa combinación dependerá de lo que el programador defina como 

convención  en  su  proyecto.  Por  ejemplo,  se  podría  suponer  la  siguiente  interpretación  (en  base 

decimal): 

( )100123 .4.5,0.2 bbbbxQ +++= (2)

Así, el número decimal representado por la muestra anterior será: 

( ) 1010 5,41.401.5,00.2 =+++=Qx (3)

Pero  la cuestión no es tan  liberal. En microcontroladores, DSP´s y microprocesadores comerciales esta 

convención no es determinada por el usuario sino por el fabricante.  

Para un conjunto de bits como el de la  Figura 2, existe una serie de  interpretaciones posibles que son 

ampliamente aceptadas y que se resumen en la Tabla 1. 

 

 

Figura 2. Conjunto de bits

Page 3: Punto fijo sobre template - facultad.efn.uncor.edu

 

 

        

Herramientas de Diseño y Aritmética de Punto Fijo 

Página  3 de 18

FCEFyN  Universidad Nacional de Cordoba

Procesamiento Digital de Señales – FCEFyN – UNC     Herramientas de Diseño y Aritmética de Punto Fijo 

Tabla 1. Posibles interpretaciones de un conjunto de bits

Interpretación Expresión Rango

Entero sin signo ∑−

=

=1

0

2.)(m

i

iibnx 120 −≤≤ m

Qx

Entero con signo ∑−

=

−− +−=

2

0

11 2.2.)(

m

i

ii

mm bbnx 122 11 −≤≤− −− m

Qm x

Fraccional sin signo en complemento a 2 ( )∑−

=

−−=1

0

2.)(m

i

imibnx m

Qx −−≤≤ 210

Fraccional con signo en complemento a 2 ( )∑−

=

−−−− +−=

2

0

11 2.)(

m

i

imim bbnx ( )1211 −−−≤≤− m

Qx

 

Generalmente,  para  el  procesamiento  de  señales  se  emplea  la  aritmética  fraccional  con  signo  en 

complemento a 2, mientras que para  indexado y punteros a memoria  se utiliza  la aritmética entera. 

Este es el caso de los DSP de la familia DSP5680x.  

Implementar  por  hardware  una  aritmética  de  punto  fijo  conlleva  una mayor  simplicidad,  lo  cual  se 

traduce directamente  en menores  costos. Además ocupa menor  superficie de  silicio  respecto  a una 

unidad de punto flotante, lo que permite agregar al procesador más módulos y memoria. 

Entre  las desventajas más significativas se encuentra el hecho de que  los errores de truncamiento con 

esta  arquitectura  pueden  ser  significativos,  degradando  la  calidad  de  los  algoritmos  implementados. 

Para lograr en punto fijo la misma precisión que se logra con punto flotante se necesitaría una cantidad 

muy grande de bits. De hecho,  recurriendo al  standard ANSI/IEEE  Std. 754‐1985  se encuentra que el 

menor valor representable en punto flotante de 32 bits es  3810.2,1 −± . Para lograr la misma precisión en 

punto fijo se requerirían ni más ni menos que: 

( )382

38 10.2,1log10.2,12 −−− −=⇒= nn (4)

Page 4: Punto fijo sobre template - facultad.efn.uncor.edu

 

 

        

Herramientas de Diseño y Aritmética de Punto Fijo 

Página  4 de 18

FCEFyN  Universidad Nacional de Cordoba

Procesamiento Digital de Señales – FCEFyN – UNC     Herramientas de Diseño y Aritmética de Punto Fijo 

¡ bits bits n 12697,125 ≅= ! (5)

 

casi el cuádruplo de bits que para la misma precisión en aritmética flotante. 

 

RELACIÓN SEÑAL‐RUIDO 

Se supone que se está digitalizando una señal unipolar (Figura 3) cuyo rango dinámico es RD. El paso de 

cuantización es Q. Existen dos métodos de cuantización: 

• Redondeo. La señal digitalizada toma el valor más cercano. 

• Truncado. La señal digitalizada toma siempre el menor valor.  

Para la señal de la Figura 3 se aplica una cuantización por redondeo. Ahora bien, si la señal de entrada 

x(n) (continua en amplitud, discreta en tiempo) varía dentro del mismo paso de cuantización,  la salida 

digitalizada  xQ(n)  (discreta  en  amplitud  y  tiempo)  será  constante,  aún  cuando  la  señal  x(n)  esté 

cambiando. Este efecto se interpreta como ruido ya que implica una degradación irreversible de la señal 

analógica. Por lo tanto, siempre es interesante conocer cuál es la relación señal‐ruido del sistema digital 

empleado: 

⎟⎠⎞

⎜⎝⎛=

QRDSNR log.20                             (6) 

y como: 

QRDRDQ n

n =⇒= 22

(7)

Reemplazando (7) en (6): 

( ) ( )2log..202log.20 nSNR n == (8) Finalmente: 

nQ

RDSNR .02,6log.20 =⎟⎠⎞

⎜⎝⎛= (9)

Page 5: Punto fijo sobre template - facultad.efn.uncor.edu

 

 

        

Herramientas de Diseño y Aritmética de Punto Fijo 

Página  5 de 18

FCEFyN  Universidad Nacional de Cordoba

Procesamiento Digital de Señales – FCEFyN – UNC     Herramientas de Diseño y Aritmética de Punto Fijo 

Esta última ecuación es muy conocida como la regla de los “6dB por bit”, ya que la relación señal‐ruido 

aumenta aproximadamente 6dB por cada bit de resolución que se agrega. Esto es lógico ya que, 

suponiendo que se mantiene constante el paso de cuantización Q, agregar un bit extra implica duplicar 

la cantidad de combinaciones binarias o lo que es lo mismo aumentarla en 6dB. 

 

Figura 3. Proceso de cuantificación por redondeo  

La ecuación 9 permite determinar la cantidad de bits requeridos para lograr una SNR de diseño. 

 

PUNTO FIJO EN LA FAMILIA DSP56800 

La ALU  (Arithmetic  Logic Unit, Unidad  Lógica y Aritmética) de un DSP es el  lugar o bloque dentro de 

núcleo donde se  realizan  todas  las operaciones aritméticas y  lógicas,  tal como sus siglas  lo  indican. El 

DSP56805 tiene una ALU que ofrece las siguientes características: 

 

• Tres registros de entrada de 16 bits (X0, Y0 y Y1) 

• Dos  registros  acumuladores  (A  y  B)  de  longitud  extendida  (36  bits),  los  cuales  pueden  ser 

divididos en los siguientes subregistros (Figura 4): 

Dos registros de 16 bits (A0 y B0) 

Dos registros de 16 bits (A1 y B1) 

Page 6: Punto fijo sobre template - facultad.efn.uncor.edu

 

 

        

Herramientas de Diseño y Aritmética de Punto Fijo 

Página  6 de 18

FCEFyN  Universidad Nacional de Cordoba

Procesamiento Digital de Señales – FCEFyN – UNC     Herramientas de Diseño y Aritmética de Punto Fijo 

Dos registros de extensión de 4 bits (A2 y B2) 

• Un limitador (data limiter). Previene desbordamientos (overflows). 

• Una unidad de rotación de 16 bits (16‐bit barrel shifter). Permite rotar entre 0 y 15 posiciones un 

conjunto de bits en un solo ciclo de instrucción.  

• Una  unidad  de  multiplicación  y  acumulación  (MAC).  Permite  ejecutar  una  operación  de 

multiplicación y acumulación en un único ciclo de instrucción.  

 

 

Figura 4. Registros de la ALU (DSP56800 Family manual, 2005)  

Esta  unidad  es  capaz  de  operar  con  datos  enteros  o  fraccionales,  dependiendo  de  la  instrucción 

empleada  para  realizar  el  cálculo.  Por  ejemplo,  la  instrucción MAC  opera  por  defecto  con  números 

fraccionarios,  mientras  que  la  instrucción  IMPY16  realiza  una  multiplicación  con  signo  entre  dos 

operandos de tipo entero  (para más detalles sobre este tipo de  instrucciones recurrir a  la página pág. 

3.20, sección “3.3.5.2  Integer multiplication” del DSP56800 Family manual). La diferencia entre ambas 

multiplicaciones tiene que ver con la cantidad de bits requeridos en el registro donde se almacenará el 

resultado. 

El ejemplo de la Figura 5, se supone número binario de cuatro dígitos el cual puede ser interpretado de 

de dos maneras distintas: 

 

Page 7: Punto fijo sobre template - facultad.efn.uncor.edu

 

 

        

Herramientas de Diseño y Aritmética de Punto Fijo 

Página  7 de 18

FCEFyN  Universidad Nacional de Cordoba

Procesamiento Digital de Señales – FCEFyN – UNC     Herramientas de Diseño y Aritmética de Punto Fijo 

 

Figura 5. Valor binario arbitrario

 

Si se  realiza  la multiplicación de este valor por si mismo. Se obtendrán dos resultados distintos según 

cómo sean considerados los operandos (ver Figura 6 y Figura 7). 

 

 

Figura 6. Resultado de la multiplicación considerando operandos enteros

 

 

Figura 7. Resultado de la multiplicación considerando operandos en punto fijo

 

Para el caso de la Figura 6, los operandos son interpretados como enteros sin signo, lo cual conduce a un 

resultado cuya longitud es (2.m ‐ 1) bits. En este caso m = 4 por lo tanto el resultado de esta operación 

requiere  7  bits.  Por  el  contrario,  para  el  resultado  expuesto  en  la  Figura  7,  los  operandos  fueron 

considerados como fraccionarios (en punto fijo) sin signo. El resultado sigue siendo de 4 bits de longitud 

(la misma no se modifica).  

Page 8: Punto fijo sobre template - facultad.efn.uncor.edu

 

 

        

Herramientas de Diseño y Aritmética de Punto Fijo 

Página  8 de 18

FCEFyN  Universidad Nacional de Cordoba

Procesamiento Digital de Señales – FCEFyN – UNC     Herramientas de Diseño y Aritmética de Punto Fijo 

Sin entrar en detalles respecto a su  funcionamiento,  la Figura 8 muestra  la arquitectura de  la ALU del 

DSP56805. Se observa que la misma es alimentada por los buses CGDB (Core global data bus) y XDB2 (X 

memory data bus 2). Los elementos más  importantes son el multiplicador, el sumador y el conjunto de 

registros de entrada y salida de datos. Entre estos tres simples componentes, sumados al retardo digital, 

es posible realizar prácticamente todas las operaciones de procesamiento digital. 

El ancho de las variables de punto fijo en este DSP es de 16 bits y están expresadas en complemento a 2 

con signo. Su rango es: 

1521156805

−−≤≤−DSPQx (10)

Expresando una variable en forma de sumatoria: 

150

141

213

11415 2.2....2.2.

56805

−−−− +++++−= bbbbbxDSPQ (11)

 

Multiplicación y adición de números en punto fijo. Para la multiplicación de dos números en punto fijo 

cuyo rango sea el especificado por la ecuación 10, el resultado siempre será menor que 1. Sin embargo, 

para la adición de dos números en punto fijo, se debe cuidar que el resultado se mantenga entre ‐1 y 1 

para  evitar  desbordamientos.  Por  ejemplo,  si  se  quiere  sumar  2,17,05,0 =+   se  deberá  realizar  un 

escalamiento previo de la siguiente manera:  ( ) 6,07,05,0.5,0 =+ . En realidad, si los operandos son aún 

mayores el factor de escala deberá ser menor para permitir que el resultado permanezca dentro de los 

límites de las variables de punto fijo. 

 

HERRAMIENTAS DE DISEÑO 

Gracias a la existencia de una gran cantidad de herramientas de diseño y simulación es posible evaluar el 

desempeño  de  un  filtro  o  cualquier  sistema  digital  sin  necesidad  de  hacer  una  prueba  sobre  algún 

hardware específico, con el agregado de la seguridad que brindan las técnicas digitales de poder repetir 

los resultados de una simulación en un sistema real con un grado de exactitud muy alto.  

Page 9: Punto fijo sobre template - facultad.efn.uncor.edu

 

 

        

Herramientas de Diseño y Aritmética de Punto Fijo 

Página  9 de 18

FCEFyN  Universidad Nacional de Cordoba

Procesamiento Digital de Señales – FCEFyN – UNC     Herramientas de Diseño y Aritmética de Punto Fijo 

A continuación,  se  realiza una  introducción a  las herramientas más  importantes provistas por Matlab 

para el diseño de filtros digitales empleando aritmética de punto fijo.  

 

 

Figura 8. Arquitectura de la ALU del DSP56805 (DSP56800 Family manual, 2005)

 

FDA TOOL ‐ MATLAB 

Esta  herramienta  es muy  amiga  de  quienes  deben  diseñar  filtros  digitales  de  cualquier  tipo  y  con 

cualquier clase de especificaciones. Para ejecutarla es suficiente con tipear la sentencia “fdatool” en el 

command window de Matlab. 

Unidad MAC      

Page 10: Punto fijo sobre template - facultad.efn.uncor.edu

 

 

        

Herramientas de Diseño y Aritmética de Punto Fijo 

Página  10 de 18

FCEFyN  Universidad Nacional de Cordoba

Procesamiento Digital de Señales – FCEFyN – UNC     Herramientas de Diseño y Aritmética de Punto Fijo 

 

Figura 9. Vista general de la interfase del FDAtool

 

La  función  de  este  toolbox  es  generar  los  coeficientes  de  un  filtro  digital  a  partir  de  su  hoja  de 

especificaciones. El recuadro verde de la Figura 9 abarca el sector de la interfase donde se ingresan las 

características  del  filtro,  mientras  que  el  recuadro  azul  engloba  el  área  donde  se  presentan  los 

resultados del filtro diseñado (respuesta en amplitud, en fase, al  impulso, al escalón, mapa de ceros y 

polos, coeficientes, etc.) con su conjunto de herramientas. 

 

Ejemplo. Se necesita diseñar un filtro con las siguientes características: 

• Tipo de filtro: FIR  pasabajo 

• KHzfc 5=  

• dBGBP 0=  

• dBAttKHzBR 60

6−=  

• KHzfm 48=  

• Plataforma: DSP56805 

Page 11: Punto fijo sobre template - facultad.efn.uncor.edu

 

 

        

Herramientas de Diseño y Aritmética de Punto Fijo 

Página  11 de 18

FCEFyN  Universidad Nacional de Cordoba

Procesamiento Digital de Señales – FCEFyN – UNC     Herramientas de Diseño y Aritmética de Punto Fijo 

 

Se  requiere un  filtro  FIR que  corte en 5KHz  y que  atenúe 60dB  a 6KHz  (en  la banda de  rechazo).  La 

ganancia  en  la banda de paso  es de  0dB.  La  señal de  entrada  se muestrea  a  48KHz  y  la plataforma 

empleada es el DSP56805 de 16 bits. Recurriendo al  FDAtool  se obtiene un  filtro de orden 120 para 

lograr estos requerimientos. La respuesta en frecuencia se presenta en la Figura 10. 

 

Figura 10. Respuesta en amplitud del filtro requerido  

Hasta  aquí  todo  funciona  bien.  Pero  cuando  el  programador  quiera  llevar  este  filtro  al  DSP  deberá 

cuantizar o cuantificar  los coeficientes para poder cargarlos en  la memoria del procesador. Cuantizar 

quiere decir convertir un dato cuya variación en amplitud es continua en otro cuya variación en amplitud 

es discreta. Este proceso ocurre también en la digitalización de una señal analógica a través de un ADC. 

Cuando el filtro es diseñado por primera vez en FDAtool,  la aritmética empleada por defecto es punto 

flotante de 64 bits (doble precisión), la cual provee una precisión tan grande que se puede suponer que 

los  valores  representados  son  de  amplitud  continua.  Ahora  bien,  en  FDAtool  para  cuantizar  los 

coeficientes  se  hace  click  en  el  botón  “Set  quantization  parameters”  ubicado  a  la  izquierda  de  la 

interfase del programa, tal como lo muestra la Figura 11. 

 

Page 12: Punto fijo sobre template - facultad.efn.uncor.edu

 

 

        

Herramientas de Diseño y Aritmética de Punto Fijo 

Página  12 de 18

FCEFyN  Universidad Nacional de Cordoba

Procesamiento Digital de Señales – FCEFyN – UNC     Herramientas de Diseño y Aritmética de Punto Fijo 

 

Figura 11. Acceso al módulo de cuantización

 

Una  vez  que  se  haya  accedido  al módulo  de  cuantización  se  verá  que  la  precisión  seleccionada  por 

defecto  es  la  mencionada  anteriormente  (Figura  12).  Haciendo  click  en  esta  caja  de  opciones  se 

selecciona la aritmética de punto fijo (fixed‐point). 

 

 

Figura 12. Aritmética seleccionada por defecto

 

Una  vez  que  se  ha  seleccionado  la  opción  fixed‐point  se  debe  especificar  la  longitud  de  palabra  a 

emplear (en la casilla “Numerator word length”). En este caso, debido al tipo de arquitectura del DSP, se 

escribe un valor  igual a 16. Se desactiva el checkbox “Best precision fraction  length” y se  indica que  la 

longitud de la fracción del numerador (“Numerator fraction length”) es de 15 bits (ya que un bit es para 

el  signo  y  otros  15  para  el  número  propiamente  dicho).  Mediante  esta  configuración  se  están 

respetando las características del DSP. 

Objeto fi. Tipeando  la sentencia “fi” en el command window de Matlab se puede acceder a un objeto 

que permite analizar en detalle el funcionamiento de  las variables en punto fijo. En este apunte no se 

ahondará  sobre  el  funcionamiento  del mismo.  Para más  detalles  recurrir  al  help  de  este  comando 

tipeando “help fi”. 

Page 13: Punto fijo sobre template - facultad.efn.uncor.edu

 

 

        

Herramientas de Diseño y Aritmética de Punto Fijo 

Página  13 de 18

FCEFyN  Universidad Nacional de Cordoba

Procesamiento Digital de Señales – FCEFyN – UNC     Herramientas de Diseño y Aritmética de Punto Fijo 

 

Figura 13. Módulo de configuración de las propiedades de las variables en punto fijo

 

IMPACTO DE LA ARITMÉTICA DE PUNTO FIJO EN EL DESEMPEÑO DE FILTROS DIGITALES 

Uno de los puntos más importantes a tener en cuenta a la hora de implementar sistemas digitales es el 

error introducido por trabajar en aritmética de punto fijo. El proceso de cuantificación equivale a añadir 

a  cada  valor  una  componente  de  ruido  (Figura  14),  el  cual  puede  ser modelado  como  ruido  blanco 

gaussiano.  

 

 

Figura 14. Modelo equivalente para un cuantificador de punto fijo  

Page 14: Punto fijo sobre template - facultad.efn.uncor.edu

 

 

        

Herramientas de Diseño y Aritmética de Punto Fijo 

Página  14 de 18

FCEFyN  Universidad Nacional de Cordoba

Procesamiento Digital de Señales – FCEFyN – UNC     Herramientas de Diseño y Aritmética de Punto Fijo 

Las consecuencias de este error en general no son menores y deben ser  tenidas en cuenta con el  fin 

aplicar  las acciones correctivas o preventivas necesarias. A modo de ejemplo,  la Figura 15 muestra  la 

respuesta en amplitud de un filtro FIR tipo notch o eliminabanda cuya frecuencia central es de 8,25KHz. 

Si ahora se examina con mayor detalle esta respuesta (Figura 16) se observarán dos curvas: 

• Línea de puntos: Respuesta en frecuencia del filtro precuantización 

• Línea continua: Respuesta en frecuencia del filtro postcuantización 

 

El análisis muestra que en este caso el efecto de cuantizar los coeficientes produce una variación de la 

respuesta en frecuencia, respecto a la original. Quedará a criterio del diseñador aceptar o rechazar este 

resultado.  

En otros casos más extremos,  la cuantización de  los coeficientes de un  filtro realimentado  (IIR) puede 

llevar a la inestabilidad del conjunto, aún cuando el filtro original es estable.  

 

Figura 15. Respuesta en amplitud de un filtro notch

Page 15: Punto fijo sobre template - facultad.efn.uncor.edu

 

 

        

Herramientas de Diseño y Aritmética de Punto Fijo 

Página  15 de 18

FCEFyN  Universidad Nacional de Cordoba

Procesamiento Digital de Señales – FCEFyN – UNC     Herramientas de Diseño y Aritmética de Punto Fijo 

 

Figura 16. Consecuencias de la cuantización

 

 

PUNTO FIJO EN CODEWARRIOR 

El compilador de Codewarrior permite declarar variables de tipo punto fijo dentro del código C. Para ello 

se utilizan las sentencias contenidas en la Tabla 2. 

Tabla 2. Declaraciones de variables de punto fijo

Tipo Declaración Tamaño Rango

Fixed __fixed__ 16 11 <≤− Qx

Short fixed __shortfixed__ 16 11 <≤− Qx

Long fixed __longfixed__ 32 11 <≤− Qx

 

 

Page 16: Punto fijo sobre template - facultad.efn.uncor.edu

 

 

        

Herramientas de Diseño y Aritmética de Punto Fijo 

Página  16 de 18

FCEFyN  Universidad Nacional de Cordoba

Procesamiento Digital de Señales – FCEFyN – UNC     Herramientas de Diseño y Aritmética de Punto Fijo 

Debido a que el compilador está adaptado a la arquitectura del DSP56805 las variables de punto fijo se 

comportarán como una variables fraccionarias de 16 o 32 bits con signo en complemento a 2. 

Ejemplo: La declaración de una variable en punto fijo es similar a la de cualquier otro tipo: 

__fixed__ mi_variable;

__shortfixed__ mi_variable; 

__longfixed__ mi_variable; 

 

Ahora  la variable mi_variable será  interpretada por el compilador como una variable de punto fijo con 

todas las propiedades del lenguaje C. 

Existe otro conjunto de sentencias cuya función es relacionar los tipos de variables intrínsecos de C (int, short, char, long, etc.) con las variables de punto fijo. Las mismas se listan en la  

Tabla 3. 

Tabla 3. Conjunto de sentencias para convertir tipos

Sentencia Descripción

__fixed2int Convierte un valor en punto fijo de 16 bits (declarado como __fixed__) a un entero de 16 bits (declarado como int)

__fixed2long Convierte un valor en punto fijo de 32 bits (declarado como __longfixed__) a un entero de 32 bits (declarado como long)

__fixed2short Convierte un valor en punto fijo de 16 bits (declarado como __shortfixed__) a un entero de 16 bits (declarado como short)

__int2fixed Convierte un valor entero de 16 bits (declarado como int) a un valor en punto fijo de 16 bits (declarado como __fixed__)

__long2fixed Convierte un valor entero de 32 bits (declarado como long) a un valor en punto fijo de 32 bits (declarado como __longfixed__)

__short2fixed Convierte un valor entero de 16 bits (declarado como short) a un valor en punto fijo de 32 bits (declarado como __shortfixed__)

 

Page 17: Punto fijo sobre template - facultad.efn.uncor.edu

 

 

        

Herramientas de Diseño y Aritmética de Punto Fijo 

Página  17 de 18

FCEFyN  Universidad Nacional de Cordoba

Procesamiento Digital de Señales – FCEFyN – UNC     Herramientas de Diseño y Aritmética de Punto Fijo 

 

Ejemplo: 

1 __fixed__ var_fixed = -0.25;

2 int var_int;

3 void funcion1(void){

4 var_int = __fixed2int(var_fixed);

5 }

 

De acuerdo a lo visto anteriormente, la representación a nivel de bits de var_fixed se representa en la 

Figura 17. 

 

Figura 17. Representación a nivel de bits del valor -0,25 en punto fijo

 

Luego de ejecutar la instrucción número 4 el contenido (a nivel de bits) de var_int será el mismo que el 

de var_fixed, con la diferencia de que la interpretación por parte del DSP es completamente diferente. El 

valor final de var_int será: 

57344222intvar_ 131415 =++=  

Como  se  observa  estas  sentencias  permiten  copiar  el  contenido  de  la  variable  origen  en  la  variable 

destino sin modificar la información a nivel de bits.  

Page 18: Punto fijo sobre template - facultad.efn.uncor.edu

 

 

        

Herramientas de Diseño y Aritmética de Punto Fijo 

Página  18 de 18

FCEFyN  Universidad Nacional de Cordoba

Procesamiento Digital de Señales – FCEFyN – UNC     Herramientas de Diseño y Aritmética de Punto Fijo 

Vale  decir  que  si  se  trabaja  directamente  sobre  Assembler  el  tipo  de  variable  utilizado  para  las 

operaciones aritméticas será  interpretado como punto fijo o entero según  la  instrucción empleada, tal 

como se mencionó anteriormente. 

BIBLIOGRAFÍA 

Steven  W.  Smith,  2003.  The  Scientist  and  Engineer's  Guide  to  Digital  Signal  Processing.. 

www.dspguide.com. 

B. A. Shenoi, 2006. Introduction to digital signal processing and digital design. Editorial Wiley.  

DSP56800 Familiy manual, 16‐bit digital signal controllers. DSP56800FM. Rev. 3.1, 11/2005. 

DSP56800 User manual, 16‐bit digital signal controllers. DSP56F801‐7UM. Rev. 8, 13/2007. 

CodeWarrior  Development  Studio  for  Freescale  56800/E  Digital  Signal  Controllers: 

DSP56F80x/DSP56F82x Family Targeting Manual. Rev. November 6, 2007.