Vous êtes sur la page 1sur 3

TP2 de Télécommunications

numérique :
Chaine de transmission CDMA
EHTP 2017/2018

CDMA est une technique de multiplexage qui permet à plusieurs utilisateurs de partager le même
media physique en utilisant toute la bande fréquentielle au même temps pour tous les utilisateurs. Son
principe consiste à identifier chaque utilisateur par le biais de sa signature, c'est-à-dire un code propre
à chaque individu. Ainsi on pourra séparer le message de chaque individu à la réception.

CDMA s’appuie sur la technique d’étalement des bits sur le spectre, en multipliant la séquence binaire
de l’utilisateur par son propre code d’étalement, et de même à la réception multiplier le message reçu
par le code de chaque utilisateur pour retrouver son message de départ. Cette opération est assurée à
cause de la condition d’orthogonalité des différents codes.

Plusieurs techniques permettent de générer des codes orthogonaux entre eux afin de les utiliser dans la
génération du signal CDMA de chaque utilisateur. On retrouve parmi elles, la technique de Walsh-
Hadamard. Une matrice Hadamard est une matrice de dimension 𝑁 × 𝑁 qui ne contient que des 1 et -
1, telle que chaque ligne diffère de celle qui la celui de exactement 𝑁⁄2 valeurs. Ces codes sont
1 1
générés de manière récursive : à partir de la matrice de départ H1 = [ ], on calcule la matrice
1 −1
𝐻 𝐻1
suivante telle que 𝐻2 = [ 1 ]. Ainsi on pourra généraliser cette expression pour obtenir :
𝐻1 −𝐻1

1 1 H Hn
H1 = [ ] & Hn+1 = [ n ]
1 −1 Hn − Hn

La matrice Hn+1 permet alors de générer 2(n+1) codes. Essayez de programmer une fonction qui permet
de calculer la matrice contenant n codes orthogonaux. On pourra comparer les résultats avec ceux
obtenus en utilisant la fonction prédéfinie sous Matlab ‘Hadamard’.

function H = HadamardCode(n)

Apres avoir programmer la fonction qui permet de générer les codes orthogonaux pour différents
utilisateurs, essayez d’implémenter une chaine de communication à base de CDMA pour n utilisateur.
Au début générer n codes orthogonaux pour différents utilisateurs, après pour chaque utilisateur
générer des messages aléatoires modulés en BPSK (pour des données binaires, 0 et 1 correspondent à -
1 et 1 respectivement). A la réception essayez de retrouver les données reçues qui correspondent à
chaque utilisateur, et les comparer aux messages envoyés au niveau de l’émetteur.

Kron (message1 ,
code1)

Message envoyé

Données binaires Données BPSK


{0,1} {-1,1}

Normalement on retrouve à la réception le même message envoyé dans le cas idéal. Cependant, dans
le cas réel on ne peut pas nier l’impact du bruit sur la qualité de transmission. La quantité de bruit peut
être évaluée par l’intermédiaire du Rapport Signal sur Bruit RSB, qui détermine le rapport entre la
puissance du signal et celle du bruit. Dans notre simulation on va varier cette valeur de RSB allant de -
10 à 10. Pour ajouter du bruit à notre signal S, on doit générer un vecteur qui contiendra les valeurs de
bruit aléatoires, avant de les multiplier par une constance en fonction du RSB :
𝑁 = 1⁄ × 𝑟𝑎𝑛𝑑𝑛(𝑇𝑎𝑖𝑙𝑙𝑒𝑚𝑒𝑠𝑠𝑎𝑔 × 𝑇𝑎𝑖𝑙𝑙𝑒_𝑐𝑜𝑑𝑒)
√2

10−𝑅𝑆𝐵/20 × 𝑁

Signal Signal bruité


S(t) ∑ Sb(t)

Afin d’évaluer la qualité de transmission, ou utilise la variable TEB (Taux d’Erreurs Binaires), qui
permet de calculer le rapport des bits erronés sur ceux qui sont bien reçus, c'est-à-dire à partir d’une
petite comparaison entre la séquence émise et la séquence reçue, on doit calculer le nombre des bits
erronés (c'est-à-dire ceux qui sont différents de ceux émis), sur le nombre total des bits envoyés.

𝐵𝑖𝑡𝑠 𝐸𝑟𝑟𝑜𝑛é𝑠
𝑇𝐸𝐵𝑠𝑖𝑚𝑢𝑙é =
𝐵𝑖𝑡𝑠 𝑒𝑛𝑣𝑜𝑦é𝑠

Pour chaque valeur de RSB allant de -10 :10, essayez de comparer la valeur du TEB simulé avec celle
théorique, qui est donnée par la formule

𝑆𝑁𝑅
𝑇𝐸𝐵𝑡ℎ𝑒𝑜𝑟𝑖𝑞𝑢𝑒 = 1⁄2 𝑒𝑟𝑓𝑐(√10 10 )