Grupo de Tecnología Electrónica

Complementos de sistemas electrónicos digitales
Tema 3

2.   FORMATO DE DATOS

 

La familia de DSPs TMS320C3x trabaja con dos tipos de datos, enteros y flotantes de coma variable.

 

1.      Datos enteros. Pueden ser, a su vez, de dos tipos, enteros de 16 bits (enteros cortos) o enteros de 32 bits (enteros de precisión simple), en ambos casos con o sin signo. En el caso en que se trabaje con enteros de 16 bits, el dato está recogido en los 16 LSBs del registro en el que se almacena (recuérdese que el bus de datos del DSP es de 32 bits lo que implica que los datos, salvo una excepción que luego comentaremos, siempre van a ocupar 32 bits de los cuales no todos tienen porqué ser parte del dato, pueden sobrar en definitiva). En el caso de datos enteros de 16 bits, sobrarían los 16 MSBs del registro donde se almacena el dato, figura 3.1. En el caso en que se trabaje con enteros de 32 bits el dato está recogido en los 32 bits del registro en el que se almacena, figura 3.1.

 

Figura 3.1. Representación de datos enteros en la familia TMS320C3x.

 

2.      Datos flotantes. Pueden ser, en este caso, de tres tipos dependiendo del número de bits con los que se representa el dato: de 16 bits (flotantes cortos), de 32 bits (flotantes de precisión simple) ó de 40 bits (flotantes de precisión extendida, sólo posible con los registros R0 a R7, que son los únicos que tienen 40 bits en el DSP). En el caso de datos flotantes de 16 bits, sobrarían los 16 MSBs del registro donde se almacena el dato, figura 3.2. En el caso en que se trabaje con flotantes de 32 bits, el dato está recogido en los 32 bits del registro en el que se almacena, figura 3.2. Finalmente, existe la posibilidad de emplear flotantes de precisión superior a la simple, en los que el dato se representa en los 40 bits de que disponen los registros R0 a R7, internos de la CPU, figura 3.2.

Figura 3.2. Representación de datos flotantes en la familia TMS320C3x. Se denomina mantisa a la parte formada por el bit de signo más la fracción.

 

Los números enteros con signo se representan en el conocido formato de complemento a dos, por lo que el margen de variación del entero depende del tipo de precisión que tenga (N=16 ó N=32 bits). En cualquier caso, el número varía entre  y . En el caso en que el dato represente un entero sin signo, varía entre 0 y .

La función de transferencia que convierte en el número flotante F un registro de N (16, 32 ó 40) bits del DSP, con un conjunto de bits que constituyen el exponente, entero con signo denominado e, otro conjunto de bits que conforman la fracción, entero sin signo denominada f, más un bit de signo denotado por s es:


Ø      Si el exponente e es el mayor número negativo posible, .

Ø      Si  (número positivo), . Donde M representa el número de bits de la fracción.

Ø      Si  (número negativo), .

 

En la tabla 3-1 se muestran varios ejemplos de cálculo del flotante que representaría un registro cualquiera del DSP. En la tabla 3-2 se muestran los valores entre los que se encuentra comprendido el flotante representado con precisión corta, simple o extendida así como el paso mínimo, entre dos flotantes consecutivos, que es capaz de recoger la codificación empleada.

 


 

Codificación en el DSP

Número flotante equivalente, F

00B94467

1A651CF0

459C9DCB

Tabla 3-1. Ejemplos de conversión de números en coma flotante, familia TMS320C3x.

 

Precisión

Menor Negativo

Mayor Negativo

Menor Positivo

Mayor Positivo

Corta (16 bits)

Simple (32 bits)

Extendida (40 bits)

 

Tabla 3-2. Valores entre los que está comprendido el flotante representado con precisión corta, simple o extendida, así como paso mínimo entre dos flotantes consecutivos.

 

La existencia de datos que pueden ser de tipo flotante o entero obliga al fabricante a facilitar la conversión entre ellos. Aparecen una serie de instrucciones básicas dedicadas a la conversión de entero a flotante y viceversa, ver las instrucciones FIX (float to integer conversion) y FLOAT (integer to float conversion) en el sumario de instrucciones. Aparecen, además, instrucciones dedicadas a operaciones con datos enteros y otras dedicadas a operaciones con datos flotantes.

 

Obsérvese que, en cualquier caso, el dato (ya sea entero o flotante) puede estar almacenado en cualquier registro interno del DSP con lo que recae en el usuario el manejo correcto del mismo: La CPU entenderá el dato como entero si se usa como operando de una instrucción de manejo de enteros y lo entenderá como flotante si se utiliza como operando en una instrucción de manejo de flotantes. Esto es muy importante pues los errores más comunes -no detectados en la compilación- que suelen aparecer al ejecutarse programas escritos en ensamblador están relacionados con el manejo erróneo de los datos (es entero pero se usa como flotante sin realizar una conversión previa o es flotante y se usa como entero sin realizar la conversión de formato correspondiente).

 

Como ejemplo, un registro que tenga el valor 0x00000000 (cero en hexadecimal) si se maneja como entero el dato que representa dicho registro es el entero cero, si se maneja como flotante, y al ser el bit de signo cero, es , donde tanto la fracción, f, como el exponente, e, valen cero por lo que el dato es 1.0.

 

e-REdING. Biblioteca de la Escuela Superior de Ingenieros de Sevilla.


IMPLANTACIÓN DE UNA RED ASÃNCRONA DE ENSEÑANZA DEDICADA A LA IMPARTICIÓN DE LA ASIGNATURA COPLEMENTOS DE SISTEMAS ELECTRÓNICOS DIGITALES DE 3º CURSO DE INGENIERÃA DE TELECOMUNICACIÓN.

: Oliveros Garrido, Antonio
: Ingeniería Telecomunicación
Contenido del proyecto:
Directorio raíz  >  Proyecto  >  tema3  >  punto2.htm