# 🧭 Ordre d’implĂ©mentation d’une 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 l’instant exact d’échantillonnage par symbole. **Tu connais dĂ©jĂ  :** * Interpolateur fractionnaire * DĂ©tecteur d’erreur M&M * Boucle PI 💡 Astuce : commence avec un signal *parfaitement corrigĂ© en frĂ©quence* avant d’activer 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 l’ISI 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 d’abord 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 d’erreurs / dĂ©codage (FEC)** 🎯 Objectif : terminer la chaĂźne par le dĂ©codage des bits. * LDPC, Viterbi, Turbo selon ton systĂšme * C’est 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 d’implĂ©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 qu’il faut coder / comprendre | Test / Validation | | - | --------------------------------------- | ----------------------------------------------- | ---------- | ----------------------------------------------- | ------------------------------------------------ | | 0 | **Acquisition & Filtrage RRC** | Lire le signal IQ et filtrer pour limiter l’ISI | 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 d’intĂ©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 l’instabilitĂ© * Commencer avec **trames simples** avant bruit rĂ©el, puis ajouter AWGN / jitter / offsets ---