Accès multiple par Code (C.D.M.A.)****  en anglais

Notre applet Java simule ici les transmissions multiples sur une même liaison. Le récepteur extrait par calcul de corrélation avec un code, le message d'un des émetteurs à partir du signal transmis : somme de toutes les émissions.  Cette technique de l'accès multiple est employée en téléphonie sans fil : IS-95,  CDMA2000 et UMTS.

Créez les émetteurs ('transmitters') avec leurs propres codes?

Après après avoir ajusté le nombre de chips ("lamelles") pour chaque code, on doit créer un code ou demander au programme d'en produire un (différentes méthodes). Les codes doivent ressembler à du bruit: équilibre des '1' et de '0', séquences de 1 consécutifs en progression distribution géométrique i.e. la moitié des séquences sont de longueur 1, le quart sont de longueurs 2 etc. En outre la fonction d'autocorrélation doit être pratiquement nulle.
En outre les codes doivent être deux à deux orhogonaux, i.e. intercorrélation nulle.
Le logiciel peut généere les codes suivants:
m-sequences  : (code de longueur 2^N -1),  séquence pseudo- aléatoire produite avec une registre à décalage bouclé. On peut générer plusieurs codes par simple permutation circulaire : bouton < code shift >. Les codes sont quasi-orthogonaux: la fonction de corrélation a un maximum = 2^N-1 pour le décalage 0, et -1 (~ 0) pour d'autres  valeurs de décalage.  Pour produire d'une famille d' émetteurs avec chacun leur code, les étapes sont: <menu m-séquence> puis pour chaque émetteur : nouvel émetteur <new transmitter>, décalage de code <code shift> puis <new transmitter> etc.
Gold codes: Un code d'or est établi par un 'XOR' sur  deux m-séquences 'appariées '. Une des deux m-séquences peut être décalée (ajustez le 'lag'), et différents codes d'or peuvent être obtenus.
Hadamard-Walsh: le menu < Hadamard-Walsh > produit une matrice de Hadamard dont chaque ligne (de longueur 2^N), sauf la premiere, peut être un code. Toutes les lignes sont entièrement orthogonales, et donc valides pour être associées ainsi aux émetteurs. Une fois que les codes sont créés et sélectionnés, le menu <famille d'émetteurs> créera tous les émetteurs.
La corrélation <menu: cross correlation> vérifie  l'orthogonalité des codes.

Créez le signal transmis?

Une fois les émetteurz créés, le programme calcule le signal transmis (bouton<byte > pour un octet de message produit par tous les émetteurs ensemble) en ajoutant les signaux produit par chaque émetteur.
Au niveau de chaque émetteur le bit '1' est remplacé par le code, tandis que le bit '0' est remplacé par le complément du code (signal  bleu et message rouge dans les fenêtres d'émetteur). Le message de chaque émetteur est un texte editable. Ce texte peut être un ensemble aléatoire des caractères: bouton < scramble> pour tous les émetteurs en même temps si l'on veut  une meilleure répartition statistique.  En théorie, le  message est  'XOR'é  avec une longue séquence aléatoire connue pour être reconstitué en sortie.
Le signal transmis  apparaît en bleu dans la fenêtre principale.Il doit ressembler à du bruit blanc gaussien. Ceci peut être observé (d'autant plus que le nombre d'émetteurs est important) grâce au menu <statistiques> qui fournit l'histogramme (une "courbe en cloche"), et un spectre étalé (théoriquement la largeur de bande devrait être la largeur de bande de chaque message multiplié par le nombre de 'chips' des codes). On peut observer la largeur de bande du signal en essayant de faux codes comme '111111111 '.

Extrayez le message d'un émetteur?

Tandis que le signal est transmis, la corrélation avec le code apparaissant dans la fenêtre principale est calculée pour chaque durée d'un bit de message émetteur. Quand la corrélation est positive (rectangle en bleu), le bit 1 est reconnu, quand la corrélation est négative (rectangle en jaune)  le bit 0 est détecté, si la corrélation est  faible, le code ou son complément n'est pas reconnu, le bit correspondant n'a pu alors être transmis sans faute..


Voir aussi cours CDMA

Retour à la page principale du groupe photonique de Montpellier.
oooo