Capítulo 5: Diseño de un Predistorsionador basado en Series de Volterra. Análisis por simulación Capítulo 5: Diseño de un Predistorsionador basado en Series de Volterra. Análisis por simulación 5.1 Introducción Como propusimos en la introducción de este trabajo y se ha repetido en varias ocasiones a lo largo de los Capítulos anteriores, el objetivo principal de este Proyecto Fin de Carrera sería implementar un predistorsionador para, posteriormente, mediante simulación en MatLab, comprobar la bondad del mismo. Hasta ahora, sin embargo, los Capítulos 2, 3 y 4 se han limitado a exponer una serie de conceptos previos necesarios para asimilar de una forma correcta la idea original del predistorsionador que se propondrá y su funcionamiento, tratando de exponer conceptos tan importantes como los fundamentos de la modulación OFDM, el canal no lineal con memoria y algo, más o menos amplio, sobre la linealización y, en particular, los métodos actuales de predistorsión. Será en este apartado donde haremos uso de todo lo expuesto hasta ahora para presentar un Diseño de Predistorsionador basado en Series de Volterra para sistemas OFDM. Pasemos a verlo. En este Capítulo, proponemos una solución general para compensar el efecto de la no linealidad de un amplificador de potencia (HPA) con efectos de memoria en sistemas OFDM en el lado del transmisor. Usaremos el Error Cuadrático Medio (MSE) para obtener los coeficientes del predistorsionador, el cual es modelado con una serie de Volterra simplificada y finita. Se usará una estructura en bucle cerrado general para minimizar el coste computacional. Las señales entrada y salida del sistema no lineal con memoria se supondrán accesibles, y una solución de mínimos cuadrados será la que nos permita calcular el kernel de la serie de Volterra que representa al predistorsionador. Una vez que el kernel se ha obtenido, cuando las señales pasen por el sistema en cascada del predistorsionador y el HPA, tendremos un resultado con características lineales. La ventaja de este método es que no se asume ningún tipo en particular de modelo para el HPA. 58 Capítulo 5: Diseño de un Predistorsionador basado en Series de Volterra. Análisis por simulación Para demostrar la bondad del sistema propuesto, se realizará posteriormente simulación mediante MatLab. En particular, la mejora en la reducción del recrecimiento espectral y la mejora en la BER se comprobará para un HPA modelado según Saleh. 5.2 Diseño de un Predistorsionador basado en serie de Volterra simplificada El HPA de la mayoría de los sistemas de comunicaciones son inherentemente no lineales. Es bien conocido que hay una relación de proporcionalidad inversa entre la eficiencia de potencia de un HPA y su linealidad. Así, desde el punto de vista de la eficiencia, es necesario que los HPAs sean no lineales. Esta no linealidad causa problemas, especialmente en aplicaciones de gran ancho de banda que usan sistemas con señales que no mantienen constante la envolvente, como DAB, OFDM y WCDMA. Los efectos de no linealidades normalmente ocurren en la zona de frecuencia intermedia (FI) y de radio frecuencia (RF) en los sistemas de comunicación. Sin embargo, en nuestro caso, el esquema del predistorsionador se basará en la representación en banda base. De este modo, las imperfecciones del HPA se tratarán desde el punto de vista de una representación en banda base equivalente. Esto es una suposición extendida en la materia, debido a las limitaciones relacionadas con la velocidad del convertidor A/D y los requisitos del procesamiento en tiempo real. Como ya comentamos, en este proyecto se empleará una serie de Volterra finita para considerar la función del predistorsionador, debido a su aplicabilidad general. En el dominio de tiempo discreto, una serie de Volterra de tercer orden para un sistema causal y de memoria finita puede ser escrito como sigue: N −1 N −1 N −1 N −1 N −1 N −1 y(n) = ∑ hk x(n − k ) + ∑∑ hk ,l x(n − k ) x * (n − l ) + ∑∑ ∑ hk ,l , m x(n − k ) x(n − l ) x * (n − m) k =0 (1) ( 2) k =0 l =0 ( 3) k =0 l =0 m =0 [5.1] donde N es la longitud de memoria del sistema discreto; x(n) e y (n) son la entrada y la (1) ( 2) salida, respectivamente; y hk , hk ,l , hk ,l , m ( 3) son los kernels de la serie de Volterra en tiempo discreto de orden 1, 2 y 3, respectivamente; y * denota el complejo conjugado. Es bien sabido que la componente par de la intermodulación no interfiere con la banda de señal para un canal no lineal pasobanda y los coeficientes de la serie de Volterra pueden suponerse simétricos sin pérdida de generalidad. Entonces, sólo la parte impar de la serie de Volterra será considerada. Al igual que un sistema LTI se caracteriza completamente a partir de su respuesta al impulso, un sistema de Volterra se considera caracterizado a partir del conocimiento de su kernel. La desventaja de los sistemas que emplean series de Volterra es su complejidad computacional y el gran número de parámetros que hay que calcular, muchos de ellos innecesarios. El objetivo de la parte computacional es la generación de los coeficientes relacionados con la no linealidad, es decir, los términos cruzados, lo que restringe la aplicabilidad de este método en el mundo real. Para poder combatir la gran complejidad computacional del predistorsionador, se ha adoptado un modelo de Volterra simplificado, basado en la estructura de 59 Capítulo 5: Diseño de un Predistorsionador basado en Series de Volterra. Análisis por simulación Hammerstein, el cual es una cascada de una no linealidad sin memoria, modelada como K v(n) = ∑ b j x j (n) y un filtro FIR para modelar la memoria, con función de transferencia j =1 Q −1 H ( z ) = ∑ ai z −i . La relación entrada-salida para un predistorsionador con esta i =0 arquitectura se describe usando dos representaciones equivalentes: Q −1 d ( n) = ∑ a i i =0 K ∑ j =1, oddpart b j x * (n − i ) x(n − i ) j −1 = Q −1 K ∑ ∑h j =1,oddpart i = 0 j ,i j −1 x * (n − i) x(n − i) [5.2] donde el lado derecho se refiere como el modelo de Volterra simplificado. En [5.2], Q es la memoria discreta del sistema, K es el orden de la no linealidad y * denota el complejo conjugado. El lado de la izquierda de [5.2] hace referencia a considerar un “precompensador” basándose en la estructura de Hammerstein, donde a i y b j denotan los coeficientes del polinomio no lineal (que representan al HPA) y del filtro (que modela los efectos de memoria), respectivamente. Sin embargo, en este proyecto consideraremos la no linealidad y el efecto de memoria de forma conjunta, según: B B B B h j ,i = ai ⋅ b j [5.3] En esencia, el método propuesto explota la equivalencia del lado derecho de la representación [5.2], el modelo simplificado de Volterra, el cual describe la estructura de Hammerstein como caso especial. Al ser una representación más general de sistemas no lineales, es aplicable a un rango mayor de modelos que capturan la inversa de un HPA. Sin embargo, esto se consigue a expensas de tener que identificar un número mayor de coeficientes. La ecuación [5.2] se puede escribir en forma matricial como: d ( n) = H ⋅ X T ( n) [5.4] donde d (n ) es la señal del predistorsionador, H es el kernel de la serie de Volterra que configura al predistorsionador, y X (n) es el vector de entrada. Los términos H y X (n) se definen como: [ H = h0,1 , h1,1,..., hQ −1,1 , h0, K , h1, K , h2, K ,..., hQ −1, K [ ] [5.5] X ( n) = x(n), x(n − 1),..., x(n − Q + 1), x(n) x * (n),..., x (n − Q + 1 x * ( n − Q + 1) 2 2 ] [5.6] Debido a la simetría, el número total de coeficientes en el modelo simplificado de Volterra puede representarse como: ⎛ K ⎞ Lsmvtcoeff = ⎜ ⎣ ⎦ + 1⎟ × Q ⎝ 2 ⎠ [5.7] 60 Capítulo 5: Diseño de un Predistorsionador basado en Series de Volterra. Análisis por simulación Es difícil determinar qué modelo de HPA es el más apropiado, ya que eso depende de factores como el tipo de HPA y el formato del flujo de datos que se quiere transmitir. Es más, el HPA más eficiente puede no ser el más apropiado para realizar una predistorsión. Así pues, es de esperar que el predistorsionador basado en Volterra considerado ofrezca una solución general para compensar la no linealidad de cualquier HPA con efecto de memoria. Para identificar al predistorsionador, una estructura realimentada en bucle cerrado general como la de la Figura 5.1 será la utilizada: Figura 5.1: Esquema general de la arquitectura en bucle cerrado usado en la implementación del algoritmo propuesto. En este arquitectura, x(n) e y (n) representan las señales de entrada y de salida, respectivamente, de la cascada formada por el predistorsionador y el HPA. El sistema del lazo de realimentación, Predistorter Training B, tiene como entrada v (n) y como salida d (n ) . El predistorsionador real, Predistorter A, tiene x(n) como entrada y d (n ) como salida. Predistorter A y Predistorter Training Part B tienen la misma estructura. Idealmente, la salida del sistema debería ser: y ( n) = x ( n) [5.8] cuando d (n ) se hace igual a dˆ ( n ) , y se consigue que el error e(n) = d (n ) - dˆ ( n ) =0. La entrada y la salida del HPA son accesibles para encontrar Predistorter A usando Predistorter Training Part B. El objetivo es encontrar un comportamiento lineal entre la cascada formada por Predistorter A y HPA, encontrando con Predistorter Training Part B la función de transferencia inversa del HPA con memoria y no lineal. La entrada y salida de Predistorter A están relacionadas según [5.2]. Por conveniencia a la hora de implementar el algoritmo, [5.2] la escribiremos en forma matricial como: d = X ⋅H [5.9] donde d es la salida de Predistorter A, H es el kernel de Volterra de Predistorter A y X es el vector de entradas; d , H y X se definen como: d = [d (0),..., d ( N − 1)] T [5.10] 61 Capítulo 5: Diseño de un Predistorsionador basado en Series de Volterra. Análisis por simulación [ H = h1 , 0 ,..., h1 , Q − 1 ,..., h K , 0 ,..., h K , Q − 1 ] T [ X = X 1,0 ,..., X K ,0 ,..., X j ,i ,..., X 1,Q −1,..., X K ,Q −1 donde [ [5.11] ] ] X j ,i = x j ,i (0),..., x j ,i ( N − 1) ; el tamaño de T [5.12] d, H y X es N ×1 , ⎛ ⎛ ⎣K ⎦ ⎞ ⎞ ⎛⎛ K ⎞ ⎞ ⎜⎜ ⎜ + 1⎟ × Q ⎟⎟ × 1 y N × ⎜⎜ ⎜ ⎣ ⎦ + 1⎟ × Q ⎟⎟ × 1 , respectivamente. ⎠ ⎠ ⎝⎝ 2 ⎠ ⎝⎝ 2 ⎠ Como Predistorter A y Predistorter Training Part B tienen la misma estructura, la relación entre la entrada y la salida de Pradistorter Training Part B es: Q −1 dˆ (n) = ∑ ci i =0 K ∑ j =1, oddpart d j v * (n − i ) v(n − i ) j −1 K = Q −1 ∑ ∑h j =1.oddpart i = 0 j ,i v * (n − i ) v(n − i ) j −1 [5.13] que se puede poner en forma matricial como: dˆ = V ⋅ H [5.14] donde d̂ es la salida de Predistorter Training Part B, H es el kernel de Volterra de Predistorter Training Part B, y V es el vector de entradas; d̂ , H y V se definen como: [ ] T dˆ = dˆ (0),..., dˆ ( N − 1) [5.15] [ H = h1 , 0 ,..., h1 , Q −1 ,..., h K , 0 ,..., h K ,Q −1 [ V = V1,0 ,...,VK , 0 ,...,V j ,i ,...,V1,Q −1,...,VK ,Q −1 donde [ ] T [5.16] ] ] V j ,i = v j ,i (0),..., v j ,i ( N − 1) ; el tamaño de T [5.17] d̂ , H y V es N ×1 , ⎛ ⎛ ⎣K ⎦ ⎞ ⎞ ⎛⎛ K ⎞ ⎞ ⎜⎜ ⎜ + 1⎟ × Q ⎟⎟ × 1 y N × ⎜⎜ ⎜ ⎣ ⎦ + 1⎟ × Q ⎟⎟ × 1 , respectivamente. Las entradas de V se ⎠ ⎠ ⎝⎝ 2 ⎠ ⎝⎝ 2 ⎠ calculan como: v j , i ( n) = y * ( n − i ) y ( n − i ) j −1 [5.18] Asumiendo que el sistema se linealiza, i.e. d = dˆ , [5.9] se puede escribir como: d =V ⋅H [5.19] La solución de mínimos cuadrados para [5.19] sería: 62 Capítulo 5: Diseño de un Predistorsionador basado en Series de Volterra. Análisis por simulación H = (V HV ) −1V H d [5.20] donde el superíndice H denota el conjugado. Una vez que H se obtiene usando [5.20] en la fase del Predistorter Training Part B, ya tenemos Predistorter A. En el modo de operación, cuando la señales pasen a través de las cascada predistorsionador-HPA con memoria, el sistema completo consigue una característica lineal sin efectos de memoria. P P 5.3 Implementación en MatLab Con el fin de evaluar el comportamiento del predistorsionador descrito, vamos a tratar de simular el comportamiento del algoritmo y de la estructura de lazo cerrado descritos previamente mediante el paquete matemático MatLab 6.5. En este apartado listaremos las funciones creadas, junto con sus aspectos relacionales y trataremos de comentar qué parte del algoritmo realiza cada una de las funciones. Para ver el listado de las funciones, nos remitiremos al Anexo I, en donde está el código de cada archivo de MatLab, correctamente comentado. Nombre : gen_datos_ensayo Es una función encargada de generar la señal de salida de un modulador 16QAM seguido de una modulación OFDM de 1024 portadoras. A continuación, se le aplica un upsamplig de 8 y se pasa la señal por un filtro raíz de coseno alzado. Necesita como parámetro de entada el número de símbolos OFDM que queremos generar. Como salida, ofrece la señal tras el filtro raíz de coseno alzado y la cadena de símbolos 16QAM generada. U U Nombre : qam16 Función que genera una cadena de símbolos 16QAM a partir de una cadena de bits. U U Nombre : create_v_k_l Función que se encarga de implementar la Eq. [5.18]. U U Nombre : create_V_k_l_N Función que implementa cada uno de los elementos del vector expuesto en Eq. [5.17]. U U Nombre : create_V Función que implementa la Eq. [5.17]. U U Nombre : HPA Función que simula el comportamiento de un HPA sin memoria acorde al modelo de Saleh. Se supondrá siempre que se usa un control automático de ganancia (CAG) para que la señal mantenga su potencia constante en todo su trayecto. Se deja como comentario las instrucciones necesarias para obtener la gráfica que relaciona la amplitud de entrada con la de salida, para comprobar el grado de no linealidad con el que se esta trabajando. U U Nombre : canal_memoria Función que simula memoria de un dispositivo con memoria. U U 63 Capítulo 5: Diseño de un Predistorsionador basado en Series de Volterra. Análisis por simulación Nombre : predistorter Función que genera el kernel de la serie de Volterra, núcleo del predistorsionador propuesto, según la Eq. [5.20]. U U Nombre : kernel_simb_obtención Es el script principal de la parte del algoritmo encargada de caracterizar la parte de entrenamiento y obtención de los coeficientes del kernel de Volterra. El procedimiento de obtención de los coeficientes del kernel de Volterra consistirá en hacer pasar sucesivamente una trama de cierto número de símbolos OFDM a través del sistema no lineal. A continuación, se procede a hallar el kernel de Volterra para esa trama, según [5.20]. Este proceso se repetiría un número de veces que se estime adecuado, con el fin de obtener un kernel final, resultado del promediado de cada kernel obtenido en cada una de las iteraciones. Una vez obtenido el kernel final, se pasaría a la fase de análisis de funcionamiento del predistorsionador para una señal aleatoria de un tamaño suficientemente grande, como para calcular la BER o poder observar los efectos de recrecimiento espectral. Se pueden seleccionar parámetros como el número de símbolos OFDM por iteración que se quiera realizar, o el propio número de iteraciones que se quieran realizar para conseguir un promedio de los coeficientes de una manera más eficiente. U U Nombre : canal_gaussiano Función que simula un canal de ruido blanco, aditivo y gaussiano. U U Nombre : serializa Función auxiliar que transforma una matriz en un vector. U U Nombre : decisor_QAM16 Función que simula un decisor 16QAM. U U Nombre : plataforma_simulacion16QAM_1024OFDM Se trata del archivo principal de pruebas del algoritmo predistorsionador. Con este archivo podremos hallar la BER, observar el recrecimiento espectral, observar las señales de entrada/salida a/de la no linealidad,... Se requiere que se haya calculado un kernel con el archivo kernel_simb_obtención, y se haya guardado previamente. Este kernel se cargará al ejecutarse plataforma_simulacion16QAM_1024OFDM. También debemos seleccionar el número de símbolos OFDM que queremos usar en la simulación y, en su caso, debemos introducir el vector con las relaciones Eb/No con las que queremos calcular la BER. Tiene muchas opciones de gráficas que están, en algunos casos, comentadas. Si se está interesado en alguna gráfica en concreto, habrá que quitar los comentarios antes de ejecutar. U U Como se puede comprobar, no existe un entorno gráfico para realizar las simulaciones, sino que se ha preferido dejar los archivos principales abiertos, para que sus parámetros puedan ser cambiados directamente en el código. De esta forma, si bien el entorno de usuario puede parecer a priori más fácil de utilizar, se pretende tener mayor control sobre los parámetros elegidos y resultantes en cada simulación y, sobre todo, tener mayor conciencia de los resultados que se van a obtener en cada simulación. 64 Capítulo 5: Diseño de un Predistorsionador basado en Series de Volterra. Análisis por simulación 5.4 Resultados de Simulación y Análisis En esta sección, usaremos las funciones de MatLab descritas anteriormente para comprobar el funcionamiento del algoritmo propuesto teóricamente. Usaremos el modelo de Wiener para representar a un HPA no lineal con efectos de memoria ( i.e, cascada de sistema no lineal con filtro FIR). El correspondiente predistorsionador se describe como el kernel de Volterra equivalente de un modelo de Hammerstein. Emplearemos una modulación 16-QAM, que será alimentada por una cadena de 0s y 1s aleatoria. En la práctica, la señales en banda base de OFDM se generan usando la transformada inversa de Fourier en tiempo discreto (IDFT). En nuestra simulación, emplearemos un modulación de 1024 subportadoras que, aunque no corresponda a ningún caso concreto de las normas citadas en al Capítulo 2, sirve como caso general para todas ellas. Así, en la implementación del algoritmo, emplearemos IFFT/FFT de 1024 puntos. Para limitar la banda de frecuencia empleada por el transmisor y eliminar la ISI, realizaremos un sobremuestreo de 8 y pasaremos la señal en tiempo por un filtro coseno alzado de roll-off igual a 0.5. Se asume un canal con ruido aditivo, blanco y gaussiano (AWGN). La parte no lineal sin memoria del HPA elegida para esta simulación es el modelo de Saleh para un tubo de onda viajera (TWT). En este punto cabe decir que aunque los efectos de no linealidades comentados en el Capítulo 3 de este proyecto hacían referencia en su mayor parte a no linealidades y efectos de memoria de amplificadores a semiconductor, los resultados proporcionados por el modelo de Saleh para TWT son igualmente válidos para comprobar el funcionamiento de nuestro predistorsionador, pues las curvas de comportamiento que propone Saleh se dan de una manera bastante fidedigna en cualquier tipo de amplificador de potencia. Sólo cabría decir que, para el caso de amplificadores a semiconductor, la distorsión AM/PM es poco significante. Las funciones A(.) y φ(.) en el modelo de Saleh de amplitud-fase son: α a r (t ) 1 + β a r 2 (t ) αφ r 2 (t ) φ [r (t )] = 1 + βφ r 2 (t ) A[r (t )] = [5.21] [5.22] donde α a , β a , αφ y βφ son constantes y r(t) es la señal de entrada normalizada. Valores típicos para estas constantes son α a =2.0, β a =1.0, αφ =π/3 y βφ =1.0. El sistema LTI que realiza los efectos de memoria se implementa con un FIR con coeficientes [0.7692, 0.1538, 0.0769]. 5.4.1 Resultados en cuanto a degradación de la constelación (warping) Es bien conocido que la distorsión AM/AM y AM/PM están relacionadas con la generación de un energía no querida tanto en la banda de trabajo como fuera de ella. La energía en la banda de trabajo causa distorsión de la señal transmitida y degrada la BER del sistema. Examinar el patrón de dispersión de la señal recibida es una buena forma de estimar la degradación sufrida debido al fenómeno de warping. Las figuras siguientes, Figura 5.2 y Figura 5.3, muestran los resultados de warping de la constelación para una modulación 16-QAM y una OFDM de 1024 subportadoras sin y con predistorsión, para un IBO=8 dB. El kernel de Volterra se obtuvo mediante el promediado de 50 65 Capítulo 5: Diseño de un Predistorsionador basado en Series de Volterra. Análisis por simulación iteraciones, usando una trama de un símbolo OFDM, con K=3 (orden la no linealidad) y Q=3 (longitud de la memoria de la no linealidad). Éste será el kernel que usaremos, siempre que no se diga lo contrario. Figure 5.2: Distorsión de la modulación 16QAM_1024OFDM a su paso por un canal no lineal con memoria. Apreciamos la dispersión de los puntos recibidos y el rotado. Figure 5.3: Constelación recibida tras el paso de la señal predistorsionada por una canal no lineal con memoria. Observamos la mejora apreciable con respecto a la gráfica anterior. Sin embargo, se puede observar una leve rotación, de signo contrario a la anterior. Los problemas de escalado son prácticamente solventados por el CAG. La dispersión de los puntos de la constelación es el resultado de la interferencia en la banda de trabajo. Observamos que el resultado obtenido es bastante similar al que produce un canal AWGN, incluso cuando este último no está presente en este caso. Cuando el predistorsionador no actúa, la interferencia es tan grande que los puntos de la constelación, en cuanto a dispersión, están muy afectados. De la Figura 5.3, podemos ver que la distorsión AM/AM se elimina de una manera bastante eficiente usando el esquema de algoritmo propuesto. El muy leve rotado y el escalado (a pesar de usar CAG en la simulación) sacan a la luz el hecho de que el esquema propuesto tiene una pequeña ambigüedad a la hora de multiplicar para identificar los coeficientes complejos 66 Capítulo 5: Diseño de un Predistorsionador basado en Series de Volterra. Análisis por simulación del kernel de Volterra. Sin embargo, este problema se soluciona fácilmente con un control automático de ganancia mejorado y con algoritmos para recuperar la fase. 5.4.2 Resultados en cuanto a BER La probabilidad de error de bit, o BER, es una métrica ampliamente usada para confirmar la bondad de un sistema de transmisión digital. Los diagramas en donde se muestra la BER de los sistemas es una herramienta que se suele usar también para comprobar y cuantificar un predistorsionador. En esta sección, evaluaremos mediante simulación la BER de nuestro sistema OFDM de 1024 subportadoras sobre 16-QAM. El canal inalámbrico lo supondremos AWGN. Para poder comprobar si nuestro algoritmo funciona y en qué medida, realizaremos medidas de BER suponiendo HPA lineal y no lineal, predistorsionador actuando y no actuando, para distintos valores de IBO. La siguientes figuras, Figura 5.4 y Figura 5.5, muestran las curvas de la BER en función de la relación señal a ruido (SNR) Eb/No, para un IBO=8 dB y IBO=5 dB, respectivamente. Figura 5.4: Diagrama de BER frente a Eb/No. Podemos observar la mejora que aporta el uso del predistorsionador para el canal no lineal con memoria con respecto a la BER del sistema, para IBO=8, K=3, Q=3. 67 Capítulo 5: Diseño de un Predistorsionador basado en Series de Volterra. Análisis por simulación Figura 5.5: Diagrama de BER frente a Eb/No, ahora para el caso IBO=5. Vemos cómo la mejora no es tan notable como para puntos de trabajo más lineales (caso anterior de IBO=8). Esto es una prueba de lo sensible que es la modulación OFDM a bajos IBO, debido a su alto PAPR. En cada figura, la curvas nombradas como “sin pred”, “con pred” y “lineal” representan los resultados de BER para un HPA no lineal, un HPA no lineal con predistorsión y un HPA ideal, respectivamente. El número de puntos de entrenamiento determinan el tamaño de la matriz V usada para calcular el kernel de Volterra H en [5.20]. En las simulaciones realizadas, para determinar los coeficientes del predistorsionador, se empleó la media de 50 ejecuciones del algoritmo, usando distintas tramas OFDM de un único símbolo OFDM, para mejorar la precisión a la hora de identificar. También se probó usar más símbolos en cada trama de identificación, pero el incremento de tiempo en el cómputo de los coeficientes no se veía respaldado por un incremento de precisión y, por tanto, no se conseguían resultados de BER mejores. A partir de la figuras de esta sección, se puede ver que se consigue una mejora significativa en sistemas predistorsionados con respecto a los no predistorsionados. Se puede ver que para SNR de 10dB, el sistema compensado alcanza los 3e-2 y 6e-3 para IBOs de 5 dB y 8dB, respectivamente. También se puede ver que se consiguen mejores resultados para mayores IBO, lo cual es intuitivo, ya que IBOs mayores corresponden a puntos de operación más lineales. Quizá en este punto sería conveniente añadir que, mientras que para IBO=8 dB la mejora es muy significativa, con tan sólo 3dB menos de IBO, los resultados son significativamente más pobres. Esto está relacionado con lo ya comentado acerca del alto PAPR de los sistemas OFDM. Para ver la influencia en la BER a medida que cambia el IBO, se realizaron simulaciones para unas ciertas características pero modificando el valor del IBO en cada una de las ejecuciones. Los resultados los vemos a continuación, Figura 5.6. 68 Capítulo 5: Diseño de un Predistorsionador basado en Series de Volterra. Análisis por simulación Figura 5.6: BER para IBOs 12, 11, 10, 9, 8, 7, 6, 5 dB. Vemos cómo a partir de IBO=9 dB, la mejora no es tan buena. Como vemos, hasta IBO=9 dB, los resultados se ajustan bastante bien a los resultados obtenidos con canal lineal. Sin embargo, el empobrecimiento de la mejora comienza al pasar de IBO=8 dB, notándose la reducción de la eficacia decibelio a decibelio. Como ya hemos comentado, esto es debido al alto PARP de la modulación OFDM, que hace que, para IBOs bajos, la señal se meta en zonas de mucha no linealidad del amplificador, de modo que los resultados de salida son demasiado distintos a la señal de entrada. Esto tiene dos consecuencia enlazadas. Por una parte, a la hora de identificar los coeficientes en la etapa de estimación del kernel, aunque éstos atienden a un patrón que converge y, por tanto, se puede estimar un kernel mediante promediado. Estos coeficientes estimados no son lo suficientemente buenos como para realizar una buena preditorsión, ya que en el proceso de ajuste por mínimos cuadrados, las muestras de salida están muy dañadas con respecto a las de entrada, por lo que el algoritmo intenta ofrecer siempre sus mejores resultados, sin llegar a obtenerse resultados de predistorsión adecuados, ver Figura 5.7. 69 Capítulo 5: Diseño de un Predistorsionador basado en Series de Volterra. Análisis por simulación Figura 5.7: Las figura representan el módulo y la fase de los coeficientes del kernel, H, para cada una de las iteraciones en la fase de entrenamiento. Como podemos ver, se produce una cierta convergencia, tanto en módulo como en fase. Es decir, se puede pensar en utilizar el promedio para definir el kernel final. La segunda consecuencia, derivada de la primera, será que, al aplicar el kernel obtenido a la señal, los resultados en cuanto a mejoras no serán tan buenos como para IBOs mayores, ya que los coeficientes calculados no podrán combatir la no linealidad del amplificador de potencia. Figura 5.8 (a) 70 Capítulo 5: Diseño de un Predistorsionador basado en Series de Volterra. Análisis por simulación Figura 5.8 (b) Figura 5.8, (a) y (b): Mostramos la señal a la entrada del sistema, la señal predistorsionada antes de entrar en el HPA y la señal de salida. La gráfica que muestra la relación entrada/salida normalizada se puede ver en la Figura 5.9. Como vemos, la señal de salida, incluso con predistorsión, no es capaz de “seguir” a la señal de entrada. Es decir, los efectos de no linealidad (en este caso no se tiene en cuenta la memoria) impiden que la señal de salida se “adapte” bien, sobre todo, a los picos de la señal de entrada, a pesar de la fuerte predistorsión sufrida por la señal de entrada. Esto es debido a que, al contrario de lo que hace el algoritmo, cuando se trabaja con IBOs pequeños, un aumento desmesurado en la amplitud de la señal de entrada (se produce un efecto similar a aumentar el PAPR, que ya hemos dicho repetidas veces que es muy perjudicial) no repercute en un aumento en la amplitud de la señal de salida. Es por eso por lo que por mucho que la amplitud de entrada crezca, ya no vamos a conseguir un ajuste en los picos a la salida, pues a partir de cierto punto, la característica en amplitud del HPA empieza a ser decreciente, como se puede ver en la Figura 5.9. En cuanto a la fase, también vemos que la correspondencia entre la señal original y la de salida predistorsionada no es muy buena tampoco. Esta figura también nos puede servir para reafirmar lo dicho en cuanto a PAPR. Vemos los picos potencia, relacionados con el módulo, que tiene la señal con respecto a su valor medio. 71 Capítulo 5: Diseño de un Predistorsionador basado en Series de Volterra. Análisis por simulación Figura 5.9: Vemos la relación entrada-salida del HPA utilizado, para IBO=5 dB y IBO=8 dB. Con respecto a la fase, vemos que siempre se añade un cierto desfase entre la entrada y salida. Con respecto a la relación amplitud de entrada / amplitud de salida vemos que, llegados al punto de saturación , i.e. 1 al estar normalizado, la curva comienza a decrecer. Además, podemos comprobar que a menor IBO, la curva presenta un comportamiento menos lineal en su zona creciente, y se va “adentrando” más en su zona decreciente. De esta forma, para IBOs pequeños, la deformación de la señal es muy notable, sobre todo si la señal tiene un rango dinámico más o menos amplio (alto PAPR), pues las “intrusiones” en la zona decreciente serán muy frecuentes. Para identificar los parámetros del predistorsionador, el número de puntos de datos se debe ajustar para conseguir suficiente identificación y velocidad de convergencia. En el caso de las simulaciones expuestas en esta sección, el número de puntos de datos fue de 50 símbolos OFDM, lo equivalente a 51.200 símbolos QAM. Como dijimos, se realizaron 50 iteraciones con una trama de un símbolo OFDM. También se probó con tramas mayores, de 2 y 5 símbolos, pero los resultados a la hora del análisis fueron tan similares que el mayor tiempo empleado en la parte de identificación y el consiguiente incremento en el coste computacional no se justificaban en absoluto. Así mismo, también se probó con menos iteraciones (10, 5 y 3) y una trama de un símbolo, obteniéndose resultados muy aceptables, en comparación con los obtenidos a partir del kernel de 50 iteraciones. De hecho, expondremos la BER conseguida con IBO=8 dB para kernel de 50 iteraciones y para kernel de 3 iteraciones, Figura 5.10, en donde veremos que la similitud es muy aceptable, más aún teniendo en cuenta la reducción en el tiempo de identificación y la reducción del coste computacional. Para HPAs y canales de características que cambien muy rápidamente, 50 iteraciones puede ser demasiado para identificación (si bien es suficiente para el caso de transmisores estables y canales poco cambiantes, como el caso de DVB) aunque los resultados de 3 iteraciones abren un abanico de aplicación mucho mayor. 72 Capítulo 5: Diseño de un Predistorsionador basado en Series de Volterra. Análisis por simulación Figura 5.10: BER para kernel conseguido mediante 3 y 50 iteraciones, IBO=8 dB, K=3, Q=3. Podemos ver que los resultados son muy similares, por lo que el uso del kernel de 3 iteraciones abre el campo de aplicación de este predistorsionador. 5.4.3 Resultados en cuanto a Análisis Espectral Un diagrama de representación espectral es una herramienta útil para revelar el recrecimiento espectral causado por la distorsión no lineal en los sistemas de comunicaciones. Proporciona una buena forma de examinar el nivel de interferencia de canal adyacente (ACI) y la caída espectral de las comunicaciones vecinas, causado por la distorsión de la señal transmitida. En esta simulación, se ha usado un periodograma para estimar la Densidad Espectral de Potencia (PSD), lo que nos permite comparar los espectros para sistemas ideal y no lineal con memoria, con y sin predistorsión. Las características del sistema son las mismas que las de la sección anterior. Usaremos el kernel de 50 iteraciones aunque, como también se ha comprobado, los resultados para el kernel de 3 iteraciones son muy similares. Se puede ver que hay una mejora en el recrecimiento de 4 dB para IBO=5 dB y de 7 dB para IBO=8 dB. Esto significa que si la potencia del HPA no lineal se tiene que limitar por un ACI excesiva, el predistorsionador propuesto permitiría incrementar la potencia sin tener que rediseñar por completo la parte analógica de sistema. Este es un resultado clave de este algoritmo, pues el resultado es aplicable, por ejemplo, a los sistemas DVB, donde la reducción de la ACI es crucial. 73 Capítulo 5: Diseño de un Predistorsionador basado en Series de Volterra. Análisis por simulación Figura 11, (a) y (b): Para el caso de IBO=5 dB la mejora es de sólo unos 4 dB, mientras que para IBO=8 dB, la mejora es ya de unos 7 dB. Como es de esperar, a mayor IBO, i.e más linealidad, se consiguen mejores resultados. 74 Capítulo 5: Diseño de un Predistorsionador basado en Series de Volterra. Análisis por simulación 5.5 Conclusiones Como hemos podido comprobar, la implementación del algoritmo propuesto ha resultado tener puntos muy provechosos para la mejora del sistema OFDM propuesto. Se ha visto la mejora en la BER y en el recrecimiento espectral. Con respecto a este último, hay que resaltar la importancia que puede tener la aplicación de este algoritmo en sistemas en donde la canalización sea muy exigente, como la ya mencionada DVB. Al mismo tiempo, se han comentado algunas de las limitaciones que presenta, como la falta de eficacia para IBOs demasiado bajos, en donde el canal no lineal muestra una distorsión de la amplitud de la señal de entrada muy grande. Además, el siempre presente alto PAPR no contribuye en nada a aliviar esta situación. Otro de los aspectos que cabe señalar en este Capítulo, es la exposición de un método más o menos general de abordar la creación de un predistorsionador: elección del modelo de la no linealidad, optimización para ahorrar cómputo, implementación sobre lenguaje de simulación y, finalmente, simulación. En efecto, mediante simulación también hemos obtenido, incluso, resultados no esperados, como la realización de la parte de entrenamiento del algoritmo con tan sólo 3 iteraciones, en vez de las 50 pensadas, obteniéndose resultados igualmente válidos. De esta forma, el algoritmo se podría proponer para ser usado en sistemas en donde el canal no lineal cambia de manera continuada, pues los cálculos del kernel se podrían hacer rápidamente y de manera solapada a la propia transmisión. En cuanto a la generalidad en el uso de este algoritmo con cualquier HPA, debemos señalar que, si bien las simulaciones se han centrado en un modelo de Saleh al que le sigue un filtro FIR para añadir efectos de memoria, también se realizaron ensayos sin la parte de memoria, con resultados muy aceptables. Figura 12: BER calculada para canal de Saleh con y sin filtro de memoria. En resumen, podríamos decir que el uso de este algoritmo para sistemas OFDM con canal no lineal y con memoria, consigue hacer que podamos trabajar con IBOs más pequeños (hay que recordar que, en general, los sistemas OFDM trabajan con IBOs mayores que otros tipos de modulaciones, como QPSK), lo que supone mayor 75 Capítulo 5: Diseño de un Predistorsionador basado en Series de Volterra. Análisis por simulación eficiencia, obteniendo iguales resultados, tanto en BER como en recrecimiento espectral. De esta forma, solventamos en gran medida el problema que el alto PAPR ofrece a los HPA de los sistemas de comunicaciones inalámbricos modernos, pudiendo aprovechar la gran característica de la OFDM: su resistencia al multitrayecto. 5.6 Referencias A Least-Squares Volterra Predistorter for Compensation of Non-Linear Effects with Memory in OFDM Transmitters , Jian Li, Jacek How. U U Nonlinear Amplifier Effects in Communications Systems , Cheng-Po Liang, Je-hong Jong, Waynw E.Stark, Jack R.East. U U Simulation of Communication Systems , 2 nd Ed. Jeruchim, Balaban, Shanmugan. (c) 2000 Kluwer Academic. U U P P Mastering MATLAB 6: A Comprehensive Tutorial And Reference , Duane Hanselman, Bruce Littlefield, Hanselman, Duane C. Upper Saddle River, N.J.: Prentice Hall, 2001 TU U T T T 76