Diseño de bucle bloqueado de fase analógica

Estoy tratando de diseñar un bucle de bloqueo de fase en Simulink de MATLAB. Para esto, estoy siguiendo este diseño de diagrama de bloques básico:

Diagrama de bloques

La señal de mi mensaje original dura ~12 segundos, tiene un ancho de banda de aproximadamente 22,05 kHz y se ha muestreado a 44,1 kHz. Lo he importado a Simulink usando el bloque 'desde el espacio de trabajo' con un tiempo de muestra de (1/44100). Para fines de prueba, solo estoy simulado .25 segundos de tiempo.

Luego ejecuto mi mensaje a través de un bloque de 'retención de orden cero' que tiene un tiempo de muestreo de (1E-7) que luego se usa en el resto del sistema.

Desde la salida de Zero-Order Hold, introduzco mi señal en un modulador FM con un Kf = 77017.868 y una frecuencia portadora de 1MHz. El Kf se eligió debido a la restricción de que mi desviación de frecuencia máxima debe ser de 75 kHz, y la amplitud máxima de la señal del mensaje de 12 segundos es de 0,9738 V.

Para modelar el detector de fase, he usado un bloque de producto y un LPF para cortar las frecuencias al doble de mi frecuencia portadora. Implementé el LPF usando la función 'mantequilla' de MATLAB para generar los coeficientes para una función butterworth. El siguiente código está aquí:

Código LPF de fase

El filtro de bucle se implementa con una función de transferencia de (s+a)/s, donde '1/a' que he calculado debe ser menor que 1E-7 (mi frecuencia de muestreo). Hago esto porque necesito que el error de fase decaiga a cero (o casi a cero) en un lapso de tiempo menor que la diferencia de tiempo entre las muestras. Por lo tanto, en mi cabeza, cualquier valor donde a> 1E7 debería ser suficiente. Mi trabajo sobre cómo calculé varios componentes está aquí:

EDITAR: (He vuelto a calcular estos valores a continuación, pero dejaré estos antiguos aquí para la documentación)Página 1 Página 2

Finalmente, el VCO de tiempo continuo tiene una frecuencia portadora de 1MHz así como un Kv = 77017.868. A continuación se muestra una imagen que muestra cómo he configurado la simulación en Simulink: (donde el amplificador normalmente tiene una ganancia de u calculada anteriormente)

Configuración de Simulink

Creo que debo tener un malentendido fundamental sobre cómo se comporta el bucle de bloqueo de fase, ya que sé con certeza que si elijo mis valores correctamente, el diseño de este sistema demodulará la señal correctamente. En cambio, veo un comportamiento que ni siquiera puedo describir adecuadamente o al que le doy algún sentido. Por ejemplo, debajo habrá un gráfico de la forma de onda original antes de someterse a la modulación FM junto a un gráfico de la salida del bucle de bloqueo de fase. ¿Qué es lo que simplemente no estoy entendiendo?

Si hay alguna información que pueda proporcionar, estaré encantado de hacerlo.

.25 segundos de forma de onda original: ingrese la descripción de la imagen aquí.25 segundos de salida de pll:ingrese la descripción de la imagen aquí

EDITAR: Recalculé los valores para la función de transferencia del filtro de bucle, donde a es la constante en la función de transferencia del filtro de bucle (s+a)/s, y me aseguré de que 1/(Zeta * Wn) < Ts. Donde mi Ts es 1e-7.

ingrese la descripción de la imagen aquí

De acuerdo, decidí simplificar un poco el proceso para que fuera más fácil solucionar los problemas. Desde entonces, eliminé mi forma de onda de audio y la reemplacé con una onda sinusoidal de 16 Hz con una amplitud de 0,95 (no quería exceder el valor máximo de mi mensaje). Esto arrojó el siguiente resultado, donde la línea azul es la salida del bucle de bloqueo de fase y la onda amarilla es la entrada original.

ingrese la descripción de la imagen aquí

Luego, y no tengo idea de por qué esto hace algo, cambié la frecuencia de la portadora de 1MHz a 10Mhz (sin cambiar ninguna frecuencia de muestreo). Si alguien pudiera explicar por qué este es el nuevo resultado que SOLAMENTE cambió la frecuencia portadora del modulador de FM y el VCO, se lo agradecería:

ingrese la descripción de la imagen aquí

A continuación, decidí jugar con el orden del LPF que sigue al mezclador. En la imagen de arriba, el orden del filtro Butterworth es 13. De hecho, simulé con todos los órdenes de filtro entre 1 y 50, y pensé que estos eran los resultados más interesantes:

Orden de filtro Butterworth LPF 17:

ingrese la descripción de la imagen aquí

Orden de filtro Butterworth LPF 19:

ingrese la descripción de la imagen aquí

Filtro Butterworth LPF Orden 27:

ingrese la descripción de la imagen aquí

Orden de filtro Butterworth LPF 35:

ingrese la descripción de la imagen aquí

Ciertamente no entiendo este comportamiento. El orden del filtro parece afectar en gran medida la precisión del bucle de bloqueo de fase, lo que no tiene sentido para mí. Entendí que el LPF del detector de fase solo corta los componentes de frecuencia más alta después de que las dos señales se multiplican juntas. Pensé que el siguiente filtro de bucle controlaba la estabilidad, las oscilaciones, etc.

Lo que también parece extraño es que parece haber un punto "dulce" de las órdenes de filtro alrededor de 17. Si la orden se vuelve demasiado alta o demasiado baja, efectivamente no se produce ninguna señal en la salida del demodulador.

El filtro controla el retraso del grupo en la ruta de avance. En orden alto, esto conducirá a la inestabilidad y, de hecho, a un comportamiento caótico. (Además, se vuelve absurdamente difícil de realizar en circuitos analógicos reales. Intente limitarse a ordenar 4 o 6. (También reduzca la banda de paso a aproximadamente 0.4 * frecuencia de muestreo). Estabilizar bucles alrededor de incluso filtros de orden 2 puede ser complicado. Aparentemente tendré que arreglar algo más también.
¿Sería la respuesta de fase de los filtros de orden superior la razón por la que crea inestabilidad en el sistema? ¿También te refieres a la frecuencia de muestreo del modulador FM de banda de paso? ¿El sistema no podría muestrear correctamente la forma de onda modulada si la tasa de muestreo es mucho más baja que la frecuencia modulada?
En línea con lo que dijo @BrianDrummond, haga que el filtro de paso bajo sea solo un primer orden, o un máximo de segundo orden, e intente agregar una referencia constante ω con un verano antes del filtro de bucle. Es posible que también se necesite algo de tiempo para que el PLL se bloquee.

Respuestas (1)

Desea MEMORIA de la información de frecuencia anterior, en el filtro de bucle. Dale al filtro de bucle 10uSecond timeconstant, para que comiences a aprender qué depende de qué.

¿La constante de tiempo a la que te refieres es 1 / (Zeta * Wn)?