Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Fourier PDF
Fourier PDF
2 Redes de Computadores
Anlisis de Fourier
Estudio de la distorsin introducida por el medio fsico en la
transmisin de una seal digital.
Objetivos
El anlisis de Fourier es un concepto bsico para entender algunos de los efectos que se
producen en la transmisin de datos a travs de un medio fsico, como por ejemplo
distintos tipos de cables. En esta prctica se pretende que el alumno entienda el clculo
de la descomposicin de una seal digital mediante series de Fourier, y sea capaz de
interpretar los efectos que ejerce el medio sobre esa misma seal. Para ello realizaremos
el estudio de esta seal digital en el dominio de la frecuencia mediante el anlisis de
Fourier.
Descripcin Terica
Durante la transmisin de informacin a travs de un medio fsico se producen una serie
de fenmenos de atenuacin, ruido, etc. que distorsionan la misma. Algunos de estos
fenmenos pueden ser estudiados perfectamente desde la observacin de la evolucin
de la seal en el tiempo, sin embargo, otros efectos se estudian mejor desde el anlisis
de la seal en el domino de la frecuencia. Para poder realizar esta interpretacin
frecuencial de la seal transmitida vamos a utilizar una herramienta matemtica que se
denomina anlisis de Fourier.
Introduccin Terica
El anlisis de Fourier se basa en el hecho, demostrado por Fourier, de que toda seal
peridica s(t) con periodo T (s(t)=s(t+T)) y frecuencia f=1/T, puede descomponerse en
una suma infinita de senos y cosenos de la forma siguiente:
s (t ) = a0 + an cos(2nft ) + bn sen(2nft ) (1)
n =1
Donde:
1 T
T 0
a0 = s(t )dt (2)
2 T
an = s(t ) cos(2nft )dt (3)
T 0
2 T
bn = s (t ) sen(2nft )dt (4)
T 0
El resto de trminos de (1) lo forman los infinitos componentes del sumatorio, que se
denominan armnicos o componentes armnicas de s(t). Estos armnicos son los que
nos permiten el estudio en frecuencia de dicha seal peridica. De esta manera, el
armnico n-simo de la seal s(t) viene determinado por
Con relacin a (5), si nf=1, entonces cos(2t ) + sen(2t ) se corresponde con la suma de
un seno y un coseno puro de periodo 1 (la multiplicacin de la variable t por 2 se usa
para cambiar el periodo de las sinusoidales de 2 a 1). De esta forma, dentro de (5), los
coeficientes nf definen la frecuencia de las sinusoidales. Por tanto, decimos que la
frecuencia del armnico n-simo es f n = nf
Por ltimo, la amplitud de cada sinusoidal de un armnico n viene marcada por los
trminos an y bn. Estos coeficientes ponderan la contribucin de la frecuencia de este
armnico en la seal original s(t), y se calculan por medio de las expresiones (3) y (4).
La potencia o amplitud de un armnico n se calcula como:
Pn = a n2 + bn2 (6)
Al utilizar un cable para transmitir una seal, la propia seal que se transmite resulta
inevitablemente atenuada. Sin embargo, un cable no atena a todos los armnicos de
manera uniforme, sino que acta como filtro paso bajo, de forma que los armnicos de
menor frecuencia pasan por l sin problema, pero los de frecuencia ms alta resultan
atenuados o totalmente filtrados.
De manera terica, vamos a considerar que un cable deja pasar todos los armnicos
hasta una determinada frecuencia de corte fc, y que a partir de esa frecuencia el resto de
armnicos se atenan completamente. Esta suposicin no es del todo realista, ya que la
transicin de la banda de paso del filtro a la banda de corte se realiza siempre de manera
2
progresiva. Por otra parte, la banda de paso del medio fsico (en nuestro caso, de 0 a fc)
va a definir lo que conocemos como el ancho de banda (bandwidth, BW) de ese medio.
Se puede demostrar que una seal digital est compuesta por infinitos armnicos, y que
no existe una frecuencia a partir de la que todos los armnicos sean cero. Esto implica
que para transmitir una seal digital con total precisin necesitaramos un medio fsico
con un ancho de banda infinito. Desafortunadamente, no existe ningn medio fsico con
ese comportamiento, lo que de manera prctica implica que al transmitir una seal
digital, no todos sus armnicos llegarn al destino.
Ms adelante, en esta prctica, veremos que el ancho de banda del medio no es el nico
factor que determina cuantos armnicos pasan el canal y llegan al destino, sino que
tambin influye la velocidad de transmisin de los datos. Tambin veremos
grficamente cmo es la seal que se recibe despus de atravesar el cable.
Para esta prctica vamos a suponer que deseamos transmitir continuamente un mismo
byte, y que utilizamos una representacin NRZ del mismo, en la que un nivel bajo de la
seal indica un valor lgico de 0, y un nivel alto de la seal indica un valor lgico de 1.
T
bit(0) para t 0 + Tn, 8 + Tn
T 2T
s (t ) = bit(1) para t 8 + Tn, 8 + Tn n (7)
M
7T
bit(7) para t + Tn, T + Tn
8
donde bit(i) son unas constantes que definen el valor del bit i-simo del byte a
transmitir.
3
En este punto vamos a realizar el clculo de los trminos a0, an y bn de (1) para la seal
definida en (7). Para esto vamos a utilizar las ecuaciones (2), (3) y (4).
1 T
T 0
a0 = s (t )dt
Como la funcin s(t) est definida por partes, podemos realizar la integral por intervalos
1
T 2T
a0 =
T
8
bit (0)dt + 8
bit (1) dt + K + bit ( 7 ) dt
T 0
T 7T
8 8
Ya hemos comentado que bit(i) son constantes, por lo que podemos considerar que
1
T 2T
T
a0 = bit (0) 8
dt + bit (1) 8
dt + K + bit (7) dt
T 0
T 7T
8 8
1
T 2T
a0 = bit (0)[t ]08 + bit (1)[t ]T8 + K + bit (7)[t ]7T
T
T
8 8
con lo que
1 T T T
a0 = bit (0) + bit (1) + K + bit (7)
T 8 8 8
bit(i)
1
a0 = (8)
8 i =0
7
n n
bit (i) sen 4 (i + 1) sen 4 i
1
an = (9)
n i =0
7
n n
bit (i) cos 4 i cos 4 (i + 1)
1
bn = (10)
n i =0
4
sen(kt ) cos(kt )
Para su clculo recuerda que cos(kt )dt = k
y que sen(kt )dt = k
Desarrollo de la prctica
En la primera parte de esta prctica, vamos a implementar en lenguaje de programacin
C el clculo de los trminos a0, an y bn de un carcter ASCII, utilizando para ello las
ecuaciones de (8), (9) y (10). Posteriormente, observaremos la representacin grfica de
este carcter, tal y como llega al receptor, y utilizaremos el simulador que acabamos de
implementar para realizar una serie de ejercicios.
Material necesario
Para la realizacin del programa para el clculo de los armnicos de un carcter ASCII
se parte de un fichero llamado Fourier.c. Este programa lo vamos a desarrollar en C
estndar, por lo que necesitaremos un compilador de C. En concreto proponemos
utilizar el compilador gcc, que incluye cualquier distribucin de Unix/Linux.
Para poder visualizar las grficas que genera nuestro programa, necesitamos la
aplicacin para el dibujo de grficas GNUPlot. Es indispensable disponer de una
versin igual o superior a la 3.6. Este programa es multiplataforma y se encuentra
disponible en casi todas las distribuciones Linux. Tambin se dispone de releases para
otros sistemas operativos, como MS Windows.
Ejemplo de ejecucin
5
obtenemos por un lado un fichero de texto de nombre armonico.txt, que contiene la
frecuencia (en hercios) y potencia de los armnicos que atraviesan el canal, y por otro
lado se vuelca por la salida estndar el conjunto de comandos GNUPlot que nos servir
para dibujar la seal transmitida y recibida, y su espectro en frecuencias. El resultado de
la anterior ejecucin debe de ser el siguiente:
La mayor parte de comandos son del tipo set, y sirven para configurar el aspecto de la
grfica (tamao, posicin etc.) y sus etiquetas (rtulos de las grficas y resto de
informacin). Por otra parte, se define la funcin byte(x), que describe el carcter
original, tal y como lo transmite el emisor (es decir, sin distorsiones). Posteriormente, se
define s(x) como la suma de los seis armnicos s1(x) s6(x) que atraviesan el canal.
Para calcular los coeficientes a0, an y bn de estas funciones, el programa utiliza la
llamada a los procedimientos que vamos a implementar en el siguiente punto. Por
ltimo, podemos destacar que el primer comando plot sirve para dibujar de manera
solapada las funciones byte(x) y s(x) que acabamos de definir, mientras que el segundo
plot dibuja el espectro de s(x), utilizando para ello el fichero armonico.txt. No vamos
a estudiar en ms profundidad los comandos de GNUPlot, ya que ste no es el objetivo
de esta prctica. Para ms informacin se puede consultar el manual que incluyen todas
las distribuciones de GNUPlot (comando help).
6
A continuacin vamos a generar las grficas, para ello:
1. Activa el atributo de ejecucin del fichero Fourier si no est activado. Para ello
teclea chmod +x Fourier
Ejemplo de grfica generada por GNUPlot utilizando los comandos obtenidos desde nuestro programa
7
banda de 0 a BW basta con dividir el BW entre f, redondeando siempre hacia abajo
(nunca puede pasar una fraccin de armnico, un armnico pasa entero o no pasa).
En la parte superior de la ventana, se dibuja un grfico con la seal transmitida (en azul)
y la seal tal y como se recibe en el destino (en rojo), despus de verse atenuada por el
medio. La seal azul se corresponde con la representacin grfica de la codificacin
NRZ del carcter transmitido, y est definida por la funcin byte(x), mientras que la
seal roja es el resultado de reconstruir la serie de Fourier del carcter, utilizando
nicamente los armnicos que pasan por el medio, y viene definida por la funcin s(x).
// IMPLEMENTAR
// IMPLEMENTAR
// IMPLEMENTAR
Una vez implementadas las tres funciones, compila el programa y ejectalo tal y como
hicimos en el ejemplo de ejecucin. Para compilar el programa en Unix utilizando el
compilador gcc teclea:
8
gcc Fourier.c o MiFourier lm
Con la opcin o se indica el nombre que debe tener el fichero ejecutable generado,
mientras que la opcin lm sirve para enlazar con la librera matemtica, y es necesaria
para poder utilizar las funciones trigonomtricas de C sin y cos.
Si ests utilizando otro compilador de C, como MS Visual C++ o Borland C++ Builder,
el proceso de compilacin ser diferente. Debers seleccionar la orden Build del men
adecuado.
En este punto vamos a utilizar nuestro simulador para ver grficamente cmo afecta la
atenuacin introducida por el cable a la seal transmitida. Para esto, vamos a generar
cuatro grficas distintas que corresponden a la transmisin de la misma seal, con la
misma velocidad, pero con medios fsicos que tienen distinto ancho de banda. En
concreto usaremos medios con ancho de banda igual a 400, 1000, 2000 y 9000 hz.
En esta lnea, la opcin c sirve para indicar el carcter a transmitir (tambin podras
haber introducido su cdigo ASCII usando c 97 en lugar de c a), la opcin v indica
la velocidad a la que se desea transmitir ese byte (en bits por segundo), la opcin b
indica cual es el ancho de banda del medio (introducimos la frecuencia de corte en
hercios), y por ltimo la opcin a es meramente cosmtica, y sirve para indicar a
GNUPlot cual es el ancho con el que debe dibujar la ventana del espectro, que en este
caso ser de 0 a 10 Khz.
Como el carcter y la velocidad introducida son las que el programa utiliza por defecto,
podemos omitirlas. Para construir las grficas con otros anchos de banda teclea:
Compara las cuatro grficas utilizando para ello el programa GNUPlot. Es fcil ver que
conforme se aumenta el ancho de banda, ms armnicos son capaces de pasar por el
medio, y por tanto mejor definicin tiene la seal que se recibe en el otro extremo.
Crees que sera suficiente un ancho de banda de 400 hz para transmitir este carcter a
una velocidad de 1.200 bps? Sera necesario un ancho de banda de 9 Khz o piensas que
podra bastar con un ancho de banda de 2 Khz?
9
Simulacin de la influencia de la velocidad de transmisin en la seal
En general, todos tenemos la idea de que al transmitir por un medio fsico una seal
digital, la velocidad mxima de transmisin est acotada. Hay muchos factores que
introducen esta limitacin, pero uno de los principales es que el ancho de banda del
medio es limitado. Como ya hemos visto, esto provoca que a partir de una determinada
frecuencia, el resto de armnicos se atenan.
10
Problema
Sea un canal de transmisin que funciona como un filtro paso bajo ideal, con un ancho
de banda de 10 Khz (banda pasante de 0 a 10 Khz), se transmite continuamente una
seal digital NRZ correspondiente a un carcter ASCII (cualquiera) de 8 bits, a una
velocidad de 1000 bps. Cuntos armnicos atraviesan el canal? dem si la velocidad de
transmisin es de 2000 bps. Resuelve este problema analticamente, y despus simlalo.
Solucin analtica: El periodo de la seal lo forman los ocho bits del carcter. Si la
velocidad de transmisin es de 1000 bps, entonces un bit tiene una duracin de 1 ms, y
el carcter tiene un periodo de T = 8 ms. La frecuencia fundamental (la inversa del
periodo) es por tanto f = 1/0,008 = 125 hz. Si el ancho de banda del medio es de 10000
hz, el nmero de armnicos que caben en esta banda es de (10000 / 125) = 80. Si la
velocidad de transmisin es de 2000 bps, la frecuencia fundamental ser de 250 hz y
slo pasarn por el canal los primeros 40 armnicos.
11