A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Laboratório 4 Sistemas embarcados Período 2010.2.

Apresentações semelhantes


Apresentação em tema: "Laboratório 4 Sistemas embarcados Período 2010.2."— Transcrição da apresentação:

1 Laboratório 4 Sistemas embarcados Período

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

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

4 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

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

6 Filtro Butterworth em ponto-flutuante
Especificação: Frequência de corte: 300 Hz = 2*π*300 rad/s = 1885 rad/s Passa-altas 2ª ordem

7 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

8 Filtro Butterworth em ponto-flutuante
Encontrando a função de transferência: Na linha de comando: filtro_continuo = tf(num,den) s^2 s^ s e06

9 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')

10 Filtro Butterworth em ponto-flutuante
filtro_discreto = c2d(filtro_continuo,Ta,'tustin') z^ z z^ z Sampling time: [numd,dend]=tfdata(filtro_discreto,'v') numd = [ ] dend = [ ]

11 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:

12 Aritmética de ponto-fixo

13 Aritmética de ponto-fixo
Mudando de Expoente

14 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.

15 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 :

16 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

17 Aritmética de ponto-fixo
Raiz Quadrada

18 Aritmética de ponto-fixo
Conversão de ponto-flutuante para ponto- fixo

19 Aritmética de ponto-fixo
Exemplo: Para x1 = 0.001d q1=log2(32767)-log2(.001) q1 = => q1 = 24 floor(x1*2^24) x1 = 16777d => 4189h

20 Aritmética de ponto-fixo
para x2 =7.12d q2 =log2(32767)-log2(7.12) q2 = => q2 = 12 floor(x2*2^12) x2d =29163 => 71EBh

21 Aritmética de ponto-fixo
logo x3 = x1*x2 => q3 = q1+q2 = 36 x3 = d = 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 =

22 Filtro Butterworth em ponto-fixo
%qu = floor(log2(2^15 - 1)-log2(1)) = 14 ud=floor(u*2^14); %Do filtro projetado anteriormente: numd = [ ]; dend = [ ]; %(q para num e den) = floor(log2(2^15 - 1)-log2(2)) = 13 numd = round(numd*2^13); dend = round(dend*2^13);

23 Filtro Butterworth em ponto-fixo
Equação de recorrência

24 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

25 Filtro Butterworth em ponto-fixo
No Simulink:

26 Exemplo

27 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.


Carregar ppt "Laboratório 4 Sistemas embarcados Período 2010.2."

Apresentações semelhantes


Anúncios Google