Circuit logique programmable - Définition

Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article est disponible ici.

Introduction

FPGA de Xilinx (modèle Spartan XC3S400) avec 400 000 portes et une fréquence de 50 MHz

Un circuit logique programmable, ou réseau logique programmable, est un circuit intégré logique qui peut être reprogrammé après sa fabrication.

Il est composé de nombreuses cellules logiques élémentaires librement assemblables.

Ce type de composant électronique est communément désigné par les sigles anglais :

  • FPGA (field-programmable gate array, réseau de portes programmables in situ),
  • PLD (programmable logic device, circuit logique programmable),
  • EPLD (erasable programmable logic device, circuit logique programmable et effaçable),
  • CPLD (complex programmable logic device, circuit logique programmable complexe),
  • PAL (programmable array logic, réseau logique programmable),
  • PLA (programmable logic array, réseau logique programmable),
  • etc.

Bien que fondamentalement synonymes, ces termes ne sont généralement pas interchangeables dans le vocabulaire commercial des fabricants : FPGA désigne plutôt des composants à technologie RAM, EPLD des composants à technologie FLASH, PAL des composants à technologie fusible (voir § procédés technologiques).

Architecture matérielle

Les réseaux logiques programmables sont des circuits composés de nombreuses cellules logiques élémentaires librement assemblables.

Celles-ci sont connectées de manière définitive ou réversible par programmation, afin de réaliser la ou les fonctions numériques voulues. L'intérêt est qu'une même puce peut être utilisée dans de nombreux systèmes électroniques différents.

Certains modèles peuvent aussi comporter : de la mémoire d'usage général, des blocs « DSP » câblés, des boucles à verrouillage de phase pour la génération d'horloge.

FPGA

La plupart des grands FPGA modernes sont fondés sur des cellules SRAM aussi bien pour le routage du circuit que pour les blocs logiques à interconnecter.

Un bloc logique est de manière générale constitué d'une table de correspondance (LUT ou Look-Up-Table) et d'une bascule (Flip-Flop en anglais). La LUT sert à implémenter des équations logiques ayant généralement 4 à 6 entrées et une sortie. Elle peut toutefois être considérée comme une petite mémoire, un multiplexeur ou un registre à décalage. Le registre permet de mémoriser un état (machine séquentielle) ou de synchroniser un signal (pipeline).

Les blocs logiques, présents en grand nombre sur la puce (de quelques milliers à quelques millions en 2007) sont connectés entre eux par une matrice de routage configurable. Ceci permet la reconfiguration à volonté du composant, mais occupe une place importante sur le silicium et justifie le coût élevé des composants FPGA. La topologie est dite « Manhattan », en référence aux rues à angle droit de ce quartier de New York.

Les densités actuelles ne permettent plus un routage manuel, c'est donc un outil de placement-routage automatique qui fait correspondre le schéma logique voulu par le concepteur et les ressources matérielles de la puce. Comme les temps de propagation dépendent de la longueur des liaisons entre cellules logiques, et que les algorithmes d'optimisation des placeurs-routeurs ne sont pas déterministes, les performances (fréquence max.) obtenues dans un FPGA sont variables d'un design à l'autre. L'utilisation des ressources est par contre très bonne, et des taux d'occupation des blocs logiques supérieures à 90 % sont possibles.

Comme la configuration (routage et LUTs) est faite par des points mémoire volatils, il est nécessaire de sauvegarder le design du FPGA dans une mémoire non volatile externe, généralement une mémoire Flash série, compatible « JTAG ». Certains fabricants se distinguent toutefois par l'utilisation de cellules EEPROM pour la configuration, éliminant le recours à une mémoire externe, ou par une configuration par anti-fusibles (la programmation par une tension élevée fait « claquer » un diélectrique, créant un contact). Cette dernière technologie n'est toutefois pas reconfigurable.

Quelques fonctionnalités particulières disponibles sur certains composants :

  • blocs de mémoire supplémentaires (hors des LUT), souvent double-port, parfois avec mécanisme de FIFO,
  • multiplieurs câblés (coûteux à implémenter en LUT), voire blocs multiplieur-accumulateur pour traitements DSP,
  • cœur de microprocesseur enfoui (dit hard core),
  • blocs PLL pour synthétiser ou resynchroniser les horloges,
  • reconfiguration partielle, même en cours de fonctionnement,
  • chiffrement des données de configuration,
  • sérialiseurs/désérialiseurs dans les entrées-sorties, permettant des liaisons série haut-débit,
  • impédance contrôlée numériquement dans les entrées-sorties, évitant de nombreux composants passifs sur la carte.

CPLD

Les PAL, GAL, CPLD et EPLD, de conception plus ancienne, utilisent des « macrocellules » logiques, composées d'un réseau combinatoire de portes ET et OU afin d'implémenter des équations logiques. Des bascules sont disponibles seulement dans les blocs d'entrée-sortie. Un composant contient de quelques dizaines à quelques centaines de macrocellules.

Comme le routage est fixe, les temps de propagations sont bornés et permettent une fréquence de fonctionnement élevée et indépendante du design. Par contre, l'utilisation des ressources n'est pas optimale (tout terme non utilisé dans une équation logique équivaut à des portes perdues), avec des taux d'utilisation d'environ 25 %.

On distingue les CPLD des autres PLD car ils contiennent l'équivalent de plusieurs composants PLD, reliés par une matrice d'interconnexion.

Page générée en 0.108 seconde(s) - site hébergé chez Contabo
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
A propos - Informations légales
Version anglaise | Version allemande | Version espagnole | Version portugaise