UNIVERSIDAD DE BUENOS AIRES FACULTAD DE INGENIERÍA CARRERA DE MAESTRÍA EN SISTEMAS EMBEBIDOS MEMORIA DEL TRABAJO FINAL Módulos de búsqueda y seguimiento para receptor GPS sobre FPGA Autor: Esp. Ing. Facundo Larosa Director: Dr. Ing. Héctor Lacomi (CITEDEF, UTN FRH) Codirector: Ing. Nicolás Álvarez (FIUBA, UNSAM) Jurados: Ing. Carlos Beláustegui Goitía (FIUBA) Ing. Edgardo Comas (CITEDEF, UTN FRBA) Ing. Juan Manuel Cruz (FIUBA, UTN FRBA) Este trabajo fue realizado en la Ciudad Autónoma de Buenos Aires entre abril y noviembre de 2017. III Resumen El trabajo planteado abarca el estudio, diseño, simulación y pruebas de un módulo de búsqueda y de un módulo de seguimiento sobre FPGA que serán utilizados a futuro para la implementación de un receptor GPS definido por software. La implementación de sistemas de comunicaciones sobre hardware configurable es una línea de gran interés ya que las técnicas de diseño, desarrollo y pruebas se utilizan en una gran cantidad de aplicaciones y constituyen una rama altamente específica del diseño de sistemas embebidos facilitando el estudio y ensayo de arquitecturas de receptores satelitales. Este trabajo involucró la puesta en práctica de diferentes áreas de conocimiento estudiadas durante el posgrado: diseño de hardware programable, sistemas de comunicaciones sobre FPGA, control digital, sistemas embebidos de tiempo real, protocolos de comunicaciones, entre otras. V « Aunque tuviera el don de la profecía y conociera todos los misterios y toda la ciencia, aunque tuviera toda la fe, una fe capaz de trasladar montañas, si no tengo amor, no soy nada.» (1 Cor 13:2) VII Agradecimientos Con la escritura de estos agradecimientos llega a su fin un período de dos años de estudio, de reflexión y de grandes desafíos: una verdadera aventura. Quisiera agradecer a Ariel Lutenberg quién depositó su confianza en mí y posi- bilitó el cursado del posgrado a través del otorgamiento de una beca. A mis compañeros, Danilo Zecchin y Pablo Ridolfi, quienes como modernos Vir- gilios me acompañaron con sus consejos y su apoyo incondicional en los momen- tos de flaqueza. A mi director, Héctor Lacomi, quién me aconsejó y corrigió pacientemente el texto de este trabajo con gran dedicación y comprensión. Su ayuda fue inestimable. A mi familia, pilares silenciosos, no analizaron ecuaciones, razonamientos o dia- gramas, pero sin su apoyo no podría haber logrado nada. Tal vez resulte extraño la cita de una epístola paulina acerca de la preeminencia del amor en un texto técnico. Tal vez alguien pueda pensar que está fuera de lu- gar o que es afectado o pomposo. A mi favor quiero decir que busqué en ella una síntesis de mis sentimientos, unas palabras que reflejen mi ánimo y que perma- nezcan como un recordatorio de este momento. Todo permanece en constante cambio: áreas de estudio, enfoques, colegas... hasta el contexto de nuestras labores varía año a año. Así, en el transcurso de nuestras carreras, los profesionales acumulamos técnicas, herramientas, conceptos, abs- tracciones, esquemas de organización... de forma que es grande la tentación de olvidar lo esencial y confundir los medios con el fin: simplemente nos prepara- mos para servir mejor a los demás, a la sociedad, a nuestro Pueblo. Me resulta misterioso que mis profesores me decían que uno tenía que hacer el sacrificio de estudiar. La palabra me remitía a dolor, a privación, sentía por ella una profunda resistencia. Pero el significado original del término viene del latín sacro (sagrado) y facere (hacer): «hacer sagradas las cosas». Pido siempre entonces, que el amor que hace sagradas las cosas, que trasciende toda ciencia, la complete y le de sentido en los demás. Así sea. IX Índice general Resumen III 1. Introducción General 1 1.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.1.1. Descripción general del sistema GPS . . . . . . . . . . . . . . 1 1.2. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2. Introducción Específica 5 2.1. Generación de señal GPS . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.1.1. Esquema general . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.1.2. Generación y características del código C/A . . . . . . . . . 5 2.1.3. Efecto del medio sobre la señal GPS . . . . . . . . . . . . . . 10 2.2. Método de búsqueda serial . . . . . . . . . . . . . . . . . . . . . . . 11 2.2.1. Caso general . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.2.2. Caso particular: Código C/A local en fase con código C/A de la señal de entrada . . . . . . . . . . . . . . . . . . . . . . 17 2.2.3. Caso particular: Oscilador local con igual frecuencia de la señal de frecuencia intermedia . . . . . . . . . . . . . . . . . 18 2.2.4. Caso particular: Coincidencia de fase de C/A y desplaza- miento de frecuencia de la señal local y la señal de entrada . 19 2.3. Diseño del lazo de seguimiento . . . . . . . . . . . . . . . . . . . . . 20 2.3.1. Estimación de la diferencia de fase y frecuencia entre la por- tadora de la señal de entrada y la señal local . . . . . . . . . 21 2.3.2. Estimación de la diferencia de fase de código C/A entre la señal de entrada y la señal local . . . . . . . . . . . . . . . . . 22 2.3.3. Controladores de lazo de portadora y de código . . . . . . . 24 2.3.4. Estudio y simulación del lazo de portadora . . . . . . . . . . 25 Respuesta del sistema frente a escalón de frecuencia . . . . . 28 Respuesta del sistema frente a escalón de fase . . . . . . . . 31 2.4. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3. Diseño e Implementación 35 3.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 3.1.1. Consideraciones generales . . . . . . . . . . . . . . . . . . . . 35 3.1.2. Consideraciones de diseño . . . . . . . . . . . . . . . . . . . 36 3.2. Front end . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 3.3. Módulo de adquisición de señales digitales . . . . . . . . . . . . . . 39 3.3.1. Interfaz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.3.2. Operación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.3.3. Pruebas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 3.4. Módulo de reproducción de señales digitales . . . . . . . . . . . . . 43 3.4.1. Interfaz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 3.4.2. Operación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 X 3.4.3. Pruebas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 3.5. Generador de código C/A . . . . . . . . . . . . . . . . . . . . . . . . 45 3.5.1. Interfaz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 3.5.2. Operación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 3.5.3. Pruebas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 3.6. Oscilador controlado numéricamente (NCO) . . . . . . . . . . . . . 47 3.6.1. Interfaz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 3.6.2. Operación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 3.6.3. Pruebas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 3.7. Módulo de entrada . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 3.7.1. Interfaz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 3.7.2. Operación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 3.7.3. Pruebas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 3.8. Módulo de memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 3.8.1. Interfaz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 3.8.2. Operación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 3.8.3. Pruebas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 3.9. Módulo de generación de señal GPS local . . . . . . . . . . . . . . . 58 3.9.1. Interfaz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 3.9.2. Operación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 3.9.3. Pruebas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 3.10. Módulo de búsqueda . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 3.10.1. Interfaz (núcleo) . . . . . . . . . . . . . . . . . . . . . . . . . 62 3.10.2. Operación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 3.10.3. Pruebas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 3.10.4. Interfaz (periférico) . . . . . . . . . . . . . . . . . . . . . . . . 67 3.10.5. Operación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 3.10.6. Pruebas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 3.11. Módulo de seguimiento . . . . . . . . . . . . . . . . . . . . . . . . . 71 3.11.1. Interfaz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 3.11.2. Operación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 3.11.3. Pruebas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 3.11.4. Interfaz (periférico) . . . . . . . . . . . . . . . . . . . . . . . . 78 3.11.5. Operación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 3.11.6. Pruebas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 4. Ensayos y Resultados 83 4.1. Validación de algoritmos de búsqueda utilizando señales reales . . 83 4.1.1. Búsqueda de satélites en vista . . . . . . . . . . . . . . . . . . 84 4.1.2. Evolución de frecuencia y fase de código C/A . . . . . . . . 87 4.2. Validación de módulo de búsqueda . . . . . . . . . . . . . . . . . . . 88 4.3. Validación de algoritmo de seguimiento con señales reales . . . . . 93 5. Conclusiones 97 5.1. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 5.2. Trabajo a futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 Bibliografía 99 XI Índice de figuras 1.1. Segmento de control del sistema GPS [3] . . . . . . . . . . . . . . . . 3 1.2. Órbitas de los satélites del sistema GPS (vista superior) en coorde- nadas ECEF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.3. Órbitas de los satélites del sistema GPS (lateral) . . . . . . . . . . . 4 2.1. Esquema general de generación de señal GPS donde se indican las frecuencias específicas de cada señal involucrada . . . . . . . . . . . 6 2.2. Esquema de generación de los códigos de Gold . . . . . . . . . . . . 6 2.3. Autocorrelación del código C/A . . . . . . . . . . . . . . . . . . . . 9 2.4. Autocorrelación del código C/A (detalle en torno a n=0) . . . . . . 9 2.5. Correlación cruzada del código C/A del satélite 1 y 2 . . . . . . . . 10 2.6. Desviación de la frecuencia central por efecto Doppler . . . . . . . . 11 2.7. Desviación de la frecuencia central por efecto Doppler . . . . . . . . 11 2.8. Esquema general diagrama de búsqueda . . . . . . . . . . . . . . . 13 2.9. Gráfico de C[nol,∆fdl] . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.10. Gráfico de C[nol = n0,∆fdl] . . . . . . . . . . . . . . . . . . . . . . . 18 2.11. Gráfico de C[nol,∆fdl = ∆fd] . . . . . . . . . . . . . . . . . . . . . . 19 2.12. Estructura general del lazo de seguimiento . . . . . . . . . . . . . . 21 2.13. Valores de correlación normalizados para los códigos Early, Prompt y Late (señal en fase) . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.14. Valores de correlación normalizados para los códigos Early, Prompt y Late (señal atrasada) . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.15. Estructura en bloques del controlador del lazo de seguimiento . . . 24 2.16. Estructura en bloques del lazo de portadora . . . . . . . . . . . . . . 25 2.17. Modelo del lazo de portadora en el dominio Z . . . . . . . . . . . . 26 2.18. Estructura general del sistema realimentado . . . . . . . . . . . . . 27 2.19. Cambio de la referencia de frecuencia de la señal de entrada . . . . 29 2.20. Error de fase instantáneo (∆φ) . . . . . . . . . . . . . . . . . . . . . . 29 2.21. Correlación del canal en fase (I) . . . . . . . . . . . . . . . . . . . . . 29 2.22. Correlación del canal en cuadratura (Q) . . . . . . . . . . . . . . . . 30 2.23. Variación de la frecuencia del oscilador local digital (∆f ) . . . . . . 30 2.24. Cambio de la referencia de fase de la señal de entrada . . . . . . . . 31 2.25. Error de fase instantáneo (∆φ) . . . . . . . . . . . . . . . . . . . . . . 31 2.26. Correlación del canal en fase (I) . . . . . . . . . . . . . . . . . . . . . 32 2.27. Correlación del canal en cuadratura (Q) . . . . . . . . . . . . . . . . 32 2.28. Variación de la frecuencia del oscilador local digital (∆f ) . . . . . . 32 3.1. Diagrama en bloques del frontend . . . . . . . . . . . . . . . . . . . 35 3.2. Diagrama en bloques general de una FSMD . . . . . . . . . . . . . 37 3.3. Diagrama esquemático del circuito del frontend . . . . . . . . . . . . 38 3.4. Placa de circuito impreso (PCB) del frontend . . . . . . . . . . . . . 39 3.5. Fotografía del frontend con su antena activa conectado a la placa de desarrollo FPGA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 XII 3.6. Interfaz del módulo de adquisición de señales digitales . . . . . . . 40 3.7. Diagrama en bloques del módulo de adquisición de señales digita- les . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 3.8. Señales correspondientes al inicio de una adquisición . . . . . . . . 42 3.9. Señales correspondientes al proceso de adquisición . . . . . . . . . 42 3.10. Señales correspondientes al fin del proceso de adquisición . . . . . 43 3.11. Interfaz del módulo de reproducción de señales digitales . . . . . . 43 3.12. Diagrama en bloques del módulo de reproducción de señales digi- tales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 3.13. Archivo de datos de la memoria (COE) . . . . . . . . . . . . . . . . 45 3.14. Señales del módulo de reproducción (captura del testbench) . . . . . 45 3.15. Señales del módulo de reproducción (captura del analizador lógico) 45 3.16. Interfaz del módulo de generación de código C/A . . . . . . . . . . 46 3.17. Diagrama en bloques del generador de código CA . . . . . . . . . . 47 3.18. Generación de código C/A (salida caCode para el satélite 1 . . . . . 47 3.19. Interfaz del NCO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 3.20. Diagrama en bloques del NCO . . . . . . . . . . . . . . . . . . . . . 49 3.21. Oscilograma de las señales de salida del NCO: seno (superior) y coseno (inferior) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 3.22. Valores medidos de frecuencia de salida en función del incremento de fase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 3.23. Interfaz del módulo de entrada . . . . . . . . . . . . . . . . . . . . . 50 3.24. Diagrama en bloques del módulo de entrada . . . . . . . . . . . . . 51 3.25. Diagrama de señales del módulo de entrada . . . . . . . . . . . . . 52 3.26. Interfaz del módulo de memoria . . . . . . . . . . . . . . . . . . . . 52 3.27. Diagrama en bloques del módulo de memoria . . . . . . . . . . . . 53 3.28. Comienzo de la prueba de escritura continua . . . . . . . . . . . . . 55 3.29. Comienzo del ciclo de grabación . . . . . . . . . . . . . . . . . . . . 55 3.30. Fin del ciclo de grabación de la memoria 0, comienzo de grabación de la memoria 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 3.31. Escritura alternada de las memorias 0 y 1 . . . . . . . . . . . . . . . 55 3.32. Fin de escritura de la memoria 1 y comienzo de lectura de memoria 0 56 3.33. Lectura de memoria 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 3.34. Escritura alternada de las memorias 0 y 1 en ausencia de nuevo comando de lectura . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 3.35. Lectura continua de la memoria 0 mientras la memoria 1 se está grabando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 3.36. Detalle del cambio de escritura/lectura de la memoria 1 a la me- moria 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 3.37. Interfaz del módulo de generación de señal GPS local . . . . . . . . 58 3.38. Diagrama en bloques del módulo de generación de señales local . . 59 3.39. Inicio de la grabación de señales réplica . . . . . . . . . . . . . . . . 60 3.40. Detalle de la inversión de fase de las señales réplica . . . . . . . . . 61 3.41. Fin de la grabación de las señales réplica . . . . . . . . . . . . . . . . 61 3.42. Lectura de las señales réplica (initPhase=0) . . . . . . . . . . . . . . . 62 3.43. Lectura de las señales réplica (initPhase=1024) . . . . . . . . . . . . . 62 3.44. Detalle del cambio de dirección de lectura . . . . . . . . . . . . . . . 62 3.45. Interfaz del núcleo del módulo de búsqueda . . . . . . . . . . . . . 63 3.46. Diagrama en bloques del módulo de búsqueda . . . . . . . . . . . . 64 3.47. Comienzo de la inicialización del módulo de búsqueda . . . . . . . 65 3.48. Fin de la inicialización del módulo de búsqueda . . . . . . . . . . . 65 XIII 3.49. Inicio de generación de señal GPS local . . . . . . . . . . . . . . . . 66 3.50. Inicio de la correlación de señal GPS local . . . . . . . . . . . . . . . 66 3.51. Fin de la correlación de señal GPS local . . . . . . . . . . . . . . . . 67 3.52. Interfaz del módulo de búsqueda . . . . . . . . . . . . . . . . . . . . 67 3.53. Diagrama en bloques del módulo de búsqueda con su interfaz SPI . 68 3.54. Señales de inicialización del periférico de búsqueda . . . . . . . . . 70 3.55. Señales de inicialización completada . . . . . . . . . . . . . . . . . . 70 3.56. Señales de configuración de correlación . . . . . . . . . . . . . . . . 70 3.57. Señales de inicio de correlación . . . . . . . . . . . . . . . . . . . . . 71 3.58. Señales de finalización de correlación . . . . . . . . . . . . . . . . . 71 3.59. Señales de lectura de valores de correlación . . . . . . . . . . . . . . 71 3.60. Interfaz del módulo de seguimiento . . . . . . . . . . . . . . . . . . 72 3.61. Interfaz del módulo de seguimiento . . . . . . . . . . . . . . . . . . 73 3.62. Valores de correlación normalizados para los códigos Early, Prompt y Late (señal en fase) . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 3.63. Valores de correlación normalizados para los códigos Early, Prompt y Late (señal atrasada) . . . . . . . . . . . . . . . . . . . . . . . . . . 74 3.64. Diagrama en bloques (énfasis en los bloques utilizados para detec- tar la sincronía del código C/A) . . . . . . . . . . . . . . . . . . . . . 75 3.65. Diagrama en bloques (énfasis en los bloques utilizados para detec- tar la sincronía de la señal de FI) . . . . . . . . . . . . . . . . . . . . 76 3.66. Inicialización módulo de seguimiento . . . . . . . . . . . . . . . . . 76 3.67. Sincronización del código C/A . . . . . . . . . . . . . . . . . . . . . 77 3.68. Inicio de la acumulación . . . . . . . . . . . . . . . . . . . . . . . . . 77 3.69. Fin de la acumulación . . . . . . . . . . . . . . . . . . . . . . . . . . 77 3.70. Interfaz del módulo de seguimiento . . . . . . . . . . . . . . . . . . 78 3.71. Diagrama en bloques del módulo de seguimiento con su interfaz SPI 79 3.72. Inicialización de parámetros del periférico de seguimiento . . . . . 80 3.73. Pulso setStatus que habilita la configuración del periférico . . . . . . 81 3.74. Lectura de los valores de correlación del periférico de seguimiento 81 4.1. Esquema de conexión del frontend con el módulo de adquisición y la memoria SRAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.2. Fotografía del frontend con su antena activa conectado a la placa de desarrollo FPGA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.3. Matriz de correlación normalizada de una secuencia real (satélite no a la vista) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 4.4. Matriz de correlación normalizada de una secuencia real (satélite a la vista) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 4.5. Máximos de correlación para la operación de búsqueda en función del número de satélite . . . . . . . . . . . . . . . . . . . . . . . . . . 86 4.6. Máximos de correlación (divididos por la media de la matriz) para la operación de búsqueda en función del número de satélite . . . . 86 4.7. Matriz de correlación normalizada de una secuencia real (período de integración = 5ms) . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 4.8. Evolución temporal del desplazamiento de la frecuencia central . . 88 4.9. Evolución temporal de la fase del código C/A . . . . . . . . . . . . 88 4.10. Conexión de módulos instanciados sobre la FPGA para validación del módulo de búsqueda . . . . . . . . . . . . . . . . . . . . . . . . . 89 4.11. Placa de desarrollo EDU-CIAA-NXP . . . . . . . . . . . . . . . . . . 89 4.12. Esquema de conexión entre placa EDU-CIAA-NXP y placa Nexys 2 90 XIV 4.13. Matriz de correlación normalizada calculada por el periférico de búsqueda (señal sintética) . . . . . . . . . . . . . . . . . . . . . . . . 91 4.14. Valores de correlación para fase de código C/A fija y frecuencia variable (señal sintética) . . . . . . . . . . . . . . . . . . . . . . . . . 91 4.15. Valores de correlación para frecuencia fija y fase de código C/A variable (señal sintética) . . . . . . . . . . . . . . . . . . . . . . . . . 92 4.16. Matriz de correlación normalizada calculada por el periférico de búsqueda (señal real) . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 4.17. Valores de correlación para fase de código C/A fija y frecuencia variable (señal real) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 4.18. Valores de correlación para frecuencia fija y fase de código C/A variable (señal real) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 4.19. Estructura general del lazo de seguimiento . . . . . . . . . . . . . . 93 4.20. Estructura en bloques del controlador del lazo de seguimiento . . . 94 4.21. Estructura en bloques del lazo de portadora . . . . . . . . . . . . . . 94 4.22. Valores de estimadores Early, Prompt y Late para algoritmo de se- guimiento con señales reales . . . . . . . . . . . . . . . . . . . . . . . 95 4.23. Valor del canal I (en fase) para algoritmo de seguimiento con seña- les reales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 4.24. Valor del canal Q (en cuadratura) para algoritmo de seguimiento con señales reales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 4.25. Valor del canal I (en fase) para algoritmo de seguimiento con seña- les reales (en negro, se resalta la envolvente de los bits del mensaje e navegación) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 XV Índice de Tablas 1.1. Planos orbitales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2.1. Salidas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3.1. Parámetros del proyecto . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.2. Interfaz - Módulo de adquisición de señales digitales . . . . . . . . 40 3.3. Interfaz - Módulo de reproducción de señales digitales . . . . . . . 44 3.4. Interfaz - Módulo Generador de código C/A . . . . . . . . . . . . . 46 3.5. Interfaz - NCO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 3.6. Interfaz - Módulo de entrada . . . . . . . . . . . . . . . . . . . . . . 51 3.7. Interfaz - Módulo de memoria . . . . . . . . . . . . . . . . . . . . . . 53 3.8. Interfaz - Módulo de generación de señal GPS local . . . . . . . . . 58 3.9. Interfaz - Módulo de búsqueda . . . . . . . . . . . . . . . . . . . . . 63 3.10. Interfaz - Módulo de búsqueda . . . . . . . . . . . . . . . . . . . . . 68 3.11. Interfaz - Módulo de seguimiento . . . . . . . . . . . . . . . . . . . . 72 3.12. Interfaz - Módulo de seguimiento . . . . . . . . . . . . . . . . . . . . 78 1 Capítulo 1 Introducción General 1.1. Introducción 1.1.1. Descripción general del sistema GPS El sistema de posicionamiento global (GPS, del inglés Global Positioning System) es un sistema de navegación satelital creado, operado y mantenido por el gobierno de los Estados Unidos de América (EUA) a través del Departamento de Defensa. La Fuerza Aérea de los Estados Unidos (USAF, del inglés United States Air Force) se encarga de la operación del segmento de control a través de estaciones terrenas distribuídas en todo el mundo. El sistema tiene por objeto proveer servicios de posicionamiento a los usuarios militares de los EUA y sus aliados (denominado PPS, Precise Positioning Servi- ce, así como servicios de posicionamiento a usuarios civiles de menor resolución (denominado SPS, Standard Positioning Service). Los servicios de uso civil estaban originalmente sometidos a una degradación in- tencional de la precisión de sus señales conocida como ’disponibilidad selectiva’ (SA, del inglés selective availability). La disponibilidad selectiva fue eliminada de- finitivamente del sistema a través de un decreto de la administración Clinton el 1 de mayo del año 2000 [1]. Los nuevos satélites del Bloque III serán puestos en servicio a partir del año 2017 carecen de este mecanismo, reafirmando el compro- miso del sistema con los usuarios civiles. En cuanto a la división de responsabilidades de las diferentes partes del sistema, se puede dividir en tres grandes segmentos: el segmento de control, el segmento satelital y el segmento de usuario. Segmento de control: se compone de las estaciones terrenas de control, las cuales se encargan de monitorear el estado y posición de los satélites, rea- lizar análisis y enviar comandos de control y datos a la constelación. En la figura 1.1 se pueden observar diferentes estaciones ubicadas a lo largo y an- cho del mundo. Las estaciones principales se ubican en bases de la USAF: Colorado Springs (la estación principal), isla Ascensión, isla Diego García, Kwajalein y Hawaii. Segmento satelital: está compuesto por los satélites operacionales y en re- serva de la constelación GPS. Éstos se encuentran ubicados en seis planos orbitales de inclinación aproximadamente constante (en torno a 55◦) res- pecto del ecuador terrestre. Los planos se encuentran separados unos 60◦ 2 Capítulo 1. Introducción General en azimut. Las órbitas tienen un radio promedio de 26.000 km aproxima- damente, poseyendo baja excentricidad (son cuasicirculares) y el período de las mismas es de alrededor de 12 horas (de forma tal que cada 24 ho- ras aproximadamente la constelación completa un período respecto de un observador terrestre). Se requieren al menos 24 satélites en operación para mantener los servicios de posicionamiento con una precisión de acuerdo a los requerimientos del sistema, es decir, 4 satélites por plano orbital. En la figura 1.2 se muestra un gráfico de las órbitas de los satélites del sistema GPS realizado en Octave en base a datos extraídos de la página oficial de la Federación Rusa (https://www.glonass-iac.ru/en/GLONASS/). Las órbitas de los satélites se graficaron utilizando el sistema ECEF (del inglés, Earth-Centered, Earth-Fixed), un sistema de coordenadas solidario a la Tierra con origen en el centro terrestre, eje X en la dirección del punto de latitud / longitud 0◦, 0◦, eje Z en la dirección del eje de rotación terrestre sentido Norte y eje Y mutuamente perpendicular a los anteriores, formando una terna derecha. Cada color representa un plano orbital según lo que se detalla en la tabla 1.1. En la figura 1.2 los planos orbitales desplazados 180◦ se observan super- puestos debido a la perspectiva. En la figura 1.3 se observa desde una pers- pectiva lateral, permitiendo apreciar los planos de 80◦ y 260◦ (separados 180◦). Los satélites radian las diferentes señales del sistema de uso militar y civil. La señal estándar de uso civil se conoce como L1; a través de ella cada sa- télite envía un mensaje de navegación compuesto por su estado de salud, parámetros orbitales (efemérides) y parámetros de corrección. A través de los parámetros orbitales y de corrección, se puede hallar la posición de ca- da satélite para, en base a mediciones indirectas de la distancia al mismo, hallar la posición del receptor. Segmento de usuario: se compone por los receptores que hacen uso de las señales del sistema GPS para su posicionamiento. Un receptor GPS se en- carga de recibir y procesar el contenido de las señales desde la recepción de la señal de radiofrecuencia, hasta la obtención del mensaje de navegación y el informe del cálculo de posición al usuario a partir de las ecuaciones de posicionamiento [2]. TABLA 1.1: Satélites por plano orbital Azimut Satélites (por número) Color 20◦ 8 12 13 14 22 Amarillo 80◦ 7 23 29 30 Rojo 140◦ 11 15 24 25 27 Verde 200◦ 16 18 26 28 Azul 260◦ 1 2 4 6 20 Violeta 320◦ 3 5 9 17 19 21 31 Negro https://www.glonass-iac.ru/en/GLONASS/ 1.1. Introducción 3 Vandenberg AFB California Alternate Master Control Station Air Force Monitor Station Hawaii Master Control Station Schriever AFB Colorado NGA Monitor Station South Korea Australia Bahrain South Africa United Kingdom Ecuador USNO Washington Alaska New Zealand AFSCN Remote Tracking Station Ascension Diego Garcia Cape Canaveral Florida Kwajalein Ground Antenna New Hampshire Greenland Guam Updated April 2016 GPS Control Segment FIGURA 1.1: Segmento de control del sistema GPS [3] FIGURA 1.2: Órbitas de los satélites del sistema GPS (vista supe- rior) en coordenadas ECEF 4 Capítulo 1. Introducción General FIGURA 1.3: Órbitas de los satélites del sistema GPS (lateral) 1.2. Objetivos Se plantearon como objetivos principales de este trabajo el diseño, implementa- ción, simulación y ensayos de módulos digitales destinados a procesar una señal GPS en banda L1. Los módulos se describen en lenguaje VHDL y se realizaron ensayos utilizando señales sintéticas y reales. Cómo objetivos secundarios se plantearon la familiarización y aprendizaje de téc- nicas de descripción de circuitos digitales en VHDL, utilización de bancos de pruebas (testbenches) a fin de validar el correcto funcionamiento de los circuitos implementados en cuanto al procesamiento de las señales, la implementación de un sistema de control digital para el módulo de seguimiento, el desarrollo de scripts para el procesamiento de señales y simulación de diferentes partes del sis- tema, entre otros. Los módulos principales son: el módulo de búsqueda (search) y el módulo de seguimiento (tracking). El módulo de búsqueda tiene por función en base a la señal de entrada detectar si se encuentra presente un determinado satélite (cada satélite está individualizado por un código diferente como se verá en el Capítulo 2), así como parámetros propios de la señal (fase de código C/A y desplazamiento de la frecuencia central). Estos parámetros se utilizan para alimentar un módulo de seguimiento, el cual tiene por función «seguir» la fase de código C/A y desplazamiento de la frecuen- cia central para el satélite hallado de forma tal de poder extraer el mensaje de navegación. 5 Capítulo 2 Introducción Específica En esta sección se tratan diferentes aspectos de la generación de las señales GPS: generación, propiedades, efecto del medio y detección. 2.1. Generación de señal GPS 2.1.1. Esquema general Este proyecto está enfocado en el procesamiento de la banda L1 del sistema GPS, que es la banda de posicionamiento de uso estándar civil (denominada en in- glés, SPS, Standard Positioning System). Todos los satélites de esta constelación, emiten su mensaje de navegación (de aquí en más, el mensaje) a una única fre- cuencia de portadora de 1575,42MHz. A fin de poder diferenciar los mensajes de los diferentes satélites, se hace el producto del mensaje con una señal de «ruido pseudoaleatorio», denominada código C/A (del inglés, coarse acquisition), el cual es único para cada satélite. Esta técnica se denomina, según se analice como una modulación o un tipo de multiplexación como DSSS (direct-sequence spread spec- trum) o CDMA (code division multiplex access). Los códigos C/A tienen un período de 1023 chips (se utiliza la palabra «chips» para hacer referencia a los estados del código C/A, reservándose el uso de la palabra bits, sólo para el mensaje) cuya tasa de transmisión es de 1,023 Mb/s, siendo su período de 1ms. En la figura 2.1 se indica un esquema general de generación de la señal, donde se observa en primer lugar la operación de mezcla entre el código C/A y el mensaje de datos, siendo una operación XOR ya que es una una señal digital de un bit. Luego de la combinación anterior, se procede a realizar la mezcla con la señal de portadora, conformando esta última operación una modulación del tipo BPSK (del inglés, binary phase shift keying). 2.1.2. Generación y características del código C/A Los códigos C/A pertenecen a la familia de códigos pseudoaleatorios de Gold [4]. El esquema de generación de estos códigos se muestra en la figura 2.2, donde se observan dos registros de desplazamiento de 10 bits (G1 y G2), los cuales se inicializan con unos y se realimentan tal como se indica. El código C/A se obtiene realizando la operación XOR de la salida del registro G1 y la XOR de dos flip flops del registro de desplazamiento G2, la cual depende del número de satélite. En la tabla 2.1 se indican las salidas que deben tomarse para cada código de satélite. 6 Capítulo 2. Introducción Específica + Señal L1 /10 10,23 MHz x154 Código CA /20 Datos X 1,023MHz Portadora: 1575,42 MHz 1kHz 50Hz FIGURA 2.1: Esquema general de generación de señal GPS donde se indican las frecuencias específicas de cada señal involucrada 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 XOR XOR XOR Código C/A clk rst clk rst Lógica de selección XOR Registro G1 Registro G2 FIGURA 2.2: Esquema de generación de los códigos de Gold 2.1. Generación de señal GPS 7 TABLA 2.1: Salidas a tomar según SAT ID SatID Seleccion salidas 1 2 + 6 2 3 + 7 3 4 + 8 4 5 + 9 5 1 + 9 6 2 + 10 7 1 + 8 8 2 + 9 9 3 + 10 10 2 + 3 11 3 + 4 12 5 + 6 13 6 + 7 14 7 + 8 15 8 + 9 16 9 + 10 17 1 + 4 18 2 + 5 19 3 + 6 20 4 + 7 21 5 + 8 22 6 + 9 23 1 + 3 24 4 + 6 25 5 + 7 26 6 + 8 27 7 + 9 28 8 + 10 29 1 + 10 30 1 + 6 31 2 + 7 32 4 + 9 8 Capítulo 2. Introducción Específica La utilidad de la aplicación de los códigos C/A está dada por las propiedades de la autocorrelación de código C/A de un determinado satélite y la correlación cruzada entre códigos C/A de satélites distintos. Se define el producto de correla- ción entre dos señales x[n] e y[n] (acotadas en el tiempo, cada una con N cantidad de muestras) como: cxy[n] = x[n] ~ y[n] , N−1∑ l=0 x∗[l]y[l + n] (2.1) donde: cxy[n]: Producto de correlación entre x[n] y y[n] x[n], y[n]: Señales a correlacionar ~ :Operador producto de correlación x∗[n] : x[n] conjugada En el contexto de este trabajo, se asumirá que el producto de correlación es cir- cular, es decir, que para una señal x[n], acotada a un número de N muestras en el intervalo n = [0, N − 1] se cumple que x[n] = x[n + N ]. Esta propiedades se identifican usualmente como «aritmética modular de módulo N» [5]. En el caso del código C/A de un satélite i-ésimo, su autocorrelación normalizada (cCAi[n]) al valor del máximo de autocorrelación puede expresarse como: cCAi[n] = 1 M CAi[n] ~ CAi[n] = 1 M N−1∑ l=0 CAi[l] ~ CAi[l + n] (2.2) donde: cCAi[n]: Autocorrelación normalizada CAi[n]: Secuencia de código C/A del satélite i-ésimo M :Máximo de autocorrelación N: Número de muestras La función de autocorrelación normalizada es máxima para n = 0 y comparati- vamente menor para valores distintos de n. En la figura 2.3, se muestra la función de autocorrelación para el código C/A del satélite 1 (cCA1[n]). El tiempo discreto n está escalado para indicar desplazamiento en chips. En la figura 2.4 se muestra un detalle de la función cCA1[n] (autocorrelación nor- malizada del satélite 1) en torno a n = 0, donde se observa que se desvanece linealmente al desplazarse un chip a derecha o izquierda. 2.1. Generación de señal GPS 9 FIGURA 2.3: Autocorrelación del código C/A FIGURA 2.4: Autocorrelación del código C/A (detalle en torno a n=0) Para satélites distintos, la función de correlación cruzada normalizada se expresa como: cCAij [n] = 1 M CAi[n] ~ CAj [n] = 1 M N−1∑ l=0 CAi[l] ~ CAj [l + n] (2.3) donde: cCAij [n]: Correlación normalizada CAi[n]: Secuencia de código C/A del satélite i-ésimo CAj [n]: Secuencia de código C/A del satélite j-ésimo M :Máximo de correlación N: Número de muestras En la figura 2.5 se muestra como ejemplo la correlación para el código C/A del satélite 1 y el 2. Se observa que para todo valor de n, la correlación no presenta un máximo distin- tivo. Esta propiedad de los códigos C/A se utiliza para discriminar los mensajes 10 Capítulo 2. Introducción Específica FIGURA 2.5: Correlación cruzada del código C/A del satélite 1 y 2 provenientes de diferentes satélites y para sincronizar la señal de entrada para un satélite determinado de forma local. 2.1.3. Efecto del medio sobre la señal GPS La señal generada y radiada por los satélites se propaga por el espacio libre, atra- viesa las capas de la atmósfera y es recibida por el receptor. Dado que los satélites se encuentran en constante movimiento (se desplazan en órbitas cuasicirculares con un radio medio de 26.000 km aproximadamente), la señal emitida llegará al receptor con una fase desconocida y afectada por efecto Doppler, el cual despla- zará la frecuencia central (1575,42 MHz) de acuerdo a velocidad relativa (en el sentido radial) entre el satélite y el receptor. Ignorando efectos relativistas, se puede describir la variación de frecuencia expe- rimentada en términos de la longitud de onda de la señal vista desde el receptor como: λ = λ0(1 + 1 c k̂ · ~v) (2.4) donde: λ :Longitud de onda observada por el receptor [m] λ0:Longitud de onda emitida por el satélite [m] c: Velocidad de la luz [m/s] k̂: Versor en la dirección de la línea de vista receptor-satélite ~v: Velocidad del satélite relativa al receptor Utilizando MATLAB, se realizaron simulaciones de la cinemática de los satélites respecto de un receptor estacionario relativo a la Tierra. El receptor se ubicó en las coordenadas −34,603333◦S,−58,381667◦O, correspondientes al centro de la Ciu- dad de Buenos Aires. En base a las ecuaciones de posicionamiento indicadas en [6] se discretizó la posición para cada satélite en función del tiempo. Luego, se ob- tuvo la velocidad instantánea de cada uno de los satélites y se aplicó la ecuación 2.4 a fin de obtener el desplazamiento en frecuencia. Los parámetros orbitales se 2.2. Método de búsqueda serial 11 obtuvieron de datos reales del almanac 1 de los satélites de la constelación GPS, los cuales se muestran en tiempo real en la página oficial de la Federación Rusa (https://www.glonass-iac.ru/en/GLONASS/) . En la figura 2.6 se muestra la variación de frecuencia central debido al efecto Dop- pler para diferentes satélites de la constelación en vista. El lapso simulado abarca seis horas, observándose que el corrimiento de frecuencia se encuentra aproxima- damente en el intervalo ∆f = ±4000Hz respecto de la frecuencia central. FIGURA 2.6: Desviación de la frecuencia central por efecto Dop- pler En la figura 2.7 se muestra la razón de cambio de la frecuencia central respecto del tiempo. Se observa que en todos los casos esta razón es menor a 1Hzs . FIGURA 2.7: Desviación de la frecuencia central por efecto Dop- pler 2.2. Método de búsqueda serial Los algoritmos de búsqueda se utilizan para hallar parámetros esenciales de la señal GPS de cada satélite, que luego se utilizaran para realizar el seguimiento y 1El almanac es un juego reducido de efemérides que se utiliza para posicionar los satélites de forma aproximada y facilitar la predicción de su ubicación https://www.glonass-iac.ru/en/GLONASS/ 12 Capítulo 2. Introducción Específica poder obtener el mensaje de navegación. De esta manera, el método de búsqueda debe ser capaz de: Hallar el valor de la fase del código C/A (n0) Hallar el valor de desplazamiento de la frecuencia central debida al efecto Doppler (fd) Ser insensible a la fase de la portadora (φ0) El método de búsqueda serial desarrollado permite hallar el valor de la fase del código C/A(n0) y el valor de desplazamiento de la frecuencia central debido al efecto Doppler(∆fd). Es un método de los tipos denominados «de fuerza bruta» en el cual se intenta dar con la combinación correcta (n0,∆fd) probando exhaus- tivamente todas las combinaciones posibles dentro de un dominio determinado en búsqueda del máximo de autocorrelación entre la señal GPS a la entrada del receptor y una réplica generada localmente. La señal de entrada del sistema (sin considerar ruido) debida a un satélite se puede describir de forma general como: x[n] = A ·D[n] · CAi[n+ n0] · cos[2π(fi + ∆fd)Tsn+ φ0] (2.5) Donde: x[n] :Señal GPS en el dominio del tiempo discreto [V] n: Variable independiente, tiempo discreto [adimensional] n0: Fase inicial del código C/A [adimensional] A: Amplitud pico de la señal [V] CAi[n]: Código C/A del satélite i-ésimo [adimensional] D[n]: Señal de datos [adimensional] fi: Frecuencia intermedia [Hz] ∆fd: Desplazamiento de la frecuencia central debida al efecto Doppler [Hz] Ts: Tiempo entre muestras, inversa de la frecuencia de muestreo [s] φ0: Fase inicial de la portadora [adimensional] La señal de datos D[n] es una señal binaria que modula la fase de la portadora. Siendo su valor−1 o 1, puede obviarse en el desarrollo matemático de las técnicas que se van a desarrollar incluyendo su efecto directamente en el valor de la fase φ0. El esquema general de búsqueda serial se indica en la figura 2.8. La señal de en- trada x[n] se multiplica por el código C/A del satélite i-ésimo (la fase inicial de este código C/A es n0l) y luego se divide en dos ramas las cuales se multiplicarán por dos réplicas en cuadratura de la portadora en frecuencia intermedia. Las ré- plicas seno y coseno están en la frecuencia Ω en torno a la frecuencia intermedia central desplazadas una cantidad ∆fdl que se asimila al corrimiento por efecto Doppler. 2.2. Método de búsqueda serial 13 XOR x [n] CAi [n+n0l] XOR XOR cos [ n] sen [ n] W W S S ( )2 ( )2 + xi [n] xq [n] acumXi acumXq (acumXi)2 (acumXq)2 c[n] FIGURA 2.8: Esquema general diagrama de búsqueda A continuación se tratará analíticamente el problema. La señal de entrada x[n] (en el siguiente análisis se ha normalizado la señal para simplificar las ecuacio- nes, sin pérdida de generalidad) se multiplica con la copia local del código C/A del satélite que se pretende buscar (CAj [n]) y las componentes en cuadratura del oscilador local obteniendo: xiCA[n] = CAi[n+n0] ·CAj [n+n0l] · cos[2π(fi + fd)Tsn+φ0]cos[2π(fi + ∆fdl)Tsn] (2.6) xqCA[n] = CAi[n+n0] ·CAj [n+n0l] · cos[2π(fi+fd)Tsn+φ0]sen[2π(fi+∆fdl)Tsn] (2.7) donde: xiCA[n]: Señal de entrada multiplicada por copia de código C/A local y oscilador local en fase xqCA[n]: Señal de entrada multiplicada por copia de código C/A local y oscilador local en cuadratura n0l: Desplazamiento de la copia del código C/A local ∆fdl: Desplazamiento en frecuencia del oscilador local Utilizando las identidades trigonométricas para el producto de funciones armó- nicas [7] se obtiene: 14 Capítulo 2. Introducción Específica xiCA[n] =1 2 · CAi[n+ n0] · CAj [n+ n0l]· (2.8){ cos[2π(2fi + fd + ∆fdl)Tsn+ φ0] + 1 2 · cos[2π(fd −∆fdl)Tsn+ φ0] } xqCA[n] =1 2 · CAi[n+ n0] · CAj [n+ n0l]· (2.9){ sen[2π(2fi + fd + ∆fdl)Tsn+ φ0]− 1 2 · sen[2π(fd −∆fdl)Tsn+ φ0] } Las señales descriptas en las ecuaciones 2.8 y 2.10 se acumulan durante un perío- do determinado (usualmente la duración de un período C/A equivalente a 1ms) obteniéndose: AcumXi[nol,∆fdl] = N−1∑ n=0 1 2 · CAi[n+ n0] · CAj [n+ n0l] · cos[2π(2fi + fd + ∆fdl)Tsn+ φ0] (2.10) + N−1∑ n=0 1 2 · CAi[n+ n0] · CAj [n+ n0l] · cos[2π(fd −∆fdl)Tsn+ φ0] AcumXq[nol,∆fdl] = N−1∑ n=0 1 2 · CAi[n+ n0] · CAj [n+ n0l] · sen[2π(2fi + fd + ∆fdl)Tsn+ φ0] (2.11) + N−1∑ n=0 −1 2 · CAi[n+ n0] · CAj [n+ n0l] · sen[2π(fd −∆fdl)Tsn+ φ0] (2.12) Los primeros términos de cada una de las ecuaciones 2.11 y 2.12, consisten en una señal centrada en la frecuencia 2fi y tienden a cero al ser integrados ya que los acumuladores tienen una respuesta de tipo pasabajos[8], de tal forma que: AcumXi[nol,∆fdl] = N−1∑ n=0 1 2 ·CAi[n+n0] ·CAj [n+n0l] · cos[2π(fd−∆fdl)Tsn+φ0] (2.13) AcumXq[nol,∆fdl] = − N−1∑ n=0 1 2 ·CAi[n+n0]·CAj [n+n0l]·sen[2π(fd−∆fdl)Tsn+φ0] (2.14) Finalmente, los valores acumulados se elevan al cuadrado y se suman, obtenién- dose: 2.2. Método de búsqueda serial 15 C[nol,∆fdl] = {AcumXi[nol,∆fdl]}2 + {AcumXq[nol,∆fdl]}2 (2.15) La ecuación 2.15 representa la ecuación de salida general para el método de bús- queda serial. Éste consiste en ir variando los parámetros nol y ∆fdl con el fin de hallar si un satélite se encuentra presente o no, y de estarlo, su fase relativa de código C/A (nol) y desplazamiento respecto de la frecuencia central (∆fdl). Có- mo se demostrará, el valor de C[nol,∆fdl] representa un «valor testigo» el cual nos indicará si las condiciones anteriores se cumplen. A continuación, se detalla el caso general de búsqueda en el cual no se introduce ninguna restricción sobre los parámetros nol y ∆fdl. A partir de ese caso, se analizan las implicancias de los casos particulares que surgen de que uno o ambos valores de nol y ∆fdl coincidan con los valores homólogos de la señal de entrada y su importancia para la técnica de búsqueda. 2.2.1. Caso general En el caso general, se evalúa el valor de la función C[nol,∆fdl] (definida en la ecuación 2.15) para un dominio bidimensional compuesto por una cantidad finita de pares (nol,∆fdl). Para tener una idea más cabal sobre el valor que esperamos de la funciónC[nol,∆fdl]: C[nol,∆fdl] = {AcumXi[nol,∆fdl]}2 + {AcumXq[nol,∆fdl]}2 (2.15) con: AcumXi[nol,∆fdl] = N−1∑ n=0 1 2 ·CAi[n+n0] ·CAj [n+n0l] · cos[2π(fd−∆fdl)Tsn+φ0] (2.13) AcumXq[nol,∆fdl] = − N−1∑ n=0 1 2 ·CAi[n+n0]·CAj [n+n0l]·sen[2π(fd−∆fdl)Tsn+φ0] (2.14) Las ecuaciones 2.13 y 2.14 pueden reescribirse de forma más compacta utilizando el enfoque de señales complejas [9]. Si se considera que la señal de entrada x[n] puede «mezclarse» con un «oscilador local complejo» de la siguiente forma: xiq[n] = x[n] · e[j2π(fi+∆fdl)Tsn] (2.16) xiq[n] = xi + jxq (2.17) donde: xi = x[n] · cos[2π(fi + ∆fdl)Tsn] (2.18) 16 Capítulo 2. Introducción Específica xq = x[n] · sen[2π(fd + ∆fdl)Tsn]; (2.19) Así, la señal xiq[n] es la representación compleja de la señal de entrada x[n] des- plazada en frecuencia (fi + ∆fdl) hacia la izquierda. El espectro en frecuencia constará de dos componentes: una en la frecuencia ∆fd − ∆fdl (más cercana al valor de frecuencia 0 o valor DC) y otra ubicada en la frecuencia 2fi + ∆fd + ∆fdl que se extinguirá luego de la integración. La señal xiq[n], usualmente se denomi- na «señal de banda base compleja» ya que corresponde a la señal en frecuencia intermedia mezclada con el «oscilador local complejo» y filtrada. Si ahora, se de- fine a la señal conjugada de xiq[n] como x∗iq[n], se multiplica por la copia local del código C/A CAj [n + n0l] y se acumula de la misma forma que se hizo anterior- mente, se obtiene: N−1∑ n=0 x∗iq[n]CAj [n+ n0l] = N−1∑ n=0 xi[n]CAj [n+ n0l]− j N−1∑ n=0 xq[n]CAj [n+ n0l] (2.20) La sumatoria expresada en la ecuación 2.20 es el producto de correlación entre xiq[n] y la copia local del código C/A, tal como se desprende de comparar con la ecuación 2.1: c[nol,∆fdl] = x[n] ~ CAj [n] , N−1∑ l=0 x∗iq[l]CAj [l + n] (2.21) El módulo al cuadrado de la función c[nol,∆fdl] equivale a: |c[nol,∆fdl]|2 = ∣∣∣∣∣ N−1∑ n=0 xi[n]CAj [n+ n0l]− j N−1∑ n=0 xq[n]CAj [n+ n0l] ∣∣∣∣∣ 2 (2.22) |c[nol,∆fdl]|2 = ∣∣∣∣∣ N−1∑ n=0 xi[n]CAj [n+ n0l] ∣∣∣∣∣ 2 + ∣∣∣∣∣ N−1∑ n=0 xq[n]CAj [n+ n0l] ∣∣∣∣∣ 2 (2.23) |c[nol,∆fdl]|2 = ∣∣∣∣∣ N−1∑ n=0 xi[n]CAj [n+ n0l] ∣∣∣∣∣ 2 + ∣∣∣∣∣ N−1∑ n=0 xq[n]CAj [n+ n0l] ∣∣∣∣∣ 2 (2.24) |c[nol,∆fdl]|2 = AcumX2 i [nol,∆fdl] +AcumX2 q [nol,∆fdl] = C[nol,∆fdl] (2.25) de donde se demuestra que los valores hallados según el esquema propuesto en la figura 2.8 equivale a obtener el cuadrado del módulo del producto de correlación entre la señal de banda base compleja y el código C/A del satélite buscado. 2.2. Método de búsqueda serial 17 A modo de ejemplo, se generó sintéticamente una señal GPS en frecuencia inter- media utilizando MATLAB (fi = 4,092MHz) en base a la bibliografía [10] con un desplazamiento Doppler igual a ∆fd = 1000Hz y un código C/A desplazado 800 chips a derecha. La frecuencia de muestreo empleada fue fs = 16,368MHz, es decir 16 muestras por chip. Se empleó la ecuación 2.15 para calcular el va- lor de la función de salida del módulo de búsqueda en el dominio de ∆fdl ∈ [−4000; 4000]Hz y n0l ∈ [0; 16367]. La función de salida se grafica en la figura 2.9. FIGURA 2.9: Gráfico de C[nol,∆fdl] 2.2.2. Caso particular: Código C/A local en fase con código C/A de la señal de entrada En el caso de que la réplica local de código C/A se encuentra en fase respecto del código C/A de la señal de entrada, equivale a asumir la restricción n0 = n0l, de forma tal que la expresión de C[nol,∆fdl] se reduce a partir de la ecuación 2.15 a: C[nol = n0,∆fdl] = { N−1∑ n=0 1/2 · cos[2π(∆fd −∆fdl)Tsn+ φ0] }2 (2.26) + { N−1∑ n=0 1/2 · sen[2π(∆fd −∆fdl)Tsn+ φ0] }2 C[nol = n0,∆fdl] = 1/4 ∣∣∣∣∣ N−1∑ n=0 ej[2π(∆fd−∆fdl)Tsn+φ0] ∣∣∣∣∣ 2 (2.27) Es decir, en este caso se está integrando en un intervalo de N muestras una señal compleja cuya única componente de frecuencia vale (∆fd − ∆fdl). Si el perío- do de esta señal es igual al intervalo de integración, C[nol,∆fdl] valdrá 0. Así, considerando un período de integración igual a 1ms, a medida que la frecuencia (∆fd −∆fdl) exceda (en módulo a 1kHz), el valor de C[nol,∆fdl] tenderá a 0. 18 Capítulo 2. Introducción Específica En la figura 2.10, se grafica el valor de C[nol,∆fdl] para este caso en particular, tomando como parámetro ∆fd = 1000Hz. FIGURA 2.10: Gráfico de C[nol = n0,∆fdl] 2.2.3. Caso particular: Oscilador local con igual frecuencia de la señal de frecuencia intermedia En el caso de que la frecuencia del oscilador local sea igual a la portadora en frecuencia intermedia de la señal de entrada, equivale a aplicar la restricción ∆fd = ∆fdl de forma tal que la expresión deC[nol,∆fdl] a partir de 2.15 se reduce a: C[nol,∆fdl = ∆fd] = { N−1∑ n=0 1/2 CAi[n+ n0]CAj [n+ n0l]cos[φ0] }2 (2.28) + { N−1∑ n=0 1/2 CAi[n+ n0]CAj [n+ n0l]sen[φ0] }2 C[nol,∆fdl = ∆fd] = 1/4 { N−1∑ n=0 CAi[n+ n0]CAj [n+ n0l] }2 (2.29) Asumiendo que en la ecuación 2.30, i = j y operando podemos obtener: C[nol,∆fdl = ∆fd] = 1/4 { N−1∑ n=0 CAi[n+ n0]CAi[n+ n0 + ∆n] }2 (2.30) donde se ha sustituído: ∆n = n0l − n0 (2.31) 2.2. Método de búsqueda serial 19 siendo ∆n la diferencia de fase entre el código C/A de la señal de entrada y el código C/A generado localmente. De acuerdo a la ecuación 2.1, la ecuación 2.30 puede escribirse simplemente como: C[nol,∆fdl = ∆fd] = 1/4 c2 CAi[∆n] (2.32) donde: cCAi[∆n]: Producto de autocorrelación de CAi[n] Cómo ya se ha indicado en la sección 2.1, la función de autocorrelación del código C/A será máxima para ∆n = 0, es decir, cuando la fase del código C/A local y el de la señal de entrada sean iguales. En la figura 2.11 se muestra un gráfico a modo de ejemplo, donde el código C/A local y el de la señal de entrada están separados 800 chips. La señal de entrada es una señal ideal generada sintéticamente para realizar la prueba. Para facili- tar la interpretación se ha normalizado el eje de abscisas para indicar la variable directamente en chips. FIGURA 2.11: Gráfico de C[nol,∆fdl = ∆fd] 2.2.4. Caso particular: Coincidencia de fase de C/A y desplazamiento de frecuencia de la señal local y la señal de entrada En el caso que se cumplan las condiciones referenciadas en las secciones 2.2.2 y 2.2.3, equivale a la aplicación de las restricciones n0 = n0l y ∆fd = ∆fdl simultá- neamente, de forma tal que la expresión de C[nol,∆fdl] a partir de 2.15 se reduce a: C[n0l = n0,∆fdl = ∆fd] = ( N 2 )2 (2.33) En este caso, estamos en presencia del máximo de la función C[nol,∆fdl] cuyo valor será una constante dependiendo solamente de la cantidad de muestras en el intervalo de acumulación considerado (N ). 20 Capítulo 2. Introducción Específica 2.3. Diseño del lazo de seguimiento En esta sección se realizará una síntesis de la estructura y funcionamiento pro- puestas para el lazo de seguimiento (tracking). En términos generales se utilizará como bibliografía de base el capítulo 5 de [11] y otras referencias específicas que se citarán puntualmente. Como se ha explicado en la sección 2.2 resulta fundamental hallar los valores de frecuencia central y fase de código C/A de la señal del satélite cuyo mensaje se quiere obtener. Este primer paso es necesario para configurar inicialmente la eta- pa que se encarga de realizar el seguimiento continuo de la señal, es decir, de mantener sincronizada la señal de entrada. Esta operación se realiza generando réplicas locales tanto de la portadora en frecuencia intermedia (FI) como de la se- cuencia de código C/A del satélite; las cuales deben mantenerse en fase respecto de la señal de entrada. De esta manera, la «mezcla» de la señal de entrada con las réplicas, según lo analizado en la sección 2.2.4, elimina tanto la portadora como la secuencia de código C/A de la señal de entrada dejando disponible el mensaje de navegación. El proceso de seguimiento es esencialmente bidimensional, esto es, tanto la frecuencia de la portadora como la fase del código C/A deben «se- guirse» simultáneamente; en caso contrario no será posible obtener el mensaje de navegación. En ese caso, el proceso de búsqueda debe iniciarse nuevamente para obtener una configuración inicial para el algoritmo de seguimiento. El enfoque utilizado en este trabajo es el de una arquitectura de receptor digi- tal, en la cual un frontend se encarga de recibir a través de su antena las señales de GPS, para luego filtrarlas, convertirlas a frecuencia intermedia y digitalizar- las. Luego, la señal digitalizada en FI se procesa a través de módulos digitales específicos que se explicarán detalladamente en el capítulo 3. En la figura 2.12 se observa un diagrama en bloques general del lazo de seguimiento, donde se aprecia que la señal en FI digitalizada x[n] se mezcla con una réplica local de la portadora en FI, en fase y en cuadratura. Luego, cada uno de los productos (xI [n] y xQ[n]) se vuelve a combinar con tres réplicas del código C/A del satélite: Early, Prompt y Late. Las réplicas representan secuencias idénticas, salvo que las secuen- cias Early y Late están adelantadas y atrasadas medio chip, respectivamente, de la secuencia Prompt. Las señales resultantes (xIE [n], xIP [n], xIL[n], xQE [n], xQP [n] y xQL[n]) se acumulan durante un tiempo equivalente a un múltiplo del período de código C/A (1ms). Según lo indicado en la ecuación 2.1, la multiplicación y posterior acumulación de dos señales representa su producto de correlación. Así, se obtienen los valores de correlación IE , IP , IL, QE , QP y QL que se utilizarán para controlar los módulos que generan las réplicas locales de la portadora (oscilador digital) y del código C/A (generador de código C/A). Para analizar el procesamiento de las señales se partirá de la ecuación 2.5 que re- presenta la señal de entrada. Ésta se reproduce aquí por comodidad, conservando la nomenclatura de la sección 2.2: x[n] = A ·D[n] · CAi[n+ n0] · cos[2π(fi + ∆fd)Tsn+ φ0] (2.5) En primer lugar, se analizarán las implicancias de los valores IE , IP , IL, QE , QP y QL para obtener una estimación de la diferencia de fase y frecuencia entre la 2.3. Diseño del lazo de seguimiento 21 Oscilador digital Señal FI digital X X Generador de código C/A X X X X X X E P L Acumulador Seno / Early sincos Acumulador Seno / Prompt Acumulador Seno / Late Acumulador Coseno / Early Acumulador Coseno / Prompt Acumulador Coseno / Late IE IP IL QE QP QL Sistema de control Frecuencia FI Fase de código C/A x[n] xI[n] xQ[n] xIE[n] xIP[n] xIL[n] xQE[n] xQP[n] xQL[n] Dn Df FIGURA 2.12: Estructura general del lazo de seguimiento portadora de la señal de entrada y la señal local (ver sección 2.3.1). En segundo lugar, se obtendrá un estimador para la diferencia de fase de código C/A entre la señal de entrada y la réplica local (ver sección 2.3.2). Finalmente, se presentará en mayor detalle el diseño y simulación del lazo de portadora. 2.3.1. Estimación de la diferencia de fase y frecuencia entre la portado- ra de la señal de entrada y la señal local La estimación de la diferencia de fase entre la señal de entrada y la señal local es necesaria para corregir la fase y frecuencia del oscilador local y mantener la sin- cronía. Siguiendo la estructura de la figura 2.12 se explicará como obtener por medio de las variables descriptas el valor de la diferencia de fase. Se iniciará el análisis considerando las señales que involucran la réplica Prompt: xIP [n] y xQP [n] que, como se demostrará, son las únicas necesarias para estimar la dife- rencia de fase. Los valores de estas señales se obtienen a través de las operaciones indicadas en el esquema de la figura 2.12 dando como resultado: xIP [n] = CAi[n+ n0] ·CAi[n+ n0l] · cos[2π(fi + fd)Tsn+ φ0]cos[2π(fi + ∆fdl)Tsn] (2.34) xQP [n] = CAi[n+n0] ·CAi[n+n0l] · cos[2π(fi + fd)Tsn+φ0]sen[2π(fi + ∆fdl)Tsn] (2.35) donde en las ecuaciones anteriores se ha conservado la nomenclatura de la sec- ción 2.2. Se partirá de la hipótesis de que la réplica Prompt se encuentra en fase con la señal de entrada, es decir, el lazo está «enganchado» y se cumple que n0 = n0l. 22 Capítulo 2. Introducción Específica Considerando que CAi[n+ n0] ·CAi[n+ n0l] = 1 en esta situación, las ecuaciones 2.34 y 2.35 se reducen a: xIP [n] = cos[2π(fi + fd)Tsn+ φ0]cos[2π(fi + ∆fdl)Tsn] (2.36) xQP [n] = cos[2π(fi + fd)Tsn+ φ0]sen[2π(fi + ∆fdl)Tsn] (2.37) Luego de la operación de integración a través de los acumuladores, se puede demostrar que IP y QP valen: IP [n] = 1/2 · cos[2π(fd −∆fdl)T ′ sn+ φ0] (2.38) QP [n] = −1/2 · sen[2π(fd −∆fdl)T ′ sn+ φ0] (2.39) donde T ′ s es el intervalo de acumulación elegido. Analizando 2.38 y 2.39 se observa que las señales IP [n] y QP [n] son armónicas y de frecuencia igual a fd −∆fdl, que representa la diferencia de frecuencias entre la portadora de la señal de entrada y la réplica local. Además, ambas poseen una fase inicial φ0, equivalente al desfase constante entre la portadora de la señal de entrada y la local. Tomando como base las ecuaciones 2.38 y 2.39 se puede obtener una expresión para la variación de fase entre la portadora de la señal de entrada y la local ∆φ[n]: ∆φ[n] = −atan ( QP [n] IP [n] ) = [ 2π(fd −∆fdl)T ′ sn+ φ0 ] (−π/2,π/2) (2.40) donde la notación [·](−π/2,π/2) significa «acotado entre −π/2 y +π/2». En la ecuación 2.40 se observa que la función ∆φ[n] varía linealmente con pen- diente proporcional a la diferencia de frecuencias fd −∆fdl y ordenada al origen igual a fase inicial φ0. La función ∆φ[n] es un estimador del error de fase de por- tadora entre la señal de entrada y la réplica local valiendo cero en una situación de perfecta sincronía en fase (φ0 = 0) y frecuencia (fd −∆fdl = 0). 2.3.2. Estimación de la diferencia de fase de código C/A entre la señal de entrada y la señal local A fin de estimar la diferencia de fase de código C/A entre la señal de entrada y la señal local es preciso tener presente las propiedades de autocorrelación de los códigos C/A explicadas en la sección 2.1.2. En la figura 2.13 se indica el valor de correlación normalizado del código C/A de entrada con las diferentes réplicas (Early, Prompt y Late) teniendo en cuenta que la señal de entrada está en fase con la réplica Prompt. Se observa de la figura 2.13 que el valor de la correlación para la réplica Prompt es máximo, mientras que para las réplicas Early y Late es igual y coincidente con la mitad del valor máximo. En esta condición, el generador de código C/A y la 2.3. Diseño del lazo de seguimiento 23 FIGURA 2.13: Valores de correlación normalizados para los códi- gos Early, Prompt y Late (señal en fase) señal de entrada se encuentran en perfecta sincronía. Si se supone que la señal de entrada se atrasa respecto de la local, el valor de correlación de la señal de entrada con la réplica Late aumentará de valor y, simultáneamente, la correlación de la réplica Early disminuirá tal como se indica en la figura 2.14. FIGURA 2.14: Valores de correlación normalizados para los códi- gos Early, Prompt y Late (señal atrasada) Así se puede inferir cualitativamente que: la diferencia entre los valores de corre- lación relativos a la réplica Early y la réplica Late se puede utilizar como estimador de la diferencia de fase de código C/A entre la señal de entrada y la réplica local. Existen diversas formas de formular esta diferencia, las cuales se explican en de- talle en la referencia[11], pero en este trabajo se eligió emplear el discriminador expresado en la ecuación 2.41 el cual representa una buena solución de compro- miso entre la performance del estimador y su complejidad de implementación en términos de costo computacional. ∆n = 1 2 E − L E + L (2.41) donde: 24 Capítulo 2. Introducción Específica ∆n: Diferencia fase de código C/A entre señal de entrada y réplica Prompt E = √ I2 E +Q2 E : Correlación réplica Early L = √ I2 L +Q2 L : Correlación réplica Late Como se aprecia en la figura 2.15 los valores E y L se obtienen a partir de los bloques detectores de envolvente a partir de las entradas IE , QE , IL y QL. 2.3.3. Controladores de lazo de portadora y de código En esta sección se resume la estructura de los controladores a partir de las ecua- ciones 2.40 y 2.41. En base a las consideraciones desarrolladas en la sección anterior, se puede definir una estructura del controlador del lazo de seguimiento como se indica en la figura 2.15 el cual se implementa dentro del bloque denominado «sistema de control» de la figura 2.12. IE IL QE QL IP QP Detector de envolvente Detector de envolvente Detector de error Filtro de lazo de código E L Fase de código C/A Al generador de código C/A Discriminador Filtro de lazo de portadora Incremento de fase Al oscilador digital Df Controlador de código Dn Controlador de portadora FIGURA 2.15: Estructura en bloques del controlador del lazo de seguimiento El controlador consta de dos partes: Controlador de portadora: Recibe a su entrada los valores de IP y QP y por medio de la ecuación 2.40 genera una estimación del error de fase entre la señal de entrada y la portadora local ∆φ. Este error se procesa mediante el bloque denominado «filtro de lazo de portadora» que genera una señal de control que establece el valor de frecuencia del oscilador digital local. Controlador de código: Recibe a su entrada los valores IE ,QE , IL yQL. Los bloques denominados «detector de envolvente» realizan las operaciones: • E = √ I2 E +Q2 E • L = √ I2 L +Q2 L 2.3. Diseño del lazo de seguimiento 25 que luego se utilizan para obtener el error de fase a través del «detector de error» por medio de la expresión para el error de fase del código C/A (ecuación 2.41). 2.3.4. Estudio y simulación del lazo de portadora La simulación del lazo de portadora es relevante por los siguientes motivos: tener un modelo de comparación con el que contrastar el módulo de segui- miento desarrollado. estudiar el desempeño del sistema en diferentes condiciones: niveles de rui- do, variación de los parámetros de la señal de entrada, entre otros. estudiar modificaciones en la estructura del lazo, en particular, de los dis- criminadores y del filtro de lazo. profundizar el conocimiento de las señales y las operaciones involucradas en el modelo. El lazo de portadora se puede modelar en bloques como se presenta en la figura 2.16. La señal de entrada x[n] se multiplica por las réplicas de la portadora local, seno y coseno, para obtener las señales xI [n] y xQ[n]. Estas señales se acumulan un período de tiempo T ′ s resultando las señales I[n] y Q[n], a partir de las cuales se obtiene una expresión para el error de fase ∆φ[n] a partir de 2.40. Finalmente, el error de fase ∆φ[n] se procesa por medio de un filtro para obtener la señal de control ∆f [n] la cual se emplea para variar la frecuencia del oscilador digital. Oscilador digital Señal FI digital X X S sincos x[n] xI[n] xQ[n] S -atan Q I I[n] Q[n] Filtro de lazo de portadora f[n]Df D Comparador [n] FIGURA 2.16: Estructura en bloques del lazo de portadora En el esquema planteado (figura 2.16) el bloque «comparador» simultáneamente obtiene una expresión del error de fase y a la vez actúa como convertidor entre dos dominios temporales: a la entrada la tasa de muestreo depende de la fre- cuencia de operación del conversor analógico digital (Ts) mientras que la salida presenta una tasa distinta que depende del período de acumulación (T ′ s). Si se to- ma como ejemplo un período de integración de 1ms, la frecuencia de muestreo de ∆φ[n] será 1kHz, mientras que la señal de entrada, como se verá, se muestreará a una frecuencia de 16,368MHz. La diferencia entre ambos tiempos de muestreo permite formas de implementación distintas para cada bloque. Por ejemplo, los bloques de generación de señales digitales, mezcla y acumulación suelen concre- tarse por medio de lógica digital programable por su mayor exigencia de velo- cidad; los bloques del discriminador y el filtro del lazo pueden llevarse a cabo utilizando un microprocesador. 26 Capítulo 2. Introducción Específica Desde el punto de vista del análisis de señales y sistemas, el lazo de portadora se puede modelar como se indica en la figura 2.17. [n] z-1 1 1 - z-1 Df ^ Comparador f + - p1 p2 + + 1 1 - z-1 z-1 f Filtro de lazo Oscilador digital [n] FIGURA 2.17: Modelo del lazo de portadora en el dominio Z El bloque comparador calcula la diferencia entre la fase de la portadora de la se- ñal de entrada φ[n] y la fase de la portadora local φ̂[n]. El retardo de una muestra z−1 se debe a que la comparación requiere la integración de un período comple- to, estando la estimación de la diferencia disponible retrasada una muestra. Para el filtro de lazo se propone una estructura de primer orden cuya salida contie- ne un término proporcional al error (p2) y otro proporcional a su acumulación (p1 · 1 1−z−1 ). Finalmente la salida del lazo se aplica a la entrada del oscilador di- gital que puede modelarse como un integrador ( 1 1−z−1 ) más un retardo z−1. El comportamiento integrador del oscilador se debe a su implementación la cual se tratará en detalle en la sección 3.6. El retardo refleja el hecho que para cambiar la fase del oscilador local se requiere un tiempo adicional de una muestra para reconfigurar el dispositivo[12]. El análisis del modelo en el dominio de Z es imprescindible para comprender la respuesta del lazo, en particular, su comportamiento en régimen permanente (n → ∞) ante diferentes tipos de referencia φ[n]. La dependencia funcional de la referencia φ[n] respecto del tiempo depende esencialmente de la dinámica del sistema. Por ejemplo, un lazo de seguimiento deberá ser capaz de sincronizarse con la frecuencia de portadora a partir de una referencia inicial. Usualmente, el valor inicial de frecuencia del lazo es cercano a la frecuencia real de la portadora, pero no idéntico. Esta diferencia se puede modelar como si el sistema fuese excitado por una función escalón de frecuencia. Siendo la fase, la integral de la frecuencia, esto implica que el lazo debe poder seguir sin error en estado estacionario una función rampa de fase. De la teoría de errores de los sistemas de control en es- tado estacionario [13] se deduce que para que el sistema presente error nulo en régimen permanente frente a una referencia de tipo rampa el sistema debe ser al menos de tipo 2, es decir, debe haber dos integradores en la cadena directa. Este es el caso del presente trabajo, donde se puede observar en la figura 2.17 que un integrador es aportado por el filtro del lazo y otro por la respuesta del oscilador digital. En sistemas de alta dinámica, por ejemplo cohetes; surgen perturbaciones en el seguimiento de la frecuencia debido a la variación por efecto Doppler de la ace- leración de estos móviles. En este tipo de casos, se requiere la implementación de sistemas de tipo 3 o superior [12]. El error en régimen permanente para el modelo propuesto se analizará a continuación. 2.3. Diseño del lazo de seguimiento 27 El sistema de la figura 2.17 se puede representar de forma genérica según se in- dica en la figura 2.18, cuya función de transferencia queda expresada por la ecua- ción 2.42: [n] Df ^f + - G(z) f[n] FIGURA 2.18: Estructura general del sistema realimentado H(z) = φ̂(z) φ(z) = G(z) 1 +G(z) (2.42) donde: H(z): Función de transferencia del sistema. φ̂(z): Fase del oscilador digital local. φ(z): Fase de portadora de entrada. G(z): Función de transferencia directa, incluyendo el comparador, filtro de lazo y oscilador digital. El error de la referencia respecto de la señal de entrada E(z) puede expresarse como: E(z) = φ̂(z)− φ(z) (2.43) Reemplazando φ̂(z) de 2.42 en 2.43 se obtiene una expresión del error en función de G(z) y la referencia φ(z): E(z) = −1 1 +G(z) φ(z) (2.44) Se desea hallar el error en régimen permanente e[∞], por lo que se aplica el teo- rema del valor final[8] a 2.44: e[∞] = ĺım n→∞ e[n] = ĺım z→0 (z − 1)e(z) = ĺım z→0 − z − 1 1 +G(z) φ(z) (2.45) donde: e[n]: Antitransformada Z de E(z) La ecuación 2.45 se utiliza para calcular el error en régimen permanente e[∞] de forma general para cualquier tipo de referencia φ(z) y cualquier transferencia di- recta de lazoG(z). Para la estructura propuesta según el diagrama 2.17, la función de transferencia es: 28 Capítulo 2. Introducción Específica G(z) = p2 z + p1−p2 p2 (z − 1)2 (2.46) La referencia φ(z) según se explicó corresponde a la transformada Z de una fun- ción rampa de fase[8]: φ(z) = A z (z − 1)2 (2.47) donde: A: Pendiente de la rampa Reemplazando 2.46 y 2.47 en 2.45 se obtiene que: e[∞] = ĺım z→0 − z − 1 1 +G(z) φ(z) = 0 (2.48) de donde se demuestra que la estructura de lazo propuesta es capaz de seguir la referencia rampa de fase (equivalente a un escalón de frecuencia) con error nulo en régimen. Para simular el comportamiento del lazo de portadora, se creó un modelo en software (Octave) la estructura de la figura 2.16, implementando el filtro de lazo de la figura 2.17. La simulación permite generar una señal de entrada armónica la cual puede variarse en fase y frecuencia para generar diferentes condiciones de prueba. En las subsecciones siguientes, se presenta el comportamiento del lazo de seguimiento para dos situaciones distintas: excitación del lazo frente a escalón de frecuencia y escalón de fase. Respuesta del sistema frente a escalón de frecuencia Se realizó una simulación para comprobar la respuesta del sistema frente a una variación instantánea de la frecuencia de la señal de entrada (escalón de frecuen- cia) la cual puede observarse en la figura 2.19. El cambio abrupto de frecuencia se produce a los 50ms del inicio de la simulación y está indicado con una línea punteada vertical. El ensayo comienza con el lazo «enganchado» y el cambio de frecuencia genera un defasaje instantáneo. Esta perturbación puede observarse en la figura 2.20 en el aumento abrupto del error de fase (∆φ) que luego es corregido por el sistema de control. En las figuras 2.21 y 2.22 se indica la evolución temporal de I[n] yQ[n]. El valor de I[n] es máximo y constante hasta la perturbación, volviendo a su valor inicial lue- go de la corrección. De forma homóloga, el valor deQ[n] es nulo al comienzo de la simulación (condición de «enganche») y luego de la perturbación vuelve a serlo. La variación de frecuencia del oscilador digital local que introduce el sistema re- alimentado se indica en la figura 2.23, donde se observa una sobrecompensación de la respuesta de frecuencia local para luego establecerse en el valor de régimen de 50Hz. 2.3. Diseño del lazo de seguimiento 29 FIGURA 2.19: Cambio de la referencia de frecuencia de la señal de entrada FIGURA 2.20: Error de fase instantáneo (∆φ) FIGURA 2.21: Correlación del canal en fase (I) 30 Capítulo 2. Introducción Específica FIGURA 2.22: Correlación del canal en cuadratura (Q) FIGURA 2.23: Variación de la frecuencia del oscilador local digital (∆f ) 2.3. Diseño del lazo de seguimiento 31 Respuesta del sistema frente a escalón de fase Se realizó una simulación para comprobar la respuesta del lazo frente a una va- riación instantánea de la fase de la señal de entrada la cual puede observarse en la figura 2.24. El cambio abrupto de fase de 0◦ a −30◦ se produce a los 50ms del inicio de la simulación y está indicado con una línea punteada vertical. El ensayo comienza con el lazo «enganchado» y el cambio de fase genera una perturbación instantánea del error de fase ∆φ el cual puede observarse en la figura 2.25 que luego es corregido por el sistema de control. En las figuras 2.21 y 2.27 se indica la evolución temporal de I[n] y Q[n]. El valor de I[n] es máximo y constante has- ta la perturbación, volviendo a su valor inicial luego de la corrección. De forma homóloga, el valor de Q[n] es nulo al comienzo de la simulación (condición de «enganche») y luego de la perturbación vuelve a serlo. La variación de frecuencia del oscilador digital local que introduce el sistema realimentado se indica en la figura 2.28, donde se observa que disminuye la frecuencia del oscilador local para hacer frente al retraso de fase de la señal de entrada. Finalmente, una vez produ- cido el enganche la diferencia de frecuencia del oscilador respecto de la señal de entrada vuelve a 0Hz al producirse el «enganche» de fase. FIGURA 2.24: Cambio de la referencia de fase de la señal de entra- da FIGURA 2.25: Error de fase instantáneo (∆φ) 32 Capítulo 2. Introducción Específica FIGURA 2.26: Correlación del canal en fase (I) FIGURA 2.27: Correlación del canal en cuadratura (Q) FIGURA 2.28: Variación de la frecuencia del oscilador local digital (∆f ) 2.4. Conclusiones 33 2.4. Conclusiones En este capítulo, se presentaron las ecuaciones y métodos básicos para compren- der la generación de las señales GPS y su detección por medio del método de búsqueda serial y el seguimiento de su frecuencia de portadora y fase de código C/A. Las ecuaciones que plantean matemáticamente el método se desarrollaron deta- lladamente y se generaron scripts para reproducir señales ideales bajo diferentes condiciones (número de satélite, frecuencia central y fase de código C/A). Es- tos scripts permiten simular las operación de búsqueda para una señal o mezcla de señales de entrada arbitrarias. Por consiguiente, son de gran utilidad para las etapas posteriores del trabajo ya que se utilizarán tanto para el procesamiento de señales reales como para contrastar el procesamiento realizado sobre la lógica digital implementada. Además, fue posible estudiar el comportamiento de una arquitectura de lazo de seguimiento ante diferentes perturbaciones de la señal de entrada permitiendo establecer una base sólida para el diseño de los módulos que se desarrollarán en el capítulo 3. 35 Capítulo 3 Diseño e Implementación En este capítulo, se detalla el diseño e implementación de los módulos destina- dos a procesar la señal de salida de un frontend GPS, incluyendo sus interfaces, estructura, operación y señales generadas. Además, se incluye una fundamenta- ción acerca del enfoque general empleado para la implementación de los módulos sobre lógica programable. 3.1. Introducción 3.1.1. Consideraciones generales La función de un frontend consiste en acondicionar la señal L1 emitida por los sa- télites GPS ubicada en 1545.72MHz. Un esquema general de un frontend se indica en la figura 3.1. Señal FI Antena Filtro ADC Preamplificador Amplificador Filtro Mezclador Oscilador local FIGURA 3.1: Diagrama en bloques del frontend En la figura 3.1 se observan las diferentes etapas que componen un frontend. La señal de radiofrecuencia se recibe por medio de una antena activa o pasiva, para luego ser preamplificada (en general por un amplificador de bajo ruido). El filtro a continuación permite rechazar la frecuencia imagen previo a la mezcla con el oscilador local. Una vez convertida la señal a frecuencia intermedia (FI), se vuelve a filtrar para rechazar los productos de intermodulación de frecuencias superiores y evitar el aliasing previo a la etapa de conversión analógica a digital. En este trabajo se utilizará consistentemente los parámetros generales indicados en la tabla 3.1 que son usuales en circuitos integrados de radiofrecuencia tales como el MAX 2769[14] de Maxim Integrated Inc. o el SE4150[15] de Skyworks Inc. 36 Capítulo 3. Diseño e Implementación La utilización de circuitos integrados monolíticos en un frontend facilita su diseño, ya que no es necesario involucrarse con los pormenores de la implementación de los filtros, mezcladores y conversores A/D que se utilizan para operar la señal de radiofrecuencia. TABLA 3.1: Parámetros generales del proyecto Parámetro Valor Frecuencia intermedia 4,092 MHz Frecuencia de muestreo 16,368 MHz Bits de digitalización 1 La señal se digitaliza a un bit de resolución [16] 1 y luego se procesa en una FPGA (Field Programmable Gate Array) donde se realizan las operaciones más demandan- tes en tiempo real: la búsqueda (search) y el seguimiento (tracking). La operación de búsqueda, consiste en correlacionar la señal de entrada con una réplica local correspondiente a un determinado satélite para diferentes fases del código C/A y de frecuencia intermedia. Si se encuentra un máximo de correlación consistente con la presencia de un satélite se informan los valores de frecuencia de código C/A y desplazamiento de frecuencia intermedia (debido al efecto Dop- pler) a la etapa de seguimiento la que se encargará de mantener una réplica local coherente con la señal entrante a fin de obtener el mensaje de navegación del satélite. 3.1.2. Consideraciones de diseño En el diseño de los módulos se utilizó como referencia una FPGA Xilinx Spartan 3E 500, incluida en un kit de desarrollo Nexys 2 de la compañia Digilent Inc.[17] No obstante, se buscó generar un diseño lo más portable posible evitando la ins- tanciación de módulos definidos por el fabricante (IP Cores), salvo para la defini- ción de las memorias internas (blockRAMs). Para los módulos de mayor complejidad se utilizó una implementación del ti- po máquina de estados finita con camino de datos (FSMD, del inglés Finite State Machine with Data path) [18]. Una máquina de estados finita con camino de datos combina una máquina de estados finita (FSM, del inglés Finite State Machine)y circuitos secuenciales convencionales. En la figura 3.2 se observan las dos partes principales de una FSMD. Por un la- do, la máquina de estados (FSM), indicada como el «camino de control» examina los comandos externos (indicados a través de las entradas de control) y según su estado interno genera señales de control que operan sobre los datos de entrada a partir de los circuitos combinacionales y secuenciales que conforman el «camino de datos». Usualmente, las FSMD implementan sistemas descritos a nivel de ló- gica de transferencia de registros (RTL, del inglés Register Transfer Logic) en donde las operaciones se realizan manipulando y transfiriendo datos entre una colección de registros internos del camino de datos. 1Es común en los frontend de señales GPS la digitalización a 1, 2 o 3 bits. Ver referencia citada. 3.1. Introducción 37 Máquina de estados finita (FSM) clk rst Entradas de control Camino de control Camino de datos Señales de control Procesamiento de datos Entradas de datos Salidas de estado Salidas de datos clk FIGURA 3.2: Diagrama en bloques general de una FSMD El ciclo de trabajo utilizado para diseñar, implementar y simular las FSMD se describe a continuación: 1. Definir el algoritmo a implementar 2. Definir la interfaz (entradas y salidas) de la FSMD 3. Diseñar el camino de datos 4. Definir de la interfaz entre camino de datos y el camino de control 5. Definir los estados de la FSMD 6. Diseñar la FSMD 7. Codificar el diseño en VHDL 8. Diseñar y realizar las pruebas (testbenches) La metodología descripta, se ha empleado consistentemente para la implementa- ción de los módulos planteados en este capítulo. Este enfoque, si bien demanda un tiempo de desarrollo algo elevado ya que requiere implementar los circuitos en el más bajo nivel posible (bloques combinacionales, registros, etc.) permite por otro lado tener máximo control sobre el diseño, favorece la portabilidad y reduce a un mínimo los recursos utilizados de la FPGA. El sistema fue diseñado con un reloj único de 81.84 MHz, el cual es un múltiplo de la frecuencia de muestreo del front end como se indica en la tabla 3.1. Esta elección se realizó por dos razones: porque puede generarse con un error menor que 0, 03 % utilizando los mó- dulos de control digitales de reloj (DCM, Digital Clock Manager[19]) de la FPGA a partir del reloj de entrada de la placa de desarrollo de 50 MHz (eligiendo para ello como multiplicador M = 18 y como divisor N = 11). De esta manera se facilitan las pruebas entre un front end desarrollado se- paradamente y el kit de desarrollo. Es importante aclarar además, que esta elección simplifica el diseño a futuro de un receptor integrado, ya que se podría utilizar una única fuente de reloj tanto para la FPGA como para el frontend. 38 Capítulo 3. Diseño e Implementación porque dicha frecuencia de reloj es un múltiplo de la tasa de bits del código C/A, permitiendo utilizar un mismo clock para todo el sistema, simplifi- cando la generación de las señales internas, adaptando las frecuencias de algunos módulos por medio de circuitos de habilitación de reloj preescalers. En las secciones subsiguientes se detallan las interfaces de los módulos construí- dos, su diagrama en bloques, la operación de los mismos y ensayos unitarios realizados. 3.2. Front end Se diseñó y construyó una placa de circuito impreso la cual implementa un fron- tend GPS en base al circuito integrado Skyworks SE4150L [15]. Este circuito pre- senta como ventaja que es de fácil utilización, no requiere de una interfaz de programación y es relativamente económico respecto de los integrados en su seg- mento. En la figura 3.3 se indica el diagrama esquemático del circuito. En la figura 3.4 se muestra el PCB diseñado utilizando el programa KiCad[20]. FIGURA 3.3: Diagrama esquemático del circuito del frontend La placa del frontend fue diseñada específicamente para conectarse a un puerto PMOD [21] de las placas de desarrollo de FPGAs Xilinx de la empresa Digilent Inc. En la figura 3.5 se observa como el frontend con su antena activa se conecta directamente a la placa de desarrollo para procesar las muestras digitalizadas. En la sección (3.3.1) se desarrolla el diseño de un módulo digital en la FPGA para adquirir una serie de muestras digitales del frontend. Dichas muestras serán analizadas posteriormente para caracterizar el funcionamiento así como validar los algoritmos de búsqueda y seguimiento que finalmente serán implementados sobre la FPGA. 3.3. Módulo de adquisición de señales digitales 39 FIGURA 3.4: Placa de circuito impreso (PCB) del frontend FIGURA 3.5: Fotografía del frontend con su antena activa conectado a la placa de desarrollo FPGA 3.3. Módulo de adquisición de señales digitales El módulo de adquisición de señales digitales se utiliza para adquirir una serie temporal de muestras digitales provenientes del frontend, almacenándolas en una memoria RAM de la placa de desarrollo de la FPGA. 40 Capítulo 3. Diseño e Implementación 3.3.1. Interfaz En la figura 3.6 se presenta la interfaz del módulo de adquisición de señales digi- tales y en la tabla 3.2 se detallan sus entradas y salidas. dumpTo Mem dataInput clkInput clk50 rst ledReset ledAcquire hw0 start ledDone hw1 rx_en memBusOutmemBusIn Frontend Control Frontend Estado Memoria Memoria FIGURA 3.6: Interfaz del módulo de adquisición de señales digita- les TABLA 3.2: Descripción de la interfaz del Módulo de adquisición de señales digitales Señal Modo Tipo Descripción dataInput IN std_logic Entrada de datos frontend clkInput IN std_logic Reloj del frontend frontend start IN std_logic Inicio adquisición rst IN std_logic Reset clk50 IN std_logic Reloj 50 MHz memBusIn IN - Bus de entrada memoria SRAM hw0 OUT std_logic Configuración frontend (0) hw1 OUT std_logic Configuración frontend (1) rx_en OUT std_logic Habilitación frontend ledReset OUT std_logic Led indicador (estado inicial) ledAcquire OUT std_logic Led indicador (adquisición) ledDone OUT std_logic Led indicador (fin adquisición) memBusOut IN - Bus de salida memoria SRAM 3.3.2. Operación El frontend se conecta al módulo de adquisición a través de las señales de entrada de datos dataInput y su reloj clkInput el cual establece cuando hay disponible una nueva muestra. Ambas señales constituyen una interfaz sincrónica como se des- cribe en la hoja de datos del circuito integrado Skyworks SE4150L[15]. Además, provee tres señales de control: rx_ en: se utiliza para habilitar la operación del frontend 3.3. Módulo de adquisición de señales digitales 41 hw0,hw1: se utilizan para configurar la ganancia del mezclador y del ampli- ficador de bajo ruido. En la figura 3.7 se observa un diagrama en bloques del módulo de adquisición de señales digitales. Las señales dataInput y dataReady se inyectan en el módulo de entrada (ver sección 3.7) que adapta los dominios de reloj del frontend al del módulo de adquisición, generando una salida de datos dataOutput y una de habi- litación dataReady. Como se ha descripto en la sección 3.1.1, la señal es de un bit, así que para escribir las muestras en la memoria se empaquetan en palabras de 16 bits a través de la lógica de empaquetamiento. Finalmente, el controlador de memoria se encarga de generar las señales de direcciones, datos y control de for- ma que las palabras entregadas por la lógica de empaquetamiento se almacenen en memoria. La memoria que se utiliza, Micron Semi MT45W1MW16BDGB[22], viene integra- da en el kit Nexys 2. Es una memoria RAM de 128 Mbit que puede utilizarse de forma asincrónica con características externas de funcionamiento similares a una SRAM. Se usó esta memoria ya que es la de mayor capacidad del kit, maximizan- do la longitud de secuencias de entrada que pueden almacenarse. La máquina de estados «FSMAdquisición» inicia la grabación al detectar un uno en la entrada start y va indicando a través de las salidas ledReset, ledAcquire y ledDone los diferentes estados del proceso de adquisición. Módulo de entrada FSM Adquisición clk start C O N T R O L dataInput ledReset Camino de control Camino de datos 16 clkInput rst ledAcquire ledDone clk rst dataOutput dataReady Lógica de empaquetamiento clk rst dataReady dataRegOut Controlador de memoria clk rst memBusIn memBusOut hw0 hw1 rx_en Registro de configuración FIGURA 3.7: Diagrama en bloques del módulo de adquisición de señales digitales 3.3.3. Pruebas Se generó un banco de pruebas (testbench) con el objeto de comprobar la correc- ta generación de las señales de salida y el empaquetamiento de muestras. En la figura 3.8, se muestra la prueba realizada para una señal de datos cuadrada, en consecuencia, los datos serán ceros y unos alternados. El módulo se encuentra en estado (fsmstate) ’reset’. Cuando el bit de start pasa a uno, la máquina pasa a esta- do ’acquire’ y comienza el empaquetamiento. Cuando se tiene una palabra de 16 bits completa, se genera la dirección de memoria y se coloca dicha palabra en el bus de datos. 42 Capítulo 3. Diseño e Implementación FIGURA 3.8: Señales correspondientes al inicio de una adquisición En la figura 3.9 se observa que el bus de datos ramdata se carga con la palabra AAAA|16, donde el sufijo |16 indica ’base 16’, correspondiente a una secuencia de ceros y unos. El bus de direcciones ramaddr toma el valor de la direccion co- rrespondiente (en este caso 112|10). Las señales de control (ramwe,ramub,ramlb y ramce) se ponen en cero para efectuar la escritura. FIGURA 3.9: Señales correspondientes al proceso de adquisición El proceso continúa de la misma manera hasta que un contador interno alcan- za un determinado valor límite, el cual se declara definiendo una constante de programa y en la figura 3.10 se pone de manifiesto esta situación. Al alcanzar el contador countReg el valor final, en este caso igual a 10230|10, se detiene la ad- quisición. Los diferentes estados del proceso se indican por medio de las salidas ledReset, ledAcquire y ledDone que son mapeadas a los leds de la placa de desarrollo para dar indicaciones visuales al usuario de los diferentes estadios del proceso. 3.4. Módulo de reproducción de señales digitales 43 FIGURA 3.10: Señales correspondientes al fin del proceso de ad- quisición 3.4. Módulo de reproducción de señales digitales Este módulo se utiliza para reproducir una serie temporal de muestras digitales cuyo formato es idéntico al generado por el módulo de entrada (ver sección 3.7). Su objetivo es utilizarlo como fuente de generación de datos para probar los otros módulos objeto de este trabajo (el módulo de búsqueda y el módulo de segui- miento) de forma flexible y conveniente. 3.4.1. Interfaz En la figura 3.11 se indica la interfaz del módulo de reproducción de señales di- gitales, estando su descripción detallada en la tabla 3.3. GPSGen SignalTest clkSystem rst dataOutputena dataReady phaseOut M FIGURA 3.11: Interfaz del módulo de reproducción de señales di- gitales En todas las figuras del capítulo donde se ilustren las interfaces y bloques consti- tutivos de cada módulo se representan las señales de más de un bit (buses) con la notación que se observa en la figura 3.11, donde M representa la cantidad de bits de la señal, expresada de forma genérica. Esta notación se utilizará consistente- mente en todo el trabajo. 44 Capítulo 3. Diseño e Implementación TABLA 3.3: Descripción de la interfaz del Módulo de reproducción de señales digitales Señal Modo Tipo Descripción ena IN std_logic Habilitación rst IN std_logic Reset clkSystem IN std_logic Reloj dataOutput OUT std_logic Salida de datos dataReady OUT std_logic Indicación dato válido phaseOut OUT std_logic _vector(M) Número de muestra 3.4.2. Operación En la figura 3.12 se muestra un diagrama en bloques del módulo. La memoria se puede cargar con una serie temporal de muestras sintéticas o reales, las cuales se reproducen siguiendo el mismo esquema temporal que aquellas generadas por el frontend. Para definir los datos a reproducir se utiliza un archivo de datos en formato «.coe»[23]. Preescaler clkSystem rst ena_s Contador clkSystem rst phaseOut M dataReady ena Generador direcciones clkSystem rst address_s N Memoria SRAM clkSystem dataOut M FIGURA 3.12: Diagrama en bloques del módulo de reproducción de señales digitales 3.4.3. Pruebas Se generó un testbench con el objeto de comprobar la correcta reproducción de las señales almacenadas en la memoria. En la figura 3.13, se presenta una imagen del archivo de datos COE que contiene el valor de las muestras a reproducir. Al iniciar una adquisición, ena se pone en uno, comienza la reproducción de los datos cargados en el archivo a través de la salida dataOutput. La salida dataReady 3.5. Generador de código C/A 45 FIGURA 3.13: Archivo de datos de la memoria (COE) se pone en uno para indicar que el dato es válido y puede procesarse por los bloques que se conectan a continuación. La salida phaseOut indica el número de muestra de la secuencia. En la figura 3.14 se observa el comportamiento descripto. FIGURA 3.14: Señales del módulo de reproducción (captura del testbench) Se instanció el módulo descripto en esta sección en el kit de desarrollo Nexys 2 a fin da validar la correcta generación de las señales. Para ello, se midió por medio de un analizador lógico Zeroplus LAP-C[24] las señales de salida. En la figura 3.15 se muestra una captura de la interfaz gráfica del instrumento. Se observan las salidas dataOutput, dataValid y los cuatro bits menos significativos de phaseOut. Para facilitar el sincronismo se agregó una salida adicional seqStart (no forma parte del módulo). FIGURA 3.15: Señales del módulo de reproducción (captura del analizador lógico) 3.5. Generador de código C/A Este módulo se utiliza para generar la secuencia de código C/A de un satélite determinado. 46 Capítulo 3. Diseño e Implementación 3.5.1. Interfaz En la figura 3.16 se indica la interfaz del generador de código C/A, estando su descripción detallada en la tabla 3.4. CAGen rst clk ena nSat CACode S FIGURA 3.16: Interfaz del módulo de generación de código C/A TABLA 3.4: Descripción de la interfaz del generador de código C/A Señal Modo Tipo Descripción rst IN std_logic Reset clk IN std_logic Reloj ena IN std_logic Habilitación nSat IN std_logic_vector (S) Selección de satélite CACode OUT std_logic Código C/A del satélite seleccionado 3.5.2. Operación Este módulo genera los códigos C/A del satélite que se indica en su entrada nSat, interpretada como un valor no signado de 0 a 31, correspondiendo unívocamente a los códigos de los satélites 1 a 32. La entrada de habilitación (ena) se conecta a un módulo externo (preescaler) que habilita selectivamente al módulo a una tasa tal que permite generar el código a la frecuencia adecuada (1, 023MHz) siendo esta un submúltiplo del reloj del sistema. En la figura 3.17 se muestra un diagrama en bloques del generador que responde a la implementación indicada en el capítulo anterior. El módulo consta de dos registros de desplazamiento realimentados (G1 y G2) y un bloque combinacional que permite seleccionar a partir de la entrada nSat el código C/A del satélite elegido. 3.5.3. Pruebas Se realizó un testbench con el objeto de obtener las señales de salida. Las mismas fueron almacenadas en un archivo de texto y comparadas con señales de código 3.6. Oscilador controlado numéricamente (NCO) 47 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 XOR XOR XOR CACode Lógica de selección S nSat clk rst clk rst Registro G1 Registro G2 FIGURA 3.17: Diagrama en bloques del generador de código CA C/A generadas separadamente por medio de un script de Octave verificándose su perfecta coincidencia. En la figura 3.18 se muestra a modo de ejemplo la gene- ración de una señal de código C/A para el satélite 1 (salida CACode). FIGURA 3.18: Generación de código C/A (salida caCode para el satélite 1 3.6. Oscilador controlado numéricamente (NCO) El oscilador controlado numéricamente (NCO, por sus siglas en inglés Numerical Controlled Oscillator) permite generar las réplicas locales de portadora en frecuen- cia intermedia tanto para el módulo de búsqueda como para el de seguimiento. 3.6.1. Interfaz En la figura 3.19 se indica la interfaz del NCO, estando su descripción detallada en la tabla 3.5. 3.6.2. Operación La frecuencia del NCO está dada por [25]: 48 Capítulo 3. Diseño e Implementación NCO deltaPhi clk ena sin rst cos P FIGURA 3.19: Interfaz del NCO TABLA 3.5: Descripción de la interfaz del generador de código C/A Señal Modo Tipo Descripción rst IN std_logic Reset clk IN std_logic Reloj ena IN std_logic Habilitación deltaPhi IN std_logic_vector (P) Incremento de fase sin OUT std_logic Salida seno cos OUT std_logic Salida coseno fo = ∆φ 2M fclk (3.1) donde: fo: Frecuencia de salida del NCO ∆φ: Incremento de fase indicado a la entrada del NCO M : Cantidad de bits del registro del acumulador de fase fclk: Reloj aplicado al NCO En la figura 3.20 se muestra un diagrama en bloques del NCO. El bloque de trun- camiento reduce la resolución en bits del registro acumulador previo a seleccionar la salida por medio de la tabla. En este proyecto, se truncó el registro a los dos bits más significativos (L = 2 en el esquema) utilizando un circuito combinacional co- mo tabla de salida ya que las salidas son de un bit. 3.6.3. Pruebas Se comprobó el correcto funcionamiento del NCO instanciándolo en la FPGA midiendo la frecuencia de salida por medio de un osciloscopio digital Hantek MSO5202D[26]. En la figura 3.21 se observa un oscilograma de las señales seno y coseno medidas. 3.6. Oscilador controlado numéricamente (NCO) 49 + Acumulador de fase Registro clk Truncamiento Tabla de salida Fase Registro clk sin cos D N M LN M FIGURA 3.20: Diagrama en bloques del NCO A fin de comprobar la correcta variación de la frecuencia de salida en función de la señal de control, se agregó a la entrada del NCO un bloque combinacional que en el kit de desarrollo se controla por medio de pulsadores y teclas. Este bloque introduce un número signado de 9 bits (-256 a 255) que permite variar la frecuencia de salida en torno al valor de referencia (la frecuencia de FI 4,092Mhz) en pasos de 20Hz aproximadamente. Se relevó la frecuencia según la palabra de control a la entrada y se realizó el gráfico que se muestra en la figura 3.22, comprobándose la linealidad entre el incremento de fase ∆φ y la frecuencia de salida fo. FIGURA 3.21: Oscilograma de las señales de salida del NCO: seno (superior) y coseno (inferior) 50 Capítulo 3. Diseño e Implementación FIGURA 3.22: Valores medidos de frecuencia de salida en función del incremento de fase 3.7. Módulo de entrada El módulo de entrada tiene por objeto adaptar las señales de datos provenien- tes del frontend para que puedan ser utilizadas por los diferentes módulos de procesamiento dentro de la FPGA. Este módulo actúa como interfaz de entrada, adaptando los dominios de reloj del frontend y los de la FPGA. 3.7.1. Interfaz En la figura 3.23 se indica la interfaz del módulo de entrada, estando su descrip- ción detallada en la tabla 3.6. Input Module rst clkInput phaseOut dataOutput M dataInput clkSystem dataReady FIGURA 3.23: Interfaz del módulo de entrada 3.7.2. Operación En la figura 3.24 se puede observar un diagrama en bloques del módulo de en- trada. El primer flip flop se encuentra conectado al reloj del frontend denominado clkInput, mientras que el segundo en la cadena se conecta al reloj del sistema de- nominado clkSystem. Esta configuración tiene por objetivo sincronizar la señal de 3.7. Módulo de entrada 51 TABLA 3.6: Descripción de la interfaz del módulo de memoria Señal Modo Tipo Descripción rst IN std_logic Reset clkInput IN std_logic Reloj frontend dataInput IN std_logic Entrada de datos clkSystem IN std_logic Reloj del sistema dataOutput OUT std_logic Salida de datos dataReady OUT std_logic Indicador datos válidos de salida phaseOut OUT std_logic_vector (M) Número de muestra de la señal de salida entrada dataInput (en el dominio de clkInput) al dominio del clkSystem. El módulo de preescaler genera una señal de habilitación ena a partir del reloj del sistema de frecuencia fclk = 81,84MHz para comandar el contador y el flip flop de salida a una tasa de fs = 16,368MHz. El contador nu