Home
Technologies
Architecture interne
Programmation
ASIC
Cartes de prototypage
Les fabricants
Conclusions
Glossaire
|
|
Architecture détaillée de la série XC4000 de Xilinx:
Introduction:
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.
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.
- 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.
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 (en mode DUAL port).
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).
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.
![](connexion.gif)
Connexions à usage général et détail d'une matrcie 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.
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.
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.
L'oscillateur à quartz.
|
|
|