Mudanças entre as edições de "PSD29007-Engtelecom(2018-2) - Prof. Marcos Moecke"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 23: Linha 23:
 
*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 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.
 
*No help do Matlab, usando o botão ['''Open this Example'''], é possível executar o código seção a seção.
 +
:* Leia sobre [https://en.wikipedia.org/wiki/Sunspot manchas solares] para entender o que são os dados do segundo exemplo.
 +
====ATUAL====
 +
;Aula 2 (31 jul):
 +
* Revisão de Sinais e Sistemas no tempo discreto em Matlab:
 +
: Sinais no dominio do tempo e dominio da frequencia.  Uso da função [https://www.mathworks.com/help/matlab/ref/fft.html fft]
 +
{{collapse top| Exemplo de uso da FFT}}
 +
<syntaxhighlight lang=matlab>
 +
%% Signal in Time Domain
 +
% Use Fourier transforms to find the frequency components of a signal buried in noise.
 +
% Specify the parameters of a signal with a sampling frequency of 1 kHz and a signal duration of 1.5 seconds
 +
Fs = 1000;            % Sampling frequency                   
 +
T = 1/Fs;            % Sampling period     
 +
L = 1500;            % Length of signal
 +
t = (0:L-1)*T;        % Time vector
 +
 +
% Form a signal containing a 50 Hz sinusoid of amplitude 0.7 and a 120 Hz sinusoid of amplitude 1.
 +
S = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t);
 +
 +
% Corrupt the signal with zero-mean white noise with a variance of 4.
 +
X = S + 2*randn(size(t));
 +
 +
% Plot the noisy signal in the time domain. It is difficult to identify the frequency components by looking at the signal X(t).
 +
subplot(211);
 +
plot(1000*t(1:200),X(1:200))
 +
title('Signal Corrupted with Zero-Mean Random Noise')
 +
xlabel('t (milliseconds)')
 +
ylabel('X(t)')
 +
 +
%% Signal in Frequency Domain
 +
% Compute the Fourier transform of the signal.
 +
Y = fft(X);
 +
 +
% Compute the two-sided spectrum P2. Then compute the single-sided spectrum P1 based on P2 and the even-valued signal length L.
 +
P2 = abs(Y/L);
 +
P1 = P2(1:L/2+1);
 +
P1(2:end-1) = 2*P1(2:end-1);
 +
 +
% Define the frequency domain f and plot the single-sided amplitude spectrum P1.
 +
% The amplitudes are not exactly at 0.7 and 1, as expected, because of the added noise.
 +
% On average, longer signals produce better frequency approximations.
 +
f = Fs*(0:(L/2))/L;
 +
subplot(212);
 +
plot(f,P1)
 +
ylim([0 1.05])
 +
title('Single-Sided Amplitude Spectrum of X(t)')
 +
xlabel('f (Hz)')
 +
ylabel('|P1(f)|')
 +
 +
% Now, take the Fourier transform of the original, uncorrupted signal and retrieve the exact amplitudes, 0.7 and 1.0.
 +
Y = fft(S);
 +
P2 = abs(Y/L);
 +
P1 = P2(1:L/2+1);
 +
P1(2:end-1) = 2*P1(2:end-1);
 +
 +
plot(f,P1)
 +
title('Single-Sided Amplitude Spectrum of S(t)')
 +
xlabel('f (Hz)')
 +
ylabel('|P1(f)|')
 +
</syntaxhighlight>
 +
{{collapse bottom}}
 +
 +
:* Amostragem de Sinais (Experimento 1.2)
 +
::* Relembrar teorema da amostragem. Efeito da amostragem abaixo da frequência de Nyquist.  Aliasing.
 +
::* Notar que as amostras de um sinal <math>s_1(t) = cos (2\pi \times 3 t)</math> (3 Hz) e um sinal <math>s_2(t) = cos (2\pi \times 7 t)</math> (7 Hz) são idênticas quando amostrado com um sinal de 10 Hz.
 +
 +
<syntaxhighlight lang=matlab>
 +
%  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.
 +
%% Experimento 1.2
 +
fs = 10; % frequencia (Hz) de amostragem dos sinais
 +
Ts = 1/fs; fase = 0;
 +
time = 0:Ts:(1-Ts);
 +
f1 = 3; % frequencia (Hz) do sinal s_1
 +
f2 = 7; % frequencia (Hz) do sinal s_2
 +
s_1 = cos(2*pi*f1*time+fase);
 +
s_2 = cos(2*pi*f2*time+fase);
 +
fsa = 1000; % frequência auxiliar de amostragem usada apenas para representação dos sinais originais
 +
Tsa = 1/fsa;
 +
time_aux = 0:Tsa:(1-Tsa);
 +
figure(1);
 +
stem(time,s_1,'ob');
 +
hold on;
 +
plot(time_aux, cos(2*pi*f1*time_aux+fase),'--k');
 +
stem(time,s_2,'+r');
 +
plot(time_aux, cos(2*pi*f2*time_aux+fase),'--m');
 +
hold off;
 +
legend('s_1 discreto','s_1 contínuo','s_2 discreto','s_2 contínuo')
 +
</syntaxhighlight>
 +
 +
<!--
 +
;Aula 4 (27 fev):
 +
*Revisão de Sinais e Sistemas no tempo discreto em Matlab:
 +
:* Filtragem de Sinais (Experimentos 1.3, 2.1 e 2.2)
 +
:* Consulte a documentação do Matlab sobre [http://www.mathworks.com/access/helpdesk/help/techdoc/ref/roots.html roots], [http://www.mathworks.com/help/matlab/ref/poly.html poly], [http://www.mathworks.com/help/matlab/ref/linspace.html linspace], [http://www.mathworks.com/help/matlab/ref/logspace.html logspace], [http://www.mathworks.com/help/matlab/ref/residue.html residue], [http://www.mathworks.com/help/signal/ref/residuez.html residuez], [http://www.mathworks.com/help/matlab/ref/pretty.html pretty], [http://www.mathworks.com/help/matlab/ref/latex.html latex], [http://www.mathworks.com/help/signal/ref/freqs.html freqs],  [http://www.mathworks.com/help/signal/ref/freqz.html freqz],  [http://www.mathworks.com/help/symbolic/syms.html syms], [http://www.mathworks.com/help/signal/ref/symfun.html symfun],  [http://www.mathworks.com/help/signal/ref/zplane.html zplane].
 +
:* Ver também o [http://www.mathworks.com/help/matlab/ref/publish.html Publish] para a geração automática de relatórios em html, doc, pdf, latex ou ppt. Ver também [http://www.mathworks.com/help/matlab/matlab_prog/publishing-matlab-code.html Publishing MATLAB Code].
 +
:* Ver pag. 138 a 141 de <ref name="DINIZ2014"/>
 +
{{collapse top | Variação do Experimento 2.2}}
 +
<syntaxhighlight lang=matlab>
 +
%  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.
 +
%% Experimento 2.2
 +
% Resposta em frequencia usando a função freqz
 +
N = 1;
 +
num = [1 0 0 0];
 +
den = poly([0.8 0.2])
 +
%den = [1 0.6 -0.16];
 +
% modo 1
 +
%[H,w]=freqz(num,den,[0:pi/100:N*pi-pi/100]);
 +
%plot(w/pi, abs(H));
 +
% modo 2
 +
%[H,w]=freqz(num,den);
 +
%plot(w/pi, abs(H));
 +
% modo 3
 +
%[H,w]=freqz(num, den, 'whole');
 +
%plot(w/pi, abs(H));
 +
% modo 4
 +
freqz(num, den, 'whole');
 +
figure(2);
 +
zplane(num,den);
 +
 +
%% Resposta em frequencia substituindo z -> e^(jw)
 +
syms z
 +
Hf(z) = symfun(z^2/(z-0.2)/(z+0.8),z);
 +
pretty(Hf)
 +
latex(Hf)
 +
N = 1;
 +
w = [0:pi/100:N*pi-pi/100];
 +
plot(w/pi,abs(Hf(exp(1i*w))))
 +
%title(['$' latex(Hf) '$'],'interpreter','latex')
 +
text(0.2,2,['H(z) = ' '$$' latex(Hf) '$$'],'interpreter','latex')
 +
xlabel(['w/' '$$' '\pi' '$$'],'interpreter','latex')
 +
</syntaxhighlight>
 +
#Verifique a diferença entre os tipos de plots comentados no código.
 +
#substitua o denominador de H(z) por dois polos em [-0.8 -0.8].
 +
#verifique o que ocorre se forem utilizados polos complexos conjugados [0.3-0.4i  0.3+0.4i 0.1]
 +
#verifique o que ocorre se forem utilizados polos complexos não conjugados [0.3-0.4i  0.3+0.8i]
 +
#verifique o que ocorre se os polos estiverem fora do circulo unitário  [1.2 -0.2].  Interprete este resultado 
 +
{{collapse bottom}}
 +
 +
:* Consulte a documentação do Matlab sobre [http://www.mathworks.com/help/matlab/ref/zeros.html zeros], [http://www.mathworks.com/help/matlab/ref/ones.html ones], [http://www.mathworks.com/help/matlab/ref/plot.html plot], [http://www.mathworks.com/help/matlab/ref/stem.html stem], [http://www.mathworks.com/help/matlab/ref/subplot.html subplot], [http://www.mathworks.com/help/matlab/ref/filter.html filter].
 +
:* Para usar melhor a interface do Matlab leia também [http://www.mathworks.com/help/matlab/matlab_prog/run-sections-of-programs.html?searchHighlight=script%20sections Execução de seções e variação de valores nos scripts], e ainda [http://www.mathworks.com/help/matlab/learn_matlab/plots.html Uso de gráficos no Matlab].
 +
:* Ver pag. 65 a 71 de <ref name="DINIZ2014"> 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 </ref>
 +
:*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 5 (2 mar):
 +
*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])
 +
<syntaxhighlight lang=matlab>
 +
%% 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);
 +
</syntaxhighlight>
 +
:* Diferentes formas de realizar a filtragem de Sinais (
 +
::* convolução (conv(x,h)),
 +
::* filtragem no domínio do tempo (y = a1.x(n)+ a2.x(n-1)+ .. ak.x(n-k));
 +
::* no domínio da frequência (y = ifft(fft(x)fft(h))
 +
 +
{{collapse top | Variação do Experimento 3.1}}
 +
<syntaxhighlight lang=matlab>
 +
%% Variação do Experimento 3.1 do 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: Ex3_1.m
 +
% Exemplificando as possiveis formas de realizar a filtragem de um sinal x(n)
 +
 +
clc; clear all; close all;
 +
%% Definindo valores iniciais
 +
Nh = 10; Nx = 20;
 +
%Nh = 400; Nx = 10000;
 +
x = ones(1,Nx);
 +
% A resposta ao inpulso de um sistema h(n)
 +
% no filtro FIR aos coeficientes b(n) = h(n)
 +
h = [1:Nh]; b = h;
 +
%% Filtrando o sinal e medindo tempos
 +
 +
% Filtragem utilizando a convolução
 +
% NOTE: length(y) = length(x) + length(h) -1
 +
tic;  % iniciar a contagem do tempo
 +
y1 = conv(x,h);
 +
t(1) = toc; % terminar acontagem e mostrar tempo no console
 +
 +
% filtragem utilizando a equação recursiva
 +
% NOTE: length(y) = length(x)
 +
tic;
 +
y2 = filter(b,1,x);
 +
t(2) = toc;
 +
 +
% filtragem utilizando a equação recursiva
 +
% aumentando o tamanho de x para que length(y3) = length(y1)
 +
x3 = [x zeros(1,length(h)-1)];
 +
tic;
 +
y3 = filter(h,1,x3);
 +
t(3) = toc;
 +
 +
length_y = length(x) + length(h) - 1;
 +
 +
% filtragem utilizando a FFT
 +
% a y = IFFT(FFT(x)*FFT(h))
 +
tic;
 +
X = fft(x,length_y);
 +
H = fft(h,length_y);
 +
Y4 = X.*H;
 +
y4 = ifft(Y4);
 +
t(4) = toc;
 +
 +
% filtragem utilizando a função fftfilt
 +
% a y = IFFT(FFT(x)*FFT(h))
 +
 +
tic
 +
y5 = fftfilt(h,x3);
 +
t(5) = toc;
 +
 +
disp('Comprimento do vetor de saída length(y)')
 +
disp(['    ' num2str([length(y1) length(y2) length(y3) length(y4) length(y5)])])
 +
disp('Tempo usado na filtragem em micro segundos')
 +
disp(['    ' num2str(t*1e6) ' us'])
 +
 +
%%  Plotando o gráfico
 +
subplot(411);stem(y1);
 +
hold on;
 +
stem(y2,'xr');
 +
stem(y3,'+m');
 +
legend('y1', 'y2', 'y3')
 +
hold off
 +
subplot(412);stem(y1, 'ob');legend('y1')
 +
subplot(413);stem(y2, 'xr'); hold on; stem(zeros(size(y1)),'.w');hold off; legend('y2')
 +
subplot(414);stem(y3, '+m');legend('y3')
 +
</syntaxhighlight>
 +
{{collapse bottom}}
 +
* Notar a diferença de tempo de processamento entre os processos de filtragem. 
 +
* A situação pode ser muito diferente conforme muda o tamanho do sinal e ordem do filtro (h(n)).
 +
 +
;Aula 6 (6 mar):
 +
:* Exercício - Sinal DTMF com ruído
 +
::* Verifique se o Matlab está reproduzindo corretamente o som.
 +
<syntaxhighlight lang=matlab>
 +
%% 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);
 +
</syntaxhighlight>
 +
::* Usando o Matlab (ou Audacity) para gerar um sinal [https://pt.wikipedia.org/wiki/DTMF DTMF] correspondente a um número N e adicionar um ruido ao sinal. Opcionalmente utilize um [[Media:DFMT EX1.ogg | sinal DTMF gravado]]
 +
::* Utilizar uma frequência de amostragem de 8000Hz de fazer a duração do sinal igual a 2 segundos.
 +
::* Para adicionar o ruído utilize a função y = [http://www.mathworks.com/help/comm/ref/awgn.html awgn](x,snr), ou  y = x + nivel*[http://www.mathworks.com/help/matlab/ref/randn.html randn](n).
 +
 +
::* Observe este sinal no domínio do tempo (DT) e domínio da frequência (DF).
 +
<syntaxhighlight lang=matlab>
 +
%% 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]);
 +
</syntaxhighlight>
 +
:* Utilizar no Audacity um sinal DTMF ("1234567890") com fa= 8kHz
 +
::* Visualizar no domínio do tempo e frequência.
 +
::* Realizar a filtragem passa-baixas com fc = 1066 Hz, (selecionar a maior atenuação permitida)
 +
::* Realizar a filtragem passa-faixa  com f0 = 770 Hz e B = 70Hz (selecionar a maior ordem permitida)
 +
:* Repetir o procedimento anterior para um sinal de ruído branco.
 +
 +
:* Consulte a documentação do Matlab sobre <syntaxhighlight lang=matlab> fft, ifft, fftshift, randn </syntaxhighlight>
 +
:* Consulte a documentação do Matlab sobre <syntaxhighlight lang=matlab> plot, grid, subplot, hold, xlabel, ylabel, title, legend, xlim, ylim, log10, log </syntaxhighlight>
 +
:* 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"/>
 +
-->
 +
{{collapse bottom}}
 +
 +
{{collapse top | Unidade 2}}
 +
===Unidade 2===
 +
<!--
 +
;Aula 7 a 9 (9, 13 e 16 mar):
 +
*Filtros Analógicos:
 +
:* Função de transferência
 +
::<math> H(s) = \frac {c_0 + c_1 s + c_2 s^2 + ... + c_m s^m} {d_0 + d_1 s + d_2 s^2 + ... + d_n s^n}, m \le n</math>
 +
 +
:* Resposta em frequência: para obter a resposta em frequência é necessário avaliar
 +
::<math>H(j\omega) = H(s)\left|\begin{matrix}\\ s=j\omega \end{matrix}\right.</math>
 +
 +
::<math> H(j \omega) = \left | H(j \omega) \right | e^{j \phi(\omega)}</math>
 +
 +
::<math> \left | H(j \omega) \right |^2 =  H(j \omega)  H(-j \omega)</math>
 +
 +
::<math> e^{j 2 \phi(\omega)} =  \frac {H(j \omega)}  {H(-j \omega)}</math>
 +
:* O projeto de filtros analógicos é realizado em 2 etapas:
 +
# projeto de um filtro passa baixas (LP) protótipo normalizado <math> H(p) </math> com frequência de passagem <math> \Omega_s = 1 </math>
 +
# transformação em frequência para o tipo de filtro (LP, HP, BP ou BS)
 +
::<math> H(s) = H(p)\left|\begin{matrix}\\ p=g(s) \end{matrix}\right. </math>
 +
 +
* Análise básica de filtros analógicos com Matlab.
 +
:Dado um sistema linear invariante no tempo, representado pela função de transferência <math> H(s) </math>, obter a resposta de frequência do sistema (Magnitude e Fase).
 +
::<math> H(s) = \frac {s + 1} {s^2 +  s + 5} </math>
 +
::<math> H(j\omega) = \frac {s + 1} {s^2 +  s + 5}\left|\begin{matrix}\\ s=j\omega \end{matrix}\right.</math>
 +
::<math>  H(j\omega) = \frac{1 + w\, \mathrm{i}}{ - w^2 + w\, \mathrm{i} + 5} </math>
 +
 +
<syntaxhighlight lang=matlab>
 +
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;
 +
</syntaxhighlight>
 +
 +
* Projeto de filtros analógicos do tipo Butterworth
 +
:* 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.
 +
 +
* Projeto de filtros analógicos do tipo Butterworth, considerando: <math> \omega_p </math> é a frequência de passagem do filtro LP, <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'' do filtro, <math> A_s </math> é a atenuação em dB na frequência de ''stopband'', <math> \epsilon = 1 </math>, <math> \Omega_s = \frac {\omega_s} {\omega_p} </math>, <math> \Omega_p = \frac {\omega_p} {\omega_p} = 1 </math> são as frequências de passagem e ''stopband'' do filtro protótipo.
 +
 +
::*É necessário determinar a ordem <math> n </math> do filtro: 
 +
 +
::<math> n \ge \frac {\log(10^{0.1A_s}-1)} {2 \log \Omega_s} </math>
 +
 +
::*Em seguida 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>
 +
 +
::* Em seguida é necessário 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>
 +
::* No caso de um filtro LP é necessário ainda obter a função de transferência do filtro especificado
 +
 +
::<math>H(s) = H(p)\left|\begin{matrix} \\ p=\frac{s}{\omega_p} \end{matrix}\right. </math>
 +
* Projeto de filtros analógicos do tipo Butterworth, considerando: <math> \omega_p </math> é a frequência de passagem do filtro LP, <math> A_p </math> é a atenuação em dB na frequência de passagem, <math> \omega_s </math> é a frequência de ''stopband'' do filtro, <math> A_s </math> é a atenuação em dB na frequência de ''stopband'', <math> \epsilon = \sqrt{10^{0.1A_p}-1 } </math>, <math> \Omega_s = \frac {\omega_s} {\omega_p} </math>, <math> \Omega_p = \frac {\omega_p} {\omega_p} = 1 </math> são as frequências de passagem e ''stopband'' do filtro protótipo.
 +
 +
::*É necessário determinar a ordem <math> n </math> do filtro: 
 +
 +
::<math> n \ge \frac {\log[(10^{0.1A_s}-1)/(10^{0.1A_p}-1)]} {2 \log \Omega_s} </math>
 +
 +
::*Em seguida 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>
 +
 +
::* Em seguida é necessário obter a função de transferência:
 +
 +
::<math> H(p)= \frac{N(p)}{D(p)} </math>, onde <math> N(p)=\prod_{k-1}^{n} \left (-p_{k} \right ) </math> e <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
 +
 +
::<math>H(s) = H(p)\left|\begin{matrix} \\ p=\frac{s}{\omega_p} \end{matrix}\right. </math>
 +
 +
:*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>
 +
%Butterworth lowpass Responses (db)
 +
w = 0.1:0.01:10;
 +
H=inline('10*log10(1./(1+w.^(2*n)))','w','n');
 +
for k = 1:1:10
 +
    semilogx(w,H(w,k)); hold on;
 +
end
 +
grid on
 +
 +
%Butterworth lowpass Responses (linear)
 +
w = 0.1:0.01:2;
 +
H=inline('1./(1+w.^(2*n))','w','n');
 +
for k = 1:1:10
 +
    plot(w,H(w,k)); hold on;
 +
end
 +
grid on
 +
</syntaxhighlight>
 +
 +
;Aula 10 e 11 (20 e 23 mar):
 +
* Projeto de filtros analógicos do tipo Chebyshev I.
 +
::*Determine a ordem mínima necessária considerando: <math> \omega_p </math> é a frequência de passagem do filtro LP, <math> A_p </math> é a atenuação em dB na frequência de passagem, <math> \omega_s </math> é a frequência de ''stopband'' do filtro, <math> A_s </math> é a atenuação em dB na frequência de ''stopband'', <math> \epsilon = \sqrt{10^{0.1A_p}-1 } </math>, <math> \Omega_s = \frac {\omega_s} {\omega_p} </math>, <math> \Omega_p = \frac {\omega_p} {\omega_p} = 1 </math> são as frequências de passagem e ''stopband'' do filtro protótipo.
 +
::<math> n \ge \frac {\cosh^{-1} \sqrt{(10^{0.1A_s}-1)/(10^{0.1A_p}-1)}} {\cosh^{-1} \Omega_s} </math>
 +
 +
::*Em seguida obter os polos do filtro:
 +
 +
::<math> p_k = -\sinh(\varphi_2) \sin(\theta_k)+ j \cosh(\varphi_2) \cos(\theta_k) \ \ \ \ \  k = 1, 2, 3, ... n</math>, onde
 +
::<math> \theta_k = \left ( \frac{(2k-1)\pi}{2n} \right ) </math>
 +
::<math> \varphi_2 =  \frac{1}{n} \sinh^{-1}\left (\frac{1}{\epsilon}  \right ) </math>
 +
:* 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]
 +
:* 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.
 +
 +
*Exemplos de projeto de filtro passa-baixas com frequência de passagem de 16000 rad/s com atenuação máxima de 0.3 dB, frequência de rejeição de 20000 rad/s com atenuação mínima de 20 dB; e ganho em DC de 3 dB.
 +
<syntaxhighlight lang=matlab>
 +
%% 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');
 +
</syntaxhighlight>
 +
 +
:*Ver pag. 204 a 208 de <ref name="SHENOI2006"/>
 +
 +
;Aula 12 (27 mar):
 +
*Filtros Analógicos:
 +
:* Transformações de frequência de filtros analógicos 
 +
:*passa-baixas (<math> \Omega_p= 1 </math>) -> passa-baixas (<math> \omega_p</math>)
 +
::*Substituição de variáveis <math> p = \frac{s}{\omega_p}</math>
 +
::*Cálculo do protótipo com <math> \Omega_s = \frac{\omega_s}{\omega_p}</math>
 +
 +
:*passa-baixas (<math> \Omega_p= 1 </math>) -> passa-altas (<math> \omega_p</math>)
 +
::*Substituição de variáveis <math> p = \frac{\omega_p} {s}</math>
 +
::*Cálculo do protótipo com <math> \Omega_s = \frac{\omega_p}{\omega_s}</math>
 +
 +
:*passa-baixas (<math> \Omega_p= 1 </math>) -> passa-faixa (<math> \omega_0 </math> e <math> B </math>)
 +
::*Substituição de variáveis <math> p = \frac{s^2 + \omega_0^2} {B s}</math>
 +
::*Cálculo do protótipo com <math> \Omega_s = \Bigg|\frac{-\omega_s^2 + \omega_0^2} {B \omega_s}\Bigg|</math>
 +
:: onde <math> B = \omega_{p2} - \omega_{p1}</math>  e <math> \omega_0 = \sqrt{\omega_{p2} \omega_{p1}}</math>
 +
 +
:*passa-baixas (<math> \Omega_p= 1 </math>) -> rejeita-faixa (<math> \omega_0 </math> e <math> B </math>)
 +
::*Substituição de variáveis <math> p = \frac {B s} {s^2 + \omega_0^2}</math>
 +
::*Cálculo do protótipo com <math> \Omega_s = \Bigg| \frac {B \omega_s} {-\omega_s^2 + \omega_0^2}\Bigg|</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].
 +
:*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].
 +
::*Funções para projeto do filtro protótipo analógico passa-baixas: [http://www.mathworks.com/help/signal/ref/buttap.html buttap], [http://www.mathworks.com/help/signal/ref/cheb1ap.html cheb1ap], [http://www.mathworks.com/help/signal/ref/cheb2ap.html cheb2ap], [http://www.mathworks.com/help/signal/ref/ellipap.html ellipap]
 +
::*Funções de transformação de frequencia: [http://www.mathworks.com/help/signal/ref/lp2lp.html lp2bp], [http://www.mathworks.com/help/signal/ref/lp2hp.html lp2bs], lp2hp, lp2lp
 +
:*Ver pag. 208 a 218 de <ref name="SHENOI2006"/>
 +
 +
;Aula 13 (03 abr):
 +
*Exemplos de Filtros Analógicos:
 +
:* 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 3: Filtro passa-faixa (<math> f_{p1} </math> = 811 Hz, <math> f_{p2} </math> = 895,5 Hz<math> <math> f_{s1} </math> = 770 Hz, <math> f_{s2} </math> = 941 Hz, <math> A_p </math> = 1 dB, <math> A_r </math> = 30 dB)
 +
::'''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>.
 +
:::*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.
 +
;Aula 13 e 14 (06 e 10 abr):
 +
*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 bilinear (pode ser usada para todos tipos de filtro)
 +
::*Obter a especificação do filtro em angulo entre 0 e 1, onde 1 corresponde a metade da frequência de amostragem (fa/2)
 +
::*Obter o valor desse angulo predistorcido para compensar a distorção na frequencia causada pela transformação bilinear.
 +
<!--
 +
::<math> \lambda= 2 tan (\frac{\theta \pi}{2})  \</math>, onde <math> \theta = \frac{f}{fa/2} \</math>
 +
 +
:*passa-baixas (<math> \Omega_p= 1 </math>) -> passa-baixas (<math> \omega_p</math>)
 +
::*Substituição de variáveis <math> p = \frac{s}{\omega_p}</math>
 +
::*Cálculo do protótipo com <math> \Omega_s = \frac{\omega_s}{\omega_p}</math>
 +
 +
:*passa-baixas (<math> \Omega_p= 1 </math>) -> passa-altas (<math> \omega_p</math>)
 +
::*Substituição de variáveis <math> p = \frac{\omega_p} {s}</math>
 +
::*Cálculo do protótipo com <math> \Omega_s = \frac{\omega_p}{\omega_s}</math>
 +
 +
:*passa-baixas (<math> \Omega_p= 1 </math>) -> passa-faixa (<math> \omega_0 </math> e <math> B </math>)
 +
::*Substituição de variáveis <math> p = \frac{s^2 + \omega_0^2} {B s}</math>
 +
::*Cálculo do protótipo com <math> \Omega_s = \Bigg|\frac{-\omega_s^2 + \omega_0^2} {B \omega_s}\Bigg|</math>
 +
:: onde <math> B = \omega_{p2} - \omega_{p1}</math>  e <math> \omega_0 = \sqrt{\omega_{p2} \omega_{p1}}</math>
 +
 +
:*passa-baixas (<math> \Omega_p= 1 </math>) -> rejeita-faixa (<math> \omega_0 </math> e <math> B </math>)
 +
::*Substituição de variáveis <math> p = \frac {B s} {s^2 + \omega_0^2}</math>
 +
::*Cálculo do protótipo com <math> \Omega_s = \Bigg| \frac {B \omega_s} {-\omega_s^2 + \omega_0^2}\Bigg|</math>
 +
:: onde <math> B = \omega_{p2} - \omega_{p1}</math>  e <math> \omega_0 = \sqrt{\omega_{p2} \omega_{p1}}</math>
 +
 +
:*Ver pag. 219 a 229 de <ref name="SHENOI2006"/>
 +
:*Ver pag. 403 a 415 e 434 a 435 de <ref name="DINIZ2014"/>
 +
-->
 +
;Aula 15 e 15 (10 e 13 abr):
 +
*Filtros Digitais:  Filtros IIR: Uso do Matlab.
 +
::*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]
 +
 +
:* Ver em [http://www.mathworks.com/help/signal/ug/iir-filter-design.html IIR Filter Design]
 +
:* 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 IIR digitais (sem o parâmetro ''''s'''').
 +
::O projeto dos filtros digitais IIR baseados na transformada bilinear no Matlab é realizada em dois passos:  (1)  Determinação da ordem do filtro; (2) Determinação dos coeficientes do numerador <math> b(n) </math> e denominador  <math> a(n) </math> de <math> H(z) </math> .
 +
 +
:* 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].
 +
-->
 +
{{collapse bottom}}
 +
 +
{{collapse top|  Unidade 3}}
 +
===Unidade 3===
 +
<!--
 +
;Aula 17 (17 abr):
 +
*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)
 +
 +
;Aula 18 (20 abr)
 +
:*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
 +
 +
;Aula 19-20 (24-27 abr)
 +
:*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
 +
*Filtros Digitais: Filtros FIR
 +
*Projeto de filtro FIR utilizando janelas temporais
 +
*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].
 +
<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 | Backman | 58.1| 75.25 | 5.56<math>\pi</math>/M}}
 +
{{tabFIRwindow | Flat Top | 88.0| 106.3| }}
 +
{{tabFIRwindow | Backman-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>
 +
:*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 21 (4 mai)
 +
*Filtros Digitais: Filtros FIR:
 +
:*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 - 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 5 - Corrija o valor de projeto dos coeficientes Clp do filtro ideal, a janela e a resposta ao impulso.
 +
::* Repita o PASSO 3 até 5, até obter um filtro que atenda as especificações de Dw.
 +
::* PASSO 6 - 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.
 +
 +
;Aula 22 e 23 (8 e 11 mai)
 +
*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.
 +
 +
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 24 (15 mai)
 +
:*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].
 +
:*[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]
 +
 +
*Filtros Digitais: Filtros FIR
 +
*Uso do [http://www.mathworks.com/help/signal/examples/introduction-to-the-filter-design-and-analysis-tool-fdatool.html] [http://www.mathworks.com/help/signal/ref/fdatool.html Fdatool] para projeto de filtro IIR, FIR equiripple e FIR com janela.
 +
<syntaxhighlight lang=matlab>
 +
%% Exemplo de Filtro
 +
fp = 3000 Hz;
 +
fr = 4000 Hz;
 +
fs = 20000 Hz;
 +
Ap = 1 dB;
 +
Ar = 40 dB;
 +
</syntaxhighlight>
 +
-->
 +
{{collapse bottom}}
 +
 +
{{collapse top| Unidade 4}}
 +
===Unidade 4===
 +
<!--
 +
;Aula 25 (18 Mai):
 +
*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.
  
:* Leia sobre [https://en.wikipedia.org/wiki/Sunspot manchas solares] para entender o que são os dados do segundo exemplo.
+
<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://www.mathworks.com/help/signal/ug/opening-fdatool.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"/>.
 +
 
 +
;Aula 26 (22 Mai):
 +
:* 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>
 +
:* 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. 
 +
:* 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]
 +
-->
 +
 
 +
;Aula 27 e 28 (25 e 29 mai):
 +
As aulas foram suspensas pela direção do campus em funções da '''GREVE DOS CAMINHONEIROS'''
 +
 
 +
;Aula 29 (05 jun)
 +
*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>
 +
 
 +
*Utilizando o filtro projetado na AE2 e AE3, 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.
 +
:*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]
 +
 
 +
;Aula 30 (08 jun):
 +
:*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 31 (12 jun):
 +
:*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.
 +
-->
 +
{{collapse bottom}}
 +
 
 +
{{collapse top| Unidade 5 - PROJETO FINAL}}
 +
===Unidade 5 - PROJETO FINAL===
 +
<!--
 +
;Aula 30 (15 jun):
 +
*Apresentação do projeto Final
 +
:* Descrição do projeto '''AE3 - Projeto de um Detector de DTMF'''
 +
 
 +
:* Estudar os blocos do Simulink: [https://www.mathworks.com/help/dsp/ref/timescope.html Time Scope], [https://www.mathworks.com/help/dsp/ref/spectrumanalyzer.html Spectrum Analyzer], [https://www.mathworks.com/help/dsp/ref/sinewave.html Sine Wave], [https://www.mathworks.com/help/dsp/ref/chirp.html Chirp], [https://www.mathworks.com/help/dsp/ref/randomsource.html Random Source], [https://www.mathworks.com/help/dsp/ref/signalfromworkspace.html Signal From Workspace], [https://www.mathworks.com/help/dsp/ref/frommultimediafile.html From Multimedia File].
 +
 
 +
;Aula 31 a 39 (19 jun a 3 jul):
 +
* Aula de projeto (implementação da detector DTMF)
 +
 
 +
;Aula 40 (6 jul):
 +
* Apresentação do projeto (avaliação individual)
 +
 
 +
;Aula 34 (14 Dez):
 +
:*Uso do HDL Coder
 +
::* [http://www.mathworks.com/help/hdlcoder/hdl-code-generation-from-simulink.html HDL Code Generation from Simulink]
 +
::* [http://www.mathworks.com/help/hdlcoder/simulink.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 35 a 37 (26 Jun a 3 Jul):
 +
*Implementação do projeto final.
 +
-->
 +
{{collapse bottom}}
 +
 
 +
==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
 +
<!--
 +
{{collapse top | expand = true | Atividades Relâmpago (prazo e forma de entrega ver na plataforma AVA)}}
 +
* [https://moodle.sj.ifsc.edu.br/mod/assign/view.php?id=4134 Atividade Relâmpago - AR1]
 +
{{collapse bottom}}
 +
 
 +
{{collapse top | expand = true | AE1 - Revisão de Sinais e Sistemas  (prazo e forma de entrega ver na plataforma AVA)}}
 +
*Esta atividade poderá ser desenvolvida individualmente ou em duplas (de no máximo duas pessoas). No dia 9/03 os alunos deverão informar os nomes das duplas.
 +
 
 +
:* ATIVIDADE 1 - Experimento 1.2
 +
# Varie o valor da frequência de amostragem de 6 até 20 Hz e observe:
 +
# Em qual frequência deixa de ocorrer recobrimento do sinal 2.
 +
# O que ocorre quando a frequência é 6, 7, 14 Hz? Explique
 +
# Qual deveria ser a frequência do sinal f_2 para que as amostras tomadas sejam coincidentes como o sinal f_1 para uma frequência de amostragem f_s?  Reescreva a equação e verifique no Matlab.
 +
 
 +
:* ATIVIDADE 2 - Experimento 2.2
 +
#Verifique a diferença entre os tipos de plots comentados no código.
 +
#substitua o denominador de H(z) por dois polos em [-0.8 -0.8].
 +
#verifique o que ocorre se forem utilizados polos complexos conjugados [0.3-0.4i  0.3+0.4i 0.1]
 +
#verifique o que ocorre se forem utilizados polos complexos não conjugados [0.3-0.4i  0.3+0.8i]
 +
#verifique o que ocorre se os polos estiverem fora do circulo unitário  [1.2 -0.2].  Interprete este resultado
 +
 
 +
:* ATIVIDADE 1 - Experimento 3.1
 +
# Utilizando Nh = 10 e  Nx = 20, execute a filtragem pelo menos 3 vezes em seguida e anote os tempos.
 +
# Anote o tamanho dos sinais de saída y, e analise os plots.
 +
# Aumente o tamanho do filtro (Nh) e o tamanho do sinal de entrada (Nx) e execute a filtragem pelo menos 3 vezes em seguida e anote os tempos.
 +
# Anote o tamanho dos sinais de saída y.
 +
# Explique os resultados obtidos.
 +
 
 +
:* ATIVIDADE 2 -  Experimento 3.2
 +
# Acrescente um subplot para mostrar o sinal no domínio da frequência com a magnitude em dB  20*log10(abs(X)). 
 +
# Limite a escala da magnitude entre -100 e 1 dB usando ylim.
 +
# Insira em todos os plots e subplot, títulos, legendas e labels para os eixos X e Y,
 +
#  Posicione o texto "F Hz"  para indicar o pico nos gráficos 2 e 3, conforme mostrado na figura abaixo.
 +
<center>[[Arquivo:DTxDF_sinal_noise.png]] <br>
 +
Figura 1 - Análise no domínio da frequência do sinal <math> x(t) = A  sin (2  \pi  f  t) </math>
 +
</center>
 +
# Varie o valor de k entre 0 e 2 (com passo de 0.1) e analise o sinal no domínio do tempo e no domínio da frequência.
 +
# Varie o valor de snr entre 100 e 1  e analise o sinal no domínio do tempo e no domínio da frequência.
 +
# Utilize k = 0.3 e snr = 40 e varia a frequência do sinal entre 0 até 200 Hz (com passo de 10 Hz).  Interprete os resultados obtidos.
 +
 
 +
:* ATIVIDADE 3 - Experimento 1.2 + 3.2
 +
# Utilizando o espectro de frequência (Exp3.2) repita as medições feitas com o processo de amostragem (Experimento 1.2)
 +
# Varie o valor da frequência de amostragem de 6 até 20 Hz e observe
 +
# Para analisar o espectro talvez seja conveniente mudar a amplitude dos sinais de entrada (sugestão A1 = 0.3 e A2 = 0.8).
 +
# Em qual frequência deixa de ocorrer recobrimento do sinal 2.
 +
# Qual conclusão que você chega em relação a amostragem de sinais utilizando para a frequência de amostragem  valores acima e abaixo do dobro da frequencia de Nyquist.
 +
 
 +
:* ATIVIDADE 4 - Filtragem de sinal DTMF
 +
# Usando o Matlab (ou Audacity) gere um sinal DTMF correspondente a um número N (ver tabela abaixo), com duração de 2 segundos, com frequência de amostragem de 4kHz.
 +
# Use o Matlab para ouvir o sinal x[n], mostrar o sinal no domínio do tempo e frequência.
 +
# Use um filtro passa-faixa que permita a passagem apenas da frequência da linha (ou coluna) y[n].  Faça a filtragem no domínio do tempo, usando a função filter. Para projetar o filtro, posicionando no mínimo um polo sobre a frequência que deseja passar, e  um zero sobre a frequência que deseja rejeitar.
 +
# Use o Matlab para ouvir o sinal x[n], mostrar o sinal no domínio do tempo e frequência.
 +
# VER os experimentos 3.1, 3.2 e 2.3 para códigos de auxilio.
 +
 
 +
<center>
 +
{| class="wikitable"  border="1" cellpadding="3" cellspacing="0" style="text-align:left; font-size:100%" bgcolor="#efefef"
 +
! scope="col" width=60% align="center"| Aluno
 +
! scope="col" width=40% align="center"| Tecla
 +
|-
 +
| Fernando || 1
 +
|-
 +
| Gabriel || 6
 +
|-
 +
| Jessica || 0
 +
|-
 +
| João || 3
 +
|-
 +
| Leticia || 9
 +
|-
 +
| Marcos || 5
 +
|-
 +
| Pedro || 8
 +
|-
 +
| Vitor || 2
 +
|}
 +
</center>
 +
 
 +
* Enviar o relatório (em pdf) incluindo as principais figuras obtidas e as respostas e conclusões na plataforma AVA.
 +
* Para a geração de documentação/relatórios técnicos/artigos, está disponibilizada a [https://www.sharelatex.com?r=205ee4bd&rm=d&rs=b Plataforma Sharelatex]. Utilize preferencialmente o [http://pt.sharelatex.com/project/5980bfd0b8ec417a1f5e71d8 modelo de artigo no padrão ABNT] em 1 coluna. Se quiser pode utilizar o publish do matlab mas entregue o documento em pdf, com as respostas solicitadas e as conclusões de cada Atividade. 
 +
{{collapse bottom}}
 +
 
 +
{{collapse top |  AE1 - Projeto de Filtros Digitais IIR (Entrega e prazos ver Moodle)}}
 +
Esta avaliação visa verificar se você conhece a metodologia de projeto de filtros digitais IIR: (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".  Nesta avaliação é solicitado que cada equipe realize o projeto de 4 filtros, e trabalhos individuais serão 3 filtros.  Para todos os filtros considere como valores default fa = 8 kHz, Gp = 0 dB, Ap = 0.5 dB e As = 30 dB (exceto se indica outro valor na tabela abaixo. Os filtro BP deverão ter apenas o BP1 projetado conforme o procedimento completo, sendo que nos demais deverá ser aproveitado o filtro H(p) para obtê-los.
 +
 
 +
{| class="wikitable"  border="1" cellpadding="3" cellspacing="0" style="text-align:left; font-size:100%" bgcolor="#efefef"
 +
! scope="col" width=10% align="left"| Equipe
 +
! scope="col" width=15% align="center"| Filtro 1
 +
! scope="col" width=15% align="center"| Filtro 2
 +
! scope="col" width=20% align="center"| Filtro 3
 +
! scope="col" width=20% align="center"| Filtro 4
 +
|-
 +
| Equipe 1
 +
| LP - (f1 = 950 Hz; f2 = 1300 Hz, As = 30 dB, Butterworth)
 +
| HP - (f1 = 950 Hz; f2 = 1300 Hz, As = 30 dB, Chebychev 1)
 +
| BP1 - (f1 = 627 Hz; f2 = 683 Hz, f3 = 711 Hz; f4 = 767 Hz, Elíptico )
 +
| BS1 - (f1 = 1202 Hz; f2 = 1309 Hz, f3 = 1363 Hz; f4 = 1470 Hz, Elíptico  )
 +
|-
 +
| Equipe 2
 +
| LP - (f1 = 950 Hz; f2 = 1300 Hz, As = 25 dB, Chebychev 1)
 +
| HP - (f1 = 950 Hz; f2 = 1300 Hz,, As = 25 dB, Butterworth)
 +
| BP1 - (f1 = 847 Hz; f2 = 922 Hz, f3 = 960 Hz; f4 = 1035 Hz, Chebychev 2 )
 +
| BS1 - (f1 = 1329 Hz; f2 = 1447Hz, f3 = 1507 Hz; f4 = 1625 Hz, Chebychev 2 )
 +
|-
 +
| Equipe 3
 +
| LP - (f1 = 1050 Hz; f2 = 1400 Hz, As = 30 dB, Chebychev 1)
 +
| HP - (f1 = 1050 Hz; f2 = 1400 Hz, As = 20 dB, Butterworth)
 +
| BS1- (f1 = 767 Hz; f2 = 835 Hz, f3 = 869 Hz; f4 = 937 Hz, Elíptico  )
 +
| BP1 - (f1 = 693 Hz; f2 = 755 Hz, f3 = 785 Hz; f4 = 847 Hz, Elíptico  )
 +
|-
 +
| Equipe 4
 +
| LP - (f1 = 1050 Hz; f2 = 1400 Hz, As = 25 dB, Butterworth)
 +
| HP - (f1 = 1050 Hz; f2 = 1400 Hz, As = 35 dB, Chebychev 1)
 +
| BP1 - (f1 = 1088 Hz; f2 = 1185 Hz, f3 = 1233 Hz; f4 = 1330 Hz, Chebychev 2 ) 
 +
| BS1 - (f1 = 1329 Hz; f2 = 1447Hz, f3 = 1507 Hz; f4 = 1625 Hz, Chebychev 2 )
 +
|-
 +
| Equipe 5
 +
| LP - (f1 = 850 Hz; f2 = 1200 Hz, As = 35 dB, Chebychev 1)
 +
| HP - (f1 = 850 Hz; f2 = 1200 Hz, As = 25 dB, Butterworth)
 +
| BP1 - (f1 = 693 Hz; f2 = 755 Hz, f3 = 785 Hz; f4 = 847 Hz, Elíptico  )
 +
| BS1 - (f1 = 1202 Hz; f2 = 1309 Hz, f3 = 1363 Hz; f4 = 1470 Hz, Elíptico  )
 +
|}
 +
 
 +
:onde:
 +
:: LP (''Low Pass'')- Passa Baixa, HP (''High Pass'')- Passa Altas, BP (''Band Pass'')- Passa Faixa, BS (''Band Stop'')- Rejeita Faixa
 +
:: <math> f_N </math> - são as "N" frequência de especificação do filtro dadas em Hertz (kHz ou MHz);  f_a é a frequência de amostragem dos sinais e do sistema.
 +
:: <math> f_p </math> - frequência de passagem; <math> f_r </math> - frequência de rejeição, <math> A_p </math> - Atenuação máxima na banda de passagem (dB), <math> A_r </math> - Atenuação mínima na banda de rejeição (dB), <math> G_p </math> - Ganho médio na banda de passagem (dB).
 +
:*Os filtros LP e HP devem ser realizados utilizando a aproximação de Butterworth ou Chebyshev tipo 1 (devendo ser todos os calculados efetuados a partir das equações), enquanto os filtros BP e BS devem ser realizados utilizando a aproximação de Chebyshev tipo 2 ou Euler (podendo ser calculada a função H(p) a partir das funções do Matlab.
 +
:* A tabela acima indica o tipo de filtro que cada equipe deve utilizar.
 +
:* Para ambos filtros deve indicada a ordem do filtro, o valor de polos e zeros, e as equações de H(p), H(s), H(z).
 +
:* Deve ser apresentado de forma gráfica a resposta em frequência dos filtros (ganho em dB e fase) dos filtros (a) protótipo H(p), (b) Filtro analógico H(s)  e Filtro digital H(z).  Para mostrar que os filtros atendem a especificação utilize uma mascara com as especificações.
 +
:* No caso do filtro H(z) também deve ser mostrado o atraso de grupo (ver função [https://www.mathworks.com/help/signal/ref/grpdelay.html grpdelay] do Matlab)
 +
:* Apresente o diagrama dos pólos e zeros dos filtros H(p), H(s) e H(z)
 +
:* Utilize a mesma escala em dB para os 3 gráficos de cada filtro.  Nas abcissas utilize uma escala em Hz (kHz ou MHz). Utilize uma mascara com cor diferenciada para indicar claramente a especificação do filtro, e crie um segundo gráfico mostrando claramente a banda de passagem conforme ilustrado nas figuras abaixo:
 +
[[Arquivo:KaiserFIR.png| 600 px | Resposta em frequência - Ganho em dB ]] [[Arquivo:KaiserFIRZoom.png |600 px | Detalhe da banda de passagem da resposta em frequência - Ganho em dB]]
 +
 
 +
:* 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.
 +
{{collapse bottom}}
 +
 
 +
{{collapse top  | AE2 - Projeto de Filtros Digitais FIR (Entrega e prazos ver Moodle)}}
 +
Esta avaliação visa verificar se você conhece a metodologia de projeto de filtros digitais FIR: (a) Projeto de filtros com Janela fixas e ajustáveis; (b) Projeto de filtros com o algoritmo de Parks-McCleallan;  Nesta avaliação é solicitado que cada equipe realize os mesmos filtros projeto de filtros da atividade AE1 (somente os filtros 1 a 3).
 +
:*O filtro LP deve ser realizado utilizando uma janela fixa calculando os valores dos coeficientes da série de Fourier, os valores do vetor da janela podem ser obtidos usando as funções do Matlab. .
 +
:*O filtro HP deve ser realizado utilizando uma janela ajustável de Kaiser, podendo ser utilizado diretamente funções do Matlab que calculam a janela. 
 +
:*O filtro BP deve ser projetado usando o algoritmo de Parks-McCleallan.
 +
:* Procure obter em cada caso a menor ordem que possibilite ter uma resposta de frequência que atende a sua especificação.
 +
:* Para todos filtros deve indicada a ordem do filtro.
 +
:* Deve ser apresentado de forma gráfica a resposta em frequência dos filtros (ganho em dB e fase) dos filtros digitais H(z).
 +
:* Deve ser apresentado o diagrama dos pólos e zeros do filtro H(z)
 +
:* Utilize a mesma escala em dB para os filtros.  Nas abcissas utilize uma escala em Hz (kHz ou MHz). Utilize uma mascara com cor diferenciada para indicar claramente a especificação do filtro, e crie um segundo gráfico mostrando claramente a banda de passagem conforme ilustrado nas figuras da atividade AE1.
 +
:* 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.  Note este relatório é simplificado, mas é necessário uma análise textual dos resultados.
 +
:* Envie o relatório em pdf e os arquivos ".m" utilizados na plataforma Moodle.
 +
{{collapse bottom}}
 +
 
 +
{{collapse top | AE4 - Realização de Filtro Digitais FIR e IIR (Entrega e prazos ver Moodle (4 Dez as 13h00)}}
 +
:1. Objetivo projetar filtros que tem a a mesma especificação de magnitude usando diferentes tipos de filtro digital, sendo um do tipo IIR e outro do tipo FIR. Estabelecer uma comparação entre esses filtros e escrever um breve relatório mostrando as vantagens do filtro escolhido sobre o outro.
 +
:2. É permitido (incentivado) o uso de ferramentas como o FDAtool e funções como o fdesign para o projeto do filtro.
 +
:3. Cada equipe deverá realizar o projeto de um dos 5 filtros com as especificações dadas na AE2 e AE3.  Note que nas atividades AE2 e AE3 os projetos dos filtros foram feitos com precisão infinita (ponto flutuante - 64 bits).  Nesta etapa os filtros projetados deverão ser REALIZADOS utilizando no mínimo as seguintes estruturas:
 +
::* IIR - Forma direta I, II (ou as transpostas correspondentes).
 +
::* IIR - Em seções de segunda ordem (SOS).
 +
::* FIR - Forma direta(ou transposta)
 +
::* FIR - Forma (anti)simétrica.
 +
:4. A segunda etapa do projeto será com precisão finita (usando ponto fixo), devendo o aluno buscar minimizar a área necessária, considerando tanto a ordem do filtro, como o número de bits necessário. Para fins de simplificação, considere que a área de hardware (AHw) necessária para implementar um filtro corresponde a:
 +
:: <math> AHw = max((2 x N_{multiplicadores} + N_{somadores}), N_{atrasos})*N_{bits}. </math>
 +
:: Note que para manter o filtro dentro das especificações talvez seja necessário reprojetar o filtro.
 +
:: Mostre de modo simplificado como o filtro é realizado em cada caso.
 +
:: Indique o valor dos coeficientes após a quantização.
 +
:: Utilize gráficos sobrepostos para comparar a realização dos filtros com diferentes estruturas e quantizações.
 +
:: Utilize uma tabela para resumir os resultados (hardware, ordem, atraso de grupo, número de bits) e compare a implementação usando FIR e IIR.
 +
:5. Escreva um relatório (no máximo 1 pagina de texto) mostrando os resultados obtidos e envie o relatório em pdf e os arquivos ".m" utilizados na plataforma [https://moodle.sj.ifsc.edu.br/mod/assign/view.php?id=3075 moodle]
 +
{{collapse bottom}}
 +
 
 +
{{collapse top |  AE3 - Projeto de um Detector de DTMF (Entrega e prazos ver Moodle)}}
 +
* Projeto de um receptor [https://pt.wikipedia.org/wiki/DTMF DTMF].
 +
:* cada equipe deverá projetar os discriminadores de frequências correspondente a duas linhas e três colunas (ou três linhas e duas colunas) do sistema DTMF.
 +
{| 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=20% align="center"| Linhas
 +
! scope="col" width=20% align="center"| Colunas
 +
! scope="col" width=20% align="center"| Teclas
 +
! scope="col" width=20% align="center"| Fator (N)
 +
|-
 +
| Equipe 1 || L1, L3, L4 || C1, C3 || 7, 9, 1, 3, # || 8
 +
|-
 +
| Equipe 2 || L1, L2, L4 || C2, C3 || 5, 6, 0, #, 3 || 11
 +
|-
 +
| Equipe 3 || L1, L3, L4 || C1, C2 || 1, 2, 7, 8, 0 || 12
 +
|-
 +
| Equipe 4 || L1, L2 || C1, C2, C3 || 4, 6, 5, 2, 3 || 13
 +
|-
 +
| Equipe 5 || L1, L2, L3 || C1, C2 || 8, 7, 4, 1, 5 || 10
 +
|}
 +
 
 +
::* 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.  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.
 +
:* 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,shallbe:
 +
- 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 devem ser do tipo IIR enquanto que os filtro das colunas devem ser do tipo FIR.  O Filtro do detector de envoltório deve ser 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) Um sinal DTMF gerado através da soma das duas frequência correspondente a linha e coluna.
 +
:::*2) Os 5 Sinal de DTMF correspondentes as 5 teclas indicadas para a equipe, com '''duração de 0,5 segundos'''.
 +
:::*3) Um sinal DTMF correspondente a sequencia de teclas "123456789*0#" com '''duração de tom de 200ms e pausa de 200ms''' 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])
 +
:::*3) Os sinais do item (1) e (2) 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 não especificados, deverão ser feitos usando filtros simples centrados nas frequências centrais das linhas e colunas correspondentes,  sem a preocupação de atender as bandas de passagem e rejeição.
 +
::* 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.  
  
 +
:* 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 a 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. ''
 +
:* 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}}
 +
-->
 
==Referências Bibliográficas==
 
==Referências Bibliográficas==
 
<references/>
 
<references/>
  
 
{{ENGTELECO}}
 
{{ENGTELECO}}

Edição das 14h57min de 31 de julho de 2018

Registro on-line das aulas

Unidade 1

Unidade 1

Aula 1 (26 jul)
  • Revisão de Sinais e Sistemas no tempo discreto em Matlab:
  • Explorar a interface do Matlab.
  • Funções de visualização das variáveis no workspace.
  • Execução de instruções passo a passo.
  • Escrita de script .m
  • Uso da execução das seções de um script.
  • Incremento de valor e execução.
EXEMPLOS:
  • Leia com atenção e execute o exemplo (Moving-Avarage Filter) na página de help da função filter.
  • Leia com atenção o help Using FFT, abra o script clicando no botão [Open this Example]. Execute o script seção após seção. Note o uso da fft para determinar a frequência das manchas solares.
  • Para melhorar o desempenho no Matlab recomendo que leiam a pagina do Help, . Também gostaria de lembra-los que a tecla F9 executa o código destacado no Help. Programação com scripts .m.
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.
  • Leia sobre manchas solares para entender o que são os dados do segundo exemplo.

ATUAL

Aula 2 (31 jul)
  • Revisão de Sinais e Sistemas no tempo discreto em Matlab:
Sinais no dominio do tempo e dominio da frequencia. Uso da função fft
Exemplo de uso da FFT
%% Signal in Time Domain 
% Use Fourier transforms to find the frequency components of a signal buried in noise.
% Specify the parameters of a signal with a sampling frequency of 1 kHz and a signal duration of 1.5 seconds
Fs = 1000;            % Sampling frequency                    
T = 1/Fs;             % Sampling period       
L = 1500;             % Length of signal
t = (0:L-1)*T;        % Time vector

% Form a signal containing a 50 Hz sinusoid of amplitude 0.7 and a 120 Hz sinusoid of amplitude 1.
S = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t);

% Corrupt the signal with zero-mean white noise with a variance of 4.
X = S + 2*randn(size(t));

% Plot the noisy signal in the time domain. It is difficult to identify the frequency components by looking at the signal X(t).
subplot(211);
plot(1000*t(1:200),X(1:200))
title('Signal Corrupted with Zero-Mean Random Noise')
xlabel('t (milliseconds)')
ylabel('X(t)')

%% Signal in Frequency Domain
% Compute the Fourier transform of the signal.
Y = fft(X);

% Compute the two-sided spectrum P2. Then compute the single-sided spectrum P1 based on P2 and the even-valued signal length L.
P2 = abs(Y/L);
P1 = P2(1:L/2+1);
P1(2:end-1) = 2*P1(2:end-1);

% Define the frequency domain f and plot the single-sided amplitude spectrum P1. 
% The amplitudes are not exactly at 0.7 and 1, as expected, because of the added noise. 
% On average, longer signals produce better frequency approximations.
f = Fs*(0:(L/2))/L;
subplot(212);
plot(f,P1)
ylim([0 1.05]) 
title('Single-Sided Amplitude Spectrum of X(t)')
xlabel('f (Hz)')
ylabel('|P1(f)|')

% Now, take the Fourier transform of the original, uncorrupted signal and retrieve the exact amplitudes, 0.7 and 1.0.
Y = fft(S);
P2 = abs(Y/L);
P1 = P2(1:L/2+1);
P1(2:end-1) = 2*P1(2:end-1);

plot(f,P1) 
title('Single-Sided Amplitude Spectrum of S(t)')
xlabel('f (Hz)')
ylabel('|P1(f)|')
  • Amostragem de Sinais (Experimento 1.2)
  • Relembrar teorema da amostragem. Efeito da amostragem abaixo da frequência de Nyquist. Aliasing.
  • Notar que as amostras de um sinal (3 Hz) e um sinal (7 Hz) são idênticas quando amostrado com um sinal de 10 Hz.
%  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.
%% Experimento 1.2
fs = 10; % frequencia (Hz) de amostragem dos sinais
Ts = 1/fs; fase = 0;
time = 0:Ts:(1-Ts);
f1 = 3; % frequencia (Hz) do sinal s_1
f2 = 7; % frequencia (Hz) do sinal s_2
s_1 = cos(2*pi*f1*time+fase);
s_2 = cos(2*pi*f2*time+fase);
fsa = 1000; % frequência auxiliar de amostragem usada apenas para representação dos sinais originais
Tsa = 1/fsa;
time_aux = 0:Tsa:(1-Tsa);
figure(1);
stem(time,s_1,'ob');
hold on;
plot(time_aux, cos(2*pi*f1*time_aux+fase),'--k');
stem(time,s_2,'+r');
plot(time_aux, cos(2*pi*f2*time_aux+fase),'--m');
hold off;
legend('s_1 discreto','s_1 contínuo','s_2 discreto','s_2 contínuo')
Unidade 2

Unidade 2

Aula 15 e 15 (10 e 13 abr)
  • Filtros Digitais: Filtros IIR: Uso do Matlab.
O projeto dos filtros digitais IIR baseados na transformada bilinear no Matlab é realizada em dois passos: (1) Determinação da ordem do filtro; (2) Determinação dos coeficientes do numerador e denominador de .

-->

Unidade 3

Unidade 3

Unidade 4

Unidade 4

Aula 27 e 28 (25 e 29 mai)
As aulas foram suspensas pela direção do campus em funções da GREVE DOS CAMINHONEIROS
Aula 29 (05 jun)
  • Filtros Digitais: Quantização
Ver Use Filter Designer with DSP System Toolbox Software
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)
  • Utilizando o filtro projetado na AE2 e AE3, 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.
Aula 30 (08 jun)
  • Uso do Simulink
Aula 31 (12 jun)

Para configurar o Simulink para sistemas discretos execute o comando dspstartup.m antes de abrir um novo modelo. -->

Unidade 5 - PROJETO FINAL

Unidade 5 - PROJETO FINAL

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

Referências Bibliográficas



Curso de Engenharia de Telecomunicações