Una vez que tenemos el diagrama de bloques de nuestra aplicación, conviene concretar algunos aspectos de cara a la implementación. Una de las partes más importantes (sino la más importante) del sistema es la recepción de los datos y el envío de solicitudes al receptor GPS.
Se utilizará una UART (Universal Asinchronous Receiver Transmiter) definida en dos macros en VHDL: una UART de transmisión y una UART de recepción. A grandes rasgos, permiten la transmisión/recepción de tramas en serie compuestas por 8 bits de datos, 1 bit de START y 1 bit de STOP (una trama RS232 básica). Cada una de las macros incorpora un buffer de 16 bytes para la sincronización:

Para garantizar una precisión aceptable, se muestrean los bits a enviar/recibir en la mitad de la duración del bit, de la siguiente forma (recepción) :
- Un flanco descendente indica el inicio de la trama e inicia un temporizador.

- El temporizador termina en la mitad del período del bit.
- En ese momento se muestrea el bit recibido.
Se inicia de nuevo un temporizador, esta vez con el período de bit y se muestrea el siguiente bit, hasta recibir los 8 bytes de datos.
- El bit de STOP (dos períodos de bit a nivel alto) indica el fin de la transmisión.
A continuación se realiza una descripción más detallada de las macros:
Está formada por la interconexión de una memoria fifo de 16 posiciones de 8 bits (buffer de transmisión) y la UART propiamente dicha. Merece una mención especial la señal en_16_x_baud, que permite obtener una frecuencia de muestreo determinada. En nuestro caso, como el lector recordará, la tasa de las tramas es de 4800 bps; para conseguir esta velocidad se divide la frecuencia de reloj por el valor adecuado. El resto de las señales se incluyen en la siguiente tabla:

La estructura es análoga y todo lo dicho anteriormente es válido. Sólo destacar dos nuevas señales: buffer_data_present, que indica la presencia de datos recibidos en el buffer y read_buffer, que permite extraer los datos almacenados en el buffer de recepción, según el siguiente protocolo:
