Boucle de verrouillage de phase numérique

9

Je cherche à implémenter un verrouillage de phase dans un FPGA sans utiliser de composants externes (autres que l'ADC). Pour plus de simplicité, le verrouillage sur une simple impulsion binaire est adéquat. La fréquence des signaux est de ~ 0,1-1% de l'horloge. Je ne peux pas utiliser les PLL d'horloge embarquée car elles sont généralement:

  1. Non configurable (défini lors de la synthèse).
  2. Nerveux.
  3. Ne supporte pas la fréquence dont j'ai besoin.

J'ai parcouru la littérature et trouvé quelques boucles à verrouillage de phase binaire. Le plus remarquable est une conception de "vol de pouls" à laquelle je peux poster un lien si vous le souhaitez. J'ai implémenté et synthétisé avec un certain succès, mais sa plage de gigue et de verrouillage n'était pas aussi bonne que celle annoncée. J'ai également réussi à utiliser un DVCO externe, mais je préférerais que je puisse tout implémenter sur puce.

Une conception de circuit numérique ou même un indice dans la bonne direction serait utile (je me suis cogné la tête contre cela pendant un certain temps), une mise en œuvre éprouvée du FPGA serait merveilleuse mais non attendue.

ADDED 10-27-2010

La conception DPLL réelle que j'ai utilisée a un "Random Walk Filter" comme filtre de boucle (pas le "pouls de vol" décrit plus haut, passant par mes notes qui ne fonctionnaient pas trop bien), qui entraîne ensuite les impulsions d'horloge vers le DCO . La plage de verrouillage est définie via un diviseur dans le DCO. La sensibilité de la boucle est établie en variant la longueur de la marche aléatoire.

Le document dans lequel cela se trouve est cité à la fin de ce post. Après avoir implémenté moi-même des parties de celui-ci, j'ai constaté qu'il était en fait déjà implémenté sur OpenCores, mais il s'avère qu'au cours des derniers mois, le projet a été supprimé, mais j'ai les fichiers Verilog enregistrés si quelqu'un le veut.

Yamamoto, H .; Mori, S .; , «Performance of Binary Quantized All Digital Phase-Locked Loop with a New Class of Sequential Filter», Communications, IEEE Transactions on, vol. 26, no 1, pp. 35-45, janv. 1978

doi: 10.1109 / TCOM.1978.1093972

URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=1093972&isnumber=23895

crasic
la source
1
Veuillez faire un lien vers la conception «voler le pouls» - il n'y a aucune raison de ne pas le faire.
Kevin Vermeer

Réponses:

6

Pouvez-vous publier plus de détails concernant la fréquence cible, la gigue et la bande passante de la boucle (temps de stabilisation requis)? Aussi, quel type d'oscillateur souhaitez-vous utiliser (externe avec un DAC, avec / sans tramage?, Un compteur / accumulateur numérique sur puce)?

Si vous êtes satisfait d'un "oscillateur" numérique (c'est-à-dire un accumulateur débordant) et de sa gigue, le reste du circuit peut être assez simple:

  • un compteur (PFD) comptant le nombre de cycles entre la référence et la sortie PLL (éventuellement divisée),
  • un filtre numérique - n'importe quoi fera en supposant qu'il fasse l'intégration (un accumulateur) et qu'il ait un zéro (moins (ou plus?) une sortie PFD mise à l'échelle) pour stabiliser la boucle, éventuellement un ou plusieurs pôles au-dessus de la bande passante de la boucle pour réduire la valeur de contrôle "ondulation" à la fréquence de référence (n'a d'importance que si fref
  • les bits les plus significatifs de la sortie du filtre numérique (valeur de contrôle DVCO) sont donnés en entrée à l'accumulateur à débordement (DVCO).

Quant à la bande passante de la boucle, si elle n'est pas imposée par le temps de stabilisation, décidez-la en fonction des contributions de bruit de tous les composants.

  • Si la gigue provient principalement de la référence ou du PFD - utilisez une bande passante plus petite,
  • Si le bruit provient de l'oscillateur - augmentez-le.

Dans le cas où le signal de référence est modulé en phase ou en fréquence - utilisez une bande passante de boucle inférieure à la plus petite fréquence du signal modulant la référence.

Des techniques plus délicates sont utilisées si la fréquence de sortie est proche ou égale à la fréquence d'horloge et / ou si la faible gigue ou la plage de verrouillage très rapide est requise. Peut-être que dans votre cas, ils ne sont pas nécessaires, en plus ils peuvent ne pas être bien adaptés à une implémentation FPGA.

Andrzej
la source
Si l'on veut par exemple multiplier la fréquence d'un signal entrant stable par 16 et que l'on a une horloge qui est rapide par rapport à cela, quel avantage y a-t-il à utiliser un filtre numérique au lieu de mesurer le nombre d'horloges entre chaque front et le précédent un, et déterminer quelle fréquence doit être émise pour que l'impulsion de sortie qui doit coïncider avec le prochain front d'horloge d'entrée le fasse? Si la gigue d'horloge d'entrée n'est pas plus d'un cycle d'horloge, la gigue de sortie devrait être à peu près aussi bonne. Un tel schéma pourrait commencer à produire une sortie propre dès qu'il recevrait la deuxième impulsion d'entrée.
supercat
1

Si vous pouvez tolérer un peu de gigue mais que vous avez surtout besoin d'une synchronisation précise par rapport à une horloge dérivante pour la récupération de données, vous voudrez peut-être implémenter quelque chose comme la PLL CAN Standard (commence à la page 67 de ce PDF). Cela fonctionne sur la base d'un compteur de débordement qui doit être réglé nominalement correctement, mais se synchronise jusqu'aux fronts du flux d'impulsions entrant.

AM Shea
la source