# Radio logicielle

Une radio logicielle, en anglais : software radio ou software-defined radio (SDR), est un récepteur et éventuellement émetteur radio réalisés principalement par logiciel et dans une moindre mesure par matériel.
Dans le sens réception, la partie matérielle consiste soit en la numérisation directe, par un convertisseur analogique-numérique (CAN), des signaux hautes fréquences de la bande à recevoir, soit en leur conversion dans une bande de Fréquence Intermédiaire (FI) avant la numérisation.
Les traitements qui suivent peuvent ensuite être réalisés de façon logicielle : filtrage, décimation, démodulation, décodage, etc. Ces traitements sont réalisés à l'aide d'un microprocesseur dédié au traitement du signal (DSP, Digital Signal Processor), d'un composant dédié au traitement du signal (ASIC : Application Specific Integrated Circuit), d'un composant électronique programmable (FPGA, Field Programmable Gate Array), ou directement sur le processeur d'un PC traditionnel. Cela confère une universalité et une grande adaptabilité à l'émetteur/récepteur. En effet, il suffit de changer ou d'adapter le logiciel pour fonctionner avec un système radio différent.
Dans un système radio classique, l'émission/réception est assurée par des composants matériels (oscillateurs, filtres…) spécifiques et adaptés aux systèmes auxquels il est destiné. Il n'est donc souvent pas possible d'utiliser d'autres systèmes sans changer le matériel et donc l'intégralité du récepteur.
Le domaine des radios logicielles est en constant développement depuis que la première a été créée par les forces armées des États-Unis dans les années 1990.

## Historique

La radio logicielle a été conceptualisée à partir du début des années 1990 par Joseph Mitola. Celui-ci a défini la radio logicielle idéale comme étant constituée uniquement de deux composants : une antenne pour réceptionner les ondes et un convertisseur analogique-numérique, en anglais : Analog Digital Converter (ADC), qui transformerait les ondes en langage compréhensible par des processeurs qui réaliseraient toutes les tâches qu'une radio logicielle peut réaliser. Cet idéal n'a pas encore été atteint, les radios logicielles sont toujours composées de nombreux éléments matériels. La première radio logicielle a été développée par l'armée des États-Unis, notamment la marine, entre 1991 et 1995. Cette première radio a été nommée SPEAKeasy. Dans une radio logicielle idéale, toutes les fonctions de la radio sont programmables. Cela signifie que l'implémentation n'est pas dépendante du matériel sur lequel elle est exécutée. Jusqu'à présent, ce type de radio n'a pas encore été implémenté.

## Décomposition du signal
### Radio traditionnelle

Dans les radios analogiques, l'onde électromagnétique est reçue par un récepteur, l'antenne, qui transforme l'onde en un signal électrique. Le signal est ensuite amplifié une première fois par un amplificateur radiofréquence, en anglais radiofrequency (RF) . Une fois amplifié, le signal va être démodulé par un autre composant, le détecteur. La démodulation du signal permet d'adapter l'onde sinusoïdale porteuse reçue en adaptant ses différentes caractéristiques, fréquence, amplitude. Après avoir été démodulé, le signal est ensuite amplifié une seconde fois$^,$.
Dans le cas d'une émission, le procédé suivi est le procédé inverse. L'onde sonore est d'abord captée par un microphone, amplifié par un amplificateur BF. La fréquence du signal sonore amplifié est ensuite modulée. Le signal obtenu est à nouveau amplifié par un amplificateur radiofréquence puis émis par l'antenne radio sous forme d'une onde électromagnétique.

### Radio logicielle

Les radios logicielles comportent une partie analogique et une partie numérique.
Comme pour les radios traditionnelles, l'onde radiofréquence est d'abord captée par l'antenne puis transformée en un signal de fréquence intermédiaire par un modulateur RF (radiofréquence). L'antenne et le modulateur RF à l'entrée du système représentent la partie analogique de la radio logicielle.
Le signal à fréquence intermédiaire passe ensuite par le convertisseur analogique-numérique en anglais : Analog Digital Converter (ADC). Avec un signal analogique en entrée, ce composant permet d'obtenir un signal numérique en sortie. Ce composant forme également le pont entre la partie analogique et la partie numérique de la radio logicielle.
Le signal numérique passe ensuite par le convertisseur-abaisseur numérique, en anglais : Digital Down Converter (DDC). Ce composant est constitué de 3 sous-composants, le mixeur numérique, en anglais : digital mixer, l'oscillateur numérique, en anglais : digital local oscillator et un filtre à réponse impulsionnelle finie, en anglais : Finite Impulse Response (FIR). Le mixeur et l'oscillateur convertissent le signal en bande de base puis le FIR filtre la fréquence du signal de sortie.
Le dernier composant, le processeur de signal numérique s'occupe de démoduler et décoder le signal$^,$.

## Implémentations
### Processeur standard

Dans les années 1990, les radios logicielles étaient implémentées sur processeurs standards, en anglais : General Purpose Processor (GPP). Développer la partie logicielle de la radio sur un processeur standard a l'avantage de laisser un large choix de langages de programmation. Certaines radios logicielles ont ainsi été développées en C++ ou dans d'autres langages de programmation haut-niveau. Un avantage de cette architecture est le développement rapide de la partie logicielle car elle est bien adaptée aux langages de haut-niveau. Ces processeurs ne parvenaient toutefois pas à démoduler des ondes complexes en temps-réel et dissipaient trop d'énergie thermique. Cette option a donc été écartée par l'armée qui développait ces radios.

### Circuit logique programmable

Avec l'idée d'utiliser des processeurs génériques pour construire des radios logicielles performantes, les circuits logiques programmables (FPGA : Field-Programmable Gate Array en anglais) ont gagné en popularité. L'intérêt grandissant pour ce type de plateforme a permis de développer des Processeurs Digitaux de Signaux (DSP : Digital Signal Processor en anglais). Mais sur les FPGA, les programmes sont écrits en langage de description matériel (HDL : Hardware Definition Language en anglais). Ce type de langage est dépendant de l'architecture du processeur sur lequel il est exécuté. Cela implique de modifier certaines parties du programme selon la plateforme utilisée, ce qui a amené à l'émergence de nouveaux cadriciels (frameworks) permettant d'abstraire cette partie matérielle, en étant moins performant. De plus, un FPGA ne fait que simuler le comportement de composants électroniques. Par rapport à un composant dédié, cela provoque nécessairement une perte de performance et une plus grande dissipation d'énergie sous forme de chaleur.

### Processeur de signal numérique

Les processeurs de signal numérique font partie d'un type de microprocesseurs optimisés pour un nombre réduit d'opérations comparés aux processeurs communs. Ce composant est donc moins flexible qu'un circuit logique programmable ou qu'un processeur standard. Ils sont également moins performants que des processeurs standards. Pour pallier cela, un processeur de signal numérique est généralement couplé à un processeur standard, ou GPP, pour implémenter une radio logicielle. Peu de systèmes d'exploitation sont adaptés à ce type de processeur, il est donc plus difficile d'implémenter une radio logicielle en utilisant ceux-ci. Choisir d'utiliser un processeur de signal numérique réduit également la consommation d'énergie du système.

### Processeur graphique

Différentes architectures sont possibles et ont été expérimentées pour implémenter une radio logicielle. Certaines architectures comprennent uniquement un processeur « classique » qui n'a pas de spécificité particulière, d'autres utilisent des combinaisons de différents processeurs pour gagner en performances. Ici, on peut voir une comparaison non exhaustive des différentes architectures possibles et les performances obtenues pour chaque architecture. On remarquera un facteur 10 lorsque l'architecture passe d'un seul processeur à plusieurs en parallèle pour exécuter un algorithme de détection de signal nécessaire dans une radio logicielle pour qu'elle puisse recevoir et envoyer des signaux. De manière générale, les processeurs graphiques sont 5 fois plus rapides que les processeurs classiques et 3 fois plus rapides que les processeurs de signaux digitaux
Performance d'algorithme de détection de signal :
| Longueur de la donnée en entrée (ms) | Processeur standards en série (ms) | Processeur standards en parallèle (ms) | Processeur graphiques en parallèle (ms) |
| 1 | 13.487 | 1.254 | 0.278 |
| 10 | 135.852 | 12.842 | 2.846 |
| 100 | 1384.237 | 131.026 | 29.358 |
| 1000 | 13946.218 | 1324.346 | 321.254 |

## Défis technologiques

Une radio logicielle est composée de cinq composants clés : l'antenne, les filtres radiofréquences, la conversion d'un signal analogique en un signal numérique, le traitement de signal numérique, l’interconnexion entre ces composants. Chacun de ces composants apporte son lot de défis technologiques.

### Antenne

Le principal défi qui est rencontré concernant les composants matériels vient du fait que les antennes ne sont capables d'opérer que sur une petite plage de fréquences. Augmenter la taille de l'antenne permet d'augmenter sa plage de fréquences mais cela augmente également le bruit reçu par cette antenne et réduit également sa sensibilité en réception. En couplant plusieurs antennes, il est possible de recevoir des signaux de 500 MHz à 5,5 GHz en évitant de recevoir trop de bruit. De nouvelles technologies permettent également de disposer d'antennes qui sont capables d'adapter leur fréquence. Les technologies microsystème électromagnétiques ont ouvert de nouveaux champs d'études sur ce sujet. Des interrupteurs qui permettent de faire varier la plage de fréquences d'une antenne ont notamment été développés grâce à ces technologies. D'autres problématiques compliquent la réalisation d'une antenne performante dans les radios logicielles. Pour répondre à ces problématiques, différents types d'antennes existent : les antennes à résonance, à fréquences indépendantes, et les antennes à bandes ultra-larges, en anglais : Ultra-Wideband (UWB).

### Filtres radiofréquences

La problématique majeure pour ce type de composant réside dans la sélection et le rejet des interférences reçues. Le développement des technologies microsystème électromagnétiques a apporté des améliorations de performance sur ces composants.

### Traitement de signaux

Le moteur de traitement du signal de la radio logicielle doit jongler avec plusieurs critères pour être optimal. Parmi ces critères, la facilité à programmer, le niveau d'intégration, le cycle de développement, la performance de traitement du signal ainsi que la consommation d'énergie de ce moteur.

### Communication

La radio logicielle a l'avantage d'établir un lien radio en utilisant des blocs reconfigurables. C'est donc un outil de communication unique car il permet de mettre en réseau des entités hétérogènes. Pour cela, une radio logicielle doit tirer parti des standards existants, implémenter des protocoles variés, être capable de traiter le signal reçu à une vitesse qui suit l'évolution du marché et posséder une architecture qui permette une bonne connectivité entre les composants de la radio. Plusieurs architectures d'interconnexion entre ces composants existent : l'architecture sous forme de bus, l'architecture en arbre et l'architecture switch fabric (matrice de commutation).

### Temps-réel

Un des problèmes de la radio logicielle est de pouvoir traiter en temps-réel un signal qu'elle reçoit. En effet, de nombreuses fonctions doivent être appliquées au signal avant que celui-ci ne soit exploitable. Cela implique de disposer de suffisamment de puissance de calcul. C'est en partie pour cette raison que les processeurs classiques (GPP) sont généralement exclus des radios logicielles mais que l'on préfèrera des architectures plus adapté à un traitement de signal en temps-réel.

### Consommation d'énergie

Les radios logicielles s'appliquent généralement à des domaines dans lesquels le système doit être portable, comme dans le domaine automobile où la radio logicielle se développe petit à petit. La consommation d'énergie est donc un des critères principaux pour implémenter une radio logicielle. En effet, dans un système dont la source d'énergie est une batterie, on cherche généralement à optimiser la consommation d'énergie pour garder une autonomie optimale$^,$$^,$.

## Exemples d'utilisations

Les radios logicielles possèdent des fréquences variables, entre quelques centaines de mégahertz et quelques gigahertz. Cette caractéristique fait de la radio logicielle un objet métamorphe. En effet, cette adaptabilité permet à cet objet de respecter de nombreux standards parmi lesquels Bluetooth, EGSM, WLAN et bien d'autres encore. Ces technologies permettent de réutiliser la radio logicielle pour des utilisations très variées.

### Serveur Web

Il est possible de se servir d'une radio logicielle pour transmettre et recevoir des données. Les appareils de ce type peuvent également être mis en réseau entre eux. Cette technologie pourrait, à l'avenir, être de plus en plus utilisée dans le Web. Cependant, certains problèmes subsistent pour que les radios logicielles deviennent performantes. Il est notamment difficile d'établir une relation d'un serveur avec plusieurs clients. Il existe néanmoins des solutions à ce problème, il est notamment possible d'installer un serveur Linux qui sera capable de gérer plusieurs clients$^,$.

### Communications sans fil

Les applications de radio logicielle sur les téléphones mobiles se développent de plus en plus. En effet, des applications permettant de transformer un téléphone portable en radio logicielle sont désormais disponibles, notamment sur la plateforme Android. Les radios logicielles offrant de nombreuses possibilités, d'autres applications reliées à la téléphonie sont également possibles. Il est notamment possible de faire communiquer des téléphones via des radios logicielles implémentant un système de Voix sur IP, en anglais Voice Over IP (VOIP). Cela est possible en utilisant, par exemple, le logiciel Open Base Transceiver Station qui est fait pour mettre à disposition un point d'accès sans fil dédié à la téléphonie mobile. Il est également possible d'utiliser une radio logicielle comme un émetteur / récepteur Wi-Fi.

### Communication satellitaire

Le fait qu'une radio logicielle soit très adaptable et facilement reconfigurable pourrait jouer un rôle clé dans la communication avec les satellites, ces radios étant capables de dialoguer avec différents relais, envoyant des signaux variés et selon des techniques de modulation de signaux tout aussi variées.

### Applications commerciales

Les radios logicielles sont de plus en plus présentes sur le marché et sont disponibles au grand public. En voici quelques exemples :
Radios logicielles disponibles dans le commerce :
| Nom | Fréquence min. (MHz) | Fréquence max. (MHz) | Bande Passante (MHz) | Prix ($) |
| RTL-SDR 2831 | 24 | 1 766 | 2,4 | 10-20 |
| Funcube Pro+ | 420 | 2 050 | 0,192 | 200 |
| HackRF One | 1 | 6 000 | 20 | 300 |
| BladeRF 2.0 | 47 | 6 000 | 61,44 | 400-650 |
| USRP B200 | 10 | 6 000 | 56 | 700 |
| MatchStiq | 70 | 6 000 | 50 | 4 500 |
| Pluto-SDR | 325 | 3 800 | 20 | 100-200 |

## Variantes

Les radios logicielles sont très pratiques car, à tout moment, il est possible d'en modifier le comportement en reprogrammant certains composants logiciels de celles-ci. D'autres types de radios logicielles ont été étudiés pour limiter ces reprogrammations.

### Radio intelligente

Le but d'une radio intelligente est de pouvoir utiliser des plages de fréquences variables. En effet, une radio logicielle n'est programmée que pour opérer sur une certaine plage de fréquences et doit être reprogrammée si la plage de fréquence venait à changer. Une radio intelligente répond à ce problème. Différents utilisateurs peuvent utiliser une radio logicielle en même temps. Cela signifie qu'il est possible que deux utilisateurs essaient d'accéder à la même plage de fréquence au même moment. La radio intelligente cherchera, dans ce cas, à utiliser une partie inoccupé du spectre radio.

### Radio autonome

Ce type de radio logicielle ne nécessite pas de reprogrammer les composants de la radio pour être capable de démoduler un signal. En effet, une radio logicielle doit connaître les différents paramètres du signal : la fréquence porteuse, le type de modulation, la bande passante du signal, etc. Une radio autonome n'a pas besoin de connaître ces paramètres au préalable pour être capable de recevoir un signal. Un composant est ajouté à la radio. Celui-ci est capable de détecter les différents paramètres du signal avant que ce dernier ne soit démodulé.

## Exemples d'applications

Les techniques de radio logicielle sont par exemple utilisées dans les réseaux mobiles (GSM, UMTS, etc.) au niveau des stations de base (BTS, Base Transceiver Stations, Node B). Elles présentent les avantages suivants :
* possibilité d'émettre (et de recevoir) des signaux simultanément dans plusieurs canaux, à l'aide d'un unique émetteur/récepteur ;
* performances accrues en réception par rapport à des technologies radio traditionnelles ;
* possibilité de mettre à jour logiciellement les BTS pour supporter de nouvelles modulations (exemple : migration de la norme GSM à la norme EDGE) ;
* adaptation à son environnement en radio intelligente.

## Exemples de réalisations d'amateurs

Plusieurs réalisations de radios logicielles ont aujourd'hui été mises au point par la communauté radio amateur (voir les liens externes).
Les réalisations les plus simples utilisent une conversion de fréquence générant un signal en quadrature (I/Q) numérisable par une simple carte son de PC stéréo. L'échantillonnage se fait typiquement à 44 kHz, 96 kHz ou 192 kHz, autorisant le traitement numérique par un PC d'un bloc complet de spectre de largeur 44 kHz, 96 kHz ou 192 kHz respectivement.
Les réalisations les plus perfectionnées utilisent des convertisseurs analogique-numérique dédiés, fonctionnant à plus de 100 mégaéchantillons par seconde. Le signal brut ainsi numérisé est ensuite converti en un signal numérique I/Q à plus bas débit, puis transféré par USB ou Ethernet vers un PC, qui prend en charge le traitement des échantillons (démodulation, calcul de spectre, etc.). Cette technique autorise le traitement numérique par un PC$^,$ d'un bloc complet de spectre de largeur 2,5 MHz et plus.
Parmi les convertisseurs pour amateurs, citons l'USRP et le FUNCube.
Un tel récepteur peut être réalisé de manière simple à l'aide d'une clé USB initialement faite pour la réception de la télévision numérique. En effet certains circuits décodeurs de télévision numérique à base de circuit intégrés RTL-2832U couplés à un logiciel comme SDR# permettent la démodulation de signaux radio à moindres frais.
De tels récepteurs sont également utilisés pour capter les signaux ADS-B émis par les avions (et les mettre en commun sur Flightradar24, par exemple).
Des circuits intégrés analogiques ont été développés et démontrent la faisabilité de la radio-logicielle aux radiofréquences suivant une méthodologie de conception dédiée inspirée par Pr. Yann Deval. Ils sont basés sur le traitement du signal échantillonné sous le nom de SASP (« Sampled Analog Signal Processor »).

## Exemple d'utilisation militaire

Les postes de radio logicielle qui doivent équiper les forces armées françaises vers 2020 permettront « une transmission simultanée et hautement sécurisée de voix et de données », et vont constituer « un élément essentiel de la sécurité et de la capacité d’action tactique des fantassins et des véhicules blindés déployés en opération ».
Concrètement, ces radios ont plusieurs fonctionnalités, comme évidemment la phonie de combat mais aussi la messagerie, la vidéo, la géolocalisation, etc. Et cela de manière simultanée et différenciée en termes de qualité de service, c’est-à-dire que les données les plus importantes sont échangées en priorité.