• Aucun résultat trouvé

Implantation matérielle du système de reconnaissance de formes

5.2 Du circuit FPGA au SoPC

rithmes envisagés. De tels circuits n’existent que pour le calcul de réseaux connexionnistes et il aurait donc été nécessaire d’utiliser un autre circuit pour le prétraitement. Cette démarche aurait engendré de reprendre complètement la conception de la carte dédiée au trigger de niveau 2, et se serait avéré trop coûteuse en termes de temps de développement. Le lecteur intéressé par ce type de solution peut néanmoins trouver des informations sur les circuits neuronaux comme CNAPS (Hammerstrom, 1995), SYNAPSE (Ramacher, 1992) ou encore CM1K .

La collaboration HESS-II s’est donc tournée vers une solution reconfigurable (Nayman, 2006). La solution à base de FPGA a été retenue pour des raisons évidentes de flexibilité. De plus, les FPGA modernes ont été nettement améliorés d’un point de vu arithmétique par l’ajout d’unités dédiées au calcul de MAC grâce à des accélérateurs matériels dédiés. Les FPGA constituent donc un candidat idéal pour une chaine de décision telle que la nôtre. Du reste, le parallélisme des réseau de neurones peut facilement être exploité sur ce type de circuits (Prévotet, 2002). D’autre part, la combinaison de l’utilisation de la logique programmable et des accélérateurs matériels nous garantit une implantation optimale des moments de Zernike.

5.2 Du circuit FPGA au SoPC

Un FPGA est un circuit intégré conçu pour être configuré par l’utilisateur après sortie d’usine. La configuration du FPGA se fait généralement grâce à un langage de description (HDL pour Hardware Description Language). Les FPGA peuvent être utilisés pour implanter toutes les fonctions logiques qu’un ASIC pourrait exécuter. La possibilité de mettre à jour les fonctionnalités du circuit et plus généralement de le reconfigurer selon les besoins, la reconfiguration partielle d’une partie du circuit et le faible coût de développement par rapport à un ASIC en font un circuit avantageux pour de nombreuses applications.

5.2.1 Structure du FPGA

Les FPGA ont été introduits en 1985 (Santo, 2009) par les co-fondateurs de Xilinx, Ross Freeman et Bernard Vonderschmitt. Bien que Xilinx reste un acteur incontournable de ce marché, plusieurs autres constructeurs de FPGA ont fait leur apparition depuis son invention. Parmi eux, on peut citer Altera, LatticeSemiconductor, Actel, etc.

Les FPGA sont des circuits semiconducteurs programmables qui sont basés sur une matrice de blocs logiques programmables reliés grâce à des interconnexions programmables. Contrairement aux ASIC, circuits dont le design est dédié à une application spécifique, les FPGA peuvent être programmés afin de correspondre à l’application désirée ou à des exigences spécifiques. Bien qu’il existe des FPGA programmables une fois (OTP FPGA pour One-Time Programming FPGA, en Anglais), la plupart d’entre eux sont basés sur des SRAM (pour Static Random Access Memory) qui peuvent être reprogrammés lorsque le design évolue.

La figure 5.3 représente la structure générale du FPGA de Xilinx à titre d’exemple. Ce type de circuit intégré est constitué d’une matrice bidimensionnelle de circuits logiques généralistes appelés cellule ou blocs logiques et dont les fonctions sont programmables. Les cellules sont connectées entre elles par des bus programmables. Un FPGA est constitué d’un certain nombre de modules logiques, une architecture de routage interconnectée et des éléments programmables qui peuvent être programmés de sorte à relier les modules logiques entre eux afin de réaliser des fonctions de modules logiques. L’architecture classique d’un FPGA consiste en une matrice de blocs logiques configurables (CLB pour Configurable Logic Blocs) embarqués dans une structure interconnectée reconfigurable et entourée par des blocs d’entrées/sorties (IOB pour I/O Blocks). De plus, les FPGA sont typiquement dotés d’autres blocs spécialisé comme les blocs RAM (pour Random Access Memory, en Anglais) ou les blocs DSP (pour Digital Signal Processors). Ces blocs spécialisés peuvent exécuter des tâches plus spécifiques que les CLB et peuvent être configurés conformément à une variété d’options pour permettre un fonctionnement souple du FPGA.

Figure 5.3 – Matrice bidimensionnelle constitutive d’un FPGA Xilinx.

IOB Les FPGA actuels sont dotés de centaines de standards d’entrées/sorties fournissant ainsi l’interface idéale pour un système donné. Les entrées/sorties dans un FPGA sont regroupées par lots qui peuvent chacun être capable de supporter indépendamment les différents standards d’en-trées/sorties.

Figure5.4 – Structure du CLB.

CLB Le CLB, représenté sur la figure 5.4 est l’unité logique de base du FPGA. Leur nombre exact et leurs caractéristiques varient d’un circuit à l’autre mais tous les CLB consistent en une matrice configurable de 4 à 6 entrées, un mécanisme de sélection (multiplexeur, look-up-table etc.) et des flip-flops. Cette matrice est très flexible et peut être configurée pour manipuler la logique combinatoire, des registres à décalages ou de la RAM.

Les interconnexions Alors que les CLB fournissent les capacités logiques, un routage flexible d’interconnexion achemine les signaux entre les CLB et des entrées aux sorties. Le routage se décline en plusieurs critères selon l’optimisation désirée du design. Le logiciel de développement rend la

5.2 Du circuit FPGA au SoPC

tâche de placement routage transparente pour l’utilisateur réduisant ainsi de façon significative la complexité du développement.

Blocs RAM Des blocs RAM embarqués sont disponibles dans la plupart des FPGA ce qui permet de disposer de mémoire interne. Selon les technologies et les constructeurs, on peut trouver des FPGA disposant jusqu’à 10 Mbits de mémoire interne.

Figure5.5 – Structure d’un bloc DSP pour un FPGA de la famille Virtex4 de Xilinx - Le XtremDSP DSP48.

Blocs DSP Le bloc DSP dont on peut voir un exemple sur la figure 5.5 permet l’implantation d’opérations nécessitant une puissance de calcul élevée. Cela confère notamment :

– une flexibilité et une utilisation améliorée, – l’efficacité de l’application améliorée,

– une réduction globale de la consommation de courant, – une fréquence maximum augmentée,

– un support pour plusieurs opérations spécifiques comme la multiplication, la multiplication-accumulation (MAC), la multiplication suivie de l’addition, l’addition à trois entrées, le calibrage, le multiplexage de larges bus, etc.,

– un support pour cascader plusieurs blocs DSP afin d’exécuter des fonctions mathématiques complexes, des filtres, et autres fonctions arithmétiques complexes.

Les blocs DSP sont constitués au minimum d’un multiplieur et d’un additionneur dont les tailles varient selon les technologies et les constructeurs. Cet apport, non-négligeable, permet d’envisager des traitements complexes qui seraient en temps normal peu adaptés à la technologie FPGA de par leur nature. Ainsi, des fonctions de traitement du signal peuvent être implantées non seulement sans utiliser des ressources considérables mais aussi sans pénaliser le temps d’exécution de l’application concernée.

Gestion d’horloge La plupart des FPGA actuels sont dotés de modules DCM (Digital Clock Manager). On peut trouver aussi sur certains circuits une gestion par PLL (Phase-Looped Locking) voire l’utilisation des deux.

5.2.2 Vers les SoPC (System on Programmable Chip)

Ces dernières années ont vu arriver sur le marché une nouvelle génération de FPGA disposant de ressources embarquées et notamment de processeurs. Ceci a permis, non seulement de disposer de toute la flexibilité des FPGA en termes de performance, de possibilité de reconfiguration mais également de pouvoir exécuter des traitements logiciels indépendamment du matériel. Ceci présente un grand intérêt dans la mesure ou les FPGA rivalisent aujourd’hui avec des architectures de type DSP ou processeurs généralistes et constituent la cible privilégiée pour la mise en œuvre de systèmes

embarqués. Parmi les processeurs disponibles sur plateforme SoPC, on trouve les soft-core et les hard-core.

Les soft-core Un soft-core est une implantation de processeur décrite à haut niveau d’abstraction dans un langage de description matérielle comme le VHDL ou le Verilog. Un soft-core est donc une IP (bloc de propriété intellectuelle) pouvant être reconfigurée pour s’adapter aux contraintes de chaque utilisation (périphériques, performances, ressources, consommation, fonctions etc.). Parmi les processeurs soft-core les plus connus, on peut citer le NIOS de la société Altera, le MicroBlaze de Xilinx et le LEON de chez Gaisler Research.

Les hard-core D’autre part, certains FPGA comportent au moins un processeur embarqué en dur, c’est à dire qu’ils sont déjà implantés sur silicium et ne peuvent donc pas être reconfigurés. Chez Xilinx, cela se traduit par l’apparition du PowerPC dans les architectures des FPGA. Altera n’a à ce jour pas de solution FPGA embarquant un processeur en hard. Les processeur hard-core tend à disparaître au profit des soft-core plus flexibles.

5.3 État de l’art sur les implantations existantes des moments de