Cours FPGA 02/01/2014 L’architecture SOPC Des FPGAs PAGE 1 PETITPA Cours FPGA 02/01/2014 Ce document aborde l’architecture moderne des FPGA et notamment la technologie SOPC (system on programmable chip). Cette technologie SOPC permet d’associer des structures électroniques matérielles (IPCORE) avec des systèmes microprogrammés logiciels (softcore ou hardcore) au sein d’un FPGA. On s’attardera plus particulièrement aux solutions apportées par XILINX grâce à ces architectures que sont les FPGA de la famille VIRTEX, SPARTAN, ZYNQ. Avant de détailler ces nouvelles architectures il convient de faire un comparatif entre ASIC et FPGA 1) La solution ASIC ou FPGA ? Les anciennes architectures programmables offrent une flexibilité d’utilisation et de programmation élevée. Toutefois elles pâtissent de leurs performances moyennes (consommation d’énergie élevée et/ou bien puissance de calcul relativement faible). Les architectures matérielles dédiées implantés sous la forme de circuits ASIC offrent des performances optimales. Les circuits ASIC sont des circuits intégrés non programmables conçus pour des besoins spécifiques. Toutefois elles sont peu flexibles, nécessitent de long processus de développement et de mise en production. L’avènement des architectures SOPC et les progrès technologiques sur les FPGA a permis de réduire l’écart de performance entre ASIC et FPGA. Le graphe ci-dessous nous donne cette évolution des FPGA SOPC 2) L'Evolution des FPGAs En outre les FPGA ont connu dans cette dernière décennie au-delà du concept SOPC une évolution considérable sur plusieurs niveaux. Ces améliorations se traduisent sous forme d’une augmentation du nombre et de la taille des ressources logiques, l’apparition des opérateurs arithmétiques complexes pour le traitement du signal, des modules de mémoire (RAM), des blocs matériels dédiés, des éléments de gestion de l’horloge, des entrées/sorties configurables et même des structures microprogrammés. Prenons par exemple le cas de la famille Virtex-5 de Xilinx, les circuits FPGA peuvent intégrer des blocs matériels dédiés au traitement du signal (DSP bloc ), au stockage d’informations (block RAM ), aux communications à haut débit (PCI express ) ainsi que des coeurs de processeurs (PPC power pc ). Pour Le développement des systèmes numériques complexes certaines sociétés proposent sur le marché des modules connus sous le nom de modules IP (Intellectual Property ou IP, fonctions mathématiques : DCT, FIR, interfaces bus : PCI, RapidIO, coupleurs divers : UART, HDLC. . . ). Toutefois ces approches sont souvent sous optimales à cause des problèmes d’interfaçage des IPs. L’ensemble de ces ressources permet la conception de systèmes complexes. PAGE 2 PETITPA Cours FPGA 02/01/2014 3) Architecture moderne des FPGA: le concept SOPC La tendance pour les circuits FPGA est la possibilité de réaliser des systèmes sur puce (ou SoC) en utilisant des " composants virtuels " et de concevoir ainsi des blocs de propriété intellectuelle IP qui sont par exemple des fonctions VHDL/Verilog génériques réutilisables. Un SoC (System On Chip) est composé de plusieurs modules fonctionnels intégrés dans un même circuit. Un SOC peut être développé : sans utilisation de coeur de processeur, autour d’un coeur de processeur autour d’une architecture multicore . L’approche SoC a été empruntée du développement de systèmes complexes sur technologie ASIC. Cependant, elle a été étendue pour le développement sur cible FPGA. On parlera alors de SoPC (System On Programmable Chip). Les systèmes de type SoPC peuvent intégrer un ou plusieurs processeurs softcore ou Hardcore avec ses périphériques au sein d’un unique FPGA. Le code exécutable correspondant à l’application logicielle déployée sur le ou les processeurs peut être soit mémorisé dans une mémoire interne au FPGA, soit dans une mémoire externe. Le concept de conception conjointe Matériel/Logiciel propose d’associer au sein d’un même système un ou plusieurs coeurs de processeurs embarqués (softcore) ou matériel avec des blocs matériels dédiés: blocs IP costumisable ou des blocs IP propriétaires. Parmi les processeurs embarqués intégrables dans un système SoPC, on peut citer les solutions softcore MicrBlaze et nios respectivement développées par Xilinx et Altera ainsi que d’autres processeurs performants (hardcore) issus du monde opensource : processeurs Leon 2/3, plasma, ARM, Sun... Les composants FPGA permettent d'implanter deux types de SoPC. Le premier type de SoPC utilise uniquement des IP soft de processeur Softcore tels que le MicroBlaze et le NIOS. Un processeur softcore est réalisé à partir de la logique programmable présente sur la puce. Le nombre de processeurs intégrés sur un même composant dépend des ressources du composant utilisé en logique programmable. Le deuxième type de FPGA en plus de la logique reconfigurable, implémente en dur un ou plusieurs coeurs de processeurs (PowerPC pour Xilinx voir figure ci-dessous, ARM pour Altera). Ceci n'empêche en rien l'utilisation de processeurs Soft (netlist). Ces deux types de SoPC utilisent les mêmes flots de conception. FPGA XILINX ZINQ Hardcore PAGE 3 PETITPA Cours FPGA 02/01/2014 4) Le Softcore XILINX MICROBLAZE Le processeur MicroBlaze est paramétrable et permet l’activation sélective de fonctionnalités supplémentaires. Seule la version du processeur MicroBlaze et les versions suivantes supportent toutes les options . L’architecture interne du MicroBlaze associé au bloc IP propriétaire est donné ci-dessous pour la famille de FPGA Spartan. La figure de droite fait apparaitre l’architecture interne du softcore MICROBLAZE. Ce processeur de type softcore a pour avantage de permettre aux concepteurs de systèmes complexes d’intégrer facilement de la flexibilité dans leurs systèmes. Cette flexibilité est obtenue à l’aide des outils de programmation. Cependant, ce processeur flexible possède une puissance de calcul assez faible. Spécialement pour la conception des SoC, Xilinx a proposé le MicroBlaze, un processeur RISC "soft IP" à 3 étages avec une architecture Harvard et avec 32 registres internes de 32 bits (Figure 1.9). Il dispose d’un bus d'instructions et de données internes et externes ((ILMB, DLMB, IOPB et DOPB). Le Processeur MicroBlaze, tout comme le NIOS, est très facilement configurable occupant selon le choix des options de 900 à 2600 éléments logiques et pouvant fonctionner sur une fourchette de fréquences à partir de 80MHz (exemple : en utilisant une Virtex5-LX50, avec un pipeline à 5 niveaux et sans MMU, le MicroBlaze occupant 1027 LUTs et fonctionne à 235 MHz). Le processeur comporte 70 options de configuration permettant à l’utilisateur de sélectionner ou de paramétrer les composants internes selon ses besoins. Parmi les options configurables, on peut citer : Un pipeline à 3 ou 5 niveaux, Utilisation des multiplieurs câblés du FPGA, Opérateur de division, Opérateur de décalage (Barrel Shifter), FPU (Floating Point Unit), Mémoires cache instructions et données, Logique de débug (hardware breakpoints). PAGE 4 PETITPA Cours FPGA 02/01/2014 Le bus utilisé avec le MicroBlaze est le bus OPB (On-chip Peripheral Bus). C'est un bus IBM Core-Connect utilisé aussi avec les processeurs PowerPC. Ce bus autorise un maximum de 16 maîtres et un nombre d'esclaves illimité. Il dispose d'une politique d'arbitrage (Bus multi-maîtres) paramétrable. Dans un système sur puce programmable à base de processeur MicroBlaze, le bus OPB est utilisé afin de connecter les périphériques dont les besoins en communication sont faibles. Autrement, Xilinx fournit le lien FSL (Fast Simplex Link) permettant des accès rapides (2 fronts d'horloge) des périphériques vers le MicroBlaze et vice versa (8 connexions FSL par MicroBlaze). Un autre type de bus LMB (Local Memory Bus) est utilisé pour accéder aux blocs RAM du FPGA. Dans le MicroBlaze, ce bus est utilisé pour les instructions et les données et il assure des accès rapides à la mémoire (1 front d'horloge). En plus, de nombreux périphériques sont fournis avec le MicroBlaze, afin de constituer un microcontrôleur complet et personnalisable. Il y a, entre autres : contrôleur mémoire (SRAM, Flash), contrôleur mémoire SDRAM, UART lite, Timer/compteur avec fonction PWM, interface SPI, contrôleur d'interruptions, GPIO (entrées-sorties génériques), convertisseurs A/N et N/A DeltaSigma, DMA, etc. Ces différents périphériques sont reliés par le bus PLB. 5) Les bus sur le softcore Microblaze Les blocs IP costumisables par l’utilisateur ainsi que ceux fournis par l’industriel sont habituellement attachés au bus PLB (Processor Local Bus, développé by IBM).Ce bus est utilisé sur les plateformes powerpc de chez motorola. Les nouveux systèmes de FPGA sont connectés en utilisant le bus AXIS4 (Advanced eXtensible Interface, développé par la société ARM Ltd.). PAGE 5 PETITPA Cours FPGA 02/01/2014 6) Le flot de conception XILINX Chez Xilinx, tout le flot de conception est regroupé sous la forme d'un seul environnement dit Xilinx Platform Studio (XPS). L’outil ISE L’outil ISE (Integrated System Evironment) est un logiciel proposé par la société Xilinx. Il est utilisé pour la gestion d’un flot de conception FPGA Ce logiciel permet de faire une saisie graphique ou une description VHDL/Verilog d’une architecture numérique, d’en réaliser une simulation afin de valider son fonctionnement et finalement la synthèse et l’implantation sur un circuit FPGA. L’outils EDK associé à XPS L’outil Xilinx XPS (Xilinx Platform Studio) comprend une large bibliothèque de blocs IP que l’on pourra intégrer dans le système en fonction de nos besoins. Ainsi, cet outil va nous permettre de construire un système SoPC à base d’un processeur embarqué (softcore ou hardcore), de ses périphériques associés comme par exemple les contrôleurs de mémoire SRAM et de mémoire SDRAM, contrôleur DMA (Direct Memory Access), etc. On peut également intégrer autant de périphériques que l’on veut, n’étant limité que par le nombre de broches et de cellules logiques du circuit FPGA. Le mapping mémoire et les interruptions utilisées et leur niveau du design sont fixés durant cette phase de conception. On peut aussi ajouter au design des accélérateurs matériels spécifiques qui vont être ainsi ajoutés comme étant des blocs IP externes. L’approche conjointe de codesign apparaît comme la possibilité de développer une partie de l’application avec un langage de description matériel et une autre partie en logiciel à l’aide du langage C. La répartition entre le développement matériel et le développement logiciel étant dépendant des choix du concepteur. L’outil SDK Dans l’objectif de tester l’environnement matériel par logiciel, Xilinx fournit l’outil SDK (Software Development Kit). Cet outil permet aux développeurs de faire tourner des applications logicielles écrites en C en générant des exécutables au format ELF (Executable and Linking Format) qui vont être chargés sur la carte par l’interface JTAG. PAGE 6 PETITPA Cours FPGA 02/01/2014 XPS EDK PAGE 7 PETITPA