Aritmética de Ponto Fixo Prof. Paulo Fernando Seixas Prof. Marcos Antônio Severo Mendes http://www.delt.ufmg.br/~elt/docs/dsp/ Representação Numérica DSP Ponto fixo Ponto flutuante 6 bits 3 bits 0 bits 3 bits IEEE 757 Outros (TI)
Números Binários Conversão Binário - Decimal 7 6 5 4 3 0 0 0 0 0 0 0 6 3 x + x = 7 Conversão Decimal - Binário Números Binários 54 0 7 54 = 00 b 3 6 0 3
Representação de Inteiros Números inteiros em complemento de dois Bit de sinal 0 0 0 0-7 6 5 4 3 0 Exemplos: 0000 b = 6 + 4 + + 0 = 83 000 b = - 7 + 5 + 3 + + 0 = - 83
Complemento de Dois Método 000 000 b + 7 0 0 0000 000 0 000 Complemento de + -7 Complemento de Dois Método 000 000 + 7 Inverter os bits após o primeiro menos significativo: 000 000 0 000 b -7
Números Fracionários Notação Q.n Bit de sinal 0 0 0 0 Exemplos: - 0 - - -3-4 -5 00.0 b = - + - + - + -4 + -5 = - 3,565 = 000.0 b = 3 + + - + -3 = 0,375= -0 5 83 3 Representação Q.n mais precisa Deseja-se representar o número real X em uma palavra de b bits, então: b n b X Então, a representação que assegura melhor precisão é: n = log floor ( b log 0 X 0 )
Soma em notação Q.n A = 5,375 em Q.3 B =,875 em Q.4 A = 0.0 b B =.0 b Calcular Y = A + B Os números devem estar na mesma notação Q.n + 00.00 Q.4 000.0 Q.4 0.000 Q.4 Y = 7,5 em Q.4 Subtração em ponto fixo 0.0000 b = 3.5 em Q.5-0.0 b = 0,5 em Q. Os números devem estar na mesma notação Q.n 0.0000 b = 3.5 em Q.5 +.0000 b = - 0,5 em Q.5 00.000 b =,65 em Q.5
Multiplicação em ponto fixo Notação Q.n 0.00000000000000 b = 0,5 em Q.5 x 0.00000000000000 b = 0,5 em Q.5 00.0000000000000 0000000000000000 b = 0,5 em Q.30 Operação na base 0: 6.384 x 6.384 68435456 68435456 30 = 0,5 Exemplo 0.0000 b = 3.5 em Q.5 x 0.000000 b = 0,5 em Q.7 000.0000000000 b =,565 em Q. Operação na base 0: 00 x 64 6400 6400 =,565
Divisão binária 00000 0-0 0 000-0 0-0 Quociente: 0 b Resto: b Base 0: 73 5 3 4 Subtração Condicional Alinhar o LSB do divisor com o MSB do dividendo 00000000 00000 0 0000 00000000 00000 0 000000 Se o resultado for negativo despreze-o, desloque o dividendo à esquerda e tente novamente. 3 resultado negativo, tente novamente. 0000000 000000 0 000000 0000000 000000 00000 4 resultado negativo, tente novamente.
5 Resultado Positivo. desloque-o, some e substitua o minuendo 0000000 000000 0000000 0000000 6 0000000 000000 0000000 00000 Resultado Positivo. 8 0000000 0000 00000 Resultado negativo. 7 000000 00000 00000000 0000 Resultado Positivo. Resultado: 000000 00000 Quociente: 0 b Resto: b Cálculo de Funções em Ponto Fixo Look-up table Interpolação linear Série polinomial Algoritmos específicos
Look-up Table Tabela y = sen(x) k ) Exemplo: sen ( k N Calcular: 0 sen( 0) N sen( ) N x N k = arredonda ( ) sen( ) N...... y ˆ = tabela ( k )...... N-...... sen( ( N )) N Interpolação Linear Exemplo: y = f (x) y=f(x) Calcular: k + d x N = ( ) k parte inteira d parte fracionária k k+ x yˆ = tabela( k) + d [ tabela( k + ) tabela( k)]
Função seno sen(x) = 3,4065x + 0,006367x -5,3596x 3 + 0,5446778x 4 +,80093x 5 0 x 0.5 corresponde a ângulos entre 0 e 90 o Função raiz quadrada sqrt(x) =,454895x -,3449x +,068x 3 0,536499x 4 + 0,6x 5 + 0,075806 0,5 x Função Arco tangente Para 0 x : arctan(x) = 0,3853x +0,00334x +-0,30908x 3 +0,06854x 4-0,00959x 5 Para x > : arctan( x) = 0,5 arctan( ) x Para x < 0: arctan( x) = arctan( x) Resultado: arctan(x) entre ± corresponde a ± 80 0
0 x < k = 5; guess = /; t = /; raiz = 0; n x</64? s k = ; guess = /6; t = /6; raiz = 0; s x - t 0? raiz = t; n guess = guess/; t = raiz + guess; k = k-; n k = 0? Algoritmo de raiz quadrada FIM Gerador de Sequência pseudo aleatória x( k + ) = [ a x( k ) + c] mod m Onde: a = 66455 c = 3767 m = 3 Propriedades: densidade uniforme entre 0 e m período = m
Números em Ponto Flutuante Formato IEEE precisão simples: S v = ( ) ( E 7 ). F sinal bit 3 30 3 0 S E F expoente 8 bits mantissa 3 bits Exemplo: 000000 000000000000000000000-9 0,375.375 (9 7) = 5,500 Comparação entre DSPs de ponto fixo e ponto flutuante Ponto fixo tem baixo custo; Ponto flutuante tem: maior gama dinâmica e precisão ; 38 Precisão símples: ± 6.8x0 e ± 5.9x0 circuito mais complexo, maior dimensão; Maior custo ( a 3 vezes mais caros); Menor tempo de desenvolvimento; 39