# Oscillateur contrôlé par entrée numérique

Un oscillateur contrôlé par entrée numérique (appelé DCO pour digital controlled oscillator ou NCO pour numerically-controlled oscillator) consiste en un oscillateur électronique dont la fréquence de sortie est commandée par une entrée numérique. C'est un bloc utilisé par exemple dans la PLL numérique (ADPLL). Les NCO sont souvent utilisés en conjonction avec un convertisseur numérique-analogique (CNA) à la sortie pour créer un synthétiseur numérique direct (DDS). Bien que certains auteurs utilisent les termes DDS et NCO de manière interchangeable, par convention, un NCO fait référence à la partie numérique (c'est-à-dire le temps discret, l'amplitude discrète) d'un DDS.
Les oscillateurs à commande numérique offrent plusieurs avantages par rapport aux autres types d'oscillateurs en termes d'agilité, de précision, de stabilité et de fiabilité. Les NCO sont utilisés dans de nombreux systèmes de communication, notamment les convertisseurs numériques montants/descendants utilisés dans les systèmes sans fil 3G et les systèmes de radio logicielle, les boucles à phase asservie, les systèmes radar, les pilotes pour les transmissions optiques ou acoustiques et les modulateurs/démodulateurs FSK/PSK à plusieurs niveaux.

## Fonctionnement

Un oscillateur contrôlé par entrée numérique se compose généralement de deux parties :
* un accumulateur de phase, qui ajoute à la valeur maintenue à sa sortie une valeur de contrôle de fréquence à chaque échantillon d'horloge.
* un convertisseur phase-amplitude, qui utilise généralement le mot de sortie de l'accumulateur de phase (mot de phase) en tant qu'index dans une table de conversion de forme d'onde dans le but de fournir un échantillon d'amplitude correspondant. On utilise parfois une interpolation avec la table de conversion dans le but de fournir une meilleure précision et de réduire le bruit d'erreur de phase. On peut utiliser d'autres méthodes de conversion de phase en amplitude, notamment des algorithmes mathématiques tels que des séries de puissance, en particulier dans l'oscillateur d'un logiciel.
Lorsqu'il est cadencé, l'accumulateur de phase crée une forme d'onde en dents de scie de modulo-2$^N$ que le convertisseur phase-amplitude convertit ensuite en un sinusoïde échantillonné, où N est le nombre de bits transportés dans l'accumulateur de phase. Le nombre N définit la résolution de fréquence de l'oscillateur. Il est normalement beaucoup plus grand que le nombre de bits définissant l'espace mémoire de la table de conversion du convertisseur phase-amplitude. Si la capacité du convertisseur phase-amplitude est de 2$^M$, le mot de sortie de l'accumulateur de phase doit être tronqué à M bits, tel qu'illustré à la figure 1. On peut cependant utiliser les bits tronqués pour l'interpolation. La troncature du mot de sortie de phase n'affecte pas la précision de fréquence, mais elle produit une erreur de phase périodique variable dans le temps qui constitue une source importante de produits parasites. Un autre mécanisme générant des produits parasites prend la forme d'effets de longueur de mot finie du mot de sortie (en amplitude) du convertisseur phase-amplitude.
La précision de fréquence par rapport à la fréquence d'horloge n'est limitée que par la précision de l'arithmétique utilisée pour calculer la phase. Les oscillateurs contrôlés par entrée numérique sont agiles en phase et en fréquence, et peuvent être modifiés de manière triviale pour produire une sortie modulée en phase ou modulée en fréquence par sommation au nœud approprié ou pour fournir des sorties en quadrature, tel qu'indiqué sur la figure.

## Accumulateur de phase

Un accumulateur de phase binaire se compose d'un additionneur binaire à N bits et d'un registre configuré, tel qu'illustré à la figure 1. Chaque cycle d'horloge produit une nouvelle sortie à N bits constituée de la sortie précédente obtenue à partir du registre additionné au mot de réglage de la fréquence qui est constant pour une fréquence de sortie donnée. La forme d'onde de sortie résultante est un escalier dont la taille de pas est ΔF, la valeur entière du mot de réglage de la fréquence. Dans certaines configurations, la sortie de phase est prise à partir de la sortie du registre qui introduit une latence d'un cycle d'horloge, mais permet à l'additionneur de fonctionner à une fréquence d'horloge plus élevée.
L'additionneur est conçu pour déborder lorsque la somme de la valeur absolue de ses opérandes dépasse sa capacité (2$^N$ − 1). Le bit de dépassement est ignoré de sorte que la largeur du mot de sortie est toujours égale à sa largeur de mot d'entrée. Le reste ϕ$_n$, appelé résidu, est stocké dans le registre et le cycle se répète, en commençant cette fois à partir de ϕ$_n$. Puisque l'accumulateur de phase est une machine à états finis, le résidu à un certain échantillon K doit finalement revenir à la valeur initiale ϕ$_0$. L'intervalle K est appelé la cadence de répétition générale (GRR) donné par :
    ${\mbox{GRR}}={\frac {2^{N}}{{\mbox{PGCD}}(\Delta F,2^{N})}}$
où PGCD est la fonction du plus grand diviseur commun. Le GRR représente la véritable périodicité pour un ΔF donné, qui peut être très long pour un NCO à haute résolution. Habituellement, nous sommes plus intéressés par la fréquence de fonctionnement déterminée par le taux de débordement moyen, donné par :
    $F_{out}={\frac {\Delta F}{2^{N}}}F_{clock}$ (1)
    La résolution en fréquence, définie comme la plus petite variation incrémentielle possible de la fréquence, est donnée par la formule suivante:
    $F_{res}={\frac {F_{clock}}{2^{N}}}$ (2)
    L'équation (1) montre que l'accumulateur de phase peut être considéré comme un diviseur de fréquence programmable non entier de rapport de division $\Delta F/2^{N}$.

## Convertisseur phase/amplitude

Le convertisseur phase-amplitude crée la forme d'onde dans le domaine des échantillons à partir du mot de sortie de phase tronqué reçu du PA. Le PAC peut être une simple mémoire morte contenant 2$^M$ échantillons contigus de la forme d'onde de sortie souhaitée, qui est généralement une sinusoïde. Souvent, cependant, diverses astuces sont employées pour réduire la quantité de mémoire requise. Il s'agit notamment de diverses expansions trigonométriques, approximations trigonométriques, et les méthodes qui tirent parti de la symétrie en quadrature présentée par les sinusoïdes. Le PAC peut également consister en une RAM qui peut être remplie à volonté pour créer un générateur de formes d'onde arbitraires.

## Produits parasites

Les produits parasites sont le résultat d'une distorsion harmonique ou non harmonique dans la création de la forme d'onde de sortie due à des effets numériques non linéaires dans la chaîne de traitement du signal. Seules les erreurs numériques sont couvertes ici.

### Troncature de phase

Le nombre de bits d'accumulateur de phase d'un NCO (N) est généralement compris entre 16 et 64. Si le mot de sortie de l'accumulateur de phase était utilisé directement pour indexer la table de consultation du convertisseur phase/amplitude, une capacité de stockage trop élevée dans la ROM serait nécessaire. Par conséquent, le mot de sortie de l'accumulateur de phase doit être tronqué pour occuper un espace mémoire raisonnable. La troncature du mot de phase entraîne une modulation de phase de la sinusoïde de sortie qui introduit une distorsion non harmonique proportionnelle au nombre de bits tronqués. Le nombre de produits parasites créés par cette distorsion est donné par :
    $n_{W}={\frac {2^{W}}{{\mbox{PGCD}}(\Delta F,2^{W})}}-1$      (3)
    où W est le nombre de bits tronqués.
    En calculant la plage dynamique sans parasites (SFDR), nous sommes intéressés par le produit parasite ayant la plus grande amplitude par rapport au niveau de sortie de la porteuse, donné par :
       $\zeta _{max}=2^{-M}{\frac {\pi {\mbox{PGCD}}(\Delta F,2^{W})}{\sin \left(\pi \cdot 2^{-P}{\mbox{PGCD}}(\Delta F,2^{W})\right)}}$ où P est la taille de la table de consultation du convertisseur phase/amplitude en bits. Pour W >4,
       $\zeta _{max}\approx -6.02\cdot P\;{\mbox{dBc}}.$ Une autre méthode connexe de génération de rayonnements non essentiels est la légère modulation due au GRR décrite ci-dessus. L'amplitude de ces pics est faible pour un grand N et leur fréquence est généralement trop basse pour être détectable, mais ils peuvent poser des problèmes pour certaines applications. Une façon de réduire la troncature dans la consultation d'adresse est d'avoir plusieurs petites tables de consultation en parallèle et d'utiliser les bits supérieurs pour indexer dans les tables et les bits inférieurs pour les pondérer pour l'interpolation linéaire ou quadratique. Par exemple, utiliser un accumulateur de phase de 24 bits pour consulter deux LUTS de 16 bits. Adresse dans les 16 MSBs tronqués, et cela plus 1. Interpolation linéaire en utilisant les 8 LSBs comme poids. (On pourrait à la place utiliser 3 LUTs et interpoler quadratiquement). Cela peut entraîner une diminution de la distorsion pour la même quantité de mémoire, au prix de quelques multiplicateurs.

### Troncature d'amplitude

Une autre source de produits parasites est la quantification de l'amplitude de la forme d'onde échantillonnée contenue dans la ou les tables de consultation du PAC. Si le nombre de bits du CNA est P, le niveau du produit parasite AM est approximativement égal à -6,02 P - 1,76 dBc.

### Techniques d'atténuation

L'introduction d'un bruit blanc gaussien avant la troncature permet de réduire considérablement les sursauts de la troncature de phase. Le bruit de dither est additionné dans les W+1 bits inférieurs du mot de sortie du PA pour linéariser l'opération de troncature. Souvent, l'amélioration peut être obtenue sans pénalité car le plancher de bruit du CNA a tendance à dominer les performances du système. Les pics de troncature d'amplitude ne peuvent pas être atténués de cette manière. L'introduction de bruit dans les valeurs statiques contenues dans les ROMs du PAC n'éliminerait pas le caractère cyclique des termes d'erreur de troncature et ne permettrait donc pas d'obtenir l'effet souhaité.