Modulations numériques — Fiches pratiques 🎛️
Cette fiche couvre les modulations numériques communes (ASK, FSK, GFSK, PSK, QPSK, 8PSK, QAM), les constellations et la modulation vectorielle (I/Q).
Principes généraux
- Modulation analogique d'une porteuse par une suite de symboles discrets. Chaque symbole porte une information (bits).
- Représentation I/Q (modulation vectorielle) : s(t) = I(t) cos(2πf_ct) - Q(t) sin(2πf_ct) où I et Q sont les composantes en phase et en quadrature.
Types courants
- ASK (Amplitude Shift Keying) : amplitude discrète selon symbole (ex. OOK)
- FSK (Frequency Shift Keying) : fréquence discrète (FSK binaire: deux fréquences)
- GFSK (Gaussian FSK) : FSK avec filtrage gaussien pour réduire la bande
- PSK (Phase Shift Keying) : phase discrète (BPSK = 2 phases)
- QPSK (Quadrature PSK) : 4 symboles, phase {±π/4, ±3π/4} selon mapping
- 8PSK : 8 phases → 3 bits/symbol
- QAM (Quadrature Amplitude Modulation) : combinaison amplitude/phase (ex. 16QAM → 16 symboles)
Constellations
- Constellation = position des symboles dans le plan I-Q.
- Exemples :
- BPSK : deux points sur l'axe I (±A,0)
- QPSK : quatre points sur un cercle (±A/√2, ±A/√2)
- 8PSK : 8 points uniformément répartis sur le cercle
- 16QAM : grille 4×4 (valeurs d'amplitude différentes en I et Q)
Bruit et performance
- Distance minimale entre symboles fixe le rapport signal-à-bruit (SNR) nécessaire.
- QAM haute densité nécessite SNR plus élevé.
Exercice type — Étude d'une modulation QPSK (avec correction)
Cahier des charges
- Message binaire périodique : motif
01110010envoyé à 2 Mbits/s. - Constellation QPSK fournie (E = 1 V). Porteuse : f_c = 5 MHz.
Questions
1) Tracer le diagramme de constellation associé au message périodique 01110010.
2) En déduire les tensions I(t), Q(t) et s(t).
3) Utiliser un tableur pour tracer I(t), Q(t), s_a(t) (signal modulé) et s_b(t) = cos(2πf_ct)·I(t) + sin(2πf_ct)·Q(t) (forme alternative) et vérifier.
4) Visualiser le diagramme de constellation avec un logiciel (ex. IQCreator).
Correction (résumé)
- Débit binaire = 2 Mbit/s → durée d'un bit T_b = 0.5 μs. Pour QPSK, durée symbole T_s = 1 μs (2 bits/symbol).
- Mapping (exemple Gray) :
- 00 → (I,Q) = (+1/√2, +1/√2)
- 01 → (+1/√2, -1/√2)
- 11 → (-1/√2, -1/√2)
- 10 → (-1/√2, +1/√2)
- Pour le motif
0 1 1 1 0 0 1 0→ regrouper par paires:01 11 00 10→ symboles correspondants (utiliser le mapping choisi). - Tracer les points sur le plan I-Q (cercles de rayon 1), puis construire I(t) et Q(t) comme des signaux en marche/arrêt par symboles (valeurs constantes sur T_s).
- s(t) = I(t) cos(2πf_ct) - Q(t) sin(2πf_ct).
- Excel : échantillonner à fsample (≥ 10·f_c), représenter I(t), Q(t), calculer s(t).
Exercice additionnel — 16QAM (avec correction succincte)
Cahier des charges
- Motif binaire périodique :
1011000111100000envoyé à 1 Msymbol/s. - Constellation : 16QAM conforme à la référence, E = 3 V. f_c = 5 MHz.
Correction (résumé)
- 16QAM : 4 bits/symbol → chaque symbole correspond à une cellule d'une grille 4×4 en I/Q.
- Normaliser les amplitudes pour respecter énergie E = 3 V (calcul de l'espérance d'énergie par symbole).
- Convertir le flux binaire en symboles (4 bits → 1 symbole), tracer la trajectoire I(t), Q(t) et s(t) comme ci-dessus.
Outils conseillés
- Tableur (Excel, LibreOffice Calc) pour tracer les signaux temporels.
- IQCreator / GNURadio / MATLAB / Python (NumPy + Matplotlib) pour visualiser constellations et spectres.
Exemples générés (QPSK & 16QAM) ✅
Un script est fourni pour générer des fichiers CSV (compatibles Excel) et des images (constellations SVG et signaux PNG) :
- Script :
docs/notebooks/generate_modulation_plots.py - CSV générés :
docs/notebooks/data/qpsk_data.csv,docs/notebooks/data/16qam_data.csv - Images (si matplotlib installé) :
docs/assets/images/qpsk_constellation.svg,docs/assets/images/qpsk_IQ.png,docs/assets/images/qpsk_s.png,docs/assets/images/16qam_constellation.svg,docs/assets/images/16qam_IQ.png,docs/assets/images/16qam_s.png
Exécution depuis le dossier docs/notebooks :
Remarque : si
matplotlibn'est pas installé, le script génère les fichiers CSV mais saute la création des images. Pour activer la génération d'images, installez :
Les CSV peuvent être ouverts directement dans Excel/LibreOffice (séparateur ,) pour tracer I(t), Q(t) et s(t) si votre environnement Jupyter n'est pas disponible.