Mudanças entre as edições de "PSD29007-Engtelecom(2019-1) - Prof. Marcos Moecke"
(→ATUAL) |
|||
(56 revisões intermediárias por 2 usuários não estão sendo mostradas) | |||
Linha 1: | Linha 1: | ||
==Registro on-line das aulas== | ==Registro on-line das aulas== | ||
− | {{collapse top | | + | {{collapse top | Unidade 1}} |
===Unidade 1=== | ===Unidade 1=== | ||
Linha 81: | Linha 81: | ||
{{collapse bottom}} | {{collapse bottom}} | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
:* Amostragem de Sinais (Experimento 1.2) | :* Amostragem de Sinais (Experimento 1.2) | ||
::* Relembrar teorema da amostragem. Efeito da amostragem abaixo da frequência de Nyquist. Aliasing. | ::* Relembrar teorema da amostragem. Efeito da amostragem abaixo da frequência de Nyquist. Aliasing. | ||
Linha 118: | Linha 111: | ||
{{collapse bottom}} | {{collapse bottom}} | ||
+ | :'''DICAS:''' | ||
+ | *No help on-line da Matworks, usando o botão ['''Try This Example > Try in your browser'''], permite executar o código no próprio browser sem ter nenhuma instalação do Matlab. Para verificar que o código realmente é executado mude a amplitude do ruído randômico para 0.1 ou 0.5, insira o comando '''close all''' antes da primeira linha, e execute todo o código ['''Run All'''] | ||
+ | *No help do Matlab, usando o botão ['''Open this Example'''], é possível executar o código seção a seção. | ||
+ | |||
+ | |||
+ | ;Aula 3 (20 fev): | ||
*Revisão de Sinais e Sistemas no tempo discreto em Matlab: | *Revisão de Sinais e Sistemas no tempo discreto em Matlab: | ||
:* Filtragem de Sinais (Experimentos 1.3, 2.1 e 2.2) | :* Filtragem de Sinais (Experimentos 1.3, 2.1 e 2.2) | ||
Linha 171: | Linha 170: | ||
:*Ver também [http://www.mathworks.com/help/releases/R2014a/pdf_doc/matlab/index.html PDF Documentation for MATLAB]. Principalmente [http://www.mathworks.com/help/releases/R2014a/pdf_doc/matlab/getstart.pdf MATLAB Primer]. | :*Ver também [http://www.mathworks.com/help/releases/R2014a/pdf_doc/matlab/index.html PDF Documentation for MATLAB]. Principalmente [http://www.mathworks.com/help/releases/R2014a/pdf_doc/matlab/getstart.pdf MATLAB Primer]. | ||
− | + | ;Aula 4 (22 fev): | |
− | ;Aula 4 ( | ||
*Revisão de Sinais e Sistemas no tempo discreto em Matlab: | *Revisão de Sinais e Sistemas no tempo discreto em Matlab: | ||
:* Filtros Digitais ([https://owncloud.ifsc.edu.br/index.php/s/WWY2LWexts8PKDs Experimento 2.3]) | :* Filtros Digitais ([https://owncloud.ifsc.edu.br/index.php/s/WWY2LWexts8PKDs Experimento 2.3]) | ||
Linha 292: | Linha 290: | ||
* A situação pode ser muito diferente conforme muda o tamanho do sinal e ordem do filtro (h(n)). | * A situação pode ser muito diferente conforme muda o tamanho do sinal e ordem do filtro (h(n)). | ||
− | ;Aula 5 ( | + | ;Aula 5 (27 fev): |
:* Exercício - Sinal DTMF com ruído | :* Exercício - Sinal DTMF com ruído | ||
::* Verifique se o Matlab está reproduzindo corretamente o som. | ::* Verifique se o Matlab está reproduzindo corretamente o som. | ||
Linha 346: | Linha 344: | ||
:* Consulte a documentação do Matlab sobre [https://www.mathworks.com/help/matlab/ref/text.html text], [http://www.mathworks.com/help/signal/ref/zp2tf.html zp2tf], [http://www.mathworks.com/help/signal/ref/tf2zp.html tf2zp], [http://www.mathworks.com/help/signal/ref/fftfilt.html fftfilt], [http://www.mathworks.com/help/matlab/ref/awgn.html awgn] | :* Consulte a documentação do Matlab sobre [https://www.mathworks.com/help/matlab/ref/text.html text], [http://www.mathworks.com/help/signal/ref/zp2tf.html zp2tf], [http://www.mathworks.com/help/signal/ref/tf2zp.html tf2zp], [http://www.mathworks.com/help/signal/ref/fftfilt.html fftfilt], [http://www.mathworks.com/help/matlab/ref/awgn.html awgn] | ||
:*Ver pag. 141 a 145 e 230 a 235 de <ref name="DINIZ2014"/> | :*Ver pag. 141 a 145 e 230 a 235 de <ref name="DINIZ2014"/> | ||
− | + | ||
{{collapse bottom}} | {{collapse bottom}} | ||
Linha 352: | Linha 350: | ||
===Unidade 2=== | ===Unidade 2=== | ||
− | + | ;Aula 6 (1 mar): | |
− | ;Aula 6 ( | ||
*Filtros Analógicos: | *Filtros Analógicos: | ||
:* Função de transferência | :* Função de transferência | ||
Linha 403: | Linha 400: | ||
:* A aproximação de magnitude de filtros analógicos pode ser realizado usando as aproximações de Butterworth, Chebyshev (tipo 1 ou 2) e Cauer. | :* A aproximação de magnitude de filtros analógicos pode ser realizado usando as aproximações de Butterworth, Chebyshev (tipo 1 ou 2) e Cauer. | ||
+ | [[Arquivo:TiposFiltrosHs.png | 600px]] | ||
− | ; | + | ;Proposta de exercício: |
− | * | + | *Use os polinômios de Butterworth com ordens de 1 a 10 mostrados na tabela abaixo para obter os filtros <math>H_n(s) = 1/B_n(s)</math>. |
− | ::* | + | {| |
+ | |----- | ||
+ | | | ||
+ | {| class="wikitable" style="text-align: center;" | ||
+ | |- | ||
+ | !n!!Fatores Polinomiais de <math>B_n(s)</math> | ||
+ | |- | ||
+ | !1 | ||
+ | |<math>(s+1)</math> | ||
+ | |- | ||
+ | !2 | ||
+ | |<math>(s^2+1.4142s+1)</math> | ||
+ | |- | ||
+ | !3 | ||
+ | |<math>(s+1)(s^2+s+1)</math> | ||
+ | |- | ||
+ | !4 | ||
+ | |<math>(s^2+0.7654s+1)(s^2+1.8478s+1)</math> | ||
+ | |- | ||
+ | !5 | ||
+ | |<math>(s+1)(s^2+0.6180s+1)(s^2+1.6180s+1)</math> | ||
+ | |- | ||
+ | !6 | ||
+ | |<math>(s^2+0.5176s+1)(s^2+1.4142s+1)(s^2+1.9319s+1)</math> | ||
+ | |- | ||
+ | !7 | ||
+ | |<math>(s+1)(s^2+0.4450s+1)(s^2+1.2470s+1)(s^2+1.8019s+1)</math> | ||
+ | |- | ||
+ | !8 | ||
+ | |<math>(s^2+0.3902s+1)(s^2+1.1111s+1)(s^2+1.6629s+1)(s^2+1.9616s+1)</math> | ||
+ | |- | ||
+ | !9 | ||
+ | |<math>(s+1)(s^2+0.3473s+1)(s^2+s+1)(s^2+1.5321s+1)(s^2+1.879s+1)</math> | ||
+ | |- | ||
+ | !10 | ||
+ | |<math>(s^2+0.3129s+1)(s^2+0.9080s+1)(s^2+1.4142s+1)(s^2+1.7820s+1)(s^2+1.9754s+1)</math> | ||
+ | |} | ||
+ | |} | ||
+ | *Escolha uma ordem n (entre 5 e 10) | ||
+ | *Plote a resposta em frequência em escala log da amplitude (em dB) e da fase (em rad/pi). | ||
+ | *Qual é o ganho do filtro na banda passante? | ||
+ | *Qual é a frequência de corte (-3dB) do filtro. | ||
+ | *Qual é o salto de de fase que ocorre em algumas frequências? | ||
+ | *Qual é o fator de atenuação em dB/decada após a frequência de corte? | ||
+ | |||
+ | *Faça o diagrama de polos e zeros desse filtro. | ||
+ | *Procure observar o que ocorre com a posição dos polos do filtro. | ||
+ | *Calcule o valor do módulo dos pólos. | ||
+ | |||
+ | ;Aula 7, 8 (8, 13 mar): | ||
+ | |||
+ | * Projeto de filtros analógicos passa baixas (low pass - LP) do tipo Butterworth, considerando: <math> \omega_p </math> é a frequência de passagem, <math> A_p = 3 dB </math> é a atenuação em dB na frequência de passagem, <math> \omega_s </math> é a frequência de ''stopband'', <math> A_s </math> é a atenuação em dB na frequência de ''stopband''. | ||
+ | [[Arquivo:MascaraFiltroLP.png | 600px]] | ||
+ | |||
+ | *Escalando as frequências em relação a <math> {\omega_p} </math>, teremos que <math> \Omega_s = \frac {\omega_s} {\omega_p} </math>, e <math> \Omega_p = \frac {\omega_p} {\omega_p} = 1 </math> são as frequências de passagem e ''stopband'' do filtro protótipo <math> H(p) </math>, que tem ganho unitário e frequência de passagem 1. | ||
+ | |||
+ | ;<math> A_p = 3 dB </math>: | ||
+ | *Se considerarmos o caso particular em que na frequência de passagem o ganho (em escala linear) deve ser <math> G_p = 1/\sqrt{2} = 0,707 </math>, que corresponde a um ganho (em escala log) <math> G_p = - 3 dB </math>, ou atenuação <math> A_p = 3 dB </math>. | ||
+ | *Considere que <math> \epsilon = \sqrt{10^{0.1A_p}-1}</math>, teremos <math> \epsilon = 1 </math> | ||
+ | *Para projetar o filtro é necessário: | ||
+ | |||
+ | :1) determinar a ordem <math> n </math> do filtro: | ||
::<math> n \ge \frac {\log(10^{0.1A_s}-1)} {2 \log \Omega_s} </math> | ::<math> n \ge \frac {\log(10^{0.1A_s}-1)} {2 \log \Omega_s} </math> | ||
− | : | + | :2) obter os polos do filtro: |
::<math> p_k = e^{\left[ j \frac{(2 k + n - 1)} {2 n} \pi \right]}, k = 1, 2, 3, ... n</math> | ::<math> p_k = e^{\left[ j \frac{(2 k + n - 1)} {2 n} \pi \right]}, k = 1, 2, 3, ... n</math> | ||
− | : | + | :3) obter a função de transferência: |
::<math> H(p)= \frac{1}{D(p)} </math>, onde <math> D(p)=\prod_{k-1}^{n} \left ( p-p_{k} \right ) </math> | ::<math> H(p)= \frac{1}{D(p)} </math>, onde <math> D(p)=\prod_{k-1}^{n} \left ( p-p_{k} \right ) </math> | ||
− | ::* No caso de um filtro LP é necessário ainda obter a função de transferência do filtro especificado | + | |
+ | ::* No caso de um filtro LP é necessário ainda obter a função de transferência do filtro especificado fazendo a transformação de frequência <math> H(p) -> H(s) </math> | ||
::<math>H(s) = H(p)\left|\begin{matrix} \\ p=\frac{s}{\omega_p} \end{matrix}\right. </math> | ::<math>H(s) = H(p)\left|\begin{matrix} \\ p=\frac{s}{\omega_p} \end{matrix}\right. </math> | ||
− | ; | + | ;Para qualquer <math> A_p </math>: |
− | + | *Teremos <math> \epsilon = \sqrt{10^{0.1A_p}-1}</math> | |
− | :: | + | *Para projetar o filtro é necessário: |
+ | :1) determinar a ordem <math> n </math> do filtro: | ||
− | ::<math> n \ge \frac {\log[(10^{0.1A_s}-1)/ | + | ::<math> n \ge \frac {\log[(10^{0.1A_s}-1)/\epsilon^2]} {2 \log \Omega_s} </math> |
− | : | + | :2) obter os polos do filtro: |
::<math> p_k = \epsilon^{(-1/n)} e^{\left[ j \frac{(2 k + n - 1)} {2 n} \pi \right]}, k = 1, 2, 3, ... n</math> | ::<math> p_k = \epsilon^{(-1/n)} e^{\left[ j \frac{(2 k + n - 1)} {2 n} \pi \right]}, k = 1, 2, 3, ... n</math> | ||
− | : | + | :3) obter a função de transferência: |
::<math> H(p)= \frac{k}{D(p)} </math>, onde <math> k=\prod_{k-1}^{n} \left (-p_{k} \right ) = \epsilon^{-1}</math> e <math> D(p)=\prod_{k-1}^{n} \left ( p-p_{k} \right ) </math>. | ::<math> H(p)= \frac{k}{D(p)} </math>, onde <math> k=\prod_{k-1}^{n} \left (-p_{k} \right ) = \epsilon^{-1}</math> e <math> D(p)=\prod_{k-1}^{n} \left ( p-p_{k} \right ) </math>. | ||
::NOTA: o valor <math> k </math> também pode ser obtido a partir de <math> {D(p)} </math>, pois corresponde ao último termo do polinômio <math> {D(end)} </math>. | ::NOTA: o valor <math> k </math> também pode ser obtido a partir de <math> {D(p)} </math>, pois corresponde ao último termo do polinômio <math> {D(end)} </math>. | ||
− | ::* No caso de um filtro LP é necessário ainda obter a função de transferência do filtro especificado | + | ::* No caso de um filtro LP é necessário ainda obter a função de transferência do filtro especificado fazendo a transformação de frequência <math> H(p) -> H(s) </math> |
+ | ::<math>H(s) = H(p)\left|\begin{matrix} \\ p=\frac{s}{\omega_p} \end{matrix}\right. </math> | ||
− | |||
:*Ver [[Uso do calculo simbólico na Matlab]] | :*Ver [[Uso do calculo simbólico na Matlab]] | ||
:*Ver pag. 186 a 204 de <ref name="SHENOI2006"> SHENOI, B. A. '''Introduction to Digital Signal Processing and Filter Design'''. 1.ed. New Jersey: John Wiley-Interscience, 2006. 440 p. ISBN 978-0471464822 </ref> | :*Ver pag. 186 a 204 de <ref name="SHENOI2006"> SHENOI, B. A. '''Introduction to Digital Signal Processing and Filter Design'''. 1.ed. New Jersey: John Wiley-Interscience, 2006. 440 p. ISBN 978-0471464822 </ref> | ||
+ | |||
+ | <!-- | ||
<syntaxhighlight lang=matlab> | <syntaxhighlight lang=matlab> | ||
%Butterworth lowpass Responses (db) | %Butterworth lowpass Responses (db) | ||
Linha 461: | Linha 524: | ||
grid on | grid on | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | --> | ||
− | + | ;Aula 9 e 10 (15 e 20 mar): | |
− | ;Aula 9 ( | ||
* Projeto de filtros analógicos do tipo Chebyshev I. | * Projeto de filtros analógicos do tipo Chebyshev I. | ||
:* Polinômios de Chebyshev: | :* Polinômios de Chebyshev: | ||
Linha 491: | Linha 554: | ||
:<math>\left | H(0) \right | ^2 = \frac{H_0^2}{ 1+ \epsilon^2 C_n ^2 \left ( \Omega_0 \right )} </math> | :<math>\left | H(0) \right | ^2 = \frac{H_0^2}{ 1+ \epsilon^2 C_n ^2 \left ( \Omega_0 \right )} </math> | ||
+ | |||
+ | ::* Para obter a função de transferência: | ||
+ | |||
+ | ::<math> H(p)= \frac{H0}{D(p)} </math>, onde <math> D(p)=\prod_{k-1}^{n} \left ( p-p_{k} \right ) </math> | ||
+ | ::onde | ||
+ | ::<math> H_0 = d_0*\sqrt{\frac{1}{ 1+ \epsilon^2}} </math> se n é par | ||
+ | ::<math> H_0 = d_0 </math> se n é impar | ||
+ | ::<math> d_0 =\prod_{k-1}^{n} \left (-p_{k} \right ) </math> é o último termo do denominador D(p) | ||
:* Uso das funções [http://www.mathworks.com/help/signal/ref/buttord.html buttord], [http://www.mathworks.com/help/signal/ref/butter.html butter], [http://www.mathworks.com/help/signal/ref/cheb1ord.html cheb1ord], [http://www.mathworks.com/help/signal/ref/cheby1.html cheby1], [http://www.mathworks.com/help/signal/ref/cheb2ord.html cheb2ord], [http://www.mathworks.com/help/signal/ref/cheby2.html cheby2], [http://www.mathworks.com/help/signal/ref/ellipord.html ellipord], [http://www.mathworks.com/help/signal/ref/ellip.html ellip] para o projeto de filtros analógicos com Matlab (é necessário usar o parâmetro ''''s''''). | :* Uso das funções [http://www.mathworks.com/help/signal/ref/buttord.html buttord], [http://www.mathworks.com/help/signal/ref/butter.html butter], [http://www.mathworks.com/help/signal/ref/cheb1ord.html cheb1ord], [http://www.mathworks.com/help/signal/ref/cheby1.html cheby1], [http://www.mathworks.com/help/signal/ref/cheb2ord.html cheb2ord], [http://www.mathworks.com/help/signal/ref/cheby2.html cheby2], [http://www.mathworks.com/help/signal/ref/ellipord.html ellipord], [http://www.mathworks.com/help/signal/ref/ellip.html ellip] para o projeto de filtros analógicos com Matlab (é necessário usar o parâmetro ''''s''''). | ||
:* Ler '''Comparison of Analog IIR Lowpass Filters''' em [http://www.mathworks.com/help/signal/ref/ellip.html ellip] | :* Ler '''Comparison of Analog IIR Lowpass Filters''' em [http://www.mathworks.com/help/signal/ref/ellip.html ellip] | ||
− | :* Uso das funções [http://www.mathworks.com/help/signal/ref/freqs.html freqs], "zplane", [http://www.mathworks.com/help/signal/ref/fvtool.html fvtool] na análise da resposta em frequência de filtros analógicos. | + | :* Uso das funções [http://www.mathworks.com/help/signal/ref/freqs.html freqs], "zplane", [http://www.mathworks.com/help/signal/ref/fvtool.html fvtool] na análise da resposta em frequência de filtros analógicos. |
− | |||
− | |||
− | |||
− | + | * Projeto de filtros analógicos do tipo Butterworth, Chebyshev I e II e Cauer (eliptico) usando funções do Matlab. | |
− | * Projeto de filtros analógicos do tipo Butterworth, Chebyshev I e II e Cauer (eliptico). | ||
<syntaxhighlight lang=matlab> | <syntaxhighlight lang=matlab> | ||
%% Projeto de filtro passa-baixas usando funções do Matlab | %% Projeto de filtro passa-baixas usando funções do Matlab | ||
Linha 525: | Linha 592: | ||
:*Ver pag. 204 a 208 de <ref name="SHENOI2006"/> | :*Ver pag. 204 a 208 de <ref name="SHENOI2006"/> | ||
+ | |||
+ | ;Aula 11 a 13 (22,27, 29 mar): | ||
*Filtros Analógicos: | *Filtros Analógicos: | ||
:* Transformações de frequência de filtros analógicos | :* Transformações de frequência de filtros analógicos | ||
Linha 545: | Linha 614: | ||
:: onde <math> B = \omega_{p2} - \omega_{p1}</math> e <math> \omega_0 = \sqrt{\omega_{p2} \omega_{p1}}</math> | :: onde <math> B = \omega_{p2} - \omega_{p1}</math> e <math> \omega_0 = \sqrt{\omega_{p2} \omega_{p1}}</math> | ||
− | |||
:* Uso das funções [http://www.mathworks.com/help/matlab/ref/semilogx.html semilogx], [http://www.mathworks.com/help/matlab/ref/semilogy.html semilogy],[http://www.mathworks.com/help/matlab/ref/logspace.html logspace], [http://www.mathworks.com/help/matlab/ref/linspace.html linspace]. | :* Uso das funções [http://www.mathworks.com/help/matlab/ref/semilogx.html semilogx], [http://www.mathworks.com/help/matlab/ref/semilogy.html semilogy],[http://www.mathworks.com/help/matlab/ref/logspace.html logspace], [http://www.mathworks.com/help/matlab/ref/linspace.html linspace]. | ||
:*Ver em [http://www.mathworks.com/help/signal/ug/iir-filter-design.html IIR Filter Design], [http://www.mathworks.com/help/signal/ug/special-topics-in-iir-filter-design.html Special Topics in IIR Filter Design]. | :*Ver em [http://www.mathworks.com/help/signal/ug/iir-filter-design.html IIR Filter Design], [http://www.mathworks.com/help/signal/ug/special-topics-in-iir-filter-design.html Special Topics in IIR Filter Design]. | ||
Linha 555: | Linha 623: | ||
:* Exemplo 1: Filtro passa-baixas (<math> f_p </math> = 941Hz, <math> f_s </math> = 1209 Hz, <math> A_p </math> = 1 dB, <math> A_s </math> = 20 dB) | :* Exemplo 1: Filtro passa-baixas (<math> f_p </math> = 941Hz, <math> f_s </math> = 1209 Hz, <math> A_p </math> = 1 dB, <math> A_s </math> = 20 dB) | ||
:* Exemplo 2: Filtro passa-altas (<math> f_p </math> = 1209 Hz, <math> f_s </math> = 941Hz, <math> A_p </math> = 1 dB, <math> A_s </math> = 20 dB) | :* Exemplo 2: Filtro passa-altas (<math> f_p </math> = 1209 Hz, <math> f_s </math> = 941Hz, <math> A_p </math> = 1 dB, <math> A_s </math> = 20 dB) | ||
− | :* Exemplo 3: Filtro passa-faixa (<math> f_{p1} </math> = 811 Hz, <math> f_{p2} </math> = 895,5 Hz | + | :* Exemplo 3: Filtro passa-faixa (<math> f_{p1} </math> = 811 Hz, <math> f_{p2} </math> = 895,5 Hz <math> f_{s1} </math> = 770 Hz, <math> f_{s2} </math> = 941 Hz, <math> A_p </math> = 1 dB, <math> A_r </math> = 30 dB) |
+ | :* Exemplo 5: Filtro rejeita-faixa (<math> f_{p1} </math> = 53 Hz, <math> f_{s1} </math> = 58 Hz, <math> f_{s2} </math> = 62 Hz <math> f_{p2} </math> = 67 Hz, <math> A_p </math> = 2 dB, <math> A_r </math> = 25 dB) | ||
::'''NOTA:''' | ::'''NOTA:''' | ||
:::*No calculo do filtro lembre-se de usar as frequências angulares para <math> \omega_p </math>, <math> \omega_s </math>, <math> B\omega </math>, <math> \omega_0 </math>. | :::*No calculo do filtro lembre-se de usar as frequências angulares para <math> \omega_p </math>, <math> \omega_s </math>, <math> B\omega </math>, <math> \omega_0 </math>. | ||
:::*onde <math> f_p </math> (<math> \omega_p </math>) é a frequência de passagem em Hz (rad/s), <math> f_s </math> (<math> \omega_s </math>) é a frequência de rejeição em Hz (rad/s), <math> f_0 </math> (<math> \omega_0 </math>) é a frequência central em Hz (rad/s), <math> B </math> (<math> B\omega </math>) é a largura de banda em Hz (rad/s). | :::*onde <math> f_p </math> (<math> \omega_p </math>) é a frequência de passagem em Hz (rad/s), <math> f_s </math> (<math> \omega_s </math>) é a frequência de rejeição em Hz (rad/s), <math> f_0 </math> (<math> \omega_0 </math>) é a frequência central em Hz (rad/s), <math> B </math> (<math> B\omega </math>) é a largura de banda em Hz (rad/s). | ||
− | :::*Confira os projetos dos filtros plotando as respostas em frequência dos filtros protótipo H(p) e filtro final H(s) de cada um dos exemplos. | + | :::*Confira os projetos dos filtros plotando as respostas em frequência dos filtros protótipo H(p) e filtro final H(s) de cada um dos exemplos. |
+ | |||
− | ;Aula | + | ;Aula 14 e 15 (3 e 5 abr): |
*Filtros Digitais: Filtros IIR: transformações do tempo contínuo no tempo discreto | *Filtros Digitais: Filtros IIR: transformações do tempo contínuo no tempo discreto | ||
:*Transformação invariante ao impulso (pode ser usada apenas para filtros com forte atenuação em frequência altas, ex: passa-baixas e passa-faixa) | :*Transformação invariante ao impulso (pode ser usada apenas para filtros com forte atenuação em frequência altas, ex: passa-baixas e passa-faixa) | ||
− | :*Transformação bilinear (pode ser usada para todos tipos de filtro) | + | :*Transformação bilinear (pode ser usada para todos tipos de filtro) <math> s = 2fa \frac {z-1}{z+1} </math> |
::*Obter a especificação do filtro em angulo entre 0 e 1, onde 1 corresponde a metade da frequência de amostragem <math> (fa/2) </math> | ::*Obter a especificação do filtro em angulo entre 0 e 1, onde 1 corresponde a metade da frequência de amostragem <math> (fa/2) </math> | ||
::*Obter o valor desse angulo predistorcido <math> \lambda </math> para compensar a distorção na frequência causada pela transformação bilinear <math> \lambda= 2 tan \left (\frac{\theta \pi}{2} \right ) </math>, onde <math> \theta = \frac{f}{f_a/2} = \frac{\omega}{\omega_a /2} </math> | ::*Obter o valor desse angulo predistorcido <math> \lambda </math> para compensar a distorção na frequência causada pela transformação bilinear <math> \lambda= 2 tan \left (\frac{\theta \pi}{2} \right ) </math>, onde <math> \theta = \frac{f}{f_a/2} = \frac{\omega}{\omega_a /2} </math> | ||
Linha 585: | Linha 655: | ||
::*Cálculo do protótipo com <math> \Omega_s = \Bigg| \frac {B \lambda_s} {-\lambda_s^2 + \lambda_0^2}\Bigg|</math> | ::*Cálculo do protótipo com <math> \Omega_s = \Bigg| \frac {B \lambda_s} {-\lambda_s^2 + \lambda_0^2}\Bigg|</math> | ||
:: onde <math> B = \lambda_{p2} - \lambda_{p1}</math> e <math> \lambda_0 = \sqrt{\lambda_{p2} \lambda_{p1}}</math> | :: onde <math> B = \lambda_{p2} - \lambda_{p1}</math> e <math> \lambda_0 = \sqrt{\lambda_{p2} \lambda_{p1}}</math> | ||
+ | ::*Ver as funções de discretização usadas no Matlab: [http://www.mathworks.com/help/signal/ref/bilinear.html bilinear], [http://www.mathworks.com/help/signal/ref/impinvar.html impinvar] | ||
+ | |||
+ | * Realizar os projetos dos exemplos anteriores, considerando uma frequencia de amostragem de 8 kHz. | ||
:*Ver pag. 219 a 229 de <ref name="SHENOI2006"/> | :*Ver pag. 219 a 229 de <ref name="SHENOI2006"/> | ||
:*Ver pag. 403 a 415 e 434 a 435 de <ref name="DINIZ2014"/> | :*Ver pag. 403 a 415 e 434 a 435 de <ref name="DINIZ2014"/> | ||
− | + | ;Aula 16 (10 abr): | |
− | ;Aula | ||
− | |||
− | |||
:* Ver em [http://www.mathworks.com/help/signal/ug/iir-filter-design.html IIR Filter Design] | :* Ver em [http://www.mathworks.com/help/signal/ug/iir-filter-design.html IIR Filter Design] | ||
Linha 598: | Linha 668: | ||
:* Outros tipos de filtros IIR: [http://www.mathworks.com/help/signal/ref/yulewalk.html yulewalk], [https://www.mathworks.com/help/dsp/ref/iirnotch.html iirnotch], [https://www.mathworks.com/help/dsp/ref/iirpeak.html iirpeak], [https://www.mathworks.com/help/dsp/ref/iircomb.html iircomb],[http://www.mathworks.com/help/signal/ref/filtfilt.html filtfilt], [http://www.mathworks.com/help/signal/ref/maxflat.html maxflat], [http://www.mathworks.com/help/signal/ref/invfreqz.html invfreqz] e outros filtros de [http://www.mathworks.com/help/signal/ug/parametric-modeling.html modelagem paramétrica]. | :* Outros tipos de filtros IIR: [http://www.mathworks.com/help/signal/ref/yulewalk.html yulewalk], [https://www.mathworks.com/help/dsp/ref/iirnotch.html iirnotch], [https://www.mathworks.com/help/dsp/ref/iirpeak.html iirpeak], [https://www.mathworks.com/help/dsp/ref/iircomb.html iircomb],[http://www.mathworks.com/help/signal/ref/filtfilt.html filtfilt], [http://www.mathworks.com/help/signal/ref/maxflat.html maxflat], [http://www.mathworks.com/help/signal/ref/invfreqz.html invfreqz] e outros filtros de [http://www.mathworks.com/help/signal/ug/parametric-modeling.html modelagem paramétrica]. | ||
− | + | ||
+ | <syntaxhighlight lang=matlab> | ||
+ | fa = 200; | ||
+ | fN = fa/2; | ||
+ | wo = 60/fN; bw = 10/fN; | ||
+ | [b,a] = iirnotch(wo,bw); | ||
+ | fvtool(b,a); | ||
+ | syms z; | ||
+ | N(z) = poly2sym(b,z); | ||
+ | D(z) = poly2sym(a,z); | ||
+ | H(z) = N(z)/D(z); | ||
+ | pretty(vpa(H(z),3)) | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | <syntaxhighlight lang=matlab> | ||
+ | fa = 8000; | ||
+ | fN = fa/2; | ||
+ | wo = 941/fN; bw = 100/fN; | ||
+ | [b,a] = iirpeak(wo,bw); | ||
+ | fvtool(b,a); | ||
+ | syms z; | ||
+ | N(z) = poly2sym(b,z); | ||
+ | D(z) = poly2sym(a,z); | ||
+ | H(z) = N(z)/D(z); | ||
+ | pretty(vpa(H(z),3)) | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | <syntaxhighlight lang=matlab> | ||
+ | fa = 8000; fN = fa/2; | ||
+ | fo = 1000; bw = 20/fN; | ||
+ | [b,a] = iircomb(fa/fo,bw,'peak'); % ou use a flag 'notch' | ||
+ | fvtool(b,a); | ||
+ | syms z; | ||
+ | N(z) = poly2sym(b,z); | ||
+ | D(z) = poly2sym(a,z); | ||
+ | H(z) = N(z)/D(z); | ||
+ | pretty(vpa(H(z),3)) | ||
+ | </syntaxhighlight> | ||
+ | |||
{{collapse bottom}} | {{collapse bottom}} | ||
− | {{collapse top| | + | {{collapse top| Unidade 3}} |
+ | |||
===Unidade 3=== | ===Unidade 3=== | ||
− | + | ||
− | ;Aula | + | ;Aula 17 (12 abr): |
*Filtros Digitais: Filtros FIR | *Filtros Digitais: Filtros FIR | ||
:*Filtros de fase linear: simétricos e antisimétricos (Tipo 1, 2, 3 e 4) | :*Filtros de fase linear: simétricos e antisimétricos (Tipo 1, 2, 3 e 4) | ||
:*Filtros de fase linear: propriedades (respostas em frequência possíveis, distribuição dos zeros em simetria quadrantal) | :*Filtros de fase linear: propriedades (respostas em frequência possíveis, distribuição dos zeros em simetria quadrantal) | ||
+ | * Observar as propriedades dos FIR tipo 1, 2, 3 e 4. Observe a resposta de frequência, fase, atraso de grupo, coeficientes e diagrama de polos e zeros dos filtros abaixo. | ||
+ | |||
+ | <syntaxhighlight lang=matlab> | ||
+ | N = 10; | ||
+ | bi = 2*(rand(1,N)-0.5) | ||
+ | %% Tipo I - LP, HP, BS, BP | ||
+ | b = [bi (2*rand(1,1)-0.5) flip(bi)]; | ||
+ | ... | ||
+ | %% Tipo II - LP, BP | ||
+ | % tem um zero em -1 | ||
+ | b = [bi flip(bi)]; | ||
+ | ... | ||
+ | |||
+ | %% Tipo III - BP | ||
+ | % tem um zero em 1 e -1 | ||
+ | b = [bi 0 -flip(bi)]; | ||
+ | ... | ||
− | ;Aula 16 ( | + | %% Tipo IV - BP, HP |
+ | % tem um zero em 1 | ||
+ | b = [bi -flip(bi)]; | ||
+ | ... | ||
+ | </syntaxhighlight> | ||
+ | <center> | ||
+ | [[Arquivo:FIR_tipo1.png | 800px]] | ||
+ | <br> | ||
+ | Figura 1 - Propriedades do filtro FIR de fase linear (Tipo 1) | ||
+ | </center> | ||
+ | |||
+ | ;Aula 16 e 17 (19 e 24 abr) | ||
:*Coeficientes da série de Fourier de filtros ideias: LP, HP, BP, BS | :*Coeficientes da série de Fourier de filtros ideias: LP, HP, BP, BS | ||
::*Passa-baixas (''Low-pass'') | ::*Passa-baixas (''Low-pass'') | ||
Linha 650: | Linha 787: | ||
wvtool(rectwin(L), triang(L), bartlett(L), hann(L), hamming(L), blackman(L), blackmanharris(L), nuttallwin(L)); | wvtool(rectwin(L), triang(L), bartlett(L), hann(L), hamming(L), blackman(L), blackmanharris(L), nuttallwin(L)); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
;Tabela 5.1: | ;Tabela 5.1: | ||
Linha 695: | Linha 826: | ||
::* PASSO 2 - Estimar a ordem N1 do filtro considerando os parâmetros Dw | ::* PASSO 2 - Estimar a ordem N1 do filtro considerando os parâmetros Dw | ||
::* PASSO 3 - Calcule os coeficientes clp do filtro LP , calcule os valores da janela w e obtenha a resposta ao impulso do filtro h = clp * w. | ::* PASSO 3 - Calcule os coeficientes clp do filtro LP , calcule os valores da janela w e obtenha a resposta ao impulso do filtro h = clp * w. | ||
− | ::* PASSO 4 - Verifique o valor real de Dwr = wAs-wAp, e faça a correção da ordem do filtro em função do desvio constatado. N2 = N*Dwr/Dw. | + | ::* PASSO 4 - Ajuste o ganho do filtro para que a resposta na banda de passagem fique abaixo da especificação maxima. |
− | ::* PASSO | + | ::* PASSO 5 - Verifique o valor real de Dwr = wAs-wAp, e faça a correção da ordem do filtro em função do desvio constatado. N2 = N*Dwr/Dw. |
− | ::* Repita o PASSO 3 até | + | ::* PASSO 6 - Corrija o valor de projeto dos coeficientes Clp do filtro ideal, a janela e a resposta ao impulso. |
− | ::* PASSO | + | ::* Repita o PASSO 3 até 6, até obter um filtro que atenda as especificações de Dw. |
+ | ::* PASSO 7 - Desloque a frequência de corte wc de modo a obter o valor correto de wp. wc2 = wp + (wp-wAp). | ||
:* Projeto de filtro FIR. | :* Projeto de filtro FIR. | ||
::*Projete os dois filtros projetados anteriormente como IIR, utilizando 3 janelas diferentes. Compare os filtros obtidos com os filtros IIR. | ::*Projete os dois filtros projetados anteriormente como IIR, utilizando 3 janelas diferentes. Compare os filtros obtidos com os filtros IIR. | ||
Linha 715: | Linha 847: | ||
::*[https://ieeexplore.ieee.org.ez130.periodicos.capes.gov.br/stamp/stamp.jsp?arnumber=1163506 Some windows with very good sidelobe behavior] Nuttall, A. IEEE Transactions on Acoustics, Speech, and Signal Processing, February 1981, Vol.29(1), pp.84-91 | ::*[https://ieeexplore.ieee.org.ez130.periodicos.capes.gov.br/stamp/stamp.jsp?arnumber=1163506 Some windows with very good sidelobe behavior] Nuttall, A. IEEE Transactions on Acoustics, Speech, and Signal Processing, February 1981, Vol.29(1), pp.84-91 | ||
− | ;Aula 19 ( | + | |
+ | ;Aula 19 a 21 (23 abr a 03 mai): | ||
*Filtros Digitais: Filtros FIR | *Filtros Digitais: Filtros FIR | ||
*Projeto de filtro FIR utilizando janelas temporais ajustáveis | *Projeto de filtro FIR utilizando janelas temporais ajustáveis | ||
Linha 774: | Linha 907: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | ;Aula | + | ;Aula 22 (08 mai): |
*Filtros Digitais: Filtros FIR | *Filtros Digitais: Filtros FIR | ||
:*Filtro de Parks-McClellan. Funções [http://www.mathworks.com/help/signal/ref/firpm.html firpm] e [http://www.mathworks.com/help/signal/ref/firpmord.html firpmord]. | :*Filtro de Parks-McClellan. Funções [http://www.mathworks.com/help/signal/ref/firpm.html firpm] e [http://www.mathworks.com/help/signal/ref/firpmord.html firpmord]. | ||
Linha 805: | Linha 938: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | ;Aula | + | ;Aula 23 (10 mai) |
*Projeto de filtro FIR | *Projeto de filtro FIR | ||
Linha 834: | Linha 967: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | Entrega do trabalho de projeto e análise de filtros digitais (05 de junho de 2019, as 9:40) | ||
+ | |||
+ | <!-- | ||
;Aula 22 (09 out) | ;Aula 22 (09 out) | ||
:*Uso do [http://la.mathworks.com/help/dsp/ug/use-fdatool-with-dsp-system-toolbox-software.html] para projeto de filtro IIR, FIR equiripple e FIR com janela. | :*Uso do [http://la.mathworks.com/help/dsp/ug/use-fdatool-with-dsp-system-toolbox-software.html] para projeto de filtro IIR, FIR equiripple e FIR com janela. | ||
Linha 865: | Linha 1 001: | ||
{{collapse top| Unidade 4}} | {{collapse top| Unidade 4}} | ||
+ | |||
===Unidade 4=== | ===Unidade 4=== | ||
− | + | ; Aula 24 (15 mai): | |
− | ;Aula | + | Paralisação pela Educação Pública Gratuita com Qualidade |
+ | |||
+ | ;Aula 25 (17 mai): | ||
*Realização de Filtros | *Realização de Filtros | ||
:* Realização de filtros FIR: Forma Direta. | :* Realização de filtros FIR: Forma Direta. | ||
Linha 924: | Linha 1 063: | ||
realizemdl(hFIR,'MapCoeffsToPorts','on'); | realizemdl(hFIR,'MapCoeffsToPorts','on'); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | ;Aula 26 (22 mai) | ||
+ | :*Uso do Simulink | ||
+ | ::* Uso dos blocos de simulação [http://www.mathworks.com/help/simulink/slref/sinewave.html sinewave], [http://www.mathworks.com/help/simulink/slref/floatingscope.html scope] e [http://www.mathworks.com/help/dsp/ref/spectrumanalyzer.html Spectrum Analyzer]. | ||
+ | ::* Outros blocos [http://www.mathworks.com/help/simulink/slref/mux.html mux], [http://www.mathworks.com/help/simulink/slref/demux.html demux], [http://www.mathworks.com/help/simulink/slref/add.html sum], [http://www.mathworks.com/help/simulink/slref/product.html product]. | ||
+ | ::*[https://www.mathworks.com/help/simulink/gs/create-a-simple-model.html?s_cid=learn_doc Create Simple Model] [https://www.mathworks.com/videos/getting-started-with-simulink-118723.html] | ||
+ | ;Aula 27 e 28 (24 e 29 mai) | ||
+ | *Uso do Simulink | ||
+ | :*Uso do [http://la.mathworks.com/help/dsp/ug/use-fdatool-with-dsp-system-toolbox-software.html] para projeto de filtro IIR, FIR equiripple e FIR com janela. | ||
+ | *Uso do FDAToll no Simulink[http://la.mathworks.com/help/dsp/gs/design-and-implement-a-filter.html Design a Digital Filter in Simulink]. | ||
+ | :*Tipos de Solver ([http://www.mathworks.com/help/simulink/ug/choosing-a-solver.html Choose a Solver]). | ||
− | ;Aula | + | *Realizar a montagem do modelo indicado na figura abaixo e fazer a simulação, usar fa = 8000Hz. |
+ | <center> | ||
+ | [[Arquivo:SimulationFilterPSD1.png|800px]] | ||
+ | </center> | ||
+ | '''DICAS:''' | ||
+ | * Ative a visualização das dimensões das portas ['''Display > Signal & Ports > Signal Dimensions'''] ou [ALT]+D+S+D+[ENTER] | ||
+ | * Ative a visualização do tipo de dados das portas ['''Display > Signal & Ports > Port Data Types'''] ou [ALT]+D+S+D+D+[ENTER] | ||
+ | * Ative a visualização da cor para indicar os tempos de amostragem sinais ['''Display > Sample Time > Colors'''] ou [ALT]+D+T+C+[ENTER] | ||
+ | |||
+ | *Fazer a análise no DT e DF para um ruido uniforme (-1 a 1) | ||
+ | <center> | ||
+ | [[Arquivo:DTnoiseFilterPSD1.png|400px]] | ||
+ | [[Arquivo:DFnoiseFilterPSD1.png|400px]] | ||
+ | </center> | ||
+ | *Fazer a análise no DT e DF para um sinal de chirp (0 a 4000Hz) | ||
+ | <center> | ||
+ | [[Arquivo:DTchirpFilterPSD1.png|400px]] | ||
+ | [[Arquivo:DFchirpFilterPSD1.png|400px]] | ||
+ | </center> | ||
+ | |||
+ | ;Aula 29 (31 mai): | ||
+ | :*Diferença entre processamento por amostra e processamento por quadro ([http://www.mathworks.com/help/dsp/ug/sample-and-frame-based-concepts.html Sample- and Frame-Based Concepts]). | ||
+ | :*Uso dos módulos [https://www.mathworks.com/help/dsp/ref/buffer.html buffer] e [https://www.mathworks.com/help/dsp/ref/unbuffer.html unbuffer] para converter entre fluxos de dados de diferentes taxas de frames, ou entre sample-based e frame-based. | ||
+ | |||
+ | :*Exemplos: | ||
+ | ::*[https://www.mathworks.com/help/dsp/ug/filter-frames-of-a-noisy-sine-wave-signal-in-simulink.html Filtragem] - frame based | ||
+ | ::*[[Modulações Analógicas]] | ||
+ | ::*[[Amostragem de sinais]] | ||
+ | ::*[https://www.mathworks.com/help/dsp/ug/digital-filter-design-block.html Digital Filter Design Block], [https://www.mathworks.com/help/dsp/ref/digitalfilterdesign.html], [https://www.mathworks.com/help/dsp/ref/filterrealizationwizard.html] | ||
+ | |||
+ | :::*É importante ler informações complementares sobre o [http://www.mathworks.com/help/simulink/gui/solver-pane.html Solver Pane], [http://www.mathworks.com/help/simbio/ug/simulating-models.html Model Simulation], [http://www.mathworks.com/help/simulink/ug/types-of-solvers.html Types of Solvers], [http://www.mathworks.com/help/simevents/ug/solvers-for-simevents-models.html Solvers for Discrete-Event Systems]. | ||
+ | |||
+ | :::*É importante ler informações complementares sobre, [http://www.mathworks.com/help/simulink/sample-time.html Tempo de amostragem (Time Sample)], [http://www.mathworks.com/help/simulink/ug/how-to-view-sample-time-information.html View Sample Time Information], [http://www.mathworks.com/help/simulink/slref/concatenate.html Vector Concatenate, Matrix Concatenate] | ||
+ | Para configurar o Simulink para sistemas discretos execute o comando dspstartup.m antes de abrir um novo modelo. | ||
+ | |||
+ | ;Aula 30 (5 jun): | ||
:* Realização de filtros IIR de 2ª ordem: Forma Direta I e II, e Forma Transposta I e II. | :* Realização de filtros IIR de 2ª ordem: Forma Direta I e II, e Forma Transposta I e II. | ||
:<math> H(z) = \frac{Y(z)}{X(z)}, H(z) = \frac{b_0 z^2 + b_1 z^1 + b_2}{z^2 + a_1 z^1 + a_2}, H(z) = \frac{b_0 + b_1 z^{-1} + b_2 z^{-2}}{1 + a_1 z^{-1} + a_2 z^{-2}} </math> | :<math> H(z) = \frac{Y(z)}{X(z)}, H(z) = \frac{b_0 z^2 + b_1 z^1 + b_2}{z^2 + a_1 z^1 + a_2}, H(z) = \frac{b_0 + b_1 z^{-1} + b_2 z^{-2}}{1 + a_1 z^{-1} + a_2 z^{-2}} </math> | ||
Linha 969: | Linha 1 153: | ||
:* Realização de filtros IIR de ordem maior que 2: Forma Direta I e II, Transposta I e II, Cascata, Paralela | :* Realização de filtros IIR de ordem maior que 2: Forma Direta I e II, Transposta I e II, Cascata, Paralela | ||
::*Os filtros IIR de ordem superior a 2 podem ser implementados nas FD I ou II e na FT I ou II. No entanto nessa configuração tendem a ficar instáveis ao terem os coeficientes quantizados, e também terem uma significativa alteração da resposta em frequência. Para reduzir esses problemas uma possível solução é a decomposição em filtros de 2ª ordem para serem associados na forma em Cascata ou Paralela. | ::*Os filtros IIR de ordem superior a 2 podem ser implementados nas FD I ou II e na FT I ou II. No entanto nessa configuração tendem a ficar instáveis ao terem os coeficientes quantizados, e também terem uma significativa alteração da resposta em frequência. Para reduzir esses problemas uma possível solução é a decomposição em filtros de 2ª ordem para serem associados na forma em Cascata ou Paralela. | ||
+ | |||
+ | ;Aula 31 (7 jun): | ||
:* Ver [http://www.mathworks.com/help/dsp/ref/biquadfilter.html Biquad Filter] | :* Ver [http://www.mathworks.com/help/dsp/ref/biquadfilter.html Biquad Filter] | ||
:* Ver funções do Matlab: [http://www.mathworks.com/help/matlab/ref/roots.html roots], [http://www.mathworks.com/help/matlab/ref/poly.html poly], [http://www.mathworks.com/help/signal/ref/residuez.html residuez], [http://www.mathworks.com/help/signal/ref/tf2zp.html tf2zp], [http://www.mathworks.com/help/signal/ref/zp2tf.html zp2tf], [http://www.mathworks.com/help/signal/ref/zp2sos.html zp2sos], [http://www.mathworks.com/help/signal/ref/tf2sos.html tf2sos], [http://www.mathworks.com/help/signal/ref/tf2latc.html tf2latc]. | :* Ver funções do Matlab: [http://www.mathworks.com/help/matlab/ref/roots.html roots], [http://www.mathworks.com/help/matlab/ref/poly.html poly], [http://www.mathworks.com/help/signal/ref/residuez.html residuez], [http://www.mathworks.com/help/signal/ref/tf2zp.html tf2zp], [http://www.mathworks.com/help/signal/ref/zp2tf.html zp2tf], [http://www.mathworks.com/help/signal/ref/zp2sos.html zp2sos], [http://www.mathworks.com/help/signal/ref/tf2sos.html tf2sos], [http://www.mathworks.com/help/signal/ref/tf2latc.html tf2latc]. | ||
Linha 986: | Linha 1 172: | ||
::* Ver [http://www.mathworks.com/help/dsp/ref/polyphase.html polyphase], [http://www.mathworks.com/help/dsp/ref/mfilt.firdecim.html mfilt.firdecim], [http://www.mathworks.com/help/dsp/ref/dsp.firdecimator-class.html dsp.FIRDecimator] | ::* Ver [http://www.mathworks.com/help/dsp/ref/polyphase.html polyphase], [http://www.mathworks.com/help/dsp/ref/mfilt.firdecim.html mfilt.firdecim], [http://www.mathworks.com/help/dsp/ref/dsp.firdecimator-class.html dsp.FIRDecimator] | ||
− | ;Aula 32 ( | + | |
+ | ;Aula 32 (12 jun) | ||
*Filtros Digitais: Quantização | *Filtros Digitais: Quantização | ||
:*Ver [https://www.mathworks.com/help/dsp/ref/fixed-point-filter-properties.html Fixed-Point Filter Properties] | :*Ver [https://www.mathworks.com/help/dsp/ref/fixed-point-filter-properties.html Fixed-Point Filter Properties] | ||
Linha 1 005: | Linha 1 192: | ||
*Sobre ponto flutuante [https://baseconvert.com/ieee-754-floating-point] | *Sobre ponto flutuante [https://baseconvert.com/ieee-754-floating-point] | ||
− | + | ||
− | ;Aula 33 ( | + | ;Aula 33 (19 jun) |
− | *Utilizando | + | *Utilizando um filtro projetado na AP1, faça a realização desse filtro quantizando-o com o menor número de bits, que preserve a especificação do mesmo. Se necessário o projeto inicial pode ser modificado inserindo ganhos de guarda na passagem, na rejeição, e também uma banda de guarda na especificação inicial das frequências de passagem e rejeição. |
*Verifique qual dos filtros IIR ou FIR resulta na menor área para a sua realização. | *Verifique qual dos filtros IIR ou FIR resulta na menor área para a sua realização. | ||
Linha 1 015: | Linha 1 202: | ||
::Atrasos => A x B | ::Atrasos => A x B | ||
:onde M é o número de multiplicadores, S o número de somadores, A o número de atrasos e B o número de bits em ponto fixo (após a quantização) | :onde M é o número de multiplicadores, S o número de somadores, A o número de atrasos e B o número de bits em ponto fixo (após a quantização) | ||
− | *Após a realização do filtro, | + | *Após a realização do filtro, exporte o modelo do filtro para o Simulink. |
− | |||
− | |||
− | |||
− | |||
{{collapse bottom}} | {{collapse bottom}} | ||
− | {{collapse top| Unidade 5 - PROJETO FINAL}} | + | {{collapse top| expand=true | Unidade 5 - PROJETO FINAL}} |
+ | |||
===Unidade 5 - PROJETO FINAL=== | ===Unidade 5 - PROJETO FINAL=== | ||
+ | ====ATUAL==== | ||
+ | ;Aula 37 (28 jun): | ||
+ | :*Uso do HDL Coder | ||
+ | ::* [http://www.mathworks.com/help/hdlcoder/hdl-code-generation-from-simulink.html HDL Code Generation from Simulink] | ||
+ | ::* [https://www.mathworks.com/help/hdlcoder/ug/show-blocks-supported-for-hdl-code-generation.html Simulink® blocks supported for HDL code generation] | ||
+ | |||
+ | :* Exemplo simples. | ||
+ | ::* Inicialmente construa a biblioteca de blocos suportados pelo HDLcoder | ||
+ | hdllib [http://www.mathworks.com/help/hdlcoder/ug/show-blocks-supported-for-hdl-code-generation.html Show Blocks Supported for HDL Code Generation] | ||
+ | |||
+ | ::*Construa o modelo mostrado na figura abaixo. (sugestão de frequência do sinal de 100Hz, e frequência de amostragem deve ser de 1000Hz) | ||
+ | <center> | ||
+ | [[Arquivo:teste_sin_HDLcoder.png | 600 px]] | ||
+ | </center> | ||
+ | ::*coloque o modelo em um subsistema e conecte a saída a um '''Time Scope''' | ||
+ | <center> | ||
+ | [[Arquivo:subsistema_teste_sin_HDLcoder.png | 300 px]] | ||
+ | </center> | ||
+ | ::*Salve o modelo como teste_sin_HDLcoder, e em seguida faça o ajuste automático das configurações usando o comando. | ||
+ | hdlsetup('teste_sin_HDLcoder') | ||
+ | ::* Execute o HDLcoder | ||
+ | ::* Siga o fluxo do HDLcoder passo a passo e corrija eventuais problemas conforme indicado nas mensagens de ERRO. | ||
+ | :::* Será necessário mudar o tipo de dado do bloco seno e constante para fix(16). | ||
+ | ::* Após ter concluído com sucesso o fluxo de codificação HDL, vá até a pasta onde os arquivos VHDL foram gerados e observe que devem ser sido gerados os seguintes arquivos (Subsystem_tb_pkg.vhd Subsystem_tb.vhd Subsystem.vhd) na pasta | ||
+ | cd hdl_prj/hdlsrc/teste_sin_HDLcoder | ||
+ | ls *.vhd | ||
+ | |||
+ | ::* Use o ModelSim para compilar os arquivos e em seguida simular | ||
+ | vsim & | ||
+ | |||
+ | ::* No ModelSim execute os seguintes arquivos .do: | ||
+ | Subsystem_compile.do | ||
+ | Subsystem_tb_compile.do | ||
+ | Subsystem_tb_sim.do | ||
+ | |||
+ | ::* Observe que o sinal gerado pelo código VHDL é igual ao sinal calculado pelo Simulink. | ||
+ | <center> | ||
+ | [[Arquivo:teste_sin_ModelSim.png | 600 px]] | ||
+ | </center> | ||
+ | ::*Observe que no arquivo de testbench, existe uma instrução de ASSERT conferindo se os dois sinais são iguais: | ||
+ | <syntaxhighlight lang=vhdl> | ||
+ | IF Out1_testFailure = '0' THEN | ||
+ | ASSERT FALSE | ||
+ | REPORT "**************TEST COMPLETED (PASSED)**************" | ||
+ | SEVERITY NOTE; | ||
+ | ELSE | ||
+ | ASSERT FALSE | ||
+ | REPORT "**************TEST COMPLETED (FAILED)**************" | ||
+ | SEVERITY NOTE; | ||
+ | END IF; | ||
+ | </syntaxhighlight> | ||
+ | :* Exemplo mais complexo | ||
+ | ::* Abra o modelo | ||
+ | sfir_fixed | ||
+ | ::* ajuste as configurações | ||
+ | hdlsetup('sfir_fixed') | ||
+ | ::*Siga o tutorial [http://www.mathworks.com/help/hdlcoder/gs/example-generating-hdl-code-from-a-simulink-model.html HDL Code Generation from a Simulink Model] | ||
+ | |||
+ | |||
<!-- | <!-- | ||
;Aula 30 (15 jun): | ;Aula 30 (15 jun): | ||
Linha 1 108: | Linha 1 351: | ||
*Entrega dos Atividades Extraclasse ao longo do semestre AE1 a AE(N). A entrega, detalhes e prazos de cada AE serão indicados na plataforma Moodle | *Entrega dos Atividades Extraclasse ao longo do semestre AE1 a AE(N). A entrega, detalhes e prazos de cada AE serão indicados na plataforma Moodle | ||
− | + | ||
− | {{collapse top | AP1 - Projeto de Filtros Digitais IIR e FIR (Entrega e prazos ver Moodle)}} | + | {{collapse top | expand=true | AP1 - Projeto de Filtros Digitais IIR e FIR (Entrega e prazos ver Moodle)}} |
Esta avaliação visa verificar se você conhece a metodologia de projeto de filtros digitais IIR e FIR: | Esta avaliação visa verificar se você conhece a metodologia de projeto de filtros digitais IIR e FIR: | ||
* No caso dos filtros IIR, a metodologia envolve a realização de: (a) projeto de um filtro protótipo analógico passa-baixas H(p); (b) transformação em frequência do filtro H(p) -> H(s), obtendo o filtro LP, HP, BP, BS, conforme o tipo de filtro desejado; (c) transformação do filtro analógico em filtro digital H(s) -> H(z) utilizando a transformação "Bilinear" ou pela transformação "Invariante ao Impulso". | * No caso dos filtros IIR, a metodologia envolve a realização de: (a) projeto de um filtro protótipo analógico passa-baixas H(p); (b) transformação em frequência do filtro H(p) -> H(s), obtendo o filtro LP, HP, BP, BS, conforme o tipo de filtro desejado; (c) transformação do filtro analógico em filtro digital H(s) -> H(z) utilizando a transformação "Bilinear" ou pela transformação "Invariante ao Impulso". | ||
Linha 1 115: | Linha 1 358: | ||
;ESPECIFICAÇÕES: | ;ESPECIFICAÇÕES: | ||
− | * Nesta avaliação é solicitado que cada equipe projeto os mesmos filtros IIR e FIR. Os detalhes de cada filtro são indicados na tabela abaixo. Para todos os filtros | + | * Nesta avaliação é solicitado que cada equipe projeto os mesmos filtros usando um modelo IIR e também FIR. Os detalhes de cada filtro são indicados na tabela abaixo. Para todos os filtros é importante considerar a frequência de amostragem do sinal a ser processado pelo filtro. |
Todas equipes tem filtros com As = 20, 30, 40, e Ap = 0.5, 1. 2 | Todas equipes tem filtros com As = 20, 30, 40, e Ap = 0.5, 1. 2 | ||
{| class="wikitable" border="1" cellpadding="3" cellspacing="0" style="text-align:left; font-size:100%" bgcolor="#efefef" | {| class="wikitable" border="1" cellpadding="3" cellspacing="0" style="text-align:left; font-size:100%" bgcolor="#efefef" | ||
Linha 1 122: | Linha 1 365: | ||
! scope="col" width=15% align="center"| Filtro 2 | ! scope="col" width=15% align="center"| Filtro 2 | ||
! scope="col" width=20% align="center"| Filtro 3 | ! scope="col" width=20% align="center"| Filtro 3 | ||
+ | ! scope="col" width=20% align="center"| Filtro 4 | ||
|- | |- | ||
− | | Equipe 1 ( | + | | Equipe 1 (ALLEX e DOUGLAS) |
− | | LP - (f1 = 500 Hz; f2 = 800 Hz, Ap = 1 dB, As = 30 dB, GdB = 0 dB) | + | | LP - (fa = 2000 Hz, f1 = 500 Hz; f2 = 800 Hz, Ap = 1 dB, As = 30 dB, GdB = 0 dB) |
− | | HP - (f1 = 500 Hz; f2 = 800 Hz, Ap = 2 dB, As = 20 dB, GdB = 10 dB) | + | | HP - (fa = 2000 Hz, f1 = 500 Hz; f2 = 800 Hz, Ap = 2 dB, As = 20 dB, GdB = 10 dB) |
− | | BP - (f1 = | + | | BP - (fa = 2000 Hz, f1 = 600 Hz; f2 = 750 Hz, f3 = 800 Hz; f4 = 950 Hz, Ap = 0.5 dB, As = 40 dB, GdB = 0 dB) |
+ | | BS - (fa = 4000 Hz, f1 = 1200 Hz; f2 = 1250 Hz, f3 = 1300 Hz; f4 = 1400 Hz, Ap = 0.5 dB, As = 60 dB, GdB = 0 dB) | ||
|- | |- | ||
− | | Equipe 2 ( | + | | Equipe 2 (AMELIZA e MARCONE) |
− | | LP - (f1 = 1000 Hz; f2 = 1300 Hz, Ap = 2 dB, As = 30 dB, GdB = 5 dB) | + | | LP - (fa = 4000 Hz, f1 = 1000 Hz; f2 = 1300 Hz, Ap = 2 dB, As = 30 dB, GdB = 5 dB) |
− | | HP - (f1 = 1000 Hz; f2 = 1300 Hz, Ap = 0.5 dB, As = 40 dB, GdB = 0 dB) | + | | HP - (fa = 4000 Hz, f1 = 1000 Hz; f2 = 1300 Hz, Ap = 0.5 dB, As = 40 dB, GdB = 0 dB) |
− | | BP - (f1 = 1000 Hz; f2 = 1200 Hz, f3 = 1250 Hz; f4 = 1300 Hz, Ap = 1 dB, As = 20 dB, GdB = 0 dB) | + | | BP - (fa = 4000 Hz, f1 = 1000 Hz; f2 = 1200 Hz, f3 = 1250 Hz; f4 = 1300 Hz, Ap = 1 dB, As = 20 dB, GdB = 0 dB) |
+ | | BS - (fa = 6000 Hz, f1 = 1200 Hz; f2 = 1250 Hz, f3 = 1300 Hz; f4 = 1400 Hz, Ap = 0.5 dB, As = 60 dB, GdB = 0 dB) | ||
|- | |- | ||
− | | Equipe 3 ( | + | | Equipe 3 (ANDREY e VINICIUS) |
− | | LP - (f1 = 2800 Hz; f2 = 3200 Hz, Ap = 1 dB, As = 40 dB, GdB = 0 dB) | + | | LP - (fa = 10000 Hz, f1 = 2800 Hz; f2 = 3200 Hz, Ap = 1 dB, As = 40 dB, GdB = 0 dB) |
− | | HP - (f1 = 2800 Hz; f2 = 3200 Hz, Ap = 0.5 dB, As = 20 dB, GdB = 0 dB) | + | | HP - (fa = 10000 Hz, f1 = 2800 Hz; f2 = 3200 Hz, Ap = 0.5 dB, As = 20 dB, GdB = 0 dB) |
− | | BP - (f1 = 3000 Hz; f2 = 3200 Hz, f3 = 3400 Hz; f4 = 3500 Hz, Ap = 2 dB, As = 30 dB, GdB = -10 dB) | + | | BP - (fa = 10000 Hz, f1 = 3000 Hz; f2 = 3200 Hz, f3 = 3400 Hz; f4 = 3500 Hz, Ap = 2 dB, As = 30 dB, GdB = -10 dB) |
+ | | BS - (fa = 8000 Hz, f1 = 1200 Hz; f2 = 1250 Hz, f3 = 1300 Hz; f4 = 1400 Hz, Ap = 0.5 dB, As = 60 dB, GdB = 0 dB) | ||
|} | |} | ||
Linha 1 149: | Linha 1 396: | ||
! scope="col" width=15% align="center"| Filtro 2 | ! scope="col" width=15% align="center"| Filtro 2 | ||
! scope="col" width=20% align="center"| Filtro 3 | ! scope="col" width=20% align="center"| Filtro 3 | ||
+ | ! scope="col" width=20% align="center"| Filtro 4 | ||
|- | |- | ||
| Equipe 1 | | Equipe 1 | ||
Linha 1 154: | Linha 1 402: | ||
| IIR - Butterworth, FIR - Janela Ajustável | | IIR - Butterworth, FIR - Janela Ajustável | ||
| IIR - Eliptico, FIR - PM | | IIR - Eliptico, FIR - PM | ||
+ | | IIR - Chebyshev II, FIR - PM | ||
|- | |- | ||
| Equipe 2 | | Equipe 2 | ||
Linha 1 159: | Linha 1 408: | ||
| IIR - Chebyshev II, FIR - Janela Fixa | | IIR - Chebyshev II, FIR - Janela Fixa | ||
| IIR - Eliptico, FIR - PM | | IIR - Eliptico, FIR - PM | ||
+ | | IIR - Chebyshev I, FIR - PM | ||
|- | |- | ||
| Equipe 3 | | Equipe 3 | ||
Linha 1 164: | Linha 1 414: | ||
| IIR - Butterworth, FIR - Janela Ajustável | | IIR - Butterworth, FIR - Janela Ajustável | ||
| IIR - Chebyshev II, FIR - PM | | IIR - Chebyshev II, FIR - PM | ||
+ | | IIR - Chebyshev I, FIR - PM | ||
|} | |} | ||
Linha 1 173: | Linha 1 424: | ||
:* Em todos os filtros busque obter a menor ordem que possibilite ter uma resposta de frequência que atende a sua especificação. | :* Em todos os filtros busque obter a menor ordem que possibilite ter uma resposta de frequência que atende a sua especificação. | ||
:* Se achar necessário utilize o FVTOOL e o FDAtool para a análise dos filtros. | :* Se achar necessário utilize o FVTOOL e o FDAtool para a análise dos filtros. | ||
− | |||
;ENTREGAS: | ;ENTREGAS: | ||
Linha 1 188: | Linha 1 438: | ||
:* Envie o relatório em pdf e os arquivos ".m" usando a plataforma Moodle. | :* Envie o relatório em pdf e os arquivos ".m" usando a plataforma Moodle. | ||
{{collapse bottom}} | {{collapse bottom}} | ||
− | + | <!-- | |
{{collapse top | expand=true| AP2 - Projeto de um Detector de DTMF (Entrega e prazos ver Moodle)}} | {{collapse top | expand=true| AP2 - Projeto de um Detector de DTMF (Entrega e prazos ver Moodle)}} | ||
* Projeto de um receptor [https://pt.wikipedia.org/wiki/DTMF DTMF]. | * Projeto de um receptor [https://pt.wikipedia.org/wiki/DTMF DTMF]. | ||
Linha 1 276: | Linha 1 526: | ||
{{collapse bottom}} | {{collapse bottom}} | ||
--> | --> | ||
+ | |||
==Referências Bibliográficas== | ==Referências Bibliográficas== | ||
<references/> | <references/> | ||
{{ENGTELECO}} | {{ENGTELECO}} |
Edição atual tal como às 10h14min de 28 de junho de 2019
Registro on-line das aulas
Unidade 1 | ||||||||
---|---|---|---|---|---|---|---|---|
Unidade 1
%% Experimento 2.3 - Filtros Digitais
% Exemplos e Experimentos baseados no livro:
% DINIZ, P. S. R., DA SILVA, E. A. B., e LIMA NETTO, S. Processamento Digital de Sinais: Projeto e Análise de Sistemas. 2. ed. Porto Alegre: Bookman, 2014. 976 p. ISBN 978-8582601235.
% FILE: Exp2_3.m
%% 1º filtro
p1 = 0.9*exp(1j*pi/4);
Z = [1 -1 ]'; P = [p1 p1']';
[num,den] = zp2tf(Z,P,1);
[h,w] = freqz(num,den);
figure(1); plot(w,abs(h)/max(abs(h)));
figure(2); zplane(num,den);
%% 2º filtro
z1 = exp(1j*pi/8);
z2 = exp(1j*3*pi/8);
p1 = 0.9*exp(1j*pi/4);
Z = [1 -1 z1 z1' z2 z2']';
P = [p1 p1' p1 p1' p1 p1']';
[num,den] = zp2tf(Z,P,1);
[h,w] = freqz(num,den);
figure(1); plot(w,abs(h)/max(abs(h)));
figure(2); zplane(num,den);
%% 3º filtro
z1 = exp(1j*pi/8);
z2 = exp(1j*3*pi/8);
p1 = 0.99*exp(1j*pi/4);
p2 = 0.9*exp(1j*pi/4 - 1j*pi/30);
p3 = 0.9*exp(1j*pi/4 + 1j*pi/30);
Z = [1 -1 z1 z1' z2 z2']';
P = [p1 p1' p2 p2' p3 p3']';
[num,den] = zp2tf(Z,P,1);
[h,w] = freqz(num,den);
figure(1); plot(w,abs(h)/max(abs(h)));
figure(2); zplane(num,den);
%% Carregando o som
clear, close, clc
load handel;
%% Reproduzindo o som
sound(y,Fs)
% Reproduzindo o som
%soundsc(y,Fs)
% Reproduzindo o som
%player = audioplayer(y, Fs);
%play(player);
%% Carregando o som
clear, close, clc
[y,Fs] = audioread('DTMF_8kHz.ogg');
%% Reproduzindo o som
sound(y,Fs)
%% Visualizando o som no DT
time = [0:length(y)-1]'/Fs;
plot(time',y'); xlabel('segundos');
xlim([0 time(end)]), ylim([-1 1]);
%% Visualizando o som no DF
Nfreq = length(y);
freq = linspace(0,2*pi,Nfreq)'*Fs/pi/2;
Y = fft(y,Nfreq)/Nfreq;
plot(freq,abs(Y)); xlabel('Hertz');
xlim([0 Fs/2]);
|
Unidade 2 | |||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Unidade 2
b = [1 1];
a = [1 1 5];
[z1,p1,k]=tf2zp(b,a)
z2 = roots(b);
p2 = roots(a);
zplane(b,a);
%%
freqs(b,a);
%%
syms s w
H(s) = (s+1)/(s^2 + s + 5);
pretty(H(1j*w))
latex(H(1j*w))
%%
ws = logspace(-2, 1, 1000);
h = H(1j*ws);
subplot(211)
semilogx(ws,abs(h)); grid on;
subplot(212)
semilogx(ws,angle(h)/pi*180); grid on;
Os polinômios de Chebyshev de primeira ordem são definidos pela relação recursiva: Os primeiros cinco polinômios de Chebyshev de primeira ordem são:
%% Projeto de filtro passa-baixas usando funções do Matlab
%% Especificações do filtro
Wp =16000; Ws = 20000; Ap = 0.3; As = 20; G0= 3;
% Para analisar o filtro projetado, use fvtool(b,a) para observar plano s, resposta em magnitude, fase e atraso de grupo
%% Butterworth
[n,Wn] = buttord(Wp, Ws, Ap, As,'s')
[b,a] = butter(n,Wn, 's');
%% Chebyshev I
n = cheb1ord(Wp, Ws, Ap, As,'s')
[b,a] = cheby1(n,Ap, Wp, 's');
%% Chebyshev II
n = cheb2ord(Wp, Ws, Ap, As,'s')
[b,a] = cheby2(n,As, Ws, 's');
%% Elliptic - Cauer
[n, Wn] = ellipord(Wp, Ws, Ap, As,'s')
[b,a] = ellip(n,Ap,As, Wn, 's');
fa = 200;
fN = fa/2;
wo = 60/fN; bw = 10/fN;
[b,a] = iirnotch(wo,bw);
fvtool(b,a);
syms z;
N(z) = poly2sym(b,z);
D(z) = poly2sym(a,z);
H(z) = N(z)/D(z);
pretty(vpa(H(z),3))
fa = 8000;
fN = fa/2;
wo = 941/fN; bw = 100/fN;
[b,a] = iirpeak(wo,bw);
fvtool(b,a);
syms z;
N(z) = poly2sym(b,z);
D(z) = poly2sym(a,z);
H(z) = N(z)/D(z);
pretty(vpa(H(z),3))
fa = 8000; fN = fa/2;
fo = 1000; bw = 20/fN;
[b,a] = iircomb(fa/fo,bw,'peak'); % ou use a flag 'notch'
fvtool(b,a);
syms z;
N(z) = poly2sym(b,z);
D(z) = poly2sym(a,z);
H(z) = N(z)/D(z);
pretty(vpa(H(z),3))
|
Unidade 3 | ||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Unidade 3
N = 10;
bi = 2*(rand(1,N)-0.5)
%% Tipo I - LP, HP, BS, BP
b = [bi (2*rand(1,1)-0.5) flip(bi)];
...
%% Tipo II - LP, BP
% tem um zero em -1
b = [bi flip(bi)];
...
%% Tipo III - BP
% tem um zero em 1 e -1
b = [bi 0 -flip(bi)];
...
%% Tipo IV - BP, HP
% tem um zero em 1
b = [bi -flip(bi)];
...
L = 64;
wvtool(rectwin(L), triang(L), bartlett(L), hann(L), hamming(L), blackman(L), blackmanharris(L), nuttallwin(L));
Projetar um filtro passa baixas usando uma janela temporal fixa (verificar a janela que atende a especificação) wp = 0.2*pi; Ap = 0.2 dB; Gp = 0 dB ws = 0.3*pi; As = 60 dB;
Projetar um filtro LP usando uma janela temporal fixa (hamming, bartlett-hanning, hanning). wp = 0.4*pi; Ap = 1 dB; Gp = 0 dB ws = 0.6*pi; As = 40 dB;
N = <ordem>
h_fir = fir1(N,Wn,hamming(N+1));
[Hw,w] =freqz(h_fir);
plot(w/pi,20*log10(abs(Hw)))
title(['hamming N = ' num2str(N)])
%fvtool(h_fir,1)
L = 64;
r = 60; % Chebyshev e Tukey
alpha = 3; % Gauss
betha = 8; % Kaiser
nbar = 10; % Taylor
wvtool(kaiser(L,betha), chebwin(L,r), gausswin(L,alpha),tukeywin(L,r), taylorwin(L,nbar,-r));
Para a janela de Kaiser, a estimação do fator e da ordem do filtro são obtidos por:
onde é a atenuação do lóbulo lateral e é a largura da banda de transição em rad/amostra. A janela de Kaiser é definida por:
onde : é a função de Bessel de ordem zero [1] Utilizando o Matlab é possível estimar esses valores utilizando a função kaiserord. Exemplo da obtenção de um filtro passa baixa com , , atenuação de 40 dB na "stopband" fsamp = 8000;
fcuts = [1000 1500];
mags = [1 0];
devs = [0.01 0.01];
[n,Wn,beta,ftype] = kaiserord(fcuts,mags,devs,fsamp);
Com os parâmetros é possível projetar o filtro usando a função fir1, que utiliza o método da janela para o projeto do filtro. h_fir = fir1(n,Wn,ftype,kaiser(n+1,beta),'noscale');
[Hw,w] =freqz(h_fir);
plot(w*fsamp/2/pi,20*log10(abs(Hw)))
title(['Kaiser filter N = ' num2str(n)])
%fvtool(h_fir,1)
|
Unidade 4 |
---|
Unidade 4
Paralisação pela Educação Pública Gratuita com Qualidade
Fs = 30000; % Sampling Frequency
Fpass = 12000; % Passband Frequency
Fstop = 13000; % Stopband Frequency
Dpass = 0.01; % Passband Ripple
Dstop = 0.01; % Stopband Attenuation
flag = 'scale'; % Sampling Flag
% Calculate the order from the parameters using KAISERORD.
[N,Wn,BETA,TYPE] = kaiserord([Fpass Fstop]/(Fs/2), [1 0], [Dstop Dpass]);
% Calculate the coefficients using the FIR1 function.
b = fir1(N, Wn, TYPE, kaiser(N+1, BETA), flag);
hFIR = dsp.FIRFilter;
hFIR.Numerator = b;
% Para definir diretamente os coeficientes
realizemdl(hFIR)
% Para definir os coeficientes através de uma matriz de entrada
realizemdl(hFIR,'MapCoeffsToPorts','on');
DICAS:
Para configurar o Simulink para sistemas discretos execute o comando dspstartup.m antes de abrir um novo modelo.
x=-0.2;
% Word length = 8, fraction length = 7
q=quantizer([8,7]);
xq=quantize(q,x);
binxq=num2bin(q,xq)
% Word length = 16, fraction length = 15
q1=quantizer([16 15]);
xq1 = quantize(q1,x);
binxq1=num2bin(q1,xq1)
|
Unidade 5 - PROJETO FINAL |
---|
Unidade 5 - PROJETO FINALATUAL
hdllib Show Blocks Supported for HDL Code Generation
hdlsetup('teste_sin_HDLcoder')
cd hdl_prj/hdlsrc/teste_sin_HDLcoder ls *.vhd
vsim &
Subsystem_compile.do Subsystem_tb_compile.do Subsystem_tb_sim.do
IF Out1_testFailure = '0' THEN
ASSERT FALSE
REPORT "**************TEST COMPLETED (PASSED)**************"
SEVERITY NOTE;
ELSE
ASSERT FALSE
REPORT "**************TEST COMPLETED (FAILED)**************"
SEVERITY NOTE;
END IF;
sfir_fixed
hdlsetup('sfir_fixed')
|
Avaliações
- Entrega dos diversas Atividades Extraclasse ao longo do semestre.
- Entrega do Projeto Final. O projeto é avaliado nos quesitos:
- 1) Implementação do Sistema,
- 2) Documentação,
- 3) Avaliação Global do aluno no projeto.
- Entrega dos Atividades Extraclasse ao longo do semestre AE1 a AE(N). A entrega, detalhes e prazos de cada AE serão indicados na plataforma Moodle
AP1 - Projeto de Filtros Digitais IIR e FIR (Entrega e prazos ver Moodle) | ||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Esta avaliação visa verificar se você conhece a metodologia de projeto de filtros digitais IIR e FIR:
Todas equipes tem filtros com As = 20, 30, 40, e Ap = 0.5, 1. 2
Alguns detalhes sobre o projeto dos filtros para cada equipe.
|
Referências Bibliográficas
- ↑ 1,0 1,1 1,2 1,3 DINIZ, P. S. R., DA SILVA, E. A. B., e LIMA NETTO, S. Processamento Digital de Sinais: Projeto e Análise de Sistemas. 2. ed. Porto Alegre: Bookman, 2014. 976 p. ISBN 978-8582601235
- ↑ 2,0 2,1 2,2 2,3 2,4 2,5 2,6 2,7 2,8 SHENOI, B. A. Introduction to Digital Signal Processing and Filter Design. 1.ed. New Jersey: John Wiley-Interscience, 2006. 440 p. ISBN 978-0471464822
- ↑ LATHI, Bhagwandas P. Sinais e Sistemas Lineares. 2. ed. Porto Alegre: Artmed-Bookman, 2007. 856 p. ISBN 978-8560031139