[en] This projects deals with the implementation and optimization of the acquisition stage of a GPS receiver. The project also includes a brief review of the GPS system and its operating principles. The acquisition process has been studied in detail, and programmed in Matlab and Simulink. The fact that this functionality has been programmed in two different environment has been very useful as an educational activity and also as a crosscheck means. The main outcome of the work is a Simulink model that is able to acquire the signal captured with real hardware. Actually, two implementations have been done: one using only native Simulink blocks and another one using blocks from the Xilinx - Simulink library. The later would facilitate an easy transition from the model to an FGPA using the ISE Xilinx environment. The acquisition stage employs the parallel code search method and relies on the use of the Fast Fourier Transform (FFT). The direct application of the parallel code search method involves the computation of two FFTs (for the incoming signal and the reference code) and one inverse FFT (for the result of the correlation). The inclusion of three FFT blocks in a FPGA requires a very large number of gates, and therefore the need of an optimization is apparent. We have modified the acquisition stage so as to perform the parallel code search using only one FFT block, which represents the second main outcome of the project. Instead of replicating the FFT block, in our model the block is time shared thanks to the use of some buffers and switches, as a result, the number of gates required by an FPGA implementation could be greatly reduced.

[es] Este proyecto trata la optimización y la implementación de la etapa de adquisición de un receptor GPS. También se incluye una breve descripción del sistema GPS y sus principios de funcionamiento. El proceso de adquisición se ha estudiado con detalle y programado en los entornos de trabajo Matlab y Simulink. El hecho de implementar esta etapa con dos entornos diferentes ha sido muy útil tanto en el aprendizaje como también para la verificación de los resultados obtenidos. El principal objetivo del trabajo es el diseño de un modelo Simulink que es capaz de adquirir una señal capturada con hardware real. En realidad, se han hecho dos implementaciones: una que utiliza bloques propios de Simulink y la otra que utiliza bloques de la librería Xilinx. De esta manera, posteriormente, se facilitaría la transición del modelo a la FPGA utilizando el entorno ISE de Xilinx. La implementación de la etapa de adquisición se basa en el método de la búsqueda de fase de código en paralelo, la cual utiliza la operación de correlación cruzada mediante la transformada de rápida de Fourier (FFT). Para este proceso es necesario realizar dos transformadas (para la señal entrante y el código de referencia) y una antitransformada de Fourier (para el resultado de la correlación). Con la finalidad de optimizar el diseño se utiliza un bloque FFT, ya que tres bloques consumen gran parte de los recursos de una FPGA. En lugar de replicar el bloque FFT, en el modelo el bloque es compartido en tiempo gracias a la utilización de buffers y conmutadores, como resultado la cantidad de recursos requeridos para una implementación en una FPGA se podría reducir considerablemente.