• Nenhum resultado encontrado

Premissas do Desenvolvimento do Projeto

No documento 2010.2Relatorio TCC Versao DEFESA V1 (páginas 39-45)

3 METODOLOGIA DE DESENVOLVIMENTO DO PROJETO

4.1 Premissas do Desenvolvimento do Projeto

Neste tópico serão descritos as soluções definidas para os problemas encontrados durante o desenvolvimento do projeto.

4.1.1 Utilização do Dígito de Guarda no Somador/Subtrator da Unidade Aritmética de Ponto Flutuante

A partir do desenvolvimento do sub-módulo Gerador de Coeficientes da Janela Seno, foram realizados os primeiros testes com objetivo de identificar possíveis problemas durante a geração de coeficientes da janela seno.

Como foi apresentado no tópico 2.5.1, o erro de arredondamento é inerente quando se realizam cálculos com números representados em ponto flutuante. Esse fato pôde ser percebido durante a realização dos testes no Gerador de Coeficientes da Janela Seno. Sem o uso do Dígito de Guarda as margens dos erros entre os coeficientes ideais e os coeficientes gerados, ocasionados durante a soma/subtração realizada no cálculo de interpolação para a obtenção dos coeficientes, apresentaram-se acima do nível de erro aceitável.

Figura 13: Análise de erros - Geração dos 256 coeficientes da Janela s/ o Dígito de Guarda (Próprio autor)

Na Figura 13 é possível perceber que as margens de erros entre os coeficientes ideais e os coeficientes gerados estão relativamente altas. A margem de erro máxima é de 2,644% aproximadamente. A média de erro analisando todos os coeficientes em conjunto é de 1,2172%.

Como foi explicado no tópico 2.5.3 existem limitações quando se utiliza a representação de números em ponto flutuante. Baseado no tópico 3.3 tem-se que a mantissa possui 10 bits para sua representação, o que ocasiona o seguinte problema:

Tem-se que,

X = 0,866071764639229 (36)

Y = 0,004061654094695 (37)

X representado em ponto flutuante de 16 bits = 0011101011101101 (38)

Y representado em ponto flutuante de 16 bits = 0001110000101000 (39)

mantissa de X = 1011101101 (40)

mantissa de Y = 0000101000 (41)

O expoente de X = 01110 (42)

O expoente de Y = 00111 (43)

Na equação 42 tem-se que o expoente de X em decimal é igual a 14 e na equação 43 tem-se que o expoente de Y é igual a 7. Como será apresentado no tópico 4.2.3.2, após a

verificação do maior expoente, ocorre uma subtração entre os expoentes. O resultado da subtração dos expoentes é a quantidade de deslocamentos de casas do menor número. Então, tem-se que:

A subtração entre o expoente representado na equação 42 e o expoente representado na equação 43 é igual a:

Expoente de X – Expoente de Y = 7 (44)

Após a subtração dos expoentes, a mantissa de Y é deslocada em 7 casas, pois é o resultado da subtração efetuada anteriormente.

mantissa de Y (deslocada) = 000000010000101000 (45)

Na equação 45 além do deslocamento da mantissa, tem-se a concatenação do bit 1 (bit escondido) antes do bit mais significativo da mantissa. Como a mantissa é representada apenas por 10 bits, alguns bits serão perdidos como pode ser visto na equação (46):

mantissa de Y (truncada) = 0000000100 (46)

A partir dessas informações, percebe-se que alguns bits foram perdidos. Na equação 47 tem-se o resultado da soma entre os números reais sem o erro de truncamento.

X + Y = 0,8701334187 (47)

Na equação 48 tem-se o resultado da soma entre os números reais com o erro de truncamento.

X + Y = 0,8696289063 (48)

Esses resultados determinam que a margem de erro sempre está aumentando caso somas/subtrações sucessivas sejam efetuadas. Esse fato pode ser confirmado analisando a Figura 13.

Para diminuir os efeitos do erro de truncamento nas somas/subtrações foi adotada a estratégia do Dígito de Guarda, explicada no tópico 2.5.3.

Figura 14: Análise de erros - Geração dos 256 coeficientes da Janela c/ o Dígito de Guarda (Próprio autor)

Na Figura 14 é possível perceber que as margens de erros entre os coeficientes ideais e os coeficientes gerados estão abaixo de 1%, um nível aceitável. A margem de erro máxima é de 3,948% aproximadamente devido a um único coeficiente; este problema será tratado no próximo tópico. Mas, a média de erro analisando todos os coeficientes em conjunto é de 0,1957 %.

4.1.2 Estratégia de Inserção de Erros e Coeficientes Previamente Conhecidos

Durante o desenvolvimento do sub-módulo Gerador de Coeficientes da Janela Seno foram realizados vários testes a fim de determinar o número de coeficientes pré-armazenados que seriam utilizados na interpolação. Um dos objetivos do projeto é conseguir armazenar a menor quantidade de coeficientes possíveis e obter os 256/2048 coeficientes da janela seno com uma margem de erro menor que 1%. Para o caso da janela de 256 coeficientes, 35 coeficientes foram utilizados para reconstruir a janela com a margem de erro menor que 1% e para o caso da janela de 2048 coeficientes foram utilizados 90 coeficientes.

Como o algoritmo de interpolação utilizado no projeto é o linear, na geração dos coeficientes da janela seno, obteve-se o seguinte problema:

Alguns coeficientes da janela que são consecutivos têm valores que diferem bastante uns dos outros. Para valores próximos e que seguem um padrão linear, claramente o erro cometido pela interpolação linear será menor. Portanto, alguns coeficientes que são consecutivos, mas que diferem bastante de um valor para o outro e não seguem um padrão linear, ocasionarão um aumento no erro cometido pela interpolação. A solução encontrada para este problema foi inserir o coeficiente previamente conhecido (coeficientes ideais da janela seno gerados no MATLAB), desconsiderando o coeficiente obtido pela interpolação. O problema de inserir coeficientes previamente conhecidos é que se tem o aumento no número de coeficientes pré-armazenados, porém é mais vantajoso, pois o erro torna-se menor.

Outro problema surgiu devido à limitação da representação dos números reais em ponto flutuante utilizando 16 bits. Sabe-se que o menor número positivo representável em ponto flutuante com 16 bits é igual a 0,0000305474. Alguns coeficientes que seriam pré- armazenados possuem um valor que não pode ser representado com 16 bits, por exemplo, o valor 0,0000176473. Então, o algoritmo de conversão automaticamente aproxima os números que não podem ser representados com 16 bits para 0. A solução para esse problema pôde ser resolvida a partir da inserção dos coeficientes previamente conhecidos. Porém, as regiões afetadas por esse problema têm os valores dos coeficientes consecutivos muito próximos possibilitando a inserção do mesmo coeficiente previamente conhecido, em vários lugares.

Para o caso da janela de 256 coeficientes foram inseridos 2 coeficientes e para o caso da janela de 2048 coeficientes foram inseridos 25 coeficientes.

A estratégia da inserção de erros funciona da seguinte forma, baseando-se na margem de erro permitida entre o valor de um coeficiente ideal e um coeficiente gerado que é de 1% para mais ou para menos, tem-se a possibilidade de administrar a margem de erro entre determinado intervalo.

Por exemplo, para a janela de 2048 coeficientes, quando o segundo coeficiente pré- armazenado é utilizado para a realização dos cálculos da interpolação, o mesmo é utilizado 32 vezes; então se pode afirmar que o segundo coeficiente pré-armazenado participa da geração do 2º coeficiente até o 33º coeficiente. Os primeiros coeficientes gerados têm uma margem de erro menor quando comparados com os coeficientes ideais, porém a margem de erro vai aumentando durante os cálculos da interpolação dos coeficientes seguintes. Portanto, para exemplificar, o problema que ocorre é o seguinte:

 Do 2º coeficiente até o 30º coeficiente a margem de erro não passa de 1%, mas do 31º coeficiente até o 33º coeficiente (que é o último coeficiente gerado a partir do segundo coeficiente pré-armazenado) tem-se uma margem de erro que ultrapassa 1%.

Para resolver esse problema foi observado o seguinte:

 A margem de erro do 1º coeficiente não estava muito próxima de 1%, por exemplo, estava em 0,6%. A partir disso, foi inserido um erro no valor do segundo coeficiente pré-armazenado a fim de aproximar a margem de erro do 1º coeficiente para o valor mais próximo de 1%, mas sem ultrapassar essa margem. Este procedimento implica na variação da margem de erro dos coeficientes seguintes. Por exemplo, com a inserção do erro a margem de erro do 1º coeficiente passou a ser de 0,97%. A partir das somas para obtenção dos coeficientes seguintes, devido ao erro de truncamento, o valor do coeficiente gerado vai se tornando menor do que o valor do coeficiente ideal. Em resumo, com esse procedimento a margem de erro do 31º coeficiente até o 33º coeficiente não ultrapassa a margem de erro de 1%, como ocorria anteriormente.

O problema dessa estratégia é que outras inserções de erros acontecerão, pois como foi dito anteriormente a variação da margem de erro se propaga na geração dos coeficientes seguintes, portanto, a inserção do erro deve ser administrada em determinados locais.

4.1.3 Utilização do Algoritmo de Interpolação Linear no Projeto

Neste projeto o algoritmo de interpolação linear foi desenvolvido, de modo que, com apenas um número reduzido de coeficientes fosse possível reconstruir a janela seno de tamanho 256 ou 2048.

Alguns métodos numéricos de interpolação foram apresentados no tópico 2.4.1, mas a definição de qual método utilizar no projeto não foi explicada.

A explicação para tal decisão de projeto é baseada nas restrições do projeto. Algumas das restrições do projeto são:

 Um coeficiente gerado por interpolação deve ter uma margem de erro menor que 1% quando comparado ao seu correspondente coeficiente ideal do modelo de referência.

 A quantidade de operações realizadas pelo algoritmo de interpolação deve ser a menor possível, pois quanto maior o número de operações maior o tempo de processamento.

 A quantidade de tipos de operações realizadas deve ser a menor possível, por exemplo, um módulo que contém um somador apenas, ocupa uma área menor e gasta menos recursos do que um módulo composto por um somador, um multiplicador e um divisor.

Portanto, através de testes e estudos desenvolvidos percebeu-se que o algoritmo de interpolação linear atende as restrições do projeto, pois as margens de erro entre os coeficientes gerados e os ideais permaneceram menores que 1%. A quantidade de operações e tipos de operações também é menor, reduzindo o gasto com processamento e área.

Na Figura 15 é apresentado um quadro comparativo, analisando a complexidade dos algoritmos de interpolação descritos no tópico 2.4.1.

Figura 15: Quadro comparativo analisando a complexidade dos algoritmos de interpolação (Próprio autor)

No documento 2010.2Relatorio TCC Versao DEFESA V1 (páginas 39-45)

Documentos relacionados