Buscar

Eye Diagram_Matlab_v2

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 3 páginas

Prévia do material em texto

TT608 - Aula sobre Transmissão Digital 
 
 
 
 
Introdução 
 
Neste laboratório com o Matlab vamos considerar a geração do sinal baseado na forma de onda PAM em 
banda básica para comunicação digital, com a formatação do pulso de Nyquist (pela aproximação do 
pulso teórico, “sinc”, pelo formato do cosseno levantado). Primeiramente veremos a geração da 
sequência de símbolos PAM, do formato do pulso do cosseno levantado e do sinal gerado com os 
símbolos formatados com o cosseno levantado. Depois veremos o diagrama do olho, cuja análise é 
importante para a recepção correta dos símbolos transmitidos. 
 
%Geração dos símbolos 
 
Observem que será feita a geração de quatro símbolos PAM, [-3 -1 1 3]. Se quiséssemos 
considerar apenas transmissão binária, por exemplo, usaríamos dois símbolos, [-1 1]. Vejam 
que há várias maneiras de implementar essa sequência no Matlab. 
 
a = [-3 -1 1 3]; % Alfabeto de símbolos/constelação 
ind = randint(100,1,4); % Vetor aleatório que inclui os inteiros de 0 a 3 
ind = ind+1; % Agora o vetor inclui os inteiros entre 1 e 4 
pam = a(ind); % Gera uma sequência aleatória de 4 símbolos PAM 
% pam = a(randint(100,1,4)+1) % o mesmo resultado sem a variável ind 
% pam = randint(100,1,4)*2-3 % a maneira mais curta? 
stem(pam); axis ([0 100 -4 4]); % Plota a sequência de símbolos 
xlabel ('Símbolos PAM'); ylabel ('Símbolos [-3 -1 1 3]'); 
%Forma de onda do cosseno levantado para formatar o sinal 
 
O pulso do cosseno levantado tem o seguinte formato: 
 
























 







 

2
21
cos
)(
T
t
T
t
T
t
T
t
sen
tp 
Como a suposição é de que estamos trabalhando com uma banda de 6000 Hz, a primeira 
consideração é de que a frequência de amostragem seja maior ou igual a duas vezes o sinal (> 
12000 Hz), para efeito de fazer a simulação de forma adequada como se o sinal fosse um sinal 
analógico. Utilizamos 24000 Hz para a amostragem do sinal. Como o pulso a ser transmitido 
tem uma largura de 1/8000 s (intervalo de símbolo), podemos calcular o fator de “roll-off” (α). 
      5060001
2
8000
1
T2
1
1BB 0 ,
. Ou seja, para uma banda de 6000 Hz, o 
fator de “roll-off” máximo para 1/8000 s é 0,5. Observe que como temos 8000 símbolos/s e 
cada símbolo corresponde a 2 bits (4 estados), temos uma taxa de 16000 bit/s. 
 
Na simulação consideramos a amostragem de 10 intervalos de símbolo. 
 
Fs = 24000; % Frequência de amostragem de 24000 Hz 
T = 1/8000; % Intervalo de tempo de símbolo [s]. 
t = -5*T:1/Fs:5*T; % Vetor de tempo (10 intervalos de amostragem) 
t = t+1e-10; % Para que o denominador não seja nulo em t=0 (ou podemos fazer manualmente 
“p(t=0)=1”) 
alfa = 0.5; % Fator de “Roll-off” ou de excesso de banda 
p = (sin(pi*t/T)./(pi*t/T)).*(cos(alfa*pi*t/T)./(1-(2*alfa*t/T).^2)); % Filtro do cosseno levantado 
clf; plot(t,p); hold on; stem(t,p); xlabel('Time [s]'); ylabel('Amplitude'); hold off; 
 
%Sinal formatado com o pulso do cosseno levantado 
 
Para efeito de “esparramar” os símbolos, colocamos dois zeros entre cada um dos valores 
obtidos. Como o cosseno levantado é um filtro de passagem do sinal, faremos a convolução do 
sinal de entrada (PAM com os zeros adicionais introduzidos para que a frequência dos 
símbolos fique igual à frequência de amostragem) com a função de transferência do filtro (p(t), 
o cosseno levantado). Chamamos o sinal de saída de xn. 
 
% sequência sobreamostrada (“upsampled”) com dois zeros para cada símbolo PAM 
N = length(pam); % Número de símbolos 
r = Fs*T; % Fator de sobreamostragem 
pams = zeros(size(1:r*N)); 
pams(1:r:r*N) = pam; % Sequência sobreamostrada {a1 0 0 a2 0 0 a3 0 0 a4 0 ...} 
m=size(p,2); p(m+1:r*N)=zeros(1,r*N-m); % convolução e formatação dos pulsos 
 for t=r*N:-1:1, k=1; xn(t)=0; while t>k, xn(t)=xn(t)+pams(k)*p(t-k); k=k+1; end, end 
figure; plot(xn(1:200)); % Plotando uma parte do sinal gerado 
xlabel ('Sinal PAM formatado com o cosseno levantado'); 
%Diagrama de olho 
 
O diagrama de olho decorre do fato de que os símbolos ocorrem aleatoriamente e, olhando 
uma tela de osciloscópio nosso olho não conseguirá distinguir as sequências individuais, mas 
haverá superposição de símbolos (persistência da retina). Dessa maneira vemos o sinal como 
sendo um olho, que quanto mais aberto, melhor é a condição para a detecção do sinal correto. 
Pelo fato de que vamos ver a persistência de 6 intervalo de símbolos, plotaremos a 
superposição de 6 em 6. O valor inicial corresponde ao atraso introduzido pelo filtro, ou seja, 
atraso = 5*T*Fs+1 (atraso do processamento digital para o intervalo de cinco amostras). 
 
clf % Limpando a figura 
hold on; 
for i = 16:3+3:300-6, % 16 é o ponto inicial 
plot(xn(i:i+6)); % Plotando as primeiras 7 amostras e depois repetindo-as em cada loop 
end % Com 22 sendo o próximo ponto, etc. 
hold off; grid on; 
xlabel('7 intervalos de símbolo para visualizar o olho'); ylabel('Amplitude'); 
 
%Introdução do ruído ao sinal 
 
O ruído considerado é do tipo branco gaussiano aditivo, com variância conhecida e média nula, 
que é somado ao sinal xn. Para avaliar o efeito do ruído sobre o sinal, faça o diagrama de olho 
do sinal yn com variância de 0,01, de 0,1 e de 1. 
 
var_zn = 0.01; % Definindo a variância do ruído 
zn = sqrt(var_zn)*randn(size(xn)); % Gerando o ruído com a variância definida, veja help randn 
yn = xn + zn; % Somando ruído ao sinal 
 
%Análise espectral 
 
A seguir são plotados os espectros do pulso cosseno levantado e da forma de onda PAM com e 
em ruído. O espectro é construído utilizando a FFT. 
 
Nfft = 2048; % Tamanho da FFT 
P = fftshift(fft(p,Nfft)); % “Acerta” o espectro (FFT) do formato do pulso 
X = fftshift(fft(xn,Nfft)); % “Acerta” o espectro (FFT) da forma de onda PAM 
Y = fftshift(fft(yn,Nfft)); % “Acerta” o espectro (FFT) da forma de onda PAM com ruído 
f = -Fs/2:Fs/Nfft:Fs/2-Fs/Nfft; % eixos de frequência pra plotar o espectro 
figure; 
subplot(211);plot(f,abs(P));grid;title('Espectro do pulso do cosseno'); xlabel('Frequência [Hz]'); 
subplot(212);plot(f,20*log10(abs(P)));grid;title('Espectro do pulso do cosseno em dB'); 
xlabel('Frequência [Hz]'); 
figure; 
subplot(211);plot(f,abs(Y));grid;title('Espectro do sinal ruidoso'); xlabel('Frequência [Hz]'); 
subplot(212);plot(f,20*log10(abs(Y)));grid;title(' Espectro do sinal ruidoso em dB'); 
xlabel('Frequência [Hz]'); 
 
Que efeito pode ser observado quando se faz a experiência com um pulso mais longo (e.g., de 
–10*T a 10*T)? 
 
Outros experimentos 
 
Gere o filtro de pulso de formatação quando a taxa for de 8000 bits/s. Escolha um fator de 
“roll-off” entre 0 … 1 e determine a largura de banda correspondente. Plot a resposta ao 
impulse do filtro de formatação. A frequência de amostragem pode permanecer a mesma, i.e., 
Fs=24000 Hz (note que o fator de sobreamostragem muda). Filtre a sequência 4-PAM com o 
novo filtro e plote o diagram de olho após a filtragem. Qual o efeito do filtro de formatação do 
pulso quando Fs = 1/T? 
Podem ser feitos outros experimentos com o filtro rcosine (raiz do cosseno), vide o commando 
p2 =rcosine(1/T,Fs,'normal',alfa,5). Compare os resultados desse filtro com o anterior.

Continue navegando