fláviokenjinishida - uel · pdf file1 introdução...

54
FLÁVIO KENJI NISHIDA PROJETO DE UM MULTIPLICADOR EM PONTO FLUTUANTE LONDRINA–PR 2013

Upload: tranhanh

Post on 15-Feb-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

FLÁVIO KENJI NISHIDA

PROJETO DE UM MULTIPLICADOR EMPONTO FLUTUANTE

LONDRINA–PR

2013

FLÁVIO KENJI NISHIDA

PROJETO DE UM MULTIPLICADOR EMPONTO FLUTUANTE

Trabalho de Conclusão de Curso apresentadoao curso de Bacharelado em Ciência da Com-putação da Universidade Estadual de Lon-drina para obtenção do título de Bacharel emCiência da Computação.

Orientador: Dr. Wesley Attrot

LONDRINA–PR

2013

Flávio Kenji NishidaProjeto de um multiplicador em ponto flutuante/ Flávio Kenji Nishida. –

Londrina–PR, 2013-52 p. : il. (algumas color.) ; 30 cm.

Orientador: Dr. Wesley Attrot

– Universidade Estadual de Londrina, 2013.

1. Ponto Flutuante. 2. Multiplicador. I. Dr. Wesley Attrot. II. UniversidadeEstadual De Londrina. III. Faculdade de xxx. IV. Projeto de um Multiplicadorem Ponto Flutuante

CDU 02:141:005.7

FLÁVIO KENJI NISHIDA

PROJETO DE UM MULTIPLICADOR EMPONTO FLUTUANTE

Trabalho de Conclusão de Curso apresentadoao curso de Bacharelado em Ciência da Com-putação da Universidade Estadual de Lon-drina para obtenção do título de Bacharel emCiência da Computação.

BANCA EXAMINADORA

Dr. Wesley AttrotUniversidade Estadual de Londrina

Orientador

Dr. Jacques Duílio BrancherUniversidade Estadual de Londrina

Dr. Evandro BacarinUniversidade Estadual de Londrina

Londrina–PR, 24 de novembrode 2013

LONDRINA–PR2013

NISHIDA, F.. Projeto de um multiplicador em ponto flutuante. 52 p.Trabalho de Conclusão de Curso (Graduação). Bacharelado em Ciência daComputação – Universidade Estadual de Londrina, 2013.

RESUMO

A representação de números reais em sistemas binários fez com que surgis-sem a representação numérica em ponto flutuante. Além de representar precisamenteum valor numérico, calcular dois valores em ponto flutuante, como somar, multipli-car, dividir e subtrair, sem que haja erro de truncamento e com tempo de respostaimediato é um ponto crucial principalmente para sistemas críticos.

Este trabalho tem como objetivo modelar e simular um multiplicador emponto flutuante baseando no padrão IEEE 754 com precisão de 32 bits para pos-teriormente, ser implementado em VHDL e facilmente simulado numa FPGA, como intuito de modelagem de hardware nacional. O multiplicador modelado possui averificação da ocorrência de overflow e underflow, com um codificador radix-4 Boothpara a geração dos produtos parciais.

A modelagem e a implementação do multiplicador obteve resultados satis-fatórios. A soma dos expoentes com os subtratores melhorados [1] e a geração dosprodutos parciais com menor quantidade de produtos parciais através do codificadorRadix-4 Booth [2]. Pelo problema de Race Condition na soma dos produtos parci-ais, uma condição de saída que é dependente de outros eventos controláveis, impedea soma dos produtos parciais. Os cálculos dessa etapa foram feitos manualmenteobtendo resultados satisfatórios. Todavia, foi descoberto que o problema verificadopode ser solucionado utilizando a metodologia de um compressor 4:2 [2]

Palavras-chave: multiplicador. ponto flutuante. circuito digital.

NISHIDA, F.. Design of a Floating Point Multiplier. 52 p. Final Project(Undergraduation). Bachelor of Science in Computer Science – State Universityof Londrina, 2013.

ABSTRACT

The representation of real numbers in binary systems has spurred the numer-ical representation in floating point. Besides accurately represent a numeric value,calculate two floating-point values as such: add, multiply, divide and subtract, with-out truncation error and immediately response time is a crucial point, especially forcritical systems.

This study aims to model and simulate a multiplier in floating-point basedon the IEEE 754 standard with 32-bit precision for later be easily implementedin VHDL and simulated in an FPGA, in order to research national hardware. Themodeled multiplier has the ability to check for occurrence of overflow and underflow,with a radix-4 Booth encoder for the generation of partial products.

The modeling and implementation of the multiplier obtained satisfactoryresults. The sum of the exponents with improved subtractors [1] and the generationof partial products with a lower number of partial products by using encoder Radix-4 Booth [2]. The Race Condition problem on the sum of the partial products, ankey condition that is dependent on other controllable events, prevents the sum ofthe partial products. The calculations in this step were done manually to obtainingsatisfactory results. However it was discovered that the problem can be solved usingthe methodology of a 4:2 compressor [2].

Keywords: floating point. multiplier. digital circuit

LISTA DE ILUSTRAÇÕES

Figura 1 – Estrutura do ponto flutuante . . . . . . . . . . . . . . . . . . . . . . . 21Figura 2 – Representação em ponto flutuante . . . . . . . . . . . . . . . . . . . . . 22

Figura 3 – Diagrama do multiplicador . . . . . . . . . . . . . . . . . . . . . . . . . 31Figura 4 – Multiplicação entre a mantissa de PF1 e PF2 . . . . . . . . . . . . . . 32

Figura 5 – Estrutura do multiplicador . . . . . . . . . . . . . . . . . . . . . . . . . 34Figura 6 – Circuito verificador de 0 . . . . . . . . . . . . . . . . . . . . . . . . . . 35Figura 7 – Somadores com propagaçao de carry . . . . . . . . . . . . . . . . . . . 35Figura 8 – one subtractor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36Figura 9 – zero subtractor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36Figura 10 –Circuito do Subtratores do Expoente . . . . . . . . . . . . . . . . . . . 37Figura 11 –Separação dos conjuntos de 3 bits do multiplicando . . . . . . . . . . . 37Figura 12 –Circuito logico de ZERO . . . . . . . . . . . . . . . . . . . . . . . . . . 38Figura 13 –Circuito lógico de ADD2 . . . . . . . . . . . . . . . . . . . . . . . . . . 39Figura 14 –Circuito logico de NEG . . . . . . . . . . . . . . . . . . . . . . . . . . 39Figura 15 –Circuito para a geração e verificação do multiplicando em negativo . . 40Figura 16 –Circuito para a geração e verificação do multiplicando por 2 . . . . . . 40Figura 17 –Circuito para verificação e multiplicação por 0 . . . . . . . . . . . . . . 41Figura 18 –Somadores dos produtos parciais de 6 bits . . . . . . . . . . . . . . . . 41Figura 19 –Normalizador para multiplicação de 4 bits . . . . . . . . . . . . . . . . 42Figura 20 – incremento no expoente e verificação de overflow . . . . . . . . . . . . 42

LISTA DE TABELAS

Tabela 1 – Parâmetros do ponto flutuante . . . . . . . . . . . . . . . . . . . . . . 22Tabela 2 – Representação para precisão de 32 bits . . . . . . . . . . . . . . . . . . 23Tabela 3 – Tipos de Arredondamento . . . . . . . . . . . . . . . . . . . . . . . . . 24

Tabela 4 – Resultado entre o multiplicador em ponto flutuante e o núcleo do Xilinx 26

Tabela 5 – Tabela verdade do circuito lógico 𝑋𝑂𝑅 . . . . . . . . . . . . . . . . . 34Tabela 6 – Subtrator com subtraendo T = 1 . . . . . . . . . . . . . . . . . . . . . 36Tabela 7 – Subtrator com subtraendo T = 0 . . . . . . . . . . . . . . . . . . . . . 36Tabela 8 – Tabela verdade do codificador . . . . . . . . . . . . . . . . . . . . . . . 38

Tabela 9 – Valores do multiplicando . . . . . . . . . . . . . . . . . . . . . . . . . . 43Tabela 10 –Valores do multiplicador . . . . . . . . . . . . . . . . . . . . . . . . . . 43Tabela 11 –Resultado do Sinal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44Tabela 12 –Resultados da verificação por 0 . . . . . . . . . . . . . . . . . . . . . . 44Tabela 13 –Resultados da soma dos expoente com a subtração com o bias e a

verificação de overflow e underflow . . . . . . . . . . . . . . . . . . . . 44Tabela 14 –Resultados da Multiplicação do multiplicando . . . . . . . . . . . . . . 45Tabela 15 –Produtos Parciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46Tabela 16 –Resultados da soma dos Produtos parciais . . . . . . . . . . . . . . . . 46Tabela 17 – Incremento do expoente e verificação de Overflow . . . . . . . . . . . . 47Tabela 18 –Resultados da normalização . . . . . . . . . . . . . . . . . . . . . . . . 47Tabela 19 –Resultados do truncamento . . . . . . . . . . . . . . . . . . . . . . . . 48Tabela 20 –Resultados da Multiplicação . . . . . . . . . . . . . . . . . . . . . . . . 48

LISTA DE ABREVIATURAS E SIGLAS

FPGA Field-Programmable Gate Array

VHSIC Very High Speed Integrated Circuits

VHDL VHSIC Hardware Description Language

IP-Core Intellectual Property Core

CI Circuito Integrado

NaN Valor numérico não válido (Not a Number)

CLA Carry Look-ahead Adder

FFT Fast Fourier Transform

DFF D-Flip Flop

VLSI Very Large Scale Integration

SUMÁRIO

1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171.1 Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171.2 Descrição dos Capítulos . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

2 Representação de Números em Ponto Flutuante . . . . . . . . . . . . . 192.1 Representação Numérica . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.2 Conversão Decimal Binário . . . . . . . . . . . . . . . . . . . . . . . . . . 19

2.2.1 Inteiro para Binário . . . . . . . . . . . . . . . . . . . . . . . . . . 192.2.2 Parte Fracionário para Binário . . . . . . . . . . . . . . . . . . . . 20

2.3 Representação de um Ponto Flutuante . . . . . . . . . . . . . . . . . . . 202.4 Padrão IEEE 754 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

2.4.1 Representação em Ponto Flutuante no padrão IEEE 754 . . . . . 212.4.1.1 Números Normalizados, Não Normalizados e Exceções . 222.4.1.2 Arredondamento e Truncamento . . . . . . . . . . . . . 23

3 Trabalhos Relacionados . . . . . . . . . . . . . . . . . . . . . . . . . . . 253.1 Uma Implementação Eficiente de Um Multiplicador em Ponto Flutuante 253.2 Implementação em Hardware de um Multiplicador em Ponto Flutuante de

Alta Velocidade em FPGA . . . . . . . . . . . . . . . . . . . . . . . . . . 263.3 Projeto e Implementação do Multiplicador de Ponto Flutuante Para Me-

lhor Desempenho de Tempo . . . . . . . . . . . . . . . . . . . . . . . . . 283.4 Metodologias utilizados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

4 Multiplicação em Ponto Flutuante . . . . . . . . . . . . . . . . . . . . . 31

5 Desenvolvimento do Projeto . . . . . . . . . . . . . . . . . . . . . . . . . 335.1 Estrutura do Multiplicador . . . . . . . . . . . . . . . . . . . . . . . . . . 335.2 Sinal da Multiplicação . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345.3 Verificação da Multiplicação por 0 . . . . . . . . . . . . . . . . . . . . . . 345.4 Soma dos Expoentes e Subtração do 𝑏𝑖𝑎𝑠 . . . . . . . . . . . . . . . . . . 355.5 Geração dos Produtos Parciais . . . . . . . . . . . . . . . . . . . . . . . . 37

5.5.1 Multiplicação por -1 . . . . . . . . . . . . . . . . . . . . . . . . . 395.5.2 Multiplicação por 2 . . . . . . . . . . . . . . . . . . . . . . . . . . 405.5.3 Multiplicação por 0 . . . . . . . . . . . . . . . . . . . . . . . . . . 40

5.6 Soma dos Produtos Parciais . . . . . . . . . . . . . . . . . . . . . . . . . 415.7 Normalização e Truncamento . . . . . . . . . . . . . . . . . . . . . . . . 41

5.7.1 Normalização . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415.7.2 Truncamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

6 Resultados Obtidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436.1 Sinal da Multiplicação . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436.2 Verificação da multiplicação por 0 . . . . . . . . . . . . . . . . . . . . . . 446.3 Soma do Expoente e Subtração do 𝑏𝑖𝑎𝑠 . . . . . . . . . . . . . . . . . . . 446.4 Geração dos Produtos Parciais . . . . . . . . . . . . . . . . . . . . . . . . 456.5 Soma dos Produtos Parciais . . . . . . . . . . . . . . . . . . . . . . . . . 466.6 Normalização . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

7 Conclusão e Trabalhos Futuros . . . . . . . . . . . . . . . . . . . . . . . 49

Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

17

1 INTRODUÇÃO

Durante a primeira Guerra do Golfo on ano de 1991, um míssel iraquiano conhe-cido como Scud foi lançado contra uma base americana localizada próximo de Dhanhran,na Arábia Saudita. Infelizmente nesta ocasião, 28 soldados americanos morreram e apro-ximadamente 100 ficaram feridos.

Esta catástrofe poderia ter sido evitada caso o sistema de defesa de antimíssilPatriot, utilizado na época não tivesse falhado. O erro ocorreu na interceptação dos mísseisSud pela baixa precisão de arredondamento no cálculo do tempo, ocasionando uma falhano radar. O número de feridos e mortos poderiam ter sido de 0 pessoas se o sistema dedefesa Patriot não falhasse durante o ataque iraquiano.

O sistema de defesa Patriot falhou na intercepção dos mísseis Scud pela falha noradar com o sistema, casado pela baixa precisão de arredondamento no cálculo do tempo.O tempo que o sistema incrementava era de 0,1 segundos, esse valor era representadona base 2 com 24 bits de precisão resultando no valor de 0,09999990463256836 segundo.Esse valor em um período pequeno de tempo não acarretaria em nenhum problema parao sistema, porém para tempo maiores, como 20 horas em funcionamento contínuo, o errojá era considerado muito alto, chegando ter mais de 50% de deslocamento da posição deinterceptação, não identificando mais as possíveis ameaças. No caso de Dhahnan, o sistemajá estava funcionando a mais de 100 horas contínuas, mais de 680 metros de deslocamentodo radar. As soluções possíveis nesse caso seriam no aumento da precisão do sistemaaumentando os bits de precisão ou simplesmente desligar e religar a cada período curtode tempo[3].

A representação de números reais em sistemas binários fez com que surgisse arepresentação numérica em ponto flutuante. Além de representar precisamente um valornumérico, calcular dois valores em ponto flutuante, como somar, multiplicar, dividir esubtrair, sem que haja erro de truncamento e com tempo de resposta imediato é umponto crucial principalmente para sistemas críticos.

1.1 Objetivo

O desenvolvimento de métodos aritméticos em ponto flutuante com custo compu-tacional baixo e com erro de truncamento mínimo vem sendo cada vez mais exigido emsistemas com alto desempenho[1, 4, 5, 6, 2]. Atualmente o padrão IEEE 754 para PontoFlutuante é utilizado pela maioria dos fabricantes,o objetivo do surgimento do IEEE 754 éa padronização do ponto flutuante para que um mesmo programa ou sistema possa obter

18 Capítulo 1. Introdução

os mesmo resultado em diferentes tipos de máquinas [7].

1.2 Descrição dos Capítulos

∙ Capítulo 2 - Representação de números em ponto flutuante: Será detalhado a repre-sentação do ponto flutuante e o padrão estabelecido pela IEEE 754.

∙ Capítulo 3 - Multiplicação em Ponto Flutuante: Será descrito a aritmética da mul-tiplicação entre dois ponto flutuante.

∙ Capítulo 4 - Trabalho Relacionados: Neste capítulo serão descritos os métodos e osresultados dos trabalhos relacionados.

∙ Capítulo 5 - Desenvolvimento do Projeto: Descreve a implementação do multiplica-dor.

∙ Capítulo 6 - Resultados: Relata os resultados obtidos a partir de simulações.

∙ Capítulo 7 - Conclusão e Trabalho futuros

19

2 REPRESENTAÇÃO DE NÚMEROS EMPONTO FLUTUANTE

A necessidade em representar número reais em computadores ou sistemas fez comque o ponto flutuante fosse concebido como uma das formas de representação adotadopela maioria dos sistemas atualmente. Para manter a objetividade do projeto, segue umresumo sobre os conceitos básicos envolvidos na modelagem.

2.1 Representação Numérica

A representação tanto em decimal quanto em binário tem a seguinte forma:

Decimal: 11, 43 = 1 × 101 + 1 × 100 + 4 × 10−1 + 3 × 10−2

Binário: 101, 11 = 1 × 22 + 0 × 21 + 1 × 20 + 1 × 2−1 + 1 × 2−2

2.2 Conversão Decimal Binário

Em um número real decimal, a forma para converter para binário pode ser em doismomentos, a parte inteira e a parte fracionária.

2.2.1 Inteiro para Binário

Para a conversão da parte inteira de um decimal para seu correspondente binárioé dividir o valor decimal por 2 sucessivamente até que o quociente seja 1. O resto de cadadivisão será o resultado da conversão em binário onde o resto de cada divisão preencherá ovalor binário da direita para esquerda. Abaixo mostra o valor 137 convertido em binário:

137 ÷ 2 = 68 resto 1 −→ 1

68 ÷ 2 = 34 resto 0 −→ 01

34 ÷ 2 = 17 resto 0 −→ 001

17 ÷ 2 = 8 resto 1 −→ 1001

8 ÷ 2 = 4 resto 0 −→ 01001

4 ÷ 2 = 2 resto 0 −→ 001001

2 ÷ 2 = 1 resto 0 −→ 0001001

1 ÷ 2 = 0 resto 1 −→ 10001001

Assim137 = 10001001

20 Capítulo 2. Representação de Números em Ponto Flutuante

2.2.2 Parte Fracionário para Binário

Para a conversão da parte fracionária de um decimal para o binário, multiplica-se a fração por 2 até que o resultado seja 1 ou até uma determinada quantidade deiterações, pois conversão da fração pode gerar infinitas iterações. Quando o resultado decada multiplicação for maior igual a 1, adiciona 1 no bit menos significativo e subtrai oresultado por 1, caso contrário recebe 0 e não subtrai. Abaixo mostra o valor 0,5859375convertido em binário

0, 5859375 × 2 = 1, 171875 − 1 = 0, 171875 −→ 1

0, 171875 × 2 = 0, 34375 −→ 10

0, 34375 × 2 = 0, 6875 −→ 100

0, 6875 × 2 = 1, 375 − 1 = 0, 375 −→ 1001

0, 375 × 2 = 0, 75 −→ 10010

0, 75 × 2 = 1, 5 − 1 = 0, 5 −→ 100101

0, 5 × 2 = 1 − 1 = 0 −→ 10011011

Assim0, 5859375 = 0, 1001011

2.3 Representação de um Ponto Flutuante

A representação em binário de um ponto flutuante tem a seguinte forma:

(−1)𝑆 × 𝑀 × 𝐵±𝐸

𝑆 é sinal, 𝑀 a mantissa, 𝐸 o expoente e 𝐵 a base. O sinal demonstra se o valor aser representado é positivo ou negativo, a mantissa é o valor do significando e o expoenteo deslocamento do ponto.

Um problema para a representação em ponto flutuante é a sua variedade de repre-sentar. O exemplo a seguir pode demonstrar algumas representações que são equivalentes:

1, 01 × 22

10, 1 × 21

0, 0101 × 24

Para simplificar a forma de representação em ponto flutuante, pede-se que o nú-mero esteja normalizado. A normalização é o deslocamento do ponto para esquerda ou

2.4. Padrão IEEE 754 21

para direita e o ponto irá estar a esquerda do dígito diferente de zero mais à esquerda.Como no exemplo anterior, o valor normalizado terá a seguinte forma:

1, 01 × 22

Quando aplica-se a normalização, o primeiro dígito à esquerda do ponto será sem-pre 1, esse dígito não terá mais necessidade de ser armazenado, chamando de dígitoescondido [8].

2.4 Padrão IEEE 754

O padrão IEEE 754 [7] foi estabelecido para normalizar o formato para representarnúmeros em ponto flutuante, assim tornando mais compatível o uso entre um programaem várias máquinas diferentes. No padrão IEEE 754 são estabelecidos o padrão de precisãoem 16 bits, 32 bits, 64 bits, 128 bits e maior que 128 bits.

2.4.1 Representação em Ponto Flutuante no padrão IEEE 754

A estrutura do ponto flutuante no padrão IEEE 754 pode ser visto na figura 1. OSinal é o bit mais a esquerda do ponto flutuante sinalizando qual é o sinal, o Expoente,entre o sinal e a mantissa, é um expoente polarizado, ou seja, a soma do expoente com obias1 para representação de números grandes ou pequenos sem que há necessidade de umbit de sinal para o expoente e a mantissa é a parte fracionária do ponto flutuante.

Sinal Expoente fração

Figura 1 – Estrutura do ponto flutuante

Para melhor entendimento da estrutura do ponto flutuante será demonstrado aconversão do decimal para ponto flutuante de 32 bits sendo 𝑠 o sinal, 𝑚 a mantissa e 𝑒 oexpoente.

180 = (−1𝑠) × 𝑚 × 2(𝑒+127) = (−10) × 1, 0110100 × 2(7+127) =

0 10000110 01101000000000000000000

A tabela 1 mostra o tamanho de armazenamento de cada precisão de ponto flutu-ante, sua precisão, o expoente máximo (𝑒𝑚𝑎𝑥), o bias, o tamanho do sinal, do expoentee da fração.1 Constante numérico para normalização do cálculo algébrico computacional

22 Capítulo 2. Representação de Números em Ponto Flutuante

Tabela 1 – Parâmetros do ponto flutuante

Parâmetro 16 bits 32 bits 64 bits 128 bits k bits (para k≥128)Tamanho dearmazena-mento (𝑘)

16 32 64 128 múltiplos de 32

Precisão (𝑝) 11 24 52 113 inteiro(𝑘-(4×𝑙𝑜𝑔2(𝑘)))+13Expoente má-ximo (𝑒𝑚𝑎𝑥)

15 127 1023 16383 2(𝑘−𝑝−1) − 1

Expoente po-larizado (𝑏𝑖𝑎𝑠)

15 127 1023 16383 𝑒𝑚𝑎𝑥

𝑠 (tamanho dosinal)

1 1 1 1 1

𝑤 (tamanho doexpoente)

5 8 11 15 𝑖𝑛𝑡𝑒𝑖𝑟𝑜(4 × 𝑙𝑜𝑔2(𝑘)) − 13

𝑡 (tamanho dafração)

10 23 52 112 𝑘 − 𝑤 − 𝑠

𝑘 (tamanhode armazena-mento)

16 32 64 128 𝑠 + 𝑤 + 𝑡

A função 𝑖𝑛𝑡𝑒𝑖𝑟𝑜() [7] arrendonda para o inteiro mais próximo do valor obtido.

A precisão mais utilizada em ponto flutuante é de 32 bits e 64 bits. Para demonstrarnúmeros normalizados, não normalizados e exceções, a precisão de 32 bits será adotadocomo exemplo.

2.4.1.1 Números Normalizados, Não Normalizados e Exceções

Em qualquer precisão de ponto flutuante existe uma lacuna pela qual a representa-ção se torna impossível pela sua limitação na representação, como na figura 2 que mostraos valores representáveis pela precisão de 32 bits. O valor máximo é de ±(2 − 2−23) × 2127

e o valor mínimo é de ±2−126

Figura 2 – Representação em ponto flutuante

2.4. Padrão IEEE 754 23

Há momentos no sistema que os resultados apresentados em uma operação ultra-passa os valores representáveis pelo ponto flutuante. Gerando as seguintes situações:

∙ Overflow: Quando o expoente excede o valor máximo do expoente. Em alguns sis-temas isso pode ser representado como +∞ ou −∞.

∙ Underflow: Quando o valor mínimo do expoente é excedido. Pode-se representarcomo 0.

O padrão IEEE 754 limita a representação de valores para que não hajam pro-blemas de representação. Para a precisão de 32 bits, ou precisão simples, tem 8 bits deexpoente e 23 bits de fração. Na tabela 2 mostra os valores das possíveis representações.

Tabela 2 – Representação para precisão de 32 bits

Expoente polarizado Fração Valor Interpletação0<E<255 Qualquer valor (−1)𝑠 × 2(𝑒−127)× 1,F ± Normalizado

E=0 F=0 (−1)𝑠× 0 ±ZeroE=0 F̸=0 (−1)𝑠 × 2(𝑒−126)× 0,F ±Não-normalizado

E=255 F=0 (−1)𝑠 × ∞ ±infinitoE=255 F̸=0 NaN NaN

2.4.1.2 Arredondamento e Truncamento

Quando ocorre uma operação qualquer, normalmente o resultado da operação éguardado em um registrador de tamanho maior [9], para que o resultado possa ser colocadodentro do formato do ponto flutuante, existem 4 maneiras de arredondamento para aeliminação dos bits extras[9][7]:

∙ Arredondamento para o mais próximo: Arredonda o resultado para o valor repre-sentável mais próximo.

∙ Arredondamento para cima: Arredonda o resultado para cima, em direção para oinfinito positivo.

∙ Arredondamento para baixo: Arredonda o resultado para baixo, em direção para oinfinito negativo.

∙ Truncamento: Truncamento consiste em simplesmente ignorar os bits excedentes.

A tabela 3 mostra os resultados de cada arredondamento de 6 bits para 3 bits.

24 Capítulo 2. Representação de Números em Ponto Flutuante

Tabela 3 – Tipos de Arredondamento

Arredondamento 1,0111 1,01010 -1,0111 -1,01010Mais Próximo 1,10 1,01 -1,10 -1,01

Para Cima 1,10 1,10 -1,01 -1,01Para Baixo 1,01 1,01 -1,10 -1,10

Truncamento 1,01 1,01 -1,01 -1,01

Cada forma de arredondamento varia na sua acurácia em relação ao resultado exato. Otruncamento consiste em simplesmente ignora os bits excedentes, isso permite com que aacurácia do truncamento seja menor em relação ao arrendondamento para o mais próximo.Abaixo mostra a diferença de acurácia entre o arredondamento para o mais próximo e otruncamento para 6 bits:

1, 8 = 1, 1100110011001100...

Truncando:1, 11001 = 1, 78125

Arredondando para o mais próximo:

1, 11010 = 1, 8125

Enquanto o erro do truncamento é de 0,0175, no arredondamento para o mais próximo éde 0,0125. Porém como a precisão é maior e o truncamento só há a necessidade de ignoraros bits excedentes sem nenhuma verificação, a implementação é mais simples e o tempode resposta é melhor em relação ao arredondamento,o truncamento será adotado nesteprojeto.

25

3 TRABALHOS RELACIONADOS

Este capítulo abordará metodologias de autores separando cada artigo em sub-seções distintas, descrevendo a implementação do circuito do multiplicador em pontoflutuante, sintetizado através do VHDL, simulando e obtendo resultados com FPGAs.Na última sessão demonstrará as metodologias empregados para o multiplicador desteprojeto e suas motivações.

3.1 Uma Implementação Eficiente de Um Multipli-cador em Ponto Flutuante

Mohamed Al-Ashrafy, Ashraf Salem e Wagdy Anis implementaram um multipli-cador em ponto flutuante no padrão IEEE 754 de precisão simples sem tratamento paraarredondamento no FPGA Xilinx Virtex-5 em VHDL [1]. O núcleo do Xilinx Virtex-5,que tem um multiplicador próprio, foi utilizado para comparação do resultado em relaçãoao multiplicador implementado.

O hardware do multiplicador foi separado na seguinte forma:

∙ Sinal

∙ Somador dos expoentes

∙ Multiplicador das mantissas

∙ Normalização

Para verificar se o sinal do resultado da multiplicação é negativo ou positivo, osinal é definido por um circuito lógico XOR.

O somador do expoente foi implementado um somador sem sinal e com tempo deresposta não tão rápido, pois o multiplicador terá um tempo de resposta maior em relaçãoa soma do expoente. Para o somador dos expoentes foram utilizados somadores completose um meio somador.

O multiplicador das mantissas foi implementado com um multiplicador sem sinal,a arquitetura do multiplicador é de 24 bits simples com três estágios. No primeiro estágioutiliza um conjunto de somadores parciais. No segundo estágio utilizou somadores com-pletos e no ultimo estágio somadores completos com propagação de carry na horizontal.

26 Capítulo 3. Trabalhos Relacionados

Para a obtenção dos resultados, foi utilizado um testbench para gerar estímulospara aplicar no multiplicador e no núcleo do Xilinx. O núcleo do Xilinx foi alterado paraindicar frag para underflow e overflow, com latência máxima para três ciclos.

A tabela 5 mostra o resultado do multiplicador em relação ao núcleo o Xilinx. Aquantidade de Configuration Logical Blocks Slices (CLB Slices) e do D-Flip Flop (DFF)utilizado no multiplicador foi de 1263 e 604 respectivamente, enquanto do núcleo Xilinx foide 765 e 266 respectivamente. A frequência do multiplicador foi de 301.114 MHz enquantodo núcleo do Xilinx foi de 221.484 MHz

Multiplicador emponto flutuante

Núcleo do Xilinx

CLB Slices 1263 765DFF 604 266Frequência máxima 301.114 MHz 221.484 MHz

Tabela 4 – Resultado entre o multiplicador em ponto flutuante e o núcleo do Xilinx

O tamanho do núcleo do Xilinx é menor em relação do multiplicador pois nãotrunca/arrendonda os 48 bits da multiplicação no qual reflete na quantidade de registra-dores para executar sobre os bits extras e também no geradores de função.

3.2 Implementação em Hardware de um Multiplica-dor em Ponto Flutuante de Alta Velocidade emFPGA

No artigo [2] foi implementado um multiplicador em ponto flutuante de precisãosimples no padrão IEEE 754 com o produto parcial comprimido pelo algoritmo Radix-4Booth’s, o compressor 4:2 comprime os produtos parciais, a soma e o vetor de carry esão somados em uma look-ahead adder para obtenção do produto. O multiplicador foiutilizado especialmente para um processador FFT, adotando a técnica de pipeline paraque funcionasse de forma estável a 80 MHz.

O Projeto foi dividido em módulo do expoente, do codificador de Booth melhoradoe do compressor.

O módulo do expoente tem 8 bits com sinal de carry que é utilizado para a nor-malização do resultado com as seguintes regras:

1. Se normalização é igual a zero, então o expoente não muda, senão adiciona 1.

2. Se o sinal do carry dos dois níveis anteriores foram “00”, então o resultado é un-derflow, se for “11”, então é overflow, senão os resultados são normais. Se aparecer

3.2. Implementação em Hardware de um Multiplicador em Ponto Flutuante de Alta Velocidade emFPGA 27

overflow, então parte do expoente será tudo “1” e parte da mantissa será tudo “0”,tornando como infinito no padrão IEEE 754. Caso ocorra underflow, então o ex-poente se tornará tudo “0”no resultado do multiplicador, que é o infinitesimal nopadrão IEEE 754.

3. Se o sinal do carry for “1”, será determinada pelo sinal da normalização para definirse é overflow.

Nos produtos parciais, como o tempo de atraso é determinado pelo número dosprodutos parciais, será adotado um codificador Radix-4 Booth para melhorar o esquemade codificação tradicional no projeto. Foi adotado a técnica de verificar cada ciclo, ondeo número dos produtos parciais é reduzido para 13.

O codificador de Booth tem 4 resultados, 𝑍𝐸𝑅𝑂 que multiplica por 0, 𝐴𝐷𝐷_𝑆𝑈𝐵

multiplica por 1, 𝐴𝐷𝐷_𝑆𝑈𝐵2 multiplica por 2 e 𝑁𝐸𝐺 multiplica por -1.

De acordo ao princípio do codificador Booth, o gerador do produto parcial segueas seguintes regras:

𝑃𝑃𝑖 = 𝑆𝐻𝐼𝐹𝑇 × 𝑁𝐸𝐺 + 𝑆𝐻𝐼𝐹𝑇 × 𝑁𝐸𝐺

𝑆𝐻𝐼𝐹𝑇 = 𝑍𝐸𝑅𝑂 × (𝐴𝐷𝐷_𝑆𝑈𝐵 × 𝐴𝑖 + 𝐴𝐷𝐷_𝑆𝑈𝐵2 × 𝐴𝑖−1)

Aonde 𝑃𝑃𝑖 é o produto parcial e 𝐴𝑖 o multiplicando. Depois da extensão do bitescondido e bit do sinal, o multiplicando, com 26 bits na mantissa, irá produzir 13 produtosparciais. No multiplicado em ponto flutuante, o complemento de 2 irá ser adotado naoperação na parte da mantissa. Assim “1” será adicionado no bit menos significativopara 𝑁𝐸𝐺 igual a 1 pois o complemento de 1 será implementado somente no 𝑃𝑃𝑖. Paraaumentar o paralelismo, a operação de adição de 1 no produto parcial é implementadono compressor. Porém foi implementado a operação de adição dos números sinalizados.O bit de sinal do produto parcial deve ser estendido. Somente o primeiro produto parcialterá 29 bits, os outros produtos parciais terão 32 bits, onde no primeiro produto parcialterá 3 bits de sinal de extensão “SSS”. nos outros produtos parciais, terá 2 bit de sinal deextensão, e o bit de operação de adição “1” é “NN”. Segue a seguinte regra:

Primeiro bit:𝑆𝑆𝑆 = {𝑠𝑖𝑔𝑛(𝑖), 𝑠𝑖𝑔𝑛(𝑖), 𝑠𝑖𝑔𝑛(𝑖)}

Segundo até 13o bit:𝑁𝑁 = {0, 𝑠𝑖𝑔𝑛(𝑖 − 1)}

Aonde 𝑖 é a linha do produto parcial, 𝑠𝑖𝑔𝑛(𝑖) é o sinal do produto parcial na i-ésimalinha.

28 Capítulo 3. Trabalhos Relacionados

Foi implementado uma estrutura de um compressor tradicional de um produtoparcial melhorada e um compressor 4:2, um compressor 3:2, um somador completo e ummeio somador são usado simultaneamente para implementar um compressor rápido paraos 13 produtos parciais.

O novo hardware implementado de um multiplicador em ponto flutuante de altavelocidade em uma FPGA é desenvolvido baseado na técnica em pipeline. O tempo desimulação mostrou que o multiplicador em ponto flutuante pode rodar numa frequênciade 80 MHz constantemente de forma estável. O multiplicador tem sido bem adotado noprocessador FFT.

3.3 Projeto e Implementação do Multiplicador de PontoFlutuante Para Melhor Desempenho de Tempo

Em [10], pela complexidade dos algoritmos, a implementação das operações emponto flutuantes são muito difíceis em uma FPGA. A computação das operações envolvegrande arranjos dinâmicos, porém os recursos necessários para essas operações é grande emcomparação as operações com inteiros. Tem se o Multiplicador para números binários seme com sinal, para a multiplicação do ponto flutuante, o multiplicador em ponto flutuanteé utilizado.

O multiplicador sem sinal utiliza um arranjo de portas AND e somadores comple-tos. A entrada é positivo gerando saída positivo. Esse multiplicador é utilizado na parteda mantissa do ponto flutuante.

O multiplicador do ponto flutuante é responsável pela multiplicação de dois núme-ros de ponto flutuante. A operação desse multiplicador é de simples adição especialmentepelo formato de 32 bits.

Para multiplicar os números em ponto flutuante, as mantissas são multiplicadospor um multiplicador sem sinal. Então os expoentes são somados e o excesso é subtraídopara o resultado. O saída do sinal vem a partir de um XOR com o sinal de cada pontoflutuante. Após a multiplicação, normaliza o resultado, se for necessário, ajusta a mantissae o expoente para que o bit mais significativo da mantissa seja 1.

No expoente, somadores sem sinal somaram a entrada do primeiro expoente com osegundo expoente e subtrai o rsultado da soma pelo 𝑏𝑖𝑎𝑠 (127). O resultado deste estágiose chama expoente intermediário. Como a necessidade da operação não é necessariamenteser rápido, pois no expoente soma 2 expoente de 8 bits e a mantissa multiplica 24 bitspor 24 bits, o somador com propagação de carry é utilizado para a soma dos dois expoen-tes. No somador, é utilizado um meio-somador e 7 somadores completos, gerando 8 bitscomo resultado, esse resultado é subtraído pelo 𝑏𝑖𝑎𝑠 a partir do arranjo de ripple borrow

3.4. Metodologias utilizados 29

subtractors.

O sinal da multiplicação, somente é negativo se somente um dos dois sinais dosponto flutuante de entrada for negativo, caso contrário será positivo. A partir do uso deum XOR obtém o resultado do sinal.

No expoente, pode acontecer o 𝑈𝑛𝑑𝑒𝑟𝑓𝑙𝑜𝑤 ou 𝑂𝑣𝑒𝑟𝑓𝑙𝑜𝑤. No caso do 𝑂𝑣𝑒𝑟𝑓𝑙𝑜𝑤,pode ocorrer quando soma dois expoentes ou quando está sendo normalizado. O 𝑂𝑣𝑒𝑟𝑓𝑙𝑜𝑤

pode ser compensado quando subtrai com o 𝑏𝑖𝑎𝑠. O 𝑈𝑛𝑑𝑒𝑟𝑓𝑙𝑜𝑤 pode ocorrer quando asubtração do 𝑏𝑖𝑎𝑠 com o expoente já somado resulta igual ou menor a 0, quando for menor,não há como compensar, mas quando o resultado for 0, há chance de ser compensadodurante a normalização adicionando 1.

O multiplicador foi implementado com estágio de três pipelining, para dividir ocaminho crítico, podendo aumentar a frequência da operação do multiplicador. Os estágiosdo pipeling foram divididos nas seguintes etapas:

1. No meio da multiplicação do significando e no meio da soma do expoente, antes dasubtração com o 𝑏𝑖𝑎𝑠.

2. Depois da multiplicação do significando e após a subtração do 𝑏𝑖𝑎𝑠.

3. Na saída da multiplicação do ponto flutuante, com o sinal, expoente e mantissa.

A simulação do multiplicador foi implementado para o dispositivo Xilinx Spartan3. O tempo de performance foi observado com a ferramenta Xilinx Timing Analyzer. Oresultado obtido pela arquitetura em pipeline mostrou ser 0.54 ns mais rápido do que naarquitetura convencional. Esta vantagem será bem utilizado em aplicativos DSP (DigitalSignal Processing).

3.4 Metodologias utilizados

Para este projeto o sinal da multiplicação será implementado com um circuitológico XOR [1, 2, 10].

Para a soma dos expoentes e a subtração com o 𝑏𝑖𝑎𝑠, foram utilizados somadorescom propagação de carry para a soma dos expoentes [1, 10]. A subtração é feita com oresultado da soma dos expoentes e subtratores otimizados para o valor do bias [1].

Na geração dos produtos parciais, o codificador Radix-4 Booth [2] foi utilizado paradiminuir a quantidade de produtos parciais. Para o padrão de 32 bits. Como a mantissatem 23 bits de fração e 1 bit escondido com valor 1 no bit mais significativo na mantissa,são gerados 23 produtos parciais em uma multiplicação normal entre duas mantissas. Já

30 Capítulo 3. Trabalhos Relacionados

no codificador são gerados 13 produtos parciais, produzindo 10 produtos parciais a menos,exigindo menos para a soma dos produtos parciais.

31

4 MULTIPLICAÇÃO EM PONTO FLUTUANTE

A aritmética de um multiplicador em ponto flutuante é mais simples em relação asoperações de soma e subtração pelo fato de não haver necessidade de igualar os expoentesdos pontos flutuantes na operação.

A figura 3 mostra o diagrama da multiplicação entre dois ponto flutuante. Noinício, o multiplicador recebe os pontos flutuantes X e Y e verifica se um dos dois é zero.Caso seja verdade, o resultado da multiplicação Z retorna com o valor zero. Senão somaos expoentes e subtrai pelo valor do 𝑏𝑖𝑎𝑠.

Após a subtração, verifica se não ocorreu a excessão de overflow, quando o resultadodo expoente é maior que o expoente máximo, ou de underflow, quando o resultado é menorque o expoente mínimo. Após a verificação, multiplica-se as mantissas, normaliza-se etrunca ou é arredonda gerando a mantissa resultante. Por fim retorna a multiplicaçãoentre X e Y ou uma excessão.

Figura 3 – Diagrama do multiplicador

Para melhor entendimento, considere-se 2 números em ponto flutuante normaliza-dos com precisão de 16 bits, PF1 = 0 10000 01101000000 binário ou 2,8125 em decimal,

32 Capítulo 4. Multiplicação em Ponto Flutuante

e PF2 = 0 00000 0000000000 binário ou 0 em decimal. Nesse caso, como o PF2 é igual a0. A multiplicação de qualquer valor com 0 é 0, então retorna-se 0 como resultado.

Em um outro exemplo, o ponto flutuante PF1 = 0 10000 01101000000 ou 2,8125em decimal e PF2 = 0 10011 0110001000 ou 20,25 em decimal. Inicia-se a multiplicação.

Como no diagrama mostrado na figura 3, soma-se os dois expoentes e com a soma,subtrai-se o 𝑏𝑖𝑎𝑠, que na precisão de 16 bits, possui um valor de 15 ou 01111 em binário.

10000 + 10011 = 100011

100011 − 01111 = 10100

Com o resultado do expoente, é possível verificar se ocorreu um overflow ou umunderflow. Como o resultado foi 10100 ou 20 em decimal, valor está representável paraprecisão de 16 bits, continua-se normalmente o calculo da multiplicação.

Após o calculo do expoente, calcula-se o valor da mantissa multiplicando como nafigura 4 onde pode se ver a multiplicação entre PF1 e PF2.

Figura 4 – Multiplicação entre a mantissa de PF1 e PF2

Por ultimo deve-se verificar se há necessidade de normalização, arrendondamentoou truncamento do resultado da multiplicação da mantissa. Como o resultado está nor-malizado, há somente a necessidade do arredondamento ou truncamento. No caso acimafoi utilizado um truncamento, excluindo os 10 bits menos significativos e resultando1111000111 na mantissa.

Com isso, o resultado final entre a multiplicação de PF1 e PF2 é de 0 10100 1111000111.

33

5 DESENVOLVIMENTO DO PROJETO

Este capítulo aborda a implementação do multiplicador em ponto flutuante, emcada etapa do processo, detalhando a sua estrutura lógica a partir das informações obtidasnas fundamentações teóricas.

A condição de entrada para realizar-ser o calculo da multiplicação, será com pontoflutuante normalizado. A precisão utilizado para o projeto foi de 32 bits.

5.1 Estrutura do Multiplicador

O multiplicador em ponto flutuante constitui na seguinte estrutura:

1. Sinal da multiplicação;

2. Verificação da multiplicação por 0.

3. Soma dos expoentes e subtração do 𝑏𝑖𝑎𝑠;

4. Geração dos produtos parciais;

5. Soma dos produtos parciais;

6. Normalização E truncamento;

A figura 5 mostra o diagrama da estrutura do multiplicador implementado, amultiplicação inicia-se com recebimento dos sinais, expoentes e mantissas de cada pontoflutuante. No sinal, faz a verificação retornando ao resultado final. Com o valor do expo-ente e da mantissa de cada entrada, verifica se os dois valores são zero para cada pontoflutuante, caso seja verdade para um dos dois ponto flutuante, retorna a exceção de Zeropara o resultado final.

Após a verificação do Zero, o expoente de cada entrada é somado e subtraído como 𝑏𝑖𝑎𝑠 e verifica se houve overflow ou underflow, caso aconteça, retorna ao resultado aexceção, caso contrário, continua a multiplicação.

Em paralelo, faz a multiplicação com as entradas de cada da mantissa e gera osprodutos parciais. Com os produtos parciais gerados, soma-se e verifica a necessidade danormalização, caso haja necessidade incrementa o expoente e normaliza o resultado dasoma.

Por fim, trunca-se o valor gerando a mantissa resultante, e retorna ao resultadofinal. No expoente, após verificar a necessidade do incremento, verifica novamente a ocor-rência de overflow ou underflow e retorna o resultado do expoente ao resultado final.

34 Capítulo 5. Desenvolvimento do Projeto

Figura 5 – Estrutura do multiplicador

5.2 Sinal da Multiplicação

No sinal, a única condição para que a multiplicação entre dois números seja ne-gativo é quando somente um dos dois números é negativo. O circuito lógico 𝑋𝑂𝑅 foiempregado para obter o sinal através dos dois ponto flutuante. A tabela 5 mostra a tabelaverdade do circuito lógico, Quando as entradas A e B são iguais, o resultado será 0 equando são diferentes, será 1.

Tabela 5 – Tabela verdade do circuito lógico 𝑋𝑂𝑅

A B Resultado0 0 00 1 11 0 11 1 0

5.3 Verificação da Multiplicação por 0

No início da multiplicação, verifica se o expoente e a mantissa dos dois númerosem ponto flutuante da entrada são 0. Caso positivo, o sinal de Zero é ativado. Antes decomeçar a calcular a multiplicação, verifica se um dos pontos flutuantes de entrada nãotem valor 0, para essa verificação, cada ponto flutuante verifica se a mantissa e o expoenteé igual a 0. A figura 6 mostra o circuito do verificador para uma entrada. No expoente ena mantissa são utilizados circuitos lógicos OR, caso 1 bit dos 8 bits do expoente ou o 1bits dos 23 bits da mantissa for 1, o sinal de Zero não é ativado.

5.4. Soma dos Expoentes e Subtração do 𝑏𝑖𝑎𝑠 35

... ...

E0E1E2E3E4E5E6E7

M0M1M2MiM20M21

Zero

M3M19M22

Figura 6 – Circuito verificador de 0

5.4 Soma dos Expoentes e Subtração do 𝑏𝑖𝑎𝑠

O somador dos expoentes possui a função de adicionar o valor do primeiro expoentecom o segundo expoente subtraindo-se com o valor do 𝑏𝑖𝑎𝑠 que varia de acordo com opadrão de precisão estabelecido. Neste caso é utilizado o padrão de precisão de 32 bits eo valor do 𝑏𝑖𝑎𝑠 será 127 ou 01111111 em binário.

A soma entre os expoentes utiliza somadores com propagação do carry [1]. Utiliza-se 1 meio somador e 7 somadores completos, a entrada do meio somador serão do primeirobit de cada expoente (𝐴0,𝐵0) com saída da soma e o carry (𝑆0,𝐶𝑜𝑢𝑡,0), no somadorescompletos, as entradas recebem a sequência dos próximos bits de cada expoente mais oCarry de cada somador anterior (𝐴,𝐵,𝐶𝑖𝑛). A figura 7 mostra o somador com a propagaçãode carry.

A0 B0

Cout,0

S0

A1 B1

Cout,1

S1

Cin,1...A6 B6

Cout,6

S6

Cin,6

A7 B7

Cout,7

S7

Cin,7

Figura 7 – Somadores com propagaçao de carry

A soma do somador com propagação do carry gera 8 bits (𝑆7,𝑆0) e mais 1 bit docarry (𝐶𝑜𝑢𝑡,7). Concatenando a soma com o carry formam um conjunto de 9 bits, esseresultado será subtraído com o 𝑏𝑖𝑎𝑠 para o resultado do expoente.

Subtratores comuns tem três entradas, o minuendo (𝑆), o subtraendo (𝑇 ) e oempréstimo de entrada (𝐵𝑖𝑛). Com duas saídas, o resto (𝑅) e o empréstimo de saída(𝐵𝑜𝑢𝑡). Porém considerando que o valor do 𝑏𝑖𝑎𝑠 sempre será o mesmo valor para a precisãode 32 bits (01111111), então implementou-se dois subtratores com uma lógica otimizada.

36 Capítulo 5. Desenvolvimento do Projeto

O primeiro subtrator otimizado gera o resultado quando o valor de entrada dosubtraendo é sempre 1 [1]. A tabela 6 mostra a tabela verdade do subtrator.

Tabela 6 – Subtrator com subtraendo T = 1

𝑆 𝑇 𝐵𝑖𝑛 𝑅 𝐵𝑜𝑢𝑡

0 1 0 1 11 1 0 0 00 1 1 0 11 1 1 1 1

A equação booleana é representado da seguinte maneira:

𝑅 = 𝑆 ⊕ 𝐵𝑖𝑛

𝐵𝑜𝑢𝑡 = 𝑆 + 𝐵𝑖𝑛

A figura 8 mostra o circuito lógico.

Figura 8 – one subtractor

A tabela 7 mostra a tabela verdade do subtrator com subtraendo com valor 0 [1].

Tabela 7 – Subtrator com subtraendo T = 0

𝑆 𝑇 𝐵𝑖𝑛 𝑅 𝐵𝑜𝑢𝑡

0 0 0 0 01 0 0 1 00 0 1 1 11 0 1 0 0

A equação booleana é representado da seguinte maneira:

𝑅 = 𝑆 ⊕ 𝐵𝑖𝑛

𝐵𝑜𝑢𝑡 = 𝑆 · 𝐵𝑖𝑛

A figura 9 mostra o circuíto lógico.

Figura 9 – zero subtractor

5.5. Geração dos Produtos Parciais 37

Com os subtratores, o subtrator do 𝑏𝑖𝑎𝑠 será composto por 7 subtratores T = 1 e2 subtratores T = 0. A figura 10 mostra o subtrator do 𝑏𝑖𝑎𝑠. Para a detecção do overflowou underflow no expoente, o resto (𝑅8) e empréstimo de saída (𝐵𝑜𝑢𝑡,8) são verificados.No caso para a detecção de underflow, o (𝑅8) e o (𝐵𝑜𝑢𝑡,8) forem 1, o sinal de underflow éacionado. Para o overflow, quando o (𝐵𝑜𝑢𝑡,8) é 1 e o (𝑅8) é 0, então o sinal de overflow éacionado.

Figura 10 – Circuito do Subtratores do Expoente

5.5 Geração dos Produtos Parciais

Para gerar os produtos parciais, foi utilizado o codificador Radix-4 Booth [2], ondediminuiu a quantidade de produtos parciais de 24 para 13 produtos parciais, aumentandoo desempenho. Para maior praticidade para demonstrar a geração dos produtos parciais,serão utilizados exemplos com 4 bits de tamanho.

O codificador Radix-4 Booth gera a multiplicação do produto parcial a partir deum conjunto de 3 bits do multiplicador, pela qual os 2 bits mais significativo do primeiroconjunto é obtido a parir do 2 bits menos significativo do multiplicador e 0 no bit menossignificativo do conjunto. Os próximos conjuntos são obtidos a cada 2 deslocamento aesquerda do multiplicador e sucessivamente. Quando o último conjunto tem somente 2ou 1 bit, adiciona 0 nos bits mais significativos faltantes. Em um multiplicador de 4 bits,foram gerados 3 produtos parciais em vez de 4 na forma tradicional. A Figura 11 mostraa separação dos conjuntos de 3 bits do multiplicador, onde em cor cinza são os bits 0gerados para a codificação.

0010110

Figura 11 – Separação dos conjuntos de 3 bits do multiplicando

38 Capítulo 5. Desenvolvimento do Projeto

A Tabela 8 mostra a tabela verdade do codificador. Na tabela verdade o ZEROrepresenta a multiplicação por 0, ADD2 a multiplicação por 2 e NEG a multiplicação por-1, quando ADD2 e NEG forem 1, então a multiplicação será por -2.

Tabela 8 – Tabela verdade do codificador

codificação de 3 bits [2:0] 𝑍𝐸𝑅𝑂 𝐴𝐷𝐷2 𝑁𝐸𝐺 multiplicação000 1 0 0 ×0001 0 0 0 ×1010 0 0 0 ×1011 0 1 0 ×2100 0 1 1 ×(−2)101 0 0 1 ×(−1)110 0 0 1 ×(−1)111 1 0 0 ×0

As equações e os circuitos de ZERO, ADD2 e NEG são apresentados a seguir, pelaqual dentro do conjunto de 3 bits, o bit menos significativo é a entrada A, o bit do meio éo B e o bit menos significativo é o C. Com a saída Z de ZERO, D na de ADD2 e N paraNEG.

A equação booleana de ZERO é representado da seguinte maneira:

𝑍 = ((𝐴 + 𝐵) · 𝐶) + ((𝐴 · 𝐵) · 𝐶)

A figura 12 mostra o Circuito logico de ZERO.

ABC

Z

Figura 12 – Circuito logico de ZERO

A equação booleana de ADD2 é representado da seguinte maneira:

𝐷 = ((𝐴 · 𝐵) · 𝐶) + ((𝐴 · 𝐵) · 𝐶)

A figura 13 mostra o circuito logico de ADD2.

5.5. Geração dos Produtos Parciais 39

Figura 13 – Circuito lógico de ADD2

=A equação booleana de NEG é representado da seguinte maneira:

𝑁 = (𝐴 · 𝐵) + (𝐴 · 𝐶)

A figura 14 mostra o circuito de NEG.

Figura 14 – Circuito logico de NEG

Para que o produtos parciais possam obter os valores de acordo com o codificadorradix-4 booth, foi implementado os circuitos do multiplicando MU que passa primeiropelo circuito da multiplicação por -1, após isso verifica se é multiplicado por 2 e por fimse o produto parcial é 0.

5.5.1 Multiplicação por -1

Na multiplicação por -1, verifica se o valor de N é 1, se for, o resultado do multi-plicando será negativo, senão passa o valor normal do multiplicando, passando para o N𝑖,obténdo 1 bit a mais a esquerda, onde recebe o valor de N. A figura 15 mostra o circuitopara a geração e verificação do multiplicando para negativo, onde o tamanho da mantissaé de 4 bits e o resultado é 5 bits.

40 Capítulo 5. Desenvolvimento do Projeto

Figura 15 – Circuito para a geração e verificação do multiplicando em negativo

5.5.2 Multiplicação por 2

Com o resultado do N𝑖, verifica se D é 1, se sim, faz com que o resultado N𝑖 desloquepara a esquerda, onde o primeiro bit menos significativo recebe o valor 0, passando para oD𝑗. Assim gerando 6 bits. Quando D for 0, O resultado D𝑗 recebe mais um bit a esquerdacom o valor igual ao bit mais significativo de N𝑖. A figura 16 mostra a continuação daverificação e da multiplicação.

Figura 16 – Circuito para a geração e verificação do multiplicando por 2

5.5.3 Multiplicação por 0

Para a multiplicação por 0, verifica se Z é 1, caso for, o valor final é multiplicadopor 0, senão passa o valor de D𝑗 para o resultado do produto parcial. A figura 17 mostraa verificação e o resultado final para a mantissa 4 bits,

5.6. Soma dos Produtos Parciais 41

Figura 17 – Circuito para verificação e multiplicação por 0

5.6 Soma dos Produtos Parciais

O somador dos produtos parciais foi utilizado somadores com propagação de carry.A figura 18 mostra um somador dos produtos parciais com 6 bits de tamanho. O A𝑖B𝑗

são os produtos parciais, onde A𝑖 é o produto parcial 𝑖 gerado, e o B𝑗 o bit na posição 𝑗

de A𝑖. A primeira soma, soma o primeiro produto parcial com o segundo deslocado 2 bitspara a esquerda, pela qual o bit mais significativo é replicado para somar com os produtosparciais seguintes.

Figura 18 – Somadores dos produtos parciais de 6 bits

O resultado da soma da figura 18 gera 8 bits como saída, passando posteriormentepara a normalização.

5.7 Normalização e Truncamento

5.7.1 Normalização

Após obter o resultado da soma dos produtos parciais, verifica se o resultado finalestá normalizado ou não, para que possa saber se o resultado da soma está normalizado,verifica se no bit mais significativo do resultado é igual a 1, se for, desloca 1 bit o resultadopara a direita. A figura 19 mostra o circuito da normalização.

42 Capítulo 5. Desenvolvimento do Projeto

S3S4S5S6S7 S2 S1 S0

R3R4R5R6 R2 R1 R0

Figura 19 – Normalizador para multiplicação de 4 bits

No expoente, quando ocorre a normalização na mantissa, o resultado do somadordo expoente é incrementado. Quando o bit mais significativo do resultado da soma dosprodutos parciais é 1, ocorre a incrementação e quando o carry da ultima soma for 1, osinal de overflow é ativado, porém se o sinal de underflow estiver ativado, independentedo incremento, o overflow irá manter 0. O resultado final será o conjunto de bits E[7..0]

e o resultado de overflow e underflow. A figura 20 mostra o incremento do expoente deprecisão simples que s]ao compostos por meio somadores.

R0R1R2R3R4R5R6R7

FO

E6 E5 E4 E3 E2 E1 E0

in

FOout

S47

E7

FUin

FUout

Figura 20 – incremento no expoente e verificação de overflow

5.7.2 Truncamento

Após a normalização da mantissa, os bits extras são descartados obtendo os 23bits do resultado da mantissa.

43

6 RESULTADOS OBTIDOS

Este capítulo demonstrará os resultados obtidos, separando em etapas, descrevendo-os cada resultado. A simulação foi realizado no programa de circuitos digitais Proteus.

A Tabela 9 e 10 mostra 10 entradas para a simulação. O símbolo MUi é o multi-plicando e MDi o multiplicador. Cada tabela mostra a entrada em decimal e em pontoflutuante separando em sinal, expoente e mantissa.

Tabela 9 – Valores do multiplicando

Símbolo Multiplicando Sinal Expoente MantissaMU1 0 0 00000000 00000000000000000000000MU2 0 0 00000000 00000000000000000000000MU3 -365,15625 1 10000111 01101101001010000000000MU4 -365,15625 1 10000111 01101101001010000000000MU5 2100 0 11100011 00000000000000000000000MU6 −298 1 11100001 00000000000000000000000MU7 (298 + 297) 0 11100001 10000000000000000000000MU8 (298 + 297) 0 11100001 10000000000000000000000MU9 2(−63) + 2(−60) 0 01000000 00100000000000000000000MU10 −(2(−63) + 2(−60)) 1 01000000 00100000000000000000000

Tabela 10 – Valores do multiplicador

Símbolo Multiplicador Sinal Expoente MantissaMD1 2,5 0 10000000 01000000000000000000000MD2 -2,5 1 10000000 01000000000000000000000MD3 -7,18194580078125 1 10000001 11001011101001010000000MD4 7,18194580078125 0 10000001 11001011101001010000000MD5 1744830464 0 10011101 10100000000000000000000MD6 1744830464 0 10011101 10100000000000000000000MD7 1744830464 0 10011101 10100000000000000000000MD8 -1744830464 1 10011101 10100000000000000000000MD9 2(−67) + 2(−66) + 2(−64) 0 00111100 10100000000000000000000MD10 2(−67) + 2(−66) + 2(−64) 0 00111100 10100000000000000000000

6.1 Sinal da Multiplicação

A Tabela 11 mostra os resultados dos sinais entre MUi × MDi.

44 Capítulo 6. Resultados Obtidos

Tabela 11 – Resultado do Sinal

Multiplicação Sinal Multiplicação SinalMU1 × MD1 0 MU6 × MD6 1MU2 × MD2 1 MU7 × MD7 0MU3 × MD3 0 MU8 × MD8 1MU4 × MD4 1 MU9 × MD9 0MU5 × MD5 0 MU10 × MD10 1

6.2 Verificação da multiplicação por 0

A Tabela 12 mostra o resultado da verificação por 0. Na multiplicação de MU1× MD1 e MU2 × MD2, o sinal de Zero foi ativado, pois os expoentes e as mantissas deMU1 e MU2 são 0.

Tabela 12 – Resultados da verificação por 0

Multiplicação Zero Multiplicação ZeroMU1 × MD1 1 MU6 × MD6 0MU2 × MD2 1 MU7 × MD7 0MU3 × MD3 0 MU8 × MD8 0MU4 × MD4 0 MU9 × MD9 0MU5 × MD5 0 MU10 × MD10 0

6.3 Soma do Expoente e Subtração do 𝑏𝑖𝑎𝑠

A Tabela 13 mostra os resultados da soma do expoentes de MUi × MDi subtraídocom o bias e a verificação da ocorrência de overflow(OF) ou underflow(UF). Na multi-plicação MU5 × MD5, como o cálculo ficou maior que 255, ativando o sinal de overflow.E na multiplicação MU9 × MD9 e MU10 × MD10, ativou o underflow pois o cálculoresultou menor que 0.

Tabela 13 – Resultados da soma dos expoente com a subtração com o bias e a verificação de overflow eunderflow

Multiplicação Expoente OF UF Multiplicação Expoente OF UFMU1 × MD1 00000001 0 0 MU6 × MD6 11111111 0 0MU2 × MD2 00000001 0 0 MU7 × MD7 11111111 0 0MU3 × MD3 10001001 0 0 MU8 × MD8 11111111 0 0MU4 × MD4 10001001 0 0 MU9 × MD9 11111101 0 1MU5 × MD5 00000001 1 0 MU10 × MD10 11111101 0 1

6.4. Geração dos Produtos Parciais 45

6.4 Geração dos Produtos Parciais

Na geração dos produtos parciais, os possíveis resultados são mostrados na Tabela14. A multiplicação MU1 × MD1, MU2 × MD2,MU5 × MD5 e MU6 × MD6, como amantissa do multiplicando tem o mesmo valor, são gerados os mesmos possíveis produtosparciais. Enquanto entre MU3 × MD3 e MU4 × MD4, entre MU7 × MD7 e MU8 × MD8e entre MU9 × MD9 e MU10 × MD10 também tem os mesmos produtos possíveis. Oproduto parcial com multiplicação × 0 tem como resultado 0 pra todas as multiplicações.

Tabela 14 – Resultados da Multiplicação do multiplicando

Multiplicação Multiplicação do produto parcial Produto parcialMU1 × MD1 × 1 ...0000100000000000000000000000MU2 × MD2 × -1 ...1111100000000000000000000000MU5 × MD5 × 2 ...0001000000000000000000000000MU6 × MD6 × -2 ...1111000000000000000000000000

× 1 ...0000101101101001010000000000MU3 × MD3 × -1 ...1111010010010110110000000000

e × 2 ...0001011011010010100000000000MU4 × MD4 × -2 ...1110100100101101100000000000

× 1 ...0000110000000000000000000000MU7 × MD7 × -1 ...1111010000000000000000000000

e × 2 ...0001100000000000000000000000MU8 × MD8 × -2 ...1110100000000000000000000000

× 1 ...0000100100000000000000000000MU9 × MD9 × -1 ...1111011100000000000000000000

e × 2 ...0001001000000000000000000000MU10 × MD10 × -2 ...1110111000000000000000000000

A Tabela 15 mostra a multiplicação de cada produto parcial 𝑃𝑗 de acordo como codificador radix-4 Booth com as entradas da mantissa do MDi. Como a mantissa domultiplicador de algumas multiplicações tem o mesmo valor então são gerados os mesmosprodutos parciais.

46 Capítulo 6. Resultados Obtidos

Tabela 15 – Produtos Parciais

Multiplicação Produtos Parciais𝑃12 𝑃11 𝑃10 𝑃9 𝑃8 𝑃7 𝑃6

MU1 × MD1 ×1 ×(-1) ×(-2) ×0 ×0 ×0 ×0e 𝑃5 𝑃4 𝑃3 𝑃2 𝑃1 𝑃0

MU2 × MD2 ×0 ×0 ×0 ×0 ×0 ×0𝑃12 𝑃11 𝑃10 𝑃9 𝑃8 𝑃7 𝑃6

MU3 × MD3 ×1 ×0 ×(-2) ×1 ×2 ×(-1) ×1e 𝑃5 𝑃4 𝑃3 𝑃2 𝑃1 𝑃0

MU4 × MD4 ×1 ×(-1) ×(-2) ×0 ×0 ×0MU5 × MD5,MU6 × MD6 𝑃12 𝑃11 𝑃10 𝑃9 𝑃8 𝑃7 𝑃6MU7 × MD7, MU8 × MD8 ×1 ×(-1) ×1 ×0 ×0 ×0 ×0

MU9 × MD9, MU10 × MD10 𝑃5 𝑃4 𝑃3 𝑃2 𝑃1 𝑃0×0 ×0 ×0 ×0 ×0 ×0

6.5 Soma dos Produtos Parciais

Na soma dos produtos parciais, o somador com propagação de carry não simulou ocálculo pois ocorreu race condition1, impedindo a continuação da simulação. As seguintessimulações serão realizados com os resultados esperados da soma dos produtos parciais.A tabela 16 mostra o resultado da soma dos produtos parciais.

Tabela 16 – Resultados da soma dos Produtos parciais

Multiplicação SomaMU1 × MD1 010100000000000000000000000000000000000000000000MU2 × MD2 010100000000000000000000000000000000000000000000MU3 × MD3 101000111110100010000100101100100000000000000000MU4 × MD4 101000111110100010000100101100100000000000000000MU5 × MD5 011010000000000000000000000000000000000000000000MU6 × MD6 011010000000000000000000000000000000000000000000MU7 × MD7 100111000000000000000000000000000000000000000000MU8 × MD8 100111000000000000000000000000000000000000000000MU9 × MD9 011100000000000000000000000000000000000000000000

MU10 × MD10 011101010000000000000000000000000000000000000000

6.6 Normalização

A Tabela 17 mostra a verificação do incremento do expoente, quando o bit maissignificativo da soma do produto é 1, então incrementa o expoente e caso o carry do1 Condição que o resultado é dependente da sequencia ou da temporização de outros eventos não

controláveis

6.6. Normalização 47

expoente for 1 e o sinal underflow não está ativado, então ativa o sinal de overflow. namultiplicação MU7 × MD7 e MU8 × MD8 ocorre o overflow, ativando-o.

Tabela 17 – Incremento do expoente e verificação de Overflow

Multiplicação Bit mais significativo da soma Expoente Overflow UnderflowMU1 × MD1 0 00000001 0 0MU2 × MD2 0 00000001 0 0MU3 × MD3 1 10001010 0 0MU4 × MD4 1 10001010 0 0MU5 × MD5 0 00000001 1 0MU6 × MD6 0 11111111 0 0MU7 × MD7 1 00000000 1 0MU8 × MD8 1 00000000 1 0MU9 × MD9 0 11111101 0 1

MU10 × MD10 0 11111101 0 1

A Tabela 18 mostra a normalização da soma dos produtos parciais, quando o bitmais significativo da soma for 1, então desloca a soma p1 bit para direita, excluindo o bitmenos significativo. A multiplicação MU3 × MD3, MU4 × MD4, MU7 × MD7 e MU8×8 MD8 ocorre a normalização.

Tabela 18 – Resultados da normalização

Resultado normalizadoMU1 × MD1 10100000000000000000000000000000000000000000000MU2 × MD2 10100000000000000000000000000000000000000000000MU3 × MD3 10100011111010001000010010110010000000000000000MU4 × MD4 10100011111010001000010010110010000000000000000MU5 × MD5 11010000000000000000000000000000000000000000000MU6 × MD6 11010000000000000000000000000000000000000000000MU7 × MD7 10011100000000000000000000000000000000000000000MU8 × MD8 10011100000000000000000000000000000000000000000MU9 × MD9 11100000000000000000000000000000000000000000000

MU10 × MD10 11101010000000000000000000000000000000000000000

A Tabela 19 mostra o truncamento da soma normalizado, diminuindo de 47 bitspara 23 bits para a saída do resultado final da mantissa na multiplicação.

48 Capítulo 6. Resultados Obtidos

Tabela 19 – Resultados do truncamento

Multiplicação TruncamentoMU1 × MD1 01000000000000000000000MU2 × MD2 01000000000000000000000MU3 × MD3 01000111110100010000100MU4 × MD4 01000111110100010000100MU5 × MD5 10100000000000000000000MU6 × MD6 10100000000000000000000MU7 × MD7 00111000000000000000000MU8 × MD8 00111000000000000000000MU9 × MD9 11000000000000000000000

MU10 × MD10 11000000000000000000000

A Tabela 20 mostra os resultado final da multiplicação. As multiplicações MU1 ×MD1 e MU2 × MD2 tem como resultado 0, pois o sinal de Zero está ativado. A multipli-cação MU3 × MD3 e MU4 × MD4 resultaram números normalizados 2622,5322265625e -2622,532265625 respectivamente. As multiplicações MU5 × MD5, MU7 × MD7 re-sultaram +∞ e MU8 × MD8 −∞, pois o sinal de Overflow está ativado. Em MU6 ×MD6 como o expoente é igual a 255 e a mantissa diferente de 0, então o resultado re-torna como -NaN. As multiplicações MU9 × MD9 e MU10 × MD10 retornam +0 e -0respectivamente, pois o sinal Underflow está ativado.

Tabela 20 – Resultados da Multiplicação

Multiplicação Sinal Expoente Mantissa Zero Overflow UnderflowMU1 × MD1 0 00000000 01000000000000000000000 1 0 0MU2 × MD2 1 00000000 01000000000000000000000 1 0 0MU3 × MD3 0 10001010 01000111110100010000100 0 0 0MU4 × MD4 1 10001010 01000111110100010000100 0 0 0MU5 × MD5 0 00000001 10100000000000000000000 0 1 0MU6 × MD6 1 11111111 10100000000000000000000 0 0 0MU7 × MD7 0 00000000 00111000000000000000000 0 1 0MU8 × MD8 1 00000000 00111000000000000000000 0 1 0MU9 × MD9 0 11111101 11000000000000000000000 0 0 1

MU10 × MD10 1 11111101 11000000000000000000000 0 0 1

49

7 CONCLUSÃO E TRABALHOS FUTUROS

A modelagem e a implementação do multiplicador obteve resultados satisfatórios.A soma dos expoente com os subtratores melhorado [1] e a geração dos produtos parciaiscom menor quantidade de produtos parciais através do codificador Radix-4 Booth [2] mos-trou ter bons resultados para a multiplicação em ponto flutuante. Devido ao problemaconhecido como Racing Condition, uma condição de saída que é dependente de outroseventos não controláveis, foi verificado a ocorrência dessa peculiaridade durante o pro-cesso das somas parciais, causando o erro do cálculo. Por motivos de validação científicado método, os cálculos desta etapa foram feitos manualmente, obtendo resultados satisfa-tórios. Todavia, foi descoberto que o problema verificado pode ser solucionado utilizandoa metodologia de um compressor 4:2 [2].

Para melhorar a modelagem do multiplicador, poderia ser efetuada a inclusão dosistema em pipeline implementando no VHDL e o aprimoramento da soma dos produtosparciais utilizando o compressor 4:2 [2] como substituto do somador com propagação decarry, aumentando o desempenho e possibilitando simular em uma FPGA.

51

REFERÊNCIAS

1 AL-ASHRAFY, M.; SALEM, A.; ANIS, W. An efficient implementation offloating point multiplier. 2011 Saudi International Electronics, Communicationsand Photonics Conference (SIECPC), Ieee, p. 1–5, abr. 2011. Disponível em:<http://ieeexplore.ieee.org/lpdocs/epic03/wrapper.htm?arnumber=5876905>.

2 RENXI, G.; SHANGJUN, Z. Hardware implementation of a high speed floatingpoint multiplier based on FPGA. In: 2009 4th International Conference on ComputerScience & Education. IEEE, 2009. p. 1902–1906. ISBN 978-1-4244-3520-3. Disponívelem: <http://www.ieeexplore.ieee.org/lpdocs/epic03/wrapper.htm?arnumber=5228240>.

3 DEFENSE, P. Software Problem Led to System Failure at Dhahran, SaudiArabia. US GAO Reports, report no. GAO/IMTEC-92-26, 1992. Disponível em:<http://www.gao.gov/assets/220/215614.pdf>.

4 FOUSSE, L.; HANROT, G.; LEFèVRE, V. MPFR: A multiple-precision binaryfloating-point library with correct rounding. ACM Transactions ..., 2007. Disponívelem: <http://dl.acm.org/citation.cfm?id=1236463.1236468 http://dl.acm.org/citation-.cfm?id=1236468>.

5 DOU, Y. et al. FPGA accelerating double/quad-double high precision floating-pointapplications for ExaScale computing. Proceedings of the 24th . . . , p. 325–335, 2010.Disponível em: <http://dl.acm.org/citation.cfm?id=1810129>.

6 MULTIPLIER, F. LOW POWER PROBABILISTIC FLOATING POINTMULTIPLIER DESIGN. codesign.ece.gatech.edu, 2011. Disponível em: <http:/-/codesign.ece.gatech.edu/publications/aman/presentation/isvlsi\ 2011ppt.pdf>.

7 STANDARDS, M.; SOCIETY, C. IEEE Std 754-2008 (Revision of IEEE Std 754-1985), IEEE Standard for Floating-Point Arithmetic. v. 2008, n. August, 2008. Disponívelem: <http://www.ieeexplore.ieee.org/xpl/mostRecentIssue.jsp?punumber=4610933>.

8 PATTERSON, D. A.; HENNESSY, J. L. Computer Organization and Design: TheHardware/software Interface. 3. ed. [S.l.]: Morgan Kaufmann, 2007. 621 p.

9 STALLINGS, W. Arquitetura e Organização de Computadores: Projeto para oDesempenho. 5. ed. [S.l.]: Prentice Hall, 2003.

10 GANESH, B.; ABHILASH, J.; KUMAR, G. Design and Implementation of FloatingPoint Multiplier for Better Timing Performance. International Journal of Advanced. . . , v. 1, n. 7, p. 130–136, 2012. Disponível em: <http://ijarcet.org/index.php/ijarcet-/article/view/384>.

11 PAIVA, L. C. Desenvolvimento de um Multiplicador de Ponto Flutuante. 50 p. Tese(Doutorado) — Universidade Estadual Paulista, 2005.

12 BRAZIL-IP. Brazil-IP. 2009. Disponível em: <http://www.brazilip.org.br/>.

52 Referências

13 JAISWAL, M. K.; CHANDRACHOODAN, N. Efficient Implementation of IEEEDouble Precision Floating-Point Multiplier on FPGA. . . . , 2008. ICIIS 2008. IEEE . . . ,n. 266, p. 8–11, 2008. Disponível em: <http://www.ieeexplore.ieee.org/xpls/abs\ all-.jsp?arnumber=4798393>.

14 TOCCI, R. J.; WIDMER, N. S.; MOSS, G. L. Sistemas Digitais: princípios eaplicações. 10. ed. São Paulo: Prentice Hall, 2007.