Traitement de signaux radiofréquences par logiciel (SDR) GNURadio J.-M Friedt, 25 janvier 2016 1 Premiers pas avec GNURadio GNURadio est un ensemble de blocs de traitements de signaux numériques ainsi qu un ordonnanceur de flux de données. Les blocs de traitement sont développés en C++ ou Python. L assemblage des blocs pour définir le flux de données est renseigné en Python. Une interface graphique n est pas obligatoire, rendant GNURadio particulièrement favorable aux environnements embarqués qui ne sont pas munis de périphériques pour l affichage graphique. Un outil d assistance à l assemblage de blocs qui s avère être en pratique un générateur de code Python à partir d un chaînage des blocs de traitements se nomme GNURadio Companion. Nous l utiliserons au cours de cette découverte du traitement numérique de signaux radiofréquences (Software Defined Radio SDR). 2 GNURadio pour le traitement du signal 2.1 La carte son comme générateur basse fréquence La carte son est une interface idéale 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. Générer une sinusoïde à une fréquence audible, et l émettre sur la carte son. 2. Afficher en même temps le spectre du signal émis. 2.2 Traitement du signal : filtres FIGURE 1 Deux implémentations de filtres passe-bande, à gauche avec une bande de transition de 5 Hz, à droite avec une bande de transition de 150 Hz. La différence n est 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 à réponse impulsionnelle finie (FIR) est conçu pour traiter un signal synthétique. Afin de caractériser les propriétés spectrales du filtre, nous l attaquons par un bruit uniforme, et observons le spectre en entrée et en sortie du filtre. Quel est l effet de demander une bande de transition plus étroite pour un filtre? 2.3 Que faire en l absence d entrée ou de sortie pour cadencer le flux Lorsque le signal est émis sur une carte son, le débit de données est imposé par la fréquence d échantillonnage de la carte son. Si un signal est acquis par une carte d acquisition, là encore une fréquence d échantillonnage est imposée. Mais si nous 1
FIGURE 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. voulons ne faire que du traitement de signaux synthétitiques pour en afficher les caractéristiques, aucune fréquence d échantillonnage n est imposée au schéma par une interface matérielle. Nous devons donc informer le bloc de patienter entre deux traitements pour respecter la fréquence d échantillonnage imposée par la variable samp_rate : c est le rôle du bloc throttle. Retirer la sortie audio et afficher sur oscilloscope virtuel la sortie d une source générant une sinusoïde. 3 Réception de signaux radiofréquence : réception de la FM commerciale 3.1 Affichage de spectre Le premier exemple le plus simple consiste à démoduler le signal de la FM commerciale et restituer le son ainsi généré vers la carte son (Fig. 3). Il s agit de l exemple le plus simple car le signal reçu est puissant et continu, mais qui démontre néanmoins les principaux concepts de la SDR. Les objectifs de cette première expérience sont de 1. se familiariser avec la recherche de blocs dans le menu de droite qui liste l ensemble des fonctions de traitement disponible, 2. sélectionner la source de données correspondant au récepteur DVB-T que nous utilisons au cours de ce TP. FIGURE 3 Fenêtre de démarrage de GNURadio Companion. 2
Une source fournit un flux de données I et Q vers les divers blocs de traitement pour finalement alimenter un puits dans notre cas la carte son. Le débit de données issues de la source définit la bande passante d analyse et donc la quantité d information que nous sommes susceptibles de récupérer (cf Shannon). La bande passante est limitée par la fréquence d échantillonage et le débit de transfert de données entre le périphérique de capture et le PC (dans notre cas, USB). La fréquence centrale de travail n a aucune importance elle ne fait que définir la taille d antenne puisque le récepteur radiofréquence l élimine par mélange. Seule la bande passante importe! Une source de données facilement accessible est l entrée audio (carte son) du PC. Sa bande passante est cependant limitée à 48 ou 96 khz selon les modèles de carte son. Historiquement, la sortie de récepteurs radiofréquences ont été connectées aux entrées audio pour traitement numérique des signaux. Dans notre approche, un récepteur de télévision numérique terrestre disponible à un prix modique s avère être un récepteur radiofréquence universel opérant dans la gamme d environ 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 d ondes associées? 2. Trouver la source en tapant sous l icône de la loupe osmo qui doit permettre d atteindre le bloc source Osmocom Source. 3. Trouver le puits en tapant sous l icône de la loupe WX qui doit donner accès à WX GUI FFT Sink. 4. Modifier la fréquence d échantillonage samp_rate pour une valeur comprise entre 1 et 2 MHz. 5. Faire varier la fréquence d échantillonage et observer la conséquence. Plutôt que régler la fréquence de travail au lancement du processus de traitement, il serait agréable de pouvoir modifier dynamiquement ce paramètre (Fig. 4). FIGURE 4 Définition de la fréquence de travail au moyen d un ascenseur. 1. Créer un ascenseur lié à la variable f au moyen de WX Slider 2. Lier la fréquence centrale de réception à la variable f commandant la fréquence centrale de travail du récepteur DVB-T 3. Définir la fréquence centrale de la FFT comme étant égale à f et non à 0 3.2 Démodulation et sortie audio Une fois la bande de fréquence contenant un signal utile identifiée, nous devons démoduler le signal (extraire l information de modulation de la porteuse) et envoyer le résultat sur une sortie exploitable, par exemple la carte son d un PC. La difficulté tient en la gestion du flux de données, qui doit passer d un débit radiofréquence (plusieurs centaines de kéchantillons/s) vers un flux audio-fréquence (quelques dizaines de échantillons/s). GNURadio ne gère pas automatiquement le flux de données, et ne prévient l utilisateur d une incohérence dans le flux de traitement par des messages au premier abord cryptiques (mais parfaitement cohérents une fois que nous en comprenons le sens). Le flux de données issu du récepteur DVB-T est compris entre 1 et 2,4 Méchantillons/s (la borne haute étant déterminée par la bande passante de la liaison USB). La sortie sur carte son est contrainte par les quelques fréquences d échantillonage accessibles que sont 48000, 44100, 22150 ou, pour les cartes son les plus anciennes, 11025 Hz. La gestion du flux de données consiste à décimer de façon cohérente le flux d un débit initial à un débit final. Afin de garantir que le flux d acquisition radiofréquence est multiple du débit audio-fréquence de sortie, il est prudent de définir samp_rate comme multiple de la fréquence de sortie audio. Par exemple pour une sortie à 48 khz, une entrée de 48 32 = 1,536 MHz respecte la bande passante d échantillonage du récepteur. De même pour une sortie à 44,1 khz, une entrée à 44,1 50 = 2,205 MHz respecte les conditions d échantillonage d entrée et de sortie sous réserve que les divers blocs de traitement déciment de 50 = 5 5 2. Connecter un casque à la sortie audio du PC et écouter le résultat. Que se passe-t-il si le facteur de décimation du démodulateur est modifié de 24 à 18 par exemple? De 24 à 30? 3
FIGURE 5 Définition de samp_rate comme multiple de la fréquence audio finale, et activation de la sortie son du PC. 4 Encombrement spectral des modes de modulation 4.1 AM v.s FM La bande passante du canal définit la quantité d information qui peut y circuler. Le mode de modulation induit un encombrement spectral et donc la distribution des raies dans la bande passante allouée. La Fig. 6 illustre l encombrement spectral de deux modes de modulation AM et FM pour encoder le même signal une sinusoïde de fréquence et amplitude fixe. FIGURE 6 Encombrement spectral des modulations AM (gauche) et FM (droite). Dans les deux cas le signal modulant est une sinusoïde à 2400 Hz. Une modulation d amplitude est produite par un atténuateur commandé en tension, aussi nommé transistor (par exemple FET). Une modulation de fréquence est produite par le tirage en fréquence d un oscillateur, par exemple en plaçant une varicap commandée en tension dans l oscillateur (VCO Voltage Controlled Oscillator). Démoduler les signaux AM et FM afin d en afficher l évolution temporelle lorsque la modulation est de nature sinusoïdale 4.2 BPSK La modulation en phase s obtient en attaquant un mélangeur (dans notre cas un Minicircuits ZX05-43MH+, Fig. 7) d une part par un signal RF représentant la porteuse (port LO) et d autre part par un signal crénau de valeur moyenne null représentant le signal (port IF) pour générer le signal attaquant l antenne (port RF). D après le schéma du mélangeur, la polarité du signal 4
modulant détermine le côté 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. FIGURE 7 Gauche : extrait de la datasheet du ZX05-43MH+ expliquant son cablage interne, et schéma GnuRadio-Companion pour démontrer l élimination de la modulation par mise au carré du signal modulé en phase, ainsi que la démodulation par boucle de Costas. Droite : montage expérimental. La subtilité de la démodulation PSK tient en l extraction de la porteuse afin d annuler l écart de fréquence f entre l oscillateur et la porteuse incidente. En effet, si cette différence n est pas annulée, la phase du signal est affectée d une part d un signal évoluant dans le temps 2π f t et de la phase à détecter ϕ [0,π]. Une façon d estimer la porteuse est la boucle de Costas (Costas loop) qui fournit le signal démodulé et l estimation d écart de fréquence. FIGURE 8 De gauche à droite : porteuse à 1249,7 MHz (en dehors de la bande d asservissement), puis 1249,99 et 1250,3 MHz (dans la bande d asservissement). Démontrer la démodulation du signal modulé en phase (Fig. 8). Quelle est l écart de la fréquence de porteuse à LO acceptable pour obtenir un asservissement acceptable? 5
5 Modulation FSK La modulation FSK est très classique : les deux états possibles d un bit sont codés par deux fréquence de modulation de la porteuse. À la réception, un démodulateur FM renvoie deux états possibles de la tension de sortie, correspondant aux deux états des bits du flux d information (Fig. 9). Que se passe-t-il en cas de décallage des oscillateurs locaux de l émetteur et du récepteur? comment une modulation sur une porteuse remédie à ce problème? FIGURE 9 Réception du signal émis par un radiomodem Semtech XE1203F émettant des trames numériques sur 434 MHz. 6 Connexion à un outil de démodulation externe Nous allons considérer une approche simple de démodulation de modes numériques : l exploitation d un outil externe disponible sous le nom de multimon 1. Nous nous focaliserons sur le décodage des signaux émis par les pagers ou vénérables Tam-tam et autres Tatoo qui sont encore exploités 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 fréquences des six canaux alloués en France sont 466,{025 ;05 ;075 ;175 ;20265 ;23125} MHz. FIGURE 10 Gauche : spectre autour de 466 MHz où les signaux POCSAG sont transmis. Droite : traitement des signaux démodulés. 1. Une version plus récente de ce programme, nommée multimon-ng, est disponible à https://github.com/eliasoenal/multimon-ng. Il semble fonctionner à l identique à l exception d un mode très verbeux qu il faut éliminer : multimon-ng -t raw -s DUMPCSV 2. http://www.emessage.fr/index.aspx 6
multimon 3 supporte un grand nombre de modes de modulation datant de l époque où la réception du signal radiofréquence s effectuait avec un récepteur dédié dont la sortie audio était physiquement connectée à l entrée audio de la carte son. Aujourd hui, cette liaison se fera de façon virtuelle au travers d un pipe nommé (instruction mkfifo d unix). Un flux au travers d un pipe nommé ne commence à circuler que lorsque les deux extrémités du tuyau sont connectées. Le lancement de l application gnuradio ne se traduira par son traitement des signaux que après exécution de multimon. La seule subtilité tient en la nécessité, pour respecter les attentes de multimon, de fournir un flux de données au débit de 22050 Hz avec un encodage sur 16 bits. 1. Créer un pipe nommé par mkfifo montuyau 2. Créer un puits de données dans GNURadio-companion respectant le format de sortie annoncé 3. Connecter multimon à ce tuyau par multimon -t raw montuyau 4. Observer le résultat (Fig. 11) On notera l utilisation du filtre passe-haut entre la sortie du démodulateur de fréquence et le convertisseur de flottant en entiers. En effet tout décalage de fréquence entre les oscillateurs de l émetteur et du récepteur en FM se traduisent après démodulation par une tension continue. Le filtre passe-haut sert non seulement à éliminer cette tension continue mais aussi à décimer le flux de données pour atteindre le débit requis par multimon. FIGURE 11 Traitement des signaux issus de la démodulation de POCSAG par multimon. 7 Analyse multicanaux POCSAG est caractérisé par plusieurs canaux radiofréquences. Ici nous ne décodons que un seul canal en nous plaçant sur sa fréquence de porteuse. Il serait intéressant, puisque le flux de données I/Q contient les informations portées dans tous les canaux, de décoder le contenu de tous les canaux de communication en parallèle. D un point de vue de traitement du signal, il s aggit de placer un filtre passe-bande autour de chaque canal et d en traiter les informations, sans être polué par le contenu spectral des canaux adjacents. En pratique, nous transposons chaque canal près de la fréquence nulle, et plaçons un filtre passe-bas pour éliminer les autres contributions spectrales. Cette méthode de travail est si classique qu elle est implémentée comme un unique bloc dans GNURadio Companion : Frequency Xlating FIR Filter. Ce bloc contient l oscillateur local par lequel la fréquence est transposée par mélange, et le filtre passe-bas. Un filtre passe-bas est défini par ses caractéristiques spectrales : les coefficients du FIR s obtiennent par firdes.low_pass(1,samp_rate,15000,5000,firdes.win_hamming,6.76). Nous plaçons cette commande dans une variable dont le nom renseigne les caractéristiques du filtre. Démoduler deux canaux POCSAG simultanément. Cette méthode de travail s étend à un nombre quelconque de canaux, dans la limite de la puissance de calcul disponible. En pratique on se limitera au nombre de cœurs de calcul disponibles sur le processeur. 3. https://github.com/eliasoenal/multimon-ng ou https://packages.debian.org/unstable/hamradio/multimon 7
FIGURE 12 Décodage de 4 canaux POCSAG simulatanément. Par ailleurs, cette conclusion s étend au cas où une diversité de modes de modulation sont présents dans la bande passante d analyse. Par exemple, dans le cas de la FM commerciale, les deux canaux mono (gauche+droite) et stéréo (gauche-droite) sont présents autour de la porteuse à 19 khz de la porteuse radiofréquence, et par ailleurs l identifiant numérique de la station émettrice (RDS) se trouve à 57 khz de la porteuse radiofréquence. Ces deux types d information se démodulent indépendamment puisque toutes les données nécessaires ont été obtenues dans la bande passante d acquisition de la station FM si le flux issu du détecteur WBFM est cadencé à plus de 115 kéchantillons/s. Analyser la Fig. 13 et constater les deux canaux de démodulation, audiofréquence d une part, et numérique d autre part. 8
FIGURE 13 Haut : schéma de la chaîne de traitement pour générer le signal audio et la séquence numérique de bits transmis pour identifier l émetteur radiofréquence (inspiré du travail de K. McQuiggin). Bas : signal numérique lorsque le décodage 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é. 9