117
Proyecto Fin de Carrera Título: Simulador de un sistema de Transmisión, Recepción y ecualización de DVB-T en Simulink. Autor: Isaac Castro Mateos. Director: Dr. José Ramón Cérquides Bueno.

Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

  • Upload
    dangnga

  • View
    220

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

Proyecto Fin de Carrera

Título: Simulador de un sistema de Transmisión, Recepción y ecualización de DVB-T en Simulink. Autor: Isaac Castro Mateos. Director: Dr. José Ramón Cérquides Bueno.

Page 2: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

1

1.- Introducción _______________________________________________________ 5

2.- Introducción al sistema DVB-T y a la modulación OFDM __________________ 7

2.1.- Sistema DVB-T________________________________________________________ 7

2.2.- Modulación OFDM ____________________________________________________ 9

2.3- Generador de señales DVB-T ___________________________________________ 11 2.3.1.-Generación de datos sin portadoras ____________________________________________12

2.3.1.1.- Codificación de bloque y entrelazado convolucional___________________________12 2.3.1.2.- Codificación interna____________________________________________________15

2.3.1.2.1.- Entrelazador de bits ________________________________________________18 2.3.1.2.2.- Entrelazador de símbolos ____________________________________________19

2.3.2.- Modulación OFDM en Televisión digital Terrestre _______________________________21 2.3.2.1.- Portadoras Pilotos _____________________________________________________22 2.3.2.2.- Portadoras TPS________________________________________________________23

3.- Bloques de Simulink________________________________________________ 24

3.1.- Generador de datos útiles ______________________________________________ 26 3.1.1.- Generador de datos para una señal DVB-T____________________________________26 3.1.1.1.- Generador de datos_____________________________________________________27 3.1.1.2.- Codificador Reed Salomon ______________________________________________28 3.1.1.3.- Entrelazador Convolucional______________________________________________28

3.1.1.3.1.- Entrelazador Convolucional __________________________________________28 3.1.1.3.2.- Convertidor de Bytes a bits___________________________________________29

3.1.1.4.- Añade código convolucional de k/n = ¾.____________________________________30 3.1.1.5.- Entrelazador interno____________________________________________________31

3.1.1.5.1.- Unbuffer _________________________________________________________31 3.1.1.5.2.- Buffer ___________________________________________________________31 3.1.1.5.3.- Entrelazador de bits ________________________________________________31 3.1.1.5.4.- Buffer ___________________________________________________________32 3.1.1.5.5.- Entrelazador de símbolos ____________________________________________33

3.1.1.5.5.1.- Entrelazador para símbolos pares __________________________________33 3.1.1.5.5.2.- Señal de control________________________________________________34

3.1.1.5.5.2.1.- Generador de pulso _________________________________________34 3.1.1.5.5.2.2.- Sumatorio_________________________________________________35 3.1.1.5.5.2.3.- DSP constant ______________________________________________35

3.1.1.5.5.3 Entrelazador para símbolos impares. _________________________________36 3.1.1.5.5.4 Switch ________________________________________________________36

3.1.1.6.- Convertidor de bits a símbolos de 64-QAM _________________________________37 3.1.2.- Modulador 64-QAM _______________________________________________________38

3.2.- Generador de pilotos: _________________________________________________ 39 3.2.1.- Bloque PN Sequence Generator ______________________________________________40 3.2.2.- Constante de un medio a sumar para modular las portadoras pilotos __________________40 3.2.3.- Sum ____________________________________________________________________41 3.2.4.- Constante a multiplicar para modular las portadoras pilotos_________________________41

3.3.- Seleccionador de índices para pilotos_____________________________________ 42 3.3.1.- Vector para ordenar los símbolos _____________________________________________42

3.3.2.- Seleccionador de vectores_________________________________________________42 3.3.3.- Señal de control___________________________________________________________43

3.4.- Concatena datos, pilotos y portadoras TPS________________________________ 44

3.5.- Coloca en orden los datos, las portadoras TPS y las portadoras pilotos. ________ 45

3.6.- TPS ________________________________________________________________ 46 3.6.1.- Bernoulli Binary Generator __________________________________________________46 3.6.2.- Constante de un medio _____________________________________________________47 3.6.3.- Sum ____________________________________________________________________47 3.6.4.- Constante a multiplicar para modular las portadoras TPS___________________________47

Page 3: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

2

3.7.- Modulación OFDM ___________________________________________________ 48 3.7.1.- Añadimos hasta 8192 ______________________________________________________48 3.7.2.- Cambia el orden de los datos_________________________________________________49 3.7.3.- IFFT____________________________________________________________________49 3.7.4.- Añadimos hasta 10240 _____________________________________________________50 3.7.5.- Cambia el orden de los datos_________________________________________________50

3.8.- Señal a Transportar___________________________________________________ 51

3.9- Pruebas realizadas para comprobar el funcionamiento ______________________ 52 3.9.1.- Comprobación del tamaño de los vectores ______________________________________52 3.9.2.- Comprobación de que si añadimos las portadoras pilotos y luego las extraemos obtenemos estas mismas ___________________________________________________________________53 3.9.3.- Comprobación de que si añadimos las portadoras TPS y luego las extraemos obtenemos estas mismas _______________________________________________________________________55 3.9.4.- Comprobación de que los valores de las portadoras TPS y pilotos están en el lugar correcto56 3.9.5.- Comprobación de las constelaciones___________________________________________57

4.- Canal y receptor para señales DVB-T__________________________________ 60

5.- Funcionamiento básico del receptor ___________________________________ 61

6- Bloques de Simulink ________________________________________________ 63

6.1.- Información _________________________________________________________ 65

6.2.- Canal _______________________________________________________________ 66 6.2.1.- Atenuación del canal i ______________________________________________________66 6.2.2.- Camino i ________________________________________________________________67 6.2.3.- Suma los tres caminos ______________________________________________________67 6.2.4.- Adicción de ruido blanco Gaussiano ___________________________________________67

6.3.- Demodulador de OFDM _______________________________________________ 68 6.3.1.- Almacena 10240 muestras___________________________________________________68 6.3.2.- Quita el prefijo cíclico______________________________________________________69 6.3.3.- FFT ____________________________________________________________________69 6.3.4.- Convierte a trama _________________________________________________________69 6.3.5.- Quita muestras hasta 6817___________________________________________________70

6.4.- Estimador de canal usando pilotos_______________________________________ 71 6.4.1.- Selecciona portadoras pilotos ________________________________________________73 6.4.2.- Seleccionador de índices para pilotos __________________________________________73 6.4.3.- Generador de pilotos _______________________________________________________73 6.4.4.- Retraso de cuatro tramas ____________________________________________________73 6.4.5.- Estima el canal en las portadoras pilotos________________________________________74 6.4.6.- Acumulamos cuatro símbolos ________________________________________________74 6.4.7.- Ordena las portadoras pilotos ________________________________________________75 6.4.8.- Divide por la mitad ________________________________________________________75 6.4.9.- Sum ____________________________________________________________________75 6.4.10.- Retraso de una trama ______________________________________________________76 6.4.11.- Interpolador Complejo_____________________________________________________77

6.4.11.1.- Dividimos la señal en parte real e imaginaria _______________________________77 6.4.11.2.- Interpolación Real ____________________________________________________78 6.4.11.3.- Interpolación imaginaria _______________________________________________78 6.4.11.4.- Unimos para crear una señal compleja_____________________________________78

6.5.- Retraso de tres tramas_________________________________________________ 79

6.6.- Retraso de cinco tramas _______________________________________________ 80

6.7.- Retraso de ocho tramas ________________________________________________ 81

6.8.- Dividimos por la estima del canal________________________________________ 82

6.9.- Eliminador de ruido___________________________________________________ 83

Page 4: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

3

6.9.1.- Seleccionador de datos _____________________________________________________83 6.9.1.1.- Índices de datos de los símbolos __________________________________________84 6.9.1.2.- Seleccionador de símbolo _______________________________________________84 6.9.1.3.- Señal de control _______________________________________________________84

6.9.2.- Elimina las portadoras ______________________________________________________85 6.9.3.- Eliminador de ruido________________________________________________________85

6.9.3.1.- Demodulador _________________________________________________________86 6.9.3.1.1.- Unbuffer _________________________________________________________86 6.9.3.1.2.- Valores de la constelación ___________________________________________86 6.9.3.1.3.- Restador _________________________________________________________86 6.9.3.1.4.- Modulo __________________________________________________________87 6.9.3.1.5.- Escoge mínimo ____________________________________________________87 6.9.3.1.6.- Restador _________________________________________________________87 6.9.3.1.7.- Constante ________________________________________________________87 6.9.3.1.8.- Almacena 6048 muestras ____________________________________________88 6.9.3.1.9.- Convertidor de símbolos a bits ________________________________________88

6.9.3.2.- Desentrelazador interno _________________________________________________89 6.9.3.2.1.- Desentrelazador de símbolo __________________________________________90

6.9.3.2.1.1.- Desentrelazador para símbolos pares _______________________________90 6.9.3.2.1.2.- Señal de control________________________________________________91

6.9.3.2.1.2.1.- Generador de pulso _________________________________________91 6.9.3.2.1.2.2.- Sumatorio_________________________________________________92 6.9.3.2.1.2.3.- DSP constant ______________________________________________92

6.9.3.2.1.3 Entrelazador para símbolos impares. _________________________________93 6.9.3.2.1.4.-Escoge entre símbolos ___________________________________________93

6.9.3.2.2.- Buffer ___________________________________________________________94 6.9.3.2.3.- Desentrelazador de bits______________________________________________94 6.9.3.2.4.- Retraso __________________________________________________________95 6.9.3.2.5.- Buffer ___________________________________________________________95

6.9.3.3.- Decodificador de Viterbi ________________________________________________96 6.9.3.4.- Desentrelazador convolucional ___________________________________________96

6.9.3.4.1.- Convertidor de bits a bytes ___________________________________________96 6.9.3.4.2.- Retraso __________________________________________________________97 6.9.3.4.3.- Desentrelazador convolucional________________________________________97

6.9.3.5.- Decodificador de bloque Reed-Salomon ____________________________________97

6.10.- Constelación no Ecualizada y Ecualizada ________________________________ 98

6.11.- Calculador del error entre la señal que se transmitió y la recibida ___________ 99

6.12.- Muestra la Ber, el número total de bits erróneos y el número total de bits ____ 100

6.13.- Pruebas realizadas para comprobar el funcionamiento____________________ 101 3.3.1.- Comprobación de que el ecualizador funciona__________________________________101 6.13.2.- Comprobación de que el eliminador de ruido funciona___________________________103 6.13.3.- Comprobación de que el sistema completo funciona ____________________________104

6.13.3.1.- Comprobación de que “dat” y “datos” son iguales __________________________104 6.13.3.2.- Cálculo del error de los datos en las tramas finales e iniciales. _________________105

7.- Conclusiones y líneas de trabajo futuras ______________________________ 107

7.1.- Conclusiones________________________________________________________ 107

7.2.- Futuras líneas de trabajo______________________________________________ 108

8.- Bibliografía______________________________________________________ 109

Anexo A ___________________________________________________________ 110

Generador_dvbt_fun _____________________________________________________ 110

Tablas _________________________________________________________________ 112

Interpolador ____________________________________________________________ 116

Page 5: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

4

Page 6: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

5

1.- Introducción La llegada de la televisión digital supone un cambio tan radical como el que supuso el paso del blanco y negro al color. No solo se trata de conseguir imágenes mejores, sino que también ha abierto las puertas a la introducción de servicios hasta ahora inimaginables, como la recepción móvil de televisión, la interactividad, la televisión a la carta o los servicios multimedia tan de moda hoy en día con la explosión de Internet. El principal problema de la televisión analógica es que no saca partido al hecho de que en la mayoría de los casos, las señales de vídeo varían muy poco al pasar de un elemento de imagen (píxel) a los contiguos, o por lo menos existe una dependencia entre ellos. Al igual que entre las imágenes sucesivas. En pocas palabras, se derrocha espectro electromagnético. Además al crecer el número de estaciones transmisoras, la interferencia pasa a convertirse en un grave problema. Los canales radioeléctricos de la televisión digital ocupan la misma anchura de banda (8MHz) que los canales utilizados por la televisión analógica pero, debido a la utilización de técnicas de compresión de las señales de imagen y sonido (MPEG), tienen capacidad para un número variable de programas de televisión en función de la velocidad de transmisión, pudiendo oscilar entre un único programa de televisión de alta definición (gran calidad de imagen y sonido) a cinco programas con calidad técnica similar a la actual (norma de emisión G con sistema de color PAL), o incluso más programas con calidad similar al vídeo. Existen varios grupos y foros que se encargan de la puesta en funcionamiento de la Televisión Digital. - Proyecto Europeo DVB (Digital Video Broadcasting), que establece las normas para difusión digital que se aplican a todas las formas de difusión (satélite, cable terrestre y otras). - Foro DIGITAG (DIGital Terrestrial Action Group), que se encarga de unificar criterios de requisitos de servicio , de funcionalidades del receptor , de aspectos regulatorios con todas las matizaciones propias de cada país y de fomentar la rápida introducción de televisión digital . - Proyecto VALIDATE (Verification And Launch of Integrated Digital Advanced Television in Europe), que es el grupo de trabajo que valida todas las experiencias de televisión digital, en cuanto a la compatibilidad de los distintos receptores. - Proyecto MOTIVATE, que analiza la posibilidad de recepción móvil de la televisión digital - Proyecto VIDITER (Video Digital TERrestre), constituye el primer proyecto español en televisión digital terrenal, y cuyo objetivo es desarrollar una red de televisión digital terrenal y evaluar el comportamiento de este nuevo sistema, con experiencias reales de emisión.

Page 7: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

6

- dTTb (digital Terrestrial Television broadcasting). El siguiente proyecto implementa un transmisor y receptor para DVB-T (Digital Video Broadcasting-Terrestrial, en castellano Difusión de Video Digital-Terrestre), que es el estándar europeo para DVB, usando el lenguaje de programación MATLAB y más concretamente su herramienta de simulación en tiempo real, SIMULINK. Para comprobar la efectividad a la hora de recuperar los datos se implementará también un canal que tendrá ruido AWGN (Additive White Gaussian Noise o Ruido Gaussiano Blanco aditivo en español), y además dispersión por multicamino. El receptor deberá ser capaz de mantener la BER (Bit Error Rate) en unas cotas aceptables, para ello, se implementarán una serie de bloques, los cuales realizaran los algoritmos detallados en el estándar ETSI EN 300 744 V.1.4.1, que describen la corrección del error. Y por otro lado, habrá que desarrollar, también, un ecualizador que elimine la dispersión de multicamino. A la luz de esto, se dividirá el proyecto en dos partes, Generador de señales DVB-T y Receptor DVB-T que incluirá el canal. Asimismo, la memoria se compondrá de los siguientes apartados: - Tras la Introducción, se detallará el Generador de datos de forma teórica, haciendo hincapié en el estándar mencionado antes. - En el tema tercero se detallará el modelo de SIMULINK del anterior. - El cuarto capítulo será una explicación teórica del por que del ecualizador y eliminador de ruido. - El quinto tema desarrollará teóricamente el receptor DVB-T. El sexto tema consistirá en el desarrollo en SIMULINK del receptor DVB-T. - En el séptimo tema se explicarán las conclusiones y las futuras líneas de investigación de este sistema. - Por último, se incluirá una bibliografía y un Anexo con las funciones en MATLAB.

Page 8: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

7

2.- Introducción al sistema DVB-T y a la modulación OFDM En este tema se presentará al sistema DVB-T y a la modulación usada en el mismo. Tras lo cuál se verán los algoritmos que la ETSI (European Telecommunications Standards Institute) ha desarrollado para este sistema.

2.1.- Sistema DVB-T El sistema DVB-T (Digital Video Broadcasting – Terrestrial, en castellano Difusión de Video Digital - Terrestre) es el estándar para la transmisión de televisión digital terrestre creado por la organización europea DVB. Este sistema transmite audio, video y otros datos a través de un flujo MPEG. Dicho “Flujo de transportes” (TS), obtenido mediante el proceso denominado “Codificación de Fuente” es una adaptación del estándar MPEG-2 según ISO/IEC 13818-1, que se estructura multiplexando varios programas y añadiendo la “Información del Servicio” (SI) correspondiente, según ETS 300 468. En este documento se describe la secuencia de operaciones denominada “Codificación de Cana”, mediante la cual se añade suficiente redundancia y protección a la señal para hacerla más robusta con vista a poder corregir los errores – “Forward Error Correction” (FEC) – en el receptor. También se describe el “Esquema de Modulación” usado en la transmisión, que es del tipo modulación multiportadora OFDM, como se ha dicho anteriormente. El resultado, combinando el potente método de codificación para corrección de errores y la modulación multiportadora, es una transmisión de tipo COFDM (Coded Orthogonal Frequency Division Multiplex). Un aspecto a destacar de la técnica OFDM es que permite la operación, tanto en áreas pequeñas como en grandes, de “Redes de Frecuencia Única” (“Single Frequency Networks-SFN”). Esto significa que mediante este sistema es posible la recepción cuando se radian idénticos programas desde diferentes transmisores que operan en la misma frecuencia. En estas condiciones se obtiene la máxima eficiencia del espectro, lo cual adquiere especial relevancia cuando se usa en las bandas de UHF asignadas para TV.

Page 9: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

8

Fig. 1 Diagrama de bloques de un transmisor y receptor DVB-T El sistema DVB-T permite transmisiones jerárquicas. En este caso hay 2 flujos de transporte, uno de ellos denominado de “alta prioridad” (HP”) que tiene baja velocidad y por tanto menor calidad de imagen, modula las portadoras con un esquema de modulación muy robusto frente al ruido (QPSK) mientras que el segundo flujo de transporte, denominado de “baja prioridad” (“LP”) complementa al anterior en cuando a velocidad uy calidad de imagen y combina su información con el anterior de forma que las portadoras son moduladas finalmente con un esquema más exigente en cuanto a relación señal/ruido. En el caso de que este último utilice 54 bits por cada 2 bits del de alta prioridad, se alcanzaría una constelación total para la señal emitida de 64 –QAM- En la zona del área de cobertura donde se reciba la señal con buena relación S/N, la imagen recuperada, de alta calidad, corresponderá a la combinación de los dos flujos (alta y baja prioridad) mientras que en caso contrario la calidad de imagen recibida será peor, correspondiendo sólo al flujo de alta prioridad.

Page 10: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

9

2.2.- Modulación OFDM La idea básica de la modulación OFDM es dividir el espectro disponible en muchos subcanales. Haciendo los anchos de banda de estos muy estrechos, se consigue así que al decaer la señal lo haga de una forma lo más parecida a una línea recta pero suave en ese subcanal, lo cuál ayuda a que la igualación sea más sencilla. Además, para obtener una alta eficiencia espectral se solapan los canales adyacentes y se hacen ortogonales. Esto se consigue haciendo que los canales tengan un cero en la frecuencia en la que los canales adyacentesa ellos tienen un maximo (figura 2.2). Esto conlleva a otra ventaja, y es que podemos eliminar la interferencia intersimbólica o ISI. Para conseguir que desaparezca el ISI, se aplicará el criterio de Nyquist que dice que para eliminar la ISI, es necesario que se cumpla:

Donde P(w) es el espectro de cada símbolo, T es su periodo y W = 2̟/T.

Que quiere decir, en este caso, que la suma de las amplitudes de los distintos subcanales debe ser constante en todo momento frecuencial.

Fig. 2.2: Señal con múltiples portadoras Por otro lado, se añade un prefijo cíclico al principio de cada símbolo, en el que se repite la información del final de este símbolo. Gracias a esto podemos realizar bien la ortogonalidad entre señales, debido a que, al incluir el final de la información, el resultado es parecido a una convolución cíclica, y, por tanto, nos dará señales ortogonales, siempre que la duración del prefijo sea mayor que la respuesta impulsiva del canal. Además, este prefijo elimina la interferencia entre canales o ICI, ya que se simula un canal rectangular perfecto, en tiempo, puesto que la información que no pertenece al rectángulo cae en el prefijo que no importa que se degrade (figura 2.3).

Page 11: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

10

El problema que deriva del uso del prefijo cíclico es que la relación señal a ruido (SNR) empeora en función del tamaño de este. Notar que la diferencia entre ISI e ICI es que la ISI se produce entre los subcanales de un mismo símbolo y la ICI es entre los distintos símbolos a lo largo del tiempo.

Fig. 2.3 Ejemplo de señal OFDM en tiempo

El gran problema de la modulación OFDM era la cantidad de osciladores necesarios para obtener los distintos canales. Para arreglar esto se decidió usar la transformada inversa de Fourier, ya que ésta utiliza exponenciales con los que se puede obtener valores concretos de frecuencia. Un esquema típico de la modulación OFDM es el dado en la Figura 2.4 en el que se ve la adicción del código cíclico como CP y la extracción como otro CP pero tachado.

Fig. 2.4 Esquema de modulación y demodulación discreta de OFDM

Un estudio más completo sobre OFDM tanto su versión discreta, que es la más usada, como de su continua, que es donde se partió este tipo de modulación, puede verse en las referencias [1] y [2] de la bibliografía.

Page 12: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

11

2.3- Generador de señales DVB-T Para realizar la generación de señales DVB-T se llevan a cabo varias etapas; la primera es la generación de los datos, luego se añade un código de bloque, se realizan entrelazados, se añade un código convolucional y tras eso se añaden las portadoras TPS (Tranmission Parameter Signalling, es decir, Señalización de los parámetros de transmisión) y las portadoras pilotos. Por último, se modula la señal resultante en OFDM (Orthogonal Frequency Division Multiplexing, es decir, Multiplexación por División de Frecuencia Ortogonal) y se envía por el canal. Se relatarán las partes más importantes de cada uno de los siguientes campos.

Fig. 2.5 Esquema del generador de señales

Page 13: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

12

2.3.1.-Generación de datos sin portadoras En este apartado se verán los distintos algoritmos que se llevan a cabo en las señales DVB-T para la generación de datos antes de que se le añadan las portadoras TPS y pilotos. Se parte de los datos codificados en MPEG-2 y se le irán añadiendo las sucesivas cabeceras a las tramas., Para ayudar al lector se hará una referencia al orden aplicado: - Estas capas comienzan con un código de bloque, es decir, se añaden 16 bytes que ayudan a la corrección de errores (vease [4] y Digital Signal Processing de Proakis y Monolakis). - Lo siguiente pero en el mismo subapartado 2.3.1.1, se detallará el entrelazado que no es más que cambiar el orden de los datos, para que a la hora de producirse un error este quede separado, y por tanto, el codigo de bloque actúe, con bytes separados. - El siguiente subapartado se verá la codificación interna, que se compone en la adicción de un código convolucional, que aplica una protección robusta al sistema, para su mejor comprensión vease [4] y [10] Digital Transmission Engineering por John B. Anderson.

2.3.1.1.- Codificación de bloque y entrelazado convolucional El primer paso, es la adicción de un código de bloque mediante código Reed Salomon, que usa un código de la forma k/n = 188/204 y tiene una distancia de corrección de t=8, es decir, es capaz de corregir hasta 8 bytes y detectar 16 bytes. El Código Generador usado es: g(x) = (x+0)(x+1)(x+2)...(x+15), donde = 02HEX.

Y el polinomio generador es: p(x) = x8 + x4 + x3 + x2 + 1. La versión de Reed Salomon es una versión reducida de la original RS k/n = 239/255. La forma acortada se realiza añadiendo primeramente 51 bytes nulos delante de los 188 bytes de información, con lo que se complementan los 239 bytes. Tras eso se pasan por el codificador RS(255,239) que añade los 16 bytes del código de bloque y tras esto se eliminan los 51 octetos nulos. Tras esta adicción del código de bloque, se produce un entrelazado de los datos. Todos los entrelazados que se llevan a cabo en esta generación, se deben a lo siguiente: los errores no se producen de forma aislada, sino que cuando hay un error suelen aparecer varios datos seguidos en mal estado. Esto podría provocar que el código, ya sea de bloque o convolucional, no sea

Page 14: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

13

capaz de corregirlo, para ello, se entrelazan los datos, de forma que al reordenarse los bits erróneos se separan, permitiendo que los errores afecten a distintas partes del mensaje y los códigos sean más efectivos. El primer entrelazado es el entrelazado convolucional que tiene una profundidad de I = 12, es decir, son 12 ramas cíclicamente conectadas al flujo de entrada, para producir desplazamientos de hasta 12. El resultado del entrelazado es que cada byte queda desplazado en el tiempo una posición jx17, por lo que los bytes de un paquete quedarán repartidos entre son paquetes consecutivos. Siendo j = 1 a 12, dado por cada una de las ramas que producen desplazamientos, y M=17, dado para que se cumpla que el máximo desplazamiento no sobrepase 204 que es el número máximo de datos. M=17=204/I.

Fig. 2.6 Diagrama de entrelazado y desentrelazado del modelo

convolucional Los conmutadores de entrada y salida, que avazan un paso por cada byte de datos, obviamente deben estar sincronizados. Los bytes SYNC invertidos y no invertidos (que se pueden ver en las tramas de la Fig. 2.7). Por último, un esquema de tramas es :

Fig. 2.7 Trama de MPEG-2

Fig. 2.8 Paquetes transportados aleatorizados.

Page 15: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

14

Fig. 2.9 Paquetes con los bytes de paridad de Reed-Salomon

Fig.2.10 Estructura de datos tras entrelazado de profundidad I = 12bytes

Page 16: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

15

2.3.1.2.- Codificación interna Esta parte se divide también en dos: una codificación convolucional y luego un entrelazado de símbolo y otro de bit. El sistema se basa en un sistema de k=1/2 con 64 estados que, a su vez, se basa en dos generadores de polinomios G1 = 171oct para X y G2 = 133oct para Y.

Tabla 1 Tasa de Código y esquema de perforado

Fig. 2.11 Esquema del código convolucional de tasa ½

Lo siguiente es el entrelazado interno, que se compone de un primer proceso de entrelazado relativo al bit, que va seguido de un entrelazado de símbolo. Ambos, el relativo al bit y el entrelazado de símbolos, están basados en bloques. En la figura 2.12 se muestra el esquema de principio para el caso “no jerárquico” y esquema de modulación con constelación.

Page 17: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

16

Fig. 2.12 Entrelazado interno y “mapeado” para modo “no jerárquico”

con constelación 64-QAM

En el caso de modos “no jerárquicos” (figura 2.12), el único flujo de transporte de entrada, compuesto por bits xi, se demultiplexa en “v” sub-flujos, siendo “v” el número de bits por símbolo, resultando en cada vía los bits bij.

Fig. 2.13 Entrelazado interno y “mapeado” para modo “jerárquico” con

constelación 64-QAM

En cambio, en el caso de modos “jerárquicos” (figura 2.13) el flujo de transporte de entrada de alta prioridad, compuesto por los bits x’i, se demultiplexan en 2 sub-flujos, al mismo tiempo que el de baja prioridad, bits x’’i, lo hace en v-2 subflujos. Los subflujos de las distintas vías llevan los bits bij. El esquema de demultiplexado de los bits xi (x’i y x’’i en el caso jerárquico) en los resultantes dij, para el caso 64-QAM, es el siguiente:

Page 18: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

17

Transmisión no jerárquica Tansmisión Jerárquica

Después del demultiplexado, cada sub-flujo se procesa por separado en un entrelazador de bits. Hay por tanto “v” entrelazadores de bits (hasta 6, ya que el máximo es 64 símbolos) que se numeran desde I0 a I5. Los entrelazadores I0 a I1 se usan para QPSK, I0 a I3 para 16-QAM, I0 a I5 para 64-QAM.

Page 19: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

18

2.3.1.2.1.- Entrelazador de bits El “entrelazado de bits” se realiza por bloques y sólo actúa sobre los datos útiles. El tamaño de estos bloques es de 126 bits según el estándar para todos los entrelazadores, aunque la secuencia de entrelazado es diferente de unos a otros. El tamaño implica que el proceso se repite un número exacto de veces por cada símbolo OFDM, tanto usando 2k como 8k. Estándar 2k estándar 8k Nº de portadoras activas para datos 1512 6048 Bits totales por símbolo OFDM vx1512 vx6048 Nº de entrelazadotes de bits: v v Repetición de entrelazado (nº de veces por símbolo OFDM): 1512/126=12 6048/126=48 Por tanto, los bloques de bits de entrada a cada entrelazador están compuestos por: B(e) = (be0 be1 … be125) donde “e” va de 0 a v-1. Los bloques de bits de salida de cada entrelazador se componen por: A(e) = (ae0 ae1 … ae125) La relación entre los bits de ambos bloques, de entrada y salida, es: Ae,w = be,He(w) donde “w” va desde 0 a 125. Y siendo He(w) una función de permutación, que es diferente de unos entrelazadores a otros: Entrelazador I0: H0(w) = w. Entrelazador I1: H1(w) = (w + 63) mod 126. Entrelazador I2: H2(w) = (w + 105) mod 126. Entrelazador I3: H3(w) = (w + 42) mod 126. Entrelazador I4: H4(w) = (w + 21) mod126. Entrelazador I5: H5(w) = (w + 84) mod126. Las salidas de los v entrelazadores se agrupan para formar palabras (y’w) de v bits, de manera que se toma cada vez un único bit de la salida de cada entrelazador, correspondiendo el bit más significativo a la salida de I0, es decir:

y’w = (a0,w a1,w … av-1,w).

Page 20: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

19

2.3.1.2.2.- Entrelazador de símbolos

Se realiza sobre las palabras anteriores y’w conteniendo cada una de ellas “v” bits, de forma que a la salida del entrelazador queden agrupadas en bloques cuyo tamaño está calculado para que los datos se puedan distribuir directamente entre las 1512 (modo 2k) ó 6048 (modo 8k) portadoras activas que tiene cada símbolo OFDM. Así, agrupamos las palabras y’w para formar unos vectore Y’: - Estándar 2k: 12 conjuntos de 126 palabras -> Y’ = (y’0 y’1 … y’1511). - Estándar 8k: 48 conjuntos de 126 palabras Y’ = (y’0 y’1 … y’6047). Así, tenemos que los vectores son Nmax = 1511 para 2k y Nmax = 6047 para 8k. Los vectores Y’ son los vectores a la entrada del entrelazador; a su salida son Y. Y = (y’0 y’1 … y’Nmax).

Donde yH(q) = y’q con q=0 a Nmax-1 Para símbolos pares. yq = y’H(q) con q = 0 a Nomax -1 Para símbolos impares. El algoritmo de las permutaciones de H(q) es definido de la siguiente manera: i = 0,1: R’i[Nr-2, Nr-3, …, 1, 0] = 0,0, …, 0, 0. i = 2: R’i[Nr-2, Nr-3, …, 1, 0] = 0,0, …, 0, 1. 2<i<Mmax { R’i[Nr-3, Nr-4, …, 1, 0] = R’i-1[Nr-2, Nr-3, …, 2, 1]} En el modo 2k R’i[9] = R’i-1[0]+ R’i-1[3]. En el modo 8k R’i[11] = R’i-1[0]+ R’i-1[1]+ R’i-1[4]+ R’i-1[6]. Nr = log2(Mmax), siendo Mmax = 8192 en 8k y Mmax = 2048 en 2k.

Fig. 2.14 Algoritmo de H(q) para 2k

Page 21: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

20

Fig. 2.15 Algoritmo de H(q) para 8k

Ri son vectores derivados de los R’i mediante las permutaciones de bits que recogen las siguientes tablas:

Tabla 2 Permutaciones de Ri en 2k

Tabla 3 Permutaciones de Ri en 8k

Por último, se realiza el mapeado de los 6048 símbolos en 8k o 1512 en modo 2k, por tanto, se necesitarán v*N bits, siendo N el número de símbolos según 2k u 8k. Los bits se repartirán en dos señales I y Q de la siguiente manera:

Tabla 4 Distribución de los bits en las señales I y Q

En el caso de modos jerárquicos, los bits de alta prioridad son los y0,q’

y1,q, siendo los restantes los de baja prioridad. Con la distribución de bits anterior, entre las señales I y Q, en caso de que la constelación se descodifique como QPSK (un solo punto de la constelación identificado en cada cuadrante) solo se recuperarán los bits de alta prioridad y0,q’ y1,q’,. La recuperación de todos los bits exigirá la correcta identificación de la constelación completa.

Page 22: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

21

2.3.2.- Modulación OFDM en Televisión digital Terrestre Existen dos modos en la modulación OFDM: modo 2k y 8k. Cada uno de ellos puede estar a tres frecuencias distintas: 6Mhz, 7Mhz y 8Mhz. Por otro lado, la señal se divide en tramas cada una de 68 símbolos. En el presente trabajo se utilizará el modo 8k a 8Mhz por ser el más usado. En la versión a 8k se tienen 8192 canales por símbolo, de los cuáles sólo se usan 6817 para que el sistema se pueda ecualizar correctamente. De estos canales, 6048 son para datos, 701 para portadoras pilotos y 68 para portadoras TPS. Los 8Mhz indican la separación entre los canales que, para este tipo, es de 7.61Mhz. Para este tipo de modo tenemos los siguientes parámetros según el estándar: Parámetros en modo 8k Número de canales K 6 817 Valor del canal Kmin 0 Valor del canal Kmax 6 816 Intervalo de guarda (I/TU) 1/4 1/8 1/16 1/32 Duración (TU) 896 us Duración del intervalo (I (us)) 224 112 56 28 Duración del símbolo (Ts(us) = TU + I) 1120 1008 952 924 Espaciado entre canales 1/TU 1 116 Hz Espacio entre los canales Kmin y Kmax (K-1)/TU

7,61 MHz

Además, existen varias formas de modular los datos que se envían en los símbolos: QPSK, 16-QAM y 64-QAM, pudiendo ser estas dos últimas uniformes y no uniformes. Para distinguirlas se le dan un valor ^ a cada tipo y se envían en las portadoras TPS, que se explicarán posteriormente.

Page 23: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

22

2.3.2.1.- Portadoras Pilotos Dentro de una señal modulada en OFDM hay ciertos canales cuyo valor no son datos sino valores conocidos. Estas portadoras son denominadas pilotos, y se usan entre otras cosas para la estimación del canal por el que viaja la señal. Los valores de esta señal se obtienen mediante un circuito pseudo-aleatorio, como el mostrado en la figura 2.16.

Fig. 2.16 Circuito para la generación de las portadoras pilotos

La secuencia obtenida por este circuito se modula mediante el siguiente algoritmo Re{cm,l,k} = 4/3x2(1/2 - Wk) e Im{cm,l,k} = 0, donde:

- m: indica el índice de la trama. Está comprendido entre 0 e infinito. - k: es el índice en frecuencia del canal. - l: es el índice temporal del símbolo. Está comprendido entre 0 y 67.

El índice k tiene un intervalo distinto según el símbolo que sea, y si la portadora piloto es continúa o dispersa. Así, la posición de las dispersas es distinta durante cuatro símbolos consecutivos y luego se va repitiendo. k = Kmin + 3xb + 12xp, donde b = 0,1,2 ó 3. p es un valor entero que hace que k sea mayor que cero pero menor de 6817. En el modo 8k existen 177 portadoras pilotos continuas, siendo las posiciones que ocupan, según el estándar, las siguientes:

Posiciones de las portadoras pilotos continuas: 0 48 54 87 141 156 192 201 255 279 282 333 432 450 483 525 531 618 636 714 759 765 780 804 873 888 918 939 942 969 984 1050 1101 1107 1110 1137 1140 1146 1206 1269 1323 1377 1491 1683 1704 1752 1758 1791 1845 1860 1896 1905 1959 1983 1986 2037 2136 2154 2187 2229 2235 2322 2340 2418 2463 2469 2484 2508 2577 2592 2622 2643 2646 2673 2688 2754 2805 2811 2814 2841 2844 2850 2910 2973 3027 3081 3195 3387 3408 3456 3462 3495 3549 3564 3600 3609 3663 3687 3690 3741 3840 3858 3891 3933 3939 4026 4044 4122 4167 4173 4188 4212 4281 4296 4326 4347 4350 4377 4392 4458 4509 4515 4518 4545 4548 4554 4614 4677 4731 4785 4899 5091 5112 5160 5166 5199 5253 5268 5304 5313 5367 5391 5394 5445 5544 5562 5595 5637 5643 5730 5748 5826 5871 5877 5892 5916 5985 6000 6030 6051 6054 6081 6096 6162 6213 6219 6222 6249 6252 6258 6318 6381 6435 6489 6603 6795 6816

Page 24: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

23

2.3.2.2.- Portadoras TPS Este tipo de portadoras se usan para aspectos de señalización (TPS viene del inglés ‘Tranmission Parameter Signalling’, es decir, Parámetros de transmisión de señalización) y proporcionan, entre otras, informaciones sobre:

- Jerarquía. - Modo de transmisión. - Códigos internos. - Valor de ^ en la modulación de datos. - Número de tramas en una supertrama.

Requiere una modulación del tipo: Re{cm,l,k} = 2(1/2 - Wk) e Im{cm,l,k} = 0, donde m,k,l representan los mismos parámetros que en la modulación de las portadoras pilotos. Debido a que el trabajo se basa en la estimación de canales, las portadoras TPS no serán usadas y a la hora de crearlas se harán de manera aleatoria, aunque respetando sus posiciones, mostradas en el siguiente cuadro:

Posiciones de las portadoras TPS en modo 8k 34 50 209 346 413 569 595 688 790 901 1073 1219 1262 1286 1469 1594 1687 1738 1754 1913 2050 2117 2273 2299 2392 2494 2605 2777 2923 2966 2990 3173 3298 3391 3442 3458 3617 3754 3821 3977 4003 4096 4198 4309 4481 4627 4670 4694 4877 5002 5095 5146 5162 5321 5458 5525 5681 5707 5800 5902 6013 6185 6331 6374 6398 6581 6706 6799

Page 25: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

24

3.- Bloques de Simulink A continuación se estudiarán los distintos bloques de SIMULINK. Para ello, en primer lugar se va a explicar y dibujar el modelo completo (figura 3.1) y posteriormente se desarrollarán cada una de las partes. El Generador de datos consta como se comentó de diversas partes, pero que en general se pueden simplificar en dos. La primera parte, es la adicción de información para la corrección de errores en el receptor, esto se hace en el bloque “Generador de datos útiles”, el cuál se subdivide en varios y a su vez, varias veces. Y dónde se realizan las operaciones mencionadas antes, entrelazado, adicción de código de bloques etc. La segunda parte es la adicción de información, para la corrección de la dispersión por multicamino. Esto es, añadir las portadoras pilotos, para lo cuál, se usan cuatro bloques, uno que las genera “Generador de portadoras pilotos”, y otros tres que los ordenan “Seleccionador de índice para pilotos”, “Concatena datos, pilotos y portadoras TPS” y “Coloca en orden los datos, las portadoras TPS y las portadoras pilotos”. Y también la modulación OFDM, que es muy robusta frente a esta clase de dispersión. Por último, añadir, que la adicción de portadoras TPS para el objetivo de este proyecto, no es necesario, se añadirá para completar la señal que es descrita en el estándar mencionado antes.

Page 26: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

25

Fig. 3.1 Esquema del Generador de Señales OFDM

Page 27: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

26

3.1.- Generador de datos útiles Para realizar este apartado, se generará una señal aleatoria, usando el bloque “Random Integer Generador”, tras eso se aplicarán los algoritmos que vienen en el estándar de DVB-T y luego se modulara a 64-QAM usando el bloque “General QAM Modulator”.

Fig. 3.2 Bloques del generador de datos útiles

3.1.1.- Generador de datos para una señal DVB-T Este bloque se encarga de la generación de la señal de datos de un sistema DVB-T. Para ello, primero se genera la señal de datos mediante el bloque “Random integer” y, posteriormente, se van aplicando distintos mecanismos para la corrección de errores.

Fig. 3.3 Generador de datos para una señal en un sistema DVB-T.

Page 28: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

27

3.1.1.1.- Generador de datos

Este bloque (“Random integer generator”) se encarga de generar los datos que queremos enviar y que hay que modular en OFDM. Los parámetros utilizados por este bloque son:

- M-ary number: Número de muestras que genera en cada muestreo que, como vamos a generar, en principio bytes, que luego habrá que descomponer a bits, se necesitaran 256 (2^8).

- Initial seed: Las señales generadas por el generador aleatorio de

enteros necesitan un valor con el cuál, mediante distintas ecuaciones, generar los datos. Al no existir una manera de hacer números aleatorios de verdad, este valor inicial es la “initial seed”, y, por tanto, no hay un valor predeterminado.

- Sample per frames: Para obtener el periodo de muestreo se tiene en

primer lugar que escoger la duración del intervalo de guardia. Se tomará el mayor, lo que proporciona una mejor protección contra ISI e ICI. Como el intervalo de guardia mayor según el estándar de la ETSI 300 744 V1.4.1 es de un cuarto de la duración del símbolo sin protección y, según este estándar, la duración de un símbolo sin protección en una modulación OFDM 8k y a 8MHz es de 896 microsegundos, entonces la duración total del símbolo es de 896*(1 + 1/4) = 1120 microsegundos. Ahora habrá que dividirlo por el número de datos que se envíen, es decir, 188 según el estándar, pero como además, necesitamos almacenar 48 grupos de 126 palabras de 6 bits en un buffer, y cada vez que emite el sistema se llenan 2176 bits. Esto nos lleva a 1120e-6/188*(126*6*48/2176).

- Frame-based outputs: Para la generación de una señal OFDM

debemos medirla en tramas, por eso se marca la casilla.

- Samples frame: El número de muestras que se envían en cada trama debe ser el que el estándar diga. En este caso es de 188, como se indicó antes.

- Output data type: No hace falta precisión, por eso se usará “uint8”.

Page 29: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

28

3.1.1.2.- Codificador Reed Salomon Este bloque “Integer input RS” se encarga de añadir un código de bloque según el algoritmo Reed Salomon (véase apartado 2.3.1.1). Los parámetros usados son:

- Codeword length: El valor, que viene dado por el estándar, es de 204. - Message length: El valor de este apartado también lo da el estándar; es 188.

3.1.1.3.- Entrelazador Convolucional Este bloque realiza el entrelazado de los bytes, para mejorar su recuperación contra errores.

Fig. 3.4 Entrelazador Convolucional

3.1.1.3.1.- Entrelazador Convolucional Este bloque (convolutional interleaver) se encarga de la función mencionada. Los parámetros que utiliza son los siguientes:

- Rows of shift register: Este valor nos lo da el estándar, 17, y nos indica el número de registros, los cuales van a ser desplazados un número de veces el parámetro que viene a continuación.

- Register length step: Este valor también nos lo da el estándar, 12.

- Initial condition: Como no se indica nada, se usará el valor por

referencia, 0.

Page 30: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

29

3.1.1.3.2.- Convertidor de Bytes a bits Este bloque se encarga de pasar los bytes, dados por números de 0 a 255, a bits. Los parámetros usados son:

- Number of bits per integer: Como queremos pasar de bytes a bits, el número es 8. - Output data type: El tipo de salida debe ser boolean, puesto que estamos pasando a bits.

Page 31: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

30

3.1.1.4.- Añade código convolucional de k/n = ¾. En este bloque se añade un código convolucional. Según el estándar, hay que usar un código especifico, pero con varias posibilidades en cuanto a los bits que se añaden; se ha escogido un código k/n =3/4. Los parámetros que se han usado son:

- Trellis structure: Aquí hay que colocar poly2trellis(7, [171 133]), que es la función que se aplica para poder ejecutar más tarde el Viterbi. El 7 nos indica la profundidad del código. El 171 y el 133, son los vectores de conexiones, es decir, si tomamos de ejemplo el 171, el número se pasa de octal a bits, consiguiendo 001111001. Como la profundidad es 7, se quitan los dos primeros bits, así se consigue 1111001. Los ‘1’ indican los registros (que guardan bits del vector de entrada de un paso anterior) que se van conectar y los ‘0’ los que no influyen. - Operation mode: “Continuous”, ya que no hay que truncar nada. - Puncture code: Hay que activar esta casilla para poder añadir el puncture vector, que se usa para indicar que k/n = ¾. - Puncture vector: En el estándar nos indican que para tener un código ¾, debemos poner [1 1 0 1 1 0]'.

Page 32: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

31

3.1.1.5.- Entrelazador interno Al igual que el otro entrelazador, la idea es separar los bits para que a la hora de corregirlos, sea más fácil, ya que los errores se producen a ráfagas y si luego se ordenan, estos errores se dispersan y el código de bloque o convolucional puede corregirlos.

Fig. 3.5 Entrelazador interno

3.1.1.5.1.- Unbuffer Este bloque se coloca para pasar las muestras de una en una ya que el buffer no almacena un número de veces entero el tamaño del vector de datos que le llegan.

3.1.1.5.2.- Buffer Este bloque se usa para almacenar los 756 bits necesarios para hacer el entrelazado de bits, ya que este se realiza en bloques de 756 (6*126 palabras).

- Output buffer size: Como se ha dicho, es 756. - Buffer overloap: Queremos que las muestras salgan por bloques tal cual, no que se repitan; por tanto, el valor es 0. - Initial conditions: Se pondrá 0, ya que se está dando este valor a todas las condiciones iniciales.

3.1.1.5.3.- Entrelazador de bits Este bloque, “General block interleaver”, se encarga de entrelazar los 756 bits según un algoritmo dado por el estándar (apartado 2.3.1.2). El programa que saca las posiciones puede verse en el Anexo A. El parámetro a poner es:

- Elements: Se colocan aquí las posiciones para el entrelazado.

Page 33: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

32

3.1.1.5.4.- Buffer Este bloque se usa para almacenar las 6048 palabras.Estas tienen 6 bits cada una para poder ser moduladas a 64-QAM (2^6 = 64).

- Output buffer size: Se necesitan 6048*6. Como el buffer anterior es 756 bits, se puede poner como 48*756 que es lo mismo. - Buffer overloap: Queremos que las muestras salgan por bloques tal cual, no que se repitan, por tanto, el valor es 0. - Initial conditions: Se pondrá 0, ya que se está dando este valor a todas las condiciones iniciales.

Page 34: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

33

3.1.1.5.5.- Entrelazador de símbolos En este se produce el entrelazado de símbolo según el algoritmo propuesto por el estándar (Véase anexo A, para ver el programa).

Fig 3.6 Entrelazador de símbolos

3.1.1.5.5.1.- Entrelazador para símbolos pares Este bloque (“General block interleaver”) entrelaza según un algoritmo dado por el estándar (Véase apartado 2.3.1.2). El parámetro a poner es:

- Elements: Se colocan aquí las posiciones para el entrelazado.

Page 35: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

34

3.1.1.5.5.2.- Señal de control Genera una señal de control, la cuál varia entre +/- 1 cada trama de 36288 bits.

Fig. 3.7 Señal de Control

3.1.1.5.5.2.1.- Generador de pulso

Se encarga de generar un pulso de amplitud “2” y que varía cada trama. Valores usados:

- Pulse type: Se puede poner basado en tiempo y muestras. En este caso se usará basado en muestras. - Time: Se puede incluir una señal externa que indique tiempo en cada momento o usar el tiempo de la simulación, que será lo adecuado. - Amplitude: Pondremos valor dos para poder obtener la señal de “+1” y “-1” al restarle uno. - Period: Aquí no importa tanto el valor que se ponga, mientras se consiga que la parte del pulso de valor “0” y de valor “2” duren lo mismo. Para facilitar la labor se pondrá valor “2”. - Pulse width: Como el periodo es “2” y queremos que el pulso y la parte que va a 0 valgan lo mismo, el valor será la mitad, es decir, “1”. - Phase delay: Como nos interesa que empiece en el pulso, el valor será “0”. -Sample time: Como se está usando el tiempo de simulación se puede usar el valor por defecto “-1”.

Page 36: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

35

3.1.1.5.5.2.2.- Sumatorio

Este bloque Sum, se usa para restarle uno al pulso y así obtener la señal adecuada. Los parámetros que se utilizan en este bloque son:

- List of sign: Aquí deben ir los signos que queremos usar, en este caso “-+”, puesto que queremos restarle uno.

El resto de parámetros no requieren nombrarse.

3.1.1.5.5.2.3.- DSP constant

Este bloque se usa para implementar una constante de valor “1”. Los parámetros que se utilizan:

- Constant value: Aquí se coloca el valor de la constante, es decir, “1”. - Sample mode: Se pondrá discreto, ya que el modelo no es continuo. - Output: Ponemos sampled based. - Sample time: El tiempo de muestreo se puede poner inf, que suelta una muestra constantemente, “-1” que la suelta cada paso mínimo, o el tiempo esperado.

Page 37: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

36

3.1.1.5.5.3 Entrelazador para símbolos impares. Este bloque (“General block deinterleaver”), realiza la función inversa al entrelazador par, ya que así está recogido en el estándar. Usa los mismos valores que el par (Véase apartado 2.3.1.2). El parámetro a poner es:

- Elements: Se colocan aquí las posiciones para el entrelazado.

3.1.1.5.5.4 Switch Este bloque se usa para escoger entre símbolo par o impar usando la señal de control. Los parámetros que se utilizan son:

- Criteria for passing first input: Como se tiene una señal que varia entre “-1” y “1”, se puede poner u>threshold o u2>=threshold. - Threshold: El umbral se colocará a “0”, que está entre “-1” y “+1”. - Sample time: Se dejara el -1 que está por defecto.

Page 38: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

37

3.1.1.6.- Convertidor de bits a símbolos de 64-QAM Este bloque se encarga de pasar los bits, a número de “0” a “63”. Los parámetros usados son:

- Number of bits per integer: Como queremos pasar de bits a palabras de 64 valores distintos, el número es 6. - Output data type: Puede haber varios tipos de salida. Se retomará uint8 por ser el primero que cumple los requisitos.

Page 39: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

38

3.1.2.- Modulador 64-QAM Este bloque (“General QAM Modulator”), se encarga de realizar la modulación 64-QAM, que hemos escogido entre las posibles, para modular los datos. Los parámetros utilizados en este bloque son:

- Signal Constellation: Aquí irán las posiciones de una constelación 64-QAM, con codificación de gray.

- Output data type: Como los datos pueden ser flotantes y de gran

longitud, se usará “double”.

Page 40: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

39

3.2.- Generador de pilotos: Para este bloque, en primer lugar hay que generar una secuencia pseudo aleatoria. Para ello, se usa el bloque “PN sequence Generador”, y luego se realiza la fórmula que viene en el estándar 8/3 * (0.5 - Wk), donde Wk es la secuencia pseudo aleatoria en el carril de frecuencia k.

Fig. 3.8 Bloques del Generador de pilotos

Page 41: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

40

3.2.1.- Bloque PN Sequence Generator En este bloque hay que especificar diversos parámetros:

- Generator Polynomial: Es el polinomio con el cual se van a generar los unos y ceros. En el estándar viene dado por X11 + X2 + 1, que traducido a los comandos matlab son las posiciones de los 1’s [11 2 0].

- Initial States: Es el valor con el que comienzan los distintos

módulos del bloque “PN Sequence Generador”. El estándar aclara que estos deben estar a '1'.

- Output mask source: En donde hay que especificar si quieres que

el bloque genere la señal (“Dialog parameter”) o si modulará una señal entrante (“input port”). En el caso que se está tratando, se usará la primera forma por indicarlo así el estándar.

- Output mask vector: Es el retraso que ocasiona el bloque. Por no

estar indicado en el estándar lo supondremos igual a 0.

- Sample time: El tiempo de muestreo será puesto a -1 porque no nos interesa.

- Frame-based outputs: Se debe pulsar este botón en el caso de que

la salida esté basada en tramas como lo está en este caso.

- Samples per Trama: Aquí se debe poner el número de muestras que va a tener el vector que salga. Dado que vamos a unir tanto los datos, como las pilotos y las TPS entonces el número de muestras será la suma de los dos tipos de pilotos, que usando el programa “calculapilot” (véase Anexo A), es 701.

- Output data type: Aquí se especifica el tipo de datos que va a tener

el vector, como se ha dicho anteriormente son unos y ceros, por tanto, se escogerá el tipo “boolean”.

3.2.2.- Constante de un medio a sumar para modular las portadoras pilotos Este bloque (“Constant”) se usa para realizar la resta que se produce en la fórmula del estándar puesta al comienzo del apartado 3.2. Los parámetros utilizados por este bloque son:

- Constant value: Aquí debemos poner 1/2, puesto que es el valor necesario para llevar acabo la modulación de las portadoras pilotos.

El resto de parámetros se dejan tal cual.

Page 42: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

41

3.2.3.- Sum Este bloque (“Sum”) se usa para realizar la resta que se produce en la fórmula del estándar puesta al comienzo del apartado 3.2 y también en el apartado 2.3.2.1. Los parámetros que se utilizan en este bloque son:

- List of sign: Aquí deben ir los signos que queremos usar, en este caso “-+”, puesto que hay que a implementar es 8/3 * (0.5 - Wk).

Como en el caso anterior, el resto de parámetros no requieren nombrarse.

3.2.4.- Constante a multiplicar para modular las portadoras pilotos Este es un bloque (“Gain”) y se utiliza para la realización de la fórmula del estándar puesta al comienzo del apartado 3.2 y también en el apartado 2.3.2.1. Los parámetros utilizados por este bloque son:

- Gain: Según lo propuesto en los apartados indicados el valor debe ser de 2.

El resto de parámetros no tienen relevancia.

Page 43: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

42

3.3.- Seleccionador de índices para pilotos

En este apartado, se va a generar un subsistema que escoja, en cada intervalo de tiempo de símbolo (en nuestro caso 1120 microsegundos), un vector con las posiciones que deben ocupar, tanto las portadoras como los datos. Para ello, se usarán los siguientes bloques y dos programas, “calculapilot”, que escogerá los lugares de las portadoras pilotos y “generador_dvbt_fun” que se encarga de calcular las posiciones (véase Anexo A).

Fig. 3.9 Bloques del seleccionador de índices para pilotos

3.3.1.- Vector para ordenar los símbolos Hay cuatro bloques (“constant”), cada uno de ellos con un vector que indica la posición de los datos y portadoras tanto TPS como pilotos. Los parámetros utilizados por este bloque son:

- Constant value: Este valor es el correspondiente al vector de posiciones.

El resto de parámetros son irrelevantes.

3.3.2.- Seleccionador de vectores

Selecciona en cada intervalo de tiempo de símbolo uno de los bloques “Constant”. Para que este bloque funcione necesita una señal que le indique como y cuándo cambiar de entrada. Esta señal será generada desde el exterior del bloque y se unirá por el puerto correspondiente. Los parámetros utilizados son:

- Number of inputs: Se pondrá el número de estradas que es 4. El resto de parámetros no son importantes.

Page 44: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

43

3.3.3.- Señal de control

Crea una función periódica que es constante durante un determinado intervalo y luego se incrementa o decrementa. Esta señal periódica será la que se encargará de indicar al “multiport switch” cuando escoger un bloque “constant” u otro. Los parámetros utilizados por este bloque son:

- Vector of output values: Este campo indica los valores que irá tomando la función en cada intervalo de tiempo; se quiere que vaya incrementándose de forma que se indiquen consecutivamente los distintos bloques “constant”, por tanto, el valor en este campo será [0 1 2 3].

- Sample time: En este campo irá el tiempo que se mantiene

constante la señal. Utilizaremos 1120 microsegundos que, como se dijo anteriormente, es la duración de un símbolo.

El resto de campos no se modifican.

Page 45: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

44

3.4.- Concatena datos, pilotos y portadoras TPS Este bloque, “matrix concatenation”, se encarga de poner los datos primeros, seguidos de las portadoras pilotos y después las portadoras TPS, todo en un vector. Los parámetros importantes son:

- Number of inputs: El número de entradas que tiene el bloque, que será 3. - Mode: Da igual cuál de las dos se escoja. - Concatenate dimension: Es decir, el número de dimensiones que queremos que queden, en este caso, ya que queremos un vector será 1.

Page 46: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

45

3.5.- Coloca en orden los datos, las portadoras TPS y las portadoras pilotos. Este bloque “Selector” se encarga de unir en el orden correcto las portadoras piloto, portadoras TPS y los datos. Los parámetros usados son:

- Number of input dimensions: Su valor será 1, ya que queremos que la salida sea un vector con la unión de todos los datos.

- Index mode: Se pueden utilizar ambos valores, “zero-based” y “one-

based”, teniendo en cuenta que si seleccionamos el primero empezamos a contar desde cero los vectores y si seleccionamos el segundo desde uno.

- Index Option: Aquí debemos seleccionar “Index vector(port)”, ya que

de esta manera el índice lo obtiene del puerto Idx. - Input port size: Aquí irá el tamaño del vector de entrada que es

6817. - Sample time: Tendrá valor -1, porque sino podría eliminar

muestras.

Page 47: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

46

3.6.- TPS Este subsistema se utiliza para generar las señales TPS, mediante un generador de ceros y unos (bloque “Bernouilli Binary Generator”). Posteriormente las modula como se indica en el estándar de la ETSI: 2*(1/2 - Wk, donde Wk es la señal creada por el generador de Bernoulli para cada canal k en la frecuencia.

Fig. 3.10 Bloques de la adicción de portadoras TPS

3.6.1.- Bernoulli Binary Generator

Genera una señal de unos y ceros con una probabilidad de que se genere un cero que hay que especificar. Los parámetros usados son:

- Probability of zero: Dado que no nos interesa ninguna en particular se usará el valor 0.5.

- Inicial seed: Se dejará la que viene de referencia.

- Sample time: Queremos que en cada símbolo de OFDM de 6817

muestras que dura 1120 microsegundos vayan 68 muestras, por tanto el tiempo de muestro será 1120/6817*10^-6.

- Frame-based output: Se seleccionará ya que, como se explicó

anteriormente, hay que especificar el número de tramas.

- Samples per frame: Según el estándar se deben enviar 68 TPS por símbolo, luego el número será 68.

- Output data type: Es indiferente el utilizado.

Page 48: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

47

3.6.2.- Constante de un medio Este bloque (“Constant”) se usa para realizar la resta que se produce en la fórmula del estándar puesta al comienzo del apartado 3.6 y también en el apartado 2.3.2.2. Los parámetros utilizados son:

- Constant value: Aquí debemos poner 1/2, puesto que es el valor necesario para llevar acabo la modulación de las portadoras TPS.

El resto de parámetros se dejan tal cual.

3.6.3.- Sum Este bloque (“Sum”) se usa para realizar la resta que se produce en la fórmula del estándar, puesta al comienzo del apartado 3.6 y también en el apartado 2.3.2.2. Los parámetros que se utilizan en este bloque son:

- List of sign: Aquí deben ir los signos que queremos usar, en este caso “-+”, puesto que lo que hay que a implementar es 2* (0.5 - Wk).

Como en el caso anterior, el resto de parámetros no requieren nombrarse.

3.6.4.- Constante a multiplicar para modular las portadoras TPS Este es un bloque (“Gain”) y se utiliza para la realización de la fórmula del estándar puesta al comienzo del apartado 3.6 y también en el apartado 2.3.2.2. Los parámetros utilizados por este bloque son:

- Gain: Según lo propuesto en los apartados indicados el valor debe ser de 2.

El resto de parámetros no tienen relevancia.

Page 49: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

48

3.7.- Modulación OFDM

En este bloque se realizará la modulación OFDM. Para ello, ampliaremos el tamaño del vector con los datos, portadoras pilotos y portadoras TPS a 8192 (tamaño real de señales veáse introducción del apartado 2.3.2), rellenando con ceros en el centro del vector. Posteriormente se hará una antitransformada de Fourier Discreta (IDFT), usando el bloque “IFFT” por las razones explicadas en la introducción del primer apartado. Por último se añadirá el prefijo cíclico.

Fig. 3.11 Bloques del Modulador de OFDM

3.7.1.- Añadimos hasta 8192 Este bloque (“PAD”) se encarga de la adicción de ceros hasta 8192, que es la siguiente potencia de dos. Los parámetros utilizados por este bloque son:

- Pad Over: Hay que escoger entre filas y columnas; en este caso, serán columnas.

- Pad value Source: Indica si el valor se le pasa por el puerto o se

introduce en los parámetros. Como lo conocemos, pondremos “Specify via dialog”.

- Pad Value: Valor a añadir. Pondremos 0.

- Column size: Será el tamaño que queremos que tenga la señal a la

salida de este bloque. Como se ha dicho, es 8192.

El resto de parámetros no se modifican.

Page 50: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

49

3.7.2.- Cambia el orden de los datos Es un bloque “Selector” usado para ordenar las muestras antes de realizar la antitransformada de fourier discreta (IDFT). Los parámetros utilizados por este bloque son:

- Number of input dimensions: El número de dimensiones a la entrada es uno, puesto que es un vector.

- Index mode: Aquí se puede poner cualquiera de los dos, pero

teniendo en cuenta que si seleccionamos “zero-based” se empieza a contar los vectores desde cero y, con “one-based”, desde uno.

- Index option: Se escogerá “Index vector(dialog)”, puesto que se

conoce el orden de los datos.

- Index: Aquí se debe indicar el reordenamiento de los datos; como se quiere que los ceros estén en el centro del vector y que los datos antes del ‘zero-padding’ se dividan por la mitad y se cambien de orden, el vector será: [3409:6817 6818:8192 1:3408].

- Input port size: Es el tamaño del vector de entrada que como

sabemos es 8192.

3.7.3.- IFFT Este bloque realiza la transformada inversa de Fourier discreta. Sólo se va a modificar los parámetros en ‘Fixed-point’ y dentro de este ‘fixed-point data type’.

- Product output: Se cambia a “same as input”. - Accumulator: Se cambia a “same as product output”.

- Output: Se cambia a “same as input”.

El resto de parámetros se dejan como estaban.

Page 51: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

50

3.7.4.- Añadimos hasta 10240

Este bloque (“PAD”) se encarga de la adicción de ceros hasta 10240. Este número se obtiene porque hay que añadir un prefijo cíclico, y éste tiene un cuarto de la longitud de los datos, por tanto, 8192*5/4 = 10240.

Los parámetros utilizados son:

- Pad Over: Hay que escoger entre filas y columnas en este caso, serán columnas.

- Pad value Source: Indica si el valor se le pasa por el puerto o se

introduce en los parámetros. Como lo conocemos pondremos “Specify via dialog”.

- Pad Value: Valor a añadir pondremos 0.

- Column size: Será el tamaño que queremos que tenga la señal a la

salida de este bloque, como se ha dicho es 10240.

El resto de parámetros no se modifican.

3.7.5.- Cambia el orden de los datos Es un bloque “Selector” usado para ordenar las muestras antes de enviarlas, ya que el prefijo cíclico no son ceros, sino una copia del último cuarto de longitud de los datos y, además, va al principio de estos y no después. Los parámetros utilizados por este bloque son:

- Number of input dimensions: El número de dimensiones a la entrada es uno, puesto que es un vector.

- Index mode: Aquí podemos poner cualquiera de los dos, pero

teniendo en cuenta que si seleccionamos “zero-based” empezamos a contar los vectores desde cero y, con “one-based”, desde uno.

- Index option: Se escogerá “Index vector(dialog)”, puesto que se

conoce el orden de los datos.

- Index: Aquí se debe indicar el reordenamiento de los datos. Como se quiere que los ceros desaparezcan y que el final de los datos se copie al comienzo de estos, el vector será: [6145:8192 1:8192].

- Input port size: Es el tamaño del vector de entrada que como

sabemos es 10240.

Page 52: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

51

3.8.- Señal a Transportar Aquí se almacena la señal, que se llamará información, el bloque es “To workspace”, y contiene los siguientes parámetros:

- Variable name: Aquí se pone el nombre de la variable. Como se ha dicho antes se llamará información.

- Limit data points to last: Como no se conoce el límite de los datos,

se pondrá infinito (“inf”).

- Sample time: Se pretende que conforme los datos llegan a este bloque se vayan almacenando en la variable información, esto se consigue con valor -1.

- Save format: Interesa una matriz que es más cómoda a la hora de

trabajar, por tanto el tipo será “Array”.

El resto de los parámetros no tienen relevancia.

Page 53: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

52

3.9- Pruebas realizadas para comprobar el funcionamiento En este apartado se explicarán las distintas pruebas que se han realizado para verificar que el sistema genera una señal DVB-T correcta.

3.9.1.- Comprobación del tamaño de los vectores Lo principal, es comprobar que el tamaño de los vectores posición, que se obtienen con la función “calculapilot”, tienen longitud 701, que es la que el estándar dice. Además habrá que comprobar que cumplen con la separación de 12 y que tienen intercalados las pilotos continuas. Para ello, se pondrán las posiciones de las diez primeras pilotos continuas y como el programa ejecuta las mismas órdenes, si en las primeras posiciones están bien, en el resto también. Por otro lado, habrá que comprobar que la diferencia entre los distintos símbolos sea de 3. Pilotos continuas 1 49 55 88 142 157 193

202 256 280. Posicion1 1 13 25 37 49 55 61 73

85 88 97 109 121 133 142 145 157 169 181 193.

Posicion2 1 4 16 28 40 49 52 55 64 76 88 100 112 124 136 142 148 157 160 172.

Posicion3 1 7 19 31 43 49 55 67 79 88 91 103 115 127 139 142 151 157 163 175.

Posicion4 1 10 22 34 46 49 55 58 70 82 88 94 106 118 130 142 154 157 166 178.

Page 54: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

53

3.9.2.- Comprobación de que si añadimos las portadoras pilotos y luego las extraemos obtenemos estas mismas Para este apartado necesitaremos construir un modelo (figura 3.12), en el cuál al Generador de señales DVB-T se le añade un bloque selector, que extrae las portadoras pilotos, colocándose tras la modulación OFDM de la señal. Por ello, se usará antes un demodulador de OFDM (este bloque se explicará más adelante), así podemos verificar que la modulación y demodulación no afectan. Se calcula el máximo de la diferencia de las distintas salidas. Esto se consigue, usando la orden “max” de matlab, para encontrar el máximo. Y la diferencia se obtiene restando los vectores de las portadoras pilotos extraídas tras la modulación y las portadoras pilotos originales. max(pilotos_tras_modulacion-pilotos) = -1.9984e-015 +3.3307e-016i. El error cometido tras modular y luego demodular es muy pequeño y por tanto, no se le debe dar importancia. El módulo de este valor es: 2.0260e-015. Además con esta prueba comprobamos que las portadoras TPS no se hayan mezclado con las portadoras pilotos.

Page 55: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

54

Fig. 3.12 Bloques para comprobar que las portadoras pilotos están bien colocadas

Page 56: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

55

3.9.3.- Comprobación de que si añadimos las portadoras TPS y luego las extraemos obtenemos estas mismas El modelo usado será el mismo que en la prueba anterior (figura 3.13) pero ahora no necesitaremos el bloque de índice para pilotos y el selector tendrá las posiciones de las TPS.

Fig. 3.13 Bloques para comprobar las posiciones de las portadoras TPS Por otro lado, habrá que añadir un bloque en “adiccion de TPS” para poder ver las TPS reales.

Volvemos a realizar la misma operación de antes, para ver que los resultados son coherentes. max(TPS_tras_modulacion - TPS) = -4.4409e-016 -1.5821e-015i. Como se ve, de nuevo se produce un error al modular y luego demodular, pero que es despreciable, en este casi el modulo es: 1.6432e-015.

Page 57: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

56

3.9.4.- Comprobación de que los valores de las portadoras TPS y pilotos están en el lugar correcto Para ello, se usa el generador de de señales DVB-T (figura 3.1) y se añade un bloque antes de modular la señal, para ver la información. Por otro lado le damos el valor -1 a todas las portadoras pilotos y -2 a las portadoras TPS y se comprueba que las primeras posiciones, únicamente, sean correctas, ya que si lo son, como se ha comprobado antes que los vectores dan las posiciones correctas, entonces todas serán correctas. Las posiciones se comprueban ahora buscando las posiciones que sean de valor -1 y -2. Así, si se comprueba en las 200 primeras muestras para -1 y 600 para -2, los vectores que salen serán: find(senal_antes_de_modularse(1:200) == -1) = 1 13 25 37 49 55 61 73 85 88 97 109 121 133 142 145 157 169 181 193. find(senal_antes_de_modularse(1:600) == -2) = 35 51 210 347 414 570 596. Ambas posiciones se corresponden con las deseadas, como se puede comprobar en la tabla de la primera prueba para las pilotos y con las diez primeras posiciones de las portadoras TPS que se ponen a continuación. Posiciones TPS: 35 51 210 347 414 570 596 689 791 902.

Page 58: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

57

3.9.5.- Comprobación de las constelaciones En esta prueba se comprueba que las constelaciones sean 64-QAM, en los distintos puntos clave del sistema. Para ello, se usará el mismo sistema que en la primera prueba, cambiando los bloques que almacenan la señal por otros que dibujan la constelación.

Fig. 2.28 Bloques para comprobar las constelaciones Tras ejecutar el programa se ve como las constelaciones son muy parecidas, salvo algunos símbolos que salen nuevos, debido a la adicción de nuevas portadoras, pero esto no altera los datos.

Page 59: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

58

Fig. 2.29 Constelación de los datos

Fig. 2.30 Constelación antes de ordenar datos y portadoras

Page 60: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

59

Fig. 2.31 Constelación una vez los datos están ordenados

Fig. 2.32 Constelación tras modular y demodulada

Page 61: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

60

4.- Canal y receptor para señales DVB-T Un modelo típico de canal, es aquel que contiene ruido y distorsión de multicamino, es decir, que produce la suma de la misma señal enviada varias veces, escalada y retrasada. Esto es así, porque en el ambiente hay interferencias que producen el ruido como antenas de radio, el mismo sol etc. Y por otro lado, también hay edificios, montañas y otros objetos de gran tamaño que reflejan la señal provocando la distorsión de multicaminos. Para poder, obtener de nuevo los datos y así ver las imágenes con una buena calidad en los televisores, se llevan a cabo dos métodos de corrección: - Uno que elimina los errores, el cuál consiste en el uso de los código de bloques y convolucional que el generador incluye (vease [4] y Digital Signal Processing de Proakis y Monolakis), además de los entrelazados. , - El otro debe eliminar el efecto nocivo del multicamino, y esto se consigue usando un ecualizador. En general, los ecualizadores son elementos que permiten modificar la curva de respuesta en frecuencia de un sistema. Cuando se trata de audio se usan filtros para realzar esta modificación. En el caso de señales de DVB-T se usará un estimador de canal, cuyo proceso será detallado en el tema siguiente. Aun así [9] da una explicación detallada, con simulaciones del proceso, que están fuera del alcance del proyecto.

Page 62: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

61

5.- Funcionamiento básico del receptor El Receptor como se explicó antes se compone de dos sistemas, la eliminación de los multicaminos y la eliminación del ruido. Para ello, se llevará a cabo la ecualización de la señal. En este proyecto, se hará lo siguiente, se estimará el canal y se dividirá por él, la señal recibida en frecuencia. El primer paso, en el receptor, es la demodulación de la señal y por consiguiente su paso a frecuencia, ya que se realiza la DFT. Lo siguiente es estimar el canal. Para ello, se extraerán las portadoras pilotos del canal. Como se conoce el algoritmo que las generó, podemos volver a calcularlas, así dividiendo las extraídas por estas nuevas generadas, se obtienen 701 muestras del canal (número de portadoras pilotos que hay por símbolo, véase apartado 2.3.2.1). Ahora bien, como se dijo en el apartado 2.3.2.1, existen portadoras pilotos continuas, que están siempre en la misma posición sin importar el símbolo. Y portadoras pilotos dispersas, que repiten posición cada 4 símbolos. Así, podemos acumular 4 símbolos consecutivos y obtener una estima de canal cada 3 muestras, número que sale, tomando los datos del estándar (177 portadoras continuas, 524 portadoras dispersas, así 524*4+177 = 2273, teniendo en cuenta que la primera y última muestra están incluidas, habrá que interpolar (6817-1)/(2273-1) = 3). La interpolación se llevara a cabo usando un bloque “Embedded”, el cuál implementará un interpolador cuadrático, desarrollado en el Anexo A. Para estudiar otros tipos de interpoladores léase [9]. Además, para obtener una estima de canal mejor, se irá haciendo una media con los demás valores del canal (para más información del algoritmo usado véase apartado 6.4). El otro aspecto clave es la eliminación del ruido. Este se compone de los pasos a la inversa que se detallaron en un apartado anterior (Veáse apartado 2.3.1). En primer lugar se llevara a cabo el demapeo. Como en el estándar no viene un método concreto, se usará un demapeador basado en la distancia mínima; se explicará más adelante (Ver apartado 6.9.3.1). Tras eso se realizará el desentrelazado interno, que es exactamente el inverso del anterior explicado en el apartado 2.3.1.2. El tercer paso, será aplicar el algoritmo de Viterbi para eliminar la redundancia que se le aplicó en nuestro caso k/n = ¾, se usará basado en código duro ya que entran bits al sistema. El cuarto paso, el desentralazado externo, es según el estándar el siguiente:

Page 63: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

62

En primer lugar se toma los índices, al revés, es decir, j = 0 se corresponde con el máximo retardo. La sincronización se obtiene rutando el primer byte SYNC reconocido (invertido o no) hacia la rama “0” (Véase el apartado 2.3.1.1 para más información sobre el entrelazado). Así, cada byte se retarda (11-j)x17 posiciones, con lo que el retardo total entre emisión y recepción es de (j+11-j)x17 = 187, valor que por ser idéntico para todos los bytes, permite recuperar en la recepción el orden original. El último paso, es la eliminación del código de bloque Reed Salomon y la recuperación de los 188 bytes de información.

Page 64: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

63

6- Bloques de Simulink A continuación se va a detallar el modelo explicado anteriormente, mediante el programa SIMULINK. En primer lugar se va a explicar y dibujar el modelo completo (Figura 6.1), y tras eso se va a detallar los distintos subsistemas que componen al mismo. En este modelo, se va han realizar tres operaciones, principalmente, la simulación del canal, la ecualización de la señal y la eliminación del ruido. En primer lugar, se generara un canal que añada ruido AWGN y dispersión por multicamino, para ver que de verdad el receptor funciona. Para la ecualización de la señal se usará el bloque “estimador de canal”, que va obteniendo una estima de canal que va mejorando cada cuatro símbolos que le llegan, notar que antes de poder ecualizar debemos demodular la señal. Para la eliminación del ruido se usa el bloque “Eliminador de ruido”, el cuál realiza dos funciones a su vez, eliminar las portadoras y tras eso, la operación contraria al bloque “Generador de datos útiles” (Apartado 3.1).

Page 65: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

64

Fig. 6.1 Bloques del receptor DVB-T y el canal

Page 66: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

65

6.1.- Información Este bloque se llama “signal from workspace” y nos permite usar la señal de información generada por el generador de señales OFDM de la sección anterior. Utiliza los siguientes parámetros:

- Signal: Se debe escribir aquí el nombre de la señal que queremos utilizar que, en este programa, sería información.

- Sample time: Aquí se debe poner cada cuanto tiempo debe tomarse

una muestra, o lo que es lo mismo, cada cuanto tiempo llega una muestra al sistema. Como la duración de un símbolo es de 1120 us, como se vio en el apartado 2.1, y además hay 10240 muestras tras la modulación, como se vio en el mismo apartado, entonces el valor será 1120/10240*10^-6.

- Samples per frame: Se debe indicar el número de muestras por

cada trama, es decir, cuantas muestras envía a la vez. Como interesa hacerlo realista se pondrá el valor a 1 y en el demodulador se incluirá un buffer.

- From output after final data value by: Es decir, si en la simulación

se utiliza todo el contenido de la señal información, que es lo que debe enviar para no dar error, nos interesa que lo ponga todo a 0 (“setting to zero”), ya que lo que nos llegaría sería ruido en la realidad, y esto no se contempla.

Page 67: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

66

6.2.- Canal Este subsistema.sirve para simular el funcionamiento de un canal, en el que se produce interferencia pormultitrayecto y en el que hay un ruido blanco y Gaussiano.

Fig. 6.2 Bloques del canal

El subsistema se compone únicamente de tres bloques distintos que se repiten.

6.2.1.- Atenuación del canal i Este bloque (“Gain”) nos indica el cociente de amplitud de señal entre la original y la del canal i. Los parámetros utilizados por este bloque son:

- Gain: Es el valor de este cociente. Realmente, no hay un valor predeterminado. Para poner un caso extremo, se han escogido 3 caminos, los cuáles tienen una ganancia muy elevada, siempre mayor de 0.5

- Sample time: El tiempo de muestreo se deja a -1.Ya que el bloque

anterior “información” muestrea, y por tanto, al bloque “gain” le llegan los datos muestreados, se podría poner al mismo valor que el que está en bloque información.

El resto de parámetros se dejan los que están por defecto.

Page 68: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

67

6.2.2.- Camino i Con este bloque (“delay”) se indica el retraso de la señal, es decir, nos dice el número de muestras de la señal original que tienen que llegar antes de que llegue la primera por este camino. Los parámetros que se utilizan son:

- Delay Units: Aquí debemos indicar si el retraso se hace por tramas o por muestras. Como la señal va llegando por muestrasm el retardo será por muestras (Samples).

- Delay(Samples): Aquí hay que indicar el número de muestras que se

retrasan. Como no tenemos un valor predeterminado,se tomaran unos aleatorios.

- Initial conditions: No queremos que haya condiciones iniciales, por

tanto vale 0. Dejar el resto de parámetros como aparecen.

6.2.3.- Suma los tres caminos Este bloque (“sum”) suma los caminos para crear una única señal.

- List of sign: Habrá tantos “+” como caminos haya. El resto de parámetros se dejan los que están por defecto.

6.2.4.- Adicción de ruido blanco Gaussiano En este bloque (“AWGN channel”) se añade el ruido del canal. Los parámetros usados son:

- Initial seed: Se dejara el valor que este.

- Mode: Se pondrá el valor de Signal to Noise Ratio, es decir, se usará

la SNR para saber el valor de la potencia de ruido. - SNR: Un valor adecuado es entorno a los 20db; se usará 18.5.

- Input signal power (watts): La potencia de entrada es 1/10240.

Page 69: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

68

6.3.- Demodulador de OFDM Este subsistema se encarga de demodular la señal por símbolos, por tanto, en primer lugar tendrá un buffer para almacenar 10240 muestras que forman una trama y ,tras eso, hacer la demodulación.

Fig. 6.3 Bloques del demodulador

6.3.1.- Almacena 10240 muestras Este bloque (“buffer”) almacena 10240 muestras porque este es el número de muestras que tiene una trama y que necesitamos para poder demodular. Este bloque tiene los siguientes parámetros:

- Output buffer size (per channel): Aquí debe ir el número de muestras que el buffer debe almacenar antes de soltar las muestras seguidas, es decir, 10240.

- Buffer overlap: Este parámetro sirve sólo cuando la salida no envía

las muestras una detrás de otra, sino que crea una matriz y envía las columnas una a una, y nos indica el número de elementos de esa columna que se repiten en la siguiente; así, en nuestro caso, el valor es 0.

- Inicial conditions: Como queremos que las muestras que entren

sean las primeras, este valor será 0.

Page 70: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

69

6.3.2.- Quita el prefijo cíclico Es un bloque “Selector”que es usado para eliminar el prefijo cíclico, ya que no nos hace falta. Los parámetros utilizados por este bloque son:

- Number of input dimensions: El número de dimensiones a la entrada es uno, puesto que es un vector.

- Index mode: Aquí se puede poner cualquiera de los dos, pero

teniendo en cuenta que si se selecciona “zero-based” se empieza a contar los vectores desde cero y, con “one-based”, desde uno.

- Index option: Se escogerá “Index vector(dialog)”, puesto que se

conoce el orden de los datos.

- Index: Aquí se indica el orden de los datos; como se quiere que desaparezca el prefijo cíclico, el vector será: [2049:10240].

- Input port size: Es el tamaño del vector de entrada que como se

sabe es 10240.

6.3.3.- FFT Este bloque realiza la transformada de Fourier discreta. Sólo se van a modificar los parámetros en ‘Fixed-point’ y, dentro de este ‘fixed-point, data type’. Los parámetros que se utilizan son:

- Product output: Cambiamos a “same as input”. - Accumulator: Cambiamos a “same as product output”.

- Output: Cambiamos a “same as input”.

El resto de parámetros se dejan con los valores que les da Matlab.

6.3.4.- Convierte a trama Este bloque (“Frame convertion”) tiene como función la de transformar las muestras en una trama, que es lo que nos interesa, para luego poder retrasar. El parámetro utilizado por este bloque son:

- Output signal: Aquí se debe poner “frame based”, puesto que quiere transformar en una trama.

Page 71: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

70

6.3.5.- Quita muestras hasta 6817 Es un bloque “Selector”. Se usa para ordenar las muestras, y eliminar los ceros que se añadieron en la modulación OFDM. Este bloque utiliza los parámetros siguientes:

- Number of input dimensions: El número de dimensiones a la entrada es uno, ya que es un vector.

- Index mode: Podemos utilizar tanto “zero-based” como “one-based”,

teniendo en cuenta que seleccionando el primero, empezamos a contar desde ‘0’ los vectores y, con “one-based”, desde ‘1’.

- Index option: Se escogerá “Index vector(dialog)”, porque se conoce el

orden de los datos.

- Index: Aquí se debe indicar el reordenamiento de los datos. Como los ceros están en el centro del vector, y los datos en la modulación OFDM se cambiaron el orden a la mitad, el vector será: [4784:8191 0:3408].

- Input port size: Es el tamaño del vector de entrada que como

sabemos es 8192.

Page 72: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

71

6.4.- Estimador de canal usando pilotos En este subsistema se estimará el canal mediante los siguientes pasos: De la señal demodulada se toma únicamente las portadoras pilotos, ahora se genera la misma señal que se envió en estas portadoras y se divide ambas para obtener una estima del canal en esas muestras. Debido a que las portadoras pilotos dispersas tienen posiciones distintas en cuatro símbolos consecutivos, acumulamos estos 4, con idea de tener el máximo número de muestras distintas para estimar el canal, y sólo tomamos las portadoras pilotos continuas de uno de los símbolos. Tras esto, se tiene una muestra de la estima del canal cada 3 muestras. Para hacer una mejor aproximación, vamos calculando la media de las estimas de forma iterativa, es decir, si llamamos Hi a la estima i-ésima del canal en las posiciones de las portadoras pilotos y Hi’ a la estima i-ésima tras realizar la media, la relación entre ambas es: H1’ = H1. H2’ = (H1 + H2)/2. H3’ = (H3 + H2’)/2 = (H1 + H2 + 2*H3)/4. . . . Hi’ = (Hi + Hi-1’)/2 = (H1 + Sum(2^(j-2)*Hj)) /2^(i-1) con j = 2…i. Por facilidad a la hora de hacer el sistema se cambiará este resultado, obteniéndose H1’ = H1/2. Por último, nos queda determinar el valor del canal en las posiciones que no son pilotos, para ello, realizamos una interpolación lineal.

Page 73: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

72

Fig. 6.4 Bloques del estimador de canal

Page 74: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

73

6.4.1.- Selecciona portadoras pilotos Es un bloque “Selector”que se usa para seleccionar las posiciones de las portadoras pilotos. Estas posiciones dependen del símbolo que llegue. Los parámetros utilizados por este bloque son:

- Number of input dimensions: El número de dimensiones a la entrada es uno, ya que es un vector.

- Index mode: Podemos utilizar tanto “zero-based” como “one-based”,

teniendo en cuenta que seleccionando el primero, empezamos a contar los vectores desde ‘0’ y, con “one-based”, desde ‘1’.

- Index option: Se escogerá “Index vector(port)”, porque hay cuatro

símbolos distintos en cuanto a posiciones de las portadoras pilotos.

- Input port size: Es el tamaño del vector de entrada que se corresponde con el de portadoras OFDM total 6817.

- Sample time: Como el índice y la señal llegan de una manera

continua, si se muestrea se pierde información, por lo que el valor será -1.

6.4.2.- Seleccionador de índices para pilotos Este subsistema es idéntico al explicado en el apartado 3.3.

6.4.3.- Generador de pilotos Este subsistema fue explicado en el apartado 3.2.

6.4.4.- Retraso de cuatro tramas Este bloque (“Delay”), nos sirve para retrasar cuatro tramas ya que, como se ha dicho en el apartado anterior, para realizar la estimación del canal necesitamos usar cuatro símbolos seguidos, y como los primero cuatro no contienen información pero ocupan espacio hay que retrasar la información que envia el “”Generador de pilotos” apartado 3.2. Los parámetros que se utilizan son:

- Delay Units: Hay que escoger entre retrasar por tramas o por muestras. Como se ha dicho será una trama entera, por tanto seleccionamos “Frames”.

- Delay(Samples): Aquí hay que indicar el número de tramas que se

retrasan y, como se ha dicho, este valor debe ser ‘4’.

- Initial conditions: No se requieren condiciones iniciales; valor ‘0’.

Dejar el resto de parámetros como aparecen.

Page 75: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

74

6.4.5.- Estima el canal en las portadoras pilotos Este bloque (“product”) realiza la división entre las portadoras pilotos que han pasado por el canal y las que acaban de ser generadas, obteniéndose así una estima del canal en las posiciones de las portadoras pilotos. Los parámetros utilizados por este bloque son:

- Number of inputs: Aquí se debe marcar las operaciones que se quiere hacer a las señales que en este caso será ‘*/’.

El resto de parámetros se dejan al valor de referencia.

6.4.6.- Acumulamos cuatro símbolos Este bloque (“buffer”) almacena cuatro símbolos, porque cada cuatro símbolos las posiciones de las portadoras pilotos se repiten, por tanto, se puede obtener posiciones distintas del canal si se mezclan estos cuatro símbolos y así conseguir un canal estimado más cercano al real. Los parámetros que se utilizan son:

- Output buffer size (per channel): Aquí debe ir el número de muestras que el buffer debe almacenar antes de soltar las muestras seguidas. Como se quieren cuatro símbolos, y cada símbolo tiene 701 muestras (que es el número de portadoras pilotos, véase la introducción del apartado 2.1), entonces cuatro símbolos serán 2804 muestras.

- Buffer overlap: Este parámetro sirve sólo cuando la salida no envía

las muestras una detrás de otra, sino que crea una matriz y envía las columnas una a una. Así este parámetro indica el número de elementos de esa columna que se repiten en la siguiente. En nuestro caso el valor es 0.

- Initial conditions: Como se explica en el apartado 3.1.4 a la hora

de realizar el algoritmo explicado se usará H1’ = H1/2 en vez de H1’ = H1 por facilidad, así para que el sistema no resulte muy modificado se usará el valor 2, para que en media con 0 de 1.

Page 76: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

75

6.4.7.- Ordena las portadoras pilotos Es un bloque “Selector” usado para ordenar las muestras, ya que los cuatro símbolos se han colocado una tras otro, y se quiere que se entremezclen según la posición que ocupan. Se usa también para tomar las posiciones de las portadoras pilotos continuas una sola vez. En este bloque se utilizan los parámetros siguientes:

- Number of input dimensions: El número de dimensiones a la entrada es uno, puesto que es un vector.

- Index mode: Podemos utilizar tanto “zero-based” como “one-based”,

teniendo en cuenta que seleccionando el primero, empezamos a contar desde ‘0’ los vectores y ,con “one-based”, desde ‘1’.

- Index option: Se escogerá “Index vector(dialog)”, puesto que se

conoce el orden de los datos.

- Index: Aquí se debe indicar el reordenamiento de los datos. El vector se puede obtener usando la función “ordenapos” (véase Anexo A).

- Input port size: Es el tamaño del vector de entrada que, como se ha

nombrado en el apartado anterior, es 2804.

6.4.8.- Divide por la mitad Estos dos bloques (“Gain”) se utilizan, para dividir por la mitad la señal y así poder ejecutar el algoritmo presentado en la introducción del apartado 6.4. Los parámetros utilizados por este bloque son:

- Gain: El valor es 0.5 como se ha indicado en la introducción.

El resto de parámetros no tienen relevancia.

6.4.9.- Sum Este bloque (“Sum”) se utiliza para realizar el algoritmo presentado en la introducción del apartado 6.4. Los parámetros utilizados en este bloque son:

- List of sign: Aquí deben ir los signos que se quieren usar, en este caso “++”, puesto que lo que queremos es hallar la media.

Como en el caso anterior, el resto de parámetros no requieren nombrarse.

Page 77: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

76

6.4.10.- Retraso de una trama Este bloque (“Delay”), nos sirven para realizar el algoritmo presentado en la introducción del apartado 3.1.4. Los parámetros que se utilizan son:

- Delay Units: Hay que escoger entre retrasar por tramas o por muestras. Como se ha dicho será una trama entera, por tanto seleccionamos “Frames”.

- Delay(Samples): Aquí hay que indicar el número de tramas que se

retrasan y, como se ha dicho, este valor debe ser ‘1’.

- Initial conditions: Para que al principio tenga el valor 1 al sumarle 0 y dividirlo por dos necesitamos un valor de ‘2’.

Dejar el resto de parámetros como aparecen.

Page 78: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

77

6.4.11.- Interpolador Complejo Este subsistema se va a utilizar para interpolar la señal de forma lineal. Como las señales que llegan son complejas, este interpolador dividirá las señales en reales e imaginarias, las interpolará, tras lo cuál las volverá a unir.

Fig. 6.5 Bloques de un interpolador complejo

6.4.11.1.- Dividimos la señal en parte real e imaginaria Con este bloque (“Complex to Real-imag”) separamos las señales complejas en parte real y parte imaginaria. En este bloque se utilizan los siguientes parámetros:

- Output: Aquí se debe indicar si se quiere obtener la parte real y la parte imaginaria, o sólo una de las dos y cuál de ellas En este caso se quieren las dos, por tanto “real and imag”.

- Sample time: El tiempo de muestreo es -1 porque si no se

eliminaría parte de la señal.

Page 79: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

78

6.4.11.2.- Interpolación Real En este bloque (“embedded”) se realiza una interpolación lineal de la señal real, se usará un programa detallado en el Anexo A. Los parámetros necesarios son:

- Indicación de tamaño de los vectores de entrada y salida: La entrada serán la suma de los cuatro vectores de portadoras pilotos dispersas y una de las continuas, en total 2273, la salida debe ser el tamaño de los vectores dado por el estándar 6817.

El resto de los parámetros no son necesarios.

6.4.11.3.- Interpolación imaginaria Es exactamente igual a la real.

6.4.11.4.- Unimos para crear una señal compleja En este bloque (“Real-imag to complex”) se une la parte real y la parte imaginaria del canal estimado para tener la estimación de canal completa. Los parámetros que se utilizan son:

- Input: Aquí se debe indicar si la entrada es la parte real y la parte imaginaria, o sólo una de las dos y cuál de ellas. En este caso son las dos, por tanto “real and imag”.

- Sample time: El tiempo de muestreo es -1 porque si no se

eliminaría parte de la señal.

Page 80: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

79

6.5.- Retraso de tres tramas Este bloque (“Delay”), nos sirve para retrasar tres tramas ya que, como se ha dicho en el apartado 3.1.4.2, debido al buffer del demodulador la primera trama no lleva información, pero para realizar la estimación del canal necesitamos usar cuatro símbolos seguidos, por ello, se retrasarán en este bloque 3 símbolos que, añadidos al primero sin información, suman los cuatro. Los parámetros utilizados son:

- Delay Units: Hay que escoger entre retrasar por tramas o por muestras. Como se ha dicho será una trama entera, por tanto seleccionamos “Frames”.

- Delay(Samples): Aquí hay que indicar el número de tramas que se

retrasan y, como se ha dicho, este valor debe ser ‘3’.

- Initial conditions: Se requiere el valor ‘0’, ya que el estimador de canal almacenará cuatro tramas. Estas tres y las condiciones iniciales del buffer del demodulador de OFDM, y todas deben tener el mismo valor.

Dejar el resto de parámetros como aparecen.

Page 81: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

80

6.6.- Retraso de cinco tramas En este bloque (“delay”) se retrasa cinco tramas la señal demodulada, que más las tres del bloque anterior son las ocho que retrasa el estimador de canal. Aunque si no se hiciera, se conseguiría un resultado semejante, el error relativo se mejora. Los parámetros utilizados son:

- Delay Units: Hay que escoger entre retrasar por tramas o por muestras. Como se ha dicho será una trama entera, por tanto seleccionamos “Frames”.

- Delay(Samples): Aquí hay que indicar el número de tramas que se

retrasan y, como se ha dicho, este valor debe ser ‘5’.

- Initial conditions: No se requieren condiciones iniciales; valor ‘0’.

Dejar el resto de parámetros como aparecen.

Page 82: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

81

6.7.- Retraso de ocho tramas En este bloque (“delay”) se retrasa ocho tramas la señal demodulada, ya que como se ha visto antes, la señal que va al estimador de canal se retrasa ocho tramas en total, y la señal que lleva la información original es necesario que también sufra este retraso. Los parámetros utilizados son:

- Delay Units: Hay que escoger entre retrasar por tramas o por muestras. Se va seleccionar “Frames”.

- Delay(Samples): Aquí hay que indicar el número de tramas que se

retrasan y, como se ha dicho, este valor debe ser ‘8*6817’.

- Initial conditions: No se requieren condiciones iniciales; valor ‘0’.

Dejar el resto de parámetros como aparecen.

Page 83: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

82

6.8.- Dividimos por la estima del canal Este bloque (“product”) realiza la división entre los símbolos que han pasado por el canal y el canal estimado, con idea de obtener la estima de la señal transmitida.

- Number of inputs: Aquí se debe marcar las operaciones que se quieren hacer a las señales que, en este caso, será ‘*/’.

El resto de parámetros se dejan al valor de referencia.

Page 84: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

83

6.9.- Eliminador de ruido Este bloque Elimina el ruido de la señal transmitida, para ello, usa el sistema definido en el estándar (véase apartado 5). Lo primero que realizará es la extracción de los 6048 datos, es decir, hay que eliminar las portadoras pilotos y TPS

Fig. 6.6 Eliminador de Ruido

6.9.1.- Seleccionador de datos Este bloque se usa ara escoger los datos dentro de la señal demodulada.

Fig.3.7 Seleccionador de datos

Page 85: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

84

6.9.1.1.- Índices de datos de los símbolos Hay cuatro bloques (“constant”), cada uno de ellos con un vector que indica la posición de los datos y portadoras tanto TPS como pilotos. Los parámetros utilizados por este bloque son:

- Constant value: Este valor es el correspondiente al vector de posiciones.

El resto de parámetros son irrelevantes.

6.9.1.2.- Seleccionador de símbolo

Selecciona, en cada intervalo de tiempo de símbolo, uno de los bloques “Constant”. Para que este bloque funcione necesita una señal que le indique como y cuándo cambiar de entrada. Esta señal será generada desde el exterior del bloque y se unirá por el puerto correspondiente.

Los parámetros utilizados son:

- Number of inputs: Se pondrá el número de estradas que es 4. El resto de parámetros no son importantes.

6.9.1.3.- Señal de control

Crea una función periódica que es constante durante un determinado intervalo y luego se incrementa o decrementa. Esta señal periódica será la que se encargará de indicar al multiport switch cuando escoger un bloque “constant” u otro.

Los parámetros utilizados por este bloque son:

- Vector of output values: Este campo indica los valores que irá tomando la función en cada intervalo de tiempo; se quiere que vaya incrementándose de forma que se indiquen consecutivamente los distintos bloques “constant”. Ahora bien, la señal tiene 8 retrasos, que al ser múltiplo de 4 no afecta, pero como hay un buffer en el demodulador de OFDM, la señal es retrasada una trama, lo que implica que el orden debe ser [3 0 1 2].

- Sample time: En este campo irá el tiempo que se mantiene

constante la señal. Utilizaremos 1120 microsegundos que, como se dijo anteriormente, es la duración de un símbolo.

El resto de campos no se modifican.

Page 86: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

85

6.9.2.- Elimina las portadoras Este bloque (“Selector”) se encarga de escoger los datos que el seleccionador de índices indica de los vectores de entrada. Los parámetros usados son:

- Number of input dimensions: Su valor será 1, ya que queremos que la salida sea un vector con la unión de todos los datos.

- Index mode: Se pueden utilizar ambos valores, “zero-based” y ”one-

based”, teniendo en cuenta que si seleccionamos el primero empezamos a contar los vectores desde cero y, si seleccionamos el segundo, desde uno.

- Index Option: Aquí debemos seleccionar “Index vector(port)”, ya que

de esta manera el índice lo obtiene del puerto Idx. - Input port size: Aquí irá el tamaño del vector de entrada que es

6817. - Sample time: Tendrá valor -1, porque sino podría eliminar

muestras.

6.9.3.- Eliminador de ruido Se encarga de eliminar el ruido. El método es usar el demapeado, los códigos de bloque y convolucional, y desentrelazar las señales (véase apartados 2.3.1 y 5).

Fig. 6.8 Eliminador de ruido

Page 87: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

86

6.9.3.1.- Demodulador El demodulador funciona mediante el cálculo de distancia mínima. Para ello, la idea es calcular el módulo del error entre el símbolo recibido y cada uno de los transmitidos y tomar el que tenga el valor menor.

Fig. 6.9 Demodulador

6.9.3.1.1.- Unbuffer Este bloque se coloca para pasar las muestras de una en una ya que por cada muestra hay que calcular un vector con el modulo del error.

6.9.3.1.2.- Valores de la constelación Este bloque (“Constant”) se usa para almacenar un vector con las posiciones de los símbolos QAM originales. Los parámetros utilizados por este bloque son:

- Constant value: Este valor es el correspondiente al vector de posiciones.

El resto de parámetros son irrelevantes.

6.9.3.1.3.- Restador Este bloque (“Sum”) se encarga de restar el valor del símbolo recibido a los que se transmitieron. Los parámetros utilizados en este bloque son:

- List of sign: Aquí deben ir los signos que se quieren usar, en este caso “-+”, puesto que lo que queremos es hallar es una resta.

Como en el caso anterior, el resto de parámetros no requieren nombrarse.

Page 88: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

87

6.9.3.1.4.- Modulo Este bloque (“Abs”) se encarga de realizar el valor absoluto de las distancias para, así poder calcular la mínima. Los parámetros son irrelevantes.

6.9.3.1.5.- Escoge mínimo Este bloque escoge el mínimo de valor del vector del módulo del error. Los parámetros relevantes son:

- Mode: En este campo se pondrá index, ya que queremos saber en que posición está el valor mínimo, ya que, a la hora de demodularlo, hay que pasarlo a los valores originales y estos coinciden con la posición más uno de la que tienen.

- Index based: El valor de este campo será one-based ya que

queremos saber la posición real.

- Find the minimun value of: En este caso da igual, ya que la entrada es un vector y no una matriz.

Dejar el resto de parámetros como estaban.

6.9.3.1.6.- Restador Este bloque sirve para restarle una unidad al valor obtenido y así conseguir el símbolo demodulado. Los parámetros utilizados en este bloque son:

- List of sign: Aquí deben ir los signos que se quieren usar, en este caso “-+”, puesto que lo que queremos es hallar es una resta.

Como en el caso anterior, el resto de parámetros no requieren nombrarse.

6.9.3.1.7.- Constante Este bloque (“constant”) se usa junto con el bloque restador anterior para eliminar una muestra y así obtener el símbolo correcto. Los parámetros utilizados por este bloque son:

- Constant value: Este valor es la unidad ya que los símbolos comienzan en cero y los recibidos en uno.

El resto de parámetros son irrelevantes.

Page 89: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

88

6.9.3.1.8.- Almacena 6048 muestras Este bloque (“buffer”) almacena las muestras que antes el unbuffer separó, de manera que tengamos el vector de símbolos transmitidos juntos de nuevo. Este bloque tiene los siguientes parámetros:

- Output buffer size (per channel): Aquí debe ir el número de muestras que el buffer debe almacenar antes de soltar las muestras seguidas, es decir, 6048.

- Buffer overlap: Este parámetro sirve sólo cuando la salida no envía

las muestras una detrás de otra. sino que crea una matriz y envía las columnas una a una, y nos indica el número de elementos de esa columna que se repiten en la siguiente; así, en nuestro caso, el valor es 0.

- Inicial conditions: Como queremos que las muestras que entren

sean las primeras, este valor será 0.

6.9.3.1.9.- Convertidor de símbolos a bits Este bloque transforma los símbolos a bits, ya que es necesario para el desentrelazador. Los parámetros usados son:

- Number of bits per integer: Como queremos pasar de símbolos a bits el número es 6. - Output data type: El tipo de salida debe ser boolean, puesto que estamos pasando a bits.

Page 90: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

89

6.9.3.2.- Desentrelazador interno Realiza la operación inversa explicada en el apartado 2.3.1.2.

Fig. 6.10 Desentrelazador interno

Page 91: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

90

6.9.3.2.1.- Desentrelazador de símbolo Se encarga de colocar los símbolos otra vez en el orden que tenían al principio. El procedimiento de entrelazado se explica en el apartado 2.3.1.2.

Fig. 6.11 Desentrelazador de símbolo

6.9.3.2.1.1.- Desentrelazador para símbolos pares Este bloque (“General block interleaver”) desentrelaza según un algoritmo dado por el estándar (apartado 2.3.1.2). El parámetro a poner es:

- Elements: Se colocan aquí las posiciones para el entrelazado.

Page 92: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

91

6.9.3.2.1.2.- Señal de control Genera una señal de control, la cuál varia entre +/- 1 cada trama de 36288 bits.

Fig. 6.12 Señal de Control

6.9.3.2.1.2.1.- Generador de pulso

Se encarga de generar un pulso de amplitud 2 y que varía cada trama. Valores usados:

- Pulse type: Se puede poner basado en tiempo y muestras, en este caso se usara basado en muestras. - Time: Se puede incluir una señal externa que indique tiempo en cada momento o usar el tiempo de la simulación, que será lo adecuado. - Amplitude: Pondremos valor dos para poder obtener la señal de +1 y -1 al restarle uno. - Period: Aquí no importa tanto, el valor que se ponga, mientras se consiga que la parte del pulso de valor 0 y de valor 2 duren lo mismo. Para facilitar se pondrá valor 2. - Pulse width: Como el periodo es 2 y queremos que el pulso y la parte que va a 0 valgan lo mismo, el valor es la mitad, es decir, 1. - Phase delay: Como nos interesa que empiece en el pulso, el valor será 0. -Sample time: Como se está usando el tiempo de simulación se puede usar el valor por defecto -1.

Page 93: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

92

6.9.3.2.1.2.2.- Sumatorio

Este bloque Sum, se usa para restarle uno al pulso y así obtener la señal adecuada. Los parámetros que se utilizan en este bloque son:

- List of sign: Aquí deben ir los signos que queremos usar, en este caso “-+”, puesto que queremos restarle uno.

El resto de parámetros no requieren nombrarse.

6.9.3.2.1.2.3.- DSP constant

Este bloque se usa implementar una constante de valor 1. Los parámetros que se utilizan:

- Constant value: Aquí se coloca el valor de la constante, es decir, 1. - Sample mode: Se pondrá discreto, ya que el modelo no es continuo. - Output: Ponemos sampled based. - Sample time: El tiempo de muestro, se puede poner inf, que suelte una muestra constantemente, -1 cada paso mínimo, o el tiempo esperado.

Page 94: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

93

6.9.3.2.1.3 Entrelazador para símbolos impares. Este bloque “General block interleaver”, realiza la función inversa al entrelazador par, ya que así está recogido en el estándar. Usa los mismos valores que el par (Véase apartado 2.3.1.2). El parámetro a poner es:

- Elements: Se colocan aquí las posiciones para el entrelazado.

6.9.3.2.1.4.-Escoge entre símbolos Este bloque se usa para escoger entre símbolo par o impar usando la señal de control. Los parámetros que se utilizan son:

- Criteria for passing first input: Como se tiene una señal que varia entre -1 y 1, se puede poner u>threshold o u2>=threshold. - Threshold: El umbral se colocará a 0, que está entre -1 y +1. - Sample time: Se dejara el -1 que está por defecto.

Page 95: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

94

6.9.3.2.2.- Buffer Este bloque se usa para almacenar los 756 bits necesarios para hacer el desentrelazado de bits, ya que este se realiza en bloques de 756 (6*126 palabras).

- Output buffer size: Como se ha dicho es 756. - Buffer overloap: Queremos que las muestras salgan por bloques tal cual no que se repitan, por tanto el valor es 0. - Initial conditions: Se pondrá 0, ya que se está dando este valor a todas las condiciones iniciales.

6.9.3.2.3.- Desentrelazador de bits Este bloque “General block interleaver” se encarga de desentrelazar los 756 bits según un algoritmo dado por el estándar (apartado 2.3.1.2); el programa que saca las posiciones puede verse en el Anexo A. El parámetro a poner es:

- Elements: Se colocan aquí las posiciones para el entrelazado.

Page 96: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

95

6.9.3.2.4.- Retraso Este bloque se obtiene de dividir el número de bits, 36288 (6048*6), más el número de ceros que añadirá el buffer anterior (756) entre 2176, es decir, da 17’02. Por lo tanto, hacemos 18*2176-(36288+756) = 2124, que es el número de ceros que hay que añadir para que buffer se complete con ceros y luego empiece a almacenar los datos, prohibiendo que el desentrelazado salga defectuoso. Los parámetros utilizados son:

- Delay Units: Hay que escoger entre retrasar por tramas o por muestras. Como no es un número de tramas, se escogerá “samples”.

- Delay(Samples): Aquí hay que indicar el número de tramas que se

retrasan y, como se ha dicho, este valor debe ser ‘2124’.

- Initial conditions: Se requiere el valor ‘0’, ya que el estimador de canal almacenará cuatro tramas. Estas tres y las condiciones iniciales del buffer del demodulador de OFDM, y todas deben tener el mismo valor.

Dejar el resto de parámetros como aparecen.

6.9.3.2.5.- Buffer Este bloque (“buffer”) se usa para almacenar los 2176 bits que se obtuvieron al añadir los códigos de bloque y convolucional (ver apartado 2.3.1.2).

- Output buffer size: Se necesitan 2176 como se explicó. - Buffer overloap: Queremos que las muestras salgan por bloques tal cual no que se repitan, por tanto el valor es 0. - Initial conditions: Se pondrá 0, ya que se está dando este valor a todas las condiciones iniciales.

Page 97: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

96

6.9.3.3.- Decodificador de Viterbi Realiza la extracción de código convolucional y por tanto la corrección de errores mediante el algoritmo de Viterbi. Los parámetros que se deben implementar son:

- Trellis structure: Se escoge la función de matlab adecuada y los parámetros correspondientes, en nuestro caso Poly2trellis(7,[171 133]).

- Punctured code: Se marca esta casilla, ya que queremos añadir, el

vector punctured (“pinchado”).

- Punctured vector: Es el mismo que en transmisión (apartado 3.1.1.4) [1 1 0 1 1 0]’.

- Decision type: Se usará ‘Hard decision’, por ser, la única que

acepta de entrada bits. El resto de parámetros se dejan como están.

6.9.3.4.- Desentrelazador convolucional Realiza la operación de desentrelazado convolucional, es decir la operación inversa de lo explicado en el apartado 2.3.1.1.

Fig. 6.13 Desentrelazador convolucional

6.9.3.4.1.- Convertidor de bits a bytes Convierte los bits que entran en enteros Los parámetros usados son:

- Number of bits per integer: Como queremos pasar de bits a bytes es 8. - Output data type: El tipo de salida debe ser uint8, ya que queremos bytes y más precisión no es necesaria.

Page 98: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

97

6.9.3.4.2.- Retraso Este retraso se obtiene empíricamente, simulando el sistema y viendo cuantas muestras hay de diferencia para conseguir que entren bloques de 204 muestras. Los parámetros utilizados son:

- Delay Units: Hay que escoger entre retrasar por tramas o por muestras. Como no es un número de tramas, se escogerá “samples”.

- Delay(Samples): Aquí hay que indicar el número de tramas que se

retrasan, ‘31’.

- Initial conditions: Se requiere el valor ‘0’, ya que el estimador de canal almacenará cuatro tramas. Estas tres y las condiciones iniciales del buffer del demodulador de OFDM, y todas deben tener el mismo valor.

Dejar el resto de parámetros como aparecen.

6.9.3.4.3.- Desentrelazador convolucional Realiza la operación de desentrelazado propiamente dicha. Los parámetros que utiliza son los siguientes:

- Rows of shift register: Este valor nos lo da el estándar, 12, y nos indica el número de registros, los cuales van a ser desplazados un número de veces el parámetro que viene a continuación..

- Register length step: Este valor también nos lo da el estándar, 17.

- Initial condition: Como no se indica nada se usara el valor por

referencia, 0.

6.9.3.5.- Decodificador de bloque Reed-Salomon Este bloque (“Integer output RS decoder”) se encarga de la extracción del código de bloque y por tanto, de la última parte de los sistemas de corrección de DVB-T. Los parámetros usados son:

- Codeword length: El valor está dado por el estándar y es 204. - Message length: El valor de este apartado también lo da el estándar, 188.

Page 99: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

98

6.10.- Constelación no Ecualizada y Ecualizada Este bloque (“Discrete-Time Scatterer plot Scope”), sirve para dibujar las constelaciones de los datos, y ver como es la señal antes de ser ecualizada y después de ser ecualizada. Los parámetros utilizados son: Dentro de “plotting properties”:

- Samples per symbol: Como cada símbolo es representado por una muestra, el valor será ‘1’.

- Offset: El valor será ‘0’, porque el offset representa el valor de

muestras que deja pasar antes de empezar a dibujar.

- Points displayed: El valor de este campo será el número de muestras que se deben representar a la vez. Dado que cada símbolo OFDM tiene 6817 muestras, el número será 6817.

- New points per displays: Cada vez que se dibuja un símbolo OFDM,

al siguiente no le aporta nada, así que el valor debe ser el mismo del campo anterior, para dibujar de nuevo un símbolo OFDM entero.

Las otras pestañas son para características del dibujo personales. En “Rendering properties” hay que indicar el tipo de símbolo para representar los datos, el color etc. En “Axes properties” se debe indicar los índices máximo y mínimo de los ejes ‘x’ e ‘y’ y el nombre de estos. En “figure properties” se indica el nombre que va a aparecer. Cuando se dibuje la posición de los datos, indicar si se quiere que la pantalla se abra al empezar la simulación.

Page 100: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

99

6.11.- Calculador del error entre la señal que se transmitió y la recibida Este bloque (“Error rate calculation”) se encarga de calcular los bits erróneos, los bits totales y la BER. Los parámetros usados son:

- Receive Delay: El valor de este campo es el retraso que se producirá en la entrada de señal recibida (Rx); en este caso el valor debe ser 0.

- Computation Delay: El valor de este campo es el retraso que se

producirá en la entrada de señal transmitida (Tx); en este caso el valor debe ser 0.

- Computation mode: Este campo se usa para saber si todos los

datos que entran deben ser analizados o solo parte de ellos. En nuestro caso son todos, por tanto, irreal valor “frame entire”.

- Output data: Este campo indica a donde queremos que los datos

vayan, es decir, si queremos que se almacenen, o si queremos que se salgan por el puerto para mostrarlos, que es el que se escogerá: “port”.

- Reset port: Se usa si queremos añadir una señal para resetear los

datos; no es necesario.

- Stop simulation: Se usa para parar la simulación tras un determinado número de errores, no se marcara, porque queremos que simule todo el tiempo.

Page 101: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

100

6.12.- Muestra la Ber, el número total de bits erróneos y el número total de bits Este bloque (“Display”) se usa para mostrar los datos que el bloque anterior saca por el puerto. Los parámetros son los siguientes:

- Format: Aquí podemos usar prácticamente, cualquiera de las elecciones. Se escogerá short, porque más de 5 decimales no es necesario.

- .Decimation: Indica cada cuantas muestras quieres que se

realimente lo que se muestra.

- Floating display: No se marcará, porque la entrada desaparecería.

Page 102: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

101

6.13.- Pruebas realizadas para comprobar el funcionamiento En este apartado se va comprobar el correcto funcionamiento del sistema.

3.3.1.- Comprobación de que el ecualizador funciona Para ello, ejecutaremos el programa, quitándole el ruido y veremos el parecido de la constelación resultante con la transmitida. Se va a realizar comprobaciones periódicas cada 15 milisegundos hasta tener una constelación lo más parecida posible.

Fig. 6.14 constelación ecualizada a los 15 milisegundos

Fig. 6.15 Constelación ecualizada a los 30 milisegundos

Page 103: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

102

Fig. 6.16 Constelación ecualizada a los 45 milisegundos

Fig. 6.17 Constelación ecualizada a los 60 milisegundos

A partir de los 30 milisegundos la señal empieza a tomar forma de señal 64-QAM. A los 45 milisegundos se obtiene una constelación bastante definida, pero es a los 60 milisegundos cuando se obtiene la representación más clara. A partir de ahí las mejoras no se aprecian visualmente. Si comparamos las constelaciones obtenidas con las que se obtuvieron en el apartado 2.3.5, se ve que la energía es también la misma, no hay atenuación.

Page 104: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

103

6.13.2.- Comprobación de que el eliminador de ruido funciona En este apartado se eliminará el efecto de multicaminos, y se comprobará que el eliminador de ruido funciona correctamente. Para ello, se observará el error periódicamente, cada 15 milisegundos. Notar que el canal en este apartado será unicamente el bloque “Adicción de ruido gaussiano” (Véase apartado 6.2).

Fig. 6.18 Error a los 15 msg

Fig. 6.19 Error a los 30 msg

Fig. 6.20 Error a los 45 msg

Se producen 6 bits erróneos en el milisegundo doceavo. Esto es debido a un ajuste, pero que no afecta al resultado final, ya que la ecualización tarda más y no es hasta el milisegundo vigésimo quinto cuando la ecualización es suficientemente buena como para que el eliminador de ruido funcione correctamente, como se verá en el apartado siguiente.

Page 105: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

104

6.13.3.- Comprobación de que el sistema completo funciona En este apartado vamos a calcular la media del valor relativo en la primera parte del vector de datos recibidos, que es donde el error es mayor y en la última parte, donde el error es menor. Para realizar estas operaciones se hará uso de la función de Matlab "mean”, que calcula la media. Hay que tener en cuenta que los datos almacenados en salida tienen un retraso de 37225 muestras, es decir, que datos(1) debe ser igual a salida(37225+1).Este dato se obtiene sumando todos los retrasos, aunque es más sencillo, averiguarlo con el programa “find” de matlab. Además habrá que ver que el vector datos y el vector dat sean exactamente los mismos, pero desplazados (ver Fig. 3.19 y 3.20), ya que puede pasar que el eliminador de ruido, haga mal la operación, tanto en la salida como en la obtención de los datos reales.

Fig. 6.21 Colocación de la señal datos

6.13.3.1.- Comprobación de que “dat” y “datos” son iguales Para realizar esta operación usamos los vectores generados durante la ejecución del programa. En primer lugar calculamos, el desplazamiento de los datos. Para ello, usamos la función “find”, que busca un valor dentro de una matriz, devolviendo la posición de este. Así obtenemos los valores iniciales de los vectores. Tras eso se obtendrán los valores finales. L = datos(1); a = find(dat == L,1); b = length(dat); c = b-a+1; Si son iguales, el máximo de la resta entre los dos vectores debe ser 0. max(datos(1:b)-dat(a:end)) = 0. Luego se cumple que datos y dat son iguales.

Page 106: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

105

6.13.3.2.- Cálculo del error de los datos en las tramas finales e iniciales. Como se explicó, se calculará el error entre “dat” y “salida”, ya que estos tienen el mismo retraso y así es más sencillo de calcular. Y como se vio en el apartado anterior “dat” coincide con los datos que se enviaron.

- mean((salida(a:a+d) - dat(a:a+d))./dat(a:a+d)) = 2.7911=>279.11% con d = 188*10, es decir 10 tramas de datos.

- mean((salida(end-d:end) - dat(end-d:end))./dat(end-d:end)) = 0 =>0%. El error en las últimas 10 tramas, es inexistente, es más, como se comprueba en las figuras 6.22, 6.23 y 6.24, el error a los 30 msg y a los 45 msg es el mismo. Una mejor observación muestra que desde los 25 msg el error ya no varía.

Fig. 6.22 Error del sistema a los 15 milisegundos

Page 107: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

106

Fig. 6.23 Error del sistema a los 30 milisegundos

Fig. 6.24 Error del sistema a los 45 milisegundos

Page 108: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

107

7.- Conclusiones y líneas de trabajo futuras

7.1.- Conclusiones El objetivo de este proyecto ha sido la implementación de un transmisor y receptor DVB-T, bajo la plataforma de MATLAB y que cumpliera el estándar ETSI EN 300 744 V.1.4.1. Dado que es un simulador, no se han tenido en cuenta aspectos que pueden darse en la vida real y aunque algunos podrían haberse modelado no eran caso de estudio. Algunos de estos aspectos son los siguientes:

- Aumento del error por efectos meteorológicos, tales como lluvia, niebla etc.

- Despolarización de la señal por lluvia. - Colocación perfecta de la antena receptora.

Aunque el problema de estos aspectos podría ser grave, en general el margen de seguridad que tiene el sistema es adecuado. Como se vio en el apartado 6.13.3.2 aunque los datos no deberían empezar a llegar correctamente hasta el milisegundo 45, en el que la ecualización es adecuada (aunque mejorable hasta el milisegundo 60), ya a partir del milisegundo 25 el error era 0. Esto es gracias al gran poder de corrección del sistema que puede, incluso, corregir la señal si la distorsión no es muy elevada. Durante la implementación del proyecto hubo una serie de problemas el primero debido a retrasos que había que colocar en el eliminador de ruido ver (apartado 6.9.3.2.4 y apartado 6.9.3.4.2) para que la señal distorsionada y la señal de de salido llegaran al mismo tiempo, esto se debía a problemas de SIMULINK y fueron resueltos observando los datos almacenados en cada paso, durante la ejecución del modelo. Otro de los inconvenientes surgido durante la ejecución del trabajo fue el problema con la memoria RAM del ordenador, ya que el sistema requería una gran cantidad y hubo que desactivar la variable que guarda SIMULINK para tener un control sobre los “Workspace”, la cuál hacia que el sistema se parase dando el error “Memory allocation error”.

Page 109: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

108

7.2.- Futuras líneas de trabajo Las líneas de trabajo futura deberán estar orientadas a las mejoras de los dos aspectos claves del receptor, que son el eliminador de ruido y el ecualizador. Para obtener una mejora del eliminador de ruido habría que conseguir implementaciones de menor consumo de potencia en los desentrelazadores y en el demapeador. En lo referente al ecualizador, la idea sería mejorar el tiempo de respuesta de este, ya que el estimador de canal tiene una respuesta muy lenta a las variaciones, y si tenemos un canal variante en el tiempo la imagen no se verá nítida. Hay que notar que en general en el espectro libre el canal no es muy variante si las antenas están fijas, pero la televisión actualmente se está moviendo hacia los móviles también, los cuáles pueden alejarse o acercarse de la estación base que les suministra la señal y esto provoca una variación de la potencia que les llega y efecto Doppler en la frecuencia de la señal recibida, que es equivalente a un canal variante en el tiempo.

Page 110: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

109

8.- Bibliografía Escritas [1] AN INTRODUCTION TO ORTHOGONAL FREQUENCY DIVISION MULTIPLEXING BY OVE EDFORS MAGNUS SANDELL JAN-JAAP VAN DE BEEK DANIEL LANDSTROM FRANK SJÖBERG [2] Orthogonal Frequency Division Multiplexing Hrushikesh Vasuki (1999) [3] Performance analysis and low power VLSI implementation of DVB-T by Imed Ben Dhaou and Laszlo Horvath. [4] ETSI EN 300 744 V.1.4.1 Páginas Web [5] http://telecom.fi-b.unam.mx/Curso/Introduccion.pdf [6] http://es.wikipedia.org [7] http://www.monografias.com/trabajos5/tv/tv.shtml [8] http://members.fortunecity.es/zemogd/ecualizadores.html [9]http://telecomid.webs.upv.es/ftp/CD/Programa%20Oficial%20Telecom%20I+D%202007_07_14_archivos/pdf/8.pdf [10]http://books.google.es/books?id=VW7_F8qBsEUC&dq=digital+transmission+engineering+anderson&pg=PP1&ots=oLdUOL3XJY&sig=rfS5WEwyqJu-ioHGydBROROgLJc&hl=es&sa=X&oi=book_result&resnum=1&ct=result# PPR8,M1 Otros [11] Tutorial de MATLAB. [12] Demo “dvbt_sim” de SIMULINK.

Page 111: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

110

Anexo A Aquí se escribirán los programas de MATLAB.

Generador_dvbt_fun %Realiza el calculo de los valores necesarios para llevar a cabo la %generación de la señal DVB-T y la comprobación del funcionamineto del %receptor. %Calculamos las posiciones de las portadoras piloto s, en los 4 símbolos %distintos que hay. posiciones = calculapilot; posicion1 = posiciones(1,2:end) + 1; posicion2 = posiciones(2,1:end-1) + 1; posicion3 = posiciones(3,1:end-1) + 1; posicion4 = posiciones(4,1:end-1) + 1; %Se escriben las posiciones de las portadoras TPS q ue vienen en el estandar %hay que tener en cuenta que comienzan por el valor 0 posicionestps = [34 50 209 346 413 569 595 688 790 901 1073 1219 1262 1286 1469 1594 1687 1738 1754 1913 2050 2117 2273 2 299 2392 2494 2605 2777 2923 2966 2990 3173 3298 3391 3442 3458 3617 3 754 3821 3977 4003 4096 4198 4309 4481 4627 4670 4694 4877 5002 5095 5 146 5162 5321 5458 5525 5681 5707 5800 5902 6013 6185 6331 6374 6398 6 581 6706 6799]; %Se colocan las posiciones de los datos, seguidos d e las posiciones de %portadoras pilotos y por último de las portadoras TPS, tal y como %quedarían trás el bloque Concatena datos, pilotos y portadoras TPS, %explicado en el apartado 2.2.4. Pdat = 1:6048; Ppilo = 6049:6749; PTP = 6750:6817; %Se le suma uno a las posiciones de portadoras TPS para que comiencen en 1 %ya que en matlab la posición '0' no existe, como q ueremos quedarnos sólo %con las posiciones de los datos, ponemos a 0 las p osiciones de las %portadoras TPS primero para su extracción posterio r. datos = 1:6817; ptps = posicionestps + 1; datos(ptps) = 0; %Se pone a '0' las posiciones de las posiciones de cada uno de las %portadoras pilotos, en los distintos símbolos, y s e extraen todos los 0, %quedando en cada Pia las posiciones únicamente de los datos. %El siguiente paso, una vez obtenidas las posicione s de los datos, y de las %portadoras, es ordenarlos como convengan para que funcione el bloque, esto

Page 112: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

111

%depende de la versión de MATLAB. En este programa se obtuvo para la %versión R2007b. P1a = datos; P1a(posicion1) = 0; P1a = find(P1a ~= 0); P1 = zeros(1,6817); P1(posicion1) = Ppilo; P1(P1a) = Pdat; P1(ptps) = PTP; P2a = datos; P2a(posicion2) = 0; P2a = find(P2a ~= 0); P2 = zeros(1,6817); P2(posicion2) = Ppilo; P2(P2a) = Pdat; P2(ptps) = PTP; P3a = datos; P3a(posicion3) = 0; P3a = find(P3a ~= 0); P3 = zeros(1,6817); P3(posicion3) = Ppilo; P3(P3a) = Pdat; P3(ptps) = PTP; P4a = datos; P4a(posicion4) = 0; P4a = find(P4a ~= 0); P4 = zeros(1,6817); P4(posicion4) = Ppilo; P4(P4a) = Pdat; P4(ptps) = PTP; [dvb_bit_int_table,dvb_sym_int_table] = tablas;

Page 113: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

112

Tablas function [dvb_bit_int_table,dvb_sym_int_table] = tablas %OBJETIVO %La función siguiente crea dos tablas una para entr elazado de bit y otra %parael entrelazado de simbólos. %VARIABLES %N = Segun el estandar 64-QAM usa 6 bits (2^6 = 64) y 126 palabras, % 126*6 = 756. %ind = El estandar da los valores. %Mmax = En 8k es la potencia de 2 que está más cerc a, es decir, 8192. %pot = (log2 Mmax)-1, ya que estamos usando las pal abras binarias. %Nmax = valor máximo de canales en la modulación OF DM. Nmax = 6048; pot = 12; Mmax = 8192; ind = [0,63,105,42,21,84]; N = 756; dvb_bit_int_table = 1:N; dvb_bit_int_table = reshape(dvb_bit_int_table, 6, 1 26); % La demultiplexación para 64-QAM no Jerárquica es se segun el estandar dvb_bit_int_table = dvb_bit_int_table([1 4 2 5 3 6] ,:); % Se realizan los distintos entrelazados recogidos en el estandar. dvb_bit_int_table(1,:) = dvb_bit_int_table(1,mod([0 :125] + ind(1),126) + 1); dvb_bit_int_table(2,:) = dvb_bit_int_table(2,mod([0 :125] + ind(2),126) + 1); dvb_bit_int_table(3,:) = dvb_bit_int_table(3,mod([0 :125] + ind(3),126) + 1); dvb_bit_int_table(4,:) = dvb_bit_int_table(4,mod([0 :125] + ind(4),126) + 1); dvb_bit_int_table(5,:) = dvb_bit_int_table(5,mod([0 :125] + ind(5),126) + 1); dvb_bit_int_table(6,:) = dvb_bit_int_table(6,mod([0 :125] + ind(6),126) + 1); dvb_bit_int_table = dvb_bit_int_table(:);

Page 114: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

113

%Realizamos las operaciones que vienen en el estand ar q = 0; h = zeros(1,Mmax); R = zeros(1,pot); for indx = 0:Mmax-1, if indx == 2, R(1) = 1; end Rsum = R(1)*2^7+R(2)*2^1+R(3)*2^4+R(4)*2^2+R(5)* 2^9+R(6)*2^6+ ... R(7)*2^8+R(8)*2^10+R(9)*2^0+R(10)*2^3+R(1 1)*2^11+R(12)*2^5; h(q+1) = mod(indx,2)*2^12+Rsum; if h(q+1)<Nmax, q = q + 1; end R = [R(2:pot) xor(xor(R(1),R(2)),xor(R(5),R(7))) ]; end dvb_sym_int_table = h(1:Nmax)+1; % Borramos variables que no sirvan más clear R Rsum h indx q % Se expande la tabla ya que son 6 bits por símbolo dvb_sym_int_table = [dvb_sym_int_table*6-5; dvb_sym_int_table*6-4; dvb_sym_int_table*6-3; dvb_sym_int_table*6-2; dvb_sym_int_table*6-1; dvb_sym_int_table*6]; dvb_sym_int_table = dvb_sym_int_table(:);

Page 115: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

114

function posiciones = calculapilot %Calcula las posiciones de las portadoras pilotos c ontinuas y dispersas %VARIABLES % - posiciones: Matriz con cuatro filas, una para c ada símbolo OFDM % distinto. %- p: Indica el símbolo que se está tratando en ese momento. %- Pcontinuas: Las posiciones de las portadoras con tinuas. %- x: Valor que aumenta de forma lineal, para que l as portadoras dispersas % tomen todos los valores. %- k: Se usa para recorrer el vector de pilotos con tinuas. %- j: Se usa para recorrer el vector de pilotos dis persas. posiciones = zeros(4,700); %Este valor sale poniendo uno más alto luego %pones la restricción que está en comentario %y ves en que posicion se hace 0 y ese es el %número pcontinuas = [0 48 54 87 141 156 192 201 255 279 28 2 333 432 450 483 525 531 618 636 714 759 765 780 804 873 888 918 939 942 969 984 1050 1101 1107 1110 1137 1140 1146 1206 1269 1323 1377 1 491 1683 1704 1752 1758 1791 1845 1860 1896 1905 1959 1983 1986 2037 2 136 2154 2187 2229 2235 2322 2340 2418 2463 2469 2484 2508 2577 2592 2 622 2643 2646 2673 2688 2754 2805 2811 2814 2841 2844 2850 2910 2973 3 027 3081 3195 3387 3408 3456 3462 3495 3549 3564 3600 3609 3663 3687 3 690 3741 3840 3858 3891 3933 3939 4026 4044 4122 4167 4173 4188 4212 4 281 4296 4326 4347 4350 4377 4392 4458 4509 4515 4518 4545 4548 4554 4 614 4677 4731 4785 4899 5091 5112 5160 5166 5199 5253 5268 5304 5313 5 367 5391 5394 5445 5544 5562 5595 5637 5643 5730 5748 5826 5871 5877 5 892 5916 5985 6000 6030 6051 6054 6081 6096 6162 6213 6219 6222 6249 6 252 6258 6318 6381 6435 6489 6603 6795 6816]; for p = 0:3 %hay 4 símbolos que tienen posiciones de las piloto s diferentes x = 1; k = 1; j = 1; while (j <= 700) %los dos if comprueban que la piloto continua está entre las no %continuas if (k <= length(pcontinuas))&(posiciones(p+1,j) > pcontinuas(k)) if (posiciones(p+1,j-1) < pcontinuas(k)) posiciones(p+1,j+1) = posiciones(p+ 1,j); posiciones(p+1,j) = pcontinuas(k); k = k + 1; j = j + 1; % este bucle que se repite también abajo es para cubrir el

Page 116: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

115

% caso en que la piloto continua que viene esté colocada a % continuación de la piloto continua anterior, para verlo % comprueba la que la última scatered pilot esté despues de % la continua while (k <= length(pcontinuas))&(posiciones(p+1,j) > pcontinuas(k)) posiciones(p+1,j+1) = posiciones(p+1 ,j); posiciones(p+1,j) = pcontinuas(k); k = k+1; j = j+1; end %cuando la continua coincide con la no continua hay que coger %la siguiente continua y comprobar que la siguiente continua %se coloque antes de la última no continua elseif (posiciones(p+1,j-1) == pcontinuas(k)) k = k + 1; while (k <= length(pcontinuas))&(posiciones(p+1,j) > pcontinuas(k)) posiciones(p+1,j+1) = posicione s(p+1,j); posiciones(p+1,j) = pcontinuas( k); k = k+1; j = j+1; end end end posiciones(p+1,j+1) = 3*p + 12*(x-1); %distintas posiciones de las %piloto no continuas x = x + 1; j = j + 1; end if (p ~= 0) %se almacena un cero al principio de más %el ultimo valor de pcontinuas no se almacena posiciones(p+1,j) = pcontinuas(k); end end

Page 117: Proyecto Fin de Carrera - bibing.us.esbibing.us.es/proyectos/abreproy/11664/fichero/Proyecto.pdf · 2.3- Generador de señales DVB-T _____11 2.3.1.-Generación de datos sin ... Gaussian

116

Interpolador function canal_int = interpolador(canal) %Función que interpola el canal de forma cuadrática , la función de %interpolación a*x^2+b*x+c. Se calculará los valore s de de a,b,c %resolviendo la ecuación de segundo grado que se fo rma al sustituir %x en tres lugares distintos, en los que se sepa la solución, es decir, %en uno de los 2273 puntos conocidos. %VARIABLES %canal_int: Canal trás la interpolación. %canal: Canal antes de la interpolación. % %Se interpola entre los dos primeros lugares , ya q ue hay que interpolar %con la primera ecuación entre la muestra primera y la segunda, pero %también entre la segunda y la tercera, en ambos ca sos dos muestras, %en el resto de los casos se interpolasolo en un gr upo, es decir, con %los siguientes valores de a,b,c se inerpola solo e ntre dos muestras. canal_int = zeros(3*length(canal)-2,1); c = canal(1); b = (-canal(3)+4*canal(2)-3*c)/6; a = (canal(3)-2*canal(2)+c)/18; canal_int(1) = canal(1); canal_int(2) = a+b+c; canal_int(3) = a*4+b*2+c; %interpolamos en los siguientes grupos for i = 1:(length(canal)-2) c = canal(i); b = (-canal(i+2)+4*canal(i+1)-3*c)/6; a = (canal(i+2)-2*canal(i+1)+c)/18; canal_int(3*(i-1)+4) = canal(i+1); canal_int(3*(i-1)+5) = a*16+b*4+c; canal_int(3*(i-1)+6) = a*25+b*5+c; canal_int(3*(i-1)+7) = canal(i+2); end