laboratório 4

27
1 Saulo O. D. Luiz Laboratório 4 Sistemas embarcados Período 2010.2

Upload: aleta

Post on 12-Jan-2016

20 views

Category:

Documents


0 download

DESCRIPTION

Laboratório 4. Sistemas embarcados Período 2010.2. Roteiro. Representação numérica em ponto-flutuante Projeto de um filtro digital usando aritmética de ponto-flutuante Aritmética de ponto-fixo Projeto de um filtro digital usando aritmética de ponto-fixo. Objetivo. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Laboratório 4

1 Saulo O. D. Luiz

Laboratório 4

Sistemas embarcados

Período 2010.2

Page 2: Laboratório 4

2 Saulo O. D. Luiz

Roteiro

• Representação numérica em ponto-flutuante

• Projeto de um filtro digital usando aritmética de ponto-flutuante

• Aritmética de ponto-fixo• Projeto de um filtro digital usando

aritmética de ponto-fixo

Page 3: Laboratório 4

3 Saulo O. D. Luiz

Objetivo

• Projetar e implementar um filtro digital para áudio em C para Linux Embarcado no core ARM da plataforma OMAP 161x.

Page 4: Laboratório 4

4 Saulo O. D. Luiz

Metodologia de Desenvolvimento

Formulação Matemática da Aplicação

Projeto e verificação do Algoritmo numa linguagem de alto nível, e.g. MatLab, em ponto-flutuante e ponto-fixo

Implementação em C em ponto-flutuante para PC, e.g. gcc

Implementação em C em ponto-fixo para PC, e.g., gcc

Cross-compilação para ARM, e.g. Scratchbox

Page 5: Laboratório 4

5 Saulo O. D. Luiz

Ponto-flutuante

• Padrão IEEE 754 para Floats: Sinal: 0 = + e 1 = - Combinações Sinal + Expoente + Significando

Page 6: Laboratório 4

6 Saulo O. D. Luiz

Filtro Butterworth em ponto-flutuante

• Especificação:

– Frequência de corte: 300 Hz = 2*π*300 rad/s = 1885 rad/s

– Passa-altas

– 2ª ordem

Page 7: Laboratório 4

7 Saulo O. D. Luiz

Filtro Butterworth em ponto-flutuante

• Encontrando a função de transferência:– Na linha de comando:

• [num,den] = butter(ordem,2*pi*fc,'high','s');

• Informações sobre o algoritmo:

– Help do Matlab: Signal Processing Toolbox: butter

– No Simulink:

• DSP blockset / Filtering / Filter Designs

Page 8: Laboratório 4

8 Saulo O. D. Luiz

Filtro Butterworth em ponto-flutuante

• Encontrando a função de transferência:– Na linha de comando:

• filtro_continuo = tf(num,den)

s^2-------------------------------s^2 + 2666 s + 3.553e06

Page 9: Laboratório 4

9 Saulo O. D. Luiz

Aproximando funções de transferência (FT) contínuas

• Aproximação de Tustin: Uma FT discreta H(z) pode ser obtida repondo o argumento s na FT contínua G(s) por s'

onde h é o período de amostragem.

• Assim H(z) = G(s')

Page 10: Laboratório 4

10 Saulo O. D. Luiz

Filtro Butterworth em ponto-flutuante• filtro_discreto = c2d(filtro_continuo,Ta,'tustin')

0.8471 z^2 - 1.694 z + 0.8471

---------------------------------------

z^2 - 1.671 z + 0.7177

Sampling time: 0.000125

• [numd,dend]=tfdata(filtro_discreto,'v')

numd = [ 0.8471 -1.6942 0.8471 ]

dend = [1.0000 -1.6707 0.7177 ]

Page 11: Laboratório 4

11 Saulo O. D. Luiz

Filtro Butterworth em ponto-flutuante

• Simulação:– Na linha de comando:

• [yc,t] = lsim(filtro_continuo,u,t);

• [yd,t] = lsim(filtro_discreto,u,t);

– No simulink:

Page 12: Laboratório 4

12 Saulo O. D. Luiz

Aritmética de ponto-fixo

Page 13: Laboratório 4

13 Saulo O. D. Luiz

Aritmética de ponto-fixo

• Mudando de Expoente

Page 14: Laboratório 4

14 Saulo O. D. Luiz

Aritmética de ponto-fixo

• Adição e Subtração

Obs: Se os expoentes são diferentes a conversão para mesmo

expoente deve ser feita antes da adição ou subtração.

Page 15: Laboratório 4

15 Saulo O. D. Luiz

Aritmética de ponto-fixo

• Multiplicação

Para converter a resposta para o expoente r devemos efetuar um

deslocamento como descrito abaixo:

Exemplo: se p + q >= r :

Page 16: Laboratório 4

16 Saulo O. D. Luiz

Aritmética de ponto-fixo

• Divisão

Para não perder precisão devemos efetuar a multiplicação por

antes da divisão por m.• Exemplo: se

Page 17: Laboratório 4

17 Saulo O. D. Luiz

Aritmética de ponto-fixo

• Raiz Quadrada

Page 18: Laboratório 4

18 Saulo O. D. Luiz

Aritmética de ponto-fixo

• Conversão de ponto-flutuante para ponto-

fixo

N max=2q⋅x

log 2 N max =q+ log2 x q= log 2 N max − log2 x

Page 19: Laboratório 4

19 Saulo O. D. Luiz

Aritmética de ponto-fixo

• Exemplo:

– Para x1 = 0.001d

– q1=log2(32767)-log2(.001)

– q1 = 24.9657 => q1 = 24

– floor(x1*2^24)

– x1 = 16777d => 4189h

Page 20: Laboratório 4

20 Saulo O. D. Luiz

Aritmética de ponto-fixo

– para x2 =7.12d

– q2 =log2(32767)-log2(7.12)

– q2 = 12.1681 => q2 = 12

– floor(x2*2^12)

– x2d =29163 => 71EBh

Page 21: Laboratório 4

21 Saulo O. D. Luiz

Aritmética de ponto-fixo

• logo

• x3 = x1*x2 => q3 = q1+q2 = 36

• x3 = 489267651d = 1D29A1C3h

• se sabemos que esse número é representado corretamente em Q22

fazemos:

• x3(Q22) = floor(x3/2^(36-22))

• x3(Q22) = 29862d = 74A6h e podemos armazená-lo na memória.

• Para provar que o procedimento está correto fazemos:

• Resultado esperado = x3(Q22)/2^22 = 0.00711965560913

Page 22: Laboratório 4

22 Saulo O. D. Luiz

Filtro Butterworth em ponto-fixo%qu = floor(log2(2^15 - 1)-log2(1)) = 14

ud=floor(u*2^14);

%Do filtro projetado anteriormente:

numd = [0.8471 -1.6942 0.8471];

dend = [1.0000 -1.6707 0.7177];

%(q para num e den) = floor(log2(2^15 - 1)-log2(2)) = 13

numd = round(numd*2^13);

dend = round(dend*2^13);

Page 23: Laboratório 4

23 Saulo O. D. Luiz

Filtro Butterworth em ponto-fixo

• Equação de recorrência

Page 24: Laboratório 4

24 Saulo O. D. Luiz

Filtro Butterworth em ponto-fixo

%yd(k)/ud(k) = nund(q)/dend(q) => yd(k)dend(q) = ud(k)dend(q)

for k=10:length(t)

%Q13 * Q14 = Q27

yd(k) = -1*( dend(2)*yd(k-1) + dend(3)*yd(k-2)) + numd(1)*ud(k) + numd(2)*ud(k-1) + numd(3)*ud(k-2);

%Q27 >> 13 = Q14

yd(k) = round(yd(k)/2^13);

end

Page 25: Laboratório 4

25 Saulo O. D. Luiz

Filtro Butterworth em ponto-fixo

• No Simulink:

Page 26: Laboratório 4

26 Saulo O. D. Luiz

Exemplo

Page 27: Laboratório 4

27 Saulo O. D. Luiz

Sugestão de experimento

• Repita o projeto do filtro do exemplo, dessa vez usando ´zoh´ como método de discretização. Como a função de transferência em tempo discreto é alterada?

• Projete um filtro passa-baixas de nona ordem usando a metodologia proposta.