Copyright
© 2000-2015 LHERBAUDIERE


15 pages à l'impression
Hit-Parade version initiale 2000
AVERTISSEMENT dernière mise à jour
18 mars 2013

cliquez sur le mot avertissement pour connaitre une info essentielle avant de lire ce module et n'hésitez pas à cliquer en bas de page sur l'icone sommaire du site ça vous ouvrira d'autres perspectives

introduction au microprocesseur et circuits assimilés
cinquième partie (5/5) : les composants FPGA

asics (application specific integer circuit) les diverses familles
FPGA field programmable gate array un concept original
technique de programmation des FPGA ce qu'il faut savoir
les outils de programmation spécialisés
  une collection d'icônes pour visiter tout le site

Les progrès technologiques continus dans le domaine des circuits intégrés ont permis la réduction des coûts, de la consommation, et c'est maintenant un lieu commun d'affirmer que les circuits intégrés spécifiques d'une application ont permis une réduction de la taille des systèmes numériques ainsi que la réalisation de circuits de plus en plus complexes, tout en améliorant leurs performances et leur fiabilité. Aujourd'hui les techniques de traitement numérique occupent une place majeure dans tous les systèmes électroniques modernes grand public, professionnel ou de défense. De plus, les techniques de réalisation de circuits spécifiques, tant dans les aspects matériels (composants reprogrammables, circuits précaractérisés et bibliothèques de macrofonctions) que dans les aspects logiciels (placement-routage, synthèse logique) font désormais de la microélectronique une des bases indispensables pour la réalisation de systèmes numériques performants. Elle impose néanmoins une méthodologie de développement en CAO très structurée.

Nous allons examiner les diverses technologies utilisables pour la conception de circuits logiques avec leurs avantages et leurs inconvénients afin d'expliciter l'intérêt de la technologie FPGA.

Les ASICs (Application Specific Integer Circuit) [TAR99]

Dans un premier temps, nous allons rappeler quelques concepts autour des circuits intégrés pour applications spécifiques ASIC. Les circuits ASIC constituent la troisième génération de circuits intégrés qui a vu le jour au débutdes années 80. En comparaison des circuits intégrés standards et figés proposés par les fabricants, l'ASIC présente une personnalisation de son fonctionnement, selon l'utilisation, accompagnée d'une réduction du temps de développement, d'une augmentation de la densité d'intégration et de la vitesse de fonctionnement. En outre sa personnalisation lui confère un autre avantage industriel, c'est évidemment la confidentialité. Ce concept d'abord développé autour du silicium s'est ensuite étendu à d'autres matériaux pour les applications microondes ou très rapides (GaAs par exemple).

Par définition, les circuits ASIC regroupent tous les circuits dont la fonction peut être personnalisée d'une manière ou d'une autre en vue d'une application spécifique, par opposition aux circuits standards dont la fonction est définie et parfaitement décrite dans le catalogue de composants. Les ASIC peuvent être classés en plusieurs catégories selon leur niveau d'intégration [LUCA94], en fait un ASIC est défini par sa structure de base (réseau programmable, cellule de base, matrice, etc.). Sous le terme ASIC deux familles sont regroupées, les semi-personnalisés et les personnalisés.



Les circuits semi-personnalisés

Les semi-personnalisés sont des réseaux prédéfinis de transistors ou de fonctions logiques qui nécessitent une personnalisation de l'utilisateur pour réaliser la fonction désirée. Cette famille comprend : Les réseaux logiques programmables

Ce composant ne nécessite aucune étape technologique supplémentaire pour être personnalisé. Nous y trouvons les PAL/PLD, ce sont des circuits standards programmables par l'utilisateur grâce à différents outils de développement. La programmation consiste à établir des connexions en imposant un courant supérieur aux courants de fonctionnement normaux (claquage de fusibles ou de jonctions). Les circuits logiques programmables incluent un grand nombre de solutions, toutes basées sur des variantes de l'architecture des portes ET OU.
Nous y trouvons :
  • PAL (Programmable Array Logic) matrice ET programmable, matrice OU figée),
  • PLA (Programmable Logic Array) matrice ET ou matrice OU programmable,
  • EPLD (Erasable PLD) effaçables par rayons ultraviolet, ils peuvent être reprogrammer,
  • EEPLD (Electrically Erasable PLD) programmables et effaçables électriquement, ils peuvent être reprogrammés sur site. Les limites de l'architecture du PLD résident dans le nombre de bascules, le nombre de signaux d'entrées/sorties, la rigidité du plan logique ET OU et des interconnexions.
Précisons que ces composants très souples d'emploi sont limités à des fonctions numériques et adaptés à des productions de petites séries et ne présentent aucune garantie quant à la confidentialité.

Les prédiffusés

Les réseaux prédiffusés sont des circuits partiellement préfabriqués. L'ensemble des éléments (transistors, diodes, résistances, capacités, etc.) est déjà implanté sur le circuit suivant une certaine topologie, mais les éléments ne sont pas connectés entre eux (sauf au niveau diffusion). La réalisation des connexions dans le but de définir la fonction souhaitée est la tâche du concepteur, pour cela il dispose de bibliothèques de macrocellules et d'outils logiciels d'aide à la conception. A partir de cette liste d'interconnexions (netlist) le fondeur n'aura que quelques étapes technologiques à effectuer pour achever le circuit, c'est à dire le dépôt d'une ou plusieurs couches de métallisation.

Cette technique est intéressante sur le plan de la conception et de la fabrication, par contre elle présente l'inconvénient de ne pas permettre une optimisation en terme de densité de composants puisque les éléments de base sont préimplantés et pas forcément utilisés et que leur positionnement a priori n'est pas forcément optimal pour le but recherché.

Les circuits personnalisés

Ce sont des circuits non préfabriqués. Pour chaque application on optimise le circuit intégré, ce qui conduit à la création de son propre composant. Cette famille comprend :
  • les circuits à la demande,
  • les circuits précaractérisés.
Les circuits à la demande

Les solutions circuit à la demande (qu'on appelle full custom en anglais) présentent l'avantage d'autoriser une meilleure optimisation duplacement puisque celui-ci n'est pas prédéfini. On dispose d'une bibliothèque de modèles mathématiques de comportement et via un "compilateur de silicium" logiciel très sophistiqué on peut concevoir toute l'architecture du circuit en faire une validation logicielle (simulation logique) puis dans une avant dernière étape en déduire le dessin des divers masques de fabrication.

Toutes les opérations, de la conception à la fabrication, sont effectuées de façon spécifique adaptées aux exigences de l'utilisation. L'ensemble des critères techniques est au choix du concepteur, que ce soit la taille du composant, le nombre de broches, le placement du moindre transistor. C'est l'ASIC le plus optimisé car aucune contrainte ne lui est imposée. Le placement des blocs fonctionnels et le routage des interconnexions, même si ces opérations sont assistées par ordinateur, sont effectuées avec beaucoup plus d'interventions manuelles pour atteindre l'optimisation au niveau de chaque transistor. Cependant, les phases de mise au point sont longues et onéreuses, il va de soi que la rentabilisation des investissements de développement nécessite un fort volume de production.

Les circuits précaractérisés

Pour la réalisation de circuits précaractérisés on dispose d'une bibliothèque de circuits élémentaires que le fondeur sait fabriquer et dont il peut garantir les caractéristiques et on les associe pour réaliser le circuit à la demande. Ici encore on utilisera en fabrication des masques personnalisés pour chacune des couches diffusées et des métallisations.

Le concept est très semblable de celui des circuits à la demande. La seule différence réside dans la réalisation du schéma puisque l'on accède à une bibliothèque de cellules prédéfinies générant de très nombreuses fonctions élémentaires ou élaborées. Cette dernière constitue un véritable catalogue dans lequel le concepteur se sert pour constituer son schéma. Il existe trois types de cellules :

  • les cellules standards (standard cells) correspondent à la logique classique,
  • les mégacellules (megacells) peuvent être des blocs du type microprocesseur, périphérique,
  • les cellules compilées (compilable cells) dont les blocs RAM ou ROM. Il est nécessaire de personnaliser complètement la diffusion, et par conséquent de créer tous les masques. Cependant un avantage évident en découle : alors qu'il est impossible avec les prédiffusés d'utiliser à 100% le réseau de cellules ou portes, ce qui se traduit par une perte de silicium, les précaractérisés permettent d'exploiter complètement la surface du circuit.
Avantages et inconvénients de l'utilisation d'ASIC

D'une manière générale l'utilisation d'un ASIC conduit à de nombreux avantages provenant essentiellement de la réduction de la taille des systèmes. Il en ressort :
  • Réduction du nombre de composants sur le circuit imprimé. La consommation et l'encombrement s'en trouvent considérablement réduits.
  • Le concept ASIC par définition assure une optimisation maximale du circuit à réaliser. Nous disposons alors d'un circuit intégré correspondant réellement à nos propres besoins.
  • La personnalisation du circuit donne une confidentialité au concepteur et une protection industrielle.
  • Enfin, ce type de composant augmente la complexité du circuit, sa vitesse de fonctionnement et sa fiabilité.
Dans l'approche des circuits prédiffusés et personnalisés, l'inconvénient majeur réside dans le fait du passage obligatoire chez le fondeur ce qui implique des frais de développement élevés du circuit. En général le fondeur ne souhaite pas intervenir dans la phase de conception ; sa tâche est de réaliser le composant à partir des masques. Dans le but de réduire les surcoûts dus aux modifications, il s'avère nécessaire d'être rigoureux lors de la phase de développement de telle sorte que le circuit prototype fonctionne dès les premiers essais : c'est réussi dans environ 60% des cas. De plus dans de nombreuses applications, l'utilisateur doit concevoir les programmes de testabilité.


FPGA (field programmable gate arrays)

FPGA se traduit en français par circuits prédiffusés programmables. Contrairement aux circuits prédiffusés conventionnels, les circuits prédiffusés programmables ne demandent pas de fabrication spéciale en usine, ni de systèmes de développement coûteux. Inventés par la société Xilinx, le FPGA, dans la famille des ASICs, se situe entre les réseaux logiques programmables et les prédiffusés (cf.figure ci-dessus). C'est donc un composant standard combinant la densité et les performances d'un prédiffusé avec la souplesse due à la reprogrammation des PLD. Cette configuration évite le passage chez le fondeur et tous les inconvénients qui en découlent.

Nous décrirons une famille de FPGA, celle de Xilinx que nous avons utilisée. Il va de soi qu'il existe sur le marché nombre d'autres fondeurs qui ont développé des familles concurrentes ou complémentaires, parfois moins performantes, parfois mieux adaptées. Tout dépend aussi de l'utilisation que l'on en fait. Notre propos ici n'est pas de faire l'apologie d'un constructeur mais, strictement pédagogique, de présenter un type de technologie appelé à un brillant avenir.

L'architecture des circuits FPGA [XILI97]

est similaire à celle des circuits prédiffusés classiques. Bien qu'il existe actuellement plusieurs fabricants de circuits FPGA dont Xilinx et Altera sont les plus connus, et plusieurs technologies et principes organisationnels, nous illustrerons ce concept à partir des circuits Xilinx que nous avons employés. Nous renvoyons le lecteur intéressé vers les sites web des constructeurs pour obtenir une documentation récente présentant les derniers développements technologiques. Ceux-ci ne remettent pas en question ce qui suit, mais apportent simplement une amélioration des procédures d'emploi de ces circuits ainsi que de leurs caractéristiques. L'architecture, retenue par Xilinx, se présente sous forme de deux couches :
  • une couche appelée circuit configurable,
  • une couche réseau mémoire SRAM.
La couche dite 'circuit configurable' est constituée d'une matrice de blocs logiques configurables CLB permettant de réaliser des fonctions combinatoires et des fonctions séquentielles. Tout autour de ces blocs logiques configurables, nous trouvons des blocs entrées/sorties IOB dont le rôle est de gérer les entrées-sorties réalisant l'interface avec les modules extérieurs (cf. figure). La programmation du circuit FPGA appelé aussi LCA (logic cells arrays) consistera par le biais de l'application d'un potentiel adéquat sur la grille de certains transistors à effet de champ à interconnecter les éléments des CLB et des IOB afin de réaliser les fonctions souhaitées et d'assurer la propagation des signaux. Ces potentiels sont tout simplement mémorisés dans le réseau mémoire SRAM.


Figure : Architecture interne du FPGA

La configuration du circuit est mémorisée sur la couche réseau SRAM et stockée dans une ROM externe. Un dispositif interne permet à chaque mise sous tension de charger la SRAM interne à partir de la ROM. Ainsi on conçoit aisément qu'un même circuit puisse être exploité successivement avec des ROM différentes puisque sa programmation interne n'est jamais définitive. On voit tout le parti que l'on peut tirer de cette souplesse en particulier lors d'une phase de mise au point. Une erreur n'est pas rédhibitoire, mais peut aisément être réparée. La mise au point d'une configuration s'effectue en deux temps: une première étape purement logicielle va consister à dessiner puis simuler logiquement le circuit fini, puis lorsque cette étape sera terminée on effectuera une simulation matérielle en configurant un circuit réel et l'on pourra alors vérifier si le fonctionnement réel correspond bien à l'attente du concepteur, et si besoin est identifier les anomalies liées généralement à des temps de transit réels légèrement différents de ceux supposés lors de la simulation logicielle ce qui peut conduire à des états instables voire même erronés..


Figure : Cellule SRAM [XILI94]

Les circuits FPGA du fabricant Xilinx utilisent deux types de cellules de base :
  • les cellules d'entrées/sorties appelés IOB (input output bloc),
  • les cellules logiques appelées CLB (configurable logic bloc) Ces différentes cellules sont reliées entre elles par un réseau d'interconnexions configurable.
Les CLB (configurable logic bloc)

Les blocs logiques configurables sont les éléments déterminants des performances du FPGA. Chaque bloc est composé d'un bloc de logique combinatoire composé de deux générateurs de fonctions à quatre entrées et d'un bloc de mémorisation synchronisation composé de deux bascules D. Quatre autres entrées permettent d'effectuer les connexions internes entre les différents éléments du CLB. La figure ci-dessous, nous montre le schéma d'un CLB.


Figure : Cellules logiques (CLB)

Voyons d'abord le bloc logique combinatoire qui possède deux générateurs de fonctions F' et G' à quatre entrées indépendantes (F1...F4, G1...G4), lesquelles offrent aux concepteurs une flexibilité de développement importante car la majorité des fonctions aléatoires à concevoir n'excède pas quatre variables. Les deux fonctions sont générées à partir d'une table de vérité câblée inscrite dans une zone mémoire, rendant ainsi les délais de propagation pour chaque générateur de fonction indépendants de celle à réaliser. Une troisième fonction H' est réalisée à partir des sorties F' et G' et d'une troisième variable d'entrée H1 sortant d'un bloc composé de quatre signaux de contrôle H1, Din, S/R, Ec. Les signaux des générateurs de fonction peuvent sortir du CLB, soit par la sortie X, pour les fonctions F' et G', soit Y pour les fonctions G' et H'. Ainsi un CLB peut être utilisé pour réaliser
  • deux fonctions indépendantes à quatre entrées indépendantes
  • ou une seule fonction à cinq variables
  • ou deux fonctions, une à quatre variables et une autre à cinq variables.
L'intégration de fonctions à nombreuses variables diminue le nombre de CLB nécessaires, les délais de propagation des signaux et par conséquent augmente la densité et la vitesse du circuit. Les sorties de ces blocs logiques peuvent être appliquées à des bascules au nombre de deux ou directement à la sortie du CLB (sorties X et Y). Chaque bascule présente deux modes de fonctionnement : un mode 'flip-flop' avec comme donnée à mémoriser, soit l'une des fonctions F', G', H' soit l'entrée directe DIN. La donnée peut être mémorisée sur un front montant ou descendant de l'horloge (CLK). Les sorties de ces deux bascules correspondent aux sorties du CLB XQ et YQ. Un mode dit de " verrouillage " exploite une entrée S/R qui peut être programmée soit en mode SET, mise à 1 de la bascule, soit en Reset, mise à zéro de la bascule. Ces deux entrées coexistent avec une autre entrée laquelle n'est pas représentée sur la figure IV.4 appelée le global Set/Reset. Cette entrée initialise le circuit FPGA à chaque mise sous tension, à chaque configuration, en commandant toutes les bascules au même instant soit à '1', soit à '0'. Elle agit également lors d'un niveau actif sur le fil RESET lequel peut être connecté à n'importe quelle entrée du circuit FPGA.

Un mode optionnel des CLB est la configuration en mémoire RAM de 16x2bits ou 32x1bit. Les entrées F1 à F4 et G1 à G4 deviennent des lignes d'adresses sélectionnant une cellule mémoire particulière . La fonctionnalité des signaux de contrôle est modifiée dans cette configuration, les lignes H1, DIN et S/R deviennent respectivement les deux données D0, D1 (RAM 16x2bits) d'entrée et le signal de validation d'écriture WE. Le contenu de la cellule mémoire (D0 et D1) est accessible aux sorties des générateurs de fonctions F' et G'. Ces données peuvent sortir du CLB à travers ses sorties X et Y ou alors en passant par les deux bascules.

Les IOB (input output bloc)

La figure présente la structure de ce bloc. Ces blocs entrée/sortie permettent l'interface entre les broches du composant FPGA et la logique interne développée à l'intérieur du composant. Ils sont présents sur toute la périphérie du circuit FPGA. Chaque bloc IOB contrôle une broche du composant et il peut être défini en entrée, en sortie, en signaux bidirectionnels ou être inutilisé (haute impédance).


Figure : Input Output Block (IOB)

Configuration en entrée Premièrement, le signal d'entrée traverse un buffer qui selon sa programmation peut détecter soit des seuils TTL ou soit des seuils CMOS. Il peut être routé directement sur une entrée directe de la logique du circuit FPGA ou sur une entrée synchronisée. Cette synchronisation est réalisée à l'aide d'une bascule de type D, le changement d'état peut se faire sur un front montant ou descendant. De plus, cette entrée peut être retardée de quelques nanosecondes pour compenser le retard pris par le signal d'horloge lors de son passage par l'amplificateur. Le choix de la configuration de l'entrée s'effectue grâce à un multiplexeur (program controlled multiplexer). Un bit positionné dans une case mémoire commande ce dernier.

Configuration en sortie

Nous distinguons les posibilités suivantes :
  • inversion ou non du signal avant son application à l'IOB,
  • synchronisation du signal sur des fronts montants ou descendants d'horloge,
  • mise en place d'un " pull-up " ou " pull-down " dans le but de limiter la consommation des entrées sorties inutilisées,
  • signaux en logique trois états ou deux états. Le contrôle de mise en haute impédance et la réalisation des lignes bidirectionnelles sont commandés par le signal de commande Out Enable lequel peut être inversé ou non. Chaque sortie peut délivrer un courant de 12mA. Ainsi toutes ces possibilités permettent au concepteur de connecter au mieux une architecture avec les périphériques extérieurs.
Les différents types d'interconnexions

Les connexions internes dans les circuits FPGA sont composées de segments métallisés. Parallèlement à ces lignes, nous trouvons des matrices programmables réparties sur la totalité du circuit, horizontalement et verticalement entre les divers CLB. Elles permettent les connexions entre les diverses lignes, celles-ci sont assurées par des transistors MOS dont l'état est contrôlé par des cellules de mémoire vive ou RAM. Le rôle de ces interconnexions est de relier avec un maximum d'efficacité les blocs logiques et les entrées/sorties afin que le taux d'utilisation dans un circuit donné soit le plus élevé possible. Pour parvenir à cet objectif, Xilinx propose trois sortes d'interconnexions selon la longueur et la destination des liaisons. Nous disposons :
  • d'interconnexions à usage général,
  • d'interconnexions directes,
  • de longues lignes.
Les interconnexions à usage général

Ce système fonctionne en une grille de cinq segments métalliques verticaux et quatre segments horizontaux positionnés entre les rangées et les colonnes de CLB et de l'IOB.

........
Figure : Connexions à usage général et détail d'une matrice de commutation

Des aiguilleurs appelés aussi matrices de commutation sont situés à chaque intersection. Leur rôle est de raccorder les segments entre eux selon diverses configurations, ils assurent ainsi la communication des signaux d'une voie sur l'autre. Ces interconnexions sont utilisées pour relier un CLB à n'importe quel autre. Pour éviter que les signaux traversant les grandes lignes ne soient affaiblis, nous trouvons généralement des buffers implantés en haut et à droite de chaque matrice de commutation.

Les interconnexions directes

Ces interconnexions permettent l'établissement de liaisons entre les CLB et les IOB avec un maximum d'efficacité en terme de vitesse et d'occupation du circuit. De plus, il est possible de connecter directement certaines entrées d'un CLB aux sorties d'un autre.


Figure : Les interconnexions directes

Pour chaque bloc logique configurable, la sortie X peut être connectée directement aux entrées C ou D du CLB situé au-dessus et les entrées A ou B du CLB situé au-dessous. Quant à la sortie Y, elle peut être connectée à l'entrée B du CLB placé immédiatement à sa droite. Pour chaque bloc logique adjacent à un bloc entrée/sortie, les connexions sont possibles avec les entrées I ou les sorties O suivant leur position sur le circuit.

Les longues lignes

Les longues lignes sont de longs segments métallisés parcourant toute la longueur et la largeur du composant, elles permettent éventuellement de transmettre avec un minimum de retard les signaux entre les différents éléments dans le but d'assurer un synchronisme aussi parfait que possible. De plus, ces longues lignes permettent d'éviter la multiplicité des points d'interconnexion.


Figure : Les longues lignes

Performances des interconnexions

Les performances des interconnexions dépendent du type de connexions utilisées. Pour les interconnexions à usage général, les délais générés dépendent du nombre de segments et de la quantité d'aiguilleurs employés. Le délai de propagation de signaux utilisant les connexions directes est minimum pour une connectique de bloc à bloc. Quant aux segments utilisés pour les longues lignes, ils possèdent une faible résistance mais une capacité importante. De plus, si on utilise un aiguilleur, sa résistance s'ajoute à celle existante.

L'oscillateur à quartz

Placé dans un angle de la puce, il peut être activé lors de la phase de programmation pour réaliser un oscillateur. Il utilise deux IOB voisins, pour réaliser l'oscillateur dont le schéma est présenté ci-dessous. Cette oscillateur ne peut être réalisé que dans un angle de la puce où se trouve l'amplificateur prévu à cet effet. Il est évident que si l'oscillateur n'est pas utilisé, les deux IOB sont utilisables au même titre que les autres IOB.


Figure : L'oscillateur à quartz.

Les caractéristiques

Le tableau présenté ci-dessous désigne la quantité de ressources disponible pour les différents composants de la série 4000E proposée par le fabricant Xilinx.


Tableau : Ressources de la série 4000E

Ces composants sont disponibles dans tous types de boîtiers adaptés au nombre de sorties et à la technologie utilisée pour le montage des circuits FPGA sur des cartes électroniques. Nous pouvons utiliser des boîtiers de type PGA, PLCC et PQFP.


Technique de programmation des FPGA

Les circuits FPGA ne possèdent pas de programme résident. A chaque mise sous tension, il est nécessaire de les configurer. Leur configuration permet d'établir des interconnexions entre les CLB et IOB. Pour cela, ils disposent d'une RAM interne dans laquelle sera écrit le fichier de configuration. Le format des données du fichier de configuration est produit automatiquement par le logiciel de développement sous forme d'un ensemble de bits organisés en champs de données. Le FPGA dispose de quatre modes de chargement et de trois broches M0, M1, M2 lesquelles définissent les différents modes comme l'indique le tableau ci-dessous. Ces modes définissent les différentes méthodes pour envoyer le fichier de configuration vers le circuit FPGA, selon deux approches complémentaires :
  • configuration automatique, le circuit FPGA est autonome,
  • configuration externe, l'intervention d'un opérateur est nécessaire.
  • M0 M1 M2 Mode sélectionné
    • 0 0 0 maître série
    • 0 0 1 maître parallèle bas
    • 0 1 1 maître parallèle haut
    • 1 0 1 périphérique
    • 1 1 1 esclave série
Mode maître série

Le mode maître série utilise une mémoire à accès série de type registre à décalage commercialisée par le fabricant Xilinx. Le programme est préalablement chargé par le système de développement utilisé pour le circuit FPGA. Le FPGA génère tous les signaux de dialogue nécessaires pour la copie du contenu de la PROM dans sa RAM interne, lorsque la copie est terminée, il bascule le signal DONE pour le signaler au circuit. Comme nous pouvons le remarquer sur la figure, une seule PROM peut configurer plusieurs circuits FPGA avec la même configuration ou plusieurs PROM peuvent configurer plusieurs FPGA en chaîne où le premier des circuits FPGA est le maître et génère l'horloge. Les données en provenance des PROM sont envoyées aux autres circuits FPGA par la sortie DOUT de ce premier.




Figure : Schémas de programmation en mode maître série

On dispose aussi d'un mode maître-parallèle où le FPGA est relié en parallèle à une EPROM classique, de même qu'un mode passif type périphérique dans lequel le FPGA est considéré comme un périphérique de µP et peut-être configuré à partir de celui-ci

Mode esclave

Dans ce mode, le programme de configuration peut être envoyé à partir d'un PC, d'une station de travail ou à partir d'un autre circuit FPGA. Le circuit FPGA maître peut être interfacé à une mémoire en mode parallèle ou série sans apporter aucune modification au niveau du câblage des circuits FPGA esclaves. C'est souvent le mode exploité pour la mise au point d'une configuration.


Les outils de développement des FPGA

Xilinx a développé des logiciels de développement performants capables de fonctionner sur des stations de travail telles que Sun, Appolo, Dec et sur des PC AT disposant d'une mémoire suffisante. La programmation des circuits FPGA est réalisée à l'aide des logiciels Viewlogic (Workview Office 7.31)et Xact (Design Manager 6.01). Elle est décomposée en plusieurs étapes :
  • la synthèse logique,
  • la simulation fonctionnelle,
  • l'optimisation, la projection et le placement / routage,
  • la simulation temporelle,
  • la génération de fichier de configuration.
La synthèse logique

La synthèse logique peut s'effectuer de diverses manières avec différentes interfaces afin de générer le circuit électrique, parmi lesquelles nous pouvons citer :
  • une entrée de type équations logiques de " haut niveau ", de table de vérité et de machine d'état avec une interface comme ABEL,
  • une entée de type schématique " bas niveau " avec une interface comme ViewDraw,
  • une entrée de type textuelle " haut niveau " avec le VHDL à l'aide d'une interface comme ViewSynthesis, Synopsis et Alliance, ou le HDL de Verilog à l'aide d'une interface comme Cadence Opus.
Nous allons voir en détail la synthèse logique avec une entrée schématique et une entrée en VHDL.

Saisie de schéma

A l'aide de l'interface ViewDraw, la réalisation de circuits se fait à base de cellules standards (portes logiques précaractérisées). On décrit la structure d'un circuit à l'aide de connexions sur des cellules de base à partir d'une librairie. Il existe deux types de cellules dans la librairie Xilinx :
  • les soft-macros qui sont implantées en fonction des flips-flops et des générateurs de fonctions disponibles,
  • les hard-macros qui sont préroutées et utilisent complètement les CLB qu'elles occupent.
La saisie de schéma à partir de cellules de base permet un développement " bas niveau " qui rend difficile la réalisation de circuits complexes où chaque changement ou amélioration remet en cause toute la description. Cette contrainte a conduit à étudier des techniques de génération de circuits à partir de spécifications de " haut niveau " tel que le VHDL (VHSIC Hardware Description Language avec VHSIC : Very High Speed Integrated Circuits) qui se traduit en français par : langage de description de matériel traitant des circuits intégrés à très grande vitesse.

La synthèse en VHDL

La méthodologie [XILI98] [VIEW94] de la synthèse en VHDL se compose de trois étapes :
  • spécification en VHDL,
  • synthèse du code VHDL,
  • implantation physique.
Spécification en VHDL

Le langage VHDL est un langage de description de matériel qui permet de synthétiser des fonctions logiques complexes. A l'aide de ce langage, la première description définit la fonctionnalité du circuit en terme de blocs définis " haut niveau ". Progressivement, les blocs sont détaillés précisément jusqu'à une description proche des ressources matérielles. En effet, le langage VHDL autorise trois niveaux de description :

  • le niveau structurel décrit le câblage des composants élémentaires,
  • le niveau flot de données décrit les transformations d'un flot de données de l'entrée à la sortie,
  • le niveau comportemental décrit le fonctionnement par des blocs programmes appelés Processus qui échangent des données au moyen de signaux comprenant des instructions séquentielles.
Synthèse du code VHDL

La synthèse permet à partir d'une spécification VHDL, la génération d'une architecture au niveau transfert de registre RTL (register transfert level) qui permet l'ordonnancement et l'allocation de ressources sans une représentation physique, compilable par un outil de synthèse logique. Cette étape est réalisable à condition de se limiter à un sous ensemble du langage VHDL qui soit strictement synthétisable.

Implantation physique

La spécification VHDL est directement émulée sur un support matériel tel qu'un circuit FPGA en précisant la famille utilisée pour une implantation physique du circuit. La compilation du code VHDL en code FPGA permet de générer le schéma correspondant et une netlist (XNF) constituée d'une liste d'équations booléennes et d'informations portant sur les entrées / sorties du circuit. L'outil de synthèse ViewSynthesis ne permet pas de faire une simulation comportementale à partir du code VHDL, par conséquent il faut réaliser ces trois étapes à tous les niveaux de conception avant de faire une simulation fonctionnelle.

Simulation fonctionnelle

ViewSim est une interface qui, à partir de vecteurs d'entrée (reset, clk...etc.) appliqués sur certains nœuds du schéma et à partir d'une modélisation des composants, va générer sur chaque nœud du schéma des signaux représentant le fonctionnement réel du circuit. Nous pouvons visualiser la forme des signaux à l'aide de l'interface ViewTrace. La simulation fonctionnelle ne tient pas compte des capacités de liaison dues au routage entre les différentes cellules. Elle permet donc de vérifier uniquement la validité du circuit par rapport au cahier des charges d'un point de vue fonctionnel et non d'un point de vue temporel.

Optimisation, projection et placement / routage

Optimisation

Avant l'utilisation de la netlist, celle-ci est optimisée. Cette étape gère les problèmes de sortance des signaux par la duplication des fonctions logiques de sortance insuffisante, afin de multiplier les sortances. Les signaux inutilisés sont retirés, les expressions booléennes sont simplifiées, les signaux équivalents sont détectés.

Projection

La phase de projection dépend du circuit utilisé, les équations de la netlist sont transformées, regroupées en de nouvelles équations ayant un nombre d'arguments inférieur ou égal au nombre de paramètres du bloc logique correspondant à la famille de circuit utilisée.

Placement / routage

L'étape suivante consiste à attribuer les cellules (CLB) du circuit à chaque équation délivrée par la projection et à définir les connexions. L'algorithme de placement place physiquement les différentes cellules et les chemins d'interconnexion dessinés entre les cellules afin de faciliter le routage. Des directives jointes à la netlist permettent une bonne répartition des cellules Ces trois opérations sont réalisées par le logiciel Xact (Designer Manager)

Simulation temporelle

Il s'agit de vérifier la fonctionnalité du circuit en prenant en compte par un calcul estimatif les longueurs d'interconnexion et les retards apportés par les capacités parasites liées au partionnement et au routage. La simulation temporelle vérifie que la fonctionnalité n'a pas été modifiée par l'introduction des délais de propagation et reste conforme au cahier des charges.

Génération du fichier de configuration

La dernière étape consiste à générer un fichier de configuration appelé Bitstream dans une PROM. Ce fichier contient les informations fournies au composant FPGA Xilinx afin qu'il prenne la configuration souhaitée. Ci-dessous, l'organigramme représentant la procédure de programmation des circuits FPGA :


Figure : Programmation des composants FPGA

Conclusion

Dans ce chapitre, nous avons présenté les circuits de type FPGA dont nous précisons ici les principaux avantages :
  • Le premier argument est la souplesse de programmation qui permet l'emploi conjoint d'outils de schématique aussi bien que l'exploitation d'un langage de haut niveau tel VHDL. Ce qui permet de multiplier les essais, d'optimiser de diverses manières l'architecture développée, de vérifier à divers niveaux de simulation la fonctionnalité de cette architecture.
  • Le second argument est évidemment la nouvelle possibilité de reconfiguration dynamique partielle ou totale d'un circuit ce qui permet d'une part, une meilleure exploitation du composant, une réduction de surface de silicium employé et donc du coût, et d'autre part, une évolutivité assurant la possibilité de couvrir à terme des besoins nouveaux sans nécessairement repenser l'architecture dans sa totalité. L'un des points forts de la reconfiguration dynamique est effectivement de permettre de reconfigurer en temps réel en quelques microsecondes tout ou partie du circuit, c'est à dire de permettre de modifier la fonctionnalité d'un circuit en temps quasi réel. Ainsi le même CLB pourra à un instant donné être intégré dans un processus de filtrage numérique d'un signal et l'instant d'après être utilisé pour gérer une alarme. On dispose donc quasiment de la souplesse d'un système informatique qui peut exploiter successivement des programmes différents, mais avec la différence fondamentale qu'ici il ne s'agit pas de logiciel mais de configuration matérielle, ce qui est infiniment plus puissant.
  • Notons enfin que ces circuits n'ont pas vocation à concurrencer les super calculateurs, mais plutôt à offrir une alternative en fonction de critères comme l'encombrement, les performances et le prix, et sont de ce fait bien adaptés à des applications de qualité dans le domaine des systèmes ambulatoires ou nomades.
  • Enfin il semble que de plus en plus fréquemment les concepteurs de circuits ASIC préfèrent passer par l'étape intermédiaire d'un FPGA ce qui est moins risqué économiquement, puis une fois que le modèle FPGA est au point, il est alors relativement aisé de le retranscrire dans une architecture de type prédiffusé ou précaractérisés. Ce que tous les fondeurs de silicium savent effectivement faire pour en faire un circuit réellement personnalisé et confidentiel. Le FPGA n'étant évidemment pas un circuit très sécurisé sur le plan de la confidentialité puisqu'il suffit d'analyser le contenu de la ROM associée pour remonter à la schématique imaginée.
Précisons qu'un exemple de réalisation exploitant la facilité de reconfiguration dynamique d'un circuit FPGA est donné dans le chapitre traitement du signal, au sous chapitre réseau de neurones




[ASL97] A. Asli, Système ambulatoire de suivi de paramètres climatiques pour l'agronomie, thèse de doctorat, Rouen, 1997.

[AUM82] M. Aumiaux, L'emploi des microprocesseurs, Masson, Paris, 1982.

[CAB85] P. Cabanis, électronique digitale, Dunod, Paris, 1985.

[DIO93] M. Diop, Station climatologique pour applications agronomiques, thèse de doctorat, Rouen, 1993.

[DUT97] L. Dutrieux, D. Demigny, Logique programmable, Architecture des FPGA et CPLD, Méthodes de conception, le langage VHDL, Eyrolles, Paris, 1997.

[HUB95] M. Hubin & al., Systèmes de mesures pour l'aide à la décision en matière agronomique, MCEA'95 Mediterranean Conference on Electronics and Automatic control, Grenoble, 13-15 sept 1995, Vol3 pp 593-598

[MES91] M. Messud, La pratique du microprocesseur, conception des applications, Cépaduès, Toulouse, 1991.

[ODA93] B. Odant, Microcontrôleurs 8051 et 8052, Dunod, Paris, 1993.

[SHR98] B. Shriver and B. Smith, Anatomy of a high performance microprocessor: a systems perspective, IEEE Computer Soc. Press, N.Y., 1998.

[SJO97] S. Sjoholm and L. Lindh, VHDL for designers, Prentice Hall, London, 1997.

[TAR99] Y. Taright, Contribution à l'analyse de la pollution atmosphérique chronique ou accidentelle : concept de nez électronique ambulatoire, Thèse de doctorat, Rouen, 19 janvier 1999.

[VIE94] Viewlogic. VHDL reference manual. (1994)

[VIL83] A. Villard et M. Miaux, Systèmes à microprocesseur, ETSF, Paris, 1983.

[XIL94] Xilinx. The programmable logic, data book. Xilinx Inc, USA. (1994)

[XIL97] Xilinx. XC4000E and XC4000X Series, data book. Xilinx Inc, USA. (1997)

[XIL98] Xilinx. Synthesis and simulation design guide. Xilinx Inc, USA. (1998).


Hit-Parade