Bitácora · DCSS · Unidad 7

La mitad de ζ deja pasar el mismo ruido

Unidad 7 · PLL · el amortiguamiento del lazo de la clase

El receptor no conoce la fase exacta de la portadora ni la frecuencia exacta de su propio oscilador: las tiene que seguir. Eso hace un PLL, un lazo de enganche de fase. Un detector mide cuánto está corrida la fase, un filtro de lazo convierte ese error en una corrección, y un oscilador numérico la aplica; la vuelta se repite muestra a muestra hasta que el error queda en cero (el PLL).

El filtro de lazo de la clase es un proporcional-integral, y tiene dos constantes. Kp es la rama proporcional: corrige en proporción al error de fase de este momento, y decide qué tan fuerte reacciona el lazo. Ki es la rama integral: acumula el error a lo largo del tiempo, y es la que termina sosteniendo la corrección cuando el oscilador está corrido en frecuencia; sin ella, ese corrimiento deja un error de fase que no se va nunca (el filtro de lazo). Con esas dos constantes el lazo se comporta como un sistema de segundo orden, y se lo describe con tres números: la frecuencia natural ωn, que dice qué tan rápido reacciona; el amortiguamiento ζ, que dice si llega derecho o se pasa y oscila; y el ancho de banda de ruido Bn, que dice cuánto del ruido de la entrada se cuela en la fase que el lazo estima (ancho de banda, adquisición y tracking).

El script de la clase arma el filtro de lazo con Kp = 0.005 y Ki = Kp/100. Eso da un amortiguamiento ζ=0,354, la mitad del 1/2 que traen los libros, y se ve: ante un escalón de fase el lazo se pasa un 39,72 %, contra el 20,63 % del lazo de libro. Lo que no cambia es el ruido. Con la misma frecuencia natural, 0,354 y 0,707 dan exactamente el mismo ancho de banda de ruido, 60 MHz, porque uno es el espejo del otro: 0,354×0,707=1/4. Medido en el lazo discreto, 59,55 y 59,70 MHz.

Bajar ζ a la mitad no compra silencio. Lo que hace es cambiar de lugar el ruido y cobrar en todo lo que el ancho de banda de ruido no mide: el lazo de la clase tarda 1477 muestras en asentarse contra 694, deja el doble de error ante el ruido de fase del oscilador local, y para enganchar un corrimiento de 100 MHz necesita 6636 muestras contra 3014. Lo único que compra son 6 dB de rechazo lejos de la frecuencia natural.

Y hay una cuenta que llega exactamente a estas constantes. La receta de la filmina para elegirlas, tal como está escrita, con 60 MHz de ancho de banda y ζ=1/2, devuelve Kp = 0.005 y Ki = 5e-5. Las del script, exactas.

01 · Dos ζ con el mismo ruido

Con el filtro proporcional-integral el lazo es de segundo orden, y queda descrito por un amortiguamiento y una frecuencia natural (cómo salen de las constantes está en el filtro de lazo). Con la normalización del script, KPDKV=1 por muestra:

ζ=Kp2Ki,ωn=Ki

El ancho de banda equivalente de ruido es el de la filmina (de dónde sale y por qué es el que cuenta, en ancho de banda, adquisición y tracking):

Bn=ωn2(ζ+14ζ)

Para un ωn fijo el paréntesis tiene su mínimo en ζ=1/2, que es lo que muestra la curva de la filmina. Lo que la curva no dice en voz alta es que el paréntesis es simétrico: cambiar ζ por 1/(4ζ) intercambia los dos sumandos y lo deja igual. Cada ζ por debajo de 1/2 tiene un gemelo por encima con exactamente el mismo Bn, y el gemelo de 1/2 es 2/4=0,3536. El de la clase.

Que ωn sea el mismo quiere decir que Ki es el mismo. Así que el lazo de libro que hay que poner al lado del de la clase no es Ki = Kp/400: ése conserva Kp, y con Kp fijo bajar Ki a la cuarta parte parte al medio ωn y también el ruido. Es otro presupuesto. El que se compara es el que conserva Ki = 5e-5 y duplica Kp, o sea Ki = Kp/200. Los dos tienen fn=18,01 MHz; el de Kp/400, 9,00 MHz:

lazoKpKiζBn, fórmulaBn, medidosobrepico
clase, Kp/1000,0055·10⁻⁵0,35460,00 MHz59,55 MHz39,72 %
libro, mismo ruido, Kp/2000,0105·10⁻⁵0,70760,00 MHz59,70 MHz20,63 %
libro, misma Kp, Kp/4000,0051,25·10⁻⁵0,70730,00 MHz29,93 MHz20,71 %

La columna medida es la mitad de la energía de la respuesta al impulso del lazo discreto —que es BnT, por Parseval— multiplicada por fs=16 GHz; la fórmula es la del lazo continuo equivalente. Las dos primeras filas se separan un 0,25 %, que es lo que el lazo discreto se aparta del continuo. Para tener la escala: el mínimo posible con este ωn, en ζ=1/2, da 56,27 MHz, un 5,5 % más abajo. Y un Monte Carlo con dos millones de muestras de ruido blanco en la fase de entrada dice lo mismo por otro camino: con la misma semilla, la varianza de la fase estimada sale 7,575·10⁻³ y 7,582·10⁻³ veces la de la entrada en los dos lazos, y con otra semilla el lazo de la clase da 7,431·10⁻³. Dos semillas del mismo lazo se separan veinte veces más que los dos lazos entre sí.

02 · Una receta que no lo nota

La filmina cierra con la receta para elegir las constantes: se arranca con Bn y ζ. Las condiciones de partida son KpKVKPD=2ζωn y KiKVKPD=ωn2, y del ancho de banda sale ωn=2Bn/(ζ+1/4ζ). Componiendo, la rama proporcional queda

KpKVKPD=2ζ·2Bnζ+14ζ=4ζBnζ+14ζ

y la filmina la escribe con un 2 donde la composición da 4; la línea de Ki, 4Bn2(ζ+1/4ζ)−2, está bien. Con BnT=3,75·10−3 —60 MHz a 16 GHz— y ζ=1/2, la línea con el 2 da Kp = 0.0050 y la otra Ki = 5.00e-05: las constantes del script. Con el 4, Kp = 0.0100, el lazo de libro de la tabla.

Si las constantes del script salieron de esa cuenta o de otra, el script no lo dice. Lo que sí se puede ver es por qué el 2 no se delata. Un Kp a la mitad con el mismo Ki deja ωn donde estaba y parte ζ al medio, y el lazo que resulta tiene

Bn′=ωn2(ζ2+12ζ)

que es igual al Bn pedido sólo si ζ/2+1/(2ζ)=ζ+1/(4ζ), o sea si ζ2=1/2. El 2 de la receta es invisible en el ruido justo en el único ζ que se elige siempre. Con cualquier otro el ancho de banda sale corrido; con 1/2, quien verifique el diseño midiendo Bn encuentra los 60 MHz que pidió.

03 · Adónde se fue el ruido

El mismo Bn es la misma área bajo |F|2, no la misma curva. Con u=ω/ωn,

|F(jω)|2=1+4ζ2u2(1−u2)2+4ζ2u2

Igualando la de un ζ con la de otro y pasando todo de un lado, lo que queda es (ζ22−ζ12)u2[1−(1−u2)2]=0, que se anula en u=2. Dos lazos con el mismo ωn se cruzan siempre en √2 veces la frecuencia natural, sea cual sea su ζ: acá, 25,5 MHz (25,45 en el lazo discreto). Abajo del cruce el lazo de la clase copia más: tiene un pico de 4,97 dB en 16,3 MHz, contra 2,07 dB en 14,1 MHz el de libro. Arriba copia menos, y lejos la diferencia tiende a la razón de los ζ, 6 dB: en 0,5 GHz, −31,83 dB contra −25,87 dB. El área que gana en el pico es la que pierde en la falda.

Eso es lo único que el ζ bajo compra, y vale según dónde esté el ruido. Si es blanco, lo que entra es el área, y empatan. Si lo que hay que rechazar vive muy por encima de la frecuencia natural, el lazo de la clase lo atenúa 6 dB más.

04 · El ruido que Bn no mide

Bn cuenta una sola cosa: cuánto ruido blanco de la entrada copia el lazo, pasando por F. El oscilador local mete otro, y ése pasa por E=1−F, que es lo que el lazo no logra seguir. El ruido de fase de un oscilador se modela como un paseo al azar: la fase da un paso gaussiano por muestra, de varianza σ2, y su espectro cae como σ2/ω2. Pasado por E(s)=s2/(s2+2ζωns+ωn2), el ω2 se simplifica y la integral es la de un denominador de segundo orden:

σe2=σ22π∫−∞∞ω2dω(ωn2−ω2)2+4ζ2ωn2ω2=σ24ζωn=σ22Kp

El último paso es ζωn=Kp/2. El error que deja el LO depende sólo de Kp, que es justo lo que la receta partió al medio. La cuenta continua da 100σ2 y 50σ2; el lazo discreto, sumando el cuadrado del error ante un escalón, da 98,76σ² y 49,50σ²; un Monte Carlo de dos millones de pasos, 98,63σ² y 49,72σ². A igual ruido blanco, el lazo de la clase deja el doble de error por el oscilador.

Mirado en frecuencia es más tajante todavía. Con ζ=1/2 el denominador se vuelve 1+u4 y la transferencia del error queda

|E(jω)|2=u41+u4

un pasaaltos de Butterworth: sube monótono hacia 1 y nunca lo pasa. En general, |E|>1 pide u2(2−4ζ2)>1, y eso tiene solución sólo si ζ<1/2. 1/√2 es el ζ más chico con el que el lazo no amplifica el ruido de fase del oscilador en ninguna frecuencia. El de libro, en el lazo discreto, no pasa de −0,04 dB; el de la clase lo amplifica hasta +3,50 dB en 20,8 MHz. La filmina pone el ruido de fase del LO en la lista de lo que la recuperación fina de portadora tiene que resolver: el costo cae donde el lazo trabaja.

05 · Enganchar

El escalón de fase ya lo muestra: con el mismo ωn, el lazo de libro se asienta al 2 % en 694 muestras y el de la clase en 1477. Tampoco llega antes: el de libro cruza el valor final por primera vez en la muestra 157 y el de la clase en la 183, porque con el mismo Ki el que tiene el doble de Kp empuja más fuerte desde el principio. A igual ruido, el ζ bajo no compra velocidad en ningún tramo del escalón.

Lo lento de verdad es enganchar desde lejos, y eso el modelo lineal no lo ve. Se simula el lazo con un detector seno —la curva S de la filmina—, el mismo PI y el NCO con una muestra de retardo, que es lo mínimo para que el lazo se pueda correr muestra a muestra (el lazo de la clase con Lat = 1). La entrada es un corrimiento de frecuencia Δf, y se cuenta desde qué muestra el error queda para siempre por debajo de 0,1 rad:

Δfclase, ζ = 0,354libro, ζ = 0,707razónfórmula de la filmina
20 MHz8544781,79465
50 MHz19149072,111087
100 MHz663630142,203310
150 MHz14.21368712,077013
200 MHz24.97912.3832,0212.199
300 MHz56.09427.5422,0427.013

De 50 MHz para arriba la razón es 2 y no se mueve. Tampoco es el umbral: con 0,03 rad o con 1 rad, a 100 y 200 MHz, queda entre 1,99 y 2,20. La última columna es la de la filmina, TFL+TPL≈4Δf2/Bn3+1,3/Bn, que no tiene a ζ adentro: acierta con el lazo de libro y le erra por la mitad al de la clase. La filmina da también un rango de captura proporcional a ζ, (2π2ζ)Bn, que para la clase son 188 MHz; la simulación engancha 300 MHz igual. Con un integrador perfecto el ζ no le pone techo al rango: le cobra el tiempo.

Mirarlo

El deslizador mueve ζ con la frecuencia natural fija —Ki = 5e-5, la del script— y dibuja al lado su espejo, 1/(4ζ). Arranca en ζ=1/2, donde el lazo es su propio espejo y hay una sola curva en cada panel. Bajalo hasta 0,354, el lazo de la clase, y mirá las dos marcas del panel de arriba: quedan a la misma altura. Las curvas de abajo, no.

Widget Un ζ y su espejo — arriba, el ancho de banda de ruido contra ζ con la frecuencia natural del script, en escala logarítmica para que el espejo quede simétrico; en el medio, la respuesta a un escalón de fase; abajo, |F| en dB. En azul el lazo del deslizador, en gris su espejo.
ζ · espejo — · — Kp — · — Bn — · — sobrepico — · — asentamiento al 2 % — · — error por el LO — · — enganche a 100 MHz — · —

En 0,354 las lecturas son las de las tablas: 59,55 y 59,70 MHz de ruido, y todo lo demás al doble. Seguí bajando hasta 0,25: el espejo se va a 1, el ruido de los dos sube a 70 MHz —59,55 era casi el piso— y la factura del ζ chico crece: 50,14 % de sobrepico contra 13,44 %, cuatro veces el error por el oscilador, 9832 muestras para enganchar contra 2146. Del otro lado de 1/2 es el mismo lazo con los colores cambiados. Para un ruido dado hay dos lazos, y la fórmula de Bn no distingue cuál elegiste.

06 · El análisis en MATLAB

El lazo de la clase armado como en phase_system.m, su gemelo de libro y las cuentas de las secciones de arriba. Lo que figura como comentario es la salida real de correrlo en R2026a.

%% 1. El lazo de la clase, como en phase_system.m
fs = 16e9; Ts = 1/fs; z = tf('z', Ts);
NCO = z/(z-1);
Kp = 0.005; Ki = Kp/100;
F = feedback((Kp + Ki*z/(z-1))*NCO, 1);

%% 2. Su zeta, su wn y su Bn
zeta = Kp/(2*sqrt(Ki)); wn = sqrt(Ki);
Bn = wn/2*(zeta + 1/(4*zeta))*fs;
fprintf('zeta = %.4f   fn = %.2f MHz   Bn = %.2f MHz\n', zeta, wn*fs/2/pi/1e6, Bn/1e6)
% zeta = 0.3536   fn = 18.01 MHz   Bn = 60.00 MHz

%% 3. La receta de la filmina con el 2, y con el 4
BnT = Bn/fs; zl = 1/sqrt(2); g = zl + 1/(4*zl);
fprintf('con 2: Kp = %.4f   Ki = %.2e\n', 2*zl*BnT/g, 4*BnT^2/g^2)
fprintf('con 4: Kp = %.4f   Ki = %.2e\n', 4*zl*BnT/g, 4*BnT^2/g^2)
% con 2: Kp = 0.0050   Ki = 5.00e-05
% con 4: Kp = 0.0100   Ki = 5.00e-05

%% 4. El lazo de libro con el mismo Bn: el mismo Ki y el doble de Kp
F2 = feedback((2*Kp + Ki*z/(z-1))*NCO, 1);

%% 5. Bn medido: la mitad de la energía de la respuesta al impulso
t = (0:4e5)*Ts;
h = impulse(F, t)*Ts;  h2 = impulse(F2, t)*Ts;   % en discreto, impulse divide por Ts
fprintf('Bn medido: %.2f MHz (clase)   %.2f MHz (libro)\n', ...
        sum(h.^2)/2*fs/1e6, sum(h2.^2)/2*fs/1e6)
% Bn medido: 59.55 MHz (clase)   59.70 MHz (libro)

%% 6. Lo que no es igual
s = stepinfo(F); s2 = stepinfo(F2);
fprintf('sobrepico %.2f %% / %.2f %%   asentamiento %.0f / %.0f muestras\n', ...
        s.Overshoot, s2.Overshoot, s.SettlingTime/Ts, s2.SettlingTime/Ts)
% sobrepico 39.72 % / 20.63 %   asentamiento 1477 / 694 muestras
y = step(F, t); y2 = step(F2, t);
fprintf('paseo al azar del LO: var(e) = %.2f / %.2f veces sigma^2\n', ...
        sum((1-y).^2), sum((1-y2).^2))
% paseo al azar del LO: var(e) = 98.76 / 49.50 veces sigma^2

%% 7. Adónde se fue el ruido
[gp, wp] = getPeakGain(F); [gp2, wp2] = getPeakGain(F2);
fprintf('pico de |F|: %.2f dB en %.2f MHz / %.2f dB en %.2f MHz\n', ...
        20*log10(gp), wp/2/pi/1e6, 20*log10(gp2), wp2/2/pi/1e6)
% pico de |F|: 4.97 dB en 16.35 MHz / 2.07 dB en 14.08 MHz
w05 = 2*pi*0.5e9;
fprintf('|F| en 0,5 GHz: %.2f dB / %.2f dB\n', ...
        20*log10(abs(freqresp(F, w05))), 20*log10(abs(freqresp(F2, w05))))
% |F| en 0,5 GHz: -31.83 dB / -25.87 dB
figure; step(F, F2, 2000*Ts); legend('clase', 'libro, mismo B_n')
figure; bodemag(F, F2, {2*pi*1e6, 2*pi*1e9}); grid on; legend('clase', 'libro, mismo B_n')

%% 8. Enganchar 100 MHz de corrimiento con un detector seno
for K = [Kp, 2*Kp]
  dw = 2*pi*100e6/fs; phi = 0; I = 0; ultimo = 0;
  for n = 1:2e5
    d = dw*n - phi; e = sin(d);
    I = I + Ki*e;
    if abs(angle(exp(1j*d))) > 0.1, ultimo = n; end
    phi = phi + K*e + I;              % NCO: una muestra de retardo
  end
  fprintf('Kp = %.3f: |error| < 0,1 rad desde la muestra %d\n', K, ultimo)
end
% Kp = 0.005: |error| < 0,1 rad desde la muestra 6636
% Kp = 0.010: |error| < 0,1 rad desde la muestra 3014

Tres detalles que muerden:

Para tener a mano

  1. Con Kp = 0.005 y Ki = Kp/100: ζ=0,354, fn=18,01 MHz, Bn=60 MHz y 39,72 % de sobrepico.
  2. Bn no cambia al reemplazar ζ por 1/(4ζ) con el mismo ωn, y 0,354×0,707=1/4. El lazo de libro con el mismo ruido es Kp = 0.01, Ki = 5e-5 (Kp/200): 59,55 contra 59,70 MHz, 39,72 contra 20,63 % de sobrepico.
  3. Ki = Kp/400 con la misma Kp no es el mismo lazo con otra forma: tiene la mitad de ωn y la mitad de ruido.
  4. La receta de la filmina con el 2 en la rama proporcional, Bn=60 MHz y ζ=1/2, da exactamente las constantes del script. Con el 4, que es lo que da componer las dos condiciones, da el lazo de libro. El 2 no cambia Bn sólo en ζ=1/2.
  5. Dos lazos con el mismo ωn se cruzan en 2ωn (25,5 MHz). El ζ bajo tiene más pico (4,97 contra 2,07 dB) y 6 dB menos de falda (−31,83 contra −25,87 dB en 0,5 GHz): es lo único que compra.
  6. El error que deja el ruido de fase del LO es σ2/(2Kp): 98,76σ² contra 49,50σ². Con ζ≥1/2 el lazo nunca lo amplifica; el de la clase, hasta +3,50 dB en 20,8 MHz.
  7. Asentamiento al 2 %: 1477 contra 694 muestras. Enganche con detector seno: el doble de tiempo a cualquier corrimiento, 6636 contra 3014 muestras a 100 MHz. La fórmula de la filmina no tiene ζ y acierta con el de libro.
← Anterior Siguiente → Inicio