Introduction à GNU Radio et Software Radio
1.1 Qu’est-ce que GNU Radio?
GNU Radio est un cadre qui permet aux utilisateurs de concevoir, simuler et déployer des systèmes radio du monde réel hautement performants. Il s’agit d’un cadre orienté «organigramme» hautement modulaire qui comprend une bibliothèque complète de blocs de traitement qui peuvent être facilement combinés pour créer des applications complexes de traitement du signal.
GNU Radio a été utilisé pour une vaste gamme d’applications radio du monde réel, y compris le traitement audio, les communications mobiles, les satellites de suivi, les systèmes radar, les réseaux GSM, la radio numérique mondiale et bien plus encore – le tout dans des logiciels informatiques.
Ce n’est pas en soi une solution pour parler à un matériel spécifique. Il ne fournit pas non plus d’applications prêtes à l’emploi pour des normes de radiocommunication spécifiques (par exemple, 802.11, ZigBee, LTE, etc.), mais il peut être (et a été) utilisé pour développer des implémentations de pratiquement n’importe quelle bande limitée norme de communication.
1.2 Pourquoi voudrais-je GNU Radio?
Auparavant, lors du développement de dispositifs de radiocommunication, l’ingénieur devait développer un circuit spécifique pour la détection d’une classe de signal spécifique, concevoir un circuit intégré spécifique qui serait capable de décoder ou d’encoder cette transmission particulière et de les déboguer à l’aide d’un équipement coûteux.
La radio définie par logiciel (SDR) prend le traitement du signal analogique et le déplace, dans la mesure du possible physiquement et économiquement, vers le traitement du signal radio sur un ordinateur en utilisant des algorithmes dans le logiciel.
Vous pouvez, bien sûr, utiliser votre appareil radio connecté à un ordinateur dans un programme que vous écrivez à partir de zéro, concaténer des algorithmes selon vos besoins et déplacer vous-même des données. Mais cela devient rapidement compliqué: pourquoi réinstallez-vous un filtre standard? Pourquoi devez-vous vous soucier de la façon dont les données se déplacent entre les différents blocs de traitement? Ne serait-il pas préférable d’utiliser des implémentations hautement optimisées et évaluées par des pairs plutôt que d’écrire des choses vous-même? Et comment faire en sorte que votre programme évolue bien sur des architectures multicœurs mais fonctionne également bien sur un périphérique intégré consommant peu d’énergie? Voulez-vous vraiment écrire toutes les interfaces graphiques vous-même?
Entrez dans GNU Radio : un cadre dédié à l’écriture d’applications de traitement du signal pour les ordinateurs de base. GNU Radio encapsule la fonctionnalité dans des blocs réutilisables faciles à utiliser, offre une excellente évolutivité, fournit une vaste bibliothèque d’algorithmes standard et est fortement optimisé pour une grande variété de plates-formes courantes. Il est également livré avec un grand nombre d’exemples pour vous aider à démarrer.
1.3 Traitement des signaux numériques
En tant que cadre logiciel, GNU Radio fonctionne sur des signaux numérisés pour générer des fonctionnalités de communication à l’aide d’ordinateurs à usage général.
1.3.1 Une petite théorie du signal
Le traitement du signal dans un logiciel nécessite que le signal soit numérique. Mais qu’est-ce qu’un signal numérique?
Pour mieux comprendre, regardons un scénario de «signal» commun: l’enregistrement de la voix pour la transmission à l’aide d’un téléphone portable.
Un individu parlant physiquement crée un «signal» sonore – le signal, dans ce cas, est composé d’ondes de pression d’air variable générées par les cordes vocales d’un humain. Une quantité physique variant dans le temps, comme la pression de l’air, est ce qui est défini comme un signal.

Lorsque les ondes atteignent le microphone, il convertit la pression variable en un signal électrique, une tension variable:

Maintenant que le signal est électrique, nous pouvons travailler avec. Le signal audio, à ce stade, est analogique – un ordinateur ne peut pas encore le traiter; pour le traitement informatique, un signal doit être numérique, ce qui signifie deux choses:
Il ne peut s’agir que d’une valeur parmi un nombre limité. Il n’existe que pour une durée non infinie.

Ce signal numérique peut ainsi être représenté par une séquence de nombres, appelés échantillons. Un intervalle de temps fixe entre les échantillons conduit à une fréquence d’échantillonnage du signal.
Le processus de prise d’une quantité physique (tension) et de sa conversion en échantillons numériques est effectué par un convertisseur analogique-numérique (ADC). Le dispositif complémentaire, un convertisseur numérique-analogique (DAC), prend les nombres d’un ordinateur numérique et les convertit en un signal analogique.
Maintenant que nous avons une séquence de chiffres, notre ordinateur peut tout faire avec. Il peut, par exemple, appliquer des filtres numériques, le compresser, reconnaître la parole ou transmettre le signal à l’aide d’une liaison numérique.
1.3.2 Application du traitement numérique du signal aux transmissions radio
Les mêmes principes que pour les sons peuvent être appliqués aux ondes radio:
Un signal, ici des ondes électromagnétiques, peut être converti en une tension variable à l’aide d’une antenne.

Ce signal électrique est alors sur une «fréquence porteuse», qui est généralement de plusieurs méga ou même Gigahertz.
Différents types de récepteurs (par exemple, récepteur superhétérodyne, conversion directe, récepteurs à basse fréquence intermédiaire), qui peuvent être acquis commercialement en tant que périphériques radio logiciels dédiés, sont déjà disponibles pour les utilisateurs (par exemple, les récepteurs radio amateurs connectés à des cartes son) ou peuvent être obtenus lors de la re – la mise au point de récepteurs de télévision numérique grand public disponibles à bas prix (le fameux projet RTL-SDR ).
1.4 Une approche modulaire basée sur un organigramme du traitement numérique du signal
Pour traiter des signaux numériques, il est simple de considérer les différentes étapes de traitement (filtrage, correction, analyse, détection…) comme des blocs de traitement, qui peuvent être connectés à l’aide de simples flèches d’indication de flux:

Lors de la construction d’une application de traitement du signal, on construira un graphique complet des blocs. Un tel graphique est appelé organigramme dans GNU Radio.

GNU Radio est un cadre pour développer ces blocs de traitement et créer des organigrammes, qui comprennent des applications de traitement radio.
En tant qu’utilisateur GNU Radio, vous pouvez combiner des blocs existants dans un organigramme de haut niveau qui fait quelque chose d’aussi complexe que la réception de signaux modulés numériquement et GNU Radio déplacera automatiquement les données de signal entre celles-ci et provoquera le traitement des données lorsqu’elle sera prête pour le traitement. .
GNU Radio est livré avec un grand nombre de blocs existants. Juste pour vous donner un petit extrait de ce qui est disponible dans une installation standard, voici quelques-unes des catégories de blocs les plus populaires et quelques-uns de leurs membres:
- Générateurs de signaux
- Constant Source
- Noise Source
- Source de signal (par exemple sinus, carré, dent de scie)
- Modulateurs
- AM Demod
- Modulation de phase continue
- Mod / démod PSK
- Mod / démod GFSK
- Mod / démod GMSK
- Mod / Demod QAM
- Réception WBFM
- Réception NBFM
- Instrumentation (c.à dire Interface Utilisateur Graphique (GUI))
- Afficheur Constellation
- Afficheur de fréquence
- Afficheur d’histogramme
- Afficheur de numéro
- Afficheur Temps (Time Raster)
- Afficheur
- Afficheur cascade
- Opérateurs mathématiques
- Section
- Ajouter
- Conjuguée complexe
- Diviser
- Intégrer
- Log10
- Multiplier
- RMS
- Soustraire
- Modèles de canaux
- Modèle de canal
- Modèle de décoloration
- Modèle de canal dynamique
- Modèle d’évanouissement sélectif en fréquence (fading)
- Filtres
- Filtre passe-bande / rejet
- Filtre passe-bas / passe-haut
- IIR Filter
- Generic Filterbank
- Hilbert
- Filtre FIR décimant
- Filtre cosinus surélevé
- Filtre FFT
- Analyse de Fourier
- FFT
- Log Power FFT
- Goertzel (rééchantillonneurs)
- Rééchantillonneur fractionnaire
- Rééchantillonneur arbitraire polyphasé
- Rééchantillonneur rationnel (synchroniseurs)
- Clock Recovery MM
- Corrélation et synchronisation
- Boucle de Costas
- FLL Band-Edge
- PLL Freq Det
- PN Corrélateur
- Synchronisation d’horloge polyphasée
En utilisant ces blocs, de nombreuses tâches standard, telles que la normalisation des signaux, la synchronisation, les mesures et la visualisation peuvent être effectuées en connectant simplement le bloc approprié à votre graphique de flux de traitement du signal.
En outre, vous pouvez écrire vos propres blocs, qui combinent des blocs existants avec une certaine intelligence pour fournir de nouvelles fonctionnalités avec une certaine logique, ou vous pouvez développer votre propre bloc qui fonctionne sur les données d’entrée et les données de sortie.
Ainsi, GNU Radio est principalement un cadre pour le développement de blocs de traitement du signal et leur interaction. Il est livré avec une vaste bibliothèque standard de blocs, et il existe de nombreux systèmes disponibles sur lesquels un développeur peut s’appuyer. Cependant, GNU Radio n’est pas en soi un logiciel prêt à faire quelque chose de spécifique – c’est le travail de l’utilisateur d’en construire quelque chose d’utile, bien qu’il soit déjà livré avec de nombreux exemples de travail utiles. Considérez-le comme un ensemble de blocs de construction