7.3 KiB
Modulations numériques
Logiciel permettant de comprendre et de s'amuser avec les différentes modulations numériques. Les valeurs ne sont pas celles utilisées dans la réalité, mais permettent de bien visualiser le fonctionnement et les principes utilisés.
Constellation_modulation_numerique_16_QAM.png
Ci-dessus, la constellation de la modulation numérique avec 2 porteuses en quadrature, type 16-QAM (Le wifi 7 fontionne en 256-QAM).
Objectif :
Ajouter des fonctionnalités à un logiciel en C++ permettant de visualiser et comprendre les différents cas de modulations numériques (Amplitude, fréquence, phase et combo)
Le travail est fait par 4 groupes de 16 élèves, successivement. Dans chaque groupe, chaque tâche sera réalisée par un groupe de 4 élèves. 30 min seront réservées en fin de séance pour préparer la transmission au groupe suivant
Thème : transporter l'information
Modulation numérique 4-ASK + le menu "Application -> Quitter"
Contraintes et attentes
- Utiliser Dear ImGui + SDL3 (imposé) ;
- Logiciel écrit et testé sous Linux uniquement (toutefois, la cross-compilation est possible pour Windows) ;
- dépendances : libSDL3 + mesa (OpenGL nécéssaire). N.B. : sans OpenGL fonctionnel, il faut compiler l'exemple d'implémentation dite "software rendering" ;
- Travail par itérations : on travaille pour le prochain groupe ;
- Documenter au maximum.
Copyright : Eric Bachard 2026/01/07
Étude et validation des modulations numériques possibles avec le logiciel
Actuellement fonctionnel (2026/01/26) :
- Longueur Trame de 8, 16 ou 24 bits, modifiable en temps réel
- OOK : On-Off Keying
- ASK : Amplitude Shift Keying
- M-ASK (ici 4-ASK) : 4 niveaux Amplitude Shift Keying
- 4-QAM : Quadrature Amplitude Modulation
- 16-QAM : Quadrature Amplitude Modulation
- FSK : Frequency Shift Keying
- M-FSK : Multiple Frequency Shift Keying
- BPSK : Binary Phase Shift Keying
- DPSK : Differential-PSK (à vérifier, sous réserves)
- Ajout des signification d'un 1 ou d'un 0 (dessin compris, sous forme d'un nouveau canvas, ainsi que des 4 combinaisons possibles lorqu'un symbole est codé sur 2 bits.
- Ajout d'un menu "Application -> Quitter" fonctionnel
- Layout amélioré : tout ce qui doit apparaître est correctement affiché, au bon endroit et avec les bonnes dimensions
- Fenêtre en plein écran avec les bonnes couleurs.
- Utilisation de CMake (automatisation de la génération du Makefile)
- Utilisation de nouveaux contrôles pour modifier les bits du mot transmis
- Sélection de thème parmi Dark, Clair, Windows, Classic et Traditionnal Green
- Utilisation de la classe application, qui permettra de gérer le layout et le thème.
- Utilisation de nouveaux contrôles pour modifier les bits du mot transmis
- Écriture d'une classe application, qui permettra de gérer le layout et le thème.
Problèmes ou bugs connus :
- flickering : arrive quelquefois quand on passe du mode plein écran au mode réduit. à corriger.
Solution proposée : en fait, c'est rare, mais il faut fermer l'application quand même et la relancer (la recherche de l'origine du pb est en cours).
-
La constellation 16-QAM est en cours de vérification. Il est possible que certains coefficients soient à permutter. Recherche d'amélioration en cours.
-
la modulation DPSK n'est pas décrite, car le principe n'est pas clairement établi (et la modulation BPSK, si elle n'a que deux possibilités, pose un problème de décidabilité à la réception).
Merci de créer une issue pour d'éventuels autres problèmes.
Modulation Numérique 4-FSK, avec description de l'encodage pour une trame de longueur 3 octets, en utilisant le thème "Dark"
Modulation Numérique BPSK (Binary Phase Shift Keying) avec description de l'encodage, et le thème Dark
Tâches prévues pour cette partie
À intégrer (le code est en cours de test) :
- Utiliser CTest (tests unitaires)
- Rédaction de la documentation
- (en cours) Revisiter le placement des contrôles, en utilisant un dimensionnement proportionnel
Compilation du programme (Linux seulement pour le moment)
Dépendances
Il faut installer :
- build-essential ;
- libSDL3 ;
- carte graphique INTEL : Il faut OpenGL fonctionnel. Pour cela, installer mesa-utils (glxgears), devrait installer toutes les dépendances ;
- carte graphique NVidia : OpenGL fonctionnel (pilote propriétaire avec bibliothèques ad-hoc, ou mesa-utils si driver nouveau).
Pour compiler l'application :
Dans un terminal, se placer à la racine de Partie2
make -j $(nproc)
Installation sous Linux
Si les dépendances sont installées (libSDL3 et OpenGL + un environnement graphique), le fonctionnement ne devrait pas poser de problèmes.
Le logiciel s'appelle Modulations_Numeriques, et peut s'exécutr de plusieurs façons : en mode console et en mode "graphique".
Utilisation en mode console
N.B. : ce qui suit permet une installation en mode graphique.
Dans le terminal, l'exécution est déjà possible avec la commande ./Modulations_Numeriques depuis le dossier build.
TODO : ajouter la règle du make install avec cmake
En mode graphique
Pour l'instant, l'installation est manuelle. Testée sous Linux Mint 22.2
-
copier le fichier Modulations_Numeriques.desktop (il se trouve dans ressources), dans le dossier .local/share/applications
-
créer le dossier $HOME/bin/build et y copier le binaire compilé appelé Modulations_Numeriques qui se trouve dans build
-
copier le script Modulations_Numeriques (il se trouve dans ressources), dans le dossier $HOME/bin
-
rendre ce script exécutable
-
créer le dossier fonts dans $HOME/bin et y placer le fichier DroidSans.ttf qui se trouve dans le dossier fonts.
L'application devrait maintenant être utilisable en mode graphique.
Modulation numérique DPSK (Differential Phase Shift Keying) avec le thème LightGreen.
Remerciements
Ce logiciel utilise le code d'application sous licences libres, qui rendent la vie plus facile :
Merci aussi à toutes celles et ceux qui ont contribué, même modestement.