Familles de composants programmables

FPGA

Version : 7.01 de novembre 1999
(Version allégée)

par J. Weiss

  • Introduction

  • Ce document analyse en détail quelques types d'architecture de composants programmables haute densité, regroupés dans 2 grandes familles :
    FPGA (Field Programmable Gate Array) :

    Xilinx
    (XC4000, XC5200, XC6200, SPARTAN, VIRTEX)
    Altera
    (FLEX 8000, FLEX 10K, FLEX 6000, APEX 20K)
    EPLD Complexes (Eraseable Programmable Logic Device)

    Altera (MAX7000, MAX9000)
    Xilinx (XC9500)

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

  • XC2000 : première génération de LCA (1985), elle comprend 2 produits d'une complexité allant de 600 à 1.500 portes logiques utilisables,
  • XC3000 : deuxième génération de LCA (1987), la gamme de produit est plus étoffée que la famille précédente et couvre une gamme de complexité allant de 1.000 à 6.000 portes logiques utilisables,
  • XC4000 : troisième génération de LCA (1991), cette famille couvre une gamme de complexité allant de 2.000 à 500.000 portes logiques utilisables,
  • XC5200 : quatrième génération de LCA (1995), cette famille couvre une gamme de complexité allant de 6.000 à 18.000 portes logiques utilisables.
  • XC6200 : cinquième génération de FPGA, cette nouvelle approche de composant programmable (1996) vise le créneau du "coprocessing", c'est à dire l'environnement de processeurs ; la gamme de complexité de la famille s'étend de 10.000 à 100.000 portes.
  • XC8100 : nouvelle orientation de Xilinx en 1996 : l'approche "mer de portes" mais Xilinx a abandonné cette voie en 1997.
  • SPARTAN : sixième génération de FPGA (1998), cette famille vise la souplesse d’utilisation et des performances élevées.
  • VIRTEX : septième génération de FPGA (1999), cette famille vise les très fortes capacités (4 millions de portes) et les hautes vitesses (> 100 MHz).

    La technologie employée est une technologie CMOS performante :

  • 2  µm avec 2 niveaux de métallisation en 1986,
  • 1 µm avec 2 niveaux de métallisation en 1991,
  • 0,8 µm avec 2 niveaux de métallisation en 1992,
  • 0,6 µm avec 3 niveaux de métallisation en 1995,
  • 0,5 µm avec 4 niveaux de métallisation en 1997,
  • 0,35 µm avec 4 niveaux de métallisation en 1998,
  • 0,22 µm avec 5 niveaux de métallisation en 1999.

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

  • Famille XC4000 (1991 - )
  • Famille XC5200 (1995 -)
  • Famille XC6200 (1996 - 1999)
  • Famille XC8100 (1996)
  • Famille SPARTAN (1998 - )
  • Famille VIRTEX (1999- )

    Retour vers le sommaire


    3 FPGA : Altera
    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 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.
    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.

    3.2 Configuration
    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é :

  • Famille FLEX8000 (1992 - )
  • Famille FLEX10K (1995 - )
  • Famille FLEX6000 (1997 - )
  • Famille APEX 20K (1999 - )

    Retour vers le sommaire

    Aller vers les CPLD