Practica1m

  • 1,414 views
Uploaded on

ejercicio

ejercicio

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,414
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
37
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Laboratorio de Comunicaciones DigitalesETSII TelecomunicaciónIngeniería de TelecomunicaciónUniversidad de CantabriaCurso 2010/2011 PRACTICA 1METODOLOGÍA El alumno dispone de tres sesiones de laboratorio para realizar esta práctica. Larealización es individual, aunque la evaluación se hará por parejas en función de la entregaresuelta del cuestionario (uno por pareja) y de un programa ejecutable que resuelva elepígrafe "PROBLEMA", que vaya mostrando de forma clara y ordenada las respuestasexigidas y que se denominará X:Practica1problema.m (los alumnos de cada pareja dejarán elmismo programa en ambas cuentas). Se recomienda la utilización de los comandosdisp(texto), disp(var), pause, title, xlabel, ylabel, legend, clg y clc en los ficheros .m paradocumentar los resultados presentados en pantalla.OBJETIVOS El objetivo de esta práctica es familiarizar al alumno con la generación y adquisiciónde señales de comunicaciones atendiendo a aspectos tales como el muestreo, el aliasing y losefectos de la cuantificación. Posteriormente se estudiará la caracterización de señales decomunicaciones y el ruido mediante histogramas, densidad espectral de potencia yautocorrelación. Finalmente se estudiarán los códigos de línea más comunes y su densidadespectral de potencia así como el efecto del ruido en los mismos. Para la realización de estapráctica es conveniente que el alumno lleve al laboratorio unos auriculares que le permitanescuchar las distintas señales generadas.1. MUESTREO Y RECONSTRUCCIÓN DE SEÑALESa) Generación de señales. Generar en MATLAB un seno de frecuencia 2KHz y amplitud 0.5muestreado a distintas frecuencias de muestreo. Dicha señal se observará tanto en elordenador como en el osciloscopio, siendo posible, así mismo, escucharla. f=2000; % frecuencia del tono a generar fso=1e6; % frecuencia de muestreo de referencia para los dibujos No= fso*1e-3; to=(0:No-1)/fso; % representaremos 1 ms de la señal xo=0.5*sin(2*pi*f*to); % señal de referencia (muy sobremuestreada) for fs=[44100 22050 11025]; N=fs*1; % nº de muestras, p.e. 44100 muestras/s * 1 s = 44100 muestras t=(0:N-1)/fs; % Vector con los instantes de muestreo: 1 s a fs Hz x=0.5*sin(2*pi*f*t); % Señal muestreada frec_muestreo(fs); envia(x,5); % Reproducimos la señal 5 veces (5 s) con la tarjeta de sonido plot(to*1e3,xo,k,t*1e3,x,b-o);axis([0,1,-1,1]); legend(Señal original,Señal muestreada);xlabel(milisegundos) pause;cierra(0); % Se finaliza la generación cuando se pulse una tecla endNotar que es necesario sobremuestrear (por un factor superior a 10) para que el “dibujo” deMATLAB se parezca a la señal de tiempo continuo. Sin embargo, mientras se cumpla el 1
  • 2. teorema de muestreo, la señal observada en el osciloscopio o escuchada con los auriculares es,efectivamente, un seno de 2 KHz.b) Muestreo incorrecto. Generar en MATLAB un seno de frecuencia 9 KHz y amplitud 0.5muestreado a distintas frecuencias de muestreo. Dicha señal se observará tanto en elordenador como en el osciloscopio y se escuchará con los auriculares. f=9000; % frecuencia de la señal senoidal fso=1e6; % frecuencia de muestreo de referencia para los dibujos No= fso*2e-3; to=(0:No-1)/fso; % representaremos 2 ms de la señal xo=0.5*sin(2*pi*f*to); % señal de referencia (muy sobremuestreada) for fs=[44100 22050 11025]; N=fs*1; % nº de muestras en un segundo a fs muestras/s t=(0:N-1)/fs; % Vector con los instantes de muestreo: 1s a fs Hz x=0.5*sin(2*pi*f*t); % Señal muestreada fr=rem(f,fs);fr=fr-fs.*(fr>fs/2); % frecuencia de señal reconstruida (con posiblealiasing) xr=0.5*sin(2*pi*fr*to); % Señal reconstruida plot(1e3*to,xo,k,1e3*t,x,r-o);legend(Señal original,Señal muestreada);axis([0 1 -1 1]) title(sprintf(frec. señal:%iHz frec. muestreo:%iHz periodo muestreo: %fms,f,fs,1e3/fs)) xlabel(t (ms)) uiwait(msgbox(Observe en la grafica la señal original y la señal muestreada. Luego pulse "OK" para escuchar y ver la señal reconstruida)) plot(1e3*to,xo,k,1e3*t,x,r-o,1e3*to,xr,b); legend(original,muestreada,reconstruida);axis([0 1 -1 1]) title(sprintf(frec. señal:%iHz frec. muestreo:%iHz periodo muestreo: %fms,f,fs,1e3/fs)) xlabel(t (ms)) frec_muestreo(fs); envia(x,5); % Reproducimos la señal 5 veces (5 s) con la tarjeta de sonido pause;cierra(0) endNotar como, para ciertas frecuencias de muestreo (aquellas para las que no se cumple elteorema de muestreo), la señal reconstruida no se corresponde con la señal original de 9 KHz.¿Cuáles son dichas frecuencias?. ¿Cuál sería la frecuencia mínima de muestreo para la señalde 9 KHz?.c) Efecto del aliasing. En este ejercicio, un alumno generará un seno de frecuencia 9 KHz yamplitud 0.5 con una frecuencia de muestreo de 44100 muestras/s tal y como se hizo enanteriores ejercicios. El compañero deberá adquirir dicha señal utilizando diversas frecuenciasde muestreo. Conectar la salida TX del Alumno1 con la entrada RX del Alumno2 y ejecutarel siguiente código:ALUMNO1 (el que genera la señal) f=9000; % frecuencia de la señal senoidal fs=44100; % frecuencia de muestreo N= fs*1; t=(0:N-1)/fs; % generaremos 1 s de la señal x=0.5*sin(2*pi*f*t); % señal original frec_muestreo(fs);envia(x,60); % Reproducimos la señal 60 veces (1 minuto) % Ahora el Alumno2 deberá ejecutar su código pause;cierra(0) % pulsar una tecla cuando haya finalizado el Alumno2 2
  • 3. ALUMNO2 (el que adquiere la señal) fs1=44100;N1=1*fs1;t1=(0:N1-1)/fs1; % Numero de muestras en 1 sg a fs1 muestras/s frec_muestreo(fs1);x1=recibe(1,N1); % Adquirimos N1 muestras (1 seg.) a fs1 muestras/s % Se adquieren x2 y x3 a 22050 y 11025 muestras/s respectivamente fs2=22050;N2=1*fs2;t2=(0:N2-1)/fs2;frec_muestreo(fs2);x2=recibe(1,N2); fs3=11025;N3=1*fs3;t3=(0:N3-1)/fs3;frec_muestreo(fs3);x3=recibe(1,N3);Mientras el Alumno1 ejecuta su programa (genera la señal), el Alumno2 ejecuta el suyo deforma que adquiere las cuatro señales x1, x2 y x3 (con tres frecuencias de muestreo distintas).El Alumno2 puede observar las señales adquiridas haciendo, por ejemplo: plot(t1,x1,r,t2,x2,b,t3,x3,g); % dibuja todas las señales axis([0 1e-3 -1 1]) % observamos el primer milisegundo (use también el zoom)Razone que es lo que ha ocurrido. Ahora, el Alumno1 debe observar la señal original en elcanal 1 del osciloscopio (ejecutando envia(x,100) y conectando su señal al canal 1 delosciloscopio). Simultáneamente, el Alumno2 debe observar en el canal 2 una cualquiera delas señales adquiridas (p.e. ejecutando frec_muestreo(fs3);envia(x3,100)), calcule sufrecuencia, compárela con la del canal 1 y compruebe en que casos el muestreo no ha sidocorrecto.2. CUANTIFICACIÓN DE SEÑALES Los sistemas digitales, así como los conversores A/D y D/A, poseen una resoluciónfinita, marcada por el número de bits. Este hecho limita la precisión con la que las señalespueden ser adquiridas, generadas y procesadas. En este experimento se trata de cuantificar,con distintas precisiones, una señal de voz contenida en el fichero voz.mat. De esta forma, elalumno podrá observar como afecta el número de bits de cuantificación al nivel del error decuantificación, a la relación señal a ruido de cuantificación, a la función densidad deprobabilidad del error y a su densidad espectral de potencia.a) Cargamos la señal de voz y observamos su histograma, lo que nos dará idea de la funcióndensidad de probabilidad de la señal de voz. frec_muestreo(11025); % frecuencia de muestreo 11025 Hz load voz.mat % en la variable x tenemos la señal de voz close all;subplot(221);hist(x,50) % la función hist(x) dibuja el histograma del vector x title(Histograma señal original);xlabel(Voltios)b) Dibuje la densidad espectral de potencia (DEP) de la señal de voz, de manera que puedaobservar que frecuencias poseen más potencia. Utilize la función: sx=espect (señal, número_de_puntos, frecuencia_máxima)El número_de_puntos afecta a la estima del espectro, cuanto mayor sea, más muestras seobtienen, pero también más variabilidad. La frecuencia_máxima determina el límite superior(el inferior es cero) del eje de abcisas al dibujar el espectro. Si se utiliza una variable de salidasx, en ella se obtienen las muestras del espectro, si no se utiliza ninguna, la función lo dibuja.Si no se incluyen el número_de_puntos o la frecuencia_máxima toma valores por defecto. subplot(222);espect(x,200); title(DEP de la señal original); % dibuja la dep 3
  • 4. c) Cuantificación de la señal de voz utilizando 10 bits por muestra xq=cuantifica(x,10); % cuantificamos la señal con 10 bits error=x-xq; subplot(224);espect(xq,100);axis([0 6 -110 -40]) % espectro de la señal cuantificada hold on;espect(error,100);hold off % espectro del error de cuantificación grid;legend(Señal Cuantificada,Error Cuantificación) subplot(223);hist(error,20) % histograma del error de cuantificación title(Histograma error);xlabel(Voltios);pause; hist(xq,50); title(Histograma señal cuantificada);xlabel(Voltios); SNRq=10*log10(mean(x.^2)/mean(error.^2)) % Relación señal-ruido de cuantificación envia([ x , xq ]/2);pause;cierra(0) % izda = original drcha = cuantificadad) El alumno deberá repetir el apartado c) para distinto número de bits (probar con 8, 6 y 4)observando cómo afecta dicho número al espectro de la señal cuantificada y del error; alhistograma del error; y a la calidad de la señal cuantificada, tanto cuantitativa (SNRq) comocualitativamente (al observarla en el osciloscopio y escucharla).3. GENERACIÓN DE SEÑALES DE COMUNICACIONES En la actualidad, la inmensa mayoría de los sistemas de comunicaciones digitales sonimplementados totalmente (salvo las etapas de radiofrecuencia) en el dominio discretomediante microprocesadores, DSPs u otros circuitos integrados digitales. En la figura 1 semuestra un esquema típico de un transmisor digital banda base. bits símbolos muestras señal Rb bits/s Rs símbolos/s fs de línea bn An x[n] x(t) Codificador Filtro CONVERSOR Transmisor D/A TRANSMISOR Sistema Digital Discreto Figura 1. Sistema de comunicaciones en banda de base. Es importante que el alumno comprenda la relación entre velocidad binaria (Rb bits/s),velocidad de símbolo (Rs baudios o símbolos por segundo) y frecuencia de muestreo de laseñal de línea (fs muestras/s) para señales de comunicaciones del tipo x(t) = ∑ A n h(t − nT) . n 4
  • 5. a) Generaremos una señal conformada triangularmente de 1102.5 bits/sg con distintasfrecuencias de muestreo, es decir, distinto número de muestras por símbolo. b=[1 0 1 0 1 1 0 0 1 0]; % bits A=2*b-1; % símbolos subplot(212);stem(b);title(bits); subplot(211);stem(A);title(símbolos);pause %dibujamos las secuencias de bits y símbolos fs1=44100;frec_muestreo(fs1); N1=40; % 40 muestras/símb, fs=44100Hz  Rs=44100/40=1102.5 baudios x1=filtro_tx(A,N1); t1=(0:length(x1)-1)/fs1; % vector de tiempos para el dibujo plot(t1,x1,-o);title(señal de línea) % dibujamos las muestras de la señal de línea envia([x1 ; 1 zeros(1,length(x1)-1)]/2,500); % observe la señal en el osciloscopio pause;cierra(0); % realice el Trigger con el canal 2Repita el filtrado y visualice (tanto en la pantalla del ordenador como en el osciloscopio) lamisma señal pero con frecuencias de muestreo fs2=22050 Hz (N2=20) y fs3=11025 (N3=10).Compruebe que, en todos los casos, la señal de línea que se observa en el osciloscopio es lamisma (fíjese especialmente en que todas poseen la misma velocidad de símbolo) a pesar dehaber sido generadas con distintas frecuencias de muestreo.4. CODIGOS DE LÍNEA Como se recordará, existen diferentes tipos de codificación en los sistemas digitales.En los sistemas banda base es común utilizar códigos de línea con objeto de conformar elespectro de la señal de comunicaciones (por ejemplo para eliminar la componente continua,facilitar la recuperación de sincronismo, etc.). En este apartado vamos a simular digitalmente(representándolas mediante sus muestras) señales conformadas mediante diferentes códigosde línea. Así mismo podremos observar en el osciloscopio las señales reales que viajan por elcanal sin más que enviarlas a la tarjeta de sonido. ATENCION Para que el entorno de simulación funcione adecuadamente es necesario inicializaruna serie de variables globales ejecutando la función iniciar. Al ejecutar iniciar el programa lesolicitará el número de experimento: >>Introduzca el número de experimento debe introducir un 1. El programa responderá: >>================================================= >> En esta sesión de MATLAB se utilizan 10 muestras por símbolo. >> Asumiendo un régimen binario de 800 bits/seg, la frecuencia >> de muestreo es 8 [kHz]. >> La componente frecuencial más alta que pueden manejar las >> rutinas MATLAB es menor o igual que 4.00 [kHz]. >>===================================================Esta inicialización implica que se utilizarán 10 muestras por símbolo, con lo que una señal decomunicaciones binaria a 800 baudios se muestreará a 8 KHz (ancho de banda de simulación4 KHz). En el caso de que el programa no se comporte de esta manera, ejecute el comandoclear global y repita la operación. Si persisten los problemas pregunte al profesor. 5
  • 6. a) Generaremos formas de onda digitales usando el comando wave_gen: wave_gen( secuencia binaria, nombre del código de línea, Régimen binario) b= [1 0 1 0 1 1]; % generamos la secuencia binaria x=wave_gen(b,unipolar_nrz, 800); % usamos NRZ unipolar y 800 bits por segundo waveplot(x) % dibujamos la señal resultante envia(x/2,2000); % observe la señal en el osciloscopio pause;cierra(0);Nota: En este caso se envía a la tarjeta de sonido la señal x/2 para evitar que se sature elconversor D/A, que posee un rango de ±0.7V. Esto deberá ser tenido en cuenta por el alumnoal observar los niveles de la señal en el osciloscopio. Recuerde así mismo que la tarjeta desonido no es capaz de proporcionar niveles de continua.b) Repita el apartado a) para los siguientes códigos de línea: • polar NRZ (polar_nrz); • unipolar RZ (unipolar_rz); • bipolar RZ (bipolar_rz); • manchester (manchester);Observe como implementa MATLAB el vector x. ¿Cuántas muestras se utilizan porsímbolo?. ¿Por qué las señales observadas en el osciloscopio no son perfectamente“cuadradas”?. Con el hardware de que dispone, ¿cómo podría paliar este efecto en una señalde 800bps?.c) Genere una secuencia binaria de longitud 1000 y dibuje la DEP para cada código de líneadel apartado b), por ejemplo, b= binary(1000); espect(wave_gen(b,nombre del código de línea, 800));d) Para ilustrar la dependencia de la densidad espectral de potencia con el régimen binarioejecute el programa codlin. Observe la DEP del código de línea manchester con regímenesbinarios de 250 bps, 400 bps, 500 bps y 1 Kbps. Utilice una frecuencia de muestreo de 8000hercios y calcule el número de muestras por símbolo utilizado en cada caso. Observe lasvariaciones de los ceros espectrales y relaciónelos con el régimen binario. Observe así mismolas señales en el osciloscopio (envíe las señales un número suficientemente alto de veces yrealice el trigger con el canal 2)5. RUIDO Por último, resulta de interés generar ruido para simular su efecto en los sistemas decomunicación. En la realidad resulta imposible muestrear (adecuadamente) ruido blancoGaussiano (¿por qué?), pero si generamos repetidas realizaciones independientes de una v.a.Gaussiana obtenemos un ruido en tiempo discreto que nos permite simular el efecto del ruidoen comunicaciones. En el apartado siguiente se pretende ilustrar la simulación en tiempodiscreto de señales de comunicaciones en ruido. Así mismo, el alumno podrá observar el 6
  • 7. efecto del ruido en la señal de línea por medio del osciloscopio. 7
  • 8. a) Secuencias de ruido. Genere secuencias de 1000 puntos de ruido Gaussiano. Recuerdeejecutar iniciar con experimento 1 r=randn(1,10000); % genera 1x10000 muestras de v.a. Gaussiana (media=0 y varianza=1) subplot(211);waveplot(r);Dibuje el histograma de la señal subplot(212);hist(r,20);axis([-3 3 0 2000]);xlabel(Voltios);pause;Dibuje ahora la autocorrelación y la DEP de la señal subplot(211);acf(r); % la función acf(x) estima y dibuja la autocorrelación de la secuencia x subplot(212); espect(r,256);axis([0 4 -50 0])Repita el proceso varias veces, comprobando que señales de ruido totalmente distintas danlugar a histogramas, autocorrelaciones y densidades espectrales de potencia similares.b) Efecto del ruido en la forma de onda transmitida: Genere 10 símbolos de una señalNRZ polar con un régimen binario de 800 bps. Genere ruido Gaussiano discreto. Súmeselo ala señal x, dibuje ambas señales y obsérvelas en el osciloscopio b=binary(10); x=wave_gen (b,polar_nrz,800); ruido=0.1*randn(size(x)); y=x+ruido; subplot(211), waveplot(x);title(Señal) subplot(212), waveplot(y);title(Señal + Ruido) % Observe los valores de pico de la señal escala=????? % aplique un valor de escala adecuado para evitar saturar el D/A envia([x , y]/escala,2000); % utilice el valor de escala al enviar las señales a la tarjeta pause;cierra(0);¿Cómo estimaría la potencia de ruido a partir de las muestras del vector "ruido"?¿y lapotencia de la señal y? Genere señales cada vez más largas y compruebe cómo las estimas delas potencias mejoran.c) Repita el apartado b) para valores de la potencia de ruido de 0.5,1 y 2.5 (tenga en cuenta encada caso la posible saturación de la tarjeta de sonido).d) También se puede observar el efecto de incrementar la potencia de ruido viendo ladensidad espectral de potencia de la señal de salida. b=binary(1000); x=wave_gen (b, polar_nrz,800); ruido=0.1*randn(size(x)); espect(x); hold on espect(x+ruido); grid; hold off;Superponga sobre la densidad espectral de potencia de la señal ruidosa la de las otras señalesdel apartado c) y compruebe el efecto en el espectro de incrementar el ruido. 8
  • 9. 6. PROBLEMA En este problema los alumnos compararán las prestaciones de un cuantificadoruniforme y de un cuantificador no uniforme (ley A). Partiendo de la señal de voz x incluidaen el fichero voz.mat deberán cuantificarla con 8 bits y obtener la relación señal a ruido decuantificación de ambos métodos para distintos niveles de potencia de la señal original. Cuantificador Uniforme y1[n] 8 bits ↑ x[n] Rango ±1V SNR1 G x2[n] Cuantificador Compresor bn Uniforme Expansor y2[n] Ley A 8 bits Ley A ↑ C( x ) Rango ±1V SNR2 Para ello, deberá implementar una función que lleve a cabo la compresión de la señaloriginal siguiendo la expresión:  A| x| 1  1 + ln( A) sign( x), 0 ≤| x |≤ ; A  C ( x) =  1 + ln( A | x |) 1  sign( x), ≤| x |≤ 1.  1 + ln( A) A con A=87.56. Así mismo, se realizará una función de matlab que implemente elexpansor, es decir, la función inversa de C(x). En resumen, utilizando Matlab deberá aplicar ambos cuantificadores y obtener SNR1y SNR2 (en decibelios) para la señal original (x2=x). Posteriormente deberá repetir el procesopara distintos niveles de potencia de la señal, sin más que escalar la señal original ( x2=G*xcon G variando desde 1 hasta 1/100). Finalmente deberá presentar una gráfica que muestre lapotencia de la señal de entrada x2 (en dBWatt) en el eje horizontal y la SNR (en decibelios)de ambos métodos en el eje vertical. Se deberán repetir las simulaciones y presentar la gráficapara cuantificadores de 8 y de 5 bits. 9