Chapitre 18 — Introduction aux circuits logiques programmables
PLA, PAL, CPLD, FPGA et initiation aux langages de description matérielle

| Finalité du chapitre — Comprendre comment une fonction logique peut être décrite, synthétisée et implantée dans un composant programmable, depuis les architectures PLA/PAL jusqu’aux FPGA modernes. |
Niveau conseillé : Bac+1 / Bac+2 — Cycle préparatoire, BTS, BUT, licence ou formation d’ingénieur
Objectifs pédagogiques
- Définir le principe de la logique programmable et le distinguer de la logique câblée.
- Expliquer l’organisation et le fonctionnement d’un PLA et d’un PAL.
- Décrire l’architecture générale d’un CPLD et d’un FPGA.
- Comparer les capacités, performances, coûts et domaines d’emploi des différentes familles.
- Comprendre les principales étapes d’une chaîne de conception numérique.
- Lire et écrire une description VHDL ou Verilog très simple.
- Décrire une porte logique et un compteur synchrone, puis prévoir leur comportement.
Prérequis
- Algèbre de Boole et formes somme de produits.
- Circuits combinatoires et séquentiels.
- Bascules, registres, compteurs et machines à états.
- Notions élémentaires de chronogramme et de fréquence d’horloge.
Plan du chapitre
1. 18.1 Principe de la logique programmable
2. 18.2 Réseaux logiques programmables PLA
3. 18.3 Réseaux logiques programmables PAL
4. 18.4 Circuits CPLD
5. 18.5 Circuits FPGA
6. 18.6 Logique câblée et logique programmable
7. 18.7 Introduction aux langages VHDL et Verilog
8. 18.8 Exemples de description d’une porte et d’un compteur
9. Travaux dirigés, activité pratique, synthèse et corrigés
18.1 Principe de la logique programmable
Un circuit logique programmable est un composant électronique dont la fonction interne peut être définie ou modifiée par l’utilisateur après sa fabrication. Au lieu de relier physiquement plusieurs portes logiques distinctes, le concepteur configure les ressources déjà présentes dans le composant.
| Définition — Programmer un circuit logique ne signifie pas nécessairement exécuter une suite d’instructions comme un processeur. Il s’agit principalement de configurer des connexions, des tables de vérité, des bascules et des blocs matériels afin de créer un circuit numérique dédié. |

Figure 18.1 — Évolution simplifiée des principales familles de logique programmable.
18.1.1 Ressources configurables
Selon la famille du composant, la configuration peut agir sur plusieurs types de ressources :
- des matrices de portes ET et OU ;
- des tables de correspondance appelées LUT ;
- des bascules et registres ;
- des multiplexeurs et réseaux d’interconnexion ;
- des blocs d’entrées-sorties ;
- des mémoires intégrées ;
- des multiplicateurs, accumulateurs et blocs de traitement numérique ;
- des réseaux d’horloge et parfois des processeurs embarqués.
18.1.2 Configuration et programmation
La configuration est représentée par un ensemble de bits. Ces bits commandent des interrupteurs électroniques internes et déterminent le comportement du composant. Selon la technologie, la configuration peut être :
Technologie | Caractère | Conséquence |
| Fusibles ou antifusibles | Généralement irréversible | Programmation permanente |
EEPROM ou Flash | Non volatile et réinscriptible | La fonction est conservée hors tension |
SRAM | Volatile | La configuration doit être rechargée à chaque mise sous tension |
| Fichier de configuration — Pour un FPGA, le résultat final de la chaîne de conception est souvent appelé bitstream. Il contient les bits nécessaires à la configuration du routage, des LUT, des blocs mémoire et des entrées-sorties. |
18.1.3 Du comportement à l’implantation
Le concepteur décrit d’abord la fonction attendue sous forme de schéma, d’équations ou de code HDL. Un outil de synthèse transforme cette description en un réseau de ressources élémentaires. Les étapes de placement et de routage choisissent ensuite les ressources physiques et les connexions réellement utilisées.

Figure 18.2 — Chaîne générale de conception d’un circuit logique programmable.
18.1.4 Avantages généraux
- Modification d’une fonction sans refaire la carte électronique.
- Réduction du nombre de circuits intégrés externes.
- Possibilité d’implanter des fonctions combinatoires et séquentielles complexes.
- Développement plus rapide grâce à la simulation et à la réutilisation de blocs.
- Exécution parallèle de nombreuses opérations matérielles.
- Mise à jour du produit après sa fabrication lorsque le composant est reprogrammable.
18.1.5 Limites générales
- Nécessité de maîtriser la conception synchrone et les contraintes temporelles.
- Outils de conception parfois complexes.
- Consommation ou coût supérieurs à un circuit intégré spécialisé pour une très grande série.
- Ressources limitées par la taille du composant choisi.
- Risque d’erreur si la description HDL est simulée mais pas correctement synthétisable.
18.2 Réseaux logiques programmables PLA
PLA signifie Programmable Logic Array, ou réseau logique programmable. Un PLA est particulièrement adapté à la réalisation de fonctions écrites sous forme somme de produits. Il comporte deux matrices configurables : une matrice ET et une matrice OU.

Figure 18.3 — Architecture conceptuelle d’un PLA.
18.2.1 Matrice ET programmable
La matrice ET reçoit les variables d’entrée et leurs compléments. Elle génère des termes produits. Chaque terme produit peut contenir une variable directe, une variable complémentée ou ne pas dépendre de cette variable.
Exemple de termes produits :
- P₁ = A̅B ;
- P₂ = AC ;
- P₃ = ABC̅.
18.2.2 Matrice OU programmable
La matrice OU sélectionne les termes produits nécessaires pour chaque sortie. Un même terme produit peut être partagé par plusieurs sorties, ce qui peut réduire le nombre total de ressources.
Considérons les fonctions :
F₁ = A̅B + AC
F₂ = A̅B + BC
Le terme A̅B est commun aux deux fonctions. Le PLA peut le générer une seule fois dans la matrice ET puis le connecter aux deux sorties dans la matrice OU.
Terme produit | A | B | C | Utilisé par F₁ | Utilisé par F₂ |
P₁ = A̅B | 0 | 1 | – | Oui | Oui |
P₂ = AC | 1 | – | 1 | Oui | Non |
P₃ = BC | – | 1 | 1 | Non | Oui |
Dans le tableau, 1 désigne la variable directe, 0 la variable complémentée et – une variable non utilisée dans le terme produit.
18.2.3 Sorties et polarité
Selon le composant, les sorties peuvent être directes, inversées ou disponibles dans les deux polarités. Certains PLA incluent également des registres de sortie permettant de réaliser de petites fonctions séquentielles.
18.2.4 Avantages et limites du PLA
Avantages | Limites |
| Grande flexibilité grâce aux deux matrices programmables. | Routage interne plus complexe. |
| Partage possible des termes produits entre plusieurs sorties. | Temps de propagation parfois supérieur à celui d’un PAL. |
| Implantation naturelle des formes somme de produits. | Capacité limitée par le nombre de variables, termes produits et sorties. |
18.3 Réseaux logiques programmables PAL
PAL signifie Programmable Array Logic. Comme le PLA, un PAL réalise principalement des formes somme de produits. Sa matrice ET est programmable, mais sa matrice OU est fixe. Chaque sortie dispose donc d’un nombre déterminé de termes produits.

Figure 18.4 — Architecture conceptuelle d’un PAL.
18.3.1 Organisation
Les entrées, leurs compléments et parfois les retours de sorties alimentent la matrice ET programmable. Les produits obtenus sont regroupés par des portes OU câblées. Cette structure simplifie le composant et rend le délai plus prévisible.
18.3.2 Macrocelles de sortie
De nombreux PAL évolués utilisent des macrocelles. Une macrocellule peut contenir :
- une porte OU recevant plusieurs termes produits ;
- une inversion programmable ;
- une bascule de sortie ;
- un multiplexeur sélectionnant une sortie combinatoire ou enregistrée ;
- une commande de sortie trois états ;
- un retour interne de la sortie vers la matrice ET.
| Sortie combinatoire ou enregistrée — Une sortie combinatoire dépend directement des entrées. Une sortie enregistrée est mémorisée dans une bascule au rythme d’une horloge, ce qui permet de réaliser des compteurs ou de petites machines à états. |
18.3.3 Exemple de limitation
Supposons qu’une sortie d’un PAL ne puisse recevoir que quatre termes produits. Une fonction nécessitant six produits ne peut pas être implantée directement sur cette sortie. Il faut alors simplifier davantage la fonction, utiliser plusieurs macrocelles ou choisir un composant plus grand.
18.3.4 Comparaison PLA–PAL
Critère | PLA | PAL |
Matrice ET | Programmable | Programmable |
Matrice OU | Programmable | Fixe |
Flexibilité | Très élevée | Plus limitée |
| Partage des termes produits | Facile | Dépend de l’architecture |
| Vitesse et prévisibilité | Variables selon le routage | Souvent meilleures |
| Complexité de programmation | Plus élevée | Plus simple |
18.4 Circuits CPLD
CPLD signifie Complex Programmable Logic Device. Un CPLD regroupe plusieurs blocs logiques comparables à des PAL, reliés par une matrice d’interconnexion programmable. Il offre davantage de ressources et permet de réaliser des fonctions de contrôle plus importantes.

Figure 18.5 — Organisation simplifiée d’un CPLD.
18.4.1 Blocs logiques et macrocelles
Chaque bloc logique contient plusieurs macrocelles. Les équations sont souvent réalisées par une structure somme de produits, puis éventuellement enregistrées dans une bascule. Les macrocelles peuvent échanger des signaux par l’interconnexion globale.
18.4.2 Interconnexion programmable
La matrice d’interconnexion distribue les entrées, les retours des macrocelles et les signaux globaux vers les différents blocs. Une architecture bien structurée permet d’obtenir des délais relativement réguliers et prévisibles.
18.4.3 Configuration non volatile
De nombreux CPLD utilisent une mémoire EEPROM ou Flash interne. Ils conservent donc leur configuration hors tension et deviennent opérationnels très rapidement à la mise sous tension.
18.4.4 Ressources globales
- horloges globales à faible décalage ;
- signaux de remise à zéro ou de validation ;
- commandes trois états ;
- blocs d’entrées-sorties configurables.
18.4.5 Applications typiques
- décodage d’adresses et logique d’interface ;
- remplacement de plusieurs circuits logiques standards ;
- séquenceurs, compteurs et machines à états ;
- gestion de démarrage d’une carte ;
- adaptation de protocoles simples ;
- logique nécessitant un délai déterministe.
18.5 Circuits FPGA
FPGA signifie Field-Programmable Gate Array. Un FPGA contient un très grand nombre de blocs logiques configurables, de bascules, de réseaux de routage et de ressources spécialisées. Il peut réaliser des systèmes numériques complets fonctionnant en parallèle.

Figure 18.6 — Architecture simplifiée d’un FPGA.
18.5.1 Tables de correspondance LUT
Une LUT, ou Look-Up Table, mémorise la table de vérité d’une fonction logique. Une LUT à k entrées possède 2ᵏ bits de configuration et peut réaliser n’importe quelle fonction booléenne de k variables.
| Exemple — Une LUT à 4 entrées contient 16 bits de configuration. En programmant ces 16 bits, elle peut réaliser une fonction quelconque F(A, B, C, D). |
18.5.2 Bascules et blocs logiques
Les LUT sont généralement associées à des bascules D, des multiplexeurs et des chaînes de retenue rapides. Le concepteur peut choisir une sortie combinatoire ou enregistrée. Les chaînes de retenue accélèrent les additionneurs, compteurs et comparateurs.
18.5.3 Réseau d’interconnexions
Le routage programmable relie les blocs entre eux. Sa configuration influence fortement le délai du circuit. Deux descriptions logiquement équivalentes peuvent donc produire des performances différentes après placement et routage.
18.5.4 Blocs d’entrées-sorties
Les blocs d’entrées-sorties assurent la liaison avec les broches. Ils peuvent proposer :
- plusieurs standards électriques ;
- une direction entrée, sortie ou bidirectionnelle ;
- des résistances internes de rappel ;
- des registres d’entrée ou de sortie ;
- des interfaces différentielles et parfois des liaisons série rapides.
18.5.5 Ressources spécialisées
Ressource | Rôle principal | Exemples d’utilisation |
BRAM | Mémoire bloc interne | FIFO, buffers, tables, petites mémoires |
Blocs DSP | Multiplication et accumulation rapides | Filtres, traitement du signal, vision |
PLL/MMCM | Génération et gestion des horloges | Multiplication, division, déphasage |
Transceivers | Liaisons série à haut débit | Ethernet, PCIe, vidéo |
Processeur intégré | Exécution logicielle associée au matériel | Systèmes embarqués hétérogènes |
18.5.6 Configuration et démarrage
Dans de nombreux FPGA, les bits de configuration sont stockés dans des cellules SRAM volatiles. Une mémoire externe ou un processeur charge donc le bitstream au démarrage. D’autres familles intègrent une mémoire Flash non volatile.
18.5.7 CPLD et FPGA : comparaison
Critère | CPLD | FPGA |
| Élément logique dominant | Macrocelle somme de produits | LUT et bascule |
Capacité | Faible à moyenne | Moyenne à très élevée |
Configuration | Souvent non volatile | Souvent SRAM volatile |
Démarrage | Très rapide | Peut nécessiter un chargement |
Temporisation | Souvent très prévisible | Dépend davantage du routage |
| Ressources spécialisées | Limitées | BRAM, DSP, PLL, transceivers, processeurs |
Applications | Contrôle et interface | Traitement parallèle et systèmes complexes |
18.6 Différence entre logique câblée et logique programmable
La logique câblée utilise des composants dont la fonction est fixée par leur construction et par les connexions de la carte. La logique programmable rassemble de nombreuses ressources dans un composant dont la fonction est définie par une configuration.
Critère | Logique câblée | Logique programmable |
Réalisation | Portes et circuits reliés physiquement | Ressources internes configurées |
Modification | Nécessite souvent une nouvelle carte | Nouveau fichier de configuration |
Nombre de composants | Peut devenir important | Souvent réduit |
| Temps de développement | Rapide pour une fonction très simple | Avantageux pour une fonction évolutive ou complexe |
Performances | Très bonnes pour un chemin simple et optimisé | Bonnes, mais influencées par l’architecture et le routage |
Consommation | Faible si peu de composants | Peut être plus élevée selon le FPGA |
Coût en grande série | Peut être compétitif | Intéressant pour petites et moyennes séries |
Maintenance | Modification matérielle | Mise à jour du bitstream |
18.6.1 Exemple comparatif
Pour réaliser un compteur, un décodeur et une commande d’afficheur, une solution câblée peut employer plusieurs circuits intégrés et de nombreuses pistes. Une solution CPLD ou FPGA peut intégrer l’ensemble dans un seul composant. La carte est plus simple et la fonction peut évoluer, mais il faut créer et valider une description HDL.
18.6.2 Choix d’une technologie
1. Déterminer le nombre d’entrées-sorties et la complexité logique.
2. Identifier les besoins de mémoire, de calcul et de fréquence.
3. Vérifier la nécessité d’un démarrage instantané.
4. Évaluer la consommation, le coût et la quantité produite.
5. Choisir entre logique discrète, PLA/PAL, CPLD, FPGA ou circuit spécialisé.
6. Conserver une marge de ressources pour les modifications futures.
18.7 Introduction aux langages VHDL et Verilog
Un langage de description matérielle, ou HDL, permet de décrire la structure et le comportement d’un circuit numérique. Les deux langages les plus connus sont VHDL et Verilog. Ils servent à la simulation, à la vérification et à la synthèse.
| Point fondamental — Un code HDL décrit du matériel fonctionnant en parallèle. L’ordre des lignes n’a pas toujours la même signification que dans un programme exécuté par un processeur. |
18.7.1 VHDL
VHDL signifie VHSIC Hardware Description Language. Il est fortement typé et encourage une description explicite des interfaces et des types de signaux.
Une unité VHDL comporte généralement :
- des bibliothèques et paquets ;
- une entité décrivant les entrées et sorties ;
- une architecture décrivant le comportement ou la structure interne.
Exemple VHDL : porte ET library ieee; |
18.7.2 Verilog
Verilog utilise une syntaxe plus compacte, proche des langages de programmation de la famille C. L’interface et le comportement peuvent être regroupés dans un module.
Exemple Verilog : porte ET module porte_et ( |
18.7.3 Description concurrente et séquentielle
Une affectation concurrente est évaluée comme un élément matériel actif en permanence. Un processus VHDL ou un bloc always Verilog regroupe des instructions séquentielles décrivant une logique combinatoire ou synchrone.
Type de description | VHDL | Verilog | Utilisation |
Concurrente | y <= a and b; | assign y = a & b; | Équations et connexions simples |
| Combinatoire en processus | process(all) | always @* / always_comb | Fonctions avec conditions |
Synchrone | rising_edge(clk) | posedge clk | Registres, compteurs, machines à états |
18.7.4 Signaux et types
En VHDL, std_logic représente un signal logique pouvant prendre plusieurs états de simulation, notamment 0, 1, Z et X. Les vecteurs std_logic_vector représentent des bus. Pour les opérations arithmétiques, il est recommandé d’utiliser le paquet numeric_std et les types unsigned ou signed.
| État X — En simulation, X signifie valeur inconnue. Il peut révéler une absence d’initialisation, plusieurs pilotes en conflit ou une condition non définie. |
18.7.5 Simulation et synthèse
La simulation reproduit le comportement temporel de la description sans programmer le circuit. La synthèse traduit une partie du langage en portes, LUT, bascules et ressources matérielles. Certaines constructions valides en simulation ne sont pas synthétisables.
- La simulation fonctionnelle vérifie la logique.
- Le testbench applique des stimuli et observe les sorties.
- La synthèse produit une netlist de ressources.
- Le placement-routage associe la netlist aux ressources physiques.
- L’analyse temporelle vérifie le respect de la fréquence et des contraintes.
- Le bitstream configure finalement le circuit.

Figure 18.7 — Étapes allant de la description HDL à la programmation du composant.
18.7.6 Règles de conception recommandées
- Définir clairement toutes les entrées et sorties.
- Utiliser une horloge propre et des remises à zéro maîtrisées.
- Affecter toutes les sorties dans une logique combinatoire afin d’éviter les verrous involontaires.
- Synchroniser les entrées asynchrones avant leur utilisation.
- Séparer si possible logique combinatoire, registres et logique de sortie.
- Écrire un testbench avant l’implantation matérielle.
- Consulter les rapports de synthèse et de temporisation.
18.8 Exemples de description d’une porte et d’un compteur
18.8.1 Porte OU exclusif en VHDL
La porte XOR produit 1 lorsque ses entrées sont différentes. Sa description concurrente est directe :
Description synthétisable d’une porte XOR library ieee; | ||
a | b | y = a xor b |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
18.8.2 Multiplexeur 2 vers 1 en VHDL
Description d’un multiplexeur library ieee; |
Cette écriture conduit généralement à l’implantation d’un multiplexeur dans une LUT.
18.8.3 Compteur synchrone 4 bits en VHDL
Le compteur suivant possède une remise à zéro synchrone et une entrée de validation en. La valeur est incrémentée uniquement sur un front montant lorsque en = 1.
Compteur binaire synchrone sur 4 bits library ieee; |
18.8.4 Interprétation matérielle du compteur
- count représente un registre de quatre bascules.
- L’expression count + 1 produit un additionneur incrémenteur.
- Le test en sélectionne soit la valeur incrémentée, soit la conservation de la valeur actuelle.
- Le test rst sélectionne la valeur zéro au front d’horloge.
- La sortie q est reliée au registre count.
Front actif | rst | en | Action |
Oui | 1 | X | count ← 0000 |
Oui | 0 | 1 | count ← count + 1 |
Oui | 0 | 0 | count conserve sa valeur |
Non | X | X | aucune modification du registre |
18.8.5 Version Verilog équivalente
Compteur 4 bits en Verilog module compteur4 ( |
18.8.6 Notion de testbench
Un testbench est une description destinée uniquement à la simulation. Il ne représente généralement pas un circuit à synthétiser. Il instancie le composant testé, génère l’horloge, applique les entrées et vérifie les sorties.
1. Initialiser rst à 1 pendant quelques cycles.
2. Désactiver rst et activer en.
3. Vérifier que q s’incrémente à chaque front montant.
4. Désactiver en et vérifier la conservation de q.
5. Réactiver rst et vérifier le retour à zéro.
Applications courantes
Domaine | Exemples de fonctions programmables |
Automatisme | Séquenceurs, machines à états, interfaces capteurs-actionneurs |
Télécommunications | Codage, modulation, traitement de trames, interfaces série |
Traitement du signal | Filtres, FFT, traitement audio et vidéo |
Systèmes embarqués | Contrôleurs, accélérateurs matériels, interfaces processeur |
Instrumentation | Acquisition rapide, comptage, génération de signaux |
Prototypage | Validation d’une architecture avant réalisation spécialisée |
| Cybersécurité matérielle | Chiffrement, authentification et contrôle de flux |
Travaux dirigés
TD 1 — Identifier la famille adaptée
Pour chacune des applications suivantes, proposer la famille la plus adaptée et justifier :
- remplacer cinq portes logiques et un petit décodeur ;
- réaliser une machine à états avec vingt sorties et démarrage instantané ;
- implanter un filtre numérique contenant de nombreuses multiplications ;
- réaliser deux fonctions somme de produits partageant plusieurs termes ;
- développer un prototype de traitement vidéo reconfigurable.
TD 2 — Programmation conceptuelle d’un PLA
On souhaite réaliser F₁ = A̅B + AC et F₂ = A̅B + BC.
1. Lister les termes produits distincts.
2. Construire la table de programmation de la matrice ET.
3. Indiquer les connexions de la matrice OU.
4. Expliquer l’intérêt du partage du terme A̅B.
TD 3 — Ressources d’un PAL
Un PAL offre trois sorties, chacune limitée à quatre termes produits. Déterminer si les fonctions suivantes peuvent être implantées directement :
F₁ = A̅B + AC + BD
F₂ = AB̅ + AC̅ + BC + AD + CD
Proposer une solution pour la fonction qui dépasse la capacité.
TD 4 — LUT
1. Combien de bits de configuration contient une LUT à 3 entrées ? à 6 entrées ?
2. Une LUT à 4 entrées peut-elle réaliser une fonction quelconque de trois variables ?
3. Combien de valeurs faut-il programmer pour F(A,B,C,D) ?
4. Expliquer pourquoi une fonction de sept variables peut nécessiter plusieurs LUT à six entrées.
TD 5 — Comparaison CPLD–FPGA
Construire un tableau comparant capacité, démarrage, prévisibilité temporelle, mémoire intégrée, blocs DSP et domaines d’emploi.
TD 6 — Lecture d’une description VHDL
Expression à analyser y <= (a and b) or (not c); |
1. Écrire l’équation booléenne correspondante.
2. Établir la table de vérité.
3. Proposer un schéma à portes.
4. Indiquer si l’expression décrit une logique combinatoire ou séquentielle.
TD 7 — Compléter un multiplexeur
Écrire l’architecture VHDL d’un multiplexeur 4 vers 1 possédant les entrées d0 à d3 et les sélections s(1 downto 0).
TD 8 — Analyse du compteur
Le compteur 4 bits est initialement à 1110. rst reste à 0 et en vaut 1 pendant trois fronts actifs.
1. Donner la valeur après chaque front.
2. Expliquer le retour à 0000.
3. Donner la fréquence de q(3) si le compteur fonctionne continuellement avec une horloge de 16 MHz.
TD 9 — Détection d’une erreur de description
Dans un processus combinatoire, une sortie y est affectée uniquement lorsque sel = 1. Expliquer le matériel susceptible d’être inféré et proposer une correction.
TD 10 — Mini-cahier des charges
On souhaite commander quatre LED avec un compteur binaire, un bouton de validation et une remise à zéro. Proposer :
- l’interface du composant ;
- le principe de fonctionnement ;
- les ressources matérielles nécessaires ;
- une stratégie de simulation ;
- les précautions relatives au bouton asynchrone.
Activité pratique — Première conception HDL
| Objectif — Décrire, simuler et, si une carte est disponible, implanter une porte logique puis un compteur 4 bits. |
Matériel et logiciels possibles
- ordinateur équipé d’un simulateur VHDL ou Verilog ;
- outil de synthèse compatible avec la carte choisie ;
- carte CPLD ou FPGA avec horloge, boutons et LED ;
- documentation des broches et des niveaux électriques.
Étape 1 — Porte logique
1. Créer un nouveau projet.
2. Saisir la description d’une porte XOR.
3. Créer un testbench couvrant les quatre combinaisons d’entrée.
4. Lancer la simulation et comparer les résultats à la table de vérité.
5. Synthétiser et consulter le nombre de ressources utilisées.
Étape 2 — Compteur 4 bits
1. Saisir la description du compteur synchrone.
2. Générer une horloge de simulation.
3. Tester la remise à zéro et la validation.
4. Observer le débordement de 1111 vers 0000.
5. Examiner le schéma RTL produit par l’outil.
Étape 3 — Implantation sur une carte
1. Associer clk, rst, en et q aux broches physiques.
2. Vérifier les standards électriques des broches.
3. Choisir une horloge suffisamment lente ou ajouter un diviseur pour observer les LED.
4. Lancer placement, routage et analyse temporelle.
5. Générer le bitstream et programmer la carte.
6. Comparer le comportement réel à la simulation.
Précautions
- Un bouton mécanique doit être synchronisé et souvent anti-rebond.
- Une horloge ne doit pas être créée par une simple porte combinatoire.
- Les contraintes de broches et de fréquence doivent être renseignées.
- Les LED peuvent être actives à 0 selon la carte.
- Il faut éviter d’affecter deux sorties à la même broche.
Synthèse du chapitre
- La logique programmable configure des ressources matérielles internes au lieu de multiplier les circuits câblés.
- Le PLA possède une matrice ET et une matrice OU programmables.
- Le PAL possède une matrice ET programmable et une matrice OU fixe.
- Le CPLD regroupe plusieurs blocs de macrocelles reliés par une interconnexion programmable.
- Le FPGA utilise principalement des LUT, des bascules et un réseau de routage, complétés par des ressources spécialisées.
- VHDL et Verilog décrivent du matériel concurrent destiné à la simulation et à la synthèse.
- Une chaîne de conception comprend description, simulation, synthèse, placement-routage, analyse temporelle et programmation.
- Une description HDL doit être fonctionnellement correcte, synthétisable et compatible avec les contraintes temporelles.
Glossaire
Terme | Définition |
HDL | Langage de description matérielle. |
PLA | Réseau logique avec matrices ET et OU programmables. |
PAL | Réseau logique avec matrice ET programmable et matrice OU fixe. |
CPLD | Composant regroupant plusieurs blocs de macrocelles programmables. |
FPGA | Matrice de blocs logiques et de routage configurables sur le terrain. |
LUT | Petite mémoire réalisant la table de vérité d’une fonction. |
Macrocellule | Bloc contenant logique somme de produits, bascule et options de sortie. |
Synthèse | Transformation d’une description HDL en réseau de ressources matérielles. |
Placement | Affectation des ressources logiques à des emplacements physiques. |
Routage | Choix des interconnexions physiques entre les ressources. |
Bitstream | Fichier contenant les bits de configuration d’un FPGA. |
Testbench | Description de simulation appliquant des stimuli au circuit testé. |
RTL | Niveau de description basé sur registres et transferts de données. |
BRAM | Mémoire bloc intégrée dans un FPGA. |
DSP | Bloc matériel spécialisé pour les calculs arithmétiques rapides. |
Auto-évaluation
1. Quelles matrices sont programmables dans un PLA ?
2. Quelle est la principale différence architecturale entre un PLA et un PAL ?
3. Pourquoi un CPLD peut-il démarrer rapidement ?
4. Qu’est-ce qu’une LUT à quatre entrées ?
5. Citer trois ressources spécialisées d’un FPGA.
6. Pourquoi dit-on qu’un HDL décrit du matériel concurrent ?
7. Quelle est la différence entre simulation et synthèse ?
8. Quelles ressources matérielles sont déduites du compteur VHDL ?
9. Quel est le rôle du placement-routage ?
10. Pourquoi faut-il analyser les contraintes temporelles ?
Corrigés des travaux dirigés
Corrigé du TD 1
- Quelques portes et un décodeur : logique câblée ou petit PAL/CPLD selon l’évolutivité recherchée.
- Machine à états avec démarrage instantané : CPLD, grâce à sa configuration non volatile et à ses nombreuses macrocelles.
- Filtre avec multiplications : FPGA, car les blocs DSP et la mémoire interne sont adaptés.
- Fonctions somme de produits partageant des termes : PLA.
- Traitement vidéo reconfigurable : FPGA.
Corrigé du TD 2
Termes distincts : P₁ = A̅B, P₂ = AC et P₃ = BC. La matrice OU réalise F₁ = P₁ + P₂ et F₂ = P₁ + P₃. Le partage de P₁ économise un terme produit.
Corrigé du TD 3
F₁ utilise trois termes produits et peut être implantée directement. F₂ en utilise cinq et dépasse la limite de quatre. Il faut la simplifier, la décomposer sur plusieurs macrocelles ou choisir un composant offrant davantage de termes produits.
Corrigé du TD 4
- LUT à 3 entrées : 2³ = 8 bits. LUT à 6 entrées : 2⁶ = 64 bits.
- Oui. Une entrée peut être fixée ou ignorée.
- Une fonction de quatre variables possède 16 combinaisons, donc 16 valeurs.
- Une LUT à six entrées ne peut dépendre directement que de six variables. Une fonction générale de sept variables doit être décomposée entre plusieurs LUT et un multiplexeur.
Corrigé du TD 5
Le tableau de comparaison de la section 18.5.7 fournit les principaux éléments. Le CPLD est adapté au contrôle déterministe et au démarrage immédiat ; le FPGA offre beaucoup plus de ressources de calcul, de mémoire et de routage.
Corrigé du TD 6
L’équation est Y = AB + C̅. Il s’agit d’une logique combinatoire. Y vaut 0 uniquement lorsque C = 1 et que AB = 0. Le schéma utilise une porte ET, un inverseur sur C et une porte OU.
A | B | C | AB | C̅ | Y |
0 | 0 | 0 | 0 | 1 | 1 |
0 | 0 | 1 | 0 | 0 | 0 |
0 | 1 | 0 | 0 | 1 | 1 |
0 | 1 | 1 | 0 | 0 | 0 |
1 | 0 | 0 | 0 | 1 | 1 |
1 | 0 | 1 | 0 | 0 | 0 |
1 | 1 | 0 | 1 | 1 | 1 |
1 | 1 | 1 | 1 | 0 | 1 |
Corrigé du TD 7
Une solution VHDL possible with s select |
Corrigé du TD 8
- Valeurs successives : 1111, 0000, 0001.
- Le registre est limité à quatre bits ; 1111 + 1 produit 0000 avec une retenue ignorée.
- Le bit q(3) divise la fréquence par 16. Pour 16 MHz, sa fréquence est 1 MHz.
Corrigé du TD 9
L’absence d’affectation lorsque sel = 0 demande de conserver la valeur précédente et peut donc inférer un verrou. Il faut donner une valeur par défaut ou ajouter explicitement une branche else afin que y soit définie pour toutes les combinaisons.
Corrigé du TD 10
- Interface : clk, rst, en et q(3 downto 0).
- Une bascule par bit, un incrémenteur et des multiplexeurs de commande sont nécessaires.
- Le testbench doit vérifier reset, comptage, arrêt et débordement.
- Le bouton doit être synchronisé et traité contre les rebonds.
- Si l’horloge est trop rapide pour les LED, utiliser un diviseur ou une impulsion de validation lente.
Réponses à l’auto-évaluation
1. Les matrices ET et OU.
2. Le PAL possède une matrice OU fixe, alors que celle du PLA est programmable.
3. Sa configuration est souvent stockée dans une mémoire non volatile interne.
4. Une mémoire de 16 bits capable de représenter une fonction quelconque de quatre variables.
5. Par exemple : BRAM, blocs DSP, PLL, transceivers ou processeur intégré.
6. Parce que plusieurs équations et blocs matériels agissent simultanément.
7. La simulation vérifie le comportement ; la synthèse crée une structure matérielle.
8. Quatre bascules, un incrémenteur et la logique de sélection reset/enable.
9. Associer les ressources logiques aux éléments physiques et choisir leurs connexions.
10. Pour vérifier que les données arrivent et se stabilisent dans les délais imposés par l’horloge.
Ouverture pédagogique
Ce chapitre constitue une première introduction. Une formation plus avancée peut poursuivre par les testbenches, les contraintes temporelles, les machines à états en HDL, les mémoires internes, les interfaces série, l’arithmétique pipeline et l’implantation d’un système complet sur FPGA.
| Résultat d’apprentissage attendu — À l’issue du chapitre, l’étudiant doit être capable de choisir une famille programmable simple, de comprendre une chaîne de conception et d’écrire puis analyser une description HDL élémentaire. |