Familles de composants programmables
FPGA
Version : 7.01 de novembre 1999 par J. Weiss
(Version allégée)
Ces composants exploitent le même domaine d'utilisation, à savoir les systèmes séquentiels synchrones ; la cellule de base de ces composants est alors un élément mémoire (registre) associé à un module combinatoire ; la constitution du système consistera alors à associer ces cellules (figure 1).
Ces composants proposent une architecture suffisamment souple pour répondre à toutes les demandes (nombre de registres avec suffisamment d'entrées, ...) avec une recherche d'utilisation optimale des ressources ; pour chaque famille, on remarque que les nouvelles générations se traduisent par des confirmations ou des remises en causes de certaines options.
Figure 1 : structure de base d'un composant programmable
C'est dans la réalisation des cellules, dans leur association (routage) et dans les organes d'entrées/sorties que chaque constructeur va apporter des spécificités à ses produits.
Pour être performant, un composant programmable doit disposer de ressources logiques performantes (en terme de fréquence et de puissance logique) et d'un réseau d'interconnexions souple et rapide.
L'utilisateur s'intéresse au fonctionnement global du système, c'est à dire qu'il demande au composant programmable d'intégrer le plus efficacement possible la fonction à réaliser :
Figure 2 : fonctionnement séquentiel synchrone
2 FPGA : Xilinx
2.1 Architecture générale
Il s'agit d'une matrice carrée de cellules configurables pouvant être connectées entre elles par un réseau d'interconnexions ; la liaison vers l'extérieur du circuit se fait par des blocs d'entrées/sorties configurables en niveau logique, en impédance et en direction. La figure XC.1 présente l'architecture générale de ces circuits.
Figure XC.1 : Architecture générale de LCA
La taille, le type et le nombre de cellules varient suivant les familles de composants. Xilinx en est à sa sixième génération de composants FPGA ; la première (XC2000 de 1985) est maintenant obsolète. La tendance des dernières générations est de cibler certains créneaux porteurs du marché, comme la solution "bas coût" ou, à l'opposé la solution "haute performance". Ainsi, la panoplie présentée par le fabricant montre sa volonté de couvrir tous les segments de marché.
La technologie employée est une technologie CMOS performante :
Les composants sont proposés dans différents types de boîtiers (PLCC, PGA et QFP avec 44 à 680 broches), le nombre d'entrées/sorties va de 58 à 512.
Pour chaque famille, Xilinx propose une migration "facile" vers des versions masquées (ASIC), que l'on trouve sous les références : XC3300, XC4300, ....
2.2 Configuration
La mémorisation de la configuration du circuit se fait dans des cellules mémoires RAM statiques, c'est à dire 2 inverseurs montés tête-bêche (figure XC.2) qui constituent un montage bistable.
Figure XC.2 : cellule mémoire de configuration
La configuration est alors volatile, c'est à dire qu'il faut la redéfinir à chaque mise sous tension ; l'avantage de ce procédé est que l'on peut changer de configuration en très peu de temps (quelques ms). Le circuit dispose de plusieurs modes de configuration selon l'environnement, il peut être maître de sa configuration (master mode), dépendant d'un organe environnant _microprocesseur, par exemple_ (peripheral mode) ou dépendant d'un autre LCA (slave mode) ; pour chaque mode, il y a possibilité de transmettre les informations en série ou en parallèle (sur 8 bits).
Pour gérer ces différents modes, le LCA dispose d'un certain nombre de signaux de contrôle ; pour cela, il dispose de 2 niveaux de contrôle, les broches spécialisées assurant un contrôle permanent (Reset, …) et les broches permettant un contrôle temporaire (lors de la phase de configuration du composant) ; ces dernières peuvent être utilisées comme E/S normales () une fois le composant configuré.
La longueur du fichier binaire de configuration dépend du composant employé (famille et taille), cela varie de 17 kBits à 6 MBits.
La figure XC.3 présente les lignes de dialogue pour différents modes de configuration, en mode maître-série, en emploie une PROM sérielle (en boîtier 8 broches) et en mode maître-parallèle, on peut employer n'importe quel type d'EPROM de capacité suffisante. En mode peripheral, le LCA se comporte comme un périphérique de sortie classique (adresse d'écriture et lignes de contrôle).
Figure XC.3 : Modes de programmation de LCA
A partir d'une mémoire de configuration, il est possible de télécharger plusieurs LCA grâce à un montage "daisy-chain" (Figure XC.4) ; le premier LCA est en mode maître ou périphérique et les suivants sont en mode esclave (slave mode) ; le transfert des données se fait par Dout sous le contrôle de CCLK (généré par le LCA maître).
Figure XC.4 : exemple de chaînage de LCA
Afin de vérifier le bon fonctionnement et la bonne configuration du LCA, il est possible d'effectuer une lecture des informations de configuration (Read Back) ; cette lecture fournit un fichier dans lequel sont enregistrés les bits de configuration et l'état des bascules (CLB) à un instant donné ; l'opération de lecture ne perturbe pas le fonctionnement du circuit. Cette possibilité est intéressante dans 2 cas de figure :
Composants étudiés dans le polycopié :
Retour vers le sommaire
En 1995, Altera annonce le lancement de la famille FLEX10K qui constitue la deuxième génération de FPGA chez Altera ; cette famille vise le créneau de la forte densité d'intégration avec des capacités allant jusqu'à 250.000 portes utilisables.
3.1 Introduction
Fin 92, Altera (qui produit des EPLD et des MAX) lance sur le marché une famille de FPGA, FLEX 8000 (Flexible Logic Element matriX), dans le but de concurrencer les LCA de Xilinx et la famille AT6000 d'Atmel ; ce lancement coïncide avec l'arrivée sur le marché des EPLD de Xilinx.
En 1997, Altera annonce le lancement de sa troisième génération de FPGA, la famille FLEX6K, qui vise le créneau du composant bas coût de capacité moyenne (jusqu'à 24.000 portes utilisables).
Selon une enquête Dataquest, en 1994 25 % des conceptions d'ASIC portaient sur des complexités inférieures à 10.000 portes et 25 % entre 10.000 et 25.000 portes ; la famille FLEX, avec des complexités de composants jusqu'à 24.000 portes vise donc 50 % des conceptions d'ASIC.
En 1999, Altera lance la famille APEX20K avec, comme ambition de couvrir une gamme de complexité allant de 60.000 à 1.500.000 portes.
Le principe de programmation de la famille FLEX est celui des autres FPGA, à savoir le téléchargement des données de configuration dans des cellules SRAM (voir Xilinx) ; il existe 6 modes de téléchargement :
Figure FLEX.1 : modes de configuration de FLEX
Le composant peut être maître (active), en employant une EPROM, ou esclave (passive) en étant piloté par un processeur ou un autre FLEX ; une fois la configuration terminée (opération durant typiquement moins de 100 ms), seules 7 broches restent dédiées au contrôle du circuit.
Composants étudiés dans le polycopié :
Retour vers le sommaire
Aller vers les CPLD