Unidad de suma-resta en punto flotante PDF

Title Unidad de suma-resta en punto flotante
Author ag ag
Course Microcontroladores II
Institution Universidad Católica Nuestra Señora de la Asunción
Pages 11
File Size 625.4 KB
File Type PDF
Total Downloads 38
Total Views 155

Summary

Unidad de suma/resta en punto flotante según la norma IEEE 754....


Description

Universidad Católica “Nuestra Señora de la Asunción”

Unidad de suma/resta en punto flotante según la norma IEEE 754

Proyecto con Micropresadores II Profesor: Dr. Vicente González

Ingeniería Electrónica Sergio Ortiz Karol Da Silva

Asunción- 2012

suma y resta en punto flotante según IEEE 754

Representación en punto flotante Con esta notación exponencial seremos capaces representar un amplio rango de valores numéricos positivos y negativos centrados en el cero. Un número cualquiera X expresado en notación exponencial se puede escribir como: X = M * BE Donde: M=> es la mantisa

B=> corresponde a la base

E=> es el exponente

El nombre de punto flotante, viene del hecho de que al modificar el exponente E se modifica la posición del punto decimal en la mantisa M.

Suma y Resta en punto flotante Este conjunto de números permite una serie de operaciones como suma, resta, multiplicación y división, pero en esta ocasión nos centraremos en la suma y la resta. Cuando sumamos o restamos dos números en coma flotante se deben comparar los exponentes y hacerlos iguales, para lo cual hay que desplazar o alinear uno de ellos respecto al otro. Dados dos números en representación en coma flotante como: x = mx* 2xe

y=my*2ye

Las operaciones de suma y resta se definen de la siguiente forma, suponiendo que xe < ye. x+y x-y

(mx* 2xe-ye + my) 2ye (mx* 2xe-ye - my) 2ye

Las operaciones de suma y resta, así como la multiplicación y la división pueden producir reboses, por producir resultados demasiado grandes (desbordamientos) o demasiado pequeños (subdesbordamientos). Hay cuatro tipos de desbordes posibles: 1. Desbordamiento del exponente. Es cuando un exponente positivo E excede de su valor máximo permitido. 2. Subdesbordamiento del exponente. Es cuando un exponente negativo E excede de su valor máximo permitido. Esto significa que el numero X es demasiado pequeño y se puede considerar como igual a 0. 3. Subdesbordamiento de mantisa. En el proceso de alineación de las mantisas, si los dígitos se desplazan hacia la derecha más allá de su bit menos significativo, lo que sucede es que se pierden y es como redondear el resultado.

suma y resta en punto flotante según IEEE 754 4. Desbordamiento de mantisa. En la suma de dos mantisas del mismo signo se puede producir un arrastre del bit más significativo. Esto se soluciona mediante la re normalización, desplazando a la derecha un bit la mantisa y ajustando el exponente.

Algoritmo de la Suma y Resta Para realizar la suma o resta de dos operandos en coma flotante, lo primero que debe hacerse es la separación de los exponentes y las mantisas para su tratamiento y luego realizar una serie de pasos: 1. Identificar el numero con menor exponente y desplazar su mantisa a la derecha tantas veces como indique la diferencia en modulo de los exponentes. 2. Hacer que el exponente resultante sea igual que el mayor de los exponente. 3. Realizar la operación de suma o resta con las mantisas. 4. Normalización del resultado. Una vez realizada la suma se debe normalizar desplazando los bits de la mantisa hacia la izquierda o la derecha con lo cual habrá que cambiar el valor del exponente. 5. Verificar la existencia de las condiciones de desborde.

suma y resta en punto flotante según IEEE 754

El estándar IEEE 754 El IEEE (Instituto de Ingenieros Eléctricos y Electrónicos) ha creado un estándar para la presentación de números en coma flotante. Este estándar especifica como deben representarse los números en coma flotante con simple precisión (32 bits) o doble precisión (64 bits), y también cómo deben realizarse las operaciones aritméticas con ellos. Para este trabajo trataremos con los números en formato de simple precisión, del cual hacemos mención a continuación. Simple Precisión El estándar IEEE-754 para la representación en simple precisión de números en coma flotante exige una cadena de 32 bits. El primer bit es el bit de signo (S), los siguientes 8 son los bits del exponente (E) y los restantes 23 son la mantisa (M): 31

S

30

23 22

Exponente

0

Mantisa

Al estar el dato normalizado, es decir expresado siempre como “1,…” (“uno coma algo más”), el 1 de la parte entera no se almacena, aunque nunca debemos olvidarnos que existe. 1. El signo de la mantisa está representado en el bit 31. 2. El campo del exponente (ne) dispone de 8 bits, empezando por el bit 23 hasta el bit 30. 3. El campo de mantisa (nm ) dispone de 23 bits, empezando por el bit 0 hasta el bit 22. Considerando el valor 1 implícito (oculto) para el primer bit de los números binarios normalizados la precisión del campo de la mantisa es de 24 bits. 4. El valor del desplazamiento es de 127, es decir el exceso C = 27-1 = 127.

suma y resta en punto flotante según IEEE 754

Diseño de la unidad suma/resta de punto flotante A continuación presentamos el diseño de un sumador de números en punto flotante de longitud total de 32 bits, sería la representación de simple precisión del estándar IEEE 754 con 1 bit de signo, 23 bits para la mantisa y 8 para el exponente. En la figura 2. Se muestra el diagrama de bloque de una unidad aritmética dedicada a sumar y restar en punto flotante.

Figura 2. Suma y resta en punto flotante Los siguientes módulos que se muestran en la figura 2 se detallan a continuación: Comparador_em: Este modulo recibe dos números de 31 bits y compara cual de los dos números es el mayor. En el caso en que el operando en fs sea mayor o igual que el del ft, entonces la salida se pondrá en uno, y cero en caso contrario. Detector de casos: detecta los casos posibles de números:  Primer caso: dos números comunes y distintos.  Segundo caso: el primer operando es distinto de cero y el segundo es cero.  Tercer caso: el primer operando es cero y el segundo operando es distinto de cero.  Cuarto caso: los dos son ceros.  Quinto caso: los dos son iguales y diferentes de cero.

suma y resta en punto flotante según IEEE 754

Sel_operación: recibe un bit de cada operando que seria el bit de signo (bit 31). Además con fop_in se indica la operación add.s(0) o sub.s(1). Para determinar la salida de este módulo se realiza una operación para determinar el signo según la siguiente tabla.

Extiende mantisa: este módulo extiende la mantisa de 23 a 28 bits, se agrega 01 en frente de la mantisa en caso de que el número sea normalizado, 00 en caso contrario y se concatena 3 bits 000 al final de la mantisa que van a corresponder a los bits GRS que se usarán para precisión y redondeo en la etapa final. Los bits de codificación se muestran a continuación.

suma y resta en punto flotante según IEEE 754

Alu_exponente: Se encarga de restar los exponentes, siempre menor del mayor, haciendo que la diferencia siempre sea positiva. Diferencia: Tiene 5 bits (0-4) de salida, si la diferencia es mayor o igual a 28 (11100), se carga el valor 28 siempre en la salida sino entonces se carga el valor que corresponde al desplazamiento. Shift_right: Desplaza una cantidad de bits dependiendo del resultado que produzca el modulo diferencia. También se encarga de calcular el bit S, que se usará en la etapa de redondeo. Alu_grande: En esta etapa se realiza la suma o diferencia de los dos operandos extendidos, correspondientes a la mantisa. Si el carry o bit 27 es 1 entonces se toma (27-3) si no se toma (26-2), el resultado final tiene 25 bits, 1 bit implícito, 1 bit de guarda y 23 bits de mantisa y en bit_grs se guarda los primeros 4 bits, esto se utiliza en el módulo Detecta round para saber si se le suma o no un bit a la mantisa, se toma 4 bits porque los primeros 3 que sería bit 0, 1, 2 corresponde a GRS y el bit 4,5 corresponde b0, b1, dependiendo de los valores de b0, G, R,S se sabe si se le suma 1 o no, b1 se usa en el caso de que se tenga que correr un bit en donde b0 pasa a obtener el valor de b1, G el valor de b0 y así sucesivamente. Cuenta_ceros: El resultado obtenido de la suma del bit (1-24), se compara con vector de ceros para saber la cantidad que hay que correr a la izquierda. Shift_left: Realiza un corrimiento a la izquierda de los bits de entrada. Este corrimiento es controlado por una señal. Guarda: Como el valor G es para precisión se salva este valor, si es uno y dependiendo de la cantidad de bits a desplazar se sabe en qué parte una vez hecho el desplazamiento va a estar este valor. OR: Se encarga de anexar el bit de guarda a la mantisa, uno de sus operandos es el resultado de la alu_grande y el otro de guarda.

suma y resta en punto flotante según IEEE 754 Rec_exponente: tiene como entrada un operando que contiene el exponente mayor, y si hubo shift left entonces se tiene que restar al exponente mayor como la salida de shift left es de 5 bits se concatena con 3 bits, en el caso de que haya carry se concatena con 7 bits con valor 0, o si hubo carry round. Detecta Round: saca el valor 1 si hay que redondear, 0 si no hay que hacer nada, utilizando estas operaciónes, una vez que ubicado los valores de G,R,S dependiendo del acarreo (ver ALU grande) se realiza esta operación (R and bo) or (R and S) para el valor final de la salida y con esto se decide si hay o no acarreo. Redondeo: Suma 1 bit a la mantisa dependiendo si la salida de Detecta Round es 1 y se concatena un bit en caso de que la suma produzca un acarreo, entonces carry round es 1 y se le suma 1 al exponente mayor en Rec_exponente. Signo: calcula es signo de la operación teniendo en cuenta la siguiente tabla.

suma y resta en punto flotante según IEEE 754

Implementación en el FPGA Se agregan el registro writecoproc1 y dos líneas de control que es muestra y swc1, el registro nuevo contienen los operandos para la ALU de punto flotante, las líneas de controles nuevas están tanto para mostrar los resultados en los LEDs de la placa e implementar el scw1 para tal caso.

Figura 3. mips con la alu fp agregada

suma y resta en punto flotante según IEEE 754

Simulación A continuación se muestran los resultados producidos por la simulación de la alu fp. La primera grafica corresponde a una suma, cada uno expresado en binario y hexadecimal:

0 11000000 11110001100101101001111 + 0 10111001 11101011010111111000001 --------------------------------------------------------0 11000000 11110101011011010101111

[6078CB4F] [5CF5AFC1] [607AB6AF]

Ahora se muestra una resta, cada uno expresado en binario y hexadecimal:

1 11111100 10101000011001000000000 - 0 11001010 11101000011010101000011 --------------------------------------------------------1 11111100 10101000011001000000000

[FE543200] [65743543] [FE543200]

suma y resta en punto flotante según IEEE 754

Bibliografía      

Paterson David A., Organización y diseño de computadoras. 3ra edición H, Morris., Mano: Fundamentos de diseño lógico de computadoras. 1st. Ed. (1998) 310–394 Victor, P., Nelson: Análisis y diseño de circuitos lógicos digitales. 1st. Ed. (1996) 24–61 Vicente Arnau Llombart. Ampliación de Estructura de Computadores. Curso2010-2011 Óscar David Robles Sánchez. Ángel Serrano Sánchez de León. Luis Rincón Córcoles. Construcción de una unidad aritmética y lógica (coma flotante). Chapter 3. Computer Organization and design. Arithmetic for Computers....


Similar Free PDFs