Configuration et utilisation d'ADALM-PLUTO SDR
Configuration et utilisation d'ADALM-PLUTO SDR
Classe : 2ARIT-FI
TP N°6 de Télécommunications:
ADALM-PLUTO
RTL-SDR
SDR
0
0 t
t
1. Objectifs du TP ............................................................................................................................. 1
2. Présentation du module radio ADALM-PLUTO SDR ............................................................. 1
2.1. Architecture et interaction avec MATLAB............................................................................. 1
2.2. Installation du module radio ADALM-PLUTO ..................................................................... 5
2.3. Configuration et communication avec MATLAB/SIMULINK............................................. 5
3. Fondamentaux théoriques de la modulation AM .................................................................... 15
3.1. Modulation AM DSB-SC ........................................................................................................ 15
3.2. Modulation AM DSB-TC ........................................................................................................ 15
4. Préparation et vérification du matériel de TP ......................................................................... 16
5. Emission et mesures de signaux AM DSB-TC et DSB-SC ...................................................... 18
5.1. Emission de signaux AM DSB-TC et DSB-SC ...................................................................... 18
6. Démodulation AM non cohérente par détection d’enveloppe ................................................ 25
1. Objectifs du TP
Observer la transmission d’information par modulation d’amplitude à travers un canal sans fil.
Utiliser la notation enveloppe complexe (ou signal en bande de base complexe) pour décrire
les signaux modulés en amplitude (AM).
Construire un émetteur AM à temps réel et émettre deux signaux sans fil AM DSB-TC et AM
DSB-SC multiplexés en fréquence (FDM) qui respectent les spécifications des canaux
fréquences radio de transmission.
Construire un récepteur AM à temps réel avec démodulation AM non cohérente par détection
d’enveloppe.
1
© D. Bonkoungou 2019-2020 dbonkoungou@[Link]
TP6-2A-RIT: Présentation de ADALM-PLUTO, Emission et réception avec modulation AM
2
© D. Bonkoungou 2019-2020 dbonkoungou@[Link]
TP6-2A-RIT: Présentation de ADALM-PLUTO, Emission et réception avec modulation AM
3
© D. Bonkoungou 2019-2020 dbonkoungou@[Link]
TP6-2A-RIT: Présentation de ADALM-PLUTO, Emission et réception avec modulation AM
La figure 3 suivante présente les couches de software et de hardware traversées par les échantillons du
signal numérique en bande de base entre MATLAB et le module radio ADALM-PLUTO (PlutoSDR).
Figure 3: Couches de software et de hardware traversées par les paquets de données entre MATLAB et le
module radio ADALM-PULTO (PlutoSDR)
Pour décrire le chemin suivi par les échantillons du signal numérique en bande de base à travers les
différentes couches de software et de hardware entre MATLAB et le module radio PlutoSDR, on va
supposer que le client IIO c.à.d. MATLAB a sollicité un buffer de 32768 échantillons avec un débit
d’échantillon de 1 Méga échantillons par seconde, cela signifie qu’on a fixé les propriétés
SamplesPerFrame et BasebandSampleRate de l’objet MATLAB de réception
[Link] créé respectivement à 32768 et 1MHz :
Suite à la requête de réception du signal avec 32768 échantillons par trame à 1 MHz formulée
par le client IIO MATLAB, le démon iiod qui tourne sur le processeur ARM avec Linux du
module radio PlutoSDR va capturer 32768 échantillons sur un buffer de manière continue à
travers la bibliothèque libiio. Cette collecte d’échantillons va prendre 32, 768 ms (= 32768 x
1MHz) et occuper 131 072 bytes (= 4 bytes par échantillon complexe IQ x 32768
echantillons). Cette collecte d’échantillons par iiod pour former un paquet permet d’assurer la
continuité du signal mais introduit un temps de latence fixe tf = fréquence d’échantillonnage
x nombre d’échantillons par trame). iiod a été conçu pour assurer qu’il n’y ait pas de copies
d’échantillons après la collecte.
La trame d’échantillons collectée par iiod est transférée au kernel Linux qui tourne sur le
processeur ARM du module radio PlutoSDR qui va la segmenter en paquets USB de 512
bytes (selon les spécifications de USB 2.0). La trame segmentée sera ensuite réassemblée dans
un buffer de 131 072 bytes au niveau du PC Host après avoir traversé la pile de couches USB.
La pile de couches USB introduit un temps de latence inconnu qui est déterminé par le
système d’exploitation du PC Host et la taille de mémoire RAM libre disponible.
4
© D. Bonkoungou 2019-2020 dbonkoungou@[Link]
TP6-2A-RIT: Présentation de ADALM-PLUTO, Emission et réception avec modulation AM
Une fois que le buffer entier est assemblé, il est transféré à libiio qui le transfert à son tour
sans traitement au client iio client c.à.d. à MATLAB qui peut effectuer un autre traitement.
Dans ce cas MATLAB peut par exemple convertir les échantillons codés en entier signé de 16
bits (int16) en échantillons codés en virgule flottante (single ou double) avec des valeurs
limitées dans l’intervalle [-1 ; +1[.
Pour la conception du système de traitement et de transmission du signal il faut donc tenir compte de
ces retards ci-dessus cités. Si par exemple on veut émettre et recevoir une trame d’échantillons avec le
même module radio PlutoSDR, on peut observer une longue pause sans échantillons avant que la
trame apparaisse dans le vecteur MATLAB de réception à cause de ces retards. C’est pourquoi pour
beaucoup de systèmes on cherche à effectuer le traitement du signal le plus proche possible du
composant radio (convertisseur en bande de base et en RF). Si on veut le faire avec l’architecture des
modules radio SDR, c’est sur le circuit programmable FPGA ou le processor ARM et non sur le PC
Host. Cependant ce module radio PlutoSDR possède un petit FPGA et un seul core de processeur
ARM qui limite ses capacités de processeur cible de traitement du signal.
MATLAB/SIMULINK est utilisé comme client LIIO (Linux Industrial Input/Output) sur le PC Host
pour communiquer à travers une connexion USB avec le linux embarqué sur le processeur ARM du
système SoC Zynq-7000 contenu dans le module radio PlutoSDR. Cette communication consiste
d’une part à transférer des données de configuration (fréquence centrale, fréquence d’échantillonnage
en bande de base, gain, …) et d’autre part à recevoir (ou transmettre) des données de signal
(échantillons complexes IQ) du (ou vers le) module radio PLutoSDR.
L’utilisation de MATLAB comme client LIIO est effectuée à travers les deux objets système
MATLAB suivants qui sont disponibles après l’installation du logiciel de support MATLAB "
Communications Toolbox Support Package for Analog Devices ADALM-Pluto Radio " :
La figure suivante montre la communication entre MATLAB, les objets systèmes MATLAB
([Link] et [Link]) et le module radio PlutoSDR.
5
© D. Bonkoungou 2019-2020 dbonkoungou@[Link]
TP6-2A-RIT: Présentation de ADALM-PLUTO, Emission et réception avec modulation AM
Antenne
d’émission
MATLAB/SIMULINK
Programme MATLAB
ou modèle Simulink
Objet Système MATLAB Emetteur RF Tx
[Link]
Générateur de signal Ck = Ik + jQk
ou
numérique en bande
bloc SIMULINK
de base
ADALM-Pluto Radio
Transmitter Ck = Ik + jQk
Module radio
USB ADALM-PLUTO SDR Antenne de
Programme MATLAB
réception
ou modèle Simulink
Objet Système MATLAB
[Link]
Récepteur de signal Ck = Ik + jQk
ou
numérique en bande
bloc SIMULINK
de base
ADALM-Pluto Radio
Receiver Récepteur RF Rx
Pour recevoir un signal numérique en bande de base en utilisant MATLAB, il faut d’abord créer un
objet système MATLAB [Link] et fixer les valeurs des paramètres de l’émetteur RF
du module radio PlutoSDR à travers les propriétés de l’objet en utilisant la fonction MATLAB
sdrrx . On utilise ensuite l’objet créé en l’appelant comme une fonction.
rx = sdrrx(‘Pluto’,‘CenterFrequency’,3.5e9,
‘BasebandSampleRate’,2.0e6)
Les propriétés principales suivantes de l’objet MATLAB de réception du module radio PlutoSDR
peuvent être configurées.
La valeur de la propriété DeviceName est fixée ici à ‘Pluto’ car la fonction sdrrx peut aussi
être utilisée pour créer un objet MATLAB de réception pour d’autres modules radio SDR supportés
par MATLAB comme par exemple le module radio RTL-SDR.
6
© D. Bonkoungou 2019-2020 dbonkoungou@[Link]
TP6-2A-RIT: Présentation de ADALM-PLUTO, Emission et réception avec modulation AM
RadioID : fixe le numéro d’indentification (adresse) du module radio connecté au port USB du
PC Host. Sa valeur par défaut est ‘USB:0’. Ce numéro est attribué en fonction de l’ordre de
connexion au PC Host en commençant par 0. Le module radio peut aussi être identifié
optionnellement par son adresse IP. Dans ce cas la valeur par défaut de RadioID est
‘ip:[Link]’. Si aucun autre appareil n’est connecté au PC Host avec cette adresse IP,
on peut laisser l’adresse IP par défaut. Sinon l’adresse IP du module radio peut être changée
manuellement de la manière suivante :
rx = sdrrx(‘Pluto’,‘RadioID’,‘ip :[Link]’)
Il faut noter que lorsque la valeur de la fréquence d’échantillonnage en bande de base est configurée,
le module radio effectue en interne un calcul pour trouver la valeur configurée à partir de la valeur de
l’horloge de référence d’échantillonnage ou master clock rate (fcan = 25 …640 MHz en réception et fcna
= 320 MHz en émission) et celle des facteurs de décimation et d’interpolation. La valeur calculée et
celle configurée peuvent ne pas exactement correspondre.
Il est cependant important de noter que le port USB 2.0 qui est l’interface de transmission des
échantillons entre le module radio PlutoSDR et le PC Host peut supporter un débit d’échantillon (ou
fréquence d’échantillonnage) de 7,5 à 12 MS/s (MHz) en fonction du contrôleur USB, du système
d’exploitation et d’autres facteurs du PC Host.
La figure suivante illustre la relation entre la fréquence d’échantillonnage en bande de base (fEBB) et la
largeur de bande du signal RF (BRF) ainsi que la fréquence maximale du signal en bande de base fBBmax
(largeur de bande signal en bande de base).
On remarque que le spectre du signal numérique en bande de base n’est pas symétrique par rapport à
l’axe des ordonnées c.à.d. n’est pas paire car le signal numérique en bande de base est complexe.
Lorsque le bloc Simulink de réception ADALM-Pluto Radio Receiver est utilisé à la place de l’objet
MATLAB de réception [Link] et si l’on veut effectuer une simulation à temps réel il
faut que la période d’échantillonnage du bloc Simulink (sample time) soit égale à l’inverse de la
fréquence d’échantillonnage en bande de base c.à.d. Ts = 1/fEBB. Cette période fixe le débit avec lequel
le bloc Simunlink livre les échantillons à sa sortie pendant l’exécution de la simulation.
Il faut noter que la période d’échantillonnage d’un bloc Simulink peut être basée sur le port (port-
based) ou sur le bloc (block-based). Pour la période d’échantillonnage basée sur le bloc (block-based),
tous les ports d’entrée et de sortie du bloc Simulink fonctionnent avec le même débit d’échantillon (ou
fréquence d’échantillonnage). Pour la période d’échantillonnage basée sur le bloc (block-based), les
8
© D. Bonkoungou 2019-2020 dbonkoungou@[Link]
TP6-2A-RIT: Présentation de ADALM-PLUTO, Emission et réception avec modulation AM
ports d’entrée et de sortie du bloc Simulink peuvent fonctionner à des débits d’échantillon (fréquences
d’échantillonnage) différents.
Pour un bloc Simulink avec un temps d’échantillonnage discret (discrete sample time), Simulink
exécute la sortie du bloc pour livrer les échantillons aux instants suivants :
𝑡 = 𝑛 ⋅ 𝑇 + |𝑇 |
Ts est la période d’échantillonnage (sample Time) qui doit être supérieure à zéro et inferieure au temps
de simulation Tsim. Le nombre de périodes N qui doit être entier est
𝑇
𝑁= 𝑎𝑣𝑒𝑐 0 ≤ 𝑛 ≤ 𝑁
𝑇
Pendant l’exécution de la simulation, le bloc Simulink livre à sa sortie des échantillons seulement à
ces instants discrets à intervalle fixe tn qui sont appelés sample time hits. Lorsqu’on veut retarder ces
instants discrets, on peut définir un offset T0. Le bloc Simulink retardateur d’une période
d’échantillonnage (Unit Delay) est un exemple de bloc avec un temps d’échantillonnage discret.
Pour utiliser un bloc Simulink avec un temps d’échantillonnage continu (simulation de signaux
analogiques) il faut fixer la période d’échantillonnage (sample time) à 0 ou [0, 0].
Remarque : Pour d’autres modules radio comme le B200 de USRP, c’est la valeur de l’horloge de
référence du CAN (Master clock rate = 5 MHz à 56 MHz) et celle du facteur de décimation
(Decimation factor = 1 à 512) en réception qui sont configurées et le module radio calcule en interne
la valeur de la fréquence d’échantillonnage en bande de base selon la formule
Pour par exemple le module radio USRP N200 avec port Ethernet, la valeur du master clock est fixée
à 100 MHz et c’est la configuration du facteur de decimation qui permet de fixer la valeur de la
fréquence d’échantillonnage en bande de base.
En émission, le module radio USRP B200 effectue une interpolation pour augmenter la fréquence
d’échantillonnage en bande de base pour l’adapter à la fréquence d’échantillonnage utilisée par le
CNA c.à.d. à la valeur du Master clock rate. Dans ce cas le module radio B200 fixe la valeur du
master clock rate à partir de la valeur de la fréquence d’échantillonnage en bande de base fEBB et celle
du facteur d’interpolation (Interpolation factor = 1 à 512)
- ‘Manual’: pour ce choix, une autre propriété nommée Gain devient automatiquement
configurable pour fixer manuellement la valeur gain de réception qui est associée à une
table de valeurs de gain qui se trouve dans le composant RF AD9363 du module radio
PlutoSDR. En effet lorsque la valeur du gain est changée, les valeurs de gain des
différents étages de l’amplificateur de réception sont mises à jour en se basant sur cette
table de gain interne. Des tables de gain spécifiques peuvent être utilisée si nécessaire
mais une telle configuration est considérée comme une option avancée et ne sera pas
considérée ici.
9
© D. Bonkoungou 2019-2020 dbonkoungou@[Link]
TP6-2A-RIT: Présentation de ADALM-PLUTO, Emission et réception avec modulation AM
La valeur du gain de réception peut être fixée de -4 dB (-4) à 71 dB (71). La valeur par
défaut est 10.
Il est cependant important de noter que la valeur minimale et maximale acceptables du
gain dépend de la valeur de la fréquence centrale. Une combinaison incompatible de
valeur de gain et de fréquence centrale signale une erreur.
- ‘AGC Slow Attack’: Ce choix par défaut est utilisé pour les signaux dont le niveau
de puissance varie lentement avec le temps. Dans ce cas, la valeur du gain est adaptée
automatiquement en fonction du niveau de signal reçu ou RSSI (Received Signal Strength)
à travers l’AGC (Automatic Gain Control) du module radio.
- ‘AGC Fast Attack’: Ce choix est utilisé pour les signaux dont le niveau de
puissance varie rapidement avec le temps. Dans ce cas, la valeur du gain est adaptée
automatiquement en fonction du niveau de signal reçu ou RSSI (Received Signal Strength)
à travers l’AGC (Automatic Gain Control) du module radio.
ChannelMapping : la valeur de cette propriété est toujours fixée à 1. Pour d’autres modules
Radio SDR, cette propriété est utilisée pour une réception multi-canal c.à.d. MIMO (Multiple-
Input Multiple-Output).
OutputDataType : définit le format (type de données) des échantillons (ou symboles) du signal
numérique en bande de base à recevoir. Techniquement, le module radio ne peut livrer que des
valeurs complexes entières de 16 bit signées c.à.d. en format int16 mais codées sur 12 bits
(valeurs de -2048 à + 2047) ; cela signifie que le module radio effectue en réception une extension
du bit de signe des valeurs de 12 bits pour obtenir les 16 bits. En émission, le module radio rejette
les 4 bits les moins signifiants des 16 bits pour utiliser les 12 bits du CNA.
L’utilisation par MATLAB des 16 bits est due au fait que la plupart des hardwares et softwares
utilise 8 bit (1 byte) ou un multiple d’un byte pour représenter les valeurs numériques.
La valeur de la propriété peut être fixée à int16 (entier de 16 bit signé) qui est le format par
défaut, double (virgule flottante double précision 64 bit) ou single (virgule flottante simple
précision 32 bit).
MATLAB obtient les valeurs en virgule flottante (single ou double) en normalisant les valeurs
entières c.à.d. en divisant les valeurs entières par la valeur entière maximale en valeur absolue. On
obtient ainsi des valeurs en single ou double qui appartiennent à l’intervalle [-1 ; +1[. Il faut
cependant noter qu’à cause du codage sur 12 bits du CAN du module radio, les valeurs des
échantillons reçus en format single ou double appartiennent à l’intervalle
[-2048/32768 ; -2048/32768 [ = [-0,0625 ; +0,0625 [. 32768 = (2^16)/2.
Le format single ou double est très souvent utilisé car il est plus précis et permet de travailler avec
les fonctions trigonométriques qui demandent des arguments en format single ou double.
Le format en valeur entière (int8 ou int16) ou format en virgule fixe est généralement utilisé pour
une implémentation sur des processeurs à virgule fixe.
10
© D. Bonkoungou 2019-2020 dbonkoungou@[Link]
TP6-2A-RIT: Présentation de ADALM-PLUTO, Emission et réception avec modulation AM
L’objet système MATLAB d’émission [Link] possède presque les mêmes propriétés
que celles de l’objet système MATLAB de reception [Link] à l’exception des
propriétés GainSource, SamplesPerFrame et OutputDataType qui n’ont pas de sens dans
un contexte d’émission.
rxdata: vecteur colonne complexe contenant une trame d’échantillons complexes à chaque
appel de l’objet.
Cet argument de sortie peut être utilisé pour vérifier le traitement en temps réel de l’objet
MATLAB de réception.
overflow = 0 indique qu’il n’ya pas d’échantillons perdus.
overflow = 1 indique une perte d’échantillons. Et cela signifie que la réception n’est pas à
temps réel c.à.d. que le flux d’échantillons contient des discontinuités. On peut dans ce cas
réduire la fréquence d’échantillonnage (débit d’échantillons) en bande de base pour obtenir
une performance à temps réel.
Les fonctions (ou méthodes) suivantes peuvent être utilisées avec l’objet de réception rxPluto créé
comme argument d’entrée :
info : livre des informations (valeurs des propriétés ou paramètres radio) sur le module
radio.
Exemple :
11
© D. Bonkoungou 2019-2020 dbonkoungou@[Link]
TP6-2A-RIT: Présentation de ADALM-PLUTO, Emission et réception avec modulation AM
La valeur du gain d’émission peut être fixée de -89,75 dB (-89.75) à 0 dB (0) avec un pas de 0,25
dB à travers la propriété d’objet Gain. La valeur par défaut est -10.
underflow = txPluto(data)
L’objet est appelé avec l’argument d’entrée data qui est un vecteur colonne complexe contenant des
d’échantillons complexes du signal en bande de base à transmettre au chip RF AD936x du module
radio PlutoSDR pour l’émission RF.
L’objet d’émission appelé peut livrer si désiré l’argument de sortie underflow qui signal une perte
d’échantillons. On parle ici de débordement inferieur (underflow). underflow = 1 indique une
perte d’échantillons. On peut dans ce cas augmenter la fréquence d’échantillonnage (débit
d’échantillons) en bande de base pour obtenir une performance à temps réel. underflow = 0
indique qu’il n’ya pas de perte d’échantillons.
Les fonctions (ou méthodes) suivantes peuvent être utilisées avec l’objet d’émission txPluto créé
comme argument d’entrée :
info : livre des informations (valeurs des propriétés ou paramètres radio) sur le module
radio.
Exemple :
tx = sdrtx('Pluto'); % créer un objet de réception
info(tx) % obtenir les infos sur le module radio
12
© D. Bonkoungou 2019-2020 dbonkoungou@[Link]
TP6-2A-RIT: Présentation de ADALM-PLUTO, Emission et réception avec modulation AM
Exemple : Programme MATLAB pour l’émission continue d’une tonalité sinusoïdale complexe de
100 kHz avec le module PlutoSDR.
Télécharger le signal sinusoïdal généré sur le module radio pour l’émettre de manière répétée en sans
fil :
tx = sdrtx('Pluto'); % créer un objet d’émission radio
[Link] = 2.415e9; % Fixer la fréquence (centrale)
d’émission à 2,415 GHz
[Link] = fs;
[Link] = -5;
transmitRepeat(tx,txWaveform);
release(tx);
Il faut noter que le nombre d’échantillons à transmettre par la fonction transmitRepeat doit être
pair.
Remarque :
Lorsque la propriété ComplexOutput de l’objet [Link] est fixée à false (valeur par
défaut), l’objet crée qui est appelé comme une fonction livre la version échantillonnée du signal
sinusoïdal analogique réel suivant :
𝑥(𝑡) = 𝐴 ⋅ 𝑠𝑖𝑛(2𝜋𝑓 𝑡 + 𝜑 )
Lorsque la propriété ComplexOutput de l’objet [Link] est fixée à true , l’objet crée
qui est appelé comme une fonction livre la version échantillonnée du signal sinusoïdal analogique
complexe suivant :
( )
𝑥(𝑡) = 𝐴 ⋅ 𝑒 = 𝐴 ⋅ 𝑐𝑜𝑠(2𝜋𝑓 𝑡 + 𝜑 ) + 𝑗 ⋅ 𝐴 ⋅ 𝑠𝑖𝑛(2𝜋𝑓 𝑡 + 𝜑 )
Lorsqu’on utilise SIMULINK, on utilise le bloc de réception ADALM-Pluto Radio Receiver (voir
figure suivante) qui équivaut à l’utilisation l’objet système de réception [Link] dans
MATLAB.
13
© D. Bonkoungou 2019-2020 dbonkoungou@[Link]
TP6-2A-RIT: Présentation de ADALM-PLUTO, Emission et réception avec modulation AM
En émission dans SIMULINK, on utilise le bloc d’émission ADALM-Pluto Radio Transmitter (voir
figure suivante) qui équivaut à l’utilisation l’objet système d’émission [Link] dans
MATLAB.
Les paramètres à configurer des blocs SIMULINK correspondent aux propriétés des objets système
MATLAB respectifs (voir figure suivante).
14
© D. Bonkoungou 2019-2020 dbonkoungou@[Link]
TP6-2A-RIT: Présentation de ADALM-PLUTO, Emission et réception avec modulation AM
Le signal d'information considéré ici sinusoïdal c.à.d. un signal à une tonalité a une amplitude
Am = 1 V et une fréquence fm= 1,2 kHz et est donné par:
La porteuse sinusoïdale d'amplitude Ap= 1V et de fréquence fp= 10 kHz supérieure à fm est donnée par:
15
© D. Bonkoungou 2019-2020 dbonkoungou@[Link]
TP6-2A-RIT: Présentation de ADALM-PLUTO, Emission et réception avec modulation AM
Le signal d'information considéré ici sinusoïdal c.à.d. un signal à une tonalité a une amplitude Am = 1V
et une fréquence fm = 1,8 kHz et est donné par:
𝐴
𝑚=
𝐴
a) Calculer m
b) Exprimer le signal AM à porteuse transmise sam-dsb-sc(t) en fonction de m.
Les points suivants permettent de vérifier l'installation des pilotes des modules radio ADALM-PLUTO
et RTL-SDR ainsi que l’installation des packages de support des modules radio qui permettent à
MATLAB/Simulink de communiquer avec les modules radio.
16
© D. Bonkoungou 2019-2020 dbonkoungou@[Link]
TP6-2A-RIT: Présentation de ADALM-PLUTO, Emission et réception avec modulation AM
3) Connecter les antennes appropriées (adaptées à la bande de fréquence à utiliser) aux modules radio
ADALM-PLUTO et RTL-SDR. Connecter ensuite séparément les modules radio ADALM-
PLUTO et RTL-SDR à deux ordinateurs. Seul un groupe de TP va utiliser le module radio
ADALM-PLUTO en mode émission. Les autres groupes de TP vont utiliser le module radio RTL-
SDR qui est un récepteur.
4) Vérifier (pour le groupe d’émission) la communication entre MATLAB/Simulink et le module
radio ADALM-PLUTO en exécutant la commande findPlutoRadio. Si MATLAB/Simulink
communique correctement avec le module radio ADALM-PLUTO, alors les informations
similaires suivantes qui indiquent le numéro d’identification radio (RadioID) et le numéro de
série (SerialNum) du module s’affichent.
ans =
struct with fields:
RadioID: 'usb:0'
SerialNum: '100000235523730700230031090216eaeb'
17
© D. Bonkoungou 2019-2020 dbonkoungou@[Link]
TP6-2A-RIT: Présentation de ADALM-PLUTO, Emission et réception avec modulation AM
Pour ce TP, un seul groupe d’étudiants va générer deux signaux AM DSB-TC et AM-DSB-SC en
bande de base multiplexés en fréquence ou FDM (Frequency Division Multiplex) et ensuite émettre le
signal multiplexé FDM avec l’émetteur du module radio ADALM-PLUTO dans la bande de fréquence
de 920 MHz à 930 MHz. Les autres groupes d’étudiants doivent recevoir le signal multiplexé FDM
avec le module récepteur RTL-SDR, mesurer et analyser les deux signaux AM DSB-TC et AM-DSB-
SC dans le domaine fréquentiel et temporel.
Les signaux AM en bande de base sont générés avec des fréquences porteuses intermédiaires
complexes, ce qui rend le signal en bande de base complexe car d’une manière générale, l’entrée de
l’émetteur du module ADALM-PLUTO doit recevoir un signal en bande de base complexe afin
d’éviter la corruption éventuelle du signal émis à cause de la correction du déséquilibre IQ (lié aux
imperfections du hardware) effectuée (par défaut) par le module ADALM-PLUTO (voir configuration
des propriétés avancées à travers ShowAdvancedProperties).
18
© D. Bonkoungou 2019-2020 dbonkoungou@[Link]
TP6-2A-RIT: Présentation de ADALM-PLUTO, Emission et réception avec modulation AM
Figure 10: Schéma du modèle Simulink d’émission avec le module radio ADALM-PLUTO
19
© D. Bonkoungou 2019-2020 dbonkoungou@[Link]
TP6-2A-RIT: Présentation de ADALM-PLUTO, Emission et réception avec modulation AM
Pour l’élément Fréquence centrale d’émission, choisir le bloc Simulink Constant dans
Simulink/Commonly Used Blocks et configurer le en entrant la valeur de la fréquence centrale
de 925 MHz (925e6) pour Constant value.
Pour l’élément Signal du Workspace, choisir le bloc Simulink Signal From Workspace dans
DSP System Toolbox/Sources et configurer le bloc de la manière suivante :
- Entrer dans Signal le nom de la variable qui contient le signal en bande de base à
émettre c.à.d. la variable z généré dans l’espace de travail (workspace) après l’exécution
du script MATLAB am_DSBTC_DSBSC_BandeDeBaseComplex.m.
- Entrer dans Sample time la valeur de la période d’échantillonnage en bande de base
c.à.d. l’inverse de la fréquence d’échantillonnage en bande de base fixée dans le script.
- Entrer dans Samples per frame la valeur du nombre d’échantillons par trame qui
est fixée ici à 1000.
- Choisir Cyclic repetition pour Form output after final data value
by afin de permettre une répétition cyclique de l’émission du signal en bande de base
généré.
Pour l’élément Spectre signal en bande de base, choisir le bloc Simulink Spectrum Analyzer
dans DSP System Toolbox/Sinks et configurer le bloc si nécessaire pour mieux analyser le
spectre du signal en bande de base à émettre.
Fixer le temps final de simulation (Simulation stop time) à inf pour émettre de manière
continue.
Exécuter la simulation en cliquant sur run pour commencer à émettre. Faire une pause avant de
continuer l’exécution pour vérifier les valeurs des fréquences du signal en bande de base émis sur
l’analyseur de spectre. Faire une capture d’écran pendant la pause, annoter et commenter le spectre.
Continuer l’exécution de la simulation et vérifier avec les groupes de réception s’ils reçoivent le signal
émis. Sinon augmenter par exemple le gain d’émission (mais ne pas de pas dépasser 0 dB). Les
groupes de réception peuvent aussi augmenter le gain de récepteur pour améliorer la réception.
20
© D. Bonkoungou 2019-2020 dbonkoungou@[Link]
TP6-2A-RIT: Présentation de ADALM-PLUTO, Emission et réception avec modulation AM
Figure 11: Schéma du modèle Simulink de réception avec le module radio RTL-SDR
Pour l’élément Interface de réception du module radio RTL-SDR, choisir le bloc Simulink
RTL-SDR Receiver dans la bibliothèque (library) Communications Toolbox Support
Package for RTL-SDR Radio et configurer le bloc de la manière suivante :
- Choisir Input Port pour la source de la fréquence centrale (Source of center
frequency).
- Choisir Input Port pour la source du gain d’émission (Source of gain).
- Fixer la valeur de la fréquence d’échantillonnage en bande de base (Baseband sample
rate) à celle fixée par le groupe d’émission.
- Cocher (activer) l’indicateur de perte d’échantillons (Lost samples output port)
et de latence (Latency output port).
Le port d’indicateur de perte d’échantillons livre le nombre (entier positif) d’échantillons
perdus pendant le transfert des échantillons reçu par le module RTL-SDR vers MATLAB
à travers le port USB. Ce port permet de savoir si le traitement des échantillons reçus dans
MATLAB est effectué à temps réels (nombre d’échantillons perdus = 0) ou pas (nombre
d’échantillons perdus > 0).
Le port d’indicateur de latence livre le retard avec lequel les échantillons sont reçus en
nombre de trames. Lorsque la valeur de ce retard est ≤ 1, alors les échantillons sont reçus
sans latence (retard).
21
© D. Bonkoungou 2019-2020 dbonkoungou@[Link]
TP6-2A-RIT: Présentation de ADALM-PLUTO, Emission et réception avec modulation AM
- Choisir single pour Output data type pour recevoir les échantillons émis en
format virgule flottante normalisé dans l’intervalle [-1 ; +1].
- Fixer le nombre d’échantillons par trame (Samples per frame) à 1000.
Pour l’élément Fréquence centrale de réception, choisir le bloc Simulink Constant dans
Simulink/Commonly Used Blocks et configurer le en entrant la valeur de la fréquence centrale
de celle fixée par le groupe d’émission dans Constant value.
Pour l’élément Gain ajustable du récepteur, choisir le bloc Simulink Slider Gain dans
Simulink/Math Operations. Ce bloc permet de modifier le gain de réception pendant
l’exécution de la simulation. Configurer le bloc de la manière suivante :
- Fixer la valeur minimale du gain (Low) à 0 dB(0) et la valeur maximale du gain (High) à
50 dB (50).
- Fixer une valeur de départ du gain à 35 dB (35). Cette valeur peut être augmentée pendant
l’exécution à au maximum 50 dB (50) si la réception du signal émis n’est pas bonne
Pour le bloc connecté à l’élément Gain ajustable du récepteur, choisir le bloc Simulink
Constant dans Simulink/Commonly Used Blocks et configurer le en entrant la valeur 1 dans
Constant value.
Pour les éléments Echantillons perdus et Latence connectés respectivement aux ports lost et
late de l’interface de réception, choisir pour chacun un oscilloscope (bloc Time Scope) dans
DSP System Toolbox/Sinks.
Pour l’élément Filtre passe bande connecté au port Data de l’interface de réception, choisir
le bloc Simulink Digital Filter Design dans DSP System Toolbox/Filtering/Filter
implementations.
Le filtre passe-bande sert ici à isoler soit le signal AM DSB-TC ou le signal AM DSB-SC
pour une meilleure analyse dans le domaine temporelle.
22
© D. Bonkoungou 2019-2020 dbonkoungou@[Link]
TP6-2A-RIT: Présentation de ADALM-PLUTO, Emission et réception avec modulation AM
Figure 12: Spécifications du filtre passe-bande pour isoler le signal AM DSB-TC ou DSB-SC
La bande Bti = Fpass1 – Fstop1 est appelée bande de transition inferieure et détermine la raideur du flanc
inferieur du filtre passe-bande. La bande Bts = Fstop2 – Fpass2 est appelée bande de transition
supérieure et détermine la raideur du flanc supérieur du filtre passe-bande. Ces deux bandes de
transition déterminent donc la sélectivité du filtre passe-bande. Plus les bandes de transition sont
petites, plus le filtre est sélectif.
La bande BP = Fpass2 – Fpass1 est appelée bande passante et détermine la bande de fréquence du
signal à isoler.
Pour les éléments Spectre signaux AM multiplexés et Spectre signal AM, choisir le bloc
Simulink Spectrum Analyzer dans DSP System Toolbox/Sinks et configurer le bloc si
nécessaire pour mieux analyser le spectre du signal en bande de base à émettre. Etant donné
que les signaux reçus proviennent d’un canal réel, on peut par exemple fixer la valeur du
paramètre Averages (dans View/Spectrum Settings) à 10 afin de réduire le bruit en
permettant à la fenêtre de l’analyseur de spectre de faire une moyenne sur plusieurs
représentations spectrales.
Pour l’élément Oscilloscope signal AM, choisir le bloc Simulink Time Scope dans DSP
System Toolbox/Sinks et configurer le bloc si nécessaire pour mieux analyser la
représentation temporelle du signal AM DSB-TC.
Fixer le temps final de simulation (Simulation stop time) à inf pour recevoir de manière
continue.
S’assurer que le groupe d’émission est entrain d’émettre. Exécuter la simulation en cliquant sur run
pour commencer à recevoir. Faire une pause avant de continuer l’exécution pour vérifier les valeurs
des fréquences du signal en bande de base émis.
23
© D. Bonkoungou 2019-2020 dbonkoungou@[Link]
TP6-2A-RIT: Présentation de ADALM-PLUTO, Emission et réception avec modulation AM
Porteuse du signal AM DSB-TC et DSB-SC. Mesurer à l’aide des curseurs les valeurs des
fréquences porteuses (centrales) et vérifier les résultats avec le groupe d’émission.
24
© D. Bonkoungou 2019-2020 dbonkoungou@[Link]
TP6-2A-RIT: Présentation de ADALM-PLUTO, Emission et réception avec modulation AM
Créer un nouveau modèle Simulink. Enregistrer le nouveau modèle Simulink sous le nom
DemodAM_DetectionEnv_RTLSDR.slx. dans le dossier TP_emissionReceptionAM créé.
Le fichier DemodAM_DetectionEnv_RTLSDR.slx va contenir le modèle Simulink de réception
et démodulation avec le module radio RTL-SDR à construire.
Construire le modèle Simulink de réception et de démodulation avec le module radio RTL-SDR en
modifiant le modèle Simulink recepteurAnalyseAM_RTLSDR.slx et en utilisant le modèle
Simulink créée dans le TP intitulé " Conception et test d'un détecteur d'enveloppe pour une
démodulation non cohérente de signaux AM " .
La modification consiste à compléter le modèle recepteurAnalyseAM_RTLSDR.slx après le
bloc du filtre passe-bande d’isolation du signal AM DSB-TC.
S’assurer que le groupe d’émission est entrain d’émettre .Configurer et exécuter la simulation pour
recevoir et démoduler le signal AM DSB-TC émis par le groupe d’émission.
Le signal démodulé correspond t-il au signal d’information ou (signal modulant) utilisé pour la
modulation AM DSB-TC ?
.
25
© D. Bonkoungou 2019-2020 dbonkoungou@[Link]