L’une des spécialités de l’institut REDS est le développement de systèmes reconfigurables à haute performance, et l’une de ses activités principales est la radio définie par logiciel – Software Defined Radio (SDR).
La faisabilité de la reconfiguration partielle sur des circuits FPGA contenus dans des appareils SDR a été démontré dans le cadre du projet SDR-Makerspace avec la tâche SDR’s FPGA Partial reconfiguration. Ce projet est mené par le REDS en collaboration avec la Libre Space Foundation et il est financé par l’Agence spatiale européenne (ESA).
Le design d’un bloc de traitement de signal avec l’utilisation de la reconfiguration partielle sur FPGA a été implémenté et mis en place. Ensuite cela a été testé sur un appareil SDR en utilisant GNU Radio. Le site wiki du projet contient une procédure pas-à-pas qui permet de reproduire ce travail. Une description du contexte d’application, ainsi que le travail réalisé sont présentés ensuite.
Contexte : un appareil SDR avec la reconfiguration partielle sur FPGA
Un récepteur radio est un appareil électronique qui sert à capter et à décoder les ondes radioélectriques émises par les émetteurs radio. Cela permet d’extraire les données utiles transmissent lors de l’émission.
Les ondes radioélectriques sont caractérisées par leur fréquence, et selon l’application l’information est codée dans différentes bandes de fréquence. Par exemple, il y a des bandes pour la télévision (30 à 3000 MHz), pour la radiodiffusion FM (87,5 à 108 MHz), pour la téléphonie mobile 4G (800 MHz à 2600 MHz), pour les réseaux Wi-Fi (2,412 à 2.484 GHz et 5,470 à 5,725 GHz), pour le GPS, les radars … Une vraie multitude de bandes pour une multitude d’applications.
Non seulement la bande de fréquence est différente selon l’application, mais également le codage et décodage de l’information. Donc un appareil radio dédié est utilisé pour chaque application.
Il est possible d’utiliser un seul appareil SDR (radio définie par logiciel) pour plusieurs applications radio différentes, car une bonne partie de l’appareil SDR est réalisé en logiciel. Cette partie logicielle peut traiter les données différemment selon l’application.
Un appareil SDR (Figure 1) contient au moins une antenne et un module RF. Il capte le signal et réduit sa fréquence à une fréquence intermédiaire, de l’ordre de 1 à 100 MHz. Puis il numérise le signal avant de le traiter avec la partie logicielle. Il en résulte un grand débit de données, qui ne peut pas être traité assez rapidement par un ordinateur classique. La plupart des systèmes SDR ont donc un circuit FPGA entre le processeur et le module RF, qui permet d’accélérer certains calculs.
Un circuit FPGA est configurable : on décrit le comportement souhaité à l’aide d’un langage HDL, puis on génère un fichier de configuration qui est envoyé à la FPGA. Une fois configurée, la FPGA se comporte comme un circuit figé, jusqu’à la prochaine configuration ou redémarrage.
Pour reconfigurer complètement la FPGA, il faut lui renvoyer une nouvelle configuration, ce qui a pour effet d’interrompre son exécution en cours. Dans un appareil SDR, le lien de communication serait donc coupé. Afin de ne pas avoir cette coupure, on se limite à mettre dans la FPGA des opérations qui sont communes à toutes les applications radio, tels que la configuration du module RF, le transfert des données et la conversion de leur débit. Et pourtant il serait idéal d’utiliser la FPGA pour accélérer des calculs spécifiques à chaque application radio ! Pour cela il faudrait pouvoir reconfigurer seulement des parties de la FPGA sans changer le reste.
Or, depuis une bonne dizaine d’années, certains FPGA permettent de faire de la reconfiguration partielle. Cela consiste à autoriser la modification d’une ou plusieurs parties du circuit sans interrompre le fonctionnement des autres parties de celui-ci. Dans un appareil SDR, ça permettrait de passer d’une application radio à l’autre, sans interrompre le lien de communication ni changer les calculs communs, tout en accélérant les calculs propres à chaque application radio.
La reconfiguration partielle n’est pas encore exploitée dans les appareils SDR, même s’ils contiennent presque tous une FPGA qui permet d’appliquer cette fonctionnalité. Donc l’objectif de notre travail est de montrer la faisabilité de la reconfiguration partielle dans les FPGA pour des appareils SDR, et ainsi encourager les développeurs à l’intégrer dans leurs produits.
Travail réalisé : démonstration de la faisabilité de la reconfiguration partielle sur des FPGA dans les appareils SDR
La carte E310 d’Ettus Research a été utilisé pour faire cette démonstration. Elle est basée sur un circuit Xilinx Zynq 7020, qui contient un processeur ARM avec un Linux embarqué et un FPGA de la famille Artix-7. Ils sont reliés par une interface AXI standard. Le circuit Zynq est bien adapté pour la reconfiguration partielle dans un système SDR, car les calculs complexes de traitement du signal peuvent être faits dans le FPGA, pendant que le processeur ARM contrôle le système. Le processeur peut décider d’effectuer une partie des calculs complexes dans le FPGA à l’aide de la reconfiguration partielle, pour autant que la fonctionnalité choisie soit disponible dans la librairie des composants de reconfiguration partielle. Dans ce cas le processeur active cette fonctionnalité sur la FPGA en lui envoyant le fichier de reconfiguration partielle. Cela permet d’accélérer le calcul en le déportant dans la FPGA.
Dans notre cas, la carte E310 a été connecté à un PC (Figure 2a). Pour programmer une application SDR sur la carte E310, nous utilisons GNU Radio et ses extensions gr-ettus et gr-uhd. On produit un schéma-bloc en instanciant et reliant des blocs fonctionnels mis à disposition dans des librairies, et éventuellement des blocs customisés crées par nos soins. Puis on génère un script en lien avec le schéma-bloc qu’on charge et exécute sur la carte E310. Depuis le PC, on pilote l’exécution et on visualise les résultats. Cette méthode de programmation permet de choisir quels blocs sont exécutés sur la FPGA et quels blocs tournent sur le processeur ARM.
Pour envoyer les fichiers de reconfiguration partielle à la FPGA, un connecteur JTAG attaché au PC (Figure 2b) a dans un premier temps été utilisé. Puis dans un deuxième temps, l’envoi du fichier de reconfiguration partielle depuis le processeur ARM a été mis en place. Ceci permet de simplifier grandement la procédure de reprogrammation.
Un bloc customisé a été implémenté sur la FPGA de la carte E310, en utilisant le logiciel RFNoC d’Ettus Research. Ce bloc réalise une fonctionnalité customisée du traitement du signal. Puis, dans GNU Radio un schéma-bloc d’un système SDR complet a été créé, dans lequel notre bloc customisé a été instancié, et testé afin de valider son bon fonctionnement.
Ensuite, en utilisant l’outil Vivado de Xilinx, le bloc customisé a été inséré dans une zone de reconfiguration partielle. La fonctionnalité du bloc permet de multiplier le signal de sortie par un gain de « 1 ». Une deuxième version du bloc a été créé avec un gain de « 2 ». Donc suivant le fichier de reconfiguration partielle, il est possible de choisir entre deux implémentations de gain différentes pour la même zone dans la FPGA.
Enfin, le design avec la reconfiguration partielle a été testé sur la carte E310. Tout d’abord, la FPGA est configuré avec un bitstream (fichier de configuration) complet qui comporte le bloc customisé avec un gain de sortie de « 1 ». Le schéma-bloc permet de contrôler et d’exécuter notre design. L’amplitude du signal de sortie peut être observé et elle est conforme au gain de « 1 » appliqué. Ensuite, la reconfiguration partielle est exécutée sur la zone prédéfinie dans la FPGA avec la deuxième version du bloc. Le gain de sortie est donc changé avec à une valeur de « 2 », sans stopper le fonctionnement des autres fonctions en cours d’exécution dans la FPGA. Au final, l’amplitude du signal de sortie observée est bien doublée.
En conclusion, la faisabilité de la reconfiguration partielle dans la FPGA est ainsi démontrée pour des appareils SDR. Le site wiki du projet, accessible au public, contient la procédure pas-à-pas qui permet de reproduire ce travail. Par la suite, une demande à Ettus Research sera proposée afin d’intégrer le support à la reconfiguration partielle dans les logiciels de développement de leurs cartes SDR.