Está en la página 1de 3

SISTEMA DE TRANSMISIÓN

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.

Num_Bits es lo que mide el vector.

CONSTEL es la constelación elegida.

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.

Abk es el incremento de fase que por defecto vale 0

A es la amplitud, potencia, con la que vamos a transmitir que valdrá 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)

Finalmente, la salida del FEC es la concatenación de la salida anterior más o1 y o2 calculadas


durante el procedimiento.
BLOQUE 2: SCRAMBLER

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.

BLOQUE U4: MAPPER

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.

 Obtenemos el símbolo vectorizado por medio de simb_fila y después lo convertimos a


integer mediante str2double. Luego obtenemos la posición basándonos en la
constelación de la modulación, que representa el incremento Abk con respecto a la
posición 0. Actualizamos la fase anterior, calculamos el incremento y calculamos el
valor de la portadora con todos estos datos.

Finalmente, hacemos un desplazamiento de 16 posiciones para adaptarnos al formato exigido


de la IFFT. (las 16 primeras pasiones y las 15 últimas deben ser ceros)
BLOQUE U5: IFFT

Primero desplazamos la muestra para centrar la frecuencia 0. De eso se encarga ifftshift. A


continuación, hacemos la ifft de la salida del mapper (ya centrada).

BLOQUE U6: PREFIJO CÍCLICO

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.

También podría gustarte