Está en la página 1de 6

PROYECTO COM II ABRIL-AGOSTO 2021.

GENERACIÓN DE SEÑALES USANDO BASES ORTONORMALES/PASO POR


CANAL AWGN+RX GS
LA NOTA DEL PROYECTO DEPENDERÁ NO SOLO DEL BUEN Y COMPLETO
FUNCIONAMIENTO DEL MISMO, SINO DE LA AUTONOMÍA DEL GRUPO EN
LLEVARLO ADELANTE. CADA CONSULTA A SU PROFESORA SOBRE EL
MISMO, QUE NO SEA PARA ACLARAR EL ENUNCIADO, IRÁ DISMINUYENDO
EL PUNTAJE TOTAL.
TOME EN CUENTA ESTE ASPECTO SERIAMENTE.

El presente proyecto está basado en un script en MATLAB que se le facilitará, que permite
construir una señal bandabase o pasabanda de hasta 4 símbolos y 2 bases. Los símbolos los
selecciona el usuario de las siguientes posibilidades: Pulso completo (tipo NRZ), Medio pulso (tipo
RZ). Pulso Manchester, Coseno, y Pulso Nulo, aportando detalles pertinentes a cada forma de
símbolo elegida, como amplitud, frecuencia, fase, cuando aplique. El usuario también seleccionará
la frecuencia de muestreo (se sugiere sea de 1000 muestras/seg.), el tiempo de bit o de símbolo
para m-ario (se sugiere sea 1seg. para pulsos y 0.2seg. para modulaciones) y el número de
símbolos totales que tendría la señal transmitida. Para las sinusoides se le sugiere frecuencias de
portadora alrededor de 100 Hz. Con esta información el programa determina las bases y genera
una señal intercalando aleatoriamente los símbolos previamente definidos. Se muestran los
símbolos, las bases, la constelación y la señal construida en tiempo y en frecuencia.
Este proyecto tiene dos partes.
PARTE 1: (6%) Esta parte consistirá en correr el programa ofrecido para generar algunas señales
binarias y m-arias, bandabase y/o pasabanda, no convencionales. El objetivo es que desarrollen
todos los resultados teóricos (bases, constelación, Energías, señal en tiempo, DEP), para
compararlos con los resultados prácticos que ofrece el programa. A cada grupo se le asignarán dos
señales diferentes. Realizarán una presentación oral del proyecto, basada en una presentación en
Power Point que contenga TODOS los resultados teóricos de las señales asignadas, además
correrán el simulador, en el momento, para ir observando los resultados y compararlos con los
teóricos. CADA ESTUDIANTE DEL CURSO DEBE PRESENTAR ALGUNA DE LAS DOS PARTES DEL
PROYECTO. POR ESO EN EL CRONOGRAMA HAY 4 DÍAS DE PRESENTACIÓN DE PROYECTOS, YA
QUE LOS GRUPOS TENDRÁN 4 ESTUDIANTES.
Notas importantes sobre esta parte:

1) Las amplitudes de las DEP que aparecen en el simulador no son las que se calculan en la
teoría por estar en dominio discreto. Solo importarán los cortes de los Sincs y sus
ubicaciones, las ubicaciones de las portadoras, ancho de banda, nivel DC, etc.
Seguramente tendrá que hacer zoom o acercamientos para ver adecuadamente las DEPs
2) Matlab aplica autoescala en los gráficos. Por ejemplo si es una sinusoide de amplitud pico
8, la gráfica va entre -8 y 8. Debe hacer dos cosas: colocar en los plots la instrucción ylim
para que se muestre un poco más (en el ejemplo colocaría -8.2 a 8.2). Seguramente
deberá hacer zoom para identificar las formas de los símbolos contenidos en la señal, sean
pulsos o sinusoides. Por ejemplo, en las modulaciones, deben observarse varios ciclos de
sinusoide donde se aprecien los cambios de amplitud y/o fase y/o frecuencia.
3) Debo advertir que puede conseguir diferencias en las constelaciones para las señales
moduladas. Durante el curso, luego de haber explicado el procedimiento de
ortogonalización GS, hemos decidido que para cualquier modulación de fase, siempre
usaremos como bases KSen(2f0t) y KCos(2f0t). De esta manera, si tenemos una QPSK
con fases , veríamos los símbolos en las constelaciones en las
diagonales de los cuadrantes. Sin embargo, el programa suministrado aplica el
procedimiento GS al pie de la letra. Si s1= Cos(2f0t+), esa será su primera base y
cuando vea el símbolo Cos(2f0t-) esa sería la otra base. Asi, la constelación tendrá 4
símbolos ubicados sobre los ejes (no a  de los ejes)
4) La teoría que se le pide incluir para comparar resultados es la siguiente: a) Descripción de
la señal en tiempo (puede usar gráficas de mis apuntes) b) Cálculo teórico de bases
haciéndolas eficientemente. Por ejemplo: si son dos símbolos ortogonales, ya sabe que u1
tendrá la forma de s1 y que u2 tendrá la forma de u2, solo debería determinar las
amplitudes para asegurar energía unitaria c) Determinación teórica y dibujo de la
constelación d) Cálculo de energías de cada símbolo y energía promedio e) Determinación
de la DEP. Como veremos casos no convencionales, acá se le pedirá que intuya y deduzca
con base a resultados de casos convencionales, como es la DEP. Por ejemplo si tiene una
señal con dos símbolos: un pulso Manchester y una sinusoide, debe asociar las DEPs de
esos casos convencionales y combinarlas adecuadamente. Debe incluir gráficos con
formas de las DEPs (como Sinc2), cortes en el eje de frecuencia, nivel DC, todo muy bien
justificado.

PARTE 2 (14%) Aunque esta parte del proyecto la presentarán casi al final del semestre antes del
último parcial, se le sugiere que vaya avanzando un poco cada semana. No habrá extensión en la
fecha de entrega.
Para esta segunda parte, tomará el código que se le ha entregado para generar ciertas señales
bandabase y/o pasabanda BINARIAS y le agregará código que permita: pasar esa señal por un
canal AWGN seguido de un Rx GS, para finalmente determinar la Perror por símbolo o por bit. El
siguiente diagrama muestra lo que se pretende. La caja verde *Generador*es el programa que se
le entregó.

En esta parte, los cálculos teóricos se concentrarán en las probabilidades de error para cada caso
asignado. A cada grupo le corresponderá una pareja de casos de señales más clásicas que pueden
ser generadas por el simulador (NRZ, RZ (polares o unipolares) Manchester, OOK, PRK, FSK, QPSK).
A cada grupo se le asignarán dos de ellas). EN ESTA PARTE DEL PROYECTO ES FUNDAMENTAL QUE
EL PROGRAMA FUNCIONE CABALMENTE YA QUE SI NO ES ASÍ, NO SE PODRÁN COMPARAR LOS
RESULTADOS TEÓRICOS CON LOS PRÁCTICOS. La teoría que se le pide incluir, en esta parte, para
comparar resultados es la siguiente: a) Descripción de la señal en tiempo (puede usar gráficas de
mis apuntes) b) Cálculo teórico de bases haciéndolas eficientemente c) Constelación a la entrada
del receptor d) valores de det1 y det2 teóricos e) Curvas de Pe vs. E/ y valores específicos de Pe
para algunos valores preseleccionados de PN
Pare el diseño del programa se le sugiere que genere un programa principal donde se solicitan los
datos específicos de la señal que quiere generar el usuario. Luego defina funciones para: generar
la señal (programa suministrado), agregar ruido, pasar por el Rx Gs, pasar por el sistema de
comparadores para definir cuál símbolo fue recibido, cálculo práctico de la Pe, comparando los
bits originales con los recibidos.
A continuación proporcionaré ayudas para cada caso.
a) El primer paso es comprender como está realizado el programa. Primero hay un sector
donde se solicitan al usuario los valores de fs, tsimb, nro=# de símbolos a definir (2, 3 o 4)
y N=Número de símbolos distintos que conformarán las señal (por ejemplo quiero una
transmisión binaria de 1000 bits aleatorios (N=1000)). Luego se generan las bases y se
grafican símbolos y bases (recuerde que solo se admiten 2 bases y hasta 4 símbolos). A
continuación se genera la señal (senal) con base a una ráfaga de símbolos que dependen
de N y de nro. Se usan estructuras if para atender los casos de nro=2, 3 y 4. Dentro de esos
if se aprovecha de construir la constelación, proyectando los símbolos en las bases para
obtener sus coordenadas. Observará que las variables que se van llamando x1, y1, x2,….,
x4,y4, son los valores de estas proyecciones (ESTO SERVIRÁ A FUTURO PARA DEFINIR LOS
UMBRALES DE COMPARACIÓN EN LA ETAPA DE DETECCIÓN).La señal construida con la
sucesión de símbolos aleatorios se grafica en tiempo y en frecuencia. De allí para adelante
tendrá que hacer lo solicitado en el proyecto que consiste en contaminar esta señal con
ruido y pasarla por un receptor GS. A continuación se le ofrecen ayudas específicas.
b) Supongamos que el usuario eligió una fs=1000, tsimb=0.2 s, nro= Número de símbolos
distintos a generar, por ejemplo en QPSK son 4 símbolos. Luego de que el usuario decide
cuales símbolos sk, desea, se genera una señal llamada “senal”. Necesitamos calcular
cuantas muestras hay en un símbolo (tsimb). Por regla de tres, si hay fs muestras en 1 seg.
en 1 símbolo habrán fs2=fs*tsimb muestras: este valor de fs2 lo usaremos luego.
c) El usuario elige la potencia de ruido en el canal PN (se le permitirán solo 4 valores). Se
contamina la señal usando la siguiente instrucción
senalsucia = senal+sqrt(PN)*randn(1,length(senal));
¿Cómo se eligen los valores de PN permitidos? En primer lugar deben revisar la ayuda
sobre el manejo de ruido, en cualquier simulador, que está más adelante. Allí se explica
que ese ruido tiene DEP constante (/2) entre –fs/2 y fs/2 . Por otro lado, debes tomar en
cuenta que si, por ejemplo, generan N=1000 símbolos aleatorios para construir senal, la
menor probabilidad de error que podrán medir es 10 -3 (1 bit malo en 1000). Entonces eso
está asociado a la relación E/, la cual a su vez está relacionada con PN. EN EL EJEMPLO
MENCIONADO, DEBERÍAN ELEGIR VALORES DE E/ QUE GENEREN Pe<10-3. Estos valores, a
su vez, forzarán los valores de PN.
d) Una vez comprendido el tema de cuáles potencias de ruido (PN) podría seleccionar el
usuario, y llamando “senal” a la señal que se construyó (bandabase o pasabanda), el
siguiente paso es la detección. El Rx GS tiene tantas ramas como bases. Cada rama lo que
hace es multiplicar la señal recibida por cada una de las bases y luego por un integrador. Si
suponemos que transmitimos N símbolos, cada tsimb se cierra el switche y tendremos a la
salida de cada rama (supongamos que hay dos ramas), valores en variables que
llamaremos det1 y det2, que permitirán definir que símbolo fue transmitido.
A modo de ayuda se le ofrece una porción de código que hay que agregar al programa ya
funcional, para agregar ruido y luego pasar por el Rx óptimo

fs2=fs*tsimb;
det1=zeros(1,fs2);% Se inicializan
det2=zeros(1,fs2);
for k=1:N
det1(k)=mean(senalsucia (1+(k-1)*fs2:k*fs2).*U1);
%U1 es la base 1 y U2 es la base 2
det2(k)=mean(senalsucia (1+(k-1)*fs2:k*fs2).*U2);
end

La clave de este código es como se generan det1 y det2. En primer lugar a las bases allí son
llamadas U1 y U2. Cada tsimb se multiplica senalsucia por cada base PERO SOLO EN UN
INTERVALO tsimb. Observe que se toma una fracción de tiempo de senalsucia (tiempo de un
símbolo), o fs2 muestras que son las que caben en tsimb) se multiplica por la base1=U1 y luego se
hace el promedio (mean) de eso, que es aproximadamente lo mismo que integrar. Se hace lo
mismo para generar det2, pero la multiplicación es con la base2=U2.

Los valores de det1 y det2 DEBEN coincidir con las proyecciones de cada símbolo en las bases.
Para verificar esto debe hacer una corrida con PN=0.
Una vez realizado este paso, debe decidir cuál símbolo fue recibido en función de los valores de
det1 y det2. Es importante recordarles que la constelación les ayudará a definir esa etapa de
comparaciones. En algunos casos de transmisión binaria ortogonales, se puede restar det1-det2 y
preguntar sobre si esa resta es positiva o negativa para saber o estimar que símbolo fue
transmitido.
Otro ejemplo: Si la transmisión fuera PRK, el umbral estaría en 0. Compararía det1 con 0 y allí
generaría los valores de los símbolos. En una transmisión binaria, para generar los bits aleatorios
se construye un vector b de 0s y 1s aleatorios, para ternario tendríamos 0, 1 y 2. Para cuaternario
0, 1, 2 y 3. Estos estarían asociados a s1, s2, s3 y s4 tal como Ud. los definió.
Por ejemplo para PRK con s1=2*Cos(2*pi*100*t) y s2=-2*Cos(2*pi*100*t) . Cada una de ellas
generará un det1 diferente (hay una sola base)
Al probar sin ruido puede ir detectando un vector de recibidos de la siguiente forma
for k=1:N
if det1(k)>0
rec(k)=0;
else
rec(k)=1;
end
end
Ahora debe comparar el vector b (elementos originales generados aleatoriamente) con el vector
rec (elementos recibidos o detectados), contando los errores cometidos.
La Pe=#errores cometidos/N
cont=0
for k=1:N
if rec(k)~=b(k)
cont=cont+1;
end
end
Pe = cont/N

Cuando hagamos una prueba colocando un valor de ruido tal que se generen errores. Qué valor de
PN colocaremos?
Vamos paso a paso.
1) Imaginemos que es un PRK, s1 es un 2Cos(2*p*100*t) y s2 es el negativo de este.
Fijaremos tsimb=0.2 s. Pot de PRK es [(A)^2]/2=2, tsimb=0.2, entonces E=0.4
2) Supongamos que generamos N=500 símbolos, la Pe mínima a obtener es 1/500=0.004.

Quiero hacer una prueba para obtener Pe=0.04. En PRK Pe =Q ( √ 2EtaE ) . Si queremos que

Pe=0.04=Q(x), entonces x=1.75. De allí despejamos Eta que nos da igual a 0.26=
3) Ahora hay que determinar la potencia del ruido que es llamada PN en el programa

AYUDA PARA COMPRENDER COMO SE GENERA EL RUIDO BLANCO EN UN SIMULADOR


En Matlab, en Octave, cuando se genera un ruido como sqrt(PN)*randn(1,n) es porque ese ruido
tiene potencia PN entre –fs/2 y fs/2. (fs es la frecuencia de muestreo) Su DEP sería la siguiente

En este caso PN=fs/2 (integrando la DEP)


Por ejemplo fs=500 y 0.26 PN=(aprox) se tendría el valor que hay que colocar en
sqrt(PN)*randn(1,N).

AYUDA PARA DEFINIR COMO DETECTAR PARA OTROS CASOS BÁSICOS: BINARIOS ORTOGONALES Y
BINARIOS UNIPOLARES y M-arios con una base

Para finalizar se le coloca código que serviría para detección de los casos ortogonales y
unipolares.
%PARA CASOS BINARIOS ORTOGONALES CON SÍMBOLOS DE IGUAL ENERGÍA
for k=1:N
if det1(k)-det2(k)>0
rec(k)=0;
else
rec(k)=1;
end
end
% PARA CASOS UNIPOLARES (S1= “ALGO” S2=0)
%Se tiene que colocar el símbolo S1 no nulo de primero.
%Se usa el valor de x1 que es la proyección del símbolo no nulo en U1(se
%usa para hacer la constelación antes de contaminar la señal en el
programa suministrado)
for k=1:N
if det1(k)>0.5*x1
rec(k)=0;
else
rec(k)=1;
end
end

% PARA CASOS Ternarios o cuaternarios con una base


En este caso, hay que establecer un sistema de umbrales para comparar y determinar que símbolo se está
recibiendo. Se aplica la misma idea de cuando obtenemos la Cota superior de la Pe. Hay que conocer los
valores x1, x2, x3 y x4, que son las proyecciones de los símbolos en la base única u1, y establecer los
umbrales de comparación previo a la toma de decisiones.
% CASO TERNARIO CONSTELACIÓN 1U1, 2U1, 3U1
for k=1:N
if det1(k)< 1.5
rec(k)=0;
end

if det1(k)> 1.5 && det1(k)< 2.5


rec(k)=1;
end
if det1(k)> 2.5
rec(k)=2;
end
end

También podría gustarte