Модули GPS с выходом 1pps легко доступны и недороги.
На самом деле нет необходимости привязывать генератор ЦП к GPS (например, с помощью ФАПЧ). До тех пор, пока вы можете «метить время» внешних событий относительно тактовой частоты ЦП, относительно просто интерполировать время передачи и приема вашей волны между любыми двумя событиями PPS.
Часто можно использовать комбинацию аппаратного таймера на микроконтроллере вместе с программным счетчиком для его событий переполнения, чтобы создать счетчик циклов ЦП произвольной ширины. Может быть сложно правильно обрабатывать события опрокидывания, как счетчика оборудования, так и счетчика программного обеспечения, но, в конце концов, у вас может быть, скажем, 32-разрядный счетчик, который рассчитывает с частотой тактовой частоты процессора (обеспечивая высокое разрешение ) и переворачивается с периодом, превышающим интервалы, которые вы пытаетесь измерить (например, 429 секунд при 10 МГц).
Вы можете использовать этот счетчик для отметки времени различных внешних событий. Если одно из этих событий представляет собой импульсы в 1 pps от приемника GPS, то базовая долговременная точность тактовой частоты процессора становится безразличной. Единственное, что имеет значение, это его краткосрочная стабильность. Вы можете сохранить метки времени GPS в буфере FIFO и сравнить метки времени других событий со значениями в этом буфере. Поскольку вы знаете, что GPS-импульсы находятся на расстоянии ровно одной секунды, вы можете узнать точное время любого другого события путем интерполяции.
GPSnGPSn+1TimenTimen+1ExtGPSnGPSn+1
Timen+Ext−GPSnGPSn+1−GPSn
Наконец, если у вас есть эта установка, работающая на двух отдельных системах, каждая с собственным GPS-приемником, вы можете сравнить время, рассчитанное для различных событий в двух системах, с высокой точностью (обычно порядка ± 100 нс), даже если Часы процессора двух систем не синхронизированы.