PRÁCTICA 3: COMUNICACIÓN PASABANDA POP Tecn. Electrónicas y Comun. SISTEMAS DE COMUNICACIONES DIGITALES Práctica 3. Comunicación pasabanda 3.1. Objetivos Aprender a utilizar el Simulink de MATLAB para analizar sistemas de comunicación pasabanda. 3.2. Realización práctica 3.2.1. Sistema de comunicación QPSK En esta práctica vamos a llevar a cabo la implementación de un sistema de comunicación pasabanda QPSK, para posteriormente analizar su rendimiento en función de la relación Eb/N0 en el canal. En la figura siguiente podemos observar el aspecto general del sistema de comunicación. En la figura se puede observar que se dispone de tres bloques principales: el modulador QPSK, el canal AWGN y el demodulador QPSK. Asimismo se han añadido un osciloscopio para observar las señales de interés en el sistema y un dispositivo para determinar la tasa de error de bits del mismo. Igualmente, se ha introducido un texto destinado al usuario para que defina cuatro parámetros requeridos por los distintos modelos del sistema: - fm: Frecuencia de datos - fc: Frecuencia de la portadora senoidal - N: Número de puntos (muestras) que definen un ciclo de la portadora - Eb_No: Relación Eb/N0 en decibelios 3.2.2. Modulador QPSK En la figura siguiente se muestra la estructura del modulador QPSK. Este dispone de un generador de datos aleatorios que, dado que trabajaremos con modulación QPSK, generará números enteros entre 0 y 3 (2 bits). El dato generado, modulará la fase de la señal portadora la cual se genera a partir de 1/9 PRÁCTICA 3: COMUNICACIÓN PASABANDA POP Tecn. Electrónicas y Comun. SISTEMAS DE COMUNICACIONES DIGITALES una tabla de datos que incluye, a lo largo de las distintas posiciones de la misma, una forma de onda senoidal. El tamaño de la tabla será de N puntos, incluyendo cada uno de ellos una muestra del ciclo de la señal senoidal. Por tanto, el bloque tabla (Simulink/Lookup Tables/Direct Lookup Table (n-D)) tendrá una dimensión de 1 y estará inicializada (Table data) a sin(2*pi/N*[0:1:N-1]). Es decir, en las N posiciones se almacena la forma de una onda senoidal cada 2/N radianes. El contador (Simulink/Sources/Counter Free-running) generará un número entero que se irá incrementando cada 1/(N·fc) segundos. Se seleccionará log2(N) como número de bits para el contador, a fin de que éste cuente desde 0 hasta N – 1. El dato de salida del generador aleatorio modificará la fase de la señal portadora añadiendo una cantidad que provocará un salto con respecto a la dirección indicada por el contador, de tal forma que: 1. 2. 3. 4. Si dato = 0 Salto = -N/8 ( = -/4) Si dato = 1 Salto = N/8 ( = /4) Si dato = 2 Salto = 3N/8 ( = 3/4) Si dato = 3 Salto = 5N/8 ( = 5/4 = -3/4) (1) Obsérvese que el salto es proporcional a N. Dado que a continuación se añade una operación módulo N, el valor de salida de este último dispositivo, que controla la posición del dato a suministrar a la salida de la tabla, siempre estará limitado entre 0 y N – 1. Por tanto, dado que N (puntos) coincide con el recorrido de 2 radianes de la onda senoidal, un salto de N/8 se corresponde con /4 radianes. En el modulador se ha incluido también un bloque de visualización de constelaciones (Communications Blockset/Comm Sinks/Discrete-Time Scatter Plot Scope). Se ha utilizado una look-up table para obtener los símbolos de la 2/9 PRÁCTICA 3: COMUNICACIÓN PASABANDA POP Tecn. Electrónicas y Comun. SISTEMAS DE COMUNICACIONES DIGITALES constelación QPSK en función del dato de salida del generador aleatorio, en base a la siguiente asignación: 1. 2. 3. 4. Si dato = 0 Valor = 1 – j Si dato = 1 Valor = 1 + j Si dato = 2 Valor = -1 + j Si dato = 3 Valor = -1 – j (2) Obsérvese que la asignación indicada en la tabla identifica el símbolo que se corresponde con cada dato de salida del generador, de tal forma que el desfase definido anteriormente concuerde con el presentado por el símbolo en la constelación. 3.2.3. Canal ideal con ruido AWGN Se incorpora en el sistema, a fin de evaluar su desempeño, un canal con ruido AWGN (Communications Blockset/Channels/AWGN Channel) que, en este caso, definiremos en base a la relación Eb/N0 presente en el mismo. Como se ha comentado anteriormente, dicho parámetro vendrá dado por la variable Eb_No definida en la línea de comandos del MATLAB. Así, definiremos el modo del bloque a Signal to Noise Ratio (Eb/No), el valor del parámetro Eb/No (dB) lo estableceremos a Eb_No, el número de bits por símbolo será de 2 (cada símbolo transmite 2 bits al tratarse de modulación QPSK), la potencia de la señal de entrada al canal será de 0,5 W, ya que se trata de una señal senoidal continua (sólo se producen saltos de fase, pero en ningún momento se deja de transmitir dicha señal) y la frecuencia de los símbolos la estableceremos a la inversa de la frecuencia de los datos (1/fm). Obsérvese que cada dato suministrado por el generador aleatorio del modulador consiste de un número entero representable por 2 bits (de 0 a 3). 3.2.4. Demodulador QPSK con filtros pasobajo En la figura superior se muestra la estructura del demodulador QPSK implementado haciendo uso de filtros pasobajo digitales para cada uno de los canales correspondientes a los ejes de la constelación (canal X para la parte real y canal Y para la parte imaginaria). Asimismo, se dispone de un generador de la portadora que asumiremos “en fase” con la portadora del transmisor. Nótese 3/9 PRÁCTICA 3: COMUNICACIÓN PASABANDA POP Tecn. Electrónicas y Comun. SISTEMAS DE COMUNICACIONES DIGITALES que, en la práctica, habría de diseñar algún sistema de sincronización del oscilador del receptor con la señal de entrada al mismo. El generador de la portadora suministra al receptor tanto la portadora en fase, como la portadora desfasada 90º. En un sistema de detección coherente, como es este caso, de una señal QPSK, se requiere de dos funciones ortogonales 1(t) y 2(t) para extraer tanto la componente en fase (canal X) como la componente en cuadratura (canal Y): 1 (t ) sin 2f 0t , 2 (t ) cos 2f 0t Si X i jYi e ji cos j sin r (t ) sin( 2f 0t i ) X i sin 2f 0t Yi cos 2f 0t x(t ) X i sin 2f 0t sin 2f 0t Yi cos 2f 0t sin 2f 0t (3) y (t ) X i sin 2f 0t cos 2f 0t Yi cos 2f 0t cos 2f 0t En las expresiones anteriores podemos observar como la señal QPSK está constituida básicamente por dos términos: uno en fase que contiene la información Xi del símbolo y otra en cuadratura que contiene la información Yi de ese mismo símbolo, multiplicados cada uno de ellos por la portadora en fase y en cuadratura, respectivamente. En el receptor, al multiplicar la señal de entrada r(t) por una portadora en fase y otra en cuadratura obtendremos una serie de términos sin2(x), sin(x)cos(x) y cos2(x). Los términos sin(x)cos(x), sin2(x) y cos2(x) pueden representarse como: sin 2 x 12 12 cos 2 x cos 2 x 12 12 cos 2 x (4) sin x cos x sin 2 x 1 2 En el proceso de filtrado-integración, los términos de los productos anteriores correspondientes a la frecuencia 2f0 serán eliminados, por lo que tendremos que: x(t ) filtrado 12 X i , y(t ) filtrado 12 Yi (5) Así, tras el proceso de filtrado obtendremos una estimación de las componentes en fase y en cuadratura de los símbolos transmitidos afectados por el ruido del canal. Se introduce un detector de umbral (bloque Simulink/Math Operations/Sign) para obtener una versión digital (+1, -1) de la señal de salida de cada uno de los filtros. Asimismo, se añade un muestreador (Simulink/Discrete/Zero-Order Hold) para tomar una muestra cada 1/fm segundos. Para obtener un dato entero a partir de las muestras (Xi,Yi) de cada símbolo recibido se aplica la siguiente ecuación matemática: 4/9 PRÁCTICA 3: COMUNICACIÓN PASABANDA S0 1 j d 0 2 S 1 j d 3 1 1 di 2 (2 X i Yi ) 1.5 1 S 1 j d2 1 2 S3 1 j d3 0 POP Tecn. Electrónicas y Comun. SISTEMAS DE COMUNICACIONES DIGITALES (6) En la expresión anterior queda patente que los símbolos recibidos no están ordenados en la misma manera que la asignación dada por (2). Por tanto, se hará uso de una look-up table para obtener una representación idéntica a la de los datos generados en el trasmisor, de tal forma que el contenido de la tabla venga dado por: [3 2 0 1]. Obsérvese que con esta tabla de ordenación, al símbolo de entrada d0 = 2 le es asignado el valor de salida de la tabla 0, y así sucesivamente, obteniéndose por tanto el valor correspondiente al dato transmitido. La estructura del generador de la portadora en fase y en cuadratura se muestra en la figura inferior. Básicamente utiliza la misma estructura que aquella del transmisor, salvo que se genera adicionalmente la portadora en cuadratura, mediante un desfase de N/4 puntos (/2 rad) respecto de la señal en fase, extrayendo simultáneamente dos valores de la misma tabla que contiene la forma de onda de la portadora senoidal. En cuanto a los filtros pasobajo digitales se ha hecho uso de la función incorporada del MATLAB fir1 para determinar los coeficientes de un filtro FIR de orden 100 y frecuencia de corte normalizada fcorte/(fs/2) = fm/(Nfc). Para ello, en el bloque se establecen los coeficientes del numerador a fir1(100-1,fm/(N*fc)), tomándose, por tanto, como frecuencia de corte, fm/2. Se puede hacer uso de la función incorporada freqz para determinar los diagramas de Bode del filtro definido por los coeficientes dados por la función fir1: freqz(fir1(99,fm/(N*fc)),1,N*fc) donde el primer argumento es el vector de coeficientes del numerador, el segundo el vector de coeficientes del denominador (1, pues se trata de un filtro FIR) y el tercer argumento se corresponde con el número total de puntos sobre 5/9 PRÁCTICA 3: COMUNICACIÓN PASABANDA POP Tecn. Electrónicas y Comun. SISTEMAS DE COMUNICACIONES DIGITALES los que se desea evaluar dicha respuesta en frecuencia (a mayor número de puntos, mayor resolución). Por último, cabe indicar que se ha añadido un visualizador de constelaciones para los símbolos recibidos, previo al proceso de digitalización a (+1,-1). Para ello, se han tomado las componentes Xi e Yi de los símbolos recibidos y se ha generado un número complejo de la forma Xi + jYi. A continuación, se ha llevado a cabo un muestreo cada 1/(Nfc) segundos y se han suministrado los símbolos muestreados al visualizador de constelaciones. En dicho bloque, habrá por tanto que establecer el número de muestras por símbolo a Nfc y añadir cierto retardo para seleccionar la muestra a representar, por ejemplo Nfc/4, teniendo en cuenta el retardo inducido a las señales por los filtros digitales. 1. Observar las distintas señales en los distintos bloques del sistema para un tiempo de simulación de 100/fm, estableciendo los distintos parámetros de la simulación (fm, fc, N y Eb_No) a los valores por defecto indicados. 2. Observar las constelaciones tanto de los símbolos transmitidos como de los símbolos recibidos. ¿Qué ocurre cuando establecemos Eb_No a 20? ¿Y cuando le damos un valor de 50 decibelios? Observar también las señales recibidas cuando modificamos la relación Eb/N0. 3. Comparar los datos enviados con los datos recuperados. ¿Qué características podemos encontrar entre ellos? 3.2.5. Cálculo de la tasa de error de símbolo del sistema (SER) Para el cálculo de la tasa de error de símbolo del sistema se ha añadido un bloque de cálculo de errores (Communications Blockset/Comm Sinks/Error Rate Calculation) que toma, como datos de comparación, muestras suministradas por los dispositivos de muestreo dispuestos a su entrada, cada 1/fm segundos, de los datos enviados y recuperados. Los datos recuperados, debido al proceso de detección, estarán retardados un tiempo de símbolo (1/fm), o, equivalentemente, una muestra de los datos enviados, por lo que habrá que indicárselo al módulo de cálculo de errores estableciendo a 1 el parámetro Receive delay. A la salida de este bloque se dispone tanto un display (Simulink/Sinks/Display) para visualizar la tasa de error, como una variable de salida (Simulink/Sinks/To Workspace). Así, los datos de salida del bloque de cálculo de errores, que constituyen ternas con la tasa de error, el número de errores y el número total de símbolos, se mostrarán en el display a la vez que se almacenan en la variable de salida indicada (ErrorVec). 1. Observar la tasa de errores para diferentes valores de la relación Eb/N0 (parámetro Eb_No del espacio de trabajo, Workspace). 2. Crear un script en MATLAB que, utilizando el sistema diseñado en Simulink (denominado, por ejemplo, qpsk.mdl), determine la tasa de error 6/9 PRÁCTICA 3: COMUNICACIÓN PASABANDA POP Tecn. Electrónicas y Comun. SISTEMAS DE COMUNICACIONES DIGITALES para diferentes valores de la relación Eb/N0. Un posible código de ejemplo se muestra a continuación: % Calcula la BER de QPSK fm=1; fc=10; N=32; warning off ebnov=0:2.5:15; L=length(ebnov); ser=zeros(1,L); for i=1:L disp([' Eb/No = ' num2str(ebnov(i))]) Eb_No=ebnov(i); sim('qpsk') ser(i)=VecError(length(VecError),1); end warning on semilogy(ebnov,ser) xlabel('E_b/N_0 (dB)'); ylabel('Symbol Error Rate'); Los comandos warning on/off se utilizan para desactivar los avisos debidos al sistema qpsk durante la simulación del mismo. Podemos observar cómo se realiza un barrido para diferentes valores de la variable Eb_No, llevándose a cabo la simulación del sistema qpsk, mediante el comando sim(‘qpsk’), para cada uno de dichos valores. Finalmente, se representa gráficamente la tasa de error del sistema (almacenada en la variable ser) frente a la relación Eb/N0 del canal (almacenada en la variable ebnov). 3.2.6. Detector QPSK con filtro de correlación En los apartados precedentes se ha evaluado el rendimiento de un esquema QPSK que hacía uso de un detector con dos filtros pasobajo digitales para eliminar las componentes indeseadas de las señales de salida de los multiplicadores. Aunque este esquema es adecuado para obtener una estimación de los datos transmitidos, un esquema óptimo de detección debería basarse en la estructura del filtro de correlación, que dice que los datos recibidos pueden obtenerse mediante la siguiente expresión: T Xˆ i K r (t ) 1 (t )dt (7) 0 Yˆi K r (t ) 2 (t )dt T 0 donde X̂ i e Ŷi son las estimaciones de las componentes en fase y cuadratura del símbolo transmitido, r(t) es la señal recibida, 1(t) = sin 2f0t, 2(t) = cos 2f0t son las funciones ortogonales descritas anteriormente, K es una constante multiplicativa para normalizar los valores de X̂ i e Ŷi , y T es el tiempo de símbolo. Según la expresión anterior, basta con sustituir los filtros del receptor QSPK dado anteriormente por un integrador con muestreo cada T segundos (filtro de integración y descarga) para obtener el detector óptimo. 7/9 PRÁCTICA 3: COMUNICACIÓN PASABANDA POP Tecn. Electrónicas y Comun. SISTEMAS DE COMUNICACIONES DIGITALES En la figura siguiente se muestra la nueva estructura del receptor, donde los filtros han sido sustituidos por integradores constituidos por un buffer que almacena Nfc muestras y un sumador de las muestras almacenadas, acompañados de un circuito de muestreo y retención que toma el resultado del integrador anterior cada 1/fm segundos, correspondiente con el tiempo de símbolo T. 1. Comprobar las nuevas formas de onda del circuito y su nuevo rendimiento para Eb/N0 = 10 dB. 2. Utilizar el script diseñado anteriormente para determinar la tasa de error de símbolo (SER) del nuevo esquema frente a la relación Eb/N0. 3.2.7. Cálculo de la tasa de error de bit (BER) Anteriormente se ha especificado el procedimiento para determinar la tasa de error de símbolo del sistema. Dado que cada símbolo representa dos bits de datos, es posible determinar la tasa de error de bit sin más que comparar los bits de datos a los que representa el símbolo recibido con los bits de datos correspondientes con el símbolo transmitido. Para ello, basta generar una tabla de búsqueda (look-up table) que muestre a la salida los dos bits correspondientes al símbolo de entrada. Para ello, en los parámetros de la tabla (véase la figura con la nueva estructura del sistema para la detección de la tasa de error de bit) hay que establecer el número de dimensiones de la tabla a 2, indicarle que la entrada selecciona una columna de la tabla y definir la tabla (table data) como [0 0;0 1;1 1;1 0].’ (codificación Gray). Obsérvese que, con esta última definición, se genera una tabla donde en cada columna se establece el valor binario correspondiente a cada símbolo de entrada a la tabla. 8/9 PRÁCTICA 3: COMUNICACIÓN PASABANDA POP Tecn. Electrónicas y Comun. SISTEMAS DE COMUNICACIONES DIGITALES Los vectores columna de salida de cada una de las tablas se hacen pasar por un bloque Frame Conversion para indicarle al sistema que se tratan de señales en forma de tramas de datos, en este caso vectores columna. A continuación el receive delay del bloque Error Rate Calculation debe establecerse a 2, ya que ahora se tendrán grupos de dos bits que se comparan. Debido al retardo del sistema inducido sobre los símbolos recibidos, se tendrá que hay dos muestras (bits) de retardo entre los bits transmitidos y los recibidos. 1. Llevar a cabo una simulación para comprobar la tasa de error de bit del sistema. Obsérvese que para un tiempo de simulación de 100/fm, el número de bits recibidos es de 200, lo que es lógico puesto que 1/fm es el tiempo de símbolo, por lo que la duración de un bit será 1/(2fm). También podremos comprobar que la tasa de error de bit (BER) es aproximadamente la mitad de la tasa de error de símbolo (SER), lo que es debido a que, en la mayoría de los casos, un error de símbolo equivale únicamente a un error de bit, pero, en este segundo caso, el cociente se realiza sobre el total de bits recibidos, que duplica al de símbolos recibidos. 2. Utilizar el script diseñado anteriormente para determinar la tasa de error de bit (BER) del sistema frente a la relación Eb/N0. Obsérvese que la curva representada ahora por el script se corresponde con la BER frente a la relación Eb/N0, en lugar de la tasa de error de símbolo. 3. Comprobar qué ocurre cuando establecemos una codificación binaria normal definiendo el parámetro table value como [0 0; 0 1; 1 0; 1 1].’ y realizando una nueva simulación. ¿Cuál es la nueva tasa de error de bit? 9/9