Está en la página 1de 38

UNIVERSIDAD CATLICA BOLIVIANA SAN PABLO

FACULTAD DE CIENCIAS EXACTAS E INGENIERA

PROYECTO
OFDM

ESTUDIANTES:
Edwin Quispe Ortiz
Rodrigo Uruchi
ASIGNATURA:
Procesamiento Digital De Seales
DOCENTE:
Sylvain Damien Lesage

LA PAZ, 06 de junio de 2015

PROYECTO OFDM
1. INTRODUCCIN
OFDM es un metodo de codificacion digital de datos en frecuencias con
multiples portadoras. OFDM ha sido desarrollado en un ambiente popular
para comunicacin digital de banda ancha, utilizado en aplicaciones como
transmision de television y audio digital, acceso a internet DSL (por su sigla
en ingls Digital Suscriber Line), redes inalambricas y redes de
comunicaciones moviles 4G.
OFDM (Multiplexacion por divisin de frecuencia ortogonal) es un tipo de
multiplexacion que consiste en enviar un conjunto de seales portadoras en
diferentes frecuencias, muy cercanas, donde cada una transporta
informacin la cual puede ser modulada en QPSK o QAM. La caracterstica
principal de este tipo de multiplexacion es que las portadoras que tiene son
ortogonales entre si en frecuencia, lo cual esta definido por la siguiente
frmula:
T 0 +t

f 1 ( t )f 2 ( t ) dt=0
T0

Donde:
f1
y

f2

son las frecuencias de las subportadoras que se encuentran

ortogonales durante el tiempo T donde la separacin es 1/T que es el


mnimo para que estas sean ortogonales.
Los datos se dividen en varios flujos o canales en paralelo, uno para cada
subportadora. Y cada subportadora se modula con una tcnica
convencional como QAM o PSK a velocidades bajas. Los flujos de datos
que se consiguen con similares a una modulacin
2. ESPECIFICACIN DEL PROBLEMA
DSL es una tecnologia digital cuya transmision se realiza sobre lineas de
cobre. Esta tecnologia hace uso de la actual red telefonica existente,
alojando acceso a internet de tasa alta, entre otros servicios digitales.

Fig. 1. Se muestra el esquema de la tecnologia xDSL


El rango de frecuencias hasta 4 KHz es utilizado exclusivamente para la
transmision de seales de voz, mientras que el rango entre 25 KHz a 30
MHz esta reservado para la transmision de seales DSL. Como se muestra
en la figura el rango de frecuencias esta dividido en bandas para UpStream
(Flujo de subida) y DownStream (Flujo de bajada) de esta manera la
transmision en ambas direcciones es posible.

Fig. 2. Se muestra las divisiones en el ancho de banda del par de cobre


La tecnica multi-tono discreta (DMT) es utilizada en sistemas DSL. Esta es
una forma de tecnologia de transmision multiportadora, la cual tambien es
conocidad como OFDM en comunicaciones moviles. En este caso todo el
ancho de banda esta particionado en un gran nmero de subportadoras
ortogonales, las cuales no se interfieren una a la otra debido a su
ortogonalidad. Asi como se muestra en la figura.

Fig. 3. Se muestra una seal OFDM


DMT es un mtodo de separacion de seales DSL para que el rango de
frecuencias utiles este separada en 256 bandas (o canales) de 4,3125 KHz
cada una. DMT utiliza la transformada rapida de fourier (FFT) como
algoritmo de modulacion y demodulacion. Dividiendo el espectro de
frecuencias en multiples canales. Dentro de cada canal, la modulacion
utilizada es QAM (Modulacion por Amplitud de Cuadratura).
Lo que se quiere lograr es implementar una cadena de transmision OFDM
compatible con ADSL.
OFDM necesita menos ancho de banda que FDM para transportar la misma
cantidad de informacin, lo que se traduce en mayor eficiencia espectral.
Adems de una alta eficiencia espectral, un sistema de OFDM como
WiMAX es ms resistente a RNE medio ambiente. Puede ser eficiente y
superar las interferencias de frecuencia selectiva de desvanecimiento
causado por mltiples porque la igualacin se hace en un subconjunto de
sub-compaas areas en lugar de una sola compaa area ms amplia.
El efecto del ISI (Inter Symbol Interference) se suprime en virtud de un
perodo ms largo smbolo del paralelo OFDM sub-portadoras de un nico
sistema de soporte y el uso de un prefijo cclico (CP).

Fig. 4. Se muestra una serie de portadoras ortogonales


Se denomina Tono multi-discreto (DMT) porque en lugar de una sola
portadora modulada, un gran nmero de sub portadoras espaciadas son
moduladas a travs de algunas constelaciones QAM. Se trata de una
propagacin de espectro tcnica que aumenta la eficiencia de las
comunicaciones de datos mediante el incremento de datos porque hay ms
puntos en la constelacin QAM. Adems, los problemas con Multi-path
(multi trayectoria) y cancelacin de interferencia espectral se reducen de
forma selectiva la modulacin de la "clara" o hacer caso omiso de los
transportistas con los transportistas de alta velocidad binaria errores.
Al igual que FDM, OFDM tambin se utiliza mltiples sub-transportistas,
pero el sub-los transportistas estn poco espaciados entre s, sin causar
interferencia, la supresin de guardia entre bandas adyacentes subportadoras. Esto es posible porque las frecuencias (sub-areas) son
ortogonales, es decir, el pico de una sub-portadora coincide con la nula
adyacentes de un sub-carrier.
3. DATOS
Los datos que se utilizaran seran por medio de una simulacion en MatLab.
Se utilizara el archivo de sonido handel, sonido precargado en el programa
4. CRITERIOS DE EVALUACIN
Se trabajar sobre la implementacion de un algoritmo para poder simular el
funcionamiento de una transmision por OFDM, asi se podra verificar como

es que funciona ste. Entonces se trabajar sobre la creacion de un


algoritmo en la plataforma MatLab.
5. SOLUCIN
Se trabajar en crear un algoritmo de implementacion de transmision
OFDM en MatLab. Asi podremos simular como es que trabaja la tecnologia
ADSL y principalmente DMT.
La implementacin ser de la siguiente manera:

Fig. 5. Diagrama de bloques de la implementacin OFDM DMT


Antes de mostrar el cdigo se explica el funcionamiento de cada funcin
empleada por el programa.
a. Conversor A/D y D/A
El conversor Analgico/Digital es representado por un vector
correspondiente en nuestro cdigo de MATLAB, esto significa que
una seal analgica muestreada es convertida a un flujo de bits.
Para esto se sigue un proceso de dos pasos:

Cuantificacion
Asignacion de Bits

En la cuantificacin, el eje de la amplitud de la seal de entrada es


nominada dentro de 2^B niveles y cada muestra es redondeada al
nivel mas cercano. Cada nivel es asignado a un numero binario de Bbits, de esta manera la longitud N del vector de muestras de entrada
es mapeado en un flujo de bits de longitud B*N.
En la imagen de abajo se muestra la seal de entrada cuantificada.

Fig 6. Se muestra una seal de entrada muestreada


En nuestro estudio se tom la seal de entrada (sonido) Handel que
ya est incluido dentro de MatLab
La seal cuantificada se muestra a continuacin.

Fig. 7. Se muestra la seal Handel cuantificada

El conversor Digital/Analogico es la operacin inversa al conversor


Analogico/Digital, en nuestro sistema convierte un flujo de bits en una
seal analgica muestreada. En este caso solo es un proceso de un
paso: desde que se realiza la conversin A/D con B-bits, se asigna a
cada bloque de B-bits el nivel asociado original de cuantificacin. En
esto ocurre un error implcito inducido en la conversin D/A debido a
la cuantificacin, ya que la seal muestreada se redondea al nivel
mas cercano, entonces el valor exacto de la seal de entrada se
pierde. Esto se denomina error de cuantificacin.

b. Conversor Serie/Paralelo Paralelo/Serie


El concepto de conversion Serie/Paralelo se trata de que un flujo de
bits de datos es partido en varios de igual longitud (o
aproximadamente de igual longitud) los cuales pueden ser utilizados
al mismo tiempo.

En la conversin Paralelo/Serie, estas piezas son concatenadas una


detrs de las otras, colocadas todas en un largo flujo de datos. En
nuestro cdigo, todas estas piezas son manejadas dentro de un
vector. De esta manera la conversin Serie/Paralelo es muy
importante en un sistema DMT.
Los bloques convertidos de Serie a Paralelo son introducidos al
mapeo en la constelacin, la cual es bsicamente la representacin
de segmentos de bits como coeficientes espectrales. La longitud de
los bloques (a lo largo de la constelacion) determina el numero de
coeficientes espectrales que sern usados por la IFFT (Inverse Fast
Fourier Transform) o Transformada Inversa Rapida de Fourier. En
este caso el conversor S/P es esencial en la eleccin de cuantas
frecuentas sern utilizadas. Normalmente, la longitud del bloque es
una potencia de 2, que hace que los algoritmos IFFT y FFT sean
eficientes computacionalmente.
c. Mapeo de Constelacion
En el proceso del mapeo de la constelacin, los flujos de datos de Bbits son asignados en un nico valor complejo en la constelacin.
Esto es similar a la Modulacion por Amplitud de Cuadratura (QAM),
porque la IFFT de estas muestras son representadas por valores
proporcionales del eje real en el caso de la amplitud y la fase es
representada con valores del eje complejo.
En nuestro caso usaremos una constelacin construida con 4 bits
(16 puntos). Actualmente las constelaciones utilizadas en DMT
pueden tener 240 puntos. Las caractersticas importantes de estas
constelacin incluyen el rea ocupada por los puntos y el espaciado
entre los puntos. La potencia necesaria para transmitir la seal es
proporcional al rea, asi que es importante no dejar que los puntos
estn muy separados. Sin embargo, el canal por el que se transmite
la seal introduce ruido que causa que los puntos en la constelacin
se reciban con error. Si los puntos estn muy cercanos, es imposible
detectar el valor correcto de los puntos en el receptor.

Fig. 8. Se muestra una tabla de valores para un mapa de


constelacin de 4 bits (16 puntos)

Fig. 9. Se muestra el mapa de constelacin de 4 bits (16 puntos)

d. Reflejo/IFFT y des-reflejo/FFT
Asi como la conversin Serie/Paralelo, el reflejo es sencillo en su
principio y su implementacin, y es esencial para DMT. Necesitamos
que se transmita una seal con valores reales, pero despus del

mapeo de constelacin, los bloques tienen valor complejo. El


proceso de reflejo asegura que la seal transmitida tenga valores
reales tomando en cuenta el hecho que la IFFT (Transformada
Rapida Inversa de Fourier) de un vector conjugado es real. En
nuestro sistema, el reflejo le da simetra a cada bloque. En el
proceso del reflejo, cada bloque es volteado cerca, conjugado y
ubicado al final del bloque original. Hay algunos puntos mas finos.
Sin embargo, si la longitud del bloque antes del reflejo es M, el
elemento M+1 del bloque reflejado toma cualquier valor real (en
nuestro caso lo reemplazamos con cero) mientras que el elemento
M+2 toma el valor del elemento M-1, luego el elemento M+3 toma el
valor del elemento M-2 y asi sucesivamente hasta completar reflejar
los M elementos, en total tendramos 2M elementos. Tambin el
primer elemento en ningn bloque no puede tener un valor complejo;
debe ser puesto artificialmente a un valor real. Esto es porque el
primer punto de cualquier bloque corresponde a una frecuencia de
cero despus de la IFFT. Si este elemento es complejo, el resultado
del vector, creado por la IFFT, tendr una compensacin compleja y
por lo tanto ser complejo tambin. Aunque esto seria una fuente de
error, asumimos que el receptor conoce correctamente los primeros
elementos de cada bloque, eliminando este error.

Fig. 10. Se muestra un bloque (longitud original de 128 elementos)


de puntos de constelacin despus del reflejo (solo magnitudes). La
porcin reflejada esta mostrada en azul
La Transformada Inversa Rapida de Fourier (IFFT) bsicamente
provee la modulacin para DMT. Como se observ en el parte del
conversor Serie/Paralelo, los puntos complejos de la constelacin en
cada bloque (ahora reflejados) son interpretados como coeficientos
para una seal en el dominio del tiempo, la IFFT nos brida esta
seal. Asegurando que la longitud de nuestro bloque es rellenada
hasta llegar a una potencia de 2 a travs de los procesos de mapeo
y reflejo, nos aseguramos que la IFFT es computacionalmente
eficiente. En nuestro caso se uso la funcin IFFT incluida en MatLab.

Fig. 11. Se muestra la IFFT de la Fig. 5. Tiene valores reales y la


misma longitud que el bloque reflejado
Despus de atravesar el canal, los bloques sufren el proceso inverso
a la transmisin. Una vez que los bloques recibidos en el dominio del
tiempo estn separados, una FFT (Transformada Rapida de Fourier)
nos retorna los coficientes espectrales de cada bloque, los cuales
incluyen ruido. La FFT esencialmente multiplica las seales de forma
sinusoidal en el dominio del tiempo por su conjugada. El des-reflejo

es parecido, necesitamos deshacernos de la parte simtrica


conjugada de cada bloque (elementos reflejados), asi que los ltimos
M valores (para un bloque pre-reflejado de M valores) son
simplemente descartados. De la misma manera, la funcin de la FFT
utilizada fue la incluida en MatLab.
e. Prefijo Ciclico
En una transmisin OFDM se pueden dar dos formas de
interferencia:

Interferencia Inter-Simbolo (ISI)


Interferencia Inter-Portadora (ICI)

La ISI (Inter Symbol Interference) surge del hecho que el canal de


transmisin realiza una convolucion lineal de su respuesta al impulso
con la seal en el dominio del tiempo. Esta vez, los bloques (ahora
conocidos como simbolos) han sido reflejados, procesados por la
IFFT y concatenados. En la interseccin de smbolos adyacentes, se
produce un convolucion lineal de la seal con la respuesta al impulso
(cuyo valor es asumido con un valor menor que la longitud del
smbolo pero mayor a un elemento) debido a partes solapadas de
ambos smbolos. Esto significa que los smbolos independientes
afectan a otros. La adicion de un prefijo provee un buffer entre los
smbolos para prevenir este solapamiento.

Fig. 12. Interferencia Inter-Simbolo, esto significa una convolucion


lineal de la respuesta al impulso con el canal x. Se solapan en la
interseccin de los dos smbolos.
La ICI (Inter Carrier Interference) vienes del hecho que las
frecuencias de las portadoras en DMT pierden su ortogonalidad
debido a la respuesta en frecuencia del canal. Si observamos a la
FFT de un bloque en la entrada al canal, veriamos una funcin
sincronizada en cada frecuencia de la portadora ya que la IFFT
modula cada portadora con un pulso rectangular. La base de la DFT
(Transformada de Fourier Discreta) es ortonormal, asi que cada uno
de los vectores base (sinusoides) son ortogonales a todo el resto.
Esto significa que cada una de las portadoras son ortogonales
(producto dentro de cero). La respuesta en frecuencia del canal tiene
el efecto de atenuar ciertas frecuencias mas que otras, asi que cada
una de las portadoras es cambiada por una diferente cantidad. El
producto interior es una medida de la similaridad de dos vectores,
previamente dos completamente diferentes las funciones
sinusoidales ahora tienen por lo menos algn grado de similaridad.
Se puede dar que ya no son ortogonales. Pero si las portadoras no

son ortogonales, la FFT no puede recuperar


correctamente los coeficientes espectrales.

exactamente

El prefijo cclico resuelve este problema cambiando la convolucion


lineal de la respuesta al impulso del canal con la seal dentro de una
convolucion cclica.

Fig. 13. Interferencia Inter-Portadora. La respuesta en frecuencia del


canal causa que las frecuencias de las portadoras, al ser
transmitidas, pierdan su ortogonalidad.
La adicion de un prefijo cclico a cada smbolo resuelve la ISI y la ICI.
En nuestro caso, asumimos que la respuesta al impulso del canal
tiene una longitud conocida L. el prefijo consiste simplemente en
copiar los ltimos L-1 valores de cada smbolo y anexndolos en el
mismo orden al principio del smbolo. Teniendo este buffer con datos
inservibles al principio, la convolucion de la respuesta al impulso con
la seal en el final del smbolo no afecta nada de los datos actuales
en el comienzo del siguiente smbolo. Es decir, repitiendo los ltimos
elementos al comienzo, los primeros datos reales de cada smbolo

sufren solapamiento con el final del smbolo, asi como una


convolucion cclica. Esto significa que la convolucion lineal de la
respuesta al impulso del canal con los smbolos concatenados llegan
a ser convoluciones cclicas concatenadas de la respuesta al impulso
con los smbolos individuales. La convolucion cclica directamente
corresponde a la multiplicacin en el dominio de la frecuencia, esto
tiene gran importancia respecto a la ecualizacin. Despus de que la
seal en el dominio del tiempo pasa a travs del canal, es partido en
smbolos en paralelo y el prefijo es simplemente descartado.

Fig. 14. Se muestra un smbolo en el dominio del tiempo con su


prefijo cclico y los ltimos L elementos son mostrados en rojo
f. Canal de Transmision
Como fue mencionado, DMT es utilizado para enviar datos por
medios inalmbricos como lneas telefnicas de cobre. En ambos de
estos medios, las ondas electromagnticas de alta frecuencia son
rpidamente atenuadas mientras las ondas de baja frecuencia
retienen mucha potencia, aun en largas distancias. Considerando
esto, modelamos la repuesta en frecuencia de nuestro canal como
un filtro pasa bajos. Para tener en cuenta las irregularidades en el
canal (y cerciorarse que la respuesta en frecuencia es invertible),

realizamos un filtro pasa bajos no ideal; esencialmente, la repuesta


al impulso es un suavizador de M puntos con variaciones aleatorias
de amplitud. Esta porcin del canal fue simplemente implementada
utilizando la funcin de convolucion con una respuesta al impulso
construida. Esta funcin esta incluida en Matlab.

Fig. 15. Esta es una respuesta del canal de 16 pulsos. Se puede


observar las amplitudes aleatorias, pero la forma general es aun
suavizada

Fig. 16. Respuesta en frecuencia del canal. Se muestra la respuesta


al impulso de 256 muestras a travs de la FFT. Se observa su
caracterstica general de pasa bajo, asi como la ausencia de ceros.
En adicion al filtrado de pasa bajo a la seal de entrada, el canal
tambin incorpora ruido blanco Gaussiano aditivo (AWGN), de
manera aleatoria. El AWGN es llamado blanco porque tiene la
misma cantidad de energa en todas las frecuencias (asi como la luz
blanca). Se implemento esta caracterstica del canal aadiendo un
vector rndn a la seal despus del filtro pasa bajo.
Para un sistema DMT el canal tambin puede incluir otros tipos de
ruido. Estos incluyen ruido impulsivo (picos en la seal en el dominio
del tiempo), frecuencias ocupadas (picos en el dominio de la
frecuencia) y diafona (que no se consider en nuestro programa). En
el cdigo de nuestro programa se incorpor ruido impulsivo ubicando
un numero de elementos en ubicaciones individuales y aleatorias en
la seal. No se incluyeron picos de frecuencia o diafona.

Fig. 17. Ruido Blanco Gaussiano adicionado a impulsos en el


dominio del tiempo

g. Ecualizacion y aproximacin
En la ecualizacin, los bloques de coeficientes espectrales recibidos
(por ejemplo: despus de quitar el prefico cclico y realizar la FFT)
estn ajustados para compensar la respuesta en frecuencia del canal
(no se puede quitar el ruido aditivo). Debido al prefijo cclico, cada
bloque ha sufrido convolucion cclica con la respuesta al impulso del
canal. Si la respuesta en frecuencia no tiene ceros y es conocida por
el receptor, es posible quitar perfectamente el efecto de filtrado del
canal. Ya que el canal multiplico puntualmente los bloques por su
respuesta en frecuencia, todo lo que se necesita hacer es multiplicar
los bloques por: uno sobre la respuesta en frecuencia (1/resp. En
frec).

Fig. 18. Se muestra la respuesta en frecuencia del ecualizador.


Despus de la ecualizacin, el efecto de filtro pasa bajo del canal es
quitado, pero el ruido aditivo aun est presente. Se manifiesta
causando que los puntos de la constelacin recibida estn desviados
de su ubicacin original en la constelacin. Para habilitar el flujo de
bits para ser recuperado, se realiza una aproximacin en cada punto.
Mientras la amplitud del ruido sea pequea o los puntos de la
constelacin estn alejados, es improbable los puntos estn
desviados lo suficiente
para tomar un nuevo punto en la
constelacin. Con un alto nivel de ruido, sin embargo, los puntos se
desvan por toda la constelacin; en este caso, el punto mas cercano
es improbable que sea el punto original. En el cdigo implementado,
se introdujo esta aproximacin con un analizador y una tabla de
bsqueda; de esta manera se examina cada valor complejo en los
bloques y se lo compara con cada punto en la constelacin,
seleccionando la aproximacin al punto mas cercano.

Fig. 19. Puntos de la constelacin recibidos a una SNR=52 dB

Fig. 20. Puntos de la constelacin recibidos a una SNR=25 dB

6. RESULTADO Y ANALISIS
A continuacin se muestra el cdigo implementado, es importante nombrar
que se el programa principal es el archivo run.m, este archivo es el que se
compila, sin embargo a su vez este programa llama a las funciones: a2d,
approximate, channel, constbuilder, constmap, cyclicpad, d2a, deconstmap,
decyclicpad, demirror, filterchannel, matlaberr, mirror, parallel2series,
series2parallel; cuyos codigos tambin sern mostrados.
a. Run.m
Es el archivo principal que llama a las funciones que emulan los
bloques de un sistema de transmisin DMT ADSL, el cdigo es el
siguiente.
B= 4; % # de bits para la cuantificacion
C= 16; % # de puntos de la constelacion, resultado de 2^B
S= 256; % # Subportadoras
L=16; % longitud del canal
noise=.0001; % amplitud del ruido
sN=0; % # picos en el dominio del tiempo
N=L; % Longitud del prefijo ciclico
F=128; % longitud de los bloques (1/2 # de sub portadoras)
M=constbuilder(C); % Matriz de Constelacion
s=abs(randn(L,1));
s=s./sum(s);

% canal aleatorio

load handel
y=y(1:S); %seal de entrada, se tomaran las primeras 256 muestras
x=a2d(y,B); %conversor analogico a digital incluyendo cuantificacion
z=constmap(x,M); %Constelacion para el mapeo de la seal digital x
a=series2parallel(z,F); %conversor de serie a paralelo
b=mirror(a);
c=ifft(b);
d=cyclicpad(c,N);
e=matlaberr(parallel2series(d));
aN = randn(length(conv(e,s)),1)*noise;
f=channel(e,s,aN,sN);
f=f(1:length(e));
g=series2parallel(f,2*F+N);
h=decyclicpad(g,N);%
k=fft(h);
m=filterchannel(k,s);
n=demirror(m);
n(1,:)=a(1,:);
o=parallel2series(n);
p=approximate(o,M);
q=deconstmap(p,M);

r=d2a(q,B);
figure(1)
stem(y/max(abs(y)));title('SEAL DE ENTRADA');
xlabel('Muestras'); ylabel('Amplitud');
axis([1 S -1 1]);
grid on
figure(2)
stem(d2a(x,B));
title('ENTRADA CUANTIFICADA');
xlabel('Muestras'); ylabel('Amplitud');
axis([1 S -1 1]);
grid on
%
figure(3)
plot(real(M(:,length(M(1,:)))),imag(M(:,length(M(1,:)))),'.b');
grid on
title('MAPA DE CONSTELACION');
xlabel('Real'); ylabel('Imaginario');
axis([-1.5 1.5 -1.5 1.5]);
%
figure(4)
Q=length(d(:,1));
stem(1:Q-N,matlaberr(d(1:Q-N,1)),'b');ylabel('Prefijo ciclico aadido');
title('PREFIJO CICLICO AADIDO');
xlabel('Muestras'); ylabel('Amplitud');
hold
stem(1:N,matlaberr(d(1:N,1)),'r');
stem(Q-N+1:Q,matlaberr(d((Q-N+1):Q,1)),'r');
hold;
%
%
figure(5)
stem(e);
title('ENTRADA CON ISI - ICI ');
xlabel('Muestras'); ylabel('Amplitud');
Q=2*(2*F+N);
stem(1:Q/2,e(1:Q/2));
hold
stem(Q/2+1:Q,e(Q/2+1:Q),'g');
stem(Q/2-L/2+1/2:Q/2+L/2,s,'r');
hold;
%
figure(7)
plot(real(o),imag(o),'*r');
hold;
plot(real(M(:,length(M(1,:)))),imag(M(:,length(M(1,:)))),'.b');
title('PUNTOS DE CONSTELACION RECIBIDOS');
xlabel('Real'); ylabel('Imaginario');
hold;
grid;
axis([-1.5 1.5 -1.5 1.5]);
figure(6)
stem(fftshift(abs(fft(s,256))));

title('FUNCION DE TRANSF. DEL CANAL DE Tx');


xlabel('Muestras'); ylabel('Amplitud');
axis([0 2*F 0 1]);
%
figure(8)
stem(f);title('SALIDA DEL CANAL');
xlabel('Tiempo'); ylabel('Amplitud');
%
figure(9)
stem(h);title('PREFIJO CICLICO EXTRAIDO');
xlabel('Muestras'); ylabel('Amplitud');
%
figure(10)
stem(fftshift(abs(1./fft(s,256))));
title('FUNC. DE TRANSF. DEL ECUALIZADOR');
xlabel('Frecuencia'); ylabel('Amplitud');
%
figure(11)
stem(r);
title('SEAL RECIBIDA/CUANTIFICADA');
xlabel('Tiempo'); ylabel('Amplitud');
%
figure(12)
stem(1:128,abs(b(1:length(b)/2,1)),'m')
hold
stem(129:256,abs(b(length(b)/2+1:length(b),1)),'k')
hold
title('REFLEJO');
xlabel('Muestras'); ylabel('Amplitud');
ps=(norm(e))^2;
pn=(norm(aN))^2;
snr=10*log10(ps/pn);
biterr=sum(abs(x-q));

b. A2d.m
Esta funcin es la conversora de datos analgicos a digitales.
function y = a2d(x,b)
% a2d(x) convierte a tiempo discreto, una seal analogica a
%
un flujo de bits (b bits por muestra)
% x seal original
% b numero de bits por muestra
N = length(x);
qinterval = 2*max(abs(x))/((2^b)-1);
if b<=1;
for i=1:N
if x(i)<=0
bits(i)=0;
else
bits(i)=1;

end
end

else

q = quant(x-min(x),qinterval);
bits=zeros(N*b,1);
for k=0:((2^b)-1)
u=dec2bin(k);
for i=1:length(u)
w(i)=str2num(u(i));
end
v=[zeros((b-length(w)),1)',w];
p(k+1,:)=v;
end
for i=0:N-1
for k=0:((2^b)-1)
if q(i+1)==k*qinterval
bits(b*i+1:b*i+b)=p(k+1,:);
break
else
end
end
end

end
y=bits;

c. Constmap.m
Es la funcin que realiza el mapeo en la constelacin
function y = constmap(x,M)
% constmap(x) mapa de constelacion para el flujo de bits (2
bits/simbolo)
%
x flujo de bits
m=length(M(1,:))-1;
N = length(x);
newN=m*round(N/m);
x=x(1:newN);
for i=1:m
newvector(:,i)=x(i:m:newN-(m-i));
end
alpha=zeros(newN/m,1);
for i=1:newN/m
for k=1:length(M(:,1))
if (newvector(i,:)==M(k,1:m))
alpha(i)=M(k,m+1);
break
else
end
end
end
y=alpha;

d. Series2parallel.m
Es la funcin que convierte el flujo de bits de serie a paralelo
function y = series2parallel(x,N)
L=length(x);
q=floor(L/N);
newvec=zeros(N,q);
for i=1:q
newvec(1:N,i)=x((1+(i-1)*N):i*N);
end
y=newvec;

e. Mirror.m
Es la funcin que se encarga del reflejo de el flujo de bits.
function y = mirror(X)
R=length(X(1,:));
L=length(X(:,1));
if isreal(X(1,:))
X=X;
else
X(1,:)=zeros(1,R);
end
newvec=zeros(2*L,R);
newvec(1:L,:)=X;
newvec(L+1,:)=X(1,:);
newvec(L+2:2*L,:)=conj(flipud(X(2:L,:)));
y=newvec;

f. Cyclicpad.m
Es la funcin encargada del prefijo cclico
function y=cyclicpad(X,L)
N=length(X(:,1));
Y=[X(N-L+1:N,:);X];
y=Y;

g. Matlaberr.m
Es la funcin encargada de aadir error al flujo de bits.
function y = matlaberr(X)
R=length(X(1,:));
L=length(X(:,1));
for m=1:R
for n=1:L
if abs(real(X(n,m)))<.000001
a=0;
else

end

a=real(X(n,m));
end
if abs(imag(X(n,m)))<.000001
b=0;
else
b=imag(X(n,m));
end
X(n,m)=a+j*b;

end
y=X;

h. Channel.m
Es el cdigo encargado del canal de transmisin
function y=channel(x,h,aN,sN)
a=conv(x,h);
N=length(a);
w=a+aN;
m=max(abs(x));
for k=1:sN
w(round(abs(randn(1,1))*(N-1))+1)=m;
end
y=w;

i. Decyclicpad.m
Es la funcin encargada de quitar el prefijo cclico
function y=decyclicpad(X,L)
N=length(X(:,1));
Y=X(L+1:N,:);
y=Y;

j. Filterchannel.m
Es la funcin encargada de emular el filtro pasa bajo a causa del
canal.
function y=filterchannel(X,h)
N=length(X(:,1));
W=length(X(1,:));
H=fft(h,N);
invH=1./H;
for k=1:W
y(:,k)=invH.*X(:,k);
end
y;

k. Demirror.m
Es la funcin encargada de quitar el reflejo de la informacin en el
smbolo.
function y = demirror(X)
R=length(X(1,:));
L=length(X(:,1));
if rem(L,2)==1
y=[ones(1,R);X(1:L/2,:)];
else
y=X(1:L/2,:);
end

l. Approximate.m
Es la funcin encargada de la aproximacin de puntos a la
constelacin.
function y = approximate(x,M)
% approximate(x,M) aproxima un simbolo con ruido x con smbolos validos
% en M
%
x vector de simbolo con ruido
%
M matriz que representa el mapa de constelacion
%M=[0 0 1;0 1 j;1 0 -1;1 1 -j];
W=length(M(1,:));
L=length(M(:,1));
N = length(x);
a = M(:,W);
alpha=zeros(N,1);
for i=1:N
mindist=100;
symnum=0;
for k=1:L
if abs(a(k)-x(i))<=abs(mindist)
mindist=abs(a(k)-x(i));
alpha(i)=a(k);
else
end
end
end
y=alpha;

m. Deconstmap.m
Se encarga de quitar el mapeo de bits del smbolo.
function y = deconstmap(x,M)
% deconstmap(x) mapa de constelacion en el simbolo (2 bits/symbol)
%
x - bitstream

%M=[0 0 1;0 1 j;1 0 -1;1 1 -j];


m=length(M(1,:))-1;
% # of bits/symbol
N = length(x);
bits=zeros(N*m,1);
for i=0:N-1
for k=1:length(M(:,1))
if (x(i+1)==M(k,m+1))
bits(1+(m*i):m*(i+1))=M(k,1:m);
break
else
end
end
end
y=bits;

n. D2a.m
Funcin encargada de la conversin digital a analgica de la seal.
function y = d2a(x,b)
% d2a(x) convierte el flujo de bits (b bits por muestra) de tiempo
discreto,
%
a una seal analogica
% x flujo de bits
% b numero de bits por muestra
x=x';
N = length(x);
L=floor(N/b);
qinterval = 2/(2^b-1);
if b<=1;
for i=1:N
if x(i)==0
sig(i)=-1;
else
sig(i)=1;
end
end
else
sig=zeros(L,1);
for k=0:((2^b)-1)
u=dec2bin(k);
w=zeros(1,length(u)); % conversion a binario
for i=1:length(u)
w(i)=str2num(u(i));
end
v=[zeros((b-length(w)),1)',w];
p(k+1,:)=v; % p es un vector de binaries para un interval de #s
end
if b~=4

for i=0:L-1
% marca el valor de q con etiqueta #
for k=0:((2^b)-1) % inserta el valor binario correspondiente
dentro del flujo de datos
if (x((1+(i*b)):(b*i+b))== p(k+1,:))
sig(i+1)=qinterval*k-1;
break
else
end
end
end

else
for i=0:L-1
%%for k=1:b
if x(1+i*b)==0
if x(2+i*b)==0
if x(3+i*b)==0
if x(4+i*b)==0
sig(i+1) =
else
sig(i+1) =
else
if x(4+i*b)==0
sig(i+1) =
else
sig(i+1) =
else
if x(3+i*b)==0
if x(4+i*b)==0
sig(i+1) =
else
sig(i+1) =
else
if x(4+i*b)==0
sig(i+1) =
else
sig(i+1) =
else
if x(2+i*b)==0
if x(3+i*b)==0
if x(4+i*b)==0
sig(i+1) =
else
sig(i+1) =
else
if x(4+i*b)==0
sig(i+1) =
else
sig(i+1) =
else
if x(3+i*b)==0
if x(4+i*b)==0
sig(i+1) =
else

-1;
qinterval*1-1;end
qinterval*2-1;
qinterval*3-1;end; end

qinterval*4-1;
qinterval*5-1;end
qinterval*6-1;
qinterval*7-1;end; end; end

qinterval*8-1;
qinterval*9-1;end
qinterval*10-1;
qinterval*11-1;end; end

qinterval*12-1;

end
end

sig(i+1) = qinterval*13-1;end
else
if x(4+i*b)==0
sig(i+1) = qinterval*14-1;
else
sig(i+1) = qinterval*15-1;end; end; end; end

end
y=sig;

o. Constbuilder
Funcin encargada de la construccin de la constelacin.
function y = constbuilder(N)
b=ceil(log2(N));
p=zeros(N,b);
for k=0:(N-1)
u=dec2bin(k);
w=zeros(1,length(u));
for i=1:length(u)
w(i)=str2num(u(i));
end
v=[zeros((b-length(w)),1)',w];
p(k+1,:)=v;
end
n=0:N-1;
if N<=16
a=exp(j*2*pi/N.*n');
M=[p,a];
else
a=exp(j*2*pi/16.*(0:15)');
if N<=24
b=0.5*exp(j*2*pi/(N-17).*(0:N-17)');
M=[p,[a;b]];
else
b=0.66*exp(j*2*pi/8.*(0:8)'+j*pi/16);
if N<=32
c=0.33*exp(j*2*pi/(N-26).*(0:N-26)');
M=[p,[a;b;c]];
else
a=exp(j*2*pi/N.*n');
M=[p,a];
end
end
end
if N==16
a=[.354+.354*j;sqrt(2)/2;sqrt(2)/2*j;-.354+.354*j;sqrt(2)/2*j;.354-.354*j;-.354-.354*j;-sqrt(2)/2];
b=exp(j*2*pi/8.*(0:7)');
M=[p,[a;b]];
else
end
y=matlaberr(M);

p. Resultados Graficos obtenidos

Fig. 21. Seal de entrada

Fig. 22. Entrada cuantificada

Fig.23. Mapa de constelacion

Fig.24. Prefijo ciclico aadido

Fig. 25. Seal con interferencia en el dominio del tiempo

Fig. 26. Puntos de constelacion recibidos

Fig.27. Funcion de Transferencia del canal de transmision

Fig. 28. Seal de salida del canal

Fig. 29. Seal con prefico ciclico extraido

Fig. 30. Funcion de transferencia del ecualizador

Fig. 31. Seal recibida cuantificada

Fig. 32. Seal reflejada, 128 muestras reflejadas


7. CONCLUSIONES Y SUGERENCIAS
Se logro lo que se quera lograr, una simulacin de una transmisin
OFDM en DMT ADSL. Utilizando 256 portadoras.
El proceso fue satisfactorio
8. REFERENCIAS
http://cnx.org/contents/513c5788-0900-4745-ab704597a1a791a2@3/DMT:_Implementation
DSL Advances, Prentice Hall
OFDM simulation using Matlab, Guillermo Acosta
Discrete Multitone Technology for 100G Ethernet, Toshiki Tanaka
DSL Transmission, Technische Universitat Hamburg-Harburg
Sistemas de transmission por fibra optica basados en OFDM, Raul
Nieto Freire
The benefits of Discrete Multi-Tone Modulation for VDSL systems,
Ikanos
Simulaciones en Matlab
Introduction to Digital Subscriber Line Technolgy, Concord
OFDM and DMT Systems, Cambridge

También podría gustarte