Mudanças entre as edições de "PSD29007-Engtelecom(2019-2) - Prof. Marcos Moecke"
Linha 1 255: | Linha 1 255: | ||
*Após a realização do filtro, exporte o modelo do filtro para o Simulink. | *Após a realização do filtro, exporte o modelo do filtro para o Simulink. | ||
--> | --> | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | |||
+ | ===Unidade 5 - Projeto Final=== | ||
+ | {{collapse top| expand=true | Unidade 5 - Projeto Final}} | ||
+ | |||
+ | ; Aula XX (18 nov): | ||
+ | {{collapse top | expand=true| AP2 - 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 do sistema DTMF que permitam discriminar os números indicados na tabela abaixo. | ||
+ | <!-- | ||
+ | {| 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"| Teclas | ||
+ | ! scope="col" width=20% align="center"| Fator subamostragem (N) | ||
+ | |- | ||
+ | | E1 || 7, 9, 5, 2, # || 6 | ||
+ | |- | ||
+ | | E2 || 4, 5, 3, 8, 0 || 10 | ||
+ | |- | ||
+ | | E3 || 2, 3, 4, 9, * || 14 | ||
+ | |} | ||
+ | --> | ||
+ | ::* A frequência de amostragem ''fa2'' do sinal de entrada no sistema mostrado abaixo é de 44,1/N kHz, no entanto o sinal gerado no AUDACITY é amostrado em fa1 = 44,1 kHz, portanto antes do circuito abaixo é necessário incluir um filtro antialiasing (low pass) com fc = (44,1/2)/N kHz e um circuito para subamostrar (downsampling) o sinal com fa1 = 44,1 kHz. Esse filtro deverá ser do tipo IIR, sendo de aproximação Butterworth ou Chebyshev tipo 1, para que tenha uma resposta de frequência monotonicamente decrescente após a frequência de corte Assim o sistema terá duas frequências de amostragem, '''fa1 = 44,1 kHz''' até o subamostrador e '''fa2 = 44,1/N kHz''' depois deste circuito. | ||
+ | :* As especificações do discriminador de frequência, mostrado na figura, são: | ||
+ | <center> [[Arquivo:DiscriminadorDTMF.png]]</center> | ||
+ | De acordo com [http://www.etsi.org/deliver/etsi_es/201200_201299/20123503/01.01.01_50/es_20123503v010101m.pdf ETSI ES 201 235-3 - Specification of Dual Tone Multi-Frequency (DTMF) Transmitters and Receivers; Part 3: Receivers] as características dos componentes do receptor são: | ||
+ | <code> | ||
+ | — low-pass filter F <= 960 Hz, no entanto adotaremos a frequência '''sqrt(941*1209)'''; | ||
+ | — high-pass filter F >= 1190 Hz, no entanto adotaremos a frequência '''sqrt(941*1209)'''; | ||
+ | — two threshold comparators; | ||
+ | — eight channel filters (two pole filters: -1,5 dB band pass limits at the nominal frequency ± (1,5%+ 2 Hz)); | ||
+ | — eight rectifiers; | ||
+ | — eight single pole (RC) filters, time constant \tau = 4 a 5 ms. | ||
+ | The thresholds and decision logic are regulated in order not to recognize character signals with a level below -30 dBm | ||
+ | and to recognize valid character signals with a level in the range of -4 dBm to -30 dBm. | ||
+ | </syntaxhighlight> | ||
+ | De acordo com [http://www.etsi.org/deliver/etsi_es/201200_201299/20123502/01.01.01_60/es_20123502v010101p.pdf ETSI ES 201 235-2 - Specification of Dual Tone Multi-Frequency (DTMF) Transmitters and Receivers; Part 3: Transmitters] as características dos componentes do transmissor são: | ||
+ | |||
+ | <code> | ||
+ | High group: signalling frequencies , which have nominal values of 1 209 Hz, 1 336 Hz, 1 477 Hz and 1 633 Hz | ||
+ | Low group: signalling frequencies, which have nominal values of 697 Hz, 770 Hz, 852 Hz and 941 Hz | ||
+ | The tolerances of the output frequencies shall be within ±1,5 % of their nominal values. | ||
+ | The sending levels when the DTMF transmitter is terminated with the reference impedance ZR,shall be: | ||
+ | - for the high frequency group: -9,0 dBV, +2,0 dB / -2,5 dB; | ||
+ | - for the low frequency group: -11,0 dBV, +2,5 dB / -2,0 dB | ||
+ | where dBV - Absolute voltage level expressed in decibels relative to 1 volt. | ||
+ | The duration of any individual DTMF tone combination sent shall not be less than 65 ms. | ||
+ | The duration of the pause between any individual DTMF tone combination shall not be less than 65 ms. | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ::* Os filtros das linhas e das colunas devem ser do tipo FIR. As diferenças de atraso entre os filtros devem ser compensadas usados elementos de atraso (<math> z^{-n} </math>). | ||
+ | ::* Sugere-se utilizar para o filtro do detector de envoltório um filtro IIR do tipo Butterworth. | ||
+ | ::* O circuito retificador deve se implementado pela função '''abs'''. | ||
+ | ::* O circuito '''TC - Threshold Comparator''' não deve ser implementado, pois tem apenas a função de rejeitar sinais de entrada que estão acima de -3dBm ou abaixo de -40 dBm, | ||
+ | ::* Como sinais de entrada serão utilizados: | ||
+ | :::*1) 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 65ms e pausa de 65ms''' para cada tecla. (ver [http://www.etsi.org/deliver/etsi_es/201200_201299/20123502/01.01.01_60/es_20123502v010101p.pdf ETSI ES 201 235-2 - Specification of Dual Tone Multi-Frequency (DTMF) Transmitters and Receivers; Part 2: Transmitters]) | ||
+ | :::*4) Os sinais do item (2) e (3) somados a um ruído branco, cuja relação sinal/ruído deve alterável entre 0 dB até 80 dB. | ||
+ | ::* A seleção do sinal de entrada pode ser feita através de '''manual switch''' ou '''multiport switch'''. | ||
+ | ::* Os discriminadores das linhas e colunas 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. | ||
+ | <!-- | ||
+ | ;ENTREGAS: | ||
+ | :* Mostrar a resposta em frequência dos filtros utilizados (IIR ou FIR). | ||
+ | :* Mostrar o atraso de grupo dos filtros. | ||
+ | :* Tanto no resposta em frequência como no atraso de grupo use nas abcissas utilize uma escala em Hz (kHz ou MHz) adequada ao seu caso. | ||
+ | :* Apresentar no Simulink o sistema organizado em subsistemas/áreas. Documentar os vários subsistemas e função dos blocos. | ||
+ | :* Mostre no relatório claramente que o que foi solicitado no projeto está sendo atendido através de testes com o Simulink. | ||
+ | :* Escreva um relatório técnico em PDF mostrando os resultados obtidos e comentando os resultados obtidos. Não é necessário apresentar a teoria utilizado para o projeto, mas todos os cálculos e metodologia utilizada devem estar documentados. | ||
+ | :* Envie o relatório em pdf e os arquivos ".m" utilizados na plataforma Moodle. | ||
+ | :* ''(Opcional) As equipes que desejarem poderão programar o hardware de um kit FPGA para conferir o funcionamento do sistema. Sugere-se que a geração dos sinais DTMF seja feita utilizando um app gerador para Smartphone e usada a interface conversora A/D para capturar os sinais de entrada. '' | ||
+ | --> | ||
+ | ;NORMAS DE DTMF: | ||
+ | :* Ver as especificações DTMF em: | ||
+ | * [http://www.etsi.org/deliver/etsi_es/201200_201299/20123501/01.01.01_50/es_20123501v010101m.pdf ETSI ES 201 235-1 - Specification of Dual Tone Multi-Frequency (DTMF) Transmitters and Receivers; Part 1: General] | ||
+ | * [http://www.etsi.org/deliver/etsi_es/201200_201299/20123502/01.01.01_60/es_20123502v010101p.pdf ETSI ES 201 235-2 - Specification of Dual Tone Multi-Frequency (DTMF) Transmitters and Receivers; Part 2: Transmitters] | ||
+ | * [http://www.etsi.org/deliver/etsi_es/201200_201299/20123503/01.01.01_50/es_20123503v010101m.pdf ETSI ES 201 235-3 - Specification of Dual Tone Multi-Frequency (DTMF) Transmitters and Receivers; Part 3: Receivers] | ||
+ | * [http://www.etsi.org/deliver/etsi_es/201200_201299/20123504/01.01.01_50/es_20123504v010101m.pdf ETSI ES 201 235-4 - Specification of Dual Tone Multi-Frequency (DTMF) Transmitters and Receivers; Part 4: Receivers for use in Terminal Equipment for end-to-end signalling] | ||
+ | :* Outros links auxiliares: | ||
+ | *[https://en.wikipedia.org/wiki/Dual-tone_multi-frequency_signaling DTMF] | ||
+ | * [https://en.wikipedia.org/wiki/Time_constant Relação entre constante de tempo e frequencia de corte] | ||
+ | * [http://www.sengpielaudio.com/calculator-db-volt.htm Calculador de dBV] | ||
{{collapse bottom}} | {{collapse bottom}} | ||
Edição das 13h58min de 18 de novembro de 2019
Registro on-line das aulas
Unidade 1
Unidade 1 | ||||||||
---|---|---|---|---|---|---|---|---|
Aula 1 EAD
Execute no Matlab o código abaixo, e analise os 3 filtros implementados através dos seus zeros e polos. Busque tirar conclusões sobre a influência da posição dos polos e zeros (ver o gráfico do plano z) e correlacione com a resposta de frequência em magnitude (gráfico do freqz). %% Experimento 2.3 - Filtros Digitais
% Exemplos e Experimentos baseados no livro:
% DINIZ, P. S. R., DA SILVA, E. A. B., e LIMA NETTO, S. Processamento Digital de Sinais: Projeto e Análise de Sistemas. 2. ed. Porto Alegre: Bookman, 2014. 976 p. ISBN 978-8582601235.
% FILE: Exp2_3.m
%% 1º filtro
p1 = 0.9*exp(1j*pi/4);
Z = [1 -1 ]'; P = [p1 p1']';
[num,den] = zp2tf(Z,P,1);
[h,w] = freqz(num,den);
figure(1); plot(w,abs(h)/max(abs(h)));
figure(2); zplane(num,den);
%% 2º filtro
z1 = exp(1j*pi/8);
z2 = exp(1j*3*pi/8);
p1 = 0.9*exp(1j*pi/4);
Z = [1 -1 z1 z1' z2 z2']';
P = [p1 p1' p1 p1' p1 p1']';
[num,den] = zp2tf(Z,P,1);
[h,w] = freqz(num,den);
figure(1); plot(w,abs(h)/max(abs(h)));
figure(2); zplane(num,den);
%% 3º filtro
z1 = exp(1j*pi/8);
z2 = exp(1j*3*pi/8);
p1 = 0.99*exp(1j*pi/4);
p2 = 0.9*exp(1j*pi/4 - 1j*pi/30);
p3 = 0.9*exp(1j*pi/4 + 1j*pi/30);
Z = [1 -1 z1 z1' z2 z2']';
P = [p1 p1' p2 p2' p3 p3']';
[num,den] = zp2tf(Z,P,1);
[h,w] = freqz(num,den);
figure(1); plot(w,abs(h)/max(abs(h)));
figure(2); zplane(num,den);
%% Carregando o som
clear, close, clc
load handel;
%% Reproduzindo o som
sound(y,Fs)
% Reproduzindo o som
%soundsc(y,Fs)
% Reproduzindo o som
%player = audioplayer(y, Fs);
%play(player);
%% Carregando o som
clear, close, clc
[y,Fs] = audioread('DTMF_8kHz.ogg');
%% Reproduzindo o som
sound(y,Fs)
%% Visualizando o som no DT
time = [0:length(y)-1]'/Fs;
plot(time',y'); xlabel('segundos');
xlim([0 time(end)]), ylim([-1 1]);
%% Visualizando o som no DF
Nfreq = length(y);
freq = linspace(0,2*pi,Nfreq)'*Fs/pi/2;
Y = fft(y,Nfreq)/Nfreq;
plot(freq,abs(Y)); xlabel('Hertz');
xlim([0 Fs/2]);
|
Unidade 2
Unidade 2 | |||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
b = [1 1];
a = [1 1 5];
[z1,p1,k]=tf2zp(b,a)
z2 = roots(b);
p2 = roots(a);
zplane(b,a);
%%
freqs(b,a);
%%
syms s w
H(s) = (s+1)/(s^2 + s + 5);
pretty(H(1j*w))
latex(H(1j*w))
%%
ws = logspace(-2, 1, 1000);
h = H(1j*ws);
subplot(211)
semilogx(ws,abs(h)); grid on;
subplot(212)
semilogx(ws,angle(h)/pi*180); grid on;
Os polinômios de Chebyshev de primeira ordem são definidos pela relação recursiva: Os primeiros cinco polinômios de Chebyshev de primeira ordem são:
%% Projeto de filtro passa-baixas usando funções do Matlab
%% Especificações do filtro
Wp =16000; Ws = 20000; Ap = 0.3; As = 20; G0= 3;
% Para analisar o filtro projetado, use fvtool(b,a) para observar plano s, resposta em magnitude, fase e atraso de grupo
%% Butterworth
[n,Wn] = buttord(Wp, Ws, Ap, As,'s')
[b,a] = butter(n,Wn, 's');
%% Chebyshev I
n = cheb1ord(Wp, Ws, Ap, As,'s')
[b,a] = cheby1(n,Ap, Wp, 's');
%% Chebyshev II
n = cheb2ord(Wp, Ws, Ap, As,'s')
[b,a] = cheby2(n,As, Ws, 's');
%% Elliptic - Cauer
[n, Wn] = ellipord(Wp, Ws, Ap, As,'s')
[b,a] = ellip(n,Ap,As, Wn, 's');
fa = 200;
fN = fa/2;
wo = 60/fN; bw = 10/fN;
[b,a] = iirnotch(wo,bw);
fvtool(b,a);
syms z;
N(z) = poly2sym(b,z);
D(z) = poly2sym(a,z);
H(z) = N(z)/D(z);
pretty(vpa(H(z),3))
fa = 8000;
fN = fa/2;
wo = 941/fN; bw = 100/fN;
[b,a] = iirpeak(wo,bw);
fvtool(b,a);
syms z;
N(z) = poly2sym(b,z);
D(z) = poly2sym(a,z);
H(z) = N(z)/D(z);
pretty(vpa(H(z),3))
fa = 8000; fN = fa/2;
fo = 1000; bw = 20/fN;
[b,a] = iircomb(fa/fo,bw,'peak'); % ou use a flag 'notch'
fvtool(b,a);
syms z;
N(z) = poly2sym(b,z);
D(z) = poly2sym(a,z);
H(z) = N(z)/D(z);
pretty(vpa(H(z),3))
|
Unidade 3
Unidade 3 - Filtros FIR | ||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
N = 10;
bi = 2*(rand(1,N)-0.5)
%% Tipo I - LP, HP, BS, BP
b = [bi (2*rand(1,1)-0.5) flip(bi)];
...
%% Tipo II - LP, BP
% tem um zero em -1
b = [bi flip(bi)];
...
%% Tipo III - BP
% tem um zero em 1 e -1
b = [bi 0 -flip(bi)];
...
%% Tipo IV - BP, HP
% tem um zero em 1
b = [bi -flip(bi)];
...
L = 64;
wvtool(rectwin(L), triang(L), bartlett(L), hann(L), hamming(L), blackman(L), blackmanharris(L), nuttallwin(L));
Projetar um filtro passa baixas usando uma janela temporal fixa (verificar a janela que atende a especificação) wp = 0.2*pi; Ap = 0.2 dB; Gp = 0 dB ws = 0.3*pi; As = 60 dB;
Projetar um filtro LP usando uma janela temporal fixa (hamming, bartlett-hanning, hanning). wp = 0.4*pi; Ap = 1 dB; Gp = 0 dB ws = 0.6*pi; As = 40 dB;
N = <ordem>
h_fir = fir1(N,Wn,hamming(N+1));
[Hw,w] =freqz(h_fir);
plot(w/pi,20*log10(abs(Hw)))
title(['hamming N = ' num2str(N)])
%fvtool(h_fir,1)
L = 64;
r = 60; % Chebyshev e Tukey
alpha = 3; % Gauss
betha = 8; % Kaiser
nbar = 10; % Taylor
wvtool(kaiser(L,betha), chebwin(L,r), gausswin(L,alpha),tukeywin(L,r), taylorwin(L,nbar,-r));
Para a janela de Kaiser, a estimação do fator e da ordem do filtro são obtidos por:
onde é a atenuação do lóbulo lateral e é a largura da banda de transição em rad/amostra. A janela de Kaiser é definida por:
onde : é a função de Bessel de ordem zero [1] Utilizando o Matlab é possível estimar esses valores utilizando a função kaiserord. Exemplo da obtenção de um filtro passa baixa com , , atenuação de 40 dB na "stopband" fsamp = 8000;
fcuts = [1000 1500];
mags = [1 0];
devs = [0.01 0.01];
[n,Wn,beta,ftype] = kaiserord(fcuts,mags,devs,fsamp);
Com os parâmetros é possível projetar o filtro usando a função fir1, que utiliza o método da janela para o projeto do filtro. h_fir = fir1(n,Wn,ftype,kaiser(n+1,beta),'noscale');
[Hw,w] =freqz(h_fir);
plot(w*fsamp/2/pi,20*log10(abs(Hw)))
title(['Kaiser filter N = ' num2str(n)])
%fvtool(h_fir,1)
Digital Filters with Linear Phase].
fa = 8000;
Ap = 0.4;
Ar = 40;
fp = 1000;
fr = 1500;
f = [fp fr];
a = [1 0];
dev = [(10^(Ap/20)-1)/(10^(Ap/20)+1) 10^(-Ar/20)];
[n,fo,ao,w] = firpmord(f,a,dev,fa);
b = firpm(n,fo,ao,w);
[h,w] = freqz(b,1,1024,fa);
plot(w, 20*log10(abs(h))); hold on;
plot([0 fr fr fa/2], [Ap/2 Ap/2 -Ar -Ar],':m')
plot([0 fp fp], [-Ap/2 -Ap/2 -(Ar+30)],':m');
ylim([-(Ar+30) Ap/2+10])
|
Unidade 4 - Realização de Filtros
Unidade 4 - Realização de Filtros |
---|
Fs = 30000; % Sampling Frequency
Fpass = 12000; % Passband Frequency
Fstop = 13000; % Stopband Frequency
Dpass = 0.01; % Passband Ripple
Dstop = 0.01; % Stopband Attenuation
flag = 'scale'; % Sampling Flag
% Calculate the order from the parameters using KAISERORD.
[N,Wn,BETA,TYPE] = kaiserord([Fpass Fstop]/(Fs/2), [1 0], [Dstop Dpass]);
% Calculate the coefficients using the FIR1 function.
b = fir1(N, Wn, TYPE, kaiser(N+1, BETA), flag);
hFIR = dsp.FIRFilter;
hFIR.Numerator = b;
% Para definir diretamente os coeficientes
realizemdl(hFIR)
% Para definir os coeficientes através de uma matriz de entrada
realizemdl(hFIR,'MapCoeffsToPorts','on');
DICAS:
Para configurar o Simulink para sistemas discretos execute o comando dspstartup.m antes de abrir um novo modelo.
ATUAL
x=-0.2;
% Word length = 8, fraction length = 7
q=quantizer([8,7]);
xq=quantize(q,x);
binxq=num2bin(q,xq)
% Word length = 16, fraction length = 15
q1=quantizer([16 15]);
xq1 = quantize(q1,x);
binxq1=num2bin(q1,xq1)
|
Unidade 5 - Projeto Final
Unidade 5 - Projeto Final | ||
---|---|---|
Avaliações
Referências Bibliográficas
|