PSD29007-Engtelecom(2015-1) - Prof. Marcos Moecke

De MediaWiki do Campus São José
Revisão de 11h32min de 18 de dezembro de 2016 por Leonan.s (discussão | contribs)
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)
Ir para navegação Ir para pesquisar

Registro on-line das aulas

Unidade 1

Aula 1 (6 fev)
  • Revisão de Sinais e Sistemas no tempo discreto em Matlab:
Variação do Experimento 1.2
%% Experimento 1.2
fs = 10; Ts = 1/fs; fase = 0;
time = 0:Ts:(1-Ts);
f1 = 3; f2 = 7;
s_1 = cos(2*pi*f1*time+fase);
s_2 = cos(2*pi*f2*time+fase);
fsa = 1000; 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')

Varie o valor da frequência de amostragem de 6 até 20 Hz e observe:

  1. Em qual frequência deixa de ocorrer recobrimento do sinal 2.
  2. O que ocorre quando a frequência é 6, 7, 14 Hz? Explique
  3. 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.
Aula 2 (10 fev)
  • Revisão de Sinais e Sistemas no tempo discreto em Matlab:
Variação do Experimento 2.2
%% 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')
  1. Verifique a diferença entre os tipos de plots comentados no código.
  2. substitua o denominador de H(z) por dois polos em [-0.8 -0.8].
  3. verifique o que ocorre se forem utilizados polos complexos conjugados [0.3-0.4i 0.3+0.4i 0.1]
  4. verifique o que ocorre se forem utilizados polos complexos não conjugados [0.3-0.4i 0.3+0.8i]
  5. verifique o que ocorre se os polos estiverem fora do circulo unitário [1.2 -0.2]. Interprete este resultado
Aula 3 (13 fev)
  • Revisão de Sinais e Sistemas no tempo discreto em Matlab:

Unidade 2

Aula 4 (20 fev)
  • Filtros Digitais: Filtros IIR:
  • Aproximação de magnitude de filtros analógicos: do tipo Butterworth.
  • Ver pag. 186 a 193 de [2]
Aula 5 (24 fev)
  • Filtros Digitais: Filtros IIR:
  • Projeto de filtros analógicos passa-baixas: do tipo Butterworth.
  • Ver pag. 194 a 204 de [2]
Aula 6 (27 fev)
  • Filtros Digitais: Filtros IIR:
  • Projeto de filtros analógicos passa-baixas: do tipo Chebyshev I.
  • Ver pag. 204 a 208 de [2]
Aula 7 (3 mar)
  • Filtros Digitais: Filtros IIR:
  • Funçãos para projeto do filtro final (analógico com 's'): besself, butter, cheby1, cheby2, ellip
  • Funções de estimação da ordem do filtro: buttord, cheb1ord, cheb2ord, ellipord
  • Funções para projeto do filtro protótipo analógico passa-baixas: besselap, buttap, cheb1ap, cheb2ap, ellipap
  • Funções de transformação de frequencia: lp2bp, lp2bs, lp2hp, lp2lp
  • Transformação de frequência de filtros analógicos
(passa-baixas -> passa-baixas, passa-baixas -> passa-altas, passa-baixas -> passa-faixa, passa-baixas -> rejeita-faixa)
  • Ver pag. 208 a 218 de [2]
Aula 8 (6 mar)
  • Filtros Digitais: Filtros IIR: transformações do tempo contínuo no tempo discreto
  • Transformação invariante ao impulso (apenas para filtros com forte atenuação em frequência altas, ex: passa-baixas e passa-faixa)
  • Transformação bilinear (para todos tipos de filtro)
  • Ver em IIR Filter Design,
  • Filter discretization functions: bilinear, impinvar
  • Ver pag. 219 a 229 de [2]
  • Ver pag. 403 a 415 e 434 a 435 de [1]

Unidade 3

Aula 9 (10/mar)
  • Filtros Digitais: Filtros FIR
  • Filtros de fase linear: simétricos e antisimétricos
  • Ver pag. 249 a 256de [2]
Aula 10 (13/mar)
  • Filtros Digitais: Filtros FIR
  • Filtros de fase linear: propriedades
  • Ver pag. 256 a 260 de [2]
Aula 11 (17/mar)
  • Filtros Digitais: Filtros FIR
  • Coeficientes da série de Fourier de filtros ideias: LP, HP, BP, BS
  • Passa-baixas (Low-pass)
  • Passa-altas (High-pass)
  • Passa-faixa (Band-pass)
  • Rejeita-banda (Band-stop)
  • Janela retangular, fenômeno de Gibbs
Aula 12 (18/mar)
  • Filtros Digitais: Filtros FIR
  • Uso de funções de janelamento temporal no projeto de filtros digitais.
  • Tipos de janelas temporais usadas no projeto de filtros digitais.
  • Retangular
  • Bartlett
  • Hanning
  • Hamming
  • Blackman
L = 64; 
wvtool(rectwin(L), triang(L), bartlett(L), hann(L), hamming(L), blackman(L), blackmanharris(L), nuttallwin(L));
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));
  • Ver pag. 266 a 273 de [2]
Aula 13 (24/mar)
  • Filtros Digitais: Filtros FIR
  • Projeto de filtro com splines.
  • Passa-baixas (Low-pass)
Aula 14 (25/mar)
  • Filtros Digitais: Filtros FIR
  • Filtro Equiripple com fase linear (Parks and McClellan)
Uso das funções do Matlab para projeto de filtro equiripple firpmord e firpm.
Projetar os seguintes filtros (frequencias em rad/s e rejeição em dB)
  • Passa-faixa: wr1 = 0.2, wp1 = 0.4, wp2 = 0.6, wr2 = 0.75, rr = 40, rp = 0.2.
  • Passa-faixa: wr1 = 0.2, wp1 = 0.4, wp2 = 0.6, wr2 = 0.7, rr = 40, rp = 0.2.
  • Passa-baixas: wp = 0.4, wr = 0.7, rr = 40, rp = 0.2.
  • Passa-altas: wp = 0.7, wr = 0.4, rr = 40, rp = 0.2.
Estudar Practical Introduction to Digital Filter Design, Using FDATool
Aula 15 (30/mar)
  • Filtros Digitais: Filtros FIR
  • Aula Prática: Uso do Fdatool para projeto de filtro IIR, FIR equiripple e FIR com janela.

Unidade 4

Aula 16 (1/04)
  • Realização de Filtros
Aula 17 (7/04)
  • Realização de Filtros IIR
  • Bloco de IIR de 2ª ordem.
Separando H(z) em dois blocos , e obtendo o sinal intermediário W(z)
Podemos obter a realização de na forma direta.
Para obter a realização de , é necessário reescrever a saída em função de e das saídas anteriores e :
Com o ordenamento dos blocos e em ordem direta teremos a Forma Direta I:
IIR FDI.svg
Com o ordenamento dos blocos e em ordem reversa teremos a Forma Direta II (Canônica):
IIR FDII.svg
  • Realização de filtros IIR: Forma Direta I e II, Transposta, Cascata, Paralela
  • Ver funções do Matlab: roots, poly, residuez, tf2zp, zp2tf, zp2sos, tf2sos, 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 [2].
  • Ver pag. 469 a 474 do Lathi [3]
Aula 18 (08/04)
  • Realização de Filtros
Aula 19 (14/04)
  • Realização de Filtros
Aula 20 (15/04)
  • Realização de Filtros
Aula 21 (22/04)
  • Projeto e realização de Filtros IIR x FIR
  • Ver AE5 (Prazo de entrega 11/05/2015)
Aula 22 (28 abr)
  • Projeto de Filtros IIR x FIR
  • Ver Atividade AE5.
Aula 23 (29 abr)
  • Atraso de grupo em filtros IIR e FIR no Matlab.
  • Filtro com fase nula
  • Ver atividade livre AL4.
Aula 24 (5 mai)
  • Projeto de filtros Passa-Tudo para equalizar a fase (atraso de grupo) de filtros IIR.
Aula 25(6 mai)
  • Filtros de fase mínima, fase máxima e mistos.
Aula 26(12 mai)
  • Implementação de um filtro equalizador do atraso de grupo para o projeto AE-5

Unidade 5

Aula 27(13 mai)
  • Uso do Simulink
Aula 28(19 mai)
  • Uso do Simulink
Introduction: What Is Simulink? 4:42
Constructing and Running a Simple Model 13:45
Simulating a Model 10:10
Working with MATLAB 9:12
Creating Subsystems 6:46
Aula 29, 30 (20 e 26 mai)
  • Uso do Simulink
Modeling Discrete Dynamical Systems 19:35
Use Signal Processing Blockset 12:01
dspstartup.m command
Working with Signals in Simulink 9:59
Aula 31 (27 mai)
  • Visita aos equipamento da RNP na UFSC -> prof Sandro Lima.
Aula 32 (2 jun)
  • Uso do Simulink
Applying a Filter 9:04
Designing and Implementing a Filter 10:23
Aula 33 (3 jun)
  • Exemplos de uso do Simulink:
  • Cancelamento de Ruido usando Filtragem adaptativa LMS.
SP_adaptiveFilt
  • Remoção dos Lyrics de um arquivo de música com voz centrada em canal estéreo.
SP_lyricRemoval
  • Conversão da taxa de amostragem de um sinal de audio.
dspaudiosrc
  • Realizar Atividade de Avaliação AE7.
Aula 34 e 35 (9 e 10 jun)
  • Uso do HDL Coder
a = fi(-1, true, 8, 0)
a.bin
a = fi(-128, true, 8, 0)
a.bin
a = fi(127, true, 8, 0)
a.bin
  • Ver também a função resize da ieee.numeric_std library.
  function RESIZE (ARG: SIGNED; NEW_SIZE: NATURAL) return SIGNED;
  -- Result: Resizes the SIGNED vector ARG to the specified size.
  --         To create a larger vector, the new [leftmost] bit positions
  --         are filled with the sign bit (ARG'LEFT). When truncating,
  --         the sign bit is retained along with the rightmost part.

  function RESIZE (ARG: UNSIGNED; NEW_SIZE: NATURAL) return UNSIGNED;
  -- Result: Resizes the SIGNED vector ARG to the specified size.
  --         To create a larger vector, the new [leftmost] bit positions
  --         are filled with '0'. When truncating, the leftmost bits
  --         are dropped.
Aula 36 (16 jun)
  • Uso do HDL Coder
  • Simulação do projeto da aula anterior no ModelSim-ALTERA.
Procedimentos para a Simulação

Abra o ModelSim:

/opt/altera/13.0sp1/modelsim_ase/bin/vsim &

Troque a pasta de trabalho para a pasta onde o Matlab gerou os arquivos .vhd e .do [File > Change Directory] ou digite na janela tcl:

cd  /tmp/mlhdlc_sfir/codegen/mlhdlc_sfir/hdlsrc

Execute o arquivo

do mlhdlc_sfir_fixpt_tb_compile.do

Edite o arquivo mlhdlc_sfir_fixpt_tb_sim.do, comentando as linhas que forçam a saida do Modelsim. Estas linhas foram criadas para a integração direta com o Matlab, mas ela não funciona com a versão do ModelSim que temos disponível.

edit mlhdlc_sfir_fixpt_tb_sim.do
#onerror {quit -f}
#onbreak {quit -f}
...
#quit -f

Agora execute o arquivo mlhdlc_sfir_fixpt_tb_sim.do, o qual irá adicionar os sinais a serem analisados na janela Wave e executará todos os comandos vhdl do arquivo *_tb.vhdl gerado pelo Matlab.

do mlhdlc_sfir_fixpt_tb_sim.do

Ao tinal da simulação a janela Transcript indicará se o teste passou:

# ** Note: **************TEST COMPLETED (PASSED)**************
#    Time: 20030 ns  Iteration: 1  Instance: /mlhdlc_sfir_fixpt_tb

ou se falhou:

# ** Note: **************TEST COMPLETED (FAILED)**************
#    Time: 20030 ns  Iteration: 1  Instance: /mlhdlc_sfir_fixpt_tb

Note ainda que os sinais de entrada (x_in), os sinais de saída (y_out e delayed_xout) e os dois sinais de referência gerados na simulação com o Matlab (y_out_ref e delayed_xout_ref) são mostrados como sequências de bits. Para melhorar a visualização mude o Formato desses sinais para analógico [Clique Direito do Mouse> Format > Analog (automatic)].


Problemas na integração Matlab - Modelsim
  • Foram criados os seguintes arquivos em /usr/local/bin
sudo gedit quartus

  1. !/bin/bash

VERSAO="13.0sp1" cd /opt/altera/${VERSAO}/quartus/bin exec ./quartus </syntaxhighlight>

sudo chmod +x quartus
sudo gedit quartus_sh

  1. !/bin/bash

VERSAO="13.0sp1" cd /opt/altera/${VERSAO}/quartus/bin exec ./quartus_sh </syntaxhighlight>

sudo chmod +x quartus_h
sudo gedit vsim

  1. !/bin/bash

VERSAO="13.0sp1" cd /opt/altera/${VERSAO}/modelsim_ase/bin exec ./vsim </syntaxhighlight>

sudo chmod +x vsim
  • Porque o Matlab/Simulink não funcionam com o ModelSim-Altera?

      1. Launching ModelSim for cosimulation

Error using hdlsim/l_GetModelSimLibInfo (line 525) Could not find ModelSim executable vsim. Make sure that ModelSim Linux 64-bit version is installed on this machine and its executables are on the system path. </syntaxhighlight>

Resposta em: http://www.mathworks.com/help/releases/R2015a/hdlverifier/gs/supported-eda-tools.html.
Solução: Instalar ModelSim SE 10.1c nas maquinas.
Novo problema: O Software ModelSim SE é pago e não tem disponível para LINUX


  • Referência:
Simulink® Getting Started Guide.
HDL Coder™ Getting Started Guide.
Consultar outros documentos sobre o Simulink no site da Mathworks.

Unidade 6

Aula 37 a 40 (17/06 a 30/06)
  • Projeto Final
Implementação de filtros em VHDL usando o HDL Coder para projeto e Modelsim para Simulação
  • Os alunos trabalharam de forma individual na realização e implentação do filtro projeto anteriormente na atividade AE5.
  • Ao final do projeto cada aluno deve apresentar:
  • o arquivo de projeto do HDL Coder com os códigos ".m";
  • o arquivos em VHDL do filtro e seu testbench;
  • o arquivo ".do" para a simulação com Modelsim;
  • um artigo técnico completando o artigo iniciado no item AE5.

Avaliações

  • Entrega dos diversos trabalhos ao longo do semestre AE1 a AE4.
  • Entrega do artigo sobre a atividade AE5 (27%)
  • Projeto Final. O projeto é avaliado nos quesitos: 1) Implementação do Sistema, 2) Documentação, 3) Avaliação Global do aluno no projeto. (40% do conceito)

Atividades extra

PARA ENTREGAR

JÁ ENCERRADAS

AE1 - Experimento 3.2 (Prazo de entrega 23/02/2015)
  1. Escreva um script com funções do Matlab para gerar as representações no domínio do tempo sinais da Figura 3.26 [1]. Use o subplot para inserir todas os sinais em uma única Figure do Matlab.
  2. Escreva um script com funções do Matlab para gerar as representações no domínio da frequência sinais da Figura 3.27 [1]. Use o subplot para inserir todas os sinais em uma única Figure do Matlab.
  3. Faça uma estimação melhor do espectro do sinal, segmentando o sinal x(n) e calculando a média dos espectros obtidos.
  4. É importante utilizar as escalas e legendas corretamente nos gráficos.
  5. Ver as funções do matlab legend, title, xlabel, ylabel.
  6. Escreva um pequeno relatório técnico mostrando os resultados obtidos e documentando o código escrito. Enviar para o meu email em formato pdf.
AE2 - Projeto de Filtro Analógicos (Prazo de entrega 09/03/2015)
  • Projeto os seguintes filtros analógicos passa baixas que atenda as seguintes especificações (as atenuações são relativos ao ganho em f = 0 Hz):
a) Frequência de passband f_p = 16 kHz. Frequência de rejeição (stopband) f_s = 60 kHz. Ganho de 10 dB em f = 0 Hz, atenuação de 3 dB em f_p e atenuação mínima de 35 dB em f_s, do tipo Butterworth.
b) Frequência de passband f_p = 16 kHz. Frequência de rejeição (stopband) f_s = 60 kHz. Ganho de 10 dB em f = 0 Hz, atenuação de 0.25 dB em f_p e atenuação mínima de 35 dB em f_s, do tipo Butterworth
c) Frequência de passband f_p = 16 kHz. Frequência de rejeição (stopband) f_s = 60 kHz. Ganho de 10 dB em f = 0 Hz, atenuação de 0.25 dB em f_p e atenuação mínima de 35 dB em f_s, do tipo Chebyshev I
d) Frequência de passband f_p = 16 kHz. Frequência de rejeição (stopband) f_s = 60 kHz. Ganho de 10 dB em f = 0 Hz, atenuação de 0.25 dB em f_p e atenuação mínima de 35 dB em f_s, do tipo Chebyshev II
  • O projeto de cada filtro deve apresentar o cálculo da ordem do filtro, dos polos do filtro, a equação de H(p), H(s), |H(jw)|^2, o ganho na frequência de rejeição (stopband) f_s.
  • A resposta em frequência normalizada e real devem ser feitas usando o Matlab. Apresentar o gráfico do ganho em dB e da fase em cada caso com escalas corretas.
  • Deve ser apresentado o diagrama dos pólos do filtro H(p) e H(s).
  • Para fins de comparação dos filtros, os filtros de diferentes tipos devem ser sobrepostos nesses gráficos.
  • Escreva um pequeno relatório técnico mostrando os resultados obtidos e documentando o código escrito. Enviar para o meu email em formato pdf com o Assunto: PSD29007 - Projeto de Filtro Butterworth.
AE3 - Projeto de Filtro Digitais IIR (Prazo de entrega 23/03/2015)
%% Variação do Experimento 6.1 - DINIZ
% Parâmetros do filtro digital passa-faixa
Ap = 0.5; % Atenuação máxima na banda de passagem
Ar = 65; % Atenuação mínima na banda de rejeição
Ws = 10000; Fs = Ws/(2*pi); Ts = 1/Fs; % Frequência de amostragem (Ws -> rad/s e Fs -> Hz), e período de amostragem
wr1 = 850; wr2 = 1150; % Frequências de rejeição (rad/s) normalizada em relação a Ws/2
wp1 = 980; wp2 =1020;  % Frequências de passagem (rad/s) normalizada em relação a Ws/2
 
% Cálculo do filtro digital passa-faixa usando transformação bilinear
wnr1 = wr1/(Ws/2); wnr2 = wr2/(Ws/2);  wr =[wnr1 wnr2];   
wnp1 = wp1/(Ws/2); wnp2 =1020/(Ws/2); wp = [wnp1 wnp2];  
[n wn] = ellipord(wp, wr, Ap, Ar);  
[b a] = ellip(n,Ap,Ar,wp);
[H, w] = freqz(b,a,10000);
fi = 0; ff = Ws/2;  % fi = 850*0.95; ff = 1150*1.05; 
subplot(311); plot(w*Fs,abs(H)); grid on; xlim([fi,ff]);
subplot(312); plot(w*Fs,angle(H)); grid on; xlim([fi,ff]);
[gd,w] = grpdelay([b a], 10000);
subplot(313); plot(w*Fs,gd); grid on; xlim([fi,ff]);
figure; zplane([b,a]);
 
%% Análise do filtro usando um cosenso puro
t = 0:Ts:(1-Ts);
ti =0; tf= 1; % ti=0.5; tf=0.6;
w1 = 800; 
x1 = cos(w1*t); 
y1 = filter(b,a,x1);
figure; plot(t,x1,'k',t,y1,'b'); ylim([-1.5 1.5]), xlim([ti tf]);
1. Varie o valor da frequência do sinal x1 no mínimo entre 800 rad/s e 1300 rad/s e observe o ganho, a defasagem e o atraso de grupo. (DICA use o incremento de valores em seções de código do Matlab)
  • O que é possível observar observando a escala de tempo de [0:1]? Explique
  • O que muda se observarmos um segmento menor de tempo [0.5 a 0.6]? Explique
2. Projete um filtro para as mesmas especificações usando uma das seguintes aproximações (Butterworth, Chebyshev I, Chebyshev II).
  • Como ficou a ordem dos filtros?
  • Como ficou a resposta de ganho, fase e o atraso de grupo?
  • Leia sobre o filtro Bessel e depois faça um filtro e analise o resultado. Qual foi a principal diferença? (opcional)
3. Escolha o tipo de aproximação que preferir e projete um filtro passa-baixas nas frequências wp2 =1020 rad/s e wr2 = 1150 rad/s. Analise o filtro obtido.
4. Escolha o tipo de aproximação que preferir e projete um filtro passa-altas nas frequências wp1 = 980 rad/s e wr1 = 850 rad/s. Analise o filtro obtido.
5. Escolha o tipo de aproximação que preferir e projete um filtro rejeita-faixa wp1 = 850 rad/s; wr1 = 980 rad/s; wr2 = 1020 rad/s ; wp2 = 1150 rad/s. Analise o filtro obtido.
6. Escreva um relatório técnico mostrando os resultados obtidos e documentando o código escrito. Enviar para o meu email em formato pdf com o Assunto: PSD29007 - Projeto de Filtro Digital IIR. Não é necessário fazer a revisão teórico do assunto (visto em aula). Foquem apenas na descrição dos filtros projetados, nos resultados e sua análise. Cada figura/gráfico deve ter uma legenda e ser mencionado no texto.
AE4 - Projeto de Filtro Digitais FIR - parte 1 (Prazo de entrega 30/03/2015)
1. Projeto um filtro FIR com fase linear com ordem de 7 com as características abaixo:
Aluno Tipo de filtro Especificações
DANILO BEDAQUE Passa-altas wp = 0,8
ELTON FERREIRA BROERING Passa-faixa wp1 = 0,3; wp2 = 0,5
ERNANI RODRIGUES DE S.THIAGO Passa-faixa wp1 = 0,1; wp2 = 0,2
JEAN MICHEL DE SOUZA SANT ANA Passa-altas wp = 0,4
LEONAN DA SILVA SARAIVA Passa-baixas wp = 0,2
THIAGO HENRIQUE BONOTTO DA SILVA Passa-baixas wp = 0,4
THIAGO WERNER Rejeita-faixa wp1 = 0,2; wp2 = 0,3
2. Projete o filtro usando as janelas do tipo Retangular, Hanning, Hamming e Blackmann.
  • O cálculo dos coeficientes da série de Fourier e amostras da janela e os coeficientes do filtro devem ser feitas de modo explicito, indicando as equações utilizadas.
3. Projete o filtro usando outras 2 janelas a sua livre escolha entre as implementadas por funções do Matlab.
  • Neste caso utilize a função adequada do Matlab para o cálculo das amostras da janela.
4. Apresente de modo gráfico o diagrama de zeros do filtro, a resposta em frequência do filtro (ganho), atraso de grupo e a resposta ao impulso do filtro.
  • Os ganhos devem ser apresentados em um gráfico único para permitir a comparação.
5. Realize a medida em dB da atenuação na frequências de passagem, o valor do ripple (ondulação) máximo na banda de passagem, a atenuação do primeiro lóbulo lateral e a frequência na qual o filtro atinge pela primeira vez essa mesma atenuação.
6. Escreva um relatório técnico mostrando os resultados obtidos e documentando o código escrito. Enviar para o meu email em formato pdf com o Assunto: PSD29007 - Projeto de Filtro Digital FIR - parte 1. Não é necessário fazer a revisão teórico do assunto (visto em aula). Foquem apenas na descrição dos filtros projetados, nos resultados e sua análise. Cada figura/gráfico deve ter uma legenda e ser mencionado no texto.
AE5 - Projeto de Filtro Digitais FIR x IIR (Prazo de entrega 15/05/2015)
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 artigo mostrando as vantagens do filtro escolhido sobre o outro.
2. É permitido (incentivado) o uso de ferramentas como o FDAtool para o projeto do filtro.
3. Cada aluno deverá realizar o projeto de um filtro (LP ou HP) e um filtro (BP ou BS), com as especificações abaixo:
Aluno Especificações do filtro 1 Especificações do filtro 2
DANILO BEDAQUE LP; fs = 100kHz; fp = 20kHz; fr = 28kHz; Ap = 0.5 dB; Ar = 60 dB; H = 0 dB BP; fs = 44kHz; fr1 = 8kHz; fp1 = 12kHz; fp2 = 15kHz; fr2 = 18kHz; Ar1 = 50; Ap = 1.5 dB; Ar2 = 70 dB; H = +10 dB
ELTON FERREIRA BROERING HP; fs = 100kHz; fp = 40kHz; fr = 34kHz; Ap = 0.3 dB; Ar = 60 dB; H = 0 dB BS; fs = 44kHz; fp1 = 8kHz; fr1 = 12kHz; fr2 = 15kHz; fp2 = 18kHz; Ap1 = 0.1; Ar = 60 dB; Ap2 = 0.1 dB; H = +3 dB
ERNANI RODRIGUES DE S.THIAGO LP; fs = 100kHz; fp = 10kHz; fr = 15kHz; Ap = 0.5 dB; Ar = 40 dB; H = 0 dB BS; fs = 100kHz; fp1 = 8kHz; fr1 = 12kHz; fr2 = 15kHz; fp2 = 18kHz; Ap1 = 0.3; Ar = 40 dB; Ap2 = 0.3 dB; H = -3 dB
JEAN MICHEL DE SOUZA SANT'ANA HP; fs = 100kHz; fp = 18kHz; fr = 10kHz; Ap = 0.3 dB; Ar = 70 dB; H = 0 dB BP; fs = 100kHz; fr1 = 5kHz; fp1 = 13kHz; fp2 = 15kHz; fr2 = 20kHz; Ar1 = 60; Ap = 1.5 dB; Ar2 = 50 dB; H = +5 dB
LEONAN DA SILVA SARAIVA LP; fs = 44kHz; fp = 10kHz; fr = 13kHz; Ap = 0.5 dB; Ar = 60 dB; H = 0 dB BP; fs = 100kHz; fr1 = 5kHz; fp1 = 30kHz; fp2 = 37kHz; fr2 = 45kHz; Ar1 = 70; Ap = 1.5 dB; Ar2 = 50 dB; H = -10 dB
THIAGO HENRIQUE BONOTTO DA SILVA HP; fs = 44kHz; fp = 18kHz; fr = 15kHz; Ap = 0.3 dB; Ar = 70 dB; H = 0 dB BS; fs = 100kHz; fp1 = 4kHz; fr1 = 7kHz; fr2 = 8kHz; fp2 = 15kHz; Ap1 = 0.3; Ar = 40 dB; Ap2 = 0.3 dB; H = +6 dB
THIAGO WERNER LP; fs = 44kHz; fp = 8kHz; fr = 10kHz; Ap = 0.5 dB; Ar = 40 dB; H = 0 dB BS; fs = 100kHz; fp1 = 23kHz; fr1 = 26kHz; fr2 = 27kHz; fp2 = 34kHz; Ap1 = 0.3; Ar = 40 dB; Ap2 = 0.3 dB; H = -6 dB
onde: LP = passa-baixas; HP = passa-altas; BP = passa-faixa; BS - rejeita-faixa; fa = frequência de amostragem; fp = frequência de passagem; fr = frequência de rejeição; Ap = atenuação máxima na passagem; Ar = atenuação mínima na rejeição; H = Ganho na banda de passagem.
4. A primeira etapa do projeto deve ser feita utilizando precisão infinita.
5. A segunda etapa do projeto será com precisão finita, 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 corresponde a:
6. Escreva um artigo mostrando os resultados obtidos e documentando o código escrito. Enviar para o meu email em formato pdf com o Assunto: PSD29007 - Projeto de Filtro Digitais FIR x IIR. É necessário fazer a revisão teórica dos filtros. Foquem apenas na descrição dos filtros projetados, nos resultados e sua análise. Cada figura/gráfico deve ter uma legenda e ser mencionado no texto. É necessário ter referências bibliográficas.
Resultados que devem ser avaliados:
  • Comparação dos filtro FIR com IIR
  • Estabilidade, ordem, resposta de frequência, atraso de grupo dos filtros utilizando precisão infinita
  • Estabilidade, ordem, resposta de frequência, atraso de grupo, área de hardware estimada, número de bits, número de somadores, multiplicadores e atrasos dos filtros utilizando precisão finita.
PROJETO FINAL - Implementação de Filtros em VHDL (Prazo de entrega 06/07/2015)
  1. Cada aluno deverá implementar em VHDL realizar um filtro (LP ou HP) e um filtro (BP ou BS), conforme projetado em AE5. Um dos filtros deverá ser IIR e o outro FIR.
  2. Na realização do filtro utilize os coeficientes quantizados.
  3. Deverá ser feita a simulação no ModelSim-Altera usando um arquivo de testbench.
  4. Após a verificação o filtro deverá ser implementado em um kit de FPGA a ser designado pelo professor. (opções DE2-115, Mercurio, DE0-Nano).
  5. Utilizar como base o artigo gerado na AE5 para incluir os novos resultados obtidos após os testes no hardware.
  6. Enviar os arquivos do projeto com o testbench em arquivo .zip junto com o novo relatório para o meu email com o Assunto: PSD29007 - Implementação de Filtros em VHDL.

ESTUDOS SEM ENTREGA DE DOCUMENTAÇÃO

AL1 - Resposta em frequência a partir da posição dos pólos-zeros
  1. Estudar a Seção 5.6 pag. 485 a 488 do livro do Lathi [3].
  2. Use as funções zplane, pz2tf, freqz para realizar o estudo.
AL2 - Resposta em frequência em Sistemas de Tempo Discreto
  1. Estudar a Seção 5.5 pag. 474 a 475 do livro do Lathi [3].
AL3 - Desempenho do código de uma FFT
  1. Estudar o Exemplo M9.2 pag. 778 a 779 do livro do Lathi [3].
N = 10000;
%% tamanho do vetor de 1015 -> 5 x 7 x 29
N0 = 1015;
y1 = rand(N0,1);
tic; for k = 1:N; Y1 = fft(y1)/N0; end; toc

%% tamanho do vetor de 1019 -> primo
N_0 = 1019;
y2 = [y1; zeros(N_0-N0,1)];
tic; for k = 1:N; Y2 = fft(y2)/N_0; end; toc

%% tamanho do vetor de 1024 -> 2^10
N_0 = 1024; 
y3 = [y1; zeros(N_0-N0,1)];
tic; for k = 1:N; Y3 = fft(y3)/1024; end; toc
AL4 - Atraso de grupo em filtros IIR e FIR no Matlab
  • O atraso de grupo de um filtro é a medida da atraso médio do filtro em função da frequência do sinal de entrada. Ele é obtido pela primeira derivada da resposta de fase do filtro. Se a resposta em frequencia é , então o atraso de grupo é:
onde é a fase de .
  • A Distorção de fase nula
  • A função de transferência do filtro é igual a magnitude ao quadrada da função de transferência original do filtro H1.
  • A ordem do filtro é o dobro da ordem do filtro H1.
  • Exemplo de aplicação a filtragem de um sinal ECG com ruído.
%% Carregando um sinal de ECG com ruído com duração de 4 segundos.
load noisyecg.mat
x = noisyECG_withTrend;
fa = 500;  %% 2000 amostras em 4 segundos => 500 amostras por segundo.
t = [0:length(x)-1]*1/fa;
plot(t,x);

%% Projetando um filtro passa-baixa tipo IIR  butter com f_passagem = 0.15 rad/s
d = designfilt('lowpassiir', ...
    'PassbandFrequency',0.15,'StopbandFrequency',0.2, ...
    'PassbandRipple',1,'StopbandAttenuation',60, ...
    'DesignMethod','butter');
freqz(d)

%% Filtro de x revertido x e somando com x filtrado. OFF LINE
y = flip(filter(d,flip(filter(d,x))));
y1 = filter(d,x);

figure(2);
subplot(2,1,1)
plot(t, [y y1])
title('Filtered Waveforms')
legend('Zero-phase Filtering','Conventional Filtering')

subplot(2,1,2)
plot(t, [x y])
title('Original Waveform')
legend('noisy ecg ','fitered ecg')
  • Verifique também o resultado da filtragem usando um filtro IIR (ellip, cheby1 ou cheby2) e filtros FIR (equiripple e de janela)
%% Projetando um filtro passa-baixa tipo FIR  equiripple com f_passagem = 0.15 rad/s
d = designfilt('lowpassfir', ...
    'PassbandFrequency',0.15,'StopbandFrequency',0.2, ...
    'PassbandRipple',1,'StopbandAttenuation',60, ...
    'DesignMethod','equiripple');

y = flip(filter(d,flip(filter(d,x))));
  • Note que nos filtros FIR de fase linear o procedimento mais simples é adiantar o sinal de acordo com o atraso de grupo (metade da ordem do filtro), devendo-se tomar cuidado para arredondar a meia amostra nos filtros de ordem impar.
y1 = filter(d,x);
gd = grpdelay(d);
gd1 = ceil(gd(1));
y = [y1(gd1:end); zeros(gd1-1, 1)];

O cálculo do atraso de grupo pode ser realizado utilizando a função grpdelay ou diretamente pela definição da derivada do ângulo em relação a frequência:

%% Calculo do atraso de grupo 
% Método 1 - uso da função grpdelay
[z,p,k] = butter(30,0.2);
sos = zp2sos(z,p,k);
[gd,w]=grpdelay(sos,128);
figure(1)
plot(w/pi,gd),grid on;
% Método 2 - derivada obtida por aproximação discreta
% calculo a cada par de pontos (w2-w1)/delta_w
[h,w] = freqz(sos);
a = unwrap(angle(h));
hold on; plot(w/pi,a,'g');
delta_w = pi/length(a);
plot(w(1:end-1)/pi+delta_w/2,-(a(2:end)-a(1:end-1))/delta_w,'r');

Referências Bibliográficas

  1. 1,0 1,1 1,2 1,3 1,4 1,5 DINIZ, P. S. R., DA SILVA, E. A. B., e LIMA NETTO, S. Processamento Digital de Sinais: Projeto e Análise de Sistemas. 2. ed. Porto Alegre: Bookman, 2014. 976 p. ISBN 978-8582601235
  2. 2,00 2,01 2,02 2,03 2,04 2,05 2,06 2,07 2,08 2,09 2,10 SHENOI, B. A. Introduction to Digital Signal Processing and Filter Design. 1.ed. New Jersey: John Wiley-Interscience, 2006. 440 p. ISBN 978-0471464822
  3. 3,0 3,1 3,2 3,3 LATHI, Bhagwandas P. Sinais e Sistemas Lineares. 2. ed. Porto Alegre: Artmed-Bookman, 2007. 856 p. ISBN 978-8560031139


Curso de Engenharia de Telecomunicações