Title: CIRCUITOS ARITMTICOS EN COMA FIJA
1CIRCUITOS ARITMÉTICOS EN COMA FIJA
- Tania Mª Fernández García
- Patricia López Monteagudo
- Curso 2006-2007
2Índice
- Introducción
- Circuitos Implementados
- Sumador
- Restador
- Multiplicador
- Circuito de redondeo
- Truncado
- Redondeo
- Divisor
3Introducción (I)
- Qué es la coma fija?
- Es un formato de representación para los
números reales. El número de dígitos dedicados a
la parte decimal es constante. - Este trabajo aborda dicha representación para
los números binarios.
4Introducción (II)
- Representación binaria de decimales
- Números positivos
- 100110,1101102 125 024 023 122
121 020 12-1 12-2 - 02-3 12-4 12-5 02-6
38,8437510 - Números negativos (en complemento a dos)
- Se pone como parte entera del número el
negativo inmediatamente superior en módulo, y a
continuación, se le suma la parte decimal - 100110,1101102 -26 12-1 12-2 02-3
12-4 12-5 02-6 - -25,1562510
5Introducción (III)
- Las herramientas HW y SW utilizadas no
interpretan correctamente los números decimales,
no entienden la coma - 1001101101102 248610
- 100110,1101102 38,8437510
- Como diseñadores, debemos
- decidir el formato a utilizar
- usar aritmética entera
- interpretar adecuadamente los resultados
6Introducción (IV)
- Formato elegido
- Datos de entrada
- números de 8 bits
- 5 dígitos parte decimal
- Datos de salida
- número de bits dependiendo de la operación
realizada - 5 dígitos parte decimal
7Circuitos implementados
- Sumador
- Restador
- Multiplicador
- Circuito de redondeo
- Truncado
- Redondeo
- Divisor
8Sumador (I)
- Formato salida
- Número de 9 bits
- 5 dígitos para decimales
- Ejemplo
01011101(9310) 11001000(20010)
100100101(29310)
010,11101(2,9062510) 110,01000(6,2510)
1001,00101(9,1562510)
9Sumador (II)
10Sumador (III)
11Sumador (IV)
- Observaciones
- 1bit más para la parte entera (3 ? 4 bits)
- Parte decimal constante en longitud
- Problema
- Sumar el resultado obtenido con un número con el
formato prefijado (3bits,5bits)
12Sumador (V)
- Solución
- Adaptar el número con el viejo formato a la nueva
representación
13Restador (I)
- Formato salida
- Número de 9 bits (en ca2)
- 5 dígitos para decimales
- Ejemplos
111,11111(7,9687510) - 111,11010(7,812510)
0000,00101(0,1562510)
111,11010(7,812510) - 111,11111(7,9687510)
1111,11011(-0,1562510)
14Restador (II)
15Restador (III)
16Multiplicador (I)
- Formato salida
- Número de 11 bits
- 5 dígitos para decimales
- Ejemplo
010,11101(2,9062510)
110,01000(6,2510) 01011101000 010111
0100 01011101
010010,0010101000(18,164062510)
17Multiplicador (II)
- Problema
- La salida produce el doble de bits. La parte
entera no podemos reajustarla, pues daría un
resultado incorrecto. La parte decimal, para
ajustarse al formato de 5 bits de coma fija
adoptado, debemos modificarla. - Solución
- Implementación de un circuito de redondeo, como
veremos posteriormente.
18Multiplicador (III)
19Multiplicador (IV)
20Circuito de redondeo (I)
- Entrada
- Número de 16 bits
- 6 bits parte entera y 10 bits parte decimal
- Salida
- Número de 11 bits
- 6 bits parte entera y 5 bits parte decimal
- 2 formas de implementación
- Truncado
- Redondeo
21Circuito de redondeo (II)
22Circuito de redondeo (III)
- TRUNCADO
- Simplemente eliminamos los 5 últimos bits del
número. - REDONDEO
- Comprobamos el valor del bit de peso -6
- Tiene valor 0 ? Nos quedamos con los 5 primeros
bits de la parte decimal. - Tiene valor 1 ? Nos quedamos con los 5 primeros
bits y le sumamos 1.
23Circuito de redondeo (IV)
- Ejemplos
- Entrada 111110,11111100002 62,98437510
- 111110,111112 62,9687510
- 111111,000002 6310
- Entrada 111111,11111011112 63,98339843710
- 111111,111112 63,9687510
- 111111,111112 63,9687510
TRUNCADO
REDONDEO
TRUNCADO
REDONDEO
24Circuito de redondeo (V)
- Test bench
- Redondeo
- Truncado
25Circuito de redondeo (VI)
- Qué circuito elegimos?
- En función de la precisión necesaria y de los
recursos lógicos utilizados. - Redondeo
- LUTs 22 out of 3,840 1
- Slices 12 out of 1,920 1
- IOBs 23 out of 173 13
- Number of Equivalent Gates 132
- Truncado
- IOBs 22 out of 173 12
26Divisor (I)
- Formato salida
- Número de 13 bits
- 5 dígitos para decimales
- Ejemplo
- Problema sólo obtenemos la parte entera.
27Divisor (II)
28Divisor (III)
29Divisor (IV)
30Divisor (V)
31Divisor (VI)