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.