Le pourquoi et le comment du réseau sans fil
Plusieurs utilisateurs doivent partager le même médium physique : l'air. Contrairement au filaire, on ne peut pas brancher chacun sur son propre câble.
Solution : on organise qui envoie quoi, quand, et sur quelle fréquence grâce à un multiplexage temps-fréquence.
OFDM = Orthogonal Frequency Division Multiplexing. L'idée est de diviser la bande de fréquence disponible en un grand nombre de sous-porteuses étroites et orthogonales entre elles.
Avantages OFDM :
Le préfixe cyclique (CP) :
Ordre de décodage obligatoire : chaque canal donne les paramètres du suivant. Sans le PBCH, impossible de trouver le PDCCH ; sans le PDCCH, impossible de trouver le PDSCH.
Paramètres numériques et organisation des ressources
La FFT de 1024 points génère 1024 sous-porteuses, mais on n'en utilise que 624 (les 312 premières + les 312 dernières) pour centrer le signal autour de la fréquence DC.
Tout élément de la grille est repéré par (indice symbole, indice RB) :
| Variable | Dimensions | Explication |
|---|---|---|
tfMatrix | 14 × 1024 | Matrice T/F brute complète (tous symboles, toutes sous-porteuses FFT) |
tfMatrix_short | 14 × 624 | Après sélection des sous-porteuses allouées uniquement |
qamMatrix | 12 × 624 | Après suppression des 2 premiers symboles (PSCH + SSCH) |
qamMatrix correspond au symbole 3 de la grille (le PBCH).Séquences CAZAC / Zadoff-Chu
Avant de décoder quoi que ce soit, le récepteur doit savoir exactement à quel instant commence la trame et sur quelle fréquence se caler. Une erreur de timing ou de fréquence détruirait l'orthogonalité OFDM.
Ces séquences ont deux propriétés remarquables :
Après synchronisation, les séquences PSCH/SSCH servent aussi à estimer la réponse du canal H[k] pour chaque sous-porteuse k. L'égaliseur ZF divise le signal reçu par l'estimée du canal :
PBCH, PDCCH, PDSCH — structure et contenu
Le PBCH est commun à tous les utilisateurs. Il commence au symbole 3. Sa taille dépend du nombre d'utilisateurs : (1 + Nb_users) × 48 bits.
| Sous-canal | Bits transmis (avec FEC) | Bits utiles (après FEC) | Contenu |
|---|---|---|---|
| Cell & Users Info | 48 | 24 | Cell ident (18 bits) + Nombre d'utilisateurs (6 bits) |
| PBCHU user 1 | 48 | 24 | User ident (8b) + MCS PDCCH (2b) + Symb PDCCHU (4b) + RB PDCCHU (6b) + HARQ (4b) |
| PBCHU user 2…N | 48 chacun | 24 chacun | Mêmes champs, pour chaque utilisateur supplémentaire |
Le PDCCH est la concaténation de tous les PDCCHU (un par utilisateur). Sa position est donnée par le PBCH. Chaque PDCCHU fait 72 bits transmis → 36 bits après FEC.
| Champ | Taille (après FEC) | Valeurs |
|---|---|---|
| User ident | 8 bits | Identifiant unique de l'utilisateur |
| MCS du PDSCH | 6 bits | 0–39 : détermine modulation + FEC du PDSCH (voir table MCS) |
| Symbole de début du PDSCH | 4 bits | 1 à 14 |
| RB de début du PDSCH | 6 bits | 1 à 52 |
| Taille en RB | 10 bits | Nombre de RB alloués au PDSCH |
| Flag CRC | 2 bits | 0=CRC8, 1=CRC16, 2=CRC24, 3=CRC32 |
C'est le canal qui porte les données utiles. Sa position, sa taille et ses paramètres de décodage sont tous définis par le PDCCHU. La chaîne de décodage est :
| Paramètre CRC | Flag | Taille | Polynôme |
|---|---|---|---|
| CRC-8 | 0 | 8 bits | 1 + X + X² + X⁸ |
| CRC-16 | 1 | 16 bits | 1 + X² + X¹⁵ + X¹⁶ |
| CRC-24 | 2 | 24 bits | X²⁴ + X²² + … + 1 |
| CRC-32 | 3 | 32 bits | X³² + X²⁶ + … + 1 |
Hamming748 et Code Convolutionnel v27
On ajoute de la redondance aux données avant transmission. Si des bits sont corrompus, la redondance permet de les reconstruire côté récepteur. Le taux de codage r mesure l'efficacité :
Pour chaque groupe de 4 bits d'entrée, on produit 8 bits de sortie (4 données + 3 parité Hamming74 + 1 parité globale).
Matrice d'encodage D (4×8) :
Matrice syndrome H (3×7) pour décoder :
Capacités de correction :
| Situation | Syndrome ε | 8e bit (parité) | Action |
|---|---|---|---|
| Pas d'erreur | 000 | correct | Accepter |
| 1 erreur (bits 1–7) | ≠ 000 | incorrect | Corriger : flip du bit indiqué |
| Erreur sur le 8e bit | 000 | incorrect | Accepter (données OK) |
| 2 erreurs | ≠ 000 | correct | Rejeter (retransmission) |
Ce code génère 2 bits de sortie pour chaque bit d'entrée, en combinant (XOR) le bit courant avec ses 6 prédécesseurs. Les polynômes générateurs sont :
Stream 1 (polynôme 133 octal) :
Stream 2 (polynôme 171 octal) :
cc1 = fec.FECConv(('1011011','1111001'), 6) puis cc1.viterbi_decoder(bits, 'hard').BPSK, QPSK, 16-QAM, 64-QAM — mapping et régions de Voronoï
La modulation associe un groupe de m bits à un symbole complexe. Plus m est grand, plus le débit est élevé, mais plus le signal est fragile face au bruit. Le codage de Gray garantit que deux symboles voisins ne diffèrent que d'1 bit.
Seuil de décision = 0. Canal le plus robuste, utilisé pour PBCH et PDCCH basse qualité.
4 régions de Voronoï délimitées par Re=0 et Im=0. Utilisé en PDCCH (MCS=2) et PDSCH.
16 points sur une grille 4×4. Les seuils de décision sont aux valeurs ±2 (partie réelle et imaginaire).
Comment les effectuer étape par étape
Le PBCH se décode en premier. Sa taille totale (en bits transmis) est :
Encoder x = [1, 0, 1, 1] avec la matrice D :
À partir des infos du PDCCHU :
Vérifier si un mot reçu y = [1,0,1,1,0,1,0,0] est correct :
Correspondance valeur MCS → modulation + FEC
| Valeur MCS | Modulation | FEC | Projet ? |
|---|---|---|---|
| 0 | BPSK | Hamming748 | Oui ✓ |
| 1 | BPSK | Polar 1/3 | Non |
| 2 | QPSK | Hamming748 | Oui ✓ |
| 3 | QPSK | Polar 1/3 | Non |
| Taux \ Constellation | BPSK | QPSK | 16-QAM | 64-QAM | 256-QAM |
|---|---|---|---|---|---|
| 1/3 | 0 | 1 | 2 | 3 | 4 |
| 1/2 | 5 | 6 | 7 | 8 | 9 |
| 2/3 | 10 | 11 | 12 | 13 | 14 |
| 3/4 | 15 | 16 | 17 | 18 | 19 |
| Code Hamming \ Constellation | BPSK | QPSK | 16-QAM | 64-QAM | 256-QAM |
|---|---|---|---|---|---|
| 1/3 (Ham124) | 20 | 21 | 22 | 23 | 24 |
| 1/2 (Ham748) | 25 | 26 | 27 | 28 | 29 |
| 2/3 (Ham128) | 30 | 31 | 32 | 33 | 34 |
| 3/4 (Ham2416) | 35 | 36 | 37 | 38 | 39 |
15 questions — clique sur "Voir la réponse" pour chaque question