2021-03921 - Programmation FPGA et Linux embarqué

Type de contrat : CDD

Contrat renouvelable : Oui

Niveau de diplôme exigé : Bac + 5 ou équivalent

Autre diplôme apprécié : Thèse

Fonction : Chercheur contractuel

Niveau d'expérience souhaité : De 3 à 5 ans

A propos du centre ou de la direction fonctionnelle

Le centre de recherche Inria Grenoble Rhône-Alpes regroupe un peu moins de 650 personnes réparties au sein de 37 équipes de recherche et 8 services support à la recherche.

 

Ses effectifs sont distribués sur 5 campus à Grenoble et à Lyon, en lien étroit avec les laboratoires et les établissements de recherche et denseignement supérieur de Grenoble et Lyon, mais aussi avec les acteurs économiques de ces territoires.

 

Présent dans les domaines du logiciel, du calcul haute performance, de linternet des objets, de limage et des données, mais aussi de la simulation en océanographie et en biologie, il participe au meilleur niveau à la vie scientifique internationale par les résultats obtenus et les collaborations tant en Europe que dans le reste du monde.

Contexte et atouts du poste

L'équipe Emeraude est une collaboration entre le Citi et les chercheurs du groupe GRAME. GRAME est un "Centre National de Création Musicale'' (CNCM) organisé en trois départements: production musicale, transmission / médiation et recherche en informatique musicale. Les quatre chercheurs de GRAME ont une expertise en informatique (compilation), DSP audio, lutherie numérique et HCI (Human Computer Interaction) en général. GRAME est l'inventeur de Faust (https://faust.grame.fr), un langage spécifique pour le traitement du signal audio. Faust est principalement développé au GRAME et par une communauté mondiale, il est basé sur un compilateur ''dtraduisant'' les spécifications DSP écrites en Faust dans un large éventail de langages de niveau inférieur (par exemple, C, C ++, Rust, Java, WASM, LLVM bitcode, etc.).

Emeraude participe à un projet ANR (FAST) visant notamment à faire de la  synthèse audio faible latence sur FPGA. Il s'agit de concevoir une plate-forme basée sur FPGA pour le traitement numérique du signal audio (DSP) ultra-faible latence programmable à haut niveau avec Faust. Cette plate-forme  (https://faust.grame.fr/syfala/) est destinée à être utilisable pour diverses applications allant de la synthèse et du traitement du son au contrôle actif du son et à l'acoustique d'un champ sonore artificiel ou d'une pièce.

Objectifs techniques

Le travail proposé au sein de FAST propose plusieurs défis techniques. Il s'agit de gérer la chaîne d'outils de compilation des traitements audio écrits en Faust jusqu'au bitstream FPGA en utilisant le compilateur Faust, l'outil FloPoCo de Socrate (http://flopoco.gforge.inria.fr),  les outils de Xilinx  (les toolchains Vivado HLS,  vivado et Vitis) ainsi que la distribution Linux embarqué (distribution petalinux proposée par Xilinx) déployée sur le processeur ARM des SoC Xilinx. Il s'agit aussi de consolider la distribution du logiciel. En pratique, l'organisation du dépôt git actuel devra être complètement revue pour que les différentes versions de l'outil constituent des branches plutôt que des sous-repertoires. L'ingénieur devra prendre en main les différents composants de la chaîne d'outils qui fontionnent déjà et maintenir l'ensemble de la chaîne dans un état cohérent en fonction des améliorations proposés aux différents niveaux. L'ingénieur participera aussi à l'évolution de cette chaîne de compilation en proposant de nouvelles extensions. En plus de cela, et lorsque la chaîne sera stabilisée, l'ingénieur participera aux applications de la chaîne. Nous prévoyons d'utiliser ce nouveau flux de compilation FPGA pour:

  • concevoir un module programmable de traitement/synthèse  de son pour les musiciens,
  • créer un système pour modifier activement l'acoustique d'une salle de concert pour la rendre "modulaire'',
  • modifier activement les propriétés acoustiques des instruments de musique acoustiques.

En pratique ...

Le travail se déroulera dans le cadre d'une collaboration entre Grame et Citi, la plupart du temps l'ingénieur sera basé à Citi, mais une réunion régulière (environ toutes les deux semaines) aura lieu. La position est de 24 mois et a été obtenue dans le cadre de la création de l'équipe Emeraude, il y aura donc de nombreuses oportunités d'autre objectifs.

Tout ce travail doit venir en support du doctorant recruté sur l'ANR FAST qui expérimentera avec cette chaîne de compilation. L'ingénieur sera associé à certaines publications du doctorant.

Mission confiée

Emeraude a mis en place, grâce au projet Syfala (https://faust.grame.fr/syfala/) une première version d'une chaîne d'outils automatique complète de Faust vers un FPGA pour des  programmes Faust stéréo, il y a beaucoup plus étapes d'ingénierie qui doivent être réalisées avant d'obtenir un outil vraiment utilisable, ce sont:

0) Mettre en place une nouvelle structuration git (probablement sur github) mieux adaptée aux différentes déclinaisons de la chaîne de compilation (avec ou sans mémoire, avec contrôleurs hardware ou software, avec ou sans linux, avec ou sans HLS etc.)

1) Utiliser la RAM disponible pour implémenter des lignes à retard sur la carte Zybo (plutôt que la RAM du bloc FPGA), notamment en utilisant le linux embarqué. Cette étape nécessite des compétences de développement du noyau linux, notamment le développement de driver du noyau.

2) Déployer la version "fixed-point" de Syfala, c'est à dire la version utilisant des largeurs de bit optimisées pour les variables, grâce notamment aux opérateurs FloPoCo et à l'analyse de largeurs de bit en cours d'implémentation dans le compilateur Faust. Cette nouvelle version permettra d'améliorer la complexité des design FPGA obtenus.

3) Intégrer et consolider l'interface homme-machine (c'est-à-dire les ''contrôleurs/sliders'' de Faust) à la conception du FPGA. Actuellement, il y a deux moyens d'interagir avec le son sortant de la carte:

  • Dans le matériel (à l'aide des boutons)
  • Dans le logiciel (sur le Linux embarqué sur ARM)

4) Intégrer le traitement audio multicanal (GPIO et ADC supplémentaires utilisés)
5) Déployer la chaîne de compilation sur d'autres familles de FPGA Xilinx pour traiter des problèmes avec plus de puissance de calcul.
6) Fournir des démonstrateurs efficaces:

  • Instruments numériques
  • Contrôle sonore actif pour l'acoustique

 

Principales activités

Le plan de travail proposé pour le futur ingénieur ADT est le suivant:

  • Tout d'abord, se familiariser avec les technologies utilisées (Faust, Xilinx VivadoHLS, FloPoCo, traitement du signal audio, environnement de programmation matériel-logiciel Xilinx FPGA utilisant le processeur ARM sur puce et petalinux): entre 1 et 2 mois.
  • Consolider et optimiser le flux de compilation de base de Faust et proposer une nouvelle structuration sous forme de projet git qui sera ouvert aux utilisateurs extérieurs (tâche récurrente)
  • Consolider la version actuelle qui  utilise de la mémoire intégrée pour stocker des échantillons audio, valider les performances obtenues et les limitations en terme de complexité matérielle, de nombre d'accès mémoire et de latence (2 mois)
  • Proposer l'intégration de l'IP Faust avec le petalinux embarqué, développer un pilote de périphérique noyeau pour pouvoir utiliser la RAM externe depuis linux et depuis l'IP.
  • Aider à la réalisation de deux interfaces, une hardware (potentiomêtres et boutons) et une software sur l'ARM, ces interfaces serviront pour les démonstrateurs.
  • Porter le flux de compilation vers une architecture FPGA plus puissante pour l'utilisation dans le cadre de l'adaptation dynamique d'acoustique.
  • Réaliser une démonstration solide qui présente la possibilité du nouveau flux de compilation: 4 mois.
  • Étudier comment FloPoCo peut être utilisé pour optimiser le calcul dans l'IP Faust (temps restant)

Compétences

 

  • Une bonne maîtrise de l'anglais
  • Un connaissance solide en programmation embarquée, compilation et administration linux  (développement du noyeau)
  • La maîtrise du langage C ainsi que des bases solides en architecture des ordinateurs sont nécessaires.
  • Une formation de base en electronique et traitement du signal avec une connaissance de la programmation de FPGA sera appréciée
  • Une formation de base en traitement du signal audio sera appréciée

Avantages

  • Restauration subventionnée
  • Transports publics remboursés partiellement
  • Congés: 7 semaines de congés annuels + 10 jours de RTT (base temps plein) + possibilité d'autorisations d'absence exceptionnelle (ex : enfants malades, déménagement)
  • Possibilité de télétravail et aménagement du temps de travail
  • Équipements professionnels à disposition (visioconférence, prêts de matériels informatiques, etc.)
  • Prestations sociales, culturelles et sportives (Association de gestion des œuvres sociales d'Inria)
  • Accès à la formation professionnelle
  • Sécurité sociale

Rémunération

A partir de 2 936 euros bruts