Académique Documents
Professionnel Documents
Culture Documents
Introduc
ao
(2)
em que y[n] e o sinal de sada do filtro, o sinal x[n] e o sinal de entrada (neste caso a
sequencia de -1 e 1 gerada no modulador ) e h[k] corresponde a:
h[k] =
sin(c (k N ))
(k N )
(3)
1
2N
X
h[k].x[n k].
(4)
k=0
O sinal reconstrudo vai entao dar entrada no decimador, onde se vai utilizar um criterio
pouco refinado que escolhe um ponto de 16 em 16 pontos da sequencia reconstruda.
O programa vai entao gerar dois graficos e em cada um deles vai apresentar uma
sobreposicao do sinal original primeiro com o sinal reconstrudo nao decimado e so
depois com o sinal decimado.
Por fim, vai efectuar o calculo do E.N.O.B. ou Effective Number Of Bits dado pela
expressao:
E.N.O.B. =
S.N.R 1, 72
6, 02
(5)
AM
e
(6)
Implementac
ao
y[n] =
64
X
sin( (k N ))
16
k=0
(k N )
x[n k]
(7)
y[n] =
31
X
sin( (k N ))
16
k=0
(k N )
x[n k] +
33
X
sin( (k N ))
16
k=0
(k N )
x[n k] +
1
x[n k].
16
(8)
A funcao deltasigma dec.m e responsavel pela decimacao do sinal como foi definida
anteriormente e a funcao deltasigma enob calc.m efectua o calculo do S.N.R e do
E.N.O.B como foram definidos.
Para detalhes na implementacao, basta ler o codigo que se segue e os comentarios respectivos.
2.1
Script principal
Listing 1: deltasigma.m
% Sistemas de Aquisio de Dados, TPC n o 7
% Andr Cunha, n o 53757, LEFT
10
%
%
%
%
15
20
25
30
v = [];
x = [];
sequence = [];
tempos = [];
sinal_fir = [];
sinal_decima = [];
35
40
%
%
%
%
%
45
50
%
%
%
%
x = 0 : intervalo/pontos : intervalo;
v = 2*(sin(2* pi *x*frq*10) + sin(2* pi *x*frq*5) + sin(2* pi *x*frq*2)...
+ cos(2* pi *x*frq*9) + cos(2* pi *x*frq*6) + cos(2* pi *x*frq*4));
55
65
f o r i = 1 : pontos,
out_dac = out_dac * -1;
out_soma = v(i) + out_dac;
out_intg = out_intg + out_soma;
i f out_intg >= 0,
out_comp = 1;
out_dac = vref;
ones = ones +1;
else
out_comp = -1;
out_dac = -vref;
zeros = zeros +1;
end
70
75
sequence(i) = out_comp;
80
end
% Chama-se ento a funo que efectua a operao de convoluo na
% sequncia obtida do modulador delta-sigma.
85
sinal_fir = deltasigma_fir(pontos,sequence);
% Realiza-se um pequeno offset no vector para compensar os pontos
% "incompletos" que foram calculados no processo de convoluo.
90
f o r n = 33 : pontos,
sinal_fir(n-32) = sinal_fir(n);
end
95
100
105
110
120
125
130
disp(Antes da decimacao:)
deltasigma_enob_calc(v,sinal_fir,pontos,1);
135
disp(Depois da decimacao:)
deltasigma_enob_calc(v,sinal_decima,pontos,16);
2.2
Fun
c
ao filtradora
Listing 2: deltasigma fir.m
% Sistemas de Aquisio de Dados, TPC n o 7
% Andr Cunha, n o 53757, LEFT
function sinal_fir = deltasigma_fir(pontos,sequence)
10
15
20
30
35
40
else
y(k+1,j) = 11 * sequence(j-k) * sin((pi/16*(k-32)))...
/(pi *(k-32));
end
45
50
e l s e y(k+1,j) = 0;
end
end
55
end
% Tendo ento a matriz bidimensional completa, somam-se os seus
% termos em k e obtemos assim um vector com os valores do sinal
% filtrado.
60
sinal_fir = sum(y);
2.3
Fun
c
ao decimadora
Listing 3: deltasigma dec.m
% Sistemas de Aquisio de Dados, TPC n o 7
% Andr Cunha, n o 53757, LEFT
function sinal_decima = deltasigma_dec(pontos,sinal_fir)
15
20
f o r l = 1 : pontos,
sinal_decima(l) = NaN;
end
% Preenche-se o vector vazio parcialmente apenas com os pontos
% obtidos atravs critrio de decimao nas suas posies
% respectivas.
% Notar que se excluem os dois ltimos pontos por no terem
% validade real tendo em conta a correo de offset realizada
% acima.
f o r m = 1 : ((pontos/16)-2),
sinal_decima(16*m)=sinal_fir(16*m);
end
2.4
Fun
c
ao que calcula o E.N.O.B. e o S.N.R.
Listing 4: deltasigma enob calc.m
% Sistemas de Aquisio de Dados, TPC n o 7
% Andr Cunha, n o 53757, LEFT
10
15
f o r n = 1 : ((pontos/crit_dec) - 32/crit_dec),
desvios(crit_dec*n) = abs(sinal(crit_dec*n) - ...
sinal_proc(crit_dec*n));
end
% Calcula-se a mdia dos desvios.
desvio_med = mean(desvios);
20
30
35
40
10
Resultados
Para ter uma ideia daquilo que se deve esperar, introduziu-se o resultado ao correr o programa
com os valores recomendados no input.
Qual o valor da voltagem de referencia do DAC? (10)10
Qual o valor da frequencia base do sinal ? (100)100
O intervalo devera ser entre 0 e ? (0.01).01
Quantos pontos deseja amostrar? (3200)3200
Antes da decimacao:
O SNR calculado e igual a
40.9345
O ENOB calculado e igual a
6.5074
Depois da decimacao:
O SNR calculado e igual a
65.5044
O ENOB calculado e igual a
10.5888
11
Amplitude
10
0
0.001
0.002
0.003
0.004
0.005
0.006
Tempo (s)
0.007
0.008
0.009
0.01
Amplitude
10
0
0.001
0.002
0.003
0.004
0.005
0.006
Tempo (s)
0.007
0.008
0.009
0.01