Capı́tulo 6 Anexos 6.1. Ejemplo obtención CRC En este ejemplo se codificará un mensaje de 14 bits con un CRC de 3 bits, y con un polinomio generador x3 + x + 1. El polinomio es escrito en binario y será el divisor del proceso. En este caso el polinomio generador queda de la forma “gen = [1 0 1 1]”. Se comienza con el mensaje a “proteger”: 11010011101100 Este mensaje es primero rellenado con un número de ceros igual al orden del CRC, que este caso es 3. A continuación se muestra el primer paso para el cálculo del CRC de 3 bits: 11010011101100 000 1011 Mensaje con tres bits de relleno. Divisor (4 bits) = x3 + x + 1. 01100011101100 000 Resultado. En cada paso o iteración el algoritmo actúa directamente sobre los bits que tiene encima del divisor. El resultado para esa iteración es la XOR entre los bits coincidentes del divisor y el mensaje. Los bits que no están directamente encima del divisor son simplemente copiados abajo para esa iteración. Para la siguiente iteración el divisor es desplazado un bit a la derecha, y el proceso es repetido hasta que el divisor alcance el último bit del mensaje. El proceso de obtención completo 77 se reproduce a continuación: 11010011101100 1011 01100011101100 1011 00111011101100 1011 00010111101100 1011 00000001101100 1011 00000000110100 1011 00000000011000 1011 00000000001110 1011 00000000000101 101 000 000 Mensaje con tres bits de relleno. Divisor (4 bits) = x3 + x + 1. Resultado. Divisor. 000 000 000 Nótese que el divisor se mueve hasta alinearse con el siguiente ’1’ en el dividendo. 000 000 000 000 1 00000000000000 100 Resto = Valor CRC (3 bits). El algoritmo para cuando el cociente es cero. Es decir, el valor del checksum CRC obtenido es igual a [1 0 0]. La validez del mensaje recibido en el receptor puede ser fácilmente verificado mediante la realización del cálculo de nuevo. En vez de rellenar el mensaje recibido con 3 bits a cero, en esta ocasión se deberán colocar los 3 bits correspondientes al valor del CRC hallado en el calculo anterior. 78 11010011101100 100 1011 01100011101100 100 1011 00111011101100 100 Mensaje recibido con el valor de CRC. Divisor (4 bits) = x3 + x + 1. Resultado. Divisor. ........... 00000000001110 100 1011 00000000000101 100 101 1 0 Resto = 0 El resto tiene que ser igual a cero, en caso contrario el mensaje recibido es distinto al enviado. 79 6.2. Parámetros capa PHY El cuadro 6.1 muestra los parámetros de frecuencia y tiempo usados en la capa fı́sica PHY de PRIME OFDM. Estos parámetros son comunes para todas las combinaciones de constelaciones y codificaciones. Nota: La tasa de muestreo de 250 Khz y los 512 puntos de la IFFT son definidos por conveniencia de la especificación PRIME en cuanto a los sı́mbolos OFDM, y no son entendidos como un requerimiento para su implementación. Cuadro 6.1: Parámetros de tiempo y frecuencia de PHY PRIME OFDM Parámetros Reloj de banda base (Hz) Espacio entre subportadoras (Hz) No de subportadoras de datos No de subportadoras pilotos Intervalo FFT (puntos) Intervalo FFT (µs) Prefijo cı́clico (muestras) Prefijo cı́clico (µs) Intervalo de sı́mbolo (muestras) Intervalo de sı́mbolo (µs) Perido de preámbulo (µs) Valores 250000 488.28125 84 (header) 13 (header) 512 2048 48 192 560 2240 2048 96 (payload) 1 (payload) El cuadro 6.2 muestra la tasa envı́o de datos durante la transmisión de la carga útil en PHY, y las longitudes de MSDU máximas para las distintas combinaciones de codificación y modulación. El cuadro 6.3 muestra el esquema de modulación y codificación, y la dimensión de la cabecera de la porción de la “PHY Frame”. 80 Cuadro 6.2: Tasa de envı́o datos de PHY y parámetros de dimensión de paquete, para varios esquemas de modulación y codificación. Código convolutional (1/2) Bits de información por subportadora (NBP SC ) Bits de información por sı́mbolo OFDM (NBP S ) Tasa de envı́o de datos brutos (Kbps aprox.) Longitud máxima de MSDU con 63 sı́mbolos (en bits) Longitud máxima de MSDU con 63 sı́mbolos (en bytes) DBPSK On O↵ DQPSK On O↵ D8PSK On O↵ 0.5 1 1 2 1.5 3 48 96 96 192 144 288 21.4 42.9 42.9 85.7 64.3 128.6 3016 6048 6040 12096 9064 18144 377 756 755 1512 1133 2268 Cuadro 6.3: Parámetros de la cabecera (header) Código convolucional (1/2) Bits de información por subportadora (NBP SC ) Bits de información por sı́mbolo OFDM (NBP S ) 81 DBPSK On 0.5 42 6.3. Esquemas de modulación utilizados 6.3.1. BPSK Transmisor Este esquema de modulación es utilizado única y exclusivamente con las subportadoraspiloto. La figura 6.1 muestra la salida del mapper BPSK cuando a la entrada se le mete un “0” o un “1” y su constelación correspondiente. Figura 6.1: Mapper BPSK. Receptor En el receptor simplemente se realizará el proceso inverso. Si a la entrada del de-mapper se tiene s = 1 + j0 a la salida se tendrá un 0 y un 1 para el otro caso de entrada. 6.3.2. DPSK-M Transmisor Para este esquema de modulación diferencial se tendrán tres variantes: M = 2, 4 o 8 según se tenga una modulación DBPSK, DQPSK o D8PSK, respectivamente. La modulación por desplazamiento de fase diferencial (DPSK) es una forma común de modulación de fase que lleva información por el cambio de fase de onda 82 portadora. En la figura 6.2 se puede ver para los distintos esquemas de modulación las diferentes entradas y salidas del mapper. (a) Mapper DBPSK. (b) Mapper DQPSK. (c) Mapper D8PSK. Figura 6.2: Distintos esquemas de modulación. La señal modulada para los casos DBPSK y DQPSK se pueden ver en la figura 6.3. Para el caso DBPSK, cuando se envı́a un “1” se añaden 180o a la fase actual de la onda portadora; y si se envı́a un “0” se añadirán 0o a la actual fase. Para el caso de la DQPSK, los desplazamientos de fase serán 0o , 90o , 180o o -90o en el caso de que se envı́e “00”, “01”, “11” o “10”, respectivamente. En ambos casos se supone que la fase de referencia de partida es de 0o . Figura 6.3: Señales moduladas para los casos DBPSK y DQPSK. 83 Receptor En el receptor, el de-mapper realiza el proceso inverso según varı́e la fase de la portadora respecto la fase actual de partida. Por ejemplo, ver la figura 6.4. Figura 6.4: De-mapper DBPSK. Si en este caso la fase de referencia de partida es 0o , si se produce un cambio de fase de 180o en la fase de la portadora es que se ha transmitido un “1”. A continuación, como se vuelve a producir un cambio de fase de 180o , se deduce que se ha vuelto a transmitir un “1”. Posteriormente, en el siguiente ciclo de reloj se ve que la fase ha variado 0o , por tanto se ha transmitido un “0”. Y ası́ sucesivamente. Nota: tanto en el transmisor como en el receptor, la modulación diferencial (DPSK) necesita de un bit o un sı́mbolo de partida, según sea el Tx o el Rx, respectivamente. Esto es ası́ porque la modulación diferencial depende del cambio de fase que se haya producido respecto del sı́mbolo anterior, de ahi la importancia que siguen los pilotos, cuyo función es la de marcar la referencia de fase. Los pilotos evidentemente cuando se modulen no seguirán una modulación diferencial. En el receptor cuando se proceda a la demodulación, una vez que se hayan obtenidos los datos a partir del piloto, éste se puede desechar. 84 6.4. Prefijo cı́clico La necesidad de introducir un prefijo cı́clico en los sı́mbolos OFDM se podrı́a decir que tiene su “origen” en el ISI (Interferencia entre sı́mbolos). Ya se explicó en el apartado 1.2.1, pero a modo de resumen, la aparición del ISI es debido a los efectos producidos por los ecos del canal, es decir, al transmitir una señal, en el receptor recibiré dicha señal varias veces en distintos instantes de tiempo y con distintos niveles de potencia. Figura 6.5: Existencia de ISI. En la figura 6.5 se puede apreciar lo anteriormente explicado: se transmiten sı́mbolos de duración TS por sı́mbolo. La señal llega en un tiempo ⌧0 pero por los efectos del canal llega repetida dos veces con un retraso ⌧1 y ⌧2 . Para poder recuperar la información debido a los efectos del ISI ( InterSymbol Interference), TS debe ser mucho mayor que la diferencia entre el primer y último eco, es decir, ⌧M AX . Sin embargo, aunque la ISI es menor, seguirá existiendo. Posible solución: introducir un periodo de guarda entre sı́mbolos. (Ver figura 6.6) 85 Problema: esta solución plantea el problema del ensanchamiento del espectro y la pérdida de capacidad de transmisión. Figura 6.6: Introducción de un periodo de guarda. Una variante a la solución planteada anteriormente y que soluciona el problema del ensanchamiento del espectro es la adición de un prefijo cı́clico (Ver figura 6.7). En el dominio del tiempo (después de la IFFT), se toman las últimas NCP muestras, y se copian al principio. Figura 6.7: Inserción de un prefijo cı́clico CP. La inserción del prefijo cı́clico tiene la misma función que el intervalo de guarda: elimina el ISI. Sin embargo, a diferencia de éste último, no aumenta el espectro, pero, plantea el problema de que al transmitir más muestras de las necesarias se está perdiendo capacidad de transmisión (ver figura 6.8). 86 Figura 6.8: Prefijo cı́clico: no se aumenta el espectro pero se pierde capacidad de transmisión. 87 6.5. 6.5.1. Otros códigos utilizados Creación de la “macro-cabecera” Se genera una trama PHY Frame con unos MSDU y MAC HEADER determinados (llamando a la función tx.m). De la trama obtenida nos quedamos únicamente con la cabecera o header, y concatenamos esta última el no de veces indicado por “Nh”. 1 function [ s_tx , h_tx ] = hgen ( Nh ) 2 3 4 5 6 7 8 9 %% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % Función que se encarga de generar una trama PHY Frame, % se queda solo con la parte correspondiente a la % cabecera, y posteriormente concatena su copia Nh veces. % %% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % 10 11 12 13 MSDU = randi ([0 1] ,1 ,3360); MH = randi ([0 1] ,1 ,54); s_tx = zeros (1 , Nh *560*2); % Nh: Número de cabeceras 14 15 [ s , h_tx ] = tx ( MSDU , MH , 0 ); 16 17 18 % Se tendrá solo en cuenta la parte de la header. s = s (1:560*2); 19 20 21 22 for k =1: Nh s_tx (560*2* k -560*2+1:560*2* k ) = s ; end 23 24 end 6.5.2. 1 Representación en el dominio del tiempo y frecuencia function [ ] = pic ( x ) 2 3 4 5 %% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % Función que se encarga de la representación de la señal y 88 6 7 8 9 10 11 % el espectro. % % x: Señal de entrada que lo forma el conjunto de símbolos % OFDM (Phyframe). % %% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % 12 13 14 15 16 17 18 19 20 21 22 % Representación en el dominio del tiempo. Nsymb = length ( x )/560; % Numero de simbolos OFDM Tsymb = 2240 e -6; % Intervalo de símbolo (s). Tmax = Tsymb * Nsymb ; % Tiempo total del numero de símbolos. t = Tmax / length ( x ) : Tmax / length ( x ) : Tmax ; figure (1) plot (t , abs ( x )); title ( ’ Se~ n al OFDM ’) xlabel ( ’t ( seg ) ’) ylabel ( ’s ( t ) ’) 23 24 25 26 27 28 % Representación en el dominio de la frecuencia. Ts = Tsymb /560; % Tiempo por muestra. Fs = 1/ Ts ; %Frecuencia de muestreo. figure (2) pwelch (x ,[] ,[] ,[] , Fs , ’ centered ’ ); 29 30 31 32 33 end 89 6.6. Peculiaridad de la señal y la IFFT en PRIME v1.3.6 Una de las peculiaridades en la especificación PRIME v1.3.6 está en parte que viene antes y después de realizar la IFFT. Observar la figura 6.9. (a) Señal en banda base antes de IFFT. (b) Señal subida en frecuencia antes de IFFT. Figura 6.9: Peculiaridad PRIME v1.3.6: señal e IFFT. Ambos modelos son equivalentes desde el punto de vista funcional. Sin embargo, en la figura (a) la señal de interés se encuentra en banda base antes de realizársele la IFFT. Posteriormente a la IFFT se sube en frecuencia mediante un mezclador, sobre una portadora a 65.4295 Khz. Nótese que se realiza una IFFT de 128 puntos. Por otro lado se tiene el modelo (b), en el que la señal ya está subida en frecuencia y está muestreada a una frecuencia de 250 Khz, todo esto antes de haber 90 realizado la IFFT. Aquı́ la IFFT es de 512 puntos, pues se necesitan 97 subportadoras por un lado y las correspondientes 97 pero complejas conjugadas por otro lado. Una IFFT de 128 habrı́a sido insuficiente por eso es necesaria una de 512 (Ver capı́tulo 2.4.6 para apreciar la disposición de las subportadoras). La especificación PRIME v1.3.6 hace uso precisamente del modelo (b), que como ventaja principal es el ahorro en el uso de un mezclador. 91