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 composants | Davantage de pistes, de soudures et de délais de propagation | Carte plus grande et fabrication plus coûteuse |
| Fonction figée | Modification impossible sans intervention physique | Temps de développement plus long lors d’une évolution |
| Interconnexions externes | Bruit, consommation et risques de panne accrus | Validation et maintenance plus complexes |
| Réutilisation réduite | Le schéma est souvent spécifique à une application | Faible capitalisation entre projets |
| Obsolescence | Remplacement difficile de certaines références | Risque 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.
|
|
À 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 |
|---|---|---|
| Reprogrammation | Modification de la fonction sans changer la carte | Mise à jour d’un protocole de communication |
| Parallélisme | Plusieurs opérations réalisées simultanément | Filtrage de plusieurs voies de capteurs |
| Déterminisme | Temps de traitement prévisible | Commande moteur à période fixe |
| Intégration | Réduction du nombre de composants | Contrôleur, interfaces et logique dans un même FPGA |
| Prototypage | Validation rapide d’une architecture | Prévalidation d’un futur circuit ASIC |
| Personnalisation | Adaptation d’un même matériel à plusieurs produits | Variantes 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 |
|---|---|---|---|
| Nature | Architecture de calcul général | Ordinateur embarqué intégré | Matrice matérielle configurable |
| Mode de fonctionnement | Exécution d’instructions, souvent avec OS | Exécution d’un programme embarqué | Fonctions matérielles parallèles |
| Parallélisme | Principalement par cœurs, SIMD ou accélérateurs | Limité par le cœur et les périphériques | Très élevé et personnalisable |
| Latence | Variable, dépend du logiciel et de l’OS | Faible à modérée | Très faible et déterministe |
| Périphériques | Souvent externes ou via chipset | Nombreux périphériques intégrés | Interfaces créées ou instanciées selon le besoin |
| Développement | C/C++, systèmes, bibliothèques | C/C++, assembleur, RTOS | VHDL/Verilog, synthèse et contraintes |
| Mise à jour | Logicielle | Logicielle | Reconfiguration matérielle |
| Consommation | Souvent élevée pour les modèles puissants | Généralement faible | Variable, dépend de l’architecture et de l’activité |
| Usage typique | PC, calcul, applications riches | Commande, capteurs, objets embarqués | Traitement rapide, interfaces, accélération |
Choix selon le besoin
|
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 |
|---|---|---|---|---|---|
| PROM | Décodeur fixe + contenu programmable | Selon technologie | Très faible | Table de vérité directe | Décodage, conversion |
| PLA | Plan ET et plan OU programmables | Variable | Faible | Souplesse des équations | Logique combinatoire |
| PAL | Plan ET programmable, plan OU fixe | Souvent limitée historiquement | Faible | Rapidité et simplicité | Décodage, contrôle |
| GAL | Macrocellules de type PAL | Électrique, multiple | Faible | Réutilisable et flexible | Machines d’états simples |
| CPLD | Blocs de macrocellules + interconnexion | Généralement multiple | Moyenne | Démarrage rapide, timing prévisible | Contrôle de carte, bus |
| FPGA | LUT, bascules, routage et blocs dédiés | Multiple | Élevée à très élevée | Parallélisme et intégration | DSP, 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é.
|
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é |
|---|---|---|---|
| DSP | Calcul répétitif à haut débit | DSP, registres, BRAM | Pipeline et parallélisme |
| Télécommunications | Flux continus et protocoles | Transcepteurs, DSP, logique | Débit et faible latence |
| Embarqué | Interfaces et déterminisme | E/S, logique, processeur éventuel | Personnalisation |
| Robotique | Commande multi-axes | PWM, compteurs, DSP | Réactivité |
| Vision | Traitement pixel par pixel | BRAM, DSP, pipelines | Traitement en temps réel |
| Automobile | Agrégation et sûreté | E/S, logique, mémoire | Intégration |
| Aéronautique | Fiabilité et déterminisme | Logique redondante, horloges | Maîtrise temporelle |
| Accélération | Calcul spécialisé | DSP, BRAM, interfaces rapides | Performance |
| Prototypage ASIC | Validation avant fabrication | Ensemble des ressources | Réduction du risque |
|
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) |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 0 | 1 | 1 |
| 0 | 0 | 1 | 0 | 1 |
| 0 | 0 | 1 | 1 | 0 |
| 0 | 1 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 | 1 |
| 0 | 1 | 1 | 0 | 1 |
| 0 | 1 | 1 | 1 | 0 |
| 1 | 0 | 0 | 0 | 0 |
| 1 | 0 | 0 | 1 | 1 |
| 1 | 0 | 1 | 0 | 1 |
| 1 | 0 | 1 | 1 | 0 |
| 1 | 1 | 0 | 0 | 1 |
| 1 | 1 | 0 | 1 | 1 |
| 1 | 1 | 1 | 0 | 1 |
| 1 | 1 | 1 | 1 | 1 |
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 |
|
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éenne | LUT | La fonction est décomposée selon le nombre d’entrées des LUT |
| Registre | Bascules | Une bascule par bit, avec activation ou reset éventuel |
| Addition / compteur | LUT + chaîne de retenue + bascules | Les chaînes dédiées accélèrent la propagation de la retenue |
| Multiplication | Bloc DSP ou LUT | Dépend de la taille, des options et des contraintes |
| Mémoire synchrone | BRAM | Le style de description doit correspondre aux modèles reconnus |
| Petite table | LUT mémoire ou logique | L’outil choisit selon la taille et les options |
| Horloge dérivée | PLL/MMCM ou logique | Les 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 |
|---|---|---|
| 1 | Microcontrôleur | Faible fréquence d’échantillonnage, périphériques standards, faible consommation et développement logiciel simple. |
| 2 | CPLD | Logique de contrôle modérée, démarrage immédiat, comportement temporel prévisible et non-volatilité fréquente. |
| 3 | FPGA | Quatre voies parallèles à haute fréquence, pipeline, latence déterministe et ressources DSP éventuelles. |
| 4 | Microcontrôleur ou microprocesseur | Gestion d’interface, stockage, menus et réseau davantage adaptés à une architecture logicielle. |
| 5 | CPLD ou petit FPGA | Inté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.
|
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 |
|---|---|
| A | Le 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. |
| B | La 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. |
| C | Le 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.