Estoy buscando implementar un bloqueo de fase en un FPGA sin usar ningún componente externo (que no sea el ADC). Por simplicidad, el bloqueo a un pulso binario simple es adecuado. La frecuencia de las señales es ~ 0.1-1% del reloj. No puedo usar los PLL de reloj a bordo porque normalmente son:
- No configurable (establecido durante la síntesis).
- Nervioso.
- No soportes la frecuencia que necesito.
He estado revisando la literatura y encontré algunos bucles bloqueados de fase binaria. Lo más notable es un diseño de "robo de pulso" en el que puedo publicar un enlace si lo deseo. Lo he implementado y sintetizado con cierto éxito, pero su rango de fluctuación y bloqueo no fue tan bueno como se anunció. También he tenido éxito usando un DVCO externo, pero preferiría si puedo implementar todo en el chip.
Sería útil un diseño de circuito digital o incluso una pista en la dirección correcta (he estado golpeando mi cabeza contra esto por un tiempo), una implementación probada de FPGA sería maravillosa pero no esperada.
AÑADIDO 10-27-2010
El diseño DPLL real que utilicé tiene un "filtro de paseo aleatorio" como filtro de bucle (no el "robo de pulso" descrito anteriormente, revisando mis notas que no funcionaron bien), que luego impulsa los pulsos del reloj al DCO . El rango de bloqueo se establece mediante un divisor en el DCO. La sensibilidad del bucle se establece variando la longitud de la caminata aleatoria.
El artículo en el que se encuentra esto se cita al final de esta publicación. Después de implementar partes de él mismo, descubrí que en realidad ya estaba implementado en OpenCores, sin embargo, resulta que en los últimos meses el proyecto se eliminó pero tengo los archivos de Verilog guardados si alguien los quiere.
Yamamoto, H .; Mori, S .; , "Rendimiento del bucle binario cuantificado totalmente digital con fase bloqueada con una nueva clase de filtro secuencial", Comunicaciones, Transacciones IEEE, vol.26, no.1, pp. 35-45, enero de 1978
doi: 10.1109 / TCOM.1978.1093972
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=1093972&isnumber=23895
Respuestas:
¿Puede publicar más detalles sobre la frecuencia objetivo, el jitter y el ancho de banda del bucle (tiempo de establecimiento requerido)? Además, ¿qué tipo de oscilador desea utilizar (externo con un DAC, con / sin oscilación ?, un contador / acumulador digital en chip)?
Si está satisfecho con un "oscilador" digital (es decir, un acumulador que se desborda) y su fluctuación, el resto del circuito puede ser bastante simple:
En cuanto al ancho de banda del bucle, si no se aplica mediante el tiempo de establecimiento, decídalo en función de las contribuciones de ruido de todos los componentes.
En caso de que la señal de referencia esté modulada en fase o frecuencia, utilice un ancho de banda de bucle inferior a la frecuencia más pequeña de la señal que modula la referencia.
Se utilizan técnicas más complicadas si la frecuencia de salida es cercana o igual a la frecuencia del reloj y / o si se requiere un jitter bajo o un rango de bloqueo muy rápido. Tal vez en su caso no sean necesarios, además pueden no ser adecuados para una implementación de FPGA.
fuente
Si puede tolerar un poco de inquietud, pero en su mayoría solo necesita un reloj preciso contra un reloj a la deriva para la recuperación de datos, es posible que desee implementar algo como el PLL estándar de CAN (comienza en la página 67 de ese PDF). Esto funciona en base a un contador de desbordamiento que debe ajustarse nominalmente correctamente, pero se sincroniza con los bordes en la corriente de pulso entrante.
fuente