Алгоритм управления GPSDO

В настоящее время я создаю свой собственный осциллятор GPS. У меня есть OCXO, который используется в качестве источника тактового сигнала для микроконтроллера и одного из его счетчиков, а сигнал 1PPS от модуля GPS подключен к одному из входов захвата того же счетчика.

В настоящее время у меня есть следующий алгоритм управления: по переднему фронту сигнала PPS значение счетчика фиксируется и сравнивается с предыдущим значением. Если разница больше 10000000, то соответственно увеличивается или уменьшается напряжение EFC OCXO. Мой GPSDO работает уже несколько дней, и он кажется очень стабильным по сравнению с коммерческим GPSDO от Trimble, но у него есть проблема, заключающаяся в том, что для его правильной блокировки требуется как минимум один полный день. Поэтому я пытаюсь найти алгоритм управления, который блокирует быстрее.

Я думал, смогу ли я реализовать что-то вроде PLL в программном обеспечении.

Например, каждый раз, когда возникает нарастающий фронт сигнала 1PPS, я могу рассчитать значение, которое таймер должен иметь в следующий раз, когда возникает нарастающий фронт, и так далее. Вычитая фактическое значение таймера из желаемого, я получаю что-то вроде фазовой ошибки, которую затем можно использовать для управления OCXO. Я ожидаю, что это должно блокироваться быстрее, чем мой текущий подход, и это должно быть более точным, потому что время интегрирования в основном бесконечно - даже самая маленькая ошибка в какой-то момент приведет к разнице фаз, превышающей 1 счет.

Еще одна проблема, с которой я столкнулся при использовании обоих подходов, заключается в следующем: как определить, когда GPSDO действительно заблокирован?

Существуют ли другие, вероятно, лучшие подходы для управления OCXO импульсом 1PPS?

Ответы (1)

Ваше желание использовать программное решение предполагает, что аппаратное обеспечение не добавляется. Это жесткая спецификация. Итак, какое аппаратное обеспечение предлагается в обычном микроконтроллере, которое может быть повторно применено для разрешения промежутка времени менее 100 наносекунд?

Был проведен эксперимент с микроконтроллером Microchip 16F1455. Его аналого-цифровой преобразователь представляет собой тип последовательного приближения с десятибитным разрешением. Окно выборки из таблицы данных четко не определено, но может быть достаточно коротким, чтобы быстро зарядить внутренний конденсатор выборки. Это может быть достаточно быстро для выборки импульса 1pps выходного сигнала GPS и обеспечения временного разрешения лучше, чем 100 нс.

В эксперименте использовалась частота 16F1455 с фиксированным кварцевым генератором на 10 МГц. A-to-D был настроен на выборку входного прямоугольного сигнала функционального генератора. Частота функционального генератора была установлена ​​близкой к частоте дискретизации аналого-цифрового преобразователя, период 409,6 мкс.
Функциональный генератор обеспечивает пятивольтовый прямоугольный импульс со смещением постоянного тока +2,5 В, нагруженный резистором 75 Ом на стороне процессора. Амплитуда установлена ​​чуть меньше 5 В, так что «высокое» напряжение дает результат немного ниже максимального значения 1023, а «низкое» напряжение дает результат немного выше нулевого значения: выход UART позволяет собирать отсчеты аналого-цифрового сигнала . с помощью ПК.испытательное приспособление для измерения времени нарастания

Вот субдискретизированный вывод, показывающий прямоугольную волну функционального генератора. Представляет интерес время нарастания прямоугольной волны и время спада. Время нарастания становится скачкообразным, занимая примерно 4,5 выборки. При аналого-цифровом разрешении, равном одной тысячной, временное разрешение около одной наносекунды возможно при использовании этого метода дискретизации. Улучшение временного разрешения со 100 нс до 1 нс должно позволить сократить время установления фазовой автоподстройки частоты. для OCXCO. Это бесполезное решение, поскольку для этой службы не указан внутренний семплер A-to-D. Но это один из способов улучшить временное разрешение без дополнительного оборудования.
прямоугольный генератор дискретных функций

это интересно. На самом деле, вы построили что-то вроде аналогового интерполятора, так как они используются в некоторых частотомерах. Однако мне интересно, действительно ли точное управление моим OCXO невозможно с разрешением всего 100 нс? Разве я не могу усреднить 100 секунд и, таким образом, увеличить разрешение в 100 раз?
@T.Pluess Да, разрешение можно получить за более длительные периоды времени (например, 100 с). Мы пытаемся сократить время установления контура. Получение лучшего временного разрешения (1 нс против 100 нс) в 1-секундном периоде импульса GPS должно помочь.