Módulos GPS com saídas de 1pps estão prontamente disponíveis e são baratos.
Não é realmente necessário disciplinar o oscilador da CPU em relação ao GPS (por exemplo, com um PLL). Desde que você possa "registrar o registro de data e hora" de eventos externos em relação ao relógio da CPU, é relativamente simples interpolar o tempo da transmissão de onda e receber eventos entre dois eventos do PPS.
Geralmente, você pode usar a combinação de um timer de hardware no microcontrolador, juntamente com um contador de software para seus eventos de estouro, para criar um contador de ciclo da CPU de largura arbitrária. Pode ser complicado lidar corretamente com eventos de rolagem, tanto no contador de hardware quanto no software, mas no final, você pode ter, por exemplo, um contador de 32 bits que conta com a taxa do relógio da CPU (dando alta resolução ) e passa por um período maior que os intervalos que você está tentando medir (por exemplo, 429 segundos a 10 MHz).
Você pode usar esse contador para marcar os diferentes eventos externos com data e hora. Se um desses eventos são pulsos de 1 pps de um receptor GPS, a precisão básica a longo prazo do relógio da CPU se torna um problema. A única coisa que importa é sua estabilidade a curto prazo. Você pode salvar os carimbos de hora do GPS em um buffer FIFO e comparar os carimbos de hora de outros eventos com os valores desse buffer. Como você sabe que os pulsos do GPS estão exatamente com um segundo de distância, é possível encontrar a hora exata de qualquer outro evento interpolando.
G PSnG PSn + 1Ti m enTi m en + 1Ex tG PSnG PSn + 1
Ti m en+ Ex t - G PSnG PSn + 1- G PSn
Por fim, se você tiver essa configuração em execução em dois sistemas separados, cada um com seu próprio receptor GPS, poderá comparar os tempos calculados para vários eventos nos dois sistemas com alta precisão (normalmente da ordem de ± 100 ns), mesmo se o Os relógios da CPU dos dois sistemas não são sincronizados.