LAB DE COMUNICACIONES DIGITALES - DOC by HC120221195318

VIEWS: 0 PAGES: 7

									                   Laboratorio de Comunicaciones Digitales
ETSII Telecomunicación
Ingeniería de Telecomunicación
Universidad de Cantabria
Curso 2011/2012
                                        PRACTICA 3
                                                                                              7/12/2011
METODOLOGÍA

         La realización de la prácticas es individual, aunque la evaluación se hará por parejas en
función de la entrega resuelta de la hoja de respuestas (una por pareja) y de un programa
ejecutable que resuelve el epígrafe "PROBLEMA" (X:\practica3\problema.m), que muestre de
forma clara y ordenada las respuestas exigidas y que se dejará en la propia cuenta de cada
alumno (las parejas dejarán el mismo programa en ambas cuentas). Se valorará positivamente
la utilización de los comandos disp(‘texto’), disp(‘var’), pause, title, xlabel, ylabel, legend, clg y
clc en los ficheros .m para documentar los resultados presentados en pantalla.

OBJETIVOS

       El objetivo de esta práctica es familiarizar al alumno con el análisis de las
modulaciones digitales, comenzando con sistemas banda base e introduciendo los sistemas
paso banda. En particular se estudiarán:
    La representación discreta de señales de comunicaciones
    Las diferentes modulaciones digitales lineales binarias
    Receptores coherentes y no coherentes
    Cálculo de la probabilidad de error de bit

1. SEÑALES DE COMUNICACIONES EN TIEMPO DISCRETO

En este apartado vamos implementar un enlace banda base utilizando únicamente comandos
de MATLAB (no se usarán funciones de la carpeta ficheros, por lo que no es necesario
ejecutar iniciar). Para generar una señal banda base NRZ polar en tiempo discreto con L
muestras por símbolo basta hacer lo siguiente:

   L=10;                      % Número de muestras por símbolo
   p=ones(1,L);               % Pulso NRZ (respuesta al impulso del filtro NRZ)
   b=[1 -1 1 -1 -1 1];        % Señal binaria de N=6 símbolos con codificación polar
   N=length(b);
   x=zeros(1,L*(N-1));
   x(1:L:N*L)=b;              % introducimos L-1 ceros entre cada símbolo
   figure(1);subplot(211);stem(x);
   y=conv(x,p);               % Convolucionamos con el pulso básico
   subplot(212);stem(y);      % stem: función MATLAB dibuja señales en tiempo discreto

Simplemente generamos una señal binaria, la codificamos (en este caso en dos niveles, en una
4 PAM serían 4), introducimos L-1 ceros entre cada símbolo y filtramos con la forma de onda
elegida utilizando la función de MATLAB conv que implementa la convolución (el filtrado)
discreta. Nótese que la señal filtrada es más larga que la original. Puede resultarle útil repasar
el apartado “Implementación Digital del Transmisor Banda Base” del documento
“Implementacion_digital_y_Diag_ojo.pdf”.


                                                  1
Para simular el efecto de un canal debemos diseñar un filtro digital que se comporte como el
canal analógico que deseamos simular. Hemos fijado un filtro digital de Lcanal=11 coeficientes
y utilizamos la función MATLAB freqz que nos dibuja la respuesta en frecuencia de un filtro
digital (consulte la ayuda de MATLAB para más detalles):

   h= [1,-1,3,-6,9,90,9,-6,3,-1,1]/102; % filtro (de Lfiltro=11 coeficientes) que simula el canal.
   figure(2);freqz(h);            % Función MATLAB que nos dibuja la respuesta en frecuencia.
   z=conv(y,h);
   figure(3); subplot(211);stem(z);     % Nótese que la señal se retarda tras pasar por el canal

El receptor volverá a filtrar con el pulso rectangular NRZ (filtro adaptado).

   xrec=conv(z,p);
   subplot(212);stem(xrec);

Para recuperar los bits transmitidos hay que muestrear la señal en los instantes adecuados. El
filtro h introduce un retardo de (Lfiltro-1)/2 muestras, con lo que

   xd=xrec(5+(L:L:L*N));          % Muestreo. El canal introduce un retardo de 5 muestras
   brec=(xd>0)                    % Decisor
   figure(4);subplot(111);
   for i=1:N                                    % diagrama de ojo
         plot(xrec(i*L-L/2:(i+1)*L+L/2))
         hold on
   end
   hold off

Al final dibujamos el diagrama de ojo para comprobar la pequeña distorsión que sufre la señal
de comunicaciones al pasar por el canal (compruebe como con un canal ideal el diagrama de
ojo es perfecto).


2. MODULACIONES DIGITALES BINARIAS

       En este apartado se analizarán las modulaciones binarias más comunes usando las
funciones creadas para el Laboratorio de Comunicaciones Digitales.

                                          ATENCION
Hay que ejecutar la función iniciar, esta vez con el experimento 3:

   >>Introduzca el número de experimento 3
   >>=================================================
   >> En esta sesión de MATLAB se utilizan 100 muestras por símbolo.
   >> Asumiendo un régimen binario de 1000 bits/seg, la frecuencia
   >> de muestreo es 100.00 [kHz].
   >> La componente frecuencial más alta que pueden manejar las
   >> rutinas MATLAB es menor o igual que 50.00 [kHz].
   >>===================================================

Es decir, ahora trabajamos obligatoriamente con una frecuencia de muestreo de 100 KHz.




                                                 2
La forma más sencilla de generar señales paso banda es modulando señales banda base
(modulaciones lineales). A una señal unipolar modulada por un coseno (cualquiera que sea su
conformación) se la llama ASK, o señal modulada en amplitud. Cuando la señal es polar y se
la modula se la conoce como BPSK (la información va en la fase de la portadora).
No obstante existe una tercera familia de modulaciones digitales en las que la información
afecta a la frecuencia de la portadora y que no se pueden expresar como una señal banda base
modulada. Se conocen como FSK (la información va en la frecuencia).

a) Modulación de amplitud ASK: Genere una señal binaria que empiece con [1 0 0 1 0].

  b=[ 1 0 0 1 0 binary(250)];

Para generar una señal modulada en amplitud, con una portadora de 8 KHz, se genera una
señal unipolar NRZ a partir de b y se modula con la salida de un oscilador a 8 KHz.

  xu=wave_gen(b,'unipolar_nrz');
  sa = mixer(xu, sqrt(2)*osc(8000));

Dibuje las primeras 500 muestras de ambas formas de onda, que representan los primeros 5
bits de la secuencia binaria b. Compárelas

  tt=[1:500];
  subplot(211), waveplot(xu(tt));
  subplot(212), waveplot(sa(tt));

b) Análisis espectral: Dibuje las densidades espectrales de ambas señales en el intervalo [0,
20 KHz]. Recuerde la función espect, que nos dibuja la D.E.P. de una señal

                     espect (señal, número de puntos, frecuencia máxima)

  fr= 20000;Np=1024*8;
  subplot(211), espect(xu,Np,fr);
  subplot(212), espect(sa,Np,fr);

c) Modulación de fase BPSK: Para generar una señal PSK repita el apartado anterior
exactamente. Simplemente utilice ahora un código de línea 'polar_nrz'. Dibuje también las
densidades espectrales de la señal banda base y de la señal modulada.

  xp=wave_gen(b,'polar_nrz');
  sp = mixer(xp, sqrt(2)*osc(8000));
  % dibuje las señales y sus espectros…

d) Conformación de la BPSK en coseno alzado: Repita el apartado c) conformando ahora la
señal PSK en coseno alzado con roll-off 0.5:

  xn=nyq_gen(b,0.5);
  sn = mixer(xn, sqrt(2)*osc(8000));
  tt=[400:900];                              %no dibujamos el transitorio inicial
  subplot(211), waveplot(xn(tt));subplot(212), waveplot(sn(tt));pause
  subplot(211), espect(xn,Np,fr);subplot(212), espect(sn,Np,fr);pause



                                              3
3. RECEPTORES COHERENTES PARA MODULACIONES BINARIAS

El receptor óptimo para una señal modulada será el mismo que para señales banda base: el
filtro receptor estará adaptado a la forma de onda transmitida (en este caso es paso banda). La
forma más común de implementar dicho receptor para señales ASK y BPSK es la siguiente:



                           Filtro                                   Decisor
                          adaptado

                   oscilador
             LO      local                  sincronismo
        cos(2πfct)

La operación de modulación es transparente (el filtro adaptado incorpora un filtro paso bajo
que elimina la componente a doble frecuencia) y el filtro receptor está adaptado a la forma de
onda banda base.

Para demodular una señal ASK primero se multiplica por una réplica de la portadora generada
localmente con la misma frecuencia y fase de la portadora original y, posteriormente, se
procesa como si fuera una señal banda base.

a) Detección coherente ASK: Generaremos una señal modulada ASK

   b=[1 0 0 1 0 binary(45)];
   xu=wave_gen(b,'unipolar_nrz');
   sa = mixer(xu, sqrt(2)*osc(5000));

Para demodular multiplicaremos la señal por una réplica en fase y frecuencia de la portadora.

   ya=mixer(sa,sqrt(2)*osc(5000));
   L= SAMPLING_CONSTANT;               % Número de muestras por símbolo
   tt=[1:5*L];                         % Dibujaremos los cinco primeros símbolos
   clf,subplot(311);waveplot(sa(tt));
   subplot(312),waveplot(ya(tt));
   fr=20000;
   subplot(313); espect(ya,1024*8,fr);pause

y la filtramos con un filtro adaptado.

   za=match('unipolar_nrz',ya);
   subplot(313), waveplot(za(tt));
   figure;eye_diag(za);



b) Receptor coherente BPSK: Repita el apartado anterior conformando la señal banda base
con polar NRZ y obtendrá un receptor coherente óptimo para BPSK.




                                              4
d) Desviaciones de fase y frecuencia: La mayor dificultad de un receptor coherente es la
sincronización de portadora. Para conseguir las mejores prestaciones, el oscilador local debe
tener la misma fase y frecuencia de la portadora. En el caso de que haya desviaciones de fase o
de frecuencia se degradan las prestaciones de nuestro receptor. Para ver el efecto de los errores
de fase, demodularemos usando un oscilador local con errores de fase de 0o, 20o , 60o, 80o,
120o y 180o. Evalúe la amplitud máxima de señal a la salida del filtro adaptado del receptor
ASK del apartado a) para los diferentes valores del error de fase.

   ya=mixer(sa, sqrt(2)*osc(5000,error_de_fase));
   za=match('unipolar_nrz',ya);
   subplot(211),waveplot(za(tt));
   subplot(212),eye_diag(za);

Para evaluar el efecto de la desviación de frecuencia en la demodulación de una señal ASK,
utilice ahora un oscilador local de 4990 Hz. Compare la señal demodulada con la que se
obtenía anteriormente.

   ya1=mixer(sa, sqrt(2)*osc(4990));
   za=match('unipolar_nrz',ya1);
   subplot(211),waveplot(za);
   subplot(212),eye_diag(za);



4. RECEPTORES NO COHERENTES PARA MODULACIONES BINARIAS.

En muchos casos resulta costoso reproducir en el receptor una réplica exacta de la portadora
generada en el transmisor. En este caso los receptores coherentes, como los que hemos
revisado en el apartado anterior, no se pueden implementar.

a) Receptor no coherente ASK: En este apartado vamos a simular el receptor no coherente
para una modulación ASK. Para ello vamos a generar nuevamente la señal ASK añadiendo
una fase aleatoria al oscilador del transmisor para simular nuestro desconocimiento de dicha
fase en el receptor:

   fp=8000; N=250;                     % frecuencia de portadora y número de símbolos
   b=[1 0 0 1 0 0 1 1 binary(N-8)];
   fase=90*rand(1)                     % fase aleatoria que añadimos al modulador
   xu=wave_gen(b,'unipolar_nrz');
   s=mixer(xu,sqrt(2)*osc(fp,fase));
   tt=[1:500];

Se demodula en fase y cuadratura, se filtra cada componente con el filtro adaptado y
finalmente se suman al cuadrado las señales resultantes. Del diagrama de ojo se puede
apreciar como no hay ISI al recuperar la señal transmitida.

   rI=mixer(s,sqrt(2)*osc(fp));
   zI=match('unipolar_nrz',rI);
   rQ=mixer(s,sqrt(2)*osc(fp,90));
   zQ=match('unipolar_nrz',rQ);
   subplot(211);waveplot(zI(tt));subplot(212);waveplot(zQ(tt));pause;
   z=sqrt(zI.^2+zQ.^2);
   fr=20000;
   subplot(211),espect(z,1024*8,fr);subplot(212), eye_diag(z)


                                               5
b) Receptor DPSK: En el caso de que la modulación sea BPSK, el receptor no coherente
deducido previamente no se puede aplicar. No obstante, una modulación diferencial permite
una detección no coherente de una BPSK con una pequeña degradación (en términos de BER)
con respecto a la detección coherente.
En el transmisor, la única diferencia con una BPSK convencional es que los bits transmitidos
están codificados diferencialmente. Fíjese que le sumamos al oscilador modulador una fase
aleatoria (en grados) para desconocer la fase en recepción.

  fp=8000;                             % frecuencia de portadora
  N=250;                               % número de bits transmitidos
  b=[1 0 0 1 0 0 1 1 binary(N-8)];
  d(1)=1;
  for i=2:N+1
        d(i)=~ xor(b(i-1),d(i-1));     % codificación diferencial
  end
  xp=wave_gen(d,'polar_nrz');          % modulador BPSK convecional
  fase=90*rand(1)                      % fase aleatoria
  s=mixer(xp,sqrt(2)*osc(fp,fase));

Como se explica en clase de teoría, el receptor óptimo (no coherente) para esta modulación
demodula en fase y cuadratura aplicando el filtro adaptado a cada componente

  rI=mixer(s,sqrt(2)*osc(fp));
  zI=match('polar_nrz',rI);
  rQ=mixer(s,sqrt(2)*osc(fp,90));
  zQ=match('polar_nrz',rQ);
  subplot(211);waveplot(zI(1:500));subplot(212);waveplot(zQ(1:500));

Finalmente se combinan multiplicando un símbolo por el anterior en cada componente, se les
suma y se compara el resultado con un umbral en cero.

  L= SAMPLING_CONSTANT;
  zmI=zI(L:L:L*(N+1));                                % Observables rama I
  zmQ=zQ(L:L:L*(N+1));                                % Observables rama Q
  y=zmI(1:N).*zmI(2:N+1)+zmQ(1:N).*zmQ(2:N+1);        % Observables
  brec=y>0;                                           % Decisor

Compruebe que los bits recuperados coinciden con los transmitidos. Si desea ver un diagrama
de ojo que proporcione una idea del efecto de errores en el sincronismo de reloj haga:

  z=zI(1:end-L).*zI(L+1:end)+zQ(1:end-L).*zQ(L+1:end);
  subplot(211);waveplot(z);subplot(235);eye_diag(z);

5. CALCULO DE PROBABILIDADES DE ERROR

Recuerde ejecutar el comando iniciar eligiendo la opción 3.

a) Generaremos una señal modulada ASK de amplitud A = 2 voltios
  A=2;
  b=[1 0 0 1 0 binary(1495)];
  xu=A*wave_gen(b,'unipolar_nrz');
  sa = mixer(xu, sqrt(2)*osc(8000));


                                                6
Sume a la señal sa un ruido Gaussiano (y blanco) de potencia 10 vatios en toda la banda de
simulación (0-50000 Hz). Dibuje la señal ASK y la salida del canal.

    y=sa+sqrt(10)*randn(1,length(sa))
    tt=[1:5*SAMPLING_CONSTANT];                      % Dibujaremos los cinco primeros símbolos
    subplot(211),waveplot(sa(tt));
    subplot(212); espect(y,8*1024,20000);

Demodule y filtre con un filtro adaptado.

    zm=match('unipolar_nrz',mixer(y,sqrt(2)*osc(8000)));
    clf, eye_diag(zm);

A partir del diagrama de ojo determine el instante óptimo de muestreo t y el valor del umbral
v_th. Quizás le resulte útil realizar una primera simulación sin ruido para obtener dichos
valores a partir de un diagrama de ojo “limpio”. Obtenga la probabilidad de error.

    detect(zm,vth,t,b);

Repita la simulación para potencias de ruido de 20, 40 y 80 vatios.

Calcule de forma teórica1 dicha probabilidad de error utilizando la función funcq() que se
implementó en la práctica anterior. Complete con los resultados la tabla del cuestionario.

b) Repita el apartado a) para la BPSK de amplitud A = 1 voltio
c) Repita el apartado a) para la DPSK con detección no coherente (A=1).

Compare las probabilidades de error obtenidas y discuta cuál es la mejor y a qué se deben las
degradaciones que se aprecian en las demás.

PROBLEMA

El fichero resultante (problema.m) deberá encontrarse en la carpeta X:\practica3.
Recuerde ejecutar el comando iniciar eligiendo la opción 3.

Repita las simulaciones de el apartado 5 (modulaciones ASK, BPSK y DPSK) con el fin de
obtener una gráfica comparativa de sus probabilidades de error.

Emplee señales ASK de sqrt(2) voltios de amplitud y señales BPSK y DPSK de amplitud 1
voltio. Genere un mínimo de 10000 bits de cada señal2 y aplique potencias de ruido de 10, 15,
20, 30, 40, 50, 70, 100, 130 y 160 vatios. El programa no deberá presentar ninguna figura
salvo la gráfica del resultado final en la que se representará la probabilidad de error de bit (en
escala logarítmica, use semilogy en lugar de plot) simulada y teórica de los tres casos (ASK,
BPSK y DPSK) frente a Eb/N0 en decibelios.


1 Si necesita calcular la densidad espectral potencia de ruido blanco en tiempo discreto, recuerde la relación
                                                    2 = WsimN0
donde Wsim (el ancho de banda de la simulación) es en este caso 50 KHz (la mitad de la frecuencia de muestreo).
2 Para evitar la limitación que impone la función osc, invóquela de la siguiente manera:
    osc(frecuencia,fase,length(señal));




                                                       7

								
To top