Leçon 18 sur 18

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 antifusiblesGénéralement irréversibleProgrammation permanente

EEPROM ou Flash

Non volatile et réinscriptibleLa 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 rapidesFiltres, traitement du signal, vision

PLL/MMCM

Génération et gestion des horlogesMultiplication, division, déphasage

Transceivers

Liaisons série à haut débit

Ethernet, PCIe, vidéo

Processeur intégré

Exécution logicielle associée au matérielSystè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 dominantMacrocelle 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évisibleDé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 physiquementRessources internes configurées

Modification

Nécessite souvent une nouvelle carteNouveau fichier de configuration

Nombre de composants

Peut devenir important

Souvent réduit

Temps de développementRapide pour une fonction très simpleAvantageux 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 composantsPeut ê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érielleMise à 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;
use ieee.std_logic_1164.all;

entity porte_et is
    port (
        a : in  std_logic;
        b : in  std_logic;
        y : out std_logic
    );
end entity porte_et;

architecture rtl of porte_et is
begin
    y <= a and b;
end architecture rtl;

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 (
    input  wire a,
    input  wire b,
    output wire y
);
    assign y = a & b;
endmodule

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_combFonctions 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;
use ieee.std_logic_1164.all;

entity porte_xor is
    port (a, b : in std_logic; y : out std_logic);
end entity;

architecture rtl of porte_xor is
begin
    y <= a xor b;
end architecture;

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;
use ieee.std_logic_1164.all;

entity mux2 is
    port (
        d0, d1 : in  std_logic;
        s      : in   std_logic;
        y      : out std_logic
    );
end entity;

architecture rtl of mux2 is
begin
    y <= d0 when s = '0' else d1;
end architecture;

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;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

entity compteur4 is
    port (
        clk : in  std_logic;
        rst : in  std_logic;
        en  : in   std_logic;
        q   : out std_logic_vector(3 downto 0)
    );
end entity;

architecture rtl of compteur4 is
    signal count : unsigned(3 downto 0) := (others => '0');
begin
    process(clk)
    begin
        if rising_edge(clk) then
            if rst = '1' then
                count <= (others => '0');
            elsif en = '1' then
                count <= count + 1;
            end if;
        end if;
    end process;

    q <= std_logic_vector(count);
end architecture;

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 (
    input  wire        clk,
    input  wire        rst,
    input  wire        en,
    output reg  [3:0] q
);
    always @(posedge clk) begin
        if (rst)
            q <= 4'b0000;
        else if (en)
            q <= q + 1'b1;
    end
endmodule

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érielleChiffrement, 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

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
    y <= d0 when "00",
         d1 when "01",
         d2 when "10",
         d3 when others;

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.