GPSDO en el firmware?

0

Hay numerosos diseños en línea para hardware GPSDO (osciladores disciplinados por GPS). No consigo encontrar ninguna implementación de firmware solamente. Me pregunto si mi foo de Google es débil o si estos no son prácticos en el firmware.

Mi escenario es un uC (un STM32) con un GPS. Necesito emitir un pulso de 1Hz que se alinee con el GPS PPS, incluso durante la pérdida de señal. Naturalmente, durante el LOS, la salida es tan buena como la de mi oscilador local, pero me gustaría ajustar la base de tiempo del temporizador correspondiente al PPS promedio o reciente del GPS.

Estoy seguro de que alguien ha hecho algo similar.

    
pregunta iter

2 respuestas

1

Esto es probablemente bastante simple de hacer. Hay un par de maneras de abordar esto dependiendo de la precisión que necesite. La salida PPS se generará a partir de un módulo de temporizador / contador dividiendo el reloj hacia abajo. En su ISR de recepción en serie, capture el valor del contador PPS al recibir el byte correcto, creo que generalmente es el primer byte del mensaje. O use la interrupción en el cambio para capturar el valor cuando llega un pulso PPS del GPS. Esto se convierte en el término de error. Ahora, la pregunta es cómo controlar la frecuencia. Una forma es hacer algún tipo de control fino del oscilador cualquiera que se use para controlar el módulo del temporizador, que podría ser el reloj principal de la CPU. Use un bucle PID para empujar la frecuencia hacia arriba o hacia abajo hasta que el contador de PPS se desplace exactamente cuando el mensaje llega del receptor GPS. Si no puede controlar el oscilador, entonces está limitado a ajustar la configuración del límite superior del temporizador / contador hasta que se alinea la reinversión. Nuevamente, use un bucle PID para ajustar el valor. Es posible que desee realizar algunas pequeñas modificaciones si se pierde la señal de entrada, como mantener constante el término de error y no actualizar el término integral hasta que se restaure la señal.

    
respondido por el alex.forencich
1
  

Mi escenario es un uC (un STM32) con un GPS. Necesito emitir un pulso de 1Hz que se alinee con el GPS PPS, incluso durante la pérdida de señal. Naturalmente, durante el LOS, la salida solo es tan buena como la de mi oscilador local, pero me gustaría ajustar la base de tiempo del temporizador correspondiente al PPS promedio o reciente del GPS

Cuando compras un hardware GPSDO, por ejemplo. de Jackson Labs, encontrará que generalmente consiste en un receptor de GPS, un oscilador de alta calidad disciplinado y algunos microcontroladores (en el caso de los laboratorios de Jackson, les gustan los LPC / espresso ARM). Puede ver el microcontrolador NXP en la parte inferior producto de los laboratorios Jackson (IC grande y negro , imagen de la derecha), junto al módulo del receptor GPS (parece un ublox AMY-6T o algo así). En la parte superior del dispositivo (imagen izquierda) encontrará un oscilador estable (y costoso) (caja grande de metal).

La idea realmente es que en caso de pérdida de señal, necesita algo estable para hacer su "remanente". Es por eso que las mejores GPSDOs tienden a usar osciladores controlados por horno.

En primer lugar, verifique si un GPSDO listo para usar ya no cumple con sus requisitos de estabilidad. Esa sería la forma más fácil y, además, alguien que haya hecho esto antes lo ha diseñado todo.

Observe que lo que Al alex.forencich describe tiene una precisión limitada: si digamos que su contador funciona a 10 MHz, entonces la mejor granularidad de ajuste que se puede lograr cuando solo se observa un intervalo de un segundo es de 100 ppb, peor que la precisión de frecuencia de muchos GSPDO ! Por supuesto, lo remediaría con un ancho de banda de filtro de bucle PID más estrecho, pero eso tiene otros efectos negativos: ¿qué pasaría si su controlador PID ahora no puede mantenerse al día con la deriva de su oscilador? ¿Qué sucede si la sincronización de borde de PPS tiene su propio error (sugerencia: tiene, típicamente, en el orden de 100 ns, al menos)?

Es por eso que el firmware en las GPSDO es probablemente un poco más inteligente que solo un PID; si dedicas suficiente tiempo a la investigación y la caracterización, estoy seguro de que puedes modelar el comportamiento de los osciladores f / V y es mejor a la deriva; Kalman extendido viene a la mente.

No tengo experiencia en el modelado de osciladores físicos con esta precisión, ni tampoco puedo modelar el comportamiento de varianza de la frecuencia o la salida de temporización del receptor GPS. Es por eso que no tengo la intención de crear mi propia GPSDO en el corto plazo, pero no tendría que hacerlo, porque si necesito una precisión realmente alta, acudiría a proveedores como Jackson Labs (no afiliados a estos, por cierto), si estoy de acuerdo con la disminución del rendimiento durante el período de inactividad: ublox vende sus IC de receptor GPS específicos de tiempo que puede programar para mantener. Todo lo que necesitan es poder, una antena y un oscilador para controlar. Son prácticamente lo que usted describe en un solo paquete.

    
respondido por el Marcus Müller

Lea otras preguntas en las etiquetas