Leçon 1 sur 22

Chapitre 1 — Introduction aux circuits logiques programmables

Présentation du chapitre

Les circuits logiques programmables occupent une place centrale dans la conception des systèmes numériques modernes. Ils permettent de réaliser, dans un même composant, des fonctions allant d’une simple logique de commande à des chaînes complètes de traitement du signal. Ce chapitre présente l’évolution de la logique câblée vers la logique programmable, les principales familles de composants, les domaines d’application des FPGA et les ressources qui constituent leur architecture interne.

Objectif général

Comprendre pourquoi et comment un circuit numérique peut être configuré après sa fabrication, puis identifier le composant programmable le plus adapté à une application donnée.

 

Objectifs pédagogiques

  • Définir la logique câblée et expliquer ses principales limites.
  • Présenter le principe de la logique programmable et de la reconfiguration matérielle.
  • Comparer le fonctionnement d’un microprocesseur, d’un microcontrôleur et d’un FPGA.
  • Distinguer les familles PROM, PLA, PAL, GAL, CPLD et FPGA.
  • Associer les ressources internes d’un FPGA aux fonctions numériques qu’elles réalisent.
  • Analyser plusieurs exemples d’utilisation afin de choisir une architecture appropriée.

Compétences visées

  • Lire un schéma fonctionnel simplifié d’un système numérique.
  • Identifier les contraintes de parallélisme, de latence, de consommation et de reconfiguration.
  • Justifier le choix d’un FPGA par rapport à une solution logicielle ou à une logique fixe.
  • Repérer les blocs logiques, mémoires, DSP, entrées-sorties et ressources d’horloge dans une architecture FPGA.

Sommaire du chapitre

1. 1.1 Logique câblée et logique programmable

2. 1.2 Familles de circuits programmables

3. 1.3 Domaines d’utilisation des FPGA

4. 1.4 Architecture générale d’un FPGA

5. Travaux dirigés et corrections indicatives

6. Synthèse et glossaire

Idée directrice

Un FPGA ne se programme pas comme un ordinateur classique : on configure une organisation matérielle capable d’exécuter de nombreuses opérations simultanément.

 

1.1 Logique câblée et logique programmable

1.1.1 Définition de la logique câblée

La logique câblée désigne une réalisation dans laquelle la fonction numérique est déterminée directement par la nature des composants utilisés et par leurs connexions physiques. Les portes logiques, bascules, compteurs, multiplexeurs et autres circuits intégrés sont assemblés sur une carte afin d’obtenir une fonction précise. Une fois la carte fabriquée, la fonction ne peut être modifiée qu’en changeant le câblage ou en remplaçant des composants.

Dans une logique câblée simple, chaque opération possède un équivalent matériel visible : une porte ET réalise une conjonction logique, un compteur réalise une séquence de comptage, et un multiplexeur sélectionne une entrée. Cette approche est intuitive et peut être très efficace pour une fonction stable, limitée et produite en grande série.

Caractéristiques essentielles

  • La fonction est fixée par le schéma électrique et le routage du circuit imprimé.
  • Le fonctionnement est naturellement parallèle : plusieurs portes peuvent commuter en même temps.
  • La modification d’une fonction exige une intervention matérielle.
  • Le temps de propagation dépend des composants et du nombre de niveaux logiques traversés.
  • La maintenance devient difficile lorsque le nombre de composants et d’interconnexions augmente.

Cycle typique d’une réalisation en logique câblée

1

Spécification

 

2

Schéma logique

 

3

Choix des composants

 

4

Câblage / PCB

 

5

Fonction fixe

 

Exemple

Un système d’alarme réalisé avec des portes ET, OU et NON peut combiner plusieurs capteurs. Si la règle de déclenchement change, le concepteur doit modifier le schéma ou le circuit imprimé.

 

1.1.2 Limites des circuits réalisés avec des composants discrets

Les composants discrets et les circuits logiques standards restent adaptés aux montages simples. Toutefois, leur utilisation devient rapidement contraignante lorsqu’un système doit traiter de nombreuses entrées, intégrer plusieurs fonctions, évoluer au cours de son cycle de vie ou respecter des contraintes sévères de dimensions et de consommation.

Complexité du câblage

Chaque nouvelle fonction nécessite des composants et des connexions supplémentaires. Le nombre de pistes augmente, les risques d’erreur de routage deviennent plus importants et le diagnostic d’une panne est plus long. Une modification mineure de la logique peut imposer une nouvelle version du circuit imprimé.

Encombrement et consommation

Un assemblage composé de nombreux boîtiers occupe une surface importante. Les interfaces entre composants consomment également de l’énergie, car les capacités des pistes et des broches doivent être chargées et déchargées à chaque commutation. L’intégration de plusieurs fonctions dans un composant programmable réduit généralement le nombre de boîtiers et la longueur des interconnexions.

Fiabilité et maintenance

Plus un système comporte de composants, de soudures et de connecteurs, plus le nombre de points de défaillance potentiels est élevé. La maintenance exige une documentation précise du câblage, et certaines références peuvent devenir obsolètes.

Évolutivité limitée

Une logique câblée est peu flexible face à une évolution du cahier des charges. L’ajout d’une fonction, d’un protocole ou d’une nouvelle règle de décision peut nécessiter une refonte complète. Cette rigidité est particulièrement pénalisante lors du prototypage ou lorsque les normes évoluent.

Limite

Conséquence technique

Conséquence projet

Nombre élevé de composantsDavantage de pistes, de soudures et de délais de propagationCarte plus grande et fabrication plus coûteuse
Fonction figéeModification impossible sans intervention physiqueTemps de développement plus long lors d’une évolution
Interconnexions externesBruit, consommation et risques de panne accrusValidation et maintenance plus complexes
Réutilisation réduiteLe schéma est souvent spécifique à une applicationFaible capitalisation entre projets
ObsolescenceRemplacement difficile de certaines référencesRisque sur la durée de vie du produit

 

1.1.3 Principe de la logique programmable

La logique programmable repose sur un circuit intégré contenant des ressources logiques et des interconnexions configurables. Le fabricant produit une structure matérielle générique ; le concepteur définit ensuite la fonction à réaliser en chargeant des informations de configuration. Cette configuration indique quelles opérations logiques doivent être réalisées, comment les blocs internes sont connectés et quelles broches sont utilisées.

La fonction est généralement décrite avec un langage de description matérielle, tel que VHDL. Des outils logiciels analysent cette description, la synthétisent en ressources logiques, effectuent le placement et le routage, puis produisent un fichier de configuration. Ce fichier est transféré dans le composant programmable.

Chaîne simplifiée de conception d’une logique programmable

1

Cahier des charges

 

2

Description VHDL

 

3

Synthèse logique

 

4

Placement-routage

 

5

Fichier de configuration

 

6

Circuit opérationnel

 

Configuration et programmation : une nuance importante

Dans le langage courant, on parle de programmation d’un FPGA. Techniquement, il s’agit surtout de configuration matérielle : le fichier chargé définit des chemins de données, des registres, des opérateurs et des connexions qui fonctionneront en parallèle. Le composant n’exécute pas nécessairement une liste d’instructions comme un processeur ; il réalise directement la structure matérielle décrite.

ZONE DE PSEUDO-CODE — Traitement séquentiel typique d’un processeur

DEBUT

    TANT_QUE le système est actif FAIRE

        lire_capteur_1()

        lire_capteur_2()

           calculer_decision()

           mettre_a_jour_sortie()

    FIN_TANT_QUE

FIN

Les opérations sont présentées dans un ordre d’exécution. Le processeur partage ses ressources de calcul entre les tâches.

 

 

ZONE DE PSEUDO-CODE — Organisation parallèle équivalente dans un FPGA

DEBUT_CONFIGURATION

    bloc_A  <- lecture_et_filtrage(capteur_1)      // actif en continu

    bloc_B  <- lecture_et_filtrage(capteur_2)      // actif en continu

    bloc_C  <- decision(bloc_A, bloc_B)            // actif en continu

    bloc_D  <- commande_sortie(bloc_C)             // actif en continu

FIN_CONFIGURATION

Ce pseudo-code illustre une organisation matérielle : les blocs existent simultanément et échangent des signaux.

 

 

À retenir

Le parallélisme d’un FPGA provient de la duplication réelle des ressources matérielles. Deux additions décrites dans deux branches indépendantes peuvent être réalisées au même instant par deux additionneurs distincts.

 

1.1.4 Avantages de la reconfiguration matérielle

La reconfiguration est la capacité à modifier la fonction du composant après sa fabrication. Selon la technologie, elle peut être effectuée une seule fois, plusieurs fois hors fonctionnement, au démarrage ou même partiellement pendant que le reste du système continue de fonctionner.

Flexibilité fonctionnelle

Une même carte peut recevoir plusieurs versions de la logique. Il devient possible de corriger une erreur, d’ajouter une fonctionnalité ou d’adapter le produit à différents clients sans modifier le matériel principal.

Réduction du temps de développement

Le concepteur peut simuler et modifier la description matérielle avant de lancer une nouvelle synthèse. Cette démarche accélère le prototypage et réduit le nombre d’itérations de fabrication de cartes ou de circuits intégrés spécifiques.

Parallélisme et faible latence

Les traitements sont organisés sous forme de pipelines et de blocs parallèles. Un FPGA peut ainsi fournir un débit élevé et une latence déterministe, particulièrement utile pour le traitement du signal, la commande rapide et les communications numériques.

Intégration

Un FPGA peut regrouper des fonctions auparavant réparties sur plusieurs circuits : logique de contrôle, interfaces de communication, mémoires, générateurs de signaux, traitement numérique et parfois processeurs intégrés. Cette intégration réduit l’encombrement et simplifie les connexions externes.

Protection contre l’obsolescence

Lorsqu’un composant logique standard devient indisponible, sa fonction peut parfois être reproduite dans un FPGA ou un CPLD. La description VHDL constitue alors une forme de capitalisation indépendante d’une référence précise.

Avantage

Apport principal

Exemple

ReprogrammationModification de la fonction sans changer la carteMise à jour d’un protocole de communication
ParallélismePlusieurs opérations réalisées simultanémentFiltrage de plusieurs voies de capteurs
DéterminismeTemps de traitement prévisibleCommande moteur à période fixe
IntégrationRéduction du nombre de composantsContrôleur, interfaces et logique dans un même FPGA
PrototypageValidation rapide d’une architecturePrévalidation d’un futur circuit ASIC
PersonnalisationAdaptation d’un même matériel à plusieurs produitsVariantes d’équipement automobile

 

Limites à connaître

La logique programmable n’est pas automatiquement la meilleure solution. Les FPGA peuvent être plus coûteux et plus énergivores qu’un circuit intégré spécifique produit en grande série. Ils exigent également une méthodologie rigoureuse de conception synchrone, de vérification et d’analyse temporelle. Le choix doit donc considérer le volume de production, la fréquence, la consommation, la complexité, les délais et la possibilité d’évolution.

1.1.5 Comparaison entre microprocesseur, microcontrôleur et FPGA

Le microprocesseur, le microcontrôleur et le FPGA sont trois solutions différentes pour mettre en œuvre un système numérique. Ils peuvent être concurrents pour certaines applications, mais ils sont souvent complémentaires.

Microprocesseur

Un microprocesseur est principalement une unité de calcul destinée à exécuter des instructions stockées en mémoire. Il dispose généralement de ressources puissantes, d’une gestion avancée de la mémoire et peut faire fonctionner un système d’exploitation. Les applications sont développées en langage logiciel. Il est adapté aux traitements complexes, aux interfaces utilisateur et aux tâches nécessitant une grande flexibilité logicielle.

Microcontrôleur

Un microcontrôleur regroupe sur une même puce un cœur de processeur, de la mémoire et des périphériques tels que temporisateurs, convertisseurs analogique-numérique, interfaces série et ports d’entrée-sortie. Il exécute un programme séquentiel et convient aux systèmes embarqués de contrôle. Son coût et sa consommation sont généralement faibles.

FPGA

Un FPGA contient des blocs logiques, des bascules, des mémoires, des blocs arithmétiques et un réseau d’interconnexion configurable. Au lieu d’exécuter uniquement un programme sur une architecture fixe, il permet de construire une architecture matérielle adaptée au besoin. Il est particulièrement performant pour le parallélisme, les interfaces personnalisées et les traitements à faible latence.

Critère

Microprocesseur

Microcontrôleur

FPGA

NatureArchitecture de calcul généralOrdinateur embarqué intégréMatrice matérielle configurable
Mode de fonctionnementExécution d’instructions, souvent avec OSExécution d’un programme embarquéFonctions matérielles parallèles
ParallélismePrincipalement par cœurs, SIMD ou accélérateursLimité par le cœur et les périphériquesTrès élevé et personnalisable
LatenceVariable, dépend du logiciel et de l’OSFaible à modéréeTrès faible et déterministe
PériphériquesSouvent externes ou via chipsetNombreux périphériques intégrésInterfaces créées ou instanciées selon le besoin
DéveloppementC/C++, systèmes, bibliothèquesC/C++, assembleur, RTOSVHDL/Verilog, synthèse et contraintes
Mise à jourLogicielleLogicielleReconfiguration matérielle
ConsommationSouvent élevée pour les modèles puissantsGénéralement faibleVariable, dépend de l’architecture et de l’activité
Usage typiquePC, calcul, applications richesCommande, capteurs, objets embarquésTraitement rapide, interfaces, accélération

 

Choix selon le besoin

ZONE DE PSEUDO-CODE — Aide simplifiée au choix d’une plateforme

SI le traitement nécessite un système d'exploitation et des applications riches ALORS

    choisir un microprocesseur

SINON SI la tâche est surtout du contrôle avec capteurs et périphériques standards ALORS

    choisir un microcontrôleur

SINON SI la tâche exige un fort parallélisme, une interface personnalisée ou une faible latence ALORS

    choisir un FPGA

SINON

    étudier une architecture hybride

FIN_SI

Cette règle est indicative. Le coût, la consommation, les compétences disponibles et le volume de production doivent aussi être évalués.

 

 

Architectures hybrides

De nombreux systèmes modernes associent un processeur et un FPGA. Le processeur exécute le système d’exploitation, la communication réseau et les fonctions de haut niveau ; le FPGA réalise les traitements critiques, les interfaces temps réel ou l’accélération. Certains circuits intègrent directement ces deux mondes dans un même boîtier.

Exemple d’architecture hybride

Dans une caméra intelligente, un processeur peut gérer le réseau et l’interface utilisateur, tandis que le FPGA réalise l’acquisition vidéo, le prétraitement des pixels et la synchronisation des capteurs.

 

1.2 Familles de circuits programmables

Les circuits logiques programmables ont évolué depuis des mémoires simples utilisées comme tables de vérité jusqu’aux FPGA actuels capables d’intégrer des millions d’éléments logiques. Chaque famille se distingue par la structure de ses plans logiques, sa capacité, sa technologie de configuration et son domaine d’utilisation.

1.2.1 PROM — Programmable Read-Only Memory

Une PROM est une mémoire morte programmable dont les adresses peuvent être considérées comme des entrées logiques et les bits de données comme des sorties. Pour chaque combinaison d’entrées, la mémoire fournit un mot de sortie. Elle peut donc mettre en œuvre une ou plusieurs fonctions combinatoires sous forme de table de vérité.

Principe

Le décodeur d’adresses génère une ligne correspondant à chaque combinaison d’entrée. Le contenu programmé de la mémoire détermine les sorties. La PROM possède ainsi un plan de décodage fixe et un plan de connexions de sortie programmable.

Avantages et limites

  • Description directe par table de vérité.
  • Possibilité de réaliser plusieurs sorties pour les mêmes entrées.
  • Utilisation simple pour des fonctions combinatoires de petite taille.
  • Capacité rapidement gaspillée lorsque peu de combinaisons sont utiles.
  • Absence de ressources séquentielles avancées dans le principe de base.

Exemple d’utilisation

Un décodeur de caractères ou une table de conversion peut être réalisé en stockant, pour chaque code d’entrée, le motif de sortie correspondant.

 

1.2.2 PLA — Programmable Logic Array

Un PLA comporte généralement un plan ET programmable suivi d’un plan OU programmable. Les variables d’entrée et leurs compléments peuvent être combinés pour créer des termes produits, puis ces termes sont additionnés logiquement pour former les sorties. Cette structure correspond naturellement aux expressions booléennes sous forme somme de produits.

Souplesse

Le caractère programmable des deux plans permet de partager des termes logiques entre plusieurs sorties. Le PLA est donc plus souple qu’une structure dont un des plans est fixe. En contrepartie, il peut être plus complexe, plus lent et plus coûteux.

Exemple logique

Pour réaliser F₁ = A·B + ¬A·C et F₂ = A·B + B·C, le terme A·B peut être généré une seule fois dans le plan ET puis utilisé par les deux sorties dans le plan OU.

1.2.3 PAL — Programmable Array Logic

Le PAL utilise généralement un plan ET programmable et un plan OU fixe. Cette simplification réduit la flexibilité par rapport au PLA, mais améliore la vitesse, le coût et la prévisibilité. Chaque sortie dispose d’un nombre limité de termes produits.

Macrocellules

Selon les familles, les sorties peuvent être combinatoires ou enregistrées par une bascule. Les macrocellules regroupent les portes de combinaison, la bascule éventuelle, la sélection de polarité et la commande de sortie.

  • Architecture régulière et temps de propagation relativement prévisible.
  • Bonne adaptation aux décodeurs, commandes et petites machines d’états.
  • Nombre de termes produits limité par sortie.
  • Programmation souvent définitive dans les premières générations.

1.2.4 GAL — Generic Array Logic

Le GAL reprend le principe des PAL en utilisant une technologie électriquement effaçable et reprogrammable. Il peut souvent remplacer plusieurs références de PAL grâce à des macrocellules configurables. Cette reprogrammabilité facilite le développement et la correction.

Intérêt historique et pédagogique

Les GAL ont largement servi à intégrer des logiques de décodage, des machines d’états et des interfaces simples. Leur architecture permet de comprendre les notions de termes produits, de macrocellules et de logique enregistrée qui se retrouvent dans les composants plus complexes.

1.2.5 CPLD — Complex Programmable Logic Device

Un CPLD regroupe plusieurs blocs logiques de type PAL ou macrocellules, reliés par une matrice d’interconnexion programmable. Il offre une capacité supérieure à celle d’un GAL et conserve souvent une architecture à granularité relativement large.

Caractéristiques

  • Temps de propagation global souvent prévisible grâce à une interconnexion structurée.
  • Configuration fréquemment non volatile : le circuit est opérationnel immédiatement après la mise sous tension.
  • Bonne adaptation aux logiques de contrôle, au décodage, à l’adaptation de bus et aux machines d’états.
  • Capacité et ressources de calcul généralement inférieures à celles d’un FPGA moderne.

Exemples

Un CPLD peut gérer la séquence de démarrage d’une carte, le contrôle de plusieurs alimentations, l’arbitrage entre bus, la conversion de niveaux logiques ou le remplacement d’une logique standard devenue obsolète.

1.2.6 FPGA — Field-Programmable Gate Array

Un FPGA est une matrice de blocs logiques configurables répartis sur la puce et reliés par un réseau d’interconnexion programmable. Des ressources spécialisées complètent cette matrice : mémoires internes, multiplicateurs, blocs DSP, transcepteurs rapides, gestionnaires d’horloge et parfois processeurs.

Granularité fine et capacité

La logique de base est souvent construite autour de tables de correspondance, de bascules et de multiplexeurs. Cette granularité fine permet de réaliser une grande diversité de circuits. Les FPGA modernes peuvent accueillir des architectures complexes, depuis une interface simple jusqu’à un système complet comprenant des processeurs logiciels.

Configuration

De nombreux FPGA utilisent une mémoire de configuration volatile de type SRAM et doivent charger un fichier au démarrage depuis une mémoire externe ou un contrôleur. D’autres technologies reposent sur une mémoire Flash ou des antifusibles. La technologie influence la reprogrammabilité, le démarrage, la consommation et la sécurité.

Évolution fonctionnelle des familles

1

PROM — Table de vérité

 

2

PLA/PAL — Plans logiques

 

3

GAL — Macrocellules reprogrammables

 

4

CPLD — Blocs logiques structurés

 

5

FPGA — Matrice + ressources spécialisées

 

Comparaison synthétique

Famille

Structure dominante

Reprogrammation

Capacité relative

Atouts

Usages typiques

PROMDécodeur fixe + contenu programmableSelon technologieTrès faibleTable de vérité directeDécodage, conversion
PLAPlan ET et plan OU programmablesVariableFaibleSouplesse des équationsLogique combinatoire
PALPlan ET programmable, plan OU fixeSouvent limitée historiquementFaibleRapidité et simplicitéDécodage, contrôle
GALMacrocellules de type PALÉlectrique, multipleFaibleRéutilisable et flexibleMachines d’états simples
CPLDBlocs de macrocellules + interconnexionGénéralement multipleMoyenneDémarrage rapide, timing prévisibleContrôle de carte, bus
FPGALUT, bascules, routage et blocs dédiésMultipleÉlevée à très élevéeParallélisme et intégrationDSP, vidéo, accélération

 

Choisir une famille

Le choix dépend de la complexité logique, de la nécessité de mémoriser un état, de la fréquence, du nombre d’entrées-sorties, du démarrage, du coût et de la possibilité de modifier la fonction. Pour une petite logique de contrôle devant être immédiatement active à la mise sous tension, un CPLD peut être adapté. Pour un traitement massif, un pipeline vidéo ou une interface rapide, un FPGA est généralement plus approprié.

ZONE DE PSEUDO-CODE — Sélection indicative d’une famille programmable

SI la fonction est une petite table de correspondance ALORS

    envisager PROM ou ROM

SINON SI la logique est petite et principalement combinatoire ALORS

    envisager PLA, PAL ou GAL

SINON SI la logique de contrôle exige un démarrage immédiat et un timing prévisible ALORS

    envisager CPLD

SINON

    envisager FPGA

FIN_SI

Le choix réel doit aussi tenir compte de la disponibilité des composants et des outils de développement.

 

 

1.3 Domaines d’utilisation des FPGA

Les FPGA sont utilisés lorsque l’application bénéficie d’un traitement parallèle, d’une latence faible, d’un débit élevé, d’une interface matérielle spécifique ou d’une capacité de mise à jour. Ils peuvent être employés seuls ou comme accélérateurs associés à un processeur.

1.3.1 Traitement numérique du signal

Le traitement numérique du signal exige souvent la répétition rapide d’opérations telles que multiplications, additions, accumulations, filtrages et transformations. Les FPGA disposent de blocs DSP et de mémoires internes permettant de construire des pipelines capables de produire un résultat à chaque cycle d’horloge.

Exemples de fonctions

  • Filtres FIR et IIR
  • Transformée de Fourier rapide
  • Modulation et démodulation
  • Traitement multivoie
  • Acquisition et génération de signaux

Illustration

Un filtre FIR peut affecter un multiplicateur à chaque coefficient puis additionner les produits dans une structure parallèle ou pipelinée.

 

1.3.2 Télécommunications

Les équipements de télécommunications traitent des flux continus et doivent respecter des protocoles stricts. Les FPGA réalisent les interfaces physiques, le codage de ligne, la synchronisation, la correction d’erreurs et certains traitements de couche supérieure.

Exemples de fonctions

  • Stations de base
  • Radios logicielles
  • Réseaux Ethernet rapides
  • Codage et décodage de canal
  • Formation de faisceaux d’antennes

Illustration

Une plateforme radio peut être mise à jour pour supporter une nouvelle forme d’onde sans remplacer toute la carte.

 

1.3.3 Systèmes embarqués

Dans un système embarqué, le FPGA peut regrouper des fonctions de contrôle, des interfaces et des accélérateurs. Il est utile lorsque les périphériques standards d’un microcontrôleur ne suffisent pas ou lorsque plusieurs événements doivent être traités avec un déterminisme élevé.

Exemples de fonctions

  • Acquisition multicapteur
  • Contrôle temps réel
  • Passerelles de protocoles
  • Séquençage d’alimentation
  • Systèmes sur puce programmables

Illustration

Un FPGA peut convertir un protocole propriétaire vers SPI ou Ethernet tout en horodatant les données.

 

1.3.4 Robotique

La robotique combine commande, perception et communication. Les FPGA sont utilisés pour générer des PWM, lire des codeurs, synchroniser des capteurs, calculer des trajectoires simples ou accélérer la vision et l’apprentissage embarqué.

Exemples de fonctions

  • Commande de moteurs
  • Lecture de codeurs incrémentaux
  • Fusion de capteurs
  • Traitement de caméras
  • Réactions de sécurité à faible latence

Illustration

Un contrôleur peut calculer simultanément les commandes de plusieurs axes au lieu de les traiter successivement.

 

1.3.5 Vision industrielle

Les caméras industrielles produisent des flux de pixels importants. Le FPGA traite ces données au fil de l’eau, sans attendre le stockage complet de l’image. Il peut effectuer des corrections, des convolutions, des extractions de caractéristiques et des décisions simples.

Exemples de fonctions

  • Inspection de défauts
  • Tri d’objets
  • Mesure dimensionnelle
  • Correction de capteur
  • Prétraitement pour réseau neuronal

Illustration

Un pipeline peut enchaîner correction de gain, filtrage, détection de contours et seuillage avec une latence de quelques lignes.

 

1.3.6 Automobile

Les véhicules modernes utilisent des systèmes électroniques distribués soumis à des contraintes de sûreté, de temps réel et de longévité. Les FPGA peuvent servir dans les systèmes avancés d’aide à la conduite, les passerelles de communication, l’infodivertissement et le prototypage de calculateurs.

Exemples de fonctions

  • Traitement de caméras et radars
  • Passerelles CAN/Ethernet
  • Agrégation de capteurs
  • Affichage numérique
  • Redondance et surveillance

Illustration

La logique peut intégrer plusieurs interfaces automobiles tout en appliquant des règles de filtrage et d’horodatage.

 

1.3.7 Aéronautique

Les systèmes aéronautiques privilégient le déterminisme, la fiabilité et la maîtrise des interfaces. Certains FPGA utilisent des technologies adaptées aux environnements sévères ou aux exigences de sécurité. La conception doit alors respecter des processus rigoureux de vérification.

Exemples de fonctions

  • Commande de vol
  • Acquisition avionique
  • Radar
  • Communications embarquées
  • Traitement d’instrumentation

Illustration

Une architecture redondante peut comparer plusieurs chaînes de calcul afin de détecter une divergence.

 

1.3.8 Accélération matérielle

Un FPGA peut décharger un processeur de calculs répétitifs. L’algorithme est transformé en pipeline matériel spécialisé, ce qui améliore le débit et parfois l’efficacité énergétique. Contrairement à un accélérateur fixe, le FPGA reste reconfigurable.

Exemples de fonctions

  • Compression
  • Cryptographie
  • Analyse de paquets réseau
  • Calcul scientifique
  • Inférence de réseaux neuronaux

Illustration

Le processeur prépare les données et lance le traitement ; le FPGA exécute en parallèle les opérations critiques puis renvoie le résultat.

 

1.3.9 Prototypage de circuits intégrés

Avant de fabriquer un ASIC, les concepteurs peuvent implémenter l’architecture sur FPGA afin de vérifier les fonctions, tester les interfaces et exécuter du logiciel sur une version matérielle proche du futur circuit. Cette approche réduit les risques avant une fabrication coûteuse.

Exemples de fonctions

  • Validation fonctionnelle
  • Émulation de processeur
  • Test de firmware
  • Mesure de performance
  • Démonstrateur préindustriel

Illustration

Le prototype FPGA ne reproduit pas exactement la fréquence, la consommation ou la surface de l’ASIC, mais il permet une validation fonctionnelle avancée.

 

Lecture transversale des applications

Domaine

Besoin dominant

Ressources FPGA mobilisées

Bénéfice recherché

DSPCalcul répétitif à haut débitDSP, registres, BRAMPipeline et parallélisme
TélécommunicationsFlux continus et protocolesTranscepteurs, DSP, logiqueDébit et faible latence
EmbarquéInterfaces et déterminismeE/S, logique, processeur éventuelPersonnalisation
RobotiqueCommande multi-axesPWM, compteurs, DSPRéactivité
VisionTraitement pixel par pixelBRAM, DSP, pipelinesTraitement en temps réel
AutomobileAgrégation et sûretéE/S, logique, mémoireIntégration
AéronautiqueFiabilité et déterminismeLogique redondante, horlogesMaîtrise temporelle
AccélérationCalcul spécialiséDSP, BRAM, interfaces rapidesPerformance
Prototypage ASICValidation avant fabricationEnsemble des ressourcesRéduction du risque

 

ZONE DE PSEUDO-CODE — Chaîne de traitement vidéo en flux

A_CHAQUE_PIXEL_RECU(pixel_entree) FAIRE

    pixel_corrige <- corriger_offset_et_gain(pixel_entree)

    voisinage     <- mettre_a_jour_fenetres_de_lignes(pixel_corrige)

    contour       <- convolution_3x3(voisinage)

    decision      <- comparer_au_seuil(contour)

    produire(pixel_sortie = decision)

FIN

Dans une implémentation FPGA, les étapes peuvent former un pipeline : plusieurs pixels se trouvent simultanément dans des étapes différentes.

 

 

1.4 Architecture générale d’un FPGA

L’architecture exacte varie selon le constructeur et la famille, mais la plupart des FPGA modernes combinent une matrice de logique configurable, un réseau d’interconnexion, des blocs d’entrée-sortie et des ressources spécialisées. La configuration détermine la fonction des blocs et la manière dont ils sont reliés.

Vue d’ensemble fonctionnelle

Blocs d’E/S

Réseau d’interconnexion programmable

Blocs d’E/S

CLB : LUT + bascules

Mémoires internes / blocs DSP

CLB : LUT + bascules

Gestion d’horloge

Routage global et local

Interfaces rapides

 

Cette représentation est volontairement simplifiée. Dans un composant réel, les ressources sont distribuées en colonnes ou en régions, avec plusieurs niveaux de routage et des blocs spécialisés disposés selon les contraintes physiques de la puce.

1.4.1 Blocs logiques configurables

Les blocs logiques configurables, souvent appelés CLB selon les familles, constituent la ressource générale de calcul logique. Ils regroupent plusieurs éléments capables de réaliser des fonctions combinatoires et séquentielles. Un bloc peut contenir des LUT, des bascules, des multiplexeurs, des chaînes de retenue et des connexions locales.

Rôle

  • Réalisation d’équations booléennes.
  • Implémentation de multiplexeurs et de décodeurs.
  • Création de registres, compteurs et machines à états.
  • Construction de fonctions arithmétiques avec les chaînes de retenue.
  • Formation de petites mémoires distribuées ou de registres à décalage selon l’architecture.

1.4.2 Tables de correspondance ou LUT

Une LUT, ou Look-Up Table, est une petite mémoire configurée pour représenter la table de vérité d’une fonction logique. Une LUT à k entrées peut théoriquement implémenter toute fonction booléenne de k variables, car elle stocke une valeur de sortie pour chacune des 2ᵏ combinaisons d’entrée.

Exemple d’une LUT à quatre entrées

Une LUT à quatre entrées possède seize positions de configuration. Pour réaliser F = (A ET B) OU (C XOR D), l’outil de synthèse calcule les seize valeurs de F et programme la LUT. Pendant le fonctionnement, les entrées A, B, C et D sélectionnent directement la valeur correspondante.

A

B

C

D

F = (A·B) + (C ⊕ D)

00000
00011
00101
00110
01000
01011
01101
01110
10000
10011
10101
10110
11001
11011
11101
11111

 

Point clé

La LUT ne calcule pas successivement les portes de l’expression. Elle fournit directement le résultat associé à la combinaison présente sur ses entrées.

 

1.4.3 Bascules

Les bascules mémorisent l’état du circuit sur un front d’horloge. Elles permettent de construire des registres, des compteurs, des pipelines et des machines à états. Elles sont généralement placées à proximité des LUT afin que la sortie combinatoire puisse être enregistrée avec un délai réduit.

Logique combinatoire et logique séquentielle

Une LUT produit une valeur qui dépend immédiatement de ses entrées, sous réserve du temps de propagation. Une bascule conserve une valeur jusqu’au prochain front d’horloge. L’association LUT + bascule représente donc l’élément de base d’une conception synchrone.

Exemple

Un compteur utilise une logique combinatoire pour calculer la valeur suivante et un registre de bascules pour mémoriser la valeur courante à chaque front d’horloge.

 

1.4.4 Réseau d’interconnexion

Le réseau d’interconnexion relie les LUT, les bascules, les mémoires, les blocs DSP et les entrées-sorties. Il contient des segments de routage, des boîtes de connexion et des commutateurs programmables. La configuration choisit les chemins utilisés pour transporter les signaux.

Routage local et global

  • Le routage local relie des éléments proches et offre généralement un délai réduit.
  • Le routage général traverse plusieurs régions de la puce.
  • Des réseaux dédiés distribuent les horloges et parfois les signaux de contrôle à forte charge.
  • Le placement et le routage influencent directement la fréquence maximale du circuit.

Dans un FPGA, une part importante de la surface et du délai peut être liée aux interconnexions. Une description logique correcte peut donc échouer à une fréquence cible si les ressources sont trop éloignées ou si un signal traverse trop de commutateurs.

1.4.5 Blocs d’entrée-sortie

Les blocs d’entrée-sortie, ou I/O blocks, assurent l’interface entre la logique interne et les broches du boîtier. Ils adaptent les niveaux électriques, la direction du signal et parfois la synchronisation. Les broches sont souvent regroupées en banques partageant certaines tensions de référence.

Fonctions courantes

  • Entrée, sortie ou signal bidirectionnel.
  • Choix d’un standard électrique compatible avec la carte.
  • Réglage de la force de sortie et de la vitesse de transition.
  • Résistances internes de rappel selon les possibilités du composant.
  • Registres d’entrée et de sortie pour améliorer les performances temporelles.
  • Interfaces différentielles pour les transmissions rapides.

Attention

Une mauvaise affectation de broche ou un standard électrique incorrect peut empêcher le fonctionnement et, dans certains cas, endommager le matériel. Les contraintes de broches doivent être vérifiées avec le schéma de la carte.

 

1.4.6 Mémoires internes

Les FPGA intègrent des blocs mémoire dédiés, souvent appelés Block RAM ou BRAM. Ils stockent des données, des coefficients, des files d’attente ou des lignes d’image. Leur utilisation évite de construire de grandes mémoires avec des bascules et des LUT.

Modes d’utilisation

  • Mémoire simple port ou double port.
  • Lecture et écriture synchrones.
  • Largeur et profondeur configurables dans certaines limites.
  • File FIFO, tampon circulaire ou mémoire de coefficients.
  • Mémoire de programme pour un processeur logiciel embarqué.

Mémoire distribuée

Certaines LUT peuvent aussi être configurées comme de petites mémoires distribuées. Elles sont utiles pour des tables ou des files de faible profondeur proches de la logique de calcul. Les blocs mémoire dédiés sont préférables pour les capacités plus importantes.

1.4.7 Blocs DSP

Les blocs DSP sont des unités arithmétiques spécialisées capables de réaliser rapidement des multiplications, additions, accumulations et opérations combinées. Ils sont conçus pour les filtres, la modulation, la vision, le contrôle et l’intelligence artificielle.

Pourquoi des blocs dédiés ?

Une multiplication peut être construite avec des LUT, mais elle consomme beaucoup de ressources et peut être moins rapide. Un bloc DSP offre une structure optimisée, souvent pipelinée, avec une consommation et une fréquence mieux maîtrisées.

  • Multiplication signée ou non signée.
  • Addition et accumulation.
  • Préaddition pour certaines structures de filtres.
  • Registres internes de pipeline.
  • Chaînage entre blocs pour les calculs de grande taille.

1.4.8 Circuits de gestion d’horloge

L’horloge synchronise les bascules et rythme les traitements. Les FPGA disposent de réseaux dédiés pour distribuer les horloges avec un faible déséquilibre temporel. Des blocs spécialisés, tels que PLL ou MMCM selon les familles, peuvent multiplier, diviser, déphaser ou conditionner une horloge.

Fonctions principales

  • Distribution globale à faible skew.
  • Génération de plusieurs fréquences à partir d’une référence.
  • Correction ou ajustement de phase.
  • Gestion du verrouillage et de la stabilité de l’horloge.
  • Support de régions d’horloge ou de domaines distincts.

Précaution de conception

Il est déconseillé de créer une nouvelle horloge avec une simple porte logique ou la sortie d’un compteur sans utiliser les ressources prévues. Il est souvent préférable d’utiliser une horloge principale et des signaux d’activation, ou d’employer les blocs de gestion d’horloge conformément aux recommandations du constructeur.

1.4.9 Ressources complémentaires

Selon la famille, un FPGA peut inclure des transcepteurs série à plusieurs gigabits par seconde, des convertisseurs, des contrôleurs mémoire, des blocs PCI Express, des interfaces Ethernet, des processeurs matériels et des fonctions de sécurité. Ces ressources renforcent l’intégration, mais elles sont spécifiques au composant choisi.

Chemin simplifié d’une donnée dans un FPGA

1

Broche d’entrée

 

2

Bloc d’E/S

 

3

Routage

 

4

LUT / DSP

 

5

Bascule ou mémoire

 

6

Routage

 

7

Bloc d’E/S

 

8

Broche de sortie

 

ZONE DE PSEUDO-CODE — Traitement matériel synchrone simplifié

A_CHAQUE_FRONT_MONTANT(clk) FAIRE

    registre_entree  <- echantillonner(entree)

    resultat_etape_1 <- fonction_LUT(registre_entree)

    resultat_etape_2 <- operation_DSP(resultat_etape_1, coefficient)

    memoire[index]   <- resultat_etape_2

    sortie           <- resultat_etape_2

FIN

Le pseudo-code représente un comportement synchrone. En pratique, les étapes peuvent être réparties sur plusieurs cycles afin d’augmenter la fréquence.

 

 

1.4.10 De la description VHDL aux ressources physiques

Le concepteur décrit une fonction en VHDL sans choisir manuellement chaque LUT. L’outil de synthèse reconnaît les structures et les transforme en ressources disponibles. Une addition peut utiliser des LUT et une chaîne de retenue ; une multiplication peut être placée dans un bloc DSP ; un tableau mémoire bien décrit peut être inféré dans une BRAM.

Description fonctionnelle

Ressource potentiellement inférée

Observation

Équation booléenneLUTLa fonction est décomposée selon le nombre d’entrées des LUT
RegistreBasculesUne bascule par bit, avec activation ou reset éventuel
Addition / compteurLUT + chaîne de retenue + basculesLes chaînes dédiées accélèrent la propagation de la retenue
MultiplicationBloc DSP ou LUTDépend de la taille, des options et des contraintes
Mémoire synchroneBRAMLe style de description doit correspondre aux modèles reconnus
Petite tableLUT mémoire ou logiqueL’outil choisit selon la taille et les options
Horloge dérivéePLL/MMCM ou logiqueLes contraintes et primitives peuvent être nécessaires

 

Conséquence pédagogique

Apprendre VHDL ne consiste pas seulement à écrire une syntaxe correcte. Il faut anticiper le matériel qui sera inféré, les chemins temporels et les ressources réellement disponibles dans le FPGA.

 

Travaux dirigés

Les exercices suivants visent à consolider les notions du chapitre. Les corrections proposées sont indicatives : plusieurs architectures peuvent être pertinentes si elles sont correctement justifiées.

TD 1 — Comparaison entre FPGA, CPLD et microcontrôleur

Objectif

Choisir une technologie à partir des contraintes d’une application et argumenter le choix.

Énoncé

Pour chacune des situations suivantes, proposer la solution la plus adaptée parmi FPGA, CPLD et microcontrôleur. Une architecture hybride peut être retenue si elle est justifiée.

1. Un appareil sur batterie lit une température toutes les secondes, commande un ventilateur et transmet périodiquement la mesure par UART.

2. Une carte industrielle doit gérer la séquence de mise sous tension de huit alimentations, surveiller plusieurs signaux de défaut et être opérationnelle immédiatement au démarrage.

3. Un système reçoit quatre flux de données à 100 MHz, applique à chacun une opération de filtrage, puis agrège les résultats avec une latence constante.

4. Un panneau de commande doit lire un clavier, afficher des menus, enregistrer des paramètres et dialoguer avec un réseau.

5. Une ancienne carte utilise de nombreux circuits logiques standards pour le décodage d’adresses et l’arbitrage de bus. Le fabricant souhaite réduire le nombre de composants sans modifier le comportement.

Questions

  • Identifier, pour chaque situation, les contraintes dominantes.
  • Choisir la technologie principale.
  • Donner au moins deux arguments techniques.
  • Indiquer une limite ou un risque du choix proposé.

Grille de réponse

Situation

Contraintes dominantes

Choix

Arguments

Limite / risque

1    
2    
3    
4    
5    

 

Correction indicative

Situation

Choix conseillé

Justification

1MicrocontrôleurFaible fréquence d’échantillonnage, périphériques standards, faible consommation et développement logiciel simple.
2CPLDLogique de contrôle modérée, démarrage immédiat, comportement temporel prévisible et non-volatilité fréquente.
3FPGAQuatre voies parallèles à haute fréquence, pipeline, latence déterministe et ressources DSP éventuelles.
4Microcontrôleur ou microprocesseurGestion d’interface, stockage, menus et réseau davantage adaptés à une architecture logicielle.
5CPLD ou petit FPGAIntégration d’une logique standard existante ; CPLD si la capacité suffit et si le démarrage immédiat est important.

 

Discussion

Le coût du composant n’est pas le seul critère. Il faut intégrer le coût de développement, les outils, les compétences, la certification, le maintien en conditions opérationnelles et la disponibilité à long terme.

 

TD 2 — Identification des ressources d’un FPGA

Objectif

Associer les éléments d’une application aux ressources internes d’un FPGA.

Énoncé

On souhaite concevoir un module qui reçoit des échantillons numériques de 12 bits, applique un filtre à huit coefficients, stocke 1024 résultats, puis transmet les données lorsqu’un contrôleur externe le demande. Le système fonctionne avec une horloge de 100 MHz.

Travail demandé

1. Identifier les ressources nécessaires pour mémoriser les entrées et les résultats intermédiaires.

2. Préciser quelles ressources peuvent réaliser les huit multiplications du filtre.

3. Proposer une ressource pour stocker les 1024 résultats.

4. Indiquer le rôle du réseau d’interconnexion.

5. Préciser le rôle des blocs d’entrée-sortie et des ressources d’horloge.

6. Expliquer comment augmenter le débit du filtre.

Correction indicative

  • Les bascules et registres mémorisent les échantillons successifs et les résultats de pipeline.
  • Les multiplications peuvent être réalisées par huit blocs DSP si le composant en possède suffisamment. Une architecture réutilisant moins de DSP sur plusieurs cycles est possible mais réduit le débit.
  • Une Block RAM convient au stockage de 1024 résultats, avec une largeur adaptée au format de sortie.
  • Le réseau d’interconnexion relie les registres, DSP, additionneurs, mémoire et interfaces. Son délai doit être pris en compte dans l’analyse temporelle.
  • Les blocs d’E/S adaptent les signaux externes ; les ressources d’horloge distribuent le 100 MHz et peuvent générer d’autres fréquences si nécessaire.
  • Le débit peut être augmenté par parallélisme et pipeline : insertion de registres entre les niveaux d’addition et fonctionnement simultané des multiplicateurs.
ZONE DE PSEUDO-CODE — Architecture conceptuelle d’un filtre FIR parallèle

A_CHAQUE_FRONT_MONTANT(clk) FAIRE

    x[0] <- nouvel_echantillon

    POUR i DE 1 A 7 EN_PARALLELE FAIRE

        x[i] <- x[i-1]

    FIN_POUR

    POUR i DE 0 A 7 EN_PARALLELE FAIRE

        produit[i] <- x[i] * coefficient[i]

    FIN_POUR

    sortie <- somme_arbre_pipeline(produit[0..7])

FIN

La mention EN_PARALLELE exprime une duplication matérielle. Une boucle VHDL synthétisable peut servir à décrire cette structure régulière.

 

 

TD 3 — Analyse d’exemples d’applications

Objectif

Analyser une application et relier ses contraintes aux avantages et aux ressources d’un FPGA.

Étude de cas A — Inspection visuelle

Une ligne de production transporte 200 objets par seconde. Une caméra fournit des images en continu. Le système doit détecter un défaut de forme et commander un éjecteur avec une latence stable.

  • Pourquoi un traitement en flux est-il préférable à l’attente d’une image complète ?
  • Quelles ressources du FPGA peuvent être utilisées ?
  • Quels paramètres faut-il vérifier avant de choisir le composant ?

Étude de cas B — Passerelle de protocoles

Une carte reçoit un protocole série propriétaire, ajoute un horodatage, filtre certains messages puis les transmet sur Ethernet. Le protocole propriétaire n’est supporté par aucun microcontrôleur standard.

  • Quelle partie peut être réalisée dans la logique FPGA ?
  • Quel intérêt présente un processeur intégré ou externe ?
  • Pourquoi une architecture hybride peut-elle être pertinente ?

Étude de cas C — Prototypage d’un ASIC

Une équipe développe un accélérateur de chiffrement destiné à être fabriqué en ASIC. Avant la fabrication, elle souhaite exécuter le logiciel de contrôle et tester l’interface avec un processeur.

  • Quels éléments peuvent être validés sur FPGA ?
  • Quelles performances ne doivent pas être extrapolées directement ?
  • Quels avantages financiers et techniques apporte le prototype ?

Correction indicative

Cas

Analyse attendue

ALe FPGA peut traiter les pixels au fil de l’eau avec un pipeline. Les LUT réalisent les décisions, les DSP les convolutions, les BRAM les lignes d’image et les E/S l’interface caméra. Il faut vérifier le débit pixel, la largeur des données, la mémoire, la latence et l’interface physique.
BLa logique FPGA réalise la réception et le décodage du protocole propriétaire avec une synchronisation précise. Un processeur peut gérer la pile réseau, la configuration et les fonctions complexes. L’architecture hybride sépare le temps réel matériel du logiciel de haut niveau.
CLe FPGA valide la fonction, les interfaces, le firmware et certains scénarios de performance. La fréquence maximale, la consommation et la surface de l’ASIC ne doivent pas être déduites directement. Le prototype réduit le risque d’une erreur coûteuse avant fabrication.

 

Questions de réflexion

1. Pourquoi un FPGA peut-il offrir une latence plus déterministe qu’un processeur exécutant un système d’exploitation ?

2. Dans quel cas un ASIC peut-il être préférable à un FPGA ?

3. Pourquoi la reconfiguration représente-t-elle un avantage pendant le prototypage mais aussi un enjeu de sécurité ?

4. Quel est le rôle respectif des LUT et des bascules dans une machine à états ?

5. Pourquoi le routage est-il aussi important que la quantité de logique disponible ?

Synthèse du chapitre

  • La logique câblée réalise une fonction fixée par les composants et leurs connexions physiques.
  • La logique programmable utilise des ressources génériques dont la fonction et les interconnexions sont configurées après fabrication.
  • Un microprocesseur et un microcontrôleur exécutent principalement des instructions ; un FPGA construit une architecture matérielle parallèle.
  • Les familles PROM, PLA, PAL, GAL, CPLD et FPGA représentent différents niveaux de flexibilité et de capacité.
  • Les FPGA sont particulièrement adaptés aux traitements en flux, au parallélisme, aux interfaces personnalisées et aux contraintes de faible latence.
  • L’architecture d’un FPGA combine LUT, bascules, routage, blocs d’E/S, mémoires, DSP et ressources d’horloge.
  • Le code VHDL doit être écrit en comprenant le matériel que l’outil de synthèse inférera.

Conclusion

Le FPGA constitue une plateforme intermédiaire entre la souplesse du logiciel et l’efficacité d’un circuit matériel spécialisé. Son intérêt apparaît lorsque l’application exige à la fois personnalisation, parallélisme, déterminisme et possibilité d’évolution.

 

Glossaire

ASIC : Circuit intégré conçu pour une application spécifique et fabriqué avec une structure définitive.

Bascule : Élément séquentiel mémorisant un bit, généralement sur un front d’horloge.

Bitstream : Fichier contenant les informations de configuration chargées dans un FPGA.

Block RAM : Bloc mémoire interne dédié d’un FPGA.

CLB : Bloc logique configurable regroupant typiquement LUT, bascules et logique locale.

CPLD : Circuit logique programmable complexe constitué de blocs de macrocellules et d’une interconnexion structurée.

DSP : Bloc arithmétique spécialisé pour multiplications, additions et accumulations rapides.

FPGA : Matrice de portes programmable sur site, reconfigurable après fabrication.

GAL : Circuit logique générique reprogrammable, dérivé des architectures PAL.

HDL : Langage de description matérielle, tel que VHDL ou Verilog.

LUT : Petite table de correspondance configurée pour réaliser une fonction logique.

Macrocellule : Bloc logique regroupant termes combinatoires, bascule et commande de sortie.

PAL : Circuit à plan ET programmable et plan OU généralement fixe.

PLA : Réseau logique dont les plans ET et OU sont programmables.

PLL : Boucle à verrouillage de phase utilisée pour générer ou conditionner des horloges.

PROM : Mémoire morte programmable pouvant implémenter une table de vérité.

Routage : Réseau programmable reliant les ressources internes du FPGA.

Synthèse : Transformation d’une description HDL en structure logique réalisable par le composant cible.

Auto-évaluation

Répondre sans consulter le chapitre, puis vérifier les réponses.

1. Quelle différence fondamentale sépare une fonction logicielle exécutée par un processeur d’une fonction configurée dans un FPGA ?

2. Pourquoi une LUT peut-elle réaliser toute fonction de ses entrées ?

3. Quelle famille est généralement associée à un démarrage immédiat et à une logique de contrôle de capacité moyenne ?

4. Citer trois ressources spécialisées d’un FPGA en plus des LUT et des bascules.

5. Donner deux domaines où le traitement en flux est particulièrement important.

6. Pourquoi les blocs DSP sont-ils préférables aux LUT pour certaines multiplications ?

7. Quel est le rôle du réseau d’horloge ?

8. Citer une limite des FPGA par rapport à un ASIC produit en grande série.

Réponses attendues

1. Le processeur exécute successivement des instructions sur une architecture fixe, tandis que le FPGA configure des blocs matériels qui peuvent fonctionner en parallèle.

2. Elle stocke la sortie correspondant à chacune des combinaisons possibles de ses entrées.

3. Le CPLD.

4. Par exemple : Block RAM, blocs DSP, transcepteurs rapides, PLL/MMCM, contrôleurs mémoire ou processeurs intégrés.

5. Par exemple : vision industrielle, télécommunications et traitement numérique du signal.

6. Ils sont optimisés physiquement pour ces opérations, consomment moins de logique générale et atteignent souvent une fréquence plus élevée.

7. Distribuer une horloge avec un faible déséquilibre et, selon les blocs disponibles, générer ou ajuster des fréquences et des phases.

8. Coût unitaire, consommation ou surface supérieurs à ceux d’un ASIC optimisé pour une très grande série.

Repères pour la suite du cours

Le chapitre suivant introduira les langages de description matérielle et le cycle complet de développement : écriture de la description VHDL, analyse, simulation, synthèse, placement-routage et programmation d’un FPGA.