Mudanças entre as edições de "PSD29007-Engtelecom(2019-2) - Prof. Marcos Moecke"
(→ATUAL) |
|||
(27 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== | ||
===Unidade 1=== | ===Unidade 1=== | ||
− | {{collapse top | + | {{collapse top | Unidade 1}} |
;Aula 1 (29 jul): | ;Aula 1 (29 jul): | ||
*[[PSD-EngTel (Plano de Ensino) | Apresentação da disciplina]] | *[[PSD-EngTel (Plano de Ensino) | Apresentação da disciplina]] | ||
Linha 363: | Linha 363: | ||
===Unidade 2=== | ===Unidade 2=== | ||
− | {{collapse top | + | {{collapse top | Unidade 2}} |
;Aula 8 (22 ago): | ;Aula 8 (22 ago): | ||
*Filtros Analógicos: | *Filtros Analógicos: | ||
Linha 679: | Linha 679: | ||
:*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 (19 set): | ;Aula 16 (19 set): | ||
:* 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 725: | Linha 724: | ||
pretty(vpa(H(z),3)) | pretty(vpa(H(z),3)) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | ===Unidade 3=== | ||
+ | {{collapse_top | expand=true | Unidade 3 - Filtros FIR}} | ||
+ | ;Aula 16 (23 set): | ||
+ | *Filtros Digitais: Filtros FIR | ||
+ | :*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) | ||
+ | * 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)]; | ||
+ | ... | ||
+ | |||
+ | %% 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 17 e 18 (26 e 30 set) | ||
+ | :*Coeficientes da série de Fourier de filtros ideias: LP, HP, BP, BS | ||
+ | ::*Passa-baixas (''Low-pass'') | ||
+ | ::<math>c_\text{LP}(n) = \left \{ \begin{matrix} \frac{\omega_c}{\pi}; & \qquad n = 0 \\ \frac {\sin (\omega_c n)}{\pi n}; & \qquad \left | n \right | > 0 \end{matrix}\right. </math> | ||
+ | ::*Passa-altas (''High-pass'') | ||
+ | ::<math>c_\text{HP}(n) = \left \{ \begin{matrix} 1-\frac{\omega_c}{\pi}; \qquad n = 0 \\ -\frac {\sin (\omega_c n)}{\pi n}; \qquad \left | n \right | > 0 \end{matrix}\right. </math> | ||
+ | ::*Passa-faixa (''Band-pass'') | ||
+ | ::<math>c_\text{BP}(n) = \left \{ \begin{matrix} \frac{\omega_{c2}-\omega_{c1}}{\pi}; \qquad n = 0 \\ \frac {\sin (\omega_{c2} n)- \sin (\omega_{c1} n)}{\pi n}; \qquad \left | n \right | > 0 \end{matrix}\right. </math> | ||
+ | ::*Rejeita-banda (''Band-stop'') | ||
+ | ::<math>c_\text{BS}(n) = \left \{ \begin{matrix} 1-\frac{\omega_{c2}-\omega_{c1}}{\pi}; \qquad n = 0 \\ -\frac {\sin (\omega_{c2} n)- \sin (\omega_{c1} n)}{\pi n}; \qquad \left | n \right | > 0 \end{matrix}\right. </math> | ||
+ | :*Janela retangular, fenômeno de Gibbs | ||
+ | |||
+ | :*Estudar no Matlab as funções [http://www.mathworks.com/help/signal/ref/wintool.html wintool], [http://www.mathworks.com/help/signal/ref/wvtool.html wvtool], [http://www.mathworks.com/help/signal/ref/window.html window] | ||
+ | |||
+ | :*Ver pag. 249 a 256 de <ref name="SHENOI2006"/> | ||
+ | :*Ver [https://www.mathworks.com/help/signal/ug/fir-filter-design.html FIR Filter Design] | ||
+ | |||
+ | :*Uso de funções de janelamento temporal no projeto de filtros digitais. | ||
+ | :*Tipos de janelas temporais usadas no projeto de filtros digitais. | ||
+ | ::*Retangular | ||
+ | ::<math>w(n)=1; \qquad -M \le n \le M </math> | ||
+ | |||
+ | ::*Bartlett | ||
+ | ::<math>w(n)= 1 - \frac{\left | n \right |}{M+1}; \qquad -M \le n \le M </math> | ||
+ | |||
+ | ::*Hanning | ||
+ | ::<math>w(n) = 0.5 + 0.5 \cos \left( \frac{2\pi n}{2M+1} \right), -M \le n \le M</math> | ||
+ | |||
+ | ::*Hamming | ||
+ | ::<math>w(n) = 0.54 + 0.46 \cos\left(\frac{2\pi n}{2M+1}\right); \qquad -M \le n \le M</math> | ||
+ | |||
+ | ::*Blackman | ||
+ | ::<math>w(n) = 0.42 + 0.5 \cos\left(\frac{2\pi n}{2M+1}\right) + 0.08\cos\left(\frac{4\pi n}{2M+1}\right); \qquad -M \le n \le M</math> | ||
+ | * em todas as janelas <math>w\left ( n \right ) = 0 </math> quando <math> \left | n \right | \ge M</math> | ||
+ | ::onde <math>M </math> é <math>N/2</math> para <math>N</math> par e <math>(N+1)/2</math> para <math>N</math> impar | ||
+ | *Uso de janelas fixas no Matlab : [http://www.mathworks.com/help/signal/ref/rectwin.html rect], [http://www.mathworks.com/help/signal/ref/triang.html triang], [http://www.mathworks.com/help/signal/ref/bartlett.html bartlett], [http://www.mathworks.com/help/signal/ref/hann.html hann], [http://www.mathworks.com/help/signal/ref/hamming.html hamming], [http://www.mathworks.com/help/signal/ref/blackman.html blackman], [http://www.mathworks.com/help/signal/ref/blackmanharris.html blackmanharris], [http://www.mathworks.com/help/signal/ref/nuttallwin.html nuttall]. | ||
+ | ::ver também [http://mathworld.wolfram.com/ApodizationFunction.html apodization function] | ||
+ | <syntaxhighlight lang=matlab> | ||
+ | L = 64; | ||
+ | wvtool(rectwin(L), triang(L), bartlett(L), hann(L), hamming(L), blackman(L), blackmanharris(L), nuttallwin(L)); | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ;Tabela 5.1: | ||
+ | {| class="wikitable" border="1" cellpadding="3" cellspacing="0" style="text-align:center; font-size:100%" bgcolor="#efefef" | ||
+ | ! scope="col" width=25% align="center"| Janela | ||
+ | ! scope="col" width=10% align="center"| <math>A_{sl}</math> | ||
+ | ! scope="col" width=10% align="center"| <math>A_{s}</math> | ||
+ | ! scope="col" width=10% align="center"| <math>\Delta \omega</math> | ||
+ | {{tabFIRwindow | Retangular | 13.3| 20.33 | 0.92<math>\pi</math>/M }} | ||
+ | {{tabFIRwindow | Triangular | 26.6| 27.41 | }} | ||
+ | {{tabFIRwindow | Bartlett | 26.5| 27.48 | }} | ||
+ | {{tabFIRwindow | Hann | 31.5| 44.03 | 3.11<math>\pi</math>/M}} | ||
+ | {{tabFIRwindow | Bartlett-Hanning | 35.9| 40.77| }} | ||
+ | {{tabFIRwindow | Hamming | 42.5| 54.08 | 3.32<math>\pi</math>/M}} | ||
+ | {{tabFIRwindow | Bohman | 46.0| 51.84 | 7.01<math>\pi</math>/M}} | ||
+ | {{tabFIRwindow | Parzen | 53.1| 56.89 |}} | ||
+ | {{tabFIRwindow | Blackman | 58.1| 75.25 | 5.56<math>\pi</math>/M}} | ||
+ | {{tabFIRwindow | Flat Top | 88.0| 106.3| }} | ||
+ | {{tabFIRwindow | Blackman-Harris | 92.1| 108.8 |}} | ||
+ | {{tabFIRwindow | Nutfall | 93.8| 109.7|}} | ||
+ | |} | ||
+ | :*Dados acima obtidos para um filtro passa baixas de ordem N = 64 com <math>\omega_{c} = 0.5 \pi</math> | ||
+ | :*Projeto de filtro FIR utilizando janelas temporais fixas. | ||
+ | |||
+ | ::* Exemplo de projeto | ||
+ | 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; | ||
+ | ::* Informar qual o tipo de janela, a ordem obtida, e o valor de ''wc'' do projeto final | ||
+ | |||
+ | ::* Exemplo de projeto | ||
+ | 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; | ||
+ | ::* Comparar os 3 tipos de janela, a ordem obtida, e o valor de ''wc'' em cada projeto. | ||
+ | |||
+ | :: Use como uma estimativa inicial os valores da Tabela 5.1 pag. 268. | ||
+ | ::* PASSO 1 - Escolher o tipo de janela de acordo com a atenuação do lóbulo lateral Asl e As. | ||
+ | ::* 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 4 - Ajuste o ganho do filtro para que a resposta na banda de passagem fique abaixo da especificação maxima. | ||
+ | ::* 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. | ||
+ | ::* PASSO 6 - Corrija o valor de projeto dos coeficientes Clp do filtro ideal, a janela e a resposta ao impulso. | ||
+ | ::* 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. | ||
+ | ::*Projete os dois filtros projetados anteriormente como IIR, utilizando 3 janelas diferentes. Compare os filtros obtidos com os filtros IIR. | ||
+ | <syntaxhighlight lang=matlab> | ||
+ | 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) | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | :*Ver pag. 256 a 265 de <ref name="SHENOI2006"/> | ||
+ | :*Ver artigos: | ||
+ | ::*[https://ieeexplore-ieee-org.ez130.periodicos.capes.gov.br/stamp/stamp.jsp?tp=&arnumber=21693 A new window and comparison to standard windows] Yeong Ho Ha ; Pearce, J.A. IEEE Transactions on Acoustics, Speech, and Signal Processing, Feb. 1989, Vol.37(2), pp.298-301. | ||
+ | ::*[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 18 (03 out): | ||
+ | * Projetar os filtros LP, HP e BP de acordo com as especificações dadas. | ||
+ | |||
+ | ;Aula 19 (07 out): | ||
+ | *Filtros Digitais: Filtros FIR | ||
+ | *Projeto de filtro FIR utilizando janelas temporais ajustáveis | ||
+ | :*Uso de janelas ajustáveis no Matlab: [http://www.mathworks.com/help/signal/ref/kaiser.html kaiser], [http://www.mathworks.com/help/signal/ref/chebwin.html chebyshev], [http://www.mathworks.com/help/signal/ref/gausswin.html gauss], [http://www.mathworks.com/help/signal/ref/tukeywin.html tukey], [http://www.mathworks.com/help/signal/ref/taylorwin.html taylor]. | ||
+ | <syntaxhighlight lang=matlab> | ||
+ | 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)); | ||
+ | </syntaxhighlight> | ||
+ | Para a janela de Kaiser, a estimação do fator <math>\beta </math> e da ordem do filtro <math> N </math> são obtidos por: | ||
+ | |||
+ | <math>\beta = \left \{ \begin{matrix} 0.1102 (\alpha-8.7), & \alpha > 50, \\ 0.5842 (\alpha- 21)^{0.4} + 0.07886 (\alpha- 21) , & 50 \ge \alpha \ge 21, \\ 0, & \alpha < 21. \end{matrix}\right.</math> | ||
+ | |||
+ | <math> N = \frac {\alpha - 8} {2.285 \Delta \omega} + 1. </math> | ||
+ | |||
+ | onde <math> \alpha </math> é a atenuação do lóbulo lateral e <math> \Delta \omega </math> é a largura da banda de transição em rad/amostra. | ||
+ | |||
+ | A janela de Kaiser é definida por: | ||
+ | |||
+ | <math> w(n) = \frac{I_0 \left(\beta \sqrt{1-(\frac{n-\alpha}{\alpha})^2} \right)}{I_0(\beta)} </math> | ||
+ | |||
+ | onde :<math> I_0(x) = 1+ \sum_{k=1}^\infty {\left( \frac{(\frac{x}{2})^k}{k!}\right)}^2 </math> é a função de Bessel de ordem zero [http://mathworld.wolfram.com/ModifiedBesselFunctionoftheFirstKind.html] | ||
+ | |||
+ | Utilizando o Matlab é possível estimar esses valores utilizando a função kaiserord. Exemplo da obtenção de um filtro passa baixa com <math> f_{pass} = 1000 Hz </math>, <math> f_{stop} = 1500 Hz </math>, <math> f_{amostragem} = 8000 Hz </math> atenuação de 40 dB na "stopband" | ||
+ | |||
+ | <syntaxhighlight lang=matlab> | ||
+ | fsamp = 8000; | ||
+ | fcuts = [1000 1500]; | ||
+ | mags = [1 0]; | ||
+ | devs = [0.01 0.01]; | ||
+ | [n,Wn,beta,ftype] = kaiserord(fcuts,mags,devs,fsamp); | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | 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. | ||
+ | |||
+ | <syntaxhighlight lang=matlab> | ||
+ | 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) | ||
+ | </syntaxhighlight> | ||
+ | :*Ver as funções [http://www.mathworks.com/help/signal/ref/fir1.html fir1], [http://www.mathworks.com/help/signal/ref/kaiserord.html kaiserord] do Matlab. | ||
+ | :*Ver pag. 266 a 273 de <ref name="SHENOI2006"/> | ||
+ | :* Uso das funções [http://www.mathworks.com/help/signal/ref/window.html window] e [http://www.mathworks.com/help/signal/ref/fir1.html fir1] do Matlab para projeto de filtro FIR | ||
+ | |||
+ | <!-- | ||
+ | <code> | ||
+ | %% Exemplo de Filtro | ||
+ | wp1 = 0.1 \pi; | ||
+ | ws1 = 0.2 \pi; | ||
+ | ws2 = 0.6 \pi; | ||
+ | wp2 = 0.8 \pi; | ||
+ | Ap = 1 dB; | ||
+ | Ar = 40 dB; | ||
+ | </syntaxhighlight> | ||
+ | --> | ||
+ | |||
+ | ;Aula 22 (10 out): | ||
+ | *Filtros Digitais: Filtros FIR | ||
+ | :*Uso de janelas ajustáveis no Matlab: [http://www.mathworks.com/help/signal/ref/kaiser.html kaiser], [http://www.mathworks.com/help/signal/ref/chebwin.html chebyshev], [http://www.mathworks.com/help/signal/ref/gausswin.html gauss], [http://www.mathworks.com/help/signal/ref/tukeywin.html tukey], [http://www.mathworks.com/help/signal/ref/taylorwin.html taylor]. | ||
+ | |||
+ | |||
+ | :*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], [https://ieeexplore-ieee-org.ez130.periodicos.capes.gov.br/stamp/stamp.jsp?tp=&arnumber=1083419 Chebyshev Approximation for Nonrecursive | ||
+ | Digital Filters with Linear Phase]. | ||
+ | :*[http://mathworld.wolfram.com/RemezAlgorithm.html Remez exchange algorithm] - o básico em Wolfram Alpha | ||
+ | :*[http://eeweb.poly.edu/iselesni/EL713/remez/remez.pdf Remez exchange algorithm] - o detalhe com implementação em Matlab. Como resolver as anomalias na banda de transição. | ||
+ | :*[http://www.ee.ic.ac.uk/hp/staff/dmb/courses/DSPDF/00700_OptimalFIR.pdf] | ||
+ | *Exemplo do projeto de um filtro passa-baixas, com minima ordem (Filtro de Parks-McClellan) com frequência de passagem de 1000 Hz e frequência de rejeição de 1500 Hz, dada uma frequência de amostragem de 8000 Hz. Considere que a atenuação na banda de rejeição é de no mínimo 40 dB e o ripple máximo na banda passante é de 0.4 dB. | ||
+ | |||
+ | <syntaxhighlight lang=matlab> | ||
+ | fa = 8000; | ||
+ | |||
+ | Ap = 0.4; | ||
+ | Ar = 40; | ||
+ | |||
+ | fp = 1000; | ||
+ | fr = 1500; | ||
+ | |||
+ | f = [fp fr]; | ||
+ | a = [1 0]; | ||
+ | dev = [(10^(Ap/20)-1)/(10^(Ap/20)+1) 10^(-Ar/20)]; | ||
+ | [n,fo,ao,w] = firpmord(f,a,dev,fa); | ||
+ | b = firpm(n,fo,ao,w); | ||
+ | [h,w] = freqz(b,1,1024,fa); | ||
+ | plot(w, 20*log10(abs(h))); hold on; | ||
+ | plot([0 fr fr fa/2], [Ap/2 Ap/2 -Ar -Ar],':m') | ||
+ | plot([0 fp fp], [-Ap/2 -Ap/2 -(Ar+30)],':m'); | ||
+ | ylim([-(Ar+30) Ap/2+10]) | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | |||
+ | <!-- | ||
+ | ;Aula 23 (14 out): | ||
+ | *Projeto de filtro FIR | ||
+ | :*projetar os filtros usando: 1) Janela fixa 2) Janela ajustável 3) Parks-McClellan. | ||
+ | :*garantir que o filtro seja de menor ordem em cada caso, mas que esteja dentro das especificações. | ||
+ | :*se necessário ajustar os valores de fs, fp, Ap, As, e a ordem do filtro, indicando o critério utilizado para o ajuste. | ||
+ | |||
+ | |||
+ | <syntaxhighlight lang=matlab> | ||
+ | %% Projetar o filtro passa baixas | ||
+ | fp = 1200 Hz; | ||
+ | fs = 1380 Hz; | ||
+ | fa = 8000 Hz; | ||
+ | Ap = 1 dB; | ||
+ | Ar = 50 dB; | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | <syntaxhighlight lang=matlab> | ||
+ | %% Projetar o filtro passa altas | ||
+ | fs = 1200 Hz; | ||
+ | fp = 1380 Hz; | ||
+ | fa = 8000 Hz; | ||
+ | Ap = 1 dB; | ||
+ | Ar = 50 dB; | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ;Aula 23 (10 mai) | ||
+ | |||
+ | *Projeto de filtro FIR | ||
+ | :*projetar os filtros usando: 1) Janela fixa 2) Janela ajustável 3) Parks-McClellan. | ||
+ | :*garantir que o filtro seja de menor ordem em cada caso, mas que esteja dentro das especificações. | ||
+ | :*se necessário ajustar os valores de fs, fp, Ap, As, e a ordem do filtro, indicando o critério utilizado para o ajuste. | ||
+ | |||
+ | <syntaxhighlight lang=matlab> | ||
+ | %% Projetar o filtro passa faixa | ||
+ | fs1 = 800 Hz; | ||
+ | fp1 = 900 Hz; | ||
+ | fp2 = 1000 Hz; | ||
+ | fs2 = 1300 Hz; | ||
+ | fa = 8000 Hz; | ||
+ | Ap = 1 dB; | ||
+ | Ar = 50 dB; | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | <syntaxhighlight lang=matlab> | ||
+ | %% Projetar o filtro rejeita faixa | ||
+ | fp1 = 800 Hz; | ||
+ | fs1 = 900 Hz; | ||
+ | fs2 = 1000 Hz; | ||
+ | fp2 = 1300 Hz; | ||
+ | fa = 8000 Hz; | ||
+ | Ap = 1 dB; | ||
+ | Ar = 50 dB; | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Entrega do trabalho de projeto e análise de filtros digitais (05 de junho de 2019, as 9:40) | ||
+ | |||
+ | <!-- | ||
+ | ;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/gs/design-and-implement-a-filter.html] no Simulink. | ||
+ | |||
+ | ;Aula 23 (23 out): | ||
+ | :*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 24 (25 out): | ||
+ | :*Uso do Simulink | ||
+ | :*Tipos de Solver ([http://www.mathworks.com/help/simulink/ug/choosing-a-solver.html Choose a Solver]). | ||
+ | :*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]). | ||
+ | :*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 25 (ESTUDOS EXTRACLASSE): | ||
+ | para compensar a palestra da MCC | ||
+ | --> | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | ===Unidade 4 - Realização de Filtros=== | ||
+ | {{collapse top| expand=true | Unidade 4 - Realização de Filtros}} | ||
+ | |||
+ | ; Aula 24 (17 out): | ||
+ | |||
+ | *Realização de Filtros | ||
+ | :* Realização de filtros FIR: Forma Direta. | ||
+ | <center>[[Arquivo:FIR_FD_MathWorks.png |800 px]]</center> | ||
+ | <center> Figura 1 - Realização de filtros FIR na Forma Direta </center> | ||
+ | |||
+ | :* Realização de filtros FIR: Forma Transposta. A transposição consiste na inversão do fluxo de todos os sinais, substituição de nós de soma por derivações e as derivações por soma. A entrada e saída também devem ser invertidas. A realização da transposição não altera o sistema implementado. | ||
+ | |||
+ | <center>[[Arquivo:FIR_FDT_MathWorks.png |800 px]]</center> | ||
+ | <center> Figura 2 - Realização de filtros FIR na Forma Transposta</center> | ||
+ | |||
+ | <center>[[Arquivo:FIR_FDT2_MathWorks.png |800 px]]</center> | ||
+ | <center> Figura 3 - Realização de filtros FIR na Forma Transposta</center> | ||
+ | |||
+ | :* Realização de filtros FIR de fase linear: simétrico tipo I e II e antissimétrico tipo III e IV. | ||
+ | |||
+ | <center>[[Arquivo:FIR_Sym2_MathWorks.png |600 px]]</center> | ||
+ | <center> Figura 4 - Realização de filtros FIR de fase linear Simétrico I </center> | ||
+ | |||
+ | <center>[[Arquivo:FIR_Sym1_MathWorks.png |600 px]]</center> | ||
+ | <center> Figura 5 - Realização de filtros FIR de fase linear Simétrico II </center> | ||
+ | |||
+ | <center>[[Arquivo:FIR_AntiSym3_MathWorks.png |600 px]]</center> | ||
+ | <center> Figura 6 - Realização de filtros FIR de fase linear Antisimétrico III</center> | ||
+ | |||
+ | <center>[[Arquivo:FIR_AntiSym4_MathWorks.png |600 px]]</center> | ||
+ | <center> Figura 7 - Realização de filtros FIR de fase linear Antisimétrico IV</center> | ||
+ | :* Realização de Filtros FIR [http://la.mathworks.com/help/dsp/ug/using-filter-designer.html usando o FDATool] | ||
+ | |||
+ | :* Estudar [http://www.mathworks.com/help/simulink/slref/discretefirfilter.html estrutura de filtros disrcetos FIR no Matlab], [http://www.mathworks.com/help/dsp/ref/filterrealizationwizard.html Filter Realization Wizard - Reference], [http://www.mathworks.com/help/dsp/ug/filter-realization-wizard.html Filter Realization Wizard - User Guide]. | ||
+ | :*Ver pag. 303 a 312 de <ref name="SHENOI2006"/>. | ||
+ | |||
+ | :* Realização de Filtros usando o comando [http://www.mathworks.com/help/dsp/ref/realizemdl.html realizemdl] do MatLab | ||
+ | <syntaxhighlight lang=matlab> | ||
+ | |||
+ | 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'); | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ; Aula 25 (21 out): | ||
+ | :*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 (31 out): | ||
+ | * Avaliação A1. | ||
+ | |||
+ | |||
+ | ;Aula 28 e 29 (04 e 07 nov): | ||
+ | *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]). | ||
+ | |||
+ | *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> | ||
+ | |||
+ | :*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 (11 nov): | ||
+ | :* 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> | ||
+ | ::* Separando H(z) em dois blocos <math>\ H(z) = H_1(z) H_2(z) </math>, e obtendo o sinal intermediário W(z) ou Y(z) dependendo da ordem dos blocos. | ||
+ | <center>[[Arquivo:H1_H2_MathWorks.png |600 px]]</center> | ||
+ | <center> Figura 7 - Separação do filtro IIR H(z) em H1(z) e H2(z)</center> | ||
+ | |||
+ | : Com o ordenamento dos blocos <math>\ H_1(z) </math> e <math>\ H_2(z) </math> em ordem direta teremos a Forma Direta I: | ||
+ | :<math> H_1(z) = \frac{W(z)}{X(z)} = b_0 + b_1 z^{-1} + b_2 z^{-2} </math> | ||
+ | :<math> H_2(z) = \frac{Y(z)}{W(z)} = \frac{1}{1 + a_1 z^{-1} + a_2 z^{-2}} </math> | ||
+ | :Podemos obter a realização de <math>\ H_1(z) </math> na forma direta. | ||
+ | :<math>\ W(z) = (b_0 + b_1 z^{-1} + b_2 z^{-2})X(z) </math> | ||
+ | :Para obter a realização de <math>\ H_2(z) </math> , é necessário reescrever a saída <math>\ Y(z) </math> em função de <math>\ W(z) </math> e das saídas anteriores <math>\ Y(z) z^{-1} </math> e <math>\ Y(z) z^{-2} </math>: | ||
+ | :<math>\ Y(z) = \frac{W(z)}{1 + a_1 z^{-1} + a_2 z^{-2}} </math> | ||
+ | :<math>\ Y(z)({1 + a_1 z^{-1} + a_2 z^{-2}}) = W(z) </math> | ||
+ | :<math>\ Y(z) = W(z) - a_1 Y(z) z^{-1} - a_2 Y(z) z^{-2} </math> | ||
+ | <center>[[Arquivo:IIR_FD1_MathWorks.png |600 px]]</center> | ||
+ | <center> Figura 8 - Realização de filtros IIR na Forma Direta I</center> | ||
+ | |||
+ | : Com o ordenamento dos blocos <math>\ H_2(z) </math> e <math>\ H_1(z) </math> em ordem reversa teremos a Forma Direta II: | ||
+ | :<math> H_2(z) = \frac{V(z)}{X(z)} = \frac{1}{1 + a_1 z^{-1} + a_2 z^{-2}} </math> | ||
+ | :<math>\ V(z) = X(z) - a_1 V(z) z^{-1} - a_2 V(z) z^{-2} </math> | ||
+ | |||
+ | :<math> H_1(z) = \frac{Y(z)}{V(z)} = b_0 + b_1 z^{-1} + b_2 z^{-2} </math> | ||
+ | :<math>\ Y(z) = (b_0 + b_1 z^{-1} + b_2 z^{-2})V(z) </math> | ||
+ | |||
+ | <center>[[Arquivo:IIR_FD2a_MathWorks.png |600 px]]</center> | ||
+ | <center> Figura 9 - Realização de filtros IIR na Forma Direta II</center> | ||
+ | |||
+ | :Considerando que os sinais no centro são idênticos podemos simplificar e obter a Forma Direta II (Canônica): | ||
+ | <center>[[Arquivo:IIR_FD2b_MathWorks.png |600 px]]</center> | ||
+ | <center> Figura 10 - Realização de filtros IIR na Forma Direta II Canônica</center> | ||
+ | |||
+ | :Considerando as regras de transposição podemos obter a forma transposta I e II. A transposição consiste na inversão do fluxo de todos os sinais, substituição de nós de soma por derivações e as derivações por soma. A entrada e saída também devem ser invertidas. A realização da transposição não altera o sistema implementado. | ||
+ | |||
+ | <center>[[Arquivo:IIR_FT1_MathWorks.png |600 px]]</center> | ||
+ | <center> Figura 11 - Realização de filtros IIR na Forma Transposta I</center> | ||
+ | |||
+ | <center>[[Arquivo:IIR_FT2_MathWorks.png |600 px]]</center> | ||
+ | <center> Figura 12 - Realização de filtros IIR na Forma Transposta II</center> | ||
+ | |||
+ | :* 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. | ||
+ | |||
+ | ====ATUAL==== | ||
+ | ;Aula 31 (14 nov): | ||
+ | :* 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]. | ||
+ | :* Implementar o exercício 6.3: Forma direta I, Forma direta II, Cascata. | ||
+ | :* Implementar o exercício 6.13: Forma direta I, Cascata e Paralela. | ||
+ | :*Ver pag. 313 a de 353 <ref name="SHENOI2006"/>. | ||
+ | :*Ver pag. 469 a 474 do Lathi <ref name="Lathi2007"> LATHI, Bhagwandas P. '''Sinais e Sistemas Lineares'''. 2. ed. Porto Alegre: Artmed-Bookman, 2007. 856 p. ISBN 978-8560031139 </ref> | ||
+ | *Filtros Digitais: Ferramentas do Matlab para projeto | ||
+ | <!-- | ||
+ | :*[http://www.mathworks.com/help/signal/ug/practical-introduction-to-digital-filter-design.html Practical Introduction to Digital Filter Design] | ||
+ | :*[http://www.mathworks.com/help/signal/ug/filter-design-gallery.html Filter Design Gallery] | ||
+ | --> | ||
+ | :*Função para projeto de filtros - [http://www.mathworks.com/help/signal/ref/designfilt.html designfilt] | ||
+ | |||
+ | * Realização de filtros FIR: Cascata, Polifase | ||
+ | :*Vantagens do uso de filtro Polifase: | ||
+ | ::1) Quando o sinal será subamostrado (downsampling) de "D" amostras após a filtragem, a complexidade da implementação é reduzida de "D" vezes, pois apenas uma das "fases" precisa ser implementada. | ||
+ | ::2) Para reduzir o harware a ser implementado, é possível implementar apenas uma das "fases" do filtro e trocar "D" vezes os coeficientes. | ||
+ | ::* 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]--> | ||
+ | |||
+ | *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/ug/use-fdatool-with-dsp-system-toolbox-software.html?searchHighlight=fdatool&s_tid=doc_srchtitle Use Filter Designer with DSP System Toolbox Software] | ||
+ | <syntaxhighlight lang=matlab> | ||
+ | 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) | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | :*Ler [http://www.clivemaxfield.com/diycalculator/sp-round.shtml Tipos de arredondamento], [https://www.eetimes.com/document.asp?doc_id=1274485 An introduction to different rounding algorithms] | ||
+ | *Sobre ponto flutuante [https://baseconvert.com/ieee-754-floating-point] | ||
+ | |||
+ | <!-- | ||
+ | ;Aula 33 (19 jun) | ||
+ | *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. | ||
+ | |||
+ | *Considere que para o número de elementos lógicos utilizados para: | ||
+ | ::Multiplicador => M x 2 x B | ||
+ | ::Somador => S 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) | ||
+ | *Após a realização do filtro, exporte o modelo do filtro para o Simulink. | ||
+ | --> | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | |||
+ | ===Unidade 5 - Projeto Final=== | ||
+ | {{collapse top| expand=true | Unidade 5 - Projeto Final}} | ||
+ | |||
+ | ; Aula XX (18 nov): | ||
+ | {{collapse top | expand=true| PF - Projeto de uma Unidade de Resposta Audível (URA) (Entrega e prazos ver Moodle)}} | ||
+ | * Projeto de uma Unidade de Resposta Audível (URA). O projeto é constituído de um receptor [https://pt.wikipedia.org/wiki/DTMF DTMF], que discrimina os números DTMF "123456789*0#". A saída desse discriminador deverá ser usada para comutar o sinal de audio de entrada com (fa = 44,1 kHz) para a saída de audio (0 até 9). Uma URA teria ainda um sistema de controle das mensagens a ser enviadas depois de cada interação com o usuário, mas para simplificar é considerado que após a recepção do sinal DTMF a comutação já é realizada. | ||
+ | |||
+ | ::* A frequência de amostragem ''fa2'' do sinal de entrada no sistema mostrado abaixo é de 44,1/N kHz, no entanto o sinal gerado no AUDACITY é amostrado em fa1 = 44,1 kHz, portanto antes do circuito abaixo é necessário incluir um filtro antialiasing (low pass) com fc = (44,1/2)/N kHz e um circuito para subamostrar (downsampling) o sinal com fa1 = 44,1 kHz. Esse filtro deverá ser do tipo IIR, sendo de aproximação Butterworth ou Chebyshev tipo 1, para que tenha uma resposta de frequência monotonicamente decrescente após a frequência de corte Assim o sistema terá duas frequências de amostragem, '''fa1 = 44,1 kHz''' até o subamostrador e '''fa2 = 44,1/N kHz''' depois deste circuito. O fator de subamostragem do sinal de entrada a ser usado por cada equipe é mostrado na tabela abaixo. | ||
+ | <center> | ||
+ | {| class="wikitable" border="1" cellpadding="3" cellspacing="0" style="text-align:left; font-size:100%" bgcolor="#efefef" | ||
+ | ! scope="col" width=20% align="left"| Equipe | ||
+ | ! scope="col" width=40% align="left"| Membros | ||
+ | ! scope="col" width=40% align="center"| Fator subamostragem (N) | ||
+ | |- | ||
+ | | E1 || Alisson & Guilherme || 11 | ||
+ | |- | ||
+ | | E2 || Felipe & Yan || 10 | ||
+ | |- | ||
+ | | E3 || Adonis & Victor || 8 | ||
+ | |- | ||
+ | | E4 || Rafael & Suyan || 6 | ||
+ | |} | ||
+ | </center> | ||
+ | :* As especificações do discriminador de frequência, mostrado na figura, são: | ||
+ | <center> [[Arquivo:DiscriminadorDTMF.png]]</center> | ||
+ | De acordo com [http://www.etsi.org/deliver/etsi_es/201200_201299/20123503/01.01.01_50/es_20123503v010101m.pdf ETSI ES 201 235-3 - Specification of Dual Tone Multi-Frequency (DTMF) Transmitters and Receivers; Part 3: Receivers] as características dos componentes do receptor são: | ||
+ | <code> | ||
+ | — low-pass filter F <= 960 Hz, no entanto adotaremos a frequência '''sqrt(941*1209)'''; | ||
+ | — high-pass filter F >= 1190 Hz, no entanto adotaremos a frequência '''sqrt(941*1209)'''; | ||
+ | — two threshold comparators; | ||
+ | — eight channel filters (two pole filters: -1,5 dB band pass limits at the nominal frequency ± (1,5%+ 2 Hz)); | ||
+ | — eight rectifiers; | ||
+ | — eight single pole (RC) filters, time constant \tau = 4 a 5 ms. | ||
+ | The thresholds and decision logic are regulated in order not to recognize character signals with a level below -30 dBm | ||
+ | and to recognize valid character signals with a level in the range of -4 dBm to -30 dBm. | ||
+ | </syntaxhighlight> | ||
+ | De acordo com [http://www.etsi.org/deliver/etsi_es/201200_201299/20123502/01.01.01_60/es_20123502v010101p.pdf ETSI ES 201 235-2 - Specification of Dual Tone Multi-Frequency (DTMF) Transmitters and Receivers; Part 3: Transmitters] as características dos componentes do transmissor são: | ||
+ | |||
+ | <code> | ||
+ | High group: signalling frequencies , which have nominal values of 1 209 Hz, 1 336 Hz, 1 477 Hz and 1 633 Hz | ||
+ | Low group: signalling frequencies, which have nominal values of 697 Hz, 770 Hz, 852 Hz and 941 Hz | ||
+ | The tolerances of the output frequencies shall be within ±1,5 % of their nominal values. | ||
+ | The sending levels when the DTMF transmitter is terminated with the reference impedance ZR,shall be: | ||
+ | - for the high frequency group: -9,0 dBV, +2,0 dB / -2,5 dB; | ||
+ | - for the low frequency group: -11,0 dBV, +2,5 dB / -2,0 dB | ||
+ | where dBV - Absolute voltage level expressed in decibels relative to 1 volt. | ||
+ | The duration of any individual DTMF tone combination sent shall not be less than 65 ms. | ||
+ | The duration of the pause between any individual DTMF tone combination shall not be less than 65 ms. | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ::* Os filtros das linhas e das colunas devem ser do tipo FIR. As diferenças de atraso entre os filtros devem ser compensadas usados elementos de atraso (<math> z^{-n} </math>). | ||
+ | ::* Sugere-se utilizar para o filtro do detector de envoltório um filtro IIR do tipo Butterworth. | ||
+ | ::* O circuito retificador deve se implementado pela função '''abs'''. | ||
+ | ::* O circuito '''TC - Threshold Comparator''' não deve ser implementado, pois tem apenas a função de rejeitar sinais de entrada que estão acima de -3dBm ou abaixo de -40 dBm, | ||
+ | ::* Como sinais de entrada serão utilizados: | ||
+ | :::*1) Sinais DTMF gerado através da soma das duas frequência correspondente a linha e coluna. | ||
+ | :::*2) Os sinais DTMF necessários para testar todas as linhas e colunas (7 frequencias DTMF) com '''duração de 0,5 segundos'''. | ||
+ | :::*3) Um sinal DTMF correspondente a sequência de teclas "123456789*0#" com '''duração de tom de 65ms e pausa de 65ms''' para cada tecla. (ver [http://www.etsi.org/deliver/etsi_es/201200_201299/20123502/01.01.01_60/es_20123502v010101p.pdf ETSI ES 201 235-2 - Specification of Dual Tone Multi-Frequency (DTMF) Transmitters and Receivers; Part 2: Transmitters]) | ||
+ | :::*4) Os sinais do item (2) e (3) somados a um ruído branco, cuja relação sinal/ruído deve alterável entre 0 dB até 80 dB. | ||
+ | |||
+ | ::* A seleção do sinal de entrada pode ser feita através de '''manual switch''' ou '''multiport switch'''. | ||
+ | ::* Os discriminadores das linhas e colunas deverão ser feitos usando filtros centrados nas frequências centrais das linhas e colunas correspondentes. | ||
+ | ::* As entradas DTMF deverão deverão gerar valores binário correspondente 1 => 0001 a 9 => 1001, 0 -> 1010, * => 1011, # => 1100. | ||
+ | ::* Caso nenhuma frequência seja ativada o discriminador deverá indicar um código de "0000" (0); caso seja ativada apenas uma frequência o discriminador deverá indicar um código de ERRO 1 "1101" (13); caso sejam ativados 2 linhas e 1 coluna ou 1 linha e duas colunas o discriminador deverá indicar um código de ERRO 2 "1110" (14); caso contrário o discriminador deverá indicar um código de ERRO 3 "1111" (15); | ||
+ | |||
+ | ::* Neste projeto os sinais de entrada a serem utilizados deverão ser gerados com frequência de amostragem especificada. Antes de realizar o processamento indicado no diagrama do receptor DTMF, deve ser feita uma filtragem passa-baixa com um filtro de no mínimo 2 polos do tipo Butterworth ou Chebychev 1, com fp = (f_s/2)/N kHz, seguido de uma subamostragem '''Downsampling''' de um fator '''N''' para a nova frequência f_s2. | ||
+ | ::* A contante de tempo <math> \Tau = RC </math> é equivalente a uma frequência de corte de <math> w_{c} = 1/(2\pi\Tau) </math> | ||
+ | <!-- | ||
+ | ::* Após realizada a simulação do sistema detector DTMF, o sistema deverá ser convertido para VHDL utilizando o '''HDL coder'''. | ||
+ | ::* Para comprovar o funcionamento do sistema realize a simulação final do sistema no ModelSim. | ||
+ | |||
+ | ;ENTREGAS: | ||
+ | :* Mostrar a resposta em frequência dos filtros utilizados (IIR ou FIR). | ||
+ | :* Mostrar o atraso de grupo dos filtros. | ||
+ | :* Tanto no resposta em frequência como no atraso de grupo use nas abcissas utilize uma escala em Hz (kHz ou MHz) adequada ao seu caso. | ||
+ | :* Apresentar no Simulink o sistema organizado em subsistemas/áreas. Documentar os vários subsistemas e função dos blocos. | ||
+ | :* Mostre no relatório claramente que o que foi solicitado no projeto está sendo atendido através de testes com o Simulink. | ||
+ | :* Escreva um relatório técnico em PDF mostrando os resultados obtidos e comentando os resultados obtidos. Não é necessário apresentar a teoria utilizado para o projeto, mas todos os cálculos e metodologia utilizada devem estar documentados. | ||
+ | :* Envie o relatório em pdf e os arquivos ".m" utilizados na plataforma Moodle. | ||
+ | :* ''(Opcional) As equipes que desejarem poderão programar o hardware de um kit FPGA para conferir o funcionamento do sistema. Sugere-se que a geração dos sinais DTMF seja feita utilizando um app gerador para Smartphone e usada a interface conversora A/D para capturar os sinais de entrada. '' | ||
+ | --> | ||
+ | ;NORMAS DE DTMF: | ||
+ | :* Ver as especificações DTMF em: | ||
+ | * [http://www.etsi.org/deliver/etsi_es/201200_201299/20123501/01.01.01_50/es_20123501v010101m.pdf ETSI ES 201 235-1 - Specification of Dual Tone Multi-Frequency (DTMF) Transmitters and Receivers; Part 1: General] | ||
+ | * [http://www.etsi.org/deliver/etsi_es/201200_201299/20123502/01.01.01_60/es_20123502v010101p.pdf ETSI ES 201 235-2 - Specification of Dual Tone Multi-Frequency (DTMF) Transmitters and Receivers; Part 2: Transmitters] | ||
+ | * [http://www.etsi.org/deliver/etsi_es/201200_201299/20123503/01.01.01_50/es_20123503v010101m.pdf ETSI ES 201 235-3 - Specification of Dual Tone Multi-Frequency (DTMF) Transmitters and Receivers; Part 3: Receivers] | ||
+ | * [http://www.etsi.org/deliver/etsi_es/201200_201299/20123504/01.01.01_50/es_20123504v010101m.pdf ETSI ES 201 235-4 - Specification of Dual Tone Multi-Frequency (DTMF) Transmitters and Receivers; Part 4: Receivers for use in Terminal Equipment for end-to-end signalling] | ||
+ | :* Outros links auxiliares: | ||
+ | *[https://en.wikipedia.org/wiki/Dual-tone_multi-frequency_signaling DTMF] | ||
+ | * [https://en.wikipedia.org/wiki/Time_constant Relação entre constante de tempo e frequencia de corte] | ||
+ | * [http://www.sengpielaudio.com/calculator-db-volt.htm Calculador de dBV] | ||
{{collapse bottom}} | {{collapse bottom}} | ||
==Avaliações== | ==Avaliações== | ||
− | * | + | * Prova escrita A1 |
− | |||
* Entrega do Projeto Final. O projeto é avaliado nos quesitos: | * Entrega do Projeto Final. O projeto é avaliado nos quesitos: | ||
− | : | + | :PFe - Documento de Especificação (apresentado no relatório); |
− | : | + | :PFp - Implementação do Projeto; |
− | : | + | :PFr - Relatório do Projeto (excluído a especificação); |
− | + | :PFi - Avaliação individual do aluno no projeto (conceito subjetivo atribuído pelo professor a partir da observação e da apresentação do projeto). | |
− | |||
− | |||
==Referências Bibliográficas== | ==Referências Bibliográficas== |
Edição atual tal como às 17h15min de 13 de dezembro de 2019
Registro on-line das aulas
Unidade 1
Unidade 1 | ||||||||
---|---|---|---|---|---|---|---|---|
Aula 1 EAD
Execute no Matlab o código abaixo, e analise os 3 filtros implementados através dos seus zeros e polos. Busque tirar conclusões sobre a influência da posição dos polos e zeros (ver o gráfico do plano z) e correlacione com a resposta de frequência em magnitude (gráfico do freqz). %% 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 - Filtros FIR | ||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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)
Digital Filters with Linear Phase].
fa = 8000;
Ap = 0.4;
Ar = 40;
fp = 1000;
fr = 1500;
f = [fp fr];
a = [1 0];
dev = [(10^(Ap/20)-1)/(10^(Ap/20)+1) 10^(-Ar/20)];
[n,fo,ao,w] = firpmord(f,a,dev,fa);
b = firpm(n,fo,ao,w);
[h,w] = freqz(b,1,1024,fa);
plot(w, 20*log10(abs(h))); hold on;
plot([0 fr fr fa/2], [Ap/2 Ap/2 -Ar -Ar],':m')
plot([0 fp fp], [-Ap/2 -Ap/2 -(Ar+30)],':m');
ylim([-(Ar+30) Ap/2+10])
|
Unidade 4 - Realização de Filtros
Unidade 4 - Realização de Filtros |
---|
![]()
![]() ![]()
![]() ![]() ![]() ![]()
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.
![]()
![]()
![]()
![]()
![]() ![]()
ATUAL
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 Final | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Avaliações
Referências Bibliográficas
|