Vous êtes sur la page 1sur 11

Traitement de signaux radiofrquences par logiciel (SDR) GNURadio

J.-M Friedt, 10 janvier 2017

1 Premiers pas avec GNURadio


GNURadio est un ensemble de blocs de traitements de signaux numriques ainsi quun ordonnanceur de flux de donnes.
Les blocs de traitement sont dvelopps en C++ ou Python. Lassemblage des blocs pour dfinir le flux de donnes est renseign
en Python. Une interface graphique nest pas obligatoire, rendant GNURadio particulirement favorable aux environnements
embarqus qui ne sont pas munis de priphriques pour laffichage graphique.
Un outil dassistance lassemblage de blocs qui savre tre en pratique un gnrateur de code Python partir dun chanage des blocs de traitements se nomme GNURadio Companion. Nous lutiliserons au cours de cette dcouverte du traitement
numrique de signaux radiofrquences (Software Defined Radio SDR).
Afin de nous familiariser avec GNURadio-companion, un premier exemple consiste gnrer une squence de traitement
avec une source de bruit, un filtre passe bande de frquence centrale et de bande passante variable, et un affichage du spectre :

Trouver, sur le site GNURadio dcrivant lAPI des blocs de traitement, les mthodes associes lobjet filtre passe bande.
Ajouter dans le script Python gnr par GNURadio-companion la longueur du filtre.
Sortir le signal ainsi filtr sur la carte son : couter leffet de la largeur et de la frquence centrale du filtre.
Prenons un second exemple simple qui illustrera la souplesse de GNURadio-companion pour apprhender et prototyper
des concepts de traitement du signal en explicitant les coefficients du filtre. Un filtre FIR propose une sortie y n comme somme
pondre des entres x k tel que
N
X
y n = b k x nk
0

avec N le nombre de coefficients. Ce nombre influe significativement sur la puissance de calcul ncessaire produire chaque y n
et il est utile den intuiter le sens. Partant dun schma tel que propos ci-dessous

dans lequel les coefficients b k , nomms taps, sont dynamiquement dfinis par la fonction Python
filter.firdes.low_pass_2(1, samp_rate, fc, fc+df ,attenuation)
pour dfinir un filtre de frquence de coupure fc sur une bande fc+df avec une attnuation hors bande de attenuation. Nous
allons voir que df est un point cl pour dfinir N . Pour intuiter le sens de N et sa relation avec fc, une transforme de Fourier
sur N points se traduit par un spectre de pas de frquence samp_r at e/N avec samp_r at e la frquence dchantillonnage. Si
fc est plus petit que samp_r at e/N , le spectre nest pas suffisamment rsolu pour dfinir les flancs du filtre : il faut augmenter
N.
GNURadio-companion tant un gnrateur de code Python, nous pouvons modifier le code gnr en ajoutant dans la
fonction de callback de taps un affichage de la longueur du vecteur :

1 def set_taps ( s e l f , taps ) :


s e l f . taps = taps
3
s e l f . f i r _ f i l t e r _ x x x _ 0 . set_taps ( ( s e l f . taps ) )
p r i n t len ( taps ) # ajout au code o r i g i n a l

qui nous permet de constater que la longueur du filtre crot lorsque fc dcrot. Cette fonction est appele chaque fois quun
paramtre du filtre est modifi, et permet donc de suivre lvolution du nombre de coefficients avec les divers paramtres.
Exercice : modifier la fonction de callback pour afficher, en plus du nombre de coefficients, la frquence centrale et la frquence de coupure du filtre. Constater comment N volue en fonction de ces paramtres.

2 GNURadio pour le traitement du signal appliqu


2.1 La carte son comme gnrateur basse frquence
La carte son est une interface idale pour se familiariser avec des concepts de traitement du signal. GNURadio sait mettre
un signal vers la carte son au moyen du bloc Audio Sink.
1. Gnrer une sinusode une frquence audible, et lmettre sur la carte son.
2. Afficher en mme temps le spectre du signal mis.

2.2 Traitement du signal : filtres

F IGURE 1 Deux implmentations de filtres passe-bande, gauche avec une bande de transition de 5 Hz, droite avec une
bande de transition de 150 Hz. La diffrence nest pas significative en terme de performances, mais les implications en terme de
nombre de coefficients traiter est significative (Fig. 2).
Nous pouvons tester des algorithmes simples mais fondamentaux de traitement du signal tels que les filtres. Un filtre
rponse impulsionnelle finie (FIR) est conu pour traiter un signal synthtique. Afin de caractriser les proprits spectrales du
filtre, nous lattaquons par un bruit uniforme, et observons le spectre en entre et en sortie du filtre.
Quel est leffet de demander une bande de transition plus troite pour un filtre ?

2.3 Que faire en labsence dentre ou de sortie pour cadencer le flux


Lorsque le signal est mis sur une carte son, le dbit de donnes est impos par la frquence dchantillonnage de la carte
son. Si un signal est acquis par une carte dacquisition, l encore une frquence dchantillonnage est impose. Mais si nous
voulons ne faire que du traitement de signaux synthtitiques pour en afficher les caractristiques, aucune frquence dchantillonnage nest impose au schma par une interface matrielle. Nous devons donc informer le bloc de patienter entre deux
traitements pour respecter la frquence dchantillonnage impose par la variable samp_rate : cest le rle du bloc throttle.
Retirer la sortie audio et afficher sur oscilloscope virtuel la sortie dune source gnrant une sinusode.

F IGURE 2 Outil de conception de filtres fourni par GNURadio Companion : noter la croissance du nombre de coefficients dont
le nombre est inversement proportionnel la bande passante de transition requise.

3 Coefficients I-Q

4 Rception de signaux radiofrquence : rception de la FM commerciale


4.1 Affichage de spectre
Le premier exemple le plus simple consiste dmoduler le signal de la FM commerciale et restituer le son ainsi gnr vers
la carte son (Fig. 3). Il sagit de lexemple le plus simple car le signal reu est puissant et continu, mais qui dmontre nanmoins
les principaux concepts de la SDR. Les objectifs de cette premire exprience sont de
1. se familiariser avec la recherche de blocs dans le menu de droite qui liste lensemble des fonctions de traitement disponible,
2. slectionner la source de donnes correspondant au rcepteur DVB-T que nous utilisons au cours de ce TP.
Une source fournit un flux de donnes I et Q vers les divers blocs de traitement pour finalement alimenter un puits dans
notre cas la carte son. Le dbit de donnes issues de la source dfinit la bande passante danalyse et donc la quantit dinformation que nous sommes susceptibles de rcuprer (cf Shannon). La bande passante est limite par la frquence dchantillonage
et le dbit de transfert de donnes entre le priphrique de capture et le PC (dans notre cas, USB).
BLa frquence centrale de travail na aucune importance elle ne fait que dfinir la taille dantenne puisque le rcepteur
radiofrquence llimine par mlange. Seule la bande passante importe !
Une source de donnes facilement accessible est lentre audio (carte son) du PC. Sa bande passante est cependant limite
48 ou 96 kHz selon les modles de carte son. Historiquement, la sortie de rcepteurs radiofrquences ont t connectes aux
entres audio pour traitement numrique des signaux. Dans notre approche, un rcepteur de tlvision numrique terrestre disponible un prix modique savre tre un rcepteur radiofrquence universel oprant dans la gamme denviron 50 2000 MHz.
Il couvre en particulier la bande FM commerciale qui va de ...
1. quelle est la bande de FM commerciale ? quelles sont les longueurs dondes associes ?
2. Trouver la source en tapant sous licne de la loupe osmo qui doit permettre datteindre le bloc source Osmocom Source.
3

F IGURE 3 Fentre de dmarrage de GNURadio Companion.


3. Trouver le puits en tapant sous licne de la loupe WX qui doit donner accs WX GUI FFT Sink.
4. Modifier la frquence dchantillonage samp_rate pour une valeur comprise entre 1 et 2 MHz.
5. Faire varier la frquence dchantillonage et observer la consquence.
Plutt que rgler la frquence de travail au lancement du processus de traitement, il serait agrable de pouvoir modifier
dynamiquement ce paramtre (Fig. 4).

F IGURE 4 Dfinition de la frquence de travail au moyen dun ascenseur.


1. Crer un ascenseur li la variable f au moyen de WX Slider
2. Lier la frquence centrale de rception la variable f commandant la frquence centrale de travail du rcepteur DVB-T
3. Dfinir la frquence centrale de la FFT comme tant gale f et non 0

4.2 Dmodulation et sortie audio


Une fois la bande de frquence contenant un signal utile identifie, nous devons dmoduler le signal (extraire linformation
de modulation de la porteuse) et envoyer le rsultat sur une sortie exploitable, par exemple la carte son dun PC.
La difficult tient en la gestion du flux de donnes, qui doit passer dun dbit radiofrquence (plusieurs centaines de kchantillons/s) vers un flux audio-frquence (quelques dizaines de chantillons/s). GNURadio ne gre pas automatiquement le
flux de donnes, et ne prvient lutilisateur dune incohrence dans le flux de traitement par des messages au premier abord
cryptiques (mais parfaitement cohrents une fois que nous en comprenons le sens).
Le flux de donnes issu du rcepteur DVB-T est compris entre 1 et 2,4 Mchantillons/s (la borne haute tant dtermine par
la bande passante de la liaison USB). La sortie sur carte son est contrainte par les quelques frquences dchantillonage accessibles que sont 48000, 44100, 22150 ou, pour les cartes son les plus anciennes, 11025 Hz. La gestion du flux de donnes consiste
dcimer de faon cohrente le flux dun dbit initial un dbit final. Afin de garantir que le flux dacquisition radiofrquence
4

F IGURE 5 Dfinition de samp_rate comme multiple de la frquence audio finale, et activation de la sortie son du PC.
est multiple du dbit audio-frquence de sortie, il est prudent de dfinir samp_rate comme multiple de la frquence de sortie
audio. Par exemple pour une sortie 48 kHz, une entre de 48 32 = 1, 536 MHz respecte la bande passante dchantillonage
du rcepteur. De mme pour une sortie 44,1 kHz, une entre 44, 1 50 = 2, 205 MHz respecte les conditions dchantillonage
dentre et de sortie sous rserve que les divers blocs de traitement dciment de 50 = 5 5 2.
Connecter un casque la sortie audio du PC et couter le rsultat. Que se passe-t-il si le facteur de dcimation du dmodulateur est modifi de 24 18 par exemple ? De 24 30 ?

4.3 Stro et RDS


De nombreuses stations FM commerciales transmettent un signal en stro. Cependant, tous les rcepteurs ne proposent
pas la capacit sparer les composantes du signal mis vers loreille droite ou gauche. Comment proposer un protocole compatible la fois avec les rcepteurs mono et stro ? La solution consiste transmettre pour tous les rcepteurs la somme des
signaux gauche + droite, et uniquement pour les rcepteurs stro le signal gauche - droite afin de permettre la reconstruction
des deux signaux individuels si ncessaire. De plus, certaines stations FM transmettent une information numrique identifiant la nature de la chane et de lmission diffuse : le protocole RDS (Radio Data System) est situ 57 kHz de la porteuse,
au-del de toutes les modulations des signaux audio-frquences. La frquence de transmission de linformation numrique,
1187,5 bits/seconde, est suffisamment faible pour noccuper quune bande rduite autour de la sous-porteuse de 57 kHz forme
par lharmonique trois du pilote 19 kHz qui indique au rcepteur que lmission est en stro (et que donc la partie suprieure
du spectre porte linformation gauche-droite).
Dmontrer lutilisation du mode waterfall pour afficher lensemble des informations fournies aprs dmodulation dun
signal de la bande FM commerciale.

5 Encombrement spectral des modes de modulation


5.1 AM v.s FM
La bande passante du canal dfinit la quantit dinformation qui peut y circuler. Le mode de modulation induit un encombrement spectral et donc la distribution des raies dans la bande passante alloue. La Fig. 6 illustre lencombrement spectral de
deux modes de modulation AM et FM pour encoder le mme signal une sinusode de frquence et amplitude fixe.

F IGURE 6 Encombrement spectral des modulations AM (gauche) et FM (droite). Dans les deux cas le signal modulant est une
sinusode 2400 Hz.
Une modulation damplitude est produite par un attnuateur command en tension, aussi nomm transistor (par exemple
FET). Une modulation de frquence est produite par le tirage en frquence dun oscillateur, par exemple en plaant une varicap

commande en tension dans loscillateur (VCO Voltage Controlled Oscillator). Dmoduler les signaux AM et FM afin den
afficher lvolution temporelle lorsque la modulation est de nature sinusodale

5.2 BPSK
La modulation en phase sobtient en attaquant un mlangeur (dans notre cas un Minicircuits ZX05-43MH+, Fig. 7) dune part
par un signal RF reprsentant la porteuse (port LO) et dautre part par un signal crnau de valeur moyenne null reprsentant
le signal (port IF) pour gnrer le signal attaquant lantenne (port RF). Daprs le schma du mlangeur, la polarit du signal
modulant dtermine le ct du pont de diodes par lequel passe le signal LO pour attaquer le point milieu du transformateur, et
donc la phase (entre 0 et ) qui affectera le signal de sortie.

F IGURE 7 Gauche : extrait de la datasheet du ZX05-43MH+ expliquant son cablage interne, et schma GnuRadio-Companion
pour dmontrer llimination de la modulation par mise au carr du signal modul en phase, ainsi que la dmodulation par
boucle de Costas. Droite : montage exprimental.
La subtilit de la dmodulation PSK tient en lextraction de la porteuse afin dannuler lcart de frquence f entre loscillateur et la porteuse incidente. En effet, si cette diffrence nest pas annule, la phase du signal est affecte dune part dun signal
voluant dans le temps 2 f t et de la phase dtecter [0, ]. Une faon destimer la porteuse est la boucle de Costas
(Costas loop) qui fournit le signal dmodul et lestimation dcart de frquence.
Dmontrer la dmodulation du signal modul en phase (Fig. 8). Quelle est lcart de la frquence de porteuse LO acceptable pour obtenir un asservissement acceptable ?

6 Modulation FSK
La modulation FSK est trs classique : les deux tats possibles dun bit sont cods par deux frquence de modulation de la
porteuse. la rception, un dmodulateur FM renvoie deux tats possibles de la tension de sortie, correspondant aux deux tats
des bits du flux dinformation (Fig. 9).
Que se passe-t-il en cas de dcallage des oscillateurs locaux de lmetteur et du rcepteur ? comment une modulation sur une
porteuse remdie ce problme ?
Sachant que le signal commandant le VCO est issu dun UART compatible RS232 de microcontrleur, quel est la baudrate de
cette communication issu de lanalyse de la Fig. 9 (droite) ?
7

F IGURE 8 De gauche droite : porteuse 1249,7 MHz (en dehors de la bande dasservissement), puis 1249,99 et 1250,3 MHz
(dans la bande dasservissement).

F IGURE 9 Rception du signal mis par un radiomodem Semtech XE1203F mettant des trames numriques sur 434 MHz.

7 Connexion un outil de dmodulation externe


Nous allons considrer une approche simple de dmodulation de modes numriques : lexploitation dun outil externe disponible sous le nom de multimon 1 .
Nous nous focaliserons sur le dcodage des signaux mis par les pagers ou vnrables Tam-tam et autres Tatoo qui sont
encore exploits par e*message 2 . Le protocole de communication est connu sous la nomenclature de POCSAG, et est en partie
survol http://fr.wikipedia.org/wiki/POCSAG. On y apprend notamment que les frquences des six canaux allous en
France sont 466,{025 ;05 ;075 ;175 ;20265 ;23125} MHz.
multimon 3 supporte un grand nombre de modes de modulation datant de lpoque o la rception du signal radiofrquence
seffectuait avec un rcepteur ddi dont la sortie audio tait physiquement connecte lentre audio de la carte son. Aujourdhui, cette liaison se fera de faon virtuelle au travers dun pipe nomm (instruction mkfifo dunix).
BUn flux au travers dun pipe nomm ne commence circuler que lorsque les deux extrmits du tuyau sont connectes. Le
lancement de lapplication gnuradio ne se traduira par son traitement des signaux que aprs excution de multimon.
La seule subtilit tient en la ncessit, pour respecter les attentes de multimon, de fournir un flux de donnes au dbit de
22050 Hz avec un encodage sur 16 bits.
1. Crer un pipe nomm par mkfifo montuyau
2. Crer un puits de donnes dans GNURadio-companion respectant le format de sortie annonc
1. Une version plus rcente de ce programme, nomme multimon-ng, est disponible https://github.com/EliasOenal/multimon-ng. Il semble fonctionner lidentique lexception dun mode trs verbeux quil faut liminer : multimon-ng -t raw -s DUMPCSV
2. http://www.emessage.fr/index.aspx
3. https://github.com/EliasOenal/multimon-ng ou https://packages.debian.org/unstable/hamradio/multimon

F IGURE 10 Gauche : spectre autour de 466 MHz o les signaux POCSAG sont transmis. Droite : traitement des signaux dmoduls.
3. Connecter multimon ce tuyau par multimon -t raw montuyau
4. Observer le rsultat (Fig. 11)
On notera lutilisation du filtre passe-haut entre la sortie du dmodulateur de frquence et le convertisseur de flottant en
entiers. En effet tout dcalage de frquence entre les oscillateurs de lmetteur et du rcepteur en FM se traduisent aprs dmodulation par une tension continue. Le filtre passe-haut sert non seulement liminer cette tension continue mais aussi
dcimer le flux de donnes pour atteindre le dbit requis par multimon.

F IGURE 11 Traitement des signaux issus de la dmodulation de POCSAG par multimon.

8 Analyse multicanaux
POCSAG est caractris par plusieurs canaux radiofrquences. Ici nous ne dcodons que un seul canal en nous plaant sur
sa frquence de porteuse. Il serait intressant, puisque le flux de donnes I/Q contient les informations portes dans tous les
canaux, de dcoder le contenu de tous les canaux de communication en parallle.
Dun point de vue de traitement du signal, il saggit de placer un filtre passe-bande autour de chaque canal et den traiter les
informations, sans tre polu par le contenu spectral des canaux adjacents. En pratique, nous transposons chaque canal prs de
la frquence nulle, et plaons un filtre passe-bas pour liminer les autres contributions spectrales.
Cette mthode de travail est si classique quelle est implmente comme un unique bloc dans GNURadio Companion :
Frequency Xlating FIR Filter. Ce bloc contient loscillateur local par lequel la frquence est transpose par mlange, et
9

le filtre passe-bas. Un filtre passe-bas est dfini par ses caractristiques spectrales : les coefficients du FIR sobtiennent par
firdes.low_pass(1,samp_rate,15000,5000,firdes.WIN_HAMMING,6.76). Nous plaons cette commande dans une variable dont le nom renseigne les caractristiques du filtre.
Dmoduler deux canaux POCSAG simultanment.
Cette mthode de travail stend un nombre quelconque de canaux, dans la limite de la puissance de calcul disponible. En
pratique on se limitera au nombre de curs de calcul disponibles sur le processeur.

F IGURE 12 Dcodage de 4 canaux POCSAG simulatanment.


Par ailleurs, cette conclusion stend au cas o une diversit de modes de modulation sont prsents dans la bande passante
danalyse. Par exemple, dans le cas de la FM commerciale, les deux canaux mono (gauche+droite) et stro (gauche-droite) sont
prsents autour de la porteuse 19 kHz de la porteuse radiofrquence, et par ailleurs lidentifiant numrique de la station mettrice (RDS) se trouve 57 kHz de la porteuse radiofrquence. Ces deux types dinformation se dmodulent indpendamment
puisque toutes les donnes ncessaires ont t obtenues dans la bande passante dacquisition de la station FM si le flux issu du
dtecteur WBFM est cadenc plus de 115 kchantillons/s.
Analyser la Fig. 13 et constater les deux canaux de dmodulation, audiofrquence dune part, et numrique dautre part.

10

F IGURE 13 Haut : schma de la chane de traitement pour gnrer le signal audio et la squence numrique de bits transmis
pour identifier lmetteur radiofrquence (inspir du travail de K. McQuiggin). Bas : signal numrique lorsque le dcodage est
possible, avec un diagramme de constellation permettant de clairement distinguer les deux tats possibles des bits (gauche), et
droite lorsque le niveau de bruit est trop lev.

11

Vous aimerez peut-être aussi