WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

FPGA and Traffic Network Analysis

( Télécharger le fichier original )
par Jerry TEKOBON
Ecole Nationale Supérieure Polytechnique de Yaounde Cameroun - Ingénieur de Conception en Génie Electrique et Télécommunication 2007
  

précédent sommaire suivant

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

CHAPITRE 2 : LES COMPOSANTS FPGA (FIELD PROGRAMABLE GATE ARRAY)

2.1 Introduction U

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 macro fonctions) 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.

2.2 ULes ASICS (Application Specific Integrated Circuit)U

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ébut des 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 micro-ondes 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, 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 (Voir figure2.1)

ASIC

PERSONNALISES

SEMI-PERSONNALISES

Circuits pré caractérisés

Circuits à

la demande

Réseaux pré diffusés

Logiques programmables

FPGA

UFigure2.1 : Hiérarchie des circuits ASIC

2.2.1 ULes 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,


· · les réseaux prédiffusés.

2.2.1.1 ULes réseaux logiques programmablesU

Ce composant ne nécessite aucune étape technologique supplémentaire pour être personnalisé. Nous y trouvons les PAL/PLD, ce sont des circuits standard 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é.

2.2.1.2 ULes prédiffusés U

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. 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 macro cellules 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é.

2.2.2 ULes circuits personnalisésU

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.

2.2.2.1 ULes circuits à la demande

Les solutions circuit à la demande (qu'on appelle full custom en anglais) présentent l'avantage d'autoriser une meilleure optimisation du placement 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çons spécifiques 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és 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.

2.2.2.2 ULes circuits précaractérisésU

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éga cellules (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.

UAvantages et inconvénients de l'utilisation d'ASIC U

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é.

2.3 UFPGA (Field Programmable Gate Arrays) U [9]

2.3.1. UHistoriqueU
L'histoire des puces programmables connue plusieurs phases :
En 1975, les concepteurs commencent à remplacer des circuits logiques standards par des circuits programmables. Les fonctions réalisées sont majoritairement des interfaces et des transcodages.
Dans le courant des années 1980, la société Californienne Xilinx invente une nouvelle famille de puces programmable appelée FPGA.

Figure2.2 : Puce FPGA Xilinx
Dès 1985 des contrôleurs et des circuits périphériques complexes commencent à être implantés autour des microprocesseurs. Ces cartes sont utilisées de plus en plus pour effectuer du traitement du signal et dans le domaine des télécoms. De leur côté, les FPGA se développent.
En 1987, une première standardisation des langages de descriptions du hardware est créée. Cette standardisation permet d'étendre le design de circuit aux particuliers. En effet, avant cette standardisation, les entreprises utilisaient leur propre code propriétaire. Cela donna naissance à deux langages :
Le VHDL, IEEE.1076, facile à appréhender mais peu compact, principalement utilisé en Europe
Et le Verilog, proche du C, propriétaire jusqu'à son acceptation IEEE.1364 en 1995, principalement utilisé aux Etats-Unis.
Depuis les années 1995, la puissance des circuits logiques programmables FPGA permettent d'implanter en leur sein à la fois le microprocesseur (ou le DSP) et le pré ou post traitement associé.
Au début du XXIe siècle, le prix des puces FPGA commence à baisser et devient progressivement abordable pour le grand public. Parallèlement à cela, la modernisation des fonderies permet d'atteindre une finesse de gravure de plus en plus réduite, donc de créer des puces FPGA de plus en plus puissantes (fréquence en hausse et nombre de portes accrues).


Figure2.3 : Evolution du nombre de portes

Figure2.4 : Evolution de la fréquence d'horloge maximum (MHz) d'un compteur synchrone 16 bits

2.3.2. UUtilisation des puces FPGAU
Lors de leur création vers 1980, les puces FPGA ont tout d'abord su séduire les électroniciens. Ils y voyaient un moyen de prototypage rapide et peu cher. En effet, les puces FPGA peuvent êtres reprogrammés sans nécessiter de matériel lourd. Cela leur permet de tester un nouveau circuit sans avoir à racheter des composants ou pire de les reconcevoir à chaque amélioration.
Puis les informaticiens ont commencé à s'y intéresser de près comme moyen d'augmenter la rapidité de leur application en leur donnant une assise matérielle (accélération hardware). Depuis le Geforce 3 de nVidia (NV20), toutes les cartes graphiques du marché possèdent un circuit figé et une partie programmable (vertex shader et pixel shader).

Figure2.5 : vertex shader et pixel shader
Depuis quelque temps, un certain nombre de chercheurs intéressé par les principes d'évolution Darwinienne du hardware utilisent des puces FPGA dans leurs expériences. Elles sont pour eux intéressantes à plus d'un titre. Elles permettent de faire évoluer des algorithmes génétiques à des vitesses électroniques et de concevoir des processeurs dédiés par ces mêmes

techniques d'algorithmes génétiques.
Les FPGA ont été perçus par beaucoup comme une alternative à la fonte même d'un composant : les universités par exemple y voient un moyen concret d'enseigner le design digital. Les start-up de l'électronique peuvent à moindre coût prouver que leur idée est bonne et viable pour lever des fonds sans attendre un retour de fonderie qui mobilise des capitaux importants, et pour plus d'un mois la plupart de temps.
La technologie FPGA intéressa aussi l'armée de par la possibilité de programmation des puces en cours de fonctionnement. En effet, lors d'une guerre, la réactivité d'un radar d'avion de chasse par exemple est déterminante pour la survie du pilote. La possibilité de reprogrammer une puce de type FPGA permet à ce radar de s'adapter à n'importe quelle situation tout en ayant une accélération hardware permanente. Globalement, l'armée est intéressée par des puces FPGA pour les instruments de vols et les systèmes de communications militaires nécessitant la possibilité d'être reconfigurés et de fonctionner dans une large gamme de températures (les deux dernières puces de marque Altera, EP1S80 et EP1S60, peuvent fonctionner entre - 40° et 100° C).
Une puce FPGA de marque Xilinx fut également choisie par la Nasa pour l'exploration de Mars par les Rovers Spirit et Opportunity. Ces puces appartiennent à la famille Virtex et sont spécialement étudiées pour résister aux radiations solaires qui frappent Mars continuellement (la faible atmosphère qui entoure Mars ne peut stopper ces radiations et une puce classique serait détruite en peu de temps). Elle se charge de contrôler le bras articulé du Rover et les divers appareils de mesure qui le composent (une accélération hardware permet ici une plus grande précision). Ce type de puce fut utilisé pour d'autres missions spatiales tel que Mars orbiter (2005).

Figure2.6 : Rover Spirit sur Mars
De par leur prix de moins en moins élevé (une puce à la carte contenant 1 million de portes s'achète 15 dollars), de plus en plus de personnes voient un moyen de créer leur propres ordinateurs entièrement personnalisés à bas prix. Le hardware libre est né vers 2000. Les concepteurs digitaux en herbe peuvent acheter des puces FPGA puis créer leur propre design de puce et mettre ce design à disposition d'autres concepteurs. A l'instar du mouvement logiciel libre, une communauté de concepteurs passionnés se développe, permettant de s'affranchir des grands industriels de la micro-électronique.

2.3.3 UDescription du FPGAU

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 H TUfonctions combinatoiresUTH et des H TUfonctions séquentiellesUTH. 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. figure2.7). 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.

Figure2.7 :Architecture interne d'un FPGA.

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.

2.3.3.1 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.

Figure2.8: Cellule logique (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, plus une troisième fonction de trois variables indépendantes

· ou toute fonction à cinq variables

· ou toute fonction à quatre variables et une autre avec quelques fonctions à six variables

· ou certaines fonctions jusqu'à neufs 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 et un mode latch. 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, 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 ou 16x1bit. 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.

2.3.3.2 Les IOB (input output bloc)
La figure ci-dessous 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).

Figure2.9 : Input Output Block (IOB).

2.3.3.2.1Configuration 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.

2.3.3.2.2 Configuration en sortie

Nous distinguons les possibilité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.

2.3.3.3 Les différents types d'interconnexions [8]

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.

2.3.3.3.1 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.

Figure2.10 : 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.

2.3.3.3.2 Les interconnexions directes [8]

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.

Figure2.11 : 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.

2.3.3.3.3 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.

Figure2.12 : Les longues lignes

2.3.3.3.4 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.

2.3.3.4 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. Cet 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.

Figure2.13 : L'oscillateur à quartz

2.3.4 ULes caractéristiquesU [7]

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.

Device

Logic cells

Max logic

Gates

(No RAM)

Max RAM

Bits

(No logic)

Typical

Gate Range

(Logic and RAM)

CLB

Matrix

Total

CLBs

Number

Of

Flip-Flops

Max.

User I/O

XC4003E

238

3,000

3,200

2,000- 5,000

10×10

100

360

80

XC4005E/XL

466

5,000

6,272

3,000-9,000

14×14

196

616

112

XC4006E

608

6,000

8,192

4,000-12,000

16×16

256

768

128

XC4008E

770

8,000

10,368

6,000-15,000

18×18

324

936

144

XC4010E/XL

950

10,000

12,800

7,000-20,000

20×20

400

1,120

160

XC4013/XL

1368

13,000

18,432

10,000-30,000

24×24

578

1,536

192

XC4020E/XL

1862

20,000

25,088

13,000-40,000

28×28

784

2,016

224

XC4025E

2432

25,000

32,768

15,000-45,000

32×32

1,024

2,560

256

XC4028EX/XL

2432

28,000

32,768

18,000-50,000

32×32

1,024

2,560

256

XC4036EX/XL

3078

36,000

41,472

22,000-65,000

36×36

1,296

4,576

352

XC4044XL

3800

44,000

51,200

27,000-80,000

40×40

1,600

3,840

320

XC4052XL

4598

52,000

61,952

33,000-100,000

44×44

1,936

4,576

352

XC4062XL

5472

62,000

73,728

40,000-130,000

48×48

2,304

5,376

384

XC4085XL

7448

85,000

100,352

55,000-180,000

56×56

3,136

7,168

448

UTableau2.1 : URessources de la série 4000EU

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.

2.3.5 Technique de programmation des FPGA [7]

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. 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é

o 0 0 0 maître série

o 0 0 1 maître parallèle bas

o 0 1 1 maître parallèle haut

o 1 0 1 périphérique

o 1 1 1 esclave série

2.3.5.1 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

Figure2.14 : Mode maître série

Figure2.15 : 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 uP et peut-être configuré à partir de celui-ci

2.3.5.2 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.

2.3.6 Les outils de développement des FPGA [7]

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.

2.3.6.1 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 entré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, Alliance et ISE 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.

2.3.6.1.1 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.

2.3.6.1.2 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.

2.3.6.1.2.1 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.

2.3.6.1.2.2 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.

2.3.6.1.2.3 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.

2.3.6.2 Simulation fonctionnelle

ViewSim est une interface qui, à partir de vecteurs d'entrée (reset, clk...etc.) appliqués sur certains noeuds du schéma et à partir d'une modélisation des composants, va générer sur chaque noeud 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.

2.3.6.3 Optimisation, projection et placement / routage

2.3.6.3.1 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.

2.3.6.3.2 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.

2.3.6.3.3 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).

2.3.6.4 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.

2.3.6.5 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 :

Figure2.16 : Programmation des composants FPGA [7]

précédent sommaire suivant






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Entre deux mots il faut choisir le moindre"   Paul Valery