La modulation de phase est une technique fondamentale dans les systèmes de communication numérique, en particulier dans les systèmes embarqués où la puissance de traitement, la mémoire et l'énergie sont strictement limitées. La conception d'algorithmes de modulation de phase à faible complexité permet aux ingénieurs de maintenir une transmission fiable des données tout en réduisant la consommation d'énergie, en simplifiant le matériel et en minimisant la taille du code.

Comprendre la modulation de phase dans les contextes intégrés

Dans un système intégré, l'algorithme de modulation doit fonctionner sur un microcontrôleur ou un DSP avec des cycles CPU limités et une mémoire sur puce. Contrairement aux radios définies par logiciel sur des plates-formes puissantes, les émetteurs intégrés fonctionnent souvent avec des tables de recherche à point fixe, de petites tables de recherche et des temps d'interruption. Le défi est d'atteindre des performances acceptables de taux d'erreur bit (BER) sans dépasser les contraintes en temps réel.

Les applications intégrées telles que les nœuds de capteur sans fil, les étiquettes IoT, l'entrée sans clé à distance et la télémétrie à faible puissance reposent sur des systèmes simples de modulation de phase tels que le raccourcissement de phase (BPSK) ou le raccourcissement de phase de Quadrature (QPSK). Ces systèmes bénéficient de comptes d'état réduits et de calendrier déterministe, qui simplifient la modulation et la démodulation.

Contraintes à la conduite de conception à faible complexité

La conception d'algorithmes de modulation de phase pour les systèmes embarqués nécessite de s'attaquer à plusieurs contraintes fondamentales qui diffèrent des implémentations de bureau ou de FPGA.

Production limitée de traitement

Les processeurs embarqués fonctionnent généralement à des dizaines à des centaines de mégahertz et peuvent manquer de multiplicateurs matériels ou d'unités flottantes. Chaque symbole de modulation doit être généré dans quelques douzaines de cycles d'horloge pour répondre aux taux de sortie en temps réel.

Contraintes de mémoire et de stockage

Les tables de recherche pour les déplacements de phase doivent être compactes et le tamponnage doit être maintenu au minimum. Par exemple, une table sinusoïdale complète avec 1024 entrées à résolution 16 bits occupe 2 KB – une fraction importante de la mémoire totale. Les ingénieurs doivent échanger la taille de la table contre la résolution de phase et la distorsion harmonique.

Efficacité énergétique

Les appareils alimentés par batterie nécessitent des algorithmes qui réduisent le temps actif du processeur et permettent un sommeil profond entre les transmissions. La modulation à faible complexité réduit le nombre d'instructions par symbole, ce qui réduit la puissance dynamique.

Déterminisme en temps réel

La modulation de phase fonctionne souvent sur une horloge symbole stricte. L'absence d'un délai de temps corrompt l'ensemble du paquet. Les algorithmes doivent être prévisibles, avec le temps d'exécution le plus mauvais cas (WCET) limité et connu.

Stratégies fondamentales pour la simplification de l'algorithme

Plusieurs techniques éprouvées réduisent le fardeau de calcul de la modulation de phase sans perte catastrophique de qualité du signal.

Point fixe Arithmétique sur point flottant

Les microcontrôleurs intégrés sans FPU doivent émuler le point flottant dans un logiciel qui est lent et gonflé. En utilisant la représentation à points fixes (format Q15, par exemple) mapper des valeurs fractionnelles aux entiers, permettant la multiplication et l'addition en utilisant des opérations d'ALU entiers. Cela réduit le nombre de cycles par ordre de grandeur. Par exemple, les incréments de phase peuvent être représentés par des angles à points fixes normalisés en compteur circulaire (16 bits). Tous les ajouts et comparaisons deviennent des opérations d'intégrateurs simples. Une discussion exhaustive des techniques à points fixes est disponible dans cet article sur l'arithmétique à points fixes.

Tableaux de recherche pour Sine et Cosine

Même avec l'arithmétique à point fixe, l'évaluation de la sinus/cosine via CORDIC ou l'approximation polynôme peut être trop lente. Les tables précomptées stockées en ROM ou en flash fournissent un accès O(1) au coût de la mémoire. Pour minimiser la taille de la table, les ingénieurs peuvent utiliser la symétrie quart d'onde (stocker seulement 0°–90°) et interpoler linéairement pour les angles entre les entrées de la table. Par exemple, une table quart d'onde 256 entrées fournit une résolution angulaire de 0,35° avec seulement 256 mots de stockage.

Phase de réduction de l'État

Pour de nombreux liens intégrés, BPSK ou QPSK fournissent des taux de données suffisants. L'utilisation de moins d'états de phase simplifie la cartographie des bits aux déplacements de phase et réduit le nombre de valeurs de sortie distinctes à générer. Il relâche également les spécifications de bruit de phase et de jitter de l'oscillateur local.

Synthèse numérique directe (DDS) avec accumulateur de phase

Une approche d'accumulateur de phase élimine la nécessité de calculs sinusaux par symbole. L'accumulateur de phase augmente par une étape fixe chaque période d'échantillonnage; la valeur accumulée (tronquée à la largeur de l'adresse de la table) est utilisée pour récupérer l'amplitude du cosinus. Pour moduler, l'émetteur ajoute un décalage de phase (représentant le symbole) à l'accumulateur avant la recherche. Cette structure est très efficace – les seules opérations par échantillon sont un ajout entier, une lecture de table et éventuellement une multiplication pour l'échelle d'amplitude. L'étape de modulation ajoute seulement un ajout supplémentaire par symbole.

Exemple de mise en oeuvre : Clé de changement de phase binaire (BPSK)

BPSK est le schéma de modulation en phase le plus simple, avec deux états de phase séparés par 180°. Sa faible complexité en fait un agrafe pour les émetteurs embarqués.

Cartographie et mise en œuvre

Les bits de données sont mapés en décalage de phase : 0 → 0°, 1 → 180°. Avec DDS, l'émetteur conserve la valeur de l'accumulateur de phase courante. Lorsqu'un nouveau bits arrive (à la vitesse symbolique), le décalage de phase est soit 0 ou π (la moitié de l'accumulateur à grande échelle). Le décalage est simplement ajouté à l'accumulateur. Aucune multiplication n'est nécessaire; le changement de symbole est un seul ajout entier. La forme d'onde résultante est générée par la recherche de l'amplitude sinusale de la table précalculée et la sortie à une broche DAC ou PWM.

Considérations relatives à la démodulation

While this article focuses on modulation, it is worth noting that low-complexity modulation often pairs with simple non-coherent or differentially coherent demodulation (e.g., differential BPSK). This avoids the need for carrier recovery loops, further reducing receiver complexity. For more on BPSK, see the BPSK description on Wikipedia.

Échanges

Pour des taux de données plus élevés, les ingénieurs peuvent adopter QPSK (2 bits/symbole) qui nécessite quatre états de phase (0°, 90°, 180°, 270°). QPSK peut être mis en œuvre en utilisant deux modulateurs BPSK en quadrimétrie, mais cela double la complexité : deux tables de recherche ou une table unique avec des sorties cosinus et sinus. L'équilibre entre complexité et efficacité de bande passante doit être évalué en fonction des exigences de taux de données et des conditions de canal de l'application.

Techniques avancées de faible complexité

Pour les systèmes embarqués qui ont besoin d'un débit légèrement supérieur à celui de BPSK mais qui ne peuvent toujours pas se permettre une QPSK complète, il existe des approches intermédiaires.

Déduction de QPSK (OQPSK)

OQPSK réduit les transitions de phase de 180° en étalant les bits en phase et quadrature d'une demi-période de symbole. Cela réduit la variation de l'enveloppe, ce qui la rend plus adaptée aux amplificateurs de puissance non linéaires. L'algorithme de modulation est presque identique à QPSK mais nécessite un contrôle de synchronisation supplémentaire pour retarder un canal.

Clé de changement de poste minimale (MSK)

MSK est une modulation en phase continue où la phase évolue linéairement, évitant les discontinuités abruptes. On peut la considérer comme OQPSK avec la formation d'impulsions semi-sinusoïdales. L'approche de l'accumulateur de phase fonctionne naturellement : l'accroissement de phase n'est pas constant mais dérivé du bit de données. MSK fournit une enveloppe constante (pas de modulation d'amplitude) et un excellent confinement spectral. La complexité de mise en œuvre est modérée; il faut une table de recherche (ou interpolation) légèrement plus grande pour générer la trajectoire de phase lisse.

Algorithme CORDIC pour la rotation de phase

L'algorithme Coordonnée Rotation Digital Computer (CORDIC) calcule sinus et cosinus sans multiplicateurs, en utilisant uniquement des opérations de décalage et d'ajout. Il est idéal pour les puces sans multiplicateur matériel. Pour la modulation de phase, CORDIC peut remplacer la table de recherche si la mémoire est extrêmement serrée (par exemple, < 128 bytes of ROM). However, CORDIC requires multiple iterations (e.g., 16 iterations for 16-bit precision), consuming more cycles than a table lookup. On many embedded cores, the table approach is faster unless the table size is prohibitive. A good overview of CORDIC is provided by article CORDIC de Wikipedia.

Considérations pratiques de mise en œuvre

Au-delà de l'algorithme, plusieurs facteurs de niveau système affectent les performances du monde réel de la modulation en phase de faible complexité.

Phase Bruit et jitter

Les oscillateurs locaux embarqués (oscillateurs CL, oscillateurs RC ou LLP à base de cristal) souffrent de bruit de phase et de bruit. Les algorithmes de modulation à faible complexité qui supposent un contrôle de phase parfait peuvent se dégrader dans des conditions bruyantes. L'utilisation de l'encodage différentiel (par exemple DPSK) évite la référence absolue de phase, rendant le lien robuste à la dérive de phase lente.

Taux d'échantillonnage et anti-aliasing

Pour le QPSK à 1 MHz avec un taux de symbole de 100 kHz, la bande passante est d'environ 100 kHz, donc un DAC de 200 kS/s suffit. Cependant, les incréments d'accumulateur de phase au taux d'échantillonnage, et non le taux de symbole. L'utilisation d'un taux d'échantillonnage plus élevé améliore la pureté spectrale de la sortie, mais augmente la charge du CPU. Les ingénieurs doivent choisir le taux d'échantillonnage minimal qui répond aux objectifs de distorsion harmonique, souvent 4 à 8 fois la fréquence du support pour des sorties simples à ondes carrées avec peu de filtrage.

Gestion des interruptions en temps réel

La routine de modulation est généralement appelée à partir d'une interruption de minuterie. La routine de service d'interruption (ISR) doit être brève : lire l'offset de phase, ajouter à l'accumulateur, récupérer la valeur sinusale, écrire dans le registre de sortie. L'enregistrement et la restauration du contexte peuvent dominer les données aériennes si elles ne sont pas optimisées. L'utilisation de tables de recherche précomputées en RAM ou flash sur puce avec accès direct à la mémoire (DMA) peut décharger le processeur.

Complexité d'étalonnage

Pour quantifier la réduction de la complexité, il faut considérer un microcontrôleur 8 bits typique (p. ex. Atmel AVR) qui met en œuvre BPSK avec DDS. Les opérations par échantillon sont les suivantes :

  • Charger l'accumulateur de phase (2 mots de mémoire)
  • Ajouter l'accroissement de phase (1 ajout)
  • Truncate à l'adresse de la table (masque bit)
  • Valeur sinusoïdale de charge à partir du tableau (1 charge)
  • Écrire au port de sortie (1 écrire si DAC est placé sur le port)

À un taux d'échantillonnage de 200 kHz, le CPU dépense environ 1–2 MIPS en modulation, laissant beaucoup de salle de tête pour la manipulation du protocole ou la lecture des capteurs. Une implémentation à point flottant comparable nécessiterait des dizaines de cycles par échantillon et une bibliothèque d'émulation du FPU, augmentant la taille du code et le tirage de puissance.

Pour QPSK, les doubles de surf (deux accumulateurs de phase ou un avec sinus cosine+). L'utilisation d'une table à quart d'onde 256 entrées avec interpolation linéaire ajoute quelques cycles de plus, mais s'adapte toujours à moins de 20 cycles par échantillon sur un MCU 16 bits. L'empreinte mémoire des tables, des accumulateurs de phase et des tampons reste inférieure à 2 KB, répondant à de nombreux appareils à bas coût.

Exemples d'application

Réseaux de capteurs sans fil

Les émetteurs RF de faible puissance dans les nœuds de capteur (p. ex., bande ISM 868/915 MHz) intègrent souvent un module de phase simple sur une puce dédiée. Cependant, pour les modulateurs flexibles définis par logiciel qui peuvent basculer entre BPSK, OOK et MSK, une mise en œuvre MCU est attrayante. La faible complexité permet au MCU de dormir entre les transmissions, ce qui sauve la vie de la batterie.

Mots clés de sous-GHz IoT

Les balises RFID actives et les télécommandes utilisent traditionnellement OOK ou FSK, mais pour une meilleure immunité sonore, BPSK gagne en popularité. L'algorithme de faible complexité garantit que même un MCU à 4 bits bon marché peut générer le support modulé directement sur une broche d'E/S en basculeant à la fréquence du support (approche de verrouillage de la fréquence) ou en utilisant un PWM avec accumulateur de phase. La taille du code peut être inférieure à 1 KB.

Liens de données audio et ultrasoniques

La transmission de données à courte portée par l'audio (par exemple, à l'aide de microphones et de haut-parleurs) peut utiliser la modulation de phase dans la bande ultrasonore. Puisque les taux d'échantillonnage sont faibles (~48 kHz), l'algorithme de modulation peut être extrêmement simple.

Conclusion

La conception d'algorithmes de modulation de phase à faible complexité est essentielle pour un déploiement réussi des systèmes embarqués où les ressources sont limitées. En utilisant des tables de recherche compactes, des architectures d'accumulateurs de phase et des comptes d'état de signal réduits, les ingénieurs peuvent créer des modulateurs fiables qui fonctionnent sur des microcontrôleurs à faible coût avec une consommation minimale de puissance. Les compromis entre complexité, mémoire et taux de données doivent être soigneusement équilibrés par rapport aux exigences d'application.