Files
DSP/QAM/todo.md
2025-10-20 20:16:24 +02:00

6.8 KiB
Raw Blame History

🧭 Ordre dimplémentation dune chaîne de réception QAM (réelle)

Étape 0 — Environnement et base de test

🎯 Objectif : avoir une base stable de simulation avant toute boucle adaptative.

À faire :

  • Lire un flux IQ (fichier ou SDR)
  • Implémenter un filtre RRC de réception
  • Visualiser constellations, spectre, symboles

🧠 But : voir des symboles flous mais reconnaissables — aucun algorithme adaptatif encore.


Étape 1 — Correction de fréquence (CFO / Carrier Recovery)

🎯 Objectif : supprimer le décalage de fréquence de la porteuse avant le timing recovery.

Pourquoi en premier ?

  • Si ton signal tourne dans le plan complexe, Mueller & Müller échouera complètement.
  • Il faut un signal “quasistationnaire” avant de chercher le bon instant déchantillonnage.

Méthodes à implémenter :

  • Estimation grossière de CFO (par corrélation / FFT)
  • Boucle de Costas ou PLL de phase

📘 Résultat attendu : constellation QAM fixe mais “floue” (problème de timing restant).


Étape 2 — Synchronisation temporelle (Timing Recovery : M&M)

🎯 Objectif : trouver linstant exact déchantillonnage par symbole.

Tu connais déjà :

  • Interpolateur fractionnaire
  • Détecteur derreur M&M
  • Boucle PI

💡 Astuce : commence avec un signal parfaitement corrigé en fréquence avant dactiver la boucle timing.

📘 Résultat attendu : points de constellation bien centrés, toujours un peu brouillés (canal non corrigé).


Étape 3 — Égalisation adaptative (FFE / CMA / DD-LMS)

🎯 Objectif : supprimer lISI et compenser la distorsion de canal.

Méthodes typiques :

  • CMA (Constant Modulus Algorithm) pour pré-verrouillage (aveugle)
  • Puis DD-LMS (Decision Directed) une fois la décision fiable

💡 Légaliseur doit venir après le timing (sinon le signal est mal échantillonné).

📘 Résultat attendu : constellation nette, points regroupés correctement autour des symboles 16-QAM.


Étape 4 — Décision + Mapping

🎯 Objectif : convertir les symboles QAM en bits.

À faire :

  • Implémenter la décision dure (±1, ±3)
  • Mapping / demapping Gray
  • Vérifier BER par rapport à trame connue

💡 Teste dabord sans bruit pour valider le mapping bit ↔ symbole.


Étape 5 — Boucles de phase fines (Costas loop fine)

🎯 Objectif : corriger la phase résiduelle après timing et égalisation.

  • Souvent intégrée dans la boucle M&M ou séparée (PLL de phase fine)
  • Sert à verrouiller la dernière rotation du plan IQ

Étape 6 — Correction derreurs / décodage (FEC)

🎯 Objectif : terminer la chaîne par le décodage des bits.

  • LDPC, Viterbi, Turbo selon ton système
  • Cest la couche “bitstream”, plus logique que DSP

Étape 7 — Optimisation et intégration

🎯 Objectif : passer du prototype à la version embarquée.

  • Conversion float → fixe (Q-format)
  • Pipeline temps réel (DMA, buffers circulaires)
  • Profiling CPU / mémoire
  • Test sur matériel SDR, puis en RF réelle

⚙️ En résumé — Ordre dimplémentation

Étape Bloc Type Pourquoi cet ordre
0 RRC + acquisition IQ statique Base stable et visualisable
1 Correction de fréquence (CFO) boucle 1 sinon M&M échoue
2 Synchronisation temporelle (M&M) boucle 2 aligner les symboles
3 Égalisation adaptative boucle 3 corriger canal
4 Décision + mapping bits logique extraire données
5 Boucle de phase fine (Costas) ajustement phase finale
6 Décodage FEC post-traitement fiabiliser le bitstream
7 Optimisation C/FPGA système rendre temps réel

🧠 Ordre de test conseillé

  1. Simule tout en float dans Python/MATLAB
  2. Valide chaque bloc indépendamment
  3. Assemble et teste avec bruit / décalage
  4. Ensuite seulement, porte en C (ou sur DSP/FPGA)


# Bloc / Étape Objectif principal Priorité Ce quil faut coder / comprendre Test / Validation
0 Acquisition & Filtrage RRC Lire le signal IQ et filtrer pour limiter lISI Très haute FIR RRC, buffer IQ Visualiser constellation, spectre
1 Correction de fréquence (CFO) Supprimer offset de fréquence de la porteuse Très haute PLL / Costas loop, corrélation, FFT Constellation immobile, pas de rotation
2 Synchronisation temporelle (M&M) Aligner échantillons sur symboles Très haute Interpolateur fractionnaire, TED M&M, boucle PI Points centrés, vérification de tau_hat
3 Égalisation adaptative Supprimer ISI et compenser canal Haute FFE ou DFE, algorithme CMA / DD-LMS Constellation nette, erreur moyenne faible
4 Décision symbolique et mapping Convertir symbole → bits Haute Hard decision QAM, Gray mapping Vérifier BER avec trame connue
5 Boucle de phase fine (Costas / PLL) Corriger la phase résiduelle Moyenne PLL numérique, phase fine Points de constellation fixes, phase verrouillée
6 Décodage FEC Extraire flux de bits fiable Moyenne LDPC / Viterbi / Turbo Comparer bits reçus / transmis, BER
7 Optimisation & passage temps réel Adapter pour C / DSP / FPGA Moyenne Point fixe, buffers circulaires, pipeline Profil CPU / mémoire, latence, test en SDR réel

💡 Notes pratiques :

  • Test bloc par bloc avant dintégrer la chaîne complète
  • Toujours simuler en float avant passage en C ou point fixe
  • Chaque boucle (CFO, Timing, Phase) doit être réglée indépendamment pour éviter linstabilité
  • Commencer avec trames simples avant bruit réel, puis ajouter AWGN / jitter / offsets