Table des matières

Boucle à verrouillage de phase

1. Introduction

La boucle à verrouillage de phase (Phase Locked Loop) est un dispositif permettant de générer un signal périodique dont la phase est verrouillée sur celle d'un autre signal. Les applications de la boucle à verrouillage de phase (B.V.F.) sont très nombreuses. On peut citer :

2. Schéma général

boucle-1.svgFigure pleine page

La description qui suit suppose que les signaux soient portés par des tensions.

Le signal constituant l'entrée de la B.V.P. est u1(t). Sa phase est comparée à celle du signal u2(t) au moyen d'un comparateur de phase, qui est constitué de deux parties : un détecteur de phase et un filtre passe-bas. Dans certains documents, le détecteur de phase est appelé comparateur de phase bien que le filtre passe-bas joue un rôle essentiel dans le fonctionnement du comparateur. Pour plus de clarté, nous préférons faire la distinction entre le détecteur de phase et le comparateur de phase (qui comprend le filtre). Il existe d'ailleurs différents types de détecteur de phase alors que le filtre passe-bas est presque toujours un filtre du premier ordre comme celui représenté sur le schéma (il est toutefois possible d'employer un filtre actif).

Le signal en sortie du détecteur (entrée du filtre) est noté ud(t). Le signal en sortie du filtre est noté uf(t). Ce dernier constitue l'entrée d'un oscillateur commandé en tension, c'est-à-dire un oscillateur générant un signal u2(t) (le plus souvent de forme carrée) dont la fréquence est commandée par la tension uf(t). La pulsation de ce signal est supposée dépendre de la tension de commande en suivant une relation affine :

ω2=ωo+Ko(uf-uref)(1)

ωo est la pulsation de référence de l'oscillateur et Ko une constante s'exprimant en rads-1V-1 . uref est la tension de référence de l'OCT, c.a.d. la tension de commande pour laquelle l'OCT a la pulsation ωo .

Le signal u2(t) généré par l'OCT constitue la seconde entrée du détecteur de phase.

3. Modélisation des signaux

On suppose que u1(t) est un signal quasi périodique dont la fréquence varie lentement (sur un temps beaucoup plus grand que la période). Un exemple de signal de ce type est constitué d'une porteuse de haute fréquence dont la fréquence est modulée à basse fréquence. Par souci de simplification, nous ne considérons que l'harmonique fondamental de ce signal (et le décalage) car, comme nous le justifierons plus loin, les harmoniques de rang supérieur ou égal à 2 jouent un rôle négligeable dans le fonctionnement de la boucle. On a donc :

u1(t)=U1m+U10sin(ωot+φ1(t))(2)

U1m est la valeur moyenne. La pulsation de ce signal est, par définition :

ω1=ωo+dφ1dt(3)

L'écriture (2) suppose que la fréquence de base de ce signal (sa fréquence lorsque la phase φ1 est constante) est identique à la fréquence centrale de l'OCT. Cette hypothèse, dont l'intérêt apparaîtra plus loin, ne nuit pas à la généralité car si la pulsation du signal est différente de ωo (elle le sera en général), la différence peut être incorporée dans la phase φ1(t) .

Le signal en sortie de l'OCT est le plus souvent de forme carrée mais on peut là encore limiter l'étude en considérant seulement le fondamental :

u2(t)=U2m+U20cos(ωot+φ2(t))(4)

On remarquera que cette écriture fait intervenir un cosinus alors que la relation (2) fait intervenir un sinus. En effet, le déphasage entre les deux signaux est proche de π/2 lorsque la boucle est verrouillée et cette convention d'écriture permet d'avoir alors une différence de phase φ1-φ2 petite.

Nous supposons que le comparateur de phase a une réponse linéaire, c'est-à-dire qu'il fournit un signal proportionnel à la différence de phase :

uf(t)-uref=Kd(φ1(t)-φ2(t))(5)

Kd est une constante qui dépend du détecteur de phase utilisé (le gain du filtre vaut 1 dans la bande passante). Il faut noter que cette relation n'est valable que si la différence de phase est assez petite et que son domaine de validité dépend du détecteur de phase utilisé.

4. Filtre passe-bas

Le filtre passe-bas considéré sur le schéma ci-dessus est caractérisé par la fonction de transfert suivante :

Hf̲(ω)=1+jωτ21+jω(τ1+τ2)(6)

avec τ1=R1C et τ2=R2C . Voici le diagramme de Bode ce filtre :

filtrePasseBas.svgFigure pleine page

La pulsation de coupure 1/(τ1+τ2) doit être inférieure à ωo/100 . Pour les pulsations supérieures ou égales à ωo , le gain doit êtr inférieur à -40 dB, ce qui impose une valeur de τ2 plus petite que τ1/100 . Finalement, la pulsation de coupure est environ 1/τ1 . Comme nous le verrons plus loin, le temps τ2 permet, dans certains cas, d'ajuster le facteur d'amortissement de la boucle.

5. Détecteur de phase

5.a. Multiplicateur

Lorsque le signal u1(t) est analogique (par exemple un signal provenant d'un capteur), un multiplicateur permet de réaliser la détection de phase. Le signal en sortie du détecteur est :

ud(t)=gu1(t)u2(t)(7)=gU1mU20cos(ωo+φ2(t))+gU2mU10sin(ωot+φ1(t))+(8) gU10U202(sin(2ωot+φ1(t)+φ2(t))+sin(φ1(t)-φ2(t)))(9)

Le rôle du filtre passe-bas est de réduire fortement les composantes de fréquence égale à ωo . Sa pulsation de coupure doit donc être beaucoup plus petite que ωo :

1τ1+τ2ωo(10)

Les termes de pulsation ωo et 2ωo sont donc négligeables en sortie du filtre, tout comme les termes provenant des harmoniques de rang supérieur ou égal à 2, que ne n'avons pas écrit par souci de simplicité :

uf(t)=gU10U202sin(φ1(t)-φ2(t))+gU1mU2m(11)

La valeur de tension de référence de l'OCT est uref=gU1mU2m , ce qui revient à considérer que ωo est en fait la pulsation de l'OCT lorsque la tension de commande est gU1mU2m . Lorsque la différence des phases est petite, nous avons une relation linéaire :

uf(t)-urefgU10U202(φ1(t)-φ2(t))=Kd(φ1(t)-φ2(t))(12)

Il faut remarquer que lorsque φ1-φ2 est petit, les deux signaux ont en fait un déphasage proche de π/2 .

5.b. Porte OU-exclusif

Une porte logique OU-exclusif (XOR) est un meilleur choix de détecteur de phase (et beaucoup moins coûteux que le multiplicateur) mais il ne fonctionne qu'avec des signaux binaires (typiquement des signaux en créneau 0 et 5 V). Lorsque le signal u2(t) est analogique (non binaire), il peut être aisément converti en signal binaire au moyen d'un comparateur. La figure suivante montre le fonctionnement de la porte XOR pour deux signaux binaires dont les valeurs sont 0 et 5 V (lorsque la boucle est proche du verrouillage, les deux signaux ont pratiquement la même fréquence).

comparateur-xor.svgFigure pleine page

La tension uf(t) en sortie du filtre est la valeur moyenne de ud(t) , ou du moins la partie variant lentement. Cette tension reste constante lorsque la boucle est verrouillée, mais elle varie (lentement) lorsque les deux signaux ne sont plus synchrones. Lorsque les deux signaux sont déphasés de π/2 , la tension en sortie du filtre est uf=2,5V . Notons τ l'avance de u1(t) par rapport à u2(t) . C'est aussi la durée pendant laquelle la tension ud(t) est au niveau haut. On a donc :

uf=5τT(13)

Or 2πτT est le déphasage de u1(t) par rapport à u2(t) (tant que τ<T2 ). La tension de référence de l'OCT est uref=2,5V . Lorsque les deux signaux sont en quadrature uf=uref , et en conséquence :

uf(t)-uref=5π(φ1(t)-φ2(t))=Kd(φ1(t)-φ2(t))(14)

avec :

Kd=5π=1,6Vrad-1(15)

La figure suivante montre la sortie du comparateur de phase en fonction du déphasage.

courbe-phase.svgFigure pleine page

La relation linéaire est donc valable pour φ1(t)-φ2(t) compris entre -π/2 et π/2 . Avec la porte XOR, le domaine de validité de la relation (5) est nettement plus large que dans le cas de l'utilisation d'un multiplicateur. Ce dernier est cependant préconisé lorsque le signal à analyser est analogique et alternatif.

6. Fonctionnement de la boucle

6.a. Boucle verrouillée

La boucle est dite verrouillée lorsque les signaux u1(t) et u2(t) sont synchrones, c'est-à-dire lorsque le déphasage φ1-φ2 est constant, ce qui implique que ces deux signaux ont exactement la même fréquence. Cela n'exclue pas que cette fréquence puisse être différente de ωo . En effet si ω désigne la fréquence des deux signaux, on a :

φ1(t)=(ω-ωo)+φ'1(16)φ2(t)=(ω-ωo)+φ'2(17)φ1-φ2=φ'1-φ'2(18)

Lorsque la boucle est verrouillée, la tension uf en sortie du filtre est donc constante (tant que le signal u1(t) ne change pas de fréquence) :

uf=Kd(φ1-φ2)(19)

Dans cette écriture (et dans toute cette partie) nous avons posé uref=0 , ce qui revient simplement à considérer que uf désigne l'écart de la tension en sortie du filtre par rapport à la tension de référence uref .

Il s'en suit que la tension de commande de l'OCT est constante donc que la pulsation de u2(t) est constante, égale à :

ω=ωo+Kouf(20)

Cette pulsation est précisément celle du signal u1(t) . Ainsi, lorsque la boucle est verrouillée, l'OCT produit un signal périodique (de forme carrée) parfaitement synchrone avec le signal u1(t) , c'est-à-dire de même fréquence. Le déphasage réel entre u1(t) et u2(t) est constant, égal à :

φ1-φ2+π2=ufKd+π2=ω-ωoKoKd+π2(21)

La valeur absolue |φ1-φ2| est donc d'autant plus grande que la pulsation ω est éloignée de ωo . Sachant que |φ1-φ2| doit être inférieur à π/2 (pour les deux comparateurs étudiés ci-dessus), le verrouillage n'est possible que si :

|ω-ωo|<π2KoKd(22)

En conséquence, la pulsation de base de l'oscillateur (ωo ) doit être choisie assez proche de la plage de fréquences possible de u1(t) . Si cette plage est trop large, il faut augmenter Ko (le facteur de conversion tension-fréquence de l'OCT).

La tension de commande de l'OCT est :

uf=ω-ωoKo(23)

Elle contient l'information sur la fréquence du signal d'entrée; la B.V.P. peut donc être utilisée pour effectuer une démodulation de fréquence.

Lorsque l'OCT délivre un signal de pulsation ωo , on a φ1=φ2 , ce qui signifie que les deux signaux u1 et u2 sont déphasés de π/2 . En effet, l'intervalle de déphasage permettant d'avoir verrouillage de la boucle est en centré sur π/2 . Le choix d'un déphasage de π/2 lorsque la pulsation est ωo permet donc une excursion de pulsation symétrique autour de ωo . Cependant, ce choix n'est qu'une convention adoptée pour le calcul : la seule chose qui importe en réalité est que la boucle reste verrouillée sur toute la plage de fréquence du signal u1(t) .

Une B.V.P. bien réglée doit rester verrouillée, ou du moins très proche du verrouillage, lorsque la fréquence du signal u1(t) change. Elle doit avoir un comportement stable, c'est-à-dire qu'elle peut éventuellement s'éloigner notablement du verrouillage à condition d'y retourner très vite, à une échelle de temps de l'ordre de quelques périodes de u1(t) . Il faut donc étudier le comportement du système bouclé lorsque la fréquence de u1(t) change.

6.b. Étude linéaire

On suppose que la relation (5) est valable, ce qui, dans le cas du détecteur XOR, est vrai pour un déphasage dans l'intervalle [-π/2,π/2] . Dans ce cas, toutes les équations sont linéaires. Par ailleurs, l'effet des harmoniques de rang supérieur ou égal à 2 est négligeable grace au filtre passe-bas. Il est donc possible d'étudier la réponse du système en régime sinusoïdal.

Pour définir une fonction de transfert, nous devons définir une grandeur d'entrée et une grandeur de sortie. Le plus souvent, la grandeur d'entrée qui nous intéresse est la fréquence du signal u1(t) , ou bien sa pulsation ω1 . Plus précisement, la grandeur d'entrée est ω1-ωo , l'écart entre la pulsation et la pulsation de base de l'OCT, que l'on notera Δω1 . On a la relation :

Δω1=dφ1dt(24)

La phase φ1 est donc obtenue par intégration de Δω1 . En régime sinusoïdal, nous avons :

Δω1=Δω1msin(Ωt)(25)

Ω est la pulsation de modulation de fréquence, c'est-à-dire la pulsation de variation de la pulsation ω1 . Posons s=jΩ . En notation complexe, la relation entre Δω1 et φ1 s'écrit :

Δω1̲=sφ1̲(26)

Dans le cas d'une analyse du signal u1(t) , la grandeur de sortie qui nous intéresse est uf .

Bien que le rôle du filtre soit de faire fonctionner le comparateur de phase (en éliminant les composantes de haute fréquence), nous devons tenir compte de son comportement à basse fréquence. Pour cela, nous devons modifier la relation (5) en la multipliant par la fonction de transfert du filtre :

uf̲=Kd(1+sτ2)1+s(τ1+τ2)(φ1̲-φ2̲)(27)

Lorsque s tend vers zéro, on retrouve bien sûr la relation (5).

La relation (1) s'écrit aussi :

ωo+dφ2(t)dt=ωo+Kouf(t)(28)

Nous avons donc :

sφ2̲=Kouf̲(29)

La fonction de transfert (sans dimensions) qui nous intéresse est :

H̲=Kouf̲Δω1̲=φ2̲φ1̲(30)

Il s'agit donc de la fonction de transfert qui permet d'exprimer la phase en sortie de l'OCT par rapport à la phase du signal d'entrée. La relation (27) s'écrit :

sφ2̲Ko=Kd(1+sτ2)1+s(τ1+τ2)(φ1̲-φ2̲)(31)

La fonction de transfert s'en déduit et, après simplification, on obtient :

H̲(s)=1+τ2s1+2ξsΩn+s2Ωn2(32) Ωn=KdKoτ1+τ2(33) ξ=Ωn2(τ2+1KdKo)(34)

Voici un schéma bloc du modèle linéaire de la boucle à verrouillage de phase, avec la phase φ1 comme entrée :

schema-bloc.svgFigure pleine page

La représentation de la boucle sous cette forme nécessite de séparer le comparateur de phase du filtre, alors qu'en réalité le filtre est nécessaire au fonctionnement du comparateur, par son action d'élimination des composantes de fréquence supérieure ou égale ωo .

Supposons que Ko soit assez grand pour que :

τ21KdKo(35)

On obtient alors :

H̲(s)=1+2ξsΩn1+2ξsΩn+s2Ωn2(36) Ωn=KdKoτ1+τ2(37) ξ=Ωn2τ2(38)

Voici le tracé du gain en décibel et du déphasage pour différentes valeurs de ξ :

import numpy as np
from matplotlib.pyplot import *

x = np.logspace(-1,1,500)
def H(x,xi):
    return (1+2*1j*xi*x)/(1+2*1j*xi*x-x**2)
H1 = H(x,2)
GdB1 = 20*np.log10(np.absolute(H1))
phi1 = np.angle(H1)
H2 = H(x,1)
GdB2 = 20*np.log10(np.absolute(H2))
phi2 = np.angle(H2)
H3 = H(x,1/np.sqrt(2))
GdB3 = 20*np.log10(np.absolute(H3))
phi3 = np.angle(H3)
H4 = H(x,0.2)
GdB4 = 20*np.log10(np.absolute(H4))
phi4 = np.angle(H4)

figure()
plot(x,GdB1,label=r"$\xi = 2$")
plot(x,GdB2,label=r"$\xi = 1$")
plot(x,GdB3,label=r"$\xi = 1/\sqrt{2}$")
plot(x,GdB4,label=r"$\xi = 0.2$")
xscale('log')
xlabel(r"$\Omega/\Omega_n$")
ylabel(r"$G_{\rm dB}$")
legend(loc='upper right')
grid()

    	              
BodePLLBodePLL.pdf
figure()
plot(x,phi1/np.pi,label=r"$\xi = 2$")
plot(x,phi2/np.pi,label=r"$\xi = 1$")
plot(x,phi3/np.pi,label=r"$\xi = 1/\sqrt{2}$")
plot(x,phi4/np.pi,label=r"$\xi = 0.2$")
xscale('log')
xlabel(r"$\Omega/\Omega_n$")
ylabel(r"$\phi/\pi$")
legend(loc='upper right')
grid()    	              
    	              
PhasePLLPhasePLL.pdf

Si le coefficient ξ (coefficient d'amortissement) est trop faible, le gain présente une résonance très marquée, ce qui implique des oscillations de la réponse indicielle. Le rôle du temps τ2 (donc de la résistance R2 ) est de réduire le temps d'amortissement lorsque Ko est grand (on a vu qu'une grande valeur est nécessaire pour élargir la plage de fréquence de verrouillage). Si au contraire le coefficient d'amortissement est trop grand, le gain dans la bande atténuante ne décroît pas assez vite et la réponse indicielle est moins rapide. La valeur optimale est ξ=1/2 .

L'équation différentielle reliant l'entrée et la sortie se déduit de la fonction de transfert :

d2φ2dt2+2ξΩndφ2dt+Ωn2φ2=2ξΩndφ1dt+Ωn2φ1(39)

6.c. Exemple

Voyons un exemple de calcul des coefficients d'une B.V.P.. Supposons que la fréquence de base soit fo=1000Hz et qu'on souhaite suivre des variations de cette fréquence de plus ou moins 10 Hz, variations qui ont lieu à une fréquence inférieure à 10 Hz. La condition (22) s'écrit aussi :

|f-fo|<KoKd4

En prenant le cas d'un détecteur de phase XOR, on a Kd=5πVrad-1 et il faut donc que :

Ko>4π5|f-fo|Ko>25rads-1V-1

Le choix de Ko dépend de l'application. Si l'objectif est d'obtenir un système très rapide, une grande valeur est souhaitable. Si l'objectif est d'extraire l'information de fréquence de la tension uf , il faut choisir une valeur de Ko adaptée aux variations de tension que l'on peut mesurer avec précision. Plaçons-nous dans ce dernier cas de figure et adoptons la valeur Ko=25rads-1V-1 , qui implique KdKo=40s-1 .

La pulsation de coupure du filtre est 1/τ1 . La fréquence de coupure doit être 100 fois plus petite que la fréquence du signal :

12πτ1=fo100τ1=1002πfo=1,610-2s-1

Sachant que 1/(KdKo)=2,510-2s et que τ2 doit être petit devant τ1 , la condition (35) n'est pas du tout satisfaite. On a :

ΩnKdKoτ1=50rads-1

ce qui correspond à une fréquence Fn=8,0Hz , tout à fait convenable si les variations de fréquence ont une fréquence inférieure à 10 Hz. τ2 est négligeable devant 1/(KdKo) donc

ξ= Ωn2KdKo=0,62

La valeur de τ2 est en fait négligeable et on peut donc opter pour τ2=0 (la résistance R2 est inutile).

La valeur de ξ est convenable mais pas optimale. Si l'on impose la valeur optimale ξ=1/2 on a :

KdKo=12τ1=31s-1Ko=39rads-1V-1Ωn=39rads-1Fn=6,2Hz

Voici la courbe de réponse fréquentielle de la boucle pour les deux valeurs de ξ :

f = np.logspace(0,2,500)
def H(f,xi,Omega_n):
    x = 2*np.pi*f/Omega_n
    return 1/(1+2*1j*xi*x-x**2)
H1 = H(f,0.62,50)
GdB1 = 20*np.log10(np.absolute(H1))
H2 = H(f,0.71,39)
GdB2 = 20*np.log10(np.absolute(H2))

figure()
plot(f,GdB1,label=r"$\xi = 0.39$")
plot(f,GdB2,label=r"$\xi = 0.71$")
xscale('log')
xlabel(r"$F (Hz)$")
ylabel(r"$G_{\rm dB}$")
legend(loc='upper right')
grid()
    	           
reponse1reponse1.pdf
Creative Commons LicenseTextes et figures sont mis à disposition sous contrat Creative Commons.