PROYECTO DIGITALES

6

Click here to load reader

Transcript of PROYECTO DIGITALES

Page 1: PROYECTO DIGITALES

Resumen—Este documento pretende dar a conocer la estructura e implementación de la operación multiplicación en punto flotante usando el formato IEEE-754 de simple precisión, se debe tener en cuenta que el multiplicador a diseñar cumple con los estándares, pero se advierte las limitaciones en casos triviales, este dispositivo diseñado no cumple con los anteriores mencionados. La implementación se lleva a cabo sobre FPGAs de Altera y la simulación bajo el software Quartus II versión 6.0sp1 Web Edition Full.

Palabras clave—IEEE-754, Punto Flotante, Mantisa, Overflow, Underflow, NaN, infinito, Multiplexor, Lógica de Excepciones.

I. INTRODUCCION

IEEE-754 es uno de los estándares más utilizados en la representación de números en punto flotante, su base es 2 y el número de exponentes que disponemos es de 254, se distribuye igual que todos los demás, es decir, un bit de signo, una trama de bits para el exponente y una trama de bits mucho mayor para la mantisa o significando. Dentro de estos formatos se pueden clasificar tres clases de precisión según la cantidad de bits: precisión sencilla (32 bits), precisión doble (64 bits) y precisión expandida (entre 33 y 63 bits).La precisión simple es un formato de 32 bits, el cual consta de un bit de signo, los siguientes 8 bits son el exponente y los 23 bits restantes son la mantisa. El punto flotante es más utilizado que el punto fijo por que con el primero se puede representar cantidades muy grandes y con el segundo como el punto es fijo el rango es mucho menor pero con una mayor precisión.

II. MULTIPLICACION DE PUNTO FLOTANTE

Las operaciones aritméticas de multiplicación y división en punto flotante son procesos más sencillos que la suma y la resta. En la figura 1 se puede observar el algoritmo del multiplicador de punto flotante. En primer lugar se reconocen los datos de entrada, esto se hace para desempaquetar el valor de 32 bits, Esto se hace para cada número, una vez se hallan

separado el bit de signo, el exponente y la mantisa se procede a aplicar la lógica de excepciones para clasificar ciertas consideraciones que se explicaran más adelante.

Figura 1. Algoritmo para la multiplicación de punto flotante.

El paso a continuación es sumar los exponentes de cada número, se debe tener en cuenta que el sesgo es un valor de offset para cada número, este valor tiene un peso en decimal de 127 en este proceso simplemente es sumar los exponentes y restar el sesgo, esto se implementa utilizando la MegaFunción Lpm_Add_Sub

lMultiplicador de punto flotante usando el formato IEEE-754 precisión sencilla.

Diseño a nivel de registro usando Megafunciones. (Noviembre 25 2008)

Alejandra López Ramírez

Estudiante de Pregrado de Ingeniería Electrónica

Universidad del Valle, EIEE

1

Page 2: PROYECTO DIGITALES

Figura 2. Tratamiento del Exponente.

Como se puede observa en la figura 2 el primer sumador tiene un Cin de entrada y Cout. El Cout es el bit más significativo del bus de entrada del restador siguiente, esta implantación permite la identificación de un posible Overflow, para ser mas explicito cuando en la entrada del restador entran un exponente muy grande aun restando el sesgo se produce un estado alto en el Cout de este, el Cout y el bit más significativo del exponente de salida se utilizan para indicar la presencia de Overflow y Underflow.

Figura 3. Indicadores de Overflow y Underflow.

Los indicadores de Overflow y Underflow se implementaron como se muestra en la figura 3 la clave de esta lógica está comprendida en los 9 bits de entrada porque estos representan un exponente grande o pequeño y dependiendo un estado alto en el bit más significativo de la salida del restador la existencia de carry de salida da a entender que hay un Overflow, así mismo si no hay carry de salida en el restador es porque es un exponente demasiado pequeño y se presentara Underflow.

Según el algoritmo de la figura 1 el paso a seguir es multiplicar las mantisas de los dos números de entrada normalizar el producto y examinar el resultado, si es necesario se debe corregir el exponente ya que la mantisa utiliza un punto fijo, en la figura 4 se observa el circuito implementado.

Figura 4.Normalizacion y corrección de exponente.

Se puede observar que se utiliza un Busmux para la corrección del exponente, el bit más significativo de la multiplicación de las mantisas es el que decide si existe corrección de exponente. Si existe corrección de exponente es porque el bit más significativo resultante de multiplicar las mantisas de punto fijo es un estado alto, por consiguiente el resultado de la normalización se debe desplazar hacia la izquierda para conservar el punto fijo de la mantisa, al desplazar la mantisa hacia la izquierda de debe incrementar en uno el exponente, por ello en el tratamiento del exponente lleva un Cin. Si no existe corrección de exponente es que el bit más significativo de la norma de la mantisa resultante es cero, por tanto se puede despreciar y no hacer corrección de exponente.

Para terminar el algoritmo se debe colocar el signo al resultado figura 5, para ello solo basta con aplicar la ley de signos y la compuerta que cumple con la ley de signo a nivel de un bit es la XOR

Figura 5. Compuerta XOR aplicando la ley de signos.

III. LOGICA DE EXCEPCIONES

El IEEE-754 va mas allá de un simple formato, comprende todo un estándar de aritmética binaria haciendo que la aritmética de coma flotante produzca resultados predecibles y uniformes. En esta parte del proyecto se contemplan algunas operaciones o casos triviales que en realidad son infinitos por que se desea representar toda una aritmética con un sistema finito o formato definido, pero en este momento solo nos importa algunos casos críticos.

En la lógica de excepciones se empieza a trabajar con la clasificación de cada numero ya sea normal, infinito, NaN o zero según el estándar de números singulares IEEE-754 figura 6. Esto hace fácil la implementación de las operaciones entre los dos números, en la figura 7 muestra la lógica combinacional para clasificar y dar señales de indicación según el caso.

Figura 6.Estandar IEEE-754 para números singulares.

Figura 7.Logica de excepciones a nivel de compuertas y Megafunciones.

2

Page 3: PROYECTO DIGITALES

Como se puede observar se utilizan una simple lógica combinacional y la ayuda de Megafunciones básicas como Lpm_or y Lpm_and. Esta lógica clasifica e indica la existencia de alguno de los casos anteriormente mencionados y anticipa el resultado en el caso de un resultado que sea zero, si no indica alguna anomalía el resultado se encuentra permitido y su realiza todo el algoritmo de multiplicación contemplado anteriormente.

Figura 8.Logica de excepciones a nivel de registros.Existen algunos casos que no están contemplados en este diseño como la multiplicación de un número infinito por zero, la multiplicación de un numero zero por NaN o infinito por NaN.A continuación se muestra el diagrama de bloques para la multiplicación de punto flotante y precisión simple figura 9 y el diagrama circuital implementado figura 10. En el diagrama de bloque se puede observar que los cálculos de hacen de manera paralela, el reconocimiento de los datos, las operaciones de exponente y mantisa, haciendo este diseño muy rápido y con cualidades de predicción de resultados de acuerdo con la Lógica de excepciones.

Figura 10.Diagrama de bloques multiplicador punto flotante y precisión simple.

3

Page 4: PROYECTO DIGITALES

Figura 11. Diagrama cicuital de un multiplicador con punto flotante y precisión simple.

El paso a seguir es realizar las simulaciones, se debe tener en cuenta algo muy importante puesto que este diseño usa el formato IEEE-754 los datos de entrada son datos ya en el formato y cuya salida se obtendrá en el mismo formato, en la siguientes figuras se muestran diversas operaciones en el formato IEEE-754

Después de verificar los anteriores casos y obtener los resultados esperados y encontrar un máximo retardo de 34.908ns se podría decir que el diseño esta dentro de lo esperado.

4

Page 5: PROYECTO DIGITALES

IV. CONCLUSIONES

La representación en punto flotante amplia el rango de trabajo, pero se pierde algunos bits de resolución

La representación en punto fijo tiene una excelente resolución pero solo es muy eficiente en rangos no tan grandes de trabajo

El estándar IEEE-754 tiene dos formatos muy utilizados, precisión simple y doble precisión. El primero trabaja con un máximo de 32 bits, 1 de signo, 8 de exponente y 23 de mantisa. El segundo trabaja con un máximo de 64 bits, 1 de signo, 11 de exponente y 52 de mantisa.

La mantisa ya que obtuvo antes de normalizar un producto de puntos flotantes estará siempre entre 1 y 3. Después de normalizarlo estará entre 1 y 2.

El diseño implementado es muy rápido, la simulación muestra un tpd máximo de 34.908ns.

El diseño se construyo utilizando compuertas, registros y Megafunciones parametisadas, mostrando un desarrollo notable en la aplicación de lo aprendido en el curso del laboratorio de sistemas digitales.

El proyecto se puede mejorar a futuro conociendo todo el formato IEEE-754 para aritmética en coma flotante, diseñando una nueva lógica de excepciones donde se imprentaría la mayoría de casos triviales mencionados a través del proyecto.

5. BIBLIOGRAFIA

[1] Eduardo A. Daniello “Diseño de un multiplicador de punto flotante en doble precisión basado en el estándar IEEE-754”

[2] Gustavo Ordoñes-Jaime Velazco-Mario Vera ”Diseño de operadores aritméticos en punto flotante usando FPGAs”

[3]Willian Stalling ”Organización y Arquitectura de Computadores”.

[4]Álvaro Caicedo “Sumador-Restador de punto flotante IEEE-754 Precisión sencilla”.

[5] http://babbage.cs.qc.edu/IEEE-754/Decimal.html

[6] http://babbage.cs.qc.edu/IEEE-754/32bit.html

5