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.