Documentos de Académico
Documentos de Profesional
Documentos de Cultura
COFDM. FUNCIONAMIENTO
MATLAB
VARIABLES INICIALES
Bits_TX es el vector que usaron ellos para hacer las pruebas y nosotros lo hemos usado como
vector de entrada para asegurarnos de que funciona correctamente y comprar resultados.
S es el registro de desplazamiento del FEC, que inicialmente está a cero. Por eso usamos
zeros()
OutPutU1 será la salida del FEC. Lo definimos como un vector, pero no sabemos cuánto medirá
porque depende de la constelación elegida y vamos haciendo una concatenación del vector
anterior y las dos nuevas salidas del FEC. ¡!!!!!!!!!!!!!!!!!!
LFSR es el registro de desplazamiento del Scrambler, que por defecto está inicializado a 1.
Según la constelación que hayamos elegido, tendrá unas constantes u otras: Nbpc, M, el
código Grey de la constelación y el valor de referencia del Mapper.
BLOQUE 1: FEC
Comenzamos con un for que va desde 1 hasta Num_Bits + 6 porque cuando se hayan
termiando de tx los bits, el FEC tendrá que volver a poner su registro de desplazamiento
(formado por 6 biestables) a 0. Seguimos el sistema de ecuaciones basado en xor para obtener
o1 y o2. Hemos usado variables auxiliares para hacer del cálculo de las xor algo más visual.
Decidimos desplazar los bits con la función circshift, que es un desplazamiento circular, es
decir, el último bit no se pierde, sino que vuelve a la primera posición, pero después se
sobreescribe. (desplazamos por columnas)
Este bloque es sencillo, ya que solo tiene que seguir una fórmula. Está formado por un registro
de desplazamiento del que en cada ciclo de reloj se hace la xor de sus posiciones 4 y 7. A
continuación, el registro se desplaza hacia la derecha y la primera posición se actualiza con
este resultado. Después, la salida del scrambler será la xor de este resultado con la entrada del
FEC.
BLOQUE 3: ENTRELAZADO
Comenzamos definiendo una variable times, que será el número de símbolos OFDM que
vamos a enviar. Para calcularlo, hemos tenido en cuenta que los bits que tendremos ahora
serán el doble más 12 debido a los 6 ceros que se introducían en el FEC para reiniciarlo. Todo
esto lo dividimos entre Nbps, ya que es el número de bits por cada símbolo.
Dado que es muy probable que la división no sea exacta, siempre hay que redondear por
arriba, y lo que hacemos es truncar y sumar 1 para asegurarnos de que los vamos a tx todos.
Creamos una variable que se llama inputU3 (inicializada a cero) y tendrá el tamaño de los bits
que vamos a enviar con times. Los primeros bits de InputU3 los igualamos a la salida del
Scrambler y lo que no se haya rellenado seguirán siendo ceros. Esta entrada la procesaremos
mediante un bucle for que se realiza tantas veces como símbolos vayamos a enviar. Dentro del
mismo, separamos los símbolos y desordenamos cada uno de ellos con la fórmula que se nos
daba en los apuntes.
Definimos una variable llamada Vport con el número de puntos de la IFFT y símbolos a tx.
Asignamos la referencia a todos los símbolos que vayamos a tx y creamos una variable T que
almacenará las fases de las 97 portadoras por símbolo que enviará. Al igual que antes,
asignamos la fase de referencia la primera posición de todos los símbolos.
En un bucle for que iterará el número de símbolos a transmitir, agruparemos la salida del
entrelazado por símbolos de Nbpc bits (monoportadora). De aquí saldrán 96 grupos de
símbolos monoportadora. Estos símbolos se recorrerán con otro for e iremos haciendo las
operaciones necesarias en cada uno de ellos para obtener los datos de la portadora a
transmitir.
Este bloque se encarga de sacar las 12 últimas muestras de la salida de la IFFT y copiarlas al
principio. De esta forma eliminamos el ISI de cada símbolo.