Ricardo Alejos, Misael Hernández Fundamentos de Sistemas de Comunicación
Tarea 05 Acerca de esta tarea
s1 = b; s1(s1==0) = -1; s = zeros(1,(numel(b)-1)*mp+1); s(1:mp:end) = s1;
El propósito de esta tarea es calcular de forma experimental el ancho de banda de algunos códigos de línea. Para esto es necesario primero aprender a diseñar las señales con diferentes tipos de pulsos.
Finalmente, la secuencia de pulsos transmitidos puede generar con la convolución siguiente:
Aunque la señal de pulsos es analógica, el procesamiento y simulación en Octave y Matlab necesariamente es discreto. Lo primero que tenemos que decidir es la cantidad de muestras que tendremos por pulso. Supongamos que utilizamos nueve muestras:
se
x = conv(s,p); En la figura (1) se muestra la señal de pulsos triangulares .
mp=9; % muestras por pulso 1
Supongamos ahora que queremos utilizar un pulso triangular. Definimos un vector con forma triangular de nueve muestras.
0.5
0
p= triang(mp); % pulso triangular de 20 muestras.
-0.5
-1 0
Definimos ahora un mapeo como sigue
5
10
15
20
25
30
Figura 1. Gráfica de la señal x.
{
Ahora bien, la duración de cada pulso y la tasa de bit dependen de la definición de muestreo. Por ejemplo, si definimos entonces tenemos
Finalmente, supongamos que queremos transmitir la secuencia de bits
⁄
b=[1 0 1];
En cambio, si
Para generar la se;al correspondiente a esa secuencia, se puede utilizar la siguiente estrategia:
, entonces ⁄
1. Crear un vector con el mapeo de a amplitudes 1 y -1, espaciadas 9 muestras. 2. Convolucionar con .
Ejercicio 1 Enunciado Utilizando el miso archivo .wav que en las tareas pasadas, lea los primeros 160 bits del archivo. Para hacer esto es necesario:
El vector sería: s=[1 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 1];
1. Leer el archivo .wav, convirtiéndolo a mono. Una forma automática de generar este vector es:
1
Ricardo Alejos, Misael Hernández Fundamentos de Sistemas de Comunicación 2. Convertir las muestras a enteros, de forma que el valor más pequeño corresponda a 0 y el más grande a 65,535 (con una regla de tres). 3. Quedarse únicamente con las primeras 10 muestras (si las primeras son cero es porque el audio tiene silencio al inicio, busque otras 10 muestras donde sí haya señal). 4. Convierta estas muestras a binario.
Determine el mapeo de bit a amplitud de pulso en cada caso.
Solución Para conseguir los códigos de línea utilizamos el siguiente código manchester=[1,1,1,1,-1,-1,-1,-1]; bipolarrz=[1,1,1,1,0,0,0,0]; unipolarnrz=[0.5,0.5,0.5,0.5,0.5,0.5,0.5 ,0.5];
Después de estos pasos deben tener un vector con 160 bits.
Solución
Ejercicio 3
Para lo anterior utilizamos el siguiente código name='MiCancion'; [y1,fs,bits]=wavread(strcat(name,'. wav')); y2=y1(1:10)+1; y3=(65535/2)*y2; y4=fix(y3); a=y4; b=dec2bin(a); c=double(b)-48; d=reshape(c',1,numel(c)); e=(d+1)*10000000; f=num2str(e,8); g=strrep(f,' ',''); h=double(g); x1=(g==50); x2=(g==49)*-1; x3=x1+x2;
Enunciado
Con ello efectivamente se obtiene un vector de 160 bits con el formato indicado en la descripción de esta tarea.
Y las gráficas que obtuvimos fueron:
Genere las señales transmitidas para los tres códigos de línea.
Solución Para obtener las señales y graficarlas utilizamos el siguiente código: z1=conv(x3,manchester); z2=conv(x3,bipolarrz); z3=conv(x3,unipolarnrz)+.5; figure; stairs(z1(1:1280)) figure; stairs(z2(1:1280)) figure; stairs(z3(1:1280))
2 1.5 1 0.5
Ejercicio 2
0 -0.5 -1
Enunciado
-1.5
Diseñar pulsos para transmitir con los códigos de línea Unipolar NRZ, Bipolar RZ, y Manchester, suponiendo que tenemos 10 muestras por pulso.
-2 0
200
400
600
800
1000
1200
Figura 2. Canción codificada con código de línea Manchester.
2
Ricardo Alejos, Misael Hernández Fundamentos de Sistemas de Comunicación Magnitude spectrum 2
0.2
1.5 1
0.15
Amplitude
0.5 0
0.1
-0.5 -1
0.05
-1.5 -2 0
200
400
600
800
1000
0 -1000
1200
-500
0
500
1000
Frequency (Hz)
Figura 3. Canción codificada con código de línea Bipolar RZ.
Figura 5. Espectro de la señal codificada con código de línea Manchester.
2 Magnitude spectrum 0.1
1.5 1
0.08 0.5
Amplitude
0 -0.5 -1
0.06
0.04
-1.5 0.02 -2 0
200
400
600
800
1000
1200 0 -1000
-500
0
500
1000
Frequency (Hz)
Figura 4. Canción codificada con código de línea Unipolar NRZ.
Figura 6. Espectro de la señal codificada con código de línea Bipolar RZ. Magnitude spectrum
Ejercicio 4
0.5
0.4
Amplitude
Enunciado Grafique el espectro y estime el ancho de banda de la señal generada con cada código de línea. Compare con los espectros graficados en la figura del libro de Couch y, si hay diferencias, explíquelas.
0.3
0.2
0.1
0 -1000
-500
0
500
1000
Frequency (Hz)
Solución
Figura 7. Espectro de la señal codificada con código de línea Unipolar RZ.
El código utilizado para generar los espectros está basado en la función “spectrum” :
Después de hacer un breve análisis a los anchos de banda observables en las gráficas obtenemos los siguientes resultados:
[f1,a1,p1]=spectrum(z1,1/length(z1) ,length(z1),0,2); [f2,a2,p2]=spectrum(z2,1/length(z2) ,length(z2),0,2); [f3,a3,p3]=spectrum(z3,1/length(z3) ,length(z3),0,2);
Código de Ancho de Ancho de Ancho de línea banda banda de banda de absoluto los 3dB cruce por cero Manchester 325 Hz Bipolar RZ 321 Hz Unipolar 160 Hz RZ
Y las gráficas que obtuvimos fueron:
3