0% ont trouvé ce document utile (0 vote)
55 vues26 pages

VHDL

Le document compare la logique câblée et la logique programmée dans la conception de circuits électroniques, en soulignant que la logique câblée est rapide mais rigide, tandis que la logique programmée est flexible mais légèrement plus lente. Il présente également des dispositifs programmables comme le PLA, PAL et CPLD, chacun ayant ses propres avantages et inconvénients en termes de flexibilité, coût et complexité. Enfin, il décrit l'architecture des FPGA, qui permet de créer des circuits numériques complexes grâce à une interconnexion programmable et des blocs logiques configurables.
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
55 vues26 pages

VHDL

Le document compare la logique câblée et la logique programmée dans la conception de circuits électroniques, en soulignant que la logique câblée est rapide mais rigide, tandis que la logique programmée est flexible mais légèrement plus lente. Il présente également des dispositifs programmables comme le PLA, PAL et CPLD, chacun ayant ses propres avantages et inconvénients en termes de flexibilité, coût et complexité. Enfin, il décrit l'architecture des FPGA, qui permet de créer des circuits numériques complexes grâce à une interconnexion programmable et des blocs logiques configurables.
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

1.

Logique câblée vs Logique programmée

Il existe deux grandes façons de concevoir des circuits électroniques : la


logique câblée et la logique programmée. Voici la différence entre les
deux de manière simple :

📌 Logique câblée (Circuits fixes)

👉 Définition :

 Un circuit électronique est conçu avec des composants physiques


fixes (portes logiques AND, OR, NOT, etc.).

 Une fois fabriqué, on ne peut plus modifier son fonctionnement.

👉 Avantages :
✅ Très rapide car le traitement est parallèle.
✅ Pas besoin de programmation.

👉 Inconvénients :
❌ Pas flexible : si on veut modifier le circuit, il faut tout refaire.
❌ Prend beaucoup de place si le circuit est complexe.

🛠 Exemple de logique câblée : Additionneur Binaire

Un additionneur à 2 bits peut être fabriqué avec des portes logiques


câblées. Une fois assemblé, il ne peut pas être modifié.

📌 Logique programmée (Circuits modifiables)

👉 Définition :

 On utilise des circuits électroniques reprogrammables comme les


FPGA (Field Programmable Gate Array) et les
microcontrôleurs.

 Le fonctionnement du circuit peut être modifié en changeant son


programme.

👉 Avantages :
✅ Très flexible : on peut changer la fonction du circuit à tout moment.
✅ Moins de composants physiques, donc un gain de place.
✅ Moins de coûts de fabrication (pas besoin de refaire un circuit à chaque
modification).

👉 Inconvénients :
❌ Plus lent qu’un circuit câblé car il utilise une logique séquentielle.
❌ Nécessite une programmation avec un langage comme VHDL.
🛠 Exemple de logique programmée : Additionneur sur un FPGA

Avec un FPGA, on peut écrire un code VHDL qui décrit un additionneur


binaire. Si on veut changer l’additionneur en un autre circuit (ex : un
compteur), il suffit de reprogrammer le FPGA sans modifier le matériel.

📊 Comparaison rapide :

Critère Logique câblée Logique programmée

Flexibilité ❌ Pas modifiable ✅ Modifiable

Vitesse ✅ Très rapide ⚠️Un peu plus lent

❌ Cher pour des ✅ Économique pour des mises à


Coût
modifications jour

Taille du
❌ Peut être grand ✅ Optimisé et compact
circuit

Additionneur avec portes Additionneur programmable en


Exemple
logiques VHDL

En résumé :

 Logique câblée = rapide mais rigide.

 Logique programmée = flexible et évolutive, mais un peu plus


lente.

Tu veux un exemple détaillé en VHDL pour illustrer la logique


programmée ? 😊

🔹 Réseau logique programmable - PLA (Programmable Logic Array)

Le PLA (Programmable Logic Array) est un type de PLD


(Programmable Logic Device) qui permet de programmer à la fois
les portes AND et OR. C'est l'un des circuits logiques programmables les
plus flexibles.

📌 1. Principe du PLA

Un PLA est un circuit intégré qui contient :


✔ Une matrice AND programmable → Permet de créer des expressions
logiques de base.
✔ Une matrice OR programmable → Combine les résultats des AND
pour obtenir la sortie finale.
📌 Avantage principal : Très flexible, car on peut personnaliser
entièrement les connexions des portes logiques.

📌 Inconvénient : Plus complexe et coûteux que d'autres PLD comme le


PAL.

📌 2. Fonctionnement du PLA

Un PLA fonctionne en utilisant des fusibles programmables sur une


matrice AND-OR.

Exemple simple : Réalisation d’une fonction logique

Si on veut réaliser la fonction :

Y=(A⋅B)+(B⋅C)+(A‾⋅C)Y = (A \cdot B) + (B \cdot C) + (\overline{A} \cdot C)

On utilise une matrice PLA qui :


1️⃣ Programme les combinaisons AND :

 A⋅BA \cdot B

 B⋅CB \cdot C

 A‾⋅C\overline{A} \cdot C
2️⃣ Programme la somme OR pour obtenir la sortie Y.

Schéma d'un PLA simplifié :

Entré Sorti
Matrice AND Matrice OR
es e

A⋅BA \cdot B, B⋅CB \cdot Y=(A⋅B)+(B⋅C)+(A‾⋅C)Y = (A \cdot


A, B, C C, A‾⋅C\overline{A} \cdot B) + (B \cdot C) + (\overline{A} \ Y
C cdot C)

📌 3. Comparaison entre PLA et autres PLD

Type de Matrice Exemples


Matrice OR Flexibilité
PLD AND d’application

Programmab Programmab Circuits logiques


PLA ✅ Très flexible
le le complexes

Programmab Circuits rapides et


PAL Fixe ⚠️Moins flexible
le optimisés

GAL Programmab Programmab ✅ Évolution des PAL


Type de Matrice Exemples
Matrice OR Flexibilité
PLD AND d’application

Reprogrammabl
le le
e

Programmab Programmab Contrôleurs, gestion


CPLD ✅ Très puissant
le le d’interfaces

📌 4. Applications des PLA

✔ Remplacement de circuits logiques câblés pour optimiser l’espace.


✔ Réalisation d’unités de contrôle pour les processeurs.
✔ Circuits de communication et d’automatisation.

📌 Exemple concret :
Dans un système embarqué, un PLA peut être utilisé pour décoder des
adresses mémoire et activer un périphérique spécifique en fonction
des signaux reçus.

🎯 Conclusion

🔹 Le PLA est un circuit programmable très flexible qui permet de


personnaliser AND et OR.
🔹 Il est utilisé pour réaliser des fonctions logiques complexes et
remplacer des circuits fixes.
🔹 Il est plus puissant que le PAL, mais aussi plus coûteux et parfois
plus lent.

👉 Tu veux un exemple en VHDL pour programmer un PLA ? 😊

🔹 PAL (Programmable Array Logic)

Le PAL (Programmable Array Logic) est un type de circuit logique


programmable appartenant à la famille des PLD (Programmable Logic
Devices). Il est plus simple et plus rapide que le PLA, mais moins flexible.

📌 1. Principe du PAL

Un PAL est un circuit contenant :


✔ Une matrice AND programmable → Permet de définir les produits
logiques.
✔ Une matrice OR fixe → Combine les produits pour générer la sortie.
📌 Différence avec un PLA :

 Dans un PLA, les matrices AND et OR sont programmables.

 Dans un PAL, seule la matrice AND est programmable, la matrice


OR est fixe.

📌 Avantages du PAL :
✅ Plus rapide que le PLA.
✅ Moins coûteux.
✅ Plus simple à programmer.

📌 Inconvénients du PAL :
❌ Moins flexible car la matrice OR est fixe.
❌ Ne peut pas réaliser des fonctions logiques très complexes comme un
CPLD ou un FPGA.

📌 2. Fonctionnement du PAL

Dans un PAL, on programme uniquement la matrice AND pour obtenir les


expressions logiques souhaitées.

Exemple de fonction logique dans un PAL

Imaginons que nous voulons réaliser la fonction logique suivante :

Y=(A⋅B)+(A‾⋅C)Y = (A \cdot B) + (\overline{A} \cdot C)

Dans un PAL, nous pouvons :


1️⃣ Programmer la matrice AND pour générer les termes A⋅BA \cdot B
et A‾⋅C\overline{A} \cdot C.
2️⃣ Utiliser la matrice OR fixe pour additionner ces termes et obtenir Y.

📌 3. Exemple : PAL16L8

Un des PAL les plus courants est le PAL16L8, qui a :


✔ 10 entrées (pins 1-9 et 11)
✔ 2 sorties (pins 12 et 19)
✔ 6 entrées/sorties configurables (pins 13-18)

📌 Particularité : Chaque sortie est contrôlée par un tampon inverseur


(tri-state buffer) pour permettre différentes configurations.

📌 Utilisation : Ce type de PAL est souvent utilisé dans les systèmes


embarqués, les circuits de contrôle et les interfaces de
communication.
📌 4. Comparaison entre PAL, PLA et GAL

Type de Matrice Reprogrammab


Matrice OR Flexibilité
PLD AND le ?

Programmab Programmab
PLA ✅ Très flexible ❌ Non
le le

Programmab ⚠️Moins
PAL Fixe ❌ Non
le flexible

Programmab Programmab
GAL ✅ Flexible ✅ Oui (EEPROM)
le le

📌 5. Applications des PAL

✔ Remplacement de circuits logiques fixes.


✔ Systèmes de contrôle industriels.
✔ Gestion d’adresses mémoire dans les systèmes embarqués.
✔ Automatisation et robotique.

📌 Exemple concret :
Dans une carte électronique, un PAL peut être utilisé pour activer
différents périphériques en fonction des signaux de commande.

🎯 Conclusion

🔹 Le PAL est un circuit programmable plus simple et plus rapide


que le PLA.
🔹 Il est utilisé pour des applications nécessitant des circuits
logiques personnalisés avec une bonne rapidité.
🔹 Son principal inconvénient est sa matrice OR fixe, qui limite sa
flexibilité.

👉 Tu veux un exemple en VHDL pour programmer un PAL ? 😊

🔹 CPLD (Complex Programmable Logic Device)

Le CPLD (Complex Programmable Logic Device) est un circuit logique


programmable plus avancé que les PAL, GAL et PLA. Il est utilisé pour
des applications plus complexes, nécessitant un grand nombre de
portes logiques et une rapidité d'exécution élevée.

📌 1. Principe du CPLD
📌 Définition :
Un CPLD est un circuit programmable qui contient plusieurs blocs
logiques interconnectés, appelés macrocells.

✔ Composé de plusieurs blocs logiques (LUs - Logic Units).


✔ Programmable en VHDL ou Verilog.
✔ Plus rapide et plus puissant que les PAL et GAL.
✔ Non volatil : Garde sa configuration même après une coupure
d’alimentation.

📌 Différence entre CPLD et FPGA :

 CPLD : Bonne performance pour des circuits logiques simples et


rapides.

 FPGA : Plus puissant, mais plus complexe et consomme plus


d’énergie.

📌 2. Structure d’un CPLD

Un CPLD est constitué de plusieurs blocs logiques programmables


reliés entre eux par un réseau d’interconnexion global.

📌 Composition d’un CPLD :


🔹 Macrocells : Blocs logiques contenant des portes logiques et des
bascules.
🔹 Réseau d’interconnexion programmable : Permet de relier les blocs
logiques entre eux.
🔹 Mémoire non volatile : Garde la programmation même après
extinction.

📌 Avantage du CPLD :
✅ Plus rapide que les FPGA pour certaines applications.
✅ Moins de consommation d’énergie qu’un FPGA.
✅ Peut être utilisé pour du prototypage rapide.

📌 Inconvénients du CPLD :
❌ Moins puissant et moins flexible qu’un FPGA.
❌ Nombre de portes logiques limité.

📌 3. Exemple de CPLD : Xilinx XC9500

Un exemple de CPLD populaire est le Xilinx XC9500, qui contient :


✔ De 36 à 288 macrocells.
✔ Interconnexions rapides pour des circuits logiques complexes.
✔ Mémoire EEPROM pour garder la programmation.
✔ Utilisé dans les systèmes embarqués, l’automatisation
industrielle et les interfaces de communication.

📌 4. Comparaison entre CPLD, PAL, GAL et FPGA

Type de Nombre de Reprogramma


Applications
PLD portes ble

Petites fonctions
PAL 10 - 100 ❌ Non
logiques

Circuits logiques
GAL 10 - 100 ✅ Oui
évolutifs

Interfaces, contrôle
CPLD 100 - 10 000 ✅ Oui
matériel

10 000 - Processeurs, IA,


FPGA ✅ Oui
millions télécoms

📌 5. Applications des CPLD

✔ Remplacement des circuits logiques câblés.


✔ Contrôleurs embarqués pour gérer des entrées/sorties.
✔ Systèmes de communication pour gérer des signaux numériques.
✔ Automatisation industrielle.

📌 Exemple concret :
Un CPLD peut être utilisé pour contrôler un écran LED en gérant les
signaux d’affichage et les entrées utilisateur.

🎯 Conclusion

🔹 Le CPLD est une solution intermédiaire entre les GAL/PAL et les


FPGA.
🔹 Il est utilisé pour des circuits logiques complexes mais rapides,
tout en restant moins coûteux que les FPGA.
🔹 Son principal avantage est sa mémoire non volatile et ses
interconnexions optimisées.

👉 Tu veux un exemple en VHDL pour programmer un CPLD ? 😊

🔹 Structure interne d’un FPGA (Field Programmable Gate Array)


Un FPGA est un circuit programmable constitué de milliers à des
millions de blocs logiques interconnectés. Il permet de créer des
circuits numériques complexes en utilisant VHDL ou Verilog.

📌 1. Architecture générale d’un FPGA

Un FPGA est composé de plusieurs éléments principaux :

1️⃣ Blocs logiques configurables (CLB - Configurable Logic Blocks)


2️⃣ Matrice d’interconnexion programmable
3️⃣ Blocs d’Entrée/Sortie (I/O Blocks)
4️⃣ Blocs de mémoire et DSP
5️⃣ Horloge et gestion de l’alimentation

📌 Fonctionnement général :

 Les CLB réalisent les calculs et opérations logiques.

 La matrice d’interconnexion relie ces blocs selon la configuration


programmée.

 Les blocs d’Entrée/Sortie (I/O) communiquent avec l’extérieur.

 Les blocs mémoire et DSP permettent d’accélérer certaines


opérations.

📌 2. Description détaillée des composants d’un FPGA

1️⃣ Blocs Logiques Configurables (CLB - Configurable Logic Blocks)

Les CLB sont les unités de calcul de base du FPGA. Chaque CLB contient :

✔ LUT (Look-Up Table) → Permet d’implémenter n’importe quelle


fonction logique.
✔ Bascule D (Flip-Flop) → Permet d’implémenter des circuits
séquentiels.
✔ Multiplexeurs et portes logiques → Pour acheminer les signaux.

📌 Exemple : LUT 4 entrées


Une LUT à 4 entrées peut réaliser n’importe quelle fonction logique
de 4 variables (A,B,C,DA, B, C, D).
Elle fonctionne comme une table de vérité programmable.

2️⃣ Matrice d’Interconnexion Programmable

📌 Rôle :
 Connecte les CLB entre eux selon le design choisi.

 Utilise des multiplexeurs et des interrupteurs programmables


pour modifier les connexions.

 Permet de reconfigurer le FPGA en changeant ces connexions.

📌 Avantage :
✅ Permet une connexion flexible et évolutive des blocs logiques.

3️⃣ Blocs d’Entrée/Sortie (I/O Blocks)

📌 Rôle :

 Permettent la communication entre le FPGA et les autres


composants (capteurs, mémoires, écrans, moteurs, etc.).

 Supportent différents standards de tension (3.3V, 1.8V, LVDS,


etc.).

📌 Exemple :
Un FPGA utilisé pour contrôler un écran utilisera ses I/O Blocks pour
envoyer des signaux vidéo.

4️⃣ Blocs de mémoire et DSP

📌 Blocs mémoire (RAM intégrée) :

 Certains FPGA contiennent de la mémoire RAM embarquée pour


stocker des données.

 Exemple : FIFO, Dual-Port RAM, Block RAM (BRAM).

📌 Blocs DSP (Digital Signal Processing) :

 Utilisés pour les calculs mathématiques rapides (ex :


multiplication, filtrage).

 Très utiles pour les traitements d’image, audio et IA.

📌 Exemple :
Un FPGA utilisé pour l’intelligence artificielle exploitera ses blocs
DSP pour accélérer les calculs matriciels.

5️⃣ Horloge et gestion de l’alimentation

📌 Générateur d’horloge :
 Chaque FPGA possède un circuit d’horloge programmable.

 Permet de synchroniser les opérations des bascule D et des


circuits séquentiels.

📌 Gestion de l’énergie :

 Certains FPGA ont des modes basse consommation.

 L’alimentation dépend du modèle (1.2V, 1.8V, 3.3V, etc.).

📌 3. Schéma simplifié d’un FPGA

+------------------------------------------------------+

| Entrées / Sorties (I/O Blocks) |

| +----------+ +----------+ +----------+ |

|| I/O | | I/O | | I/O | |

| +----------+ +----------+ +----------+ |

| |

| +------------------------------------------------+ |

|| Matrice d'Interconnexion ||

| +------------------------------------------------+ |

| |

| +----------+ +----------+ +----------+ |

| | CLB | | CLB | | CLB | |

| +----------+ +----------+ +----------+ |

| |

| +------------------------------------------------+ |

| | Blocs mémoire (RAM, FIFO) & DSP ||

| +------------------------------------------------+ |

| |

| Horloge et Gestion de l’énergie |

+------------------------------------------------------+
📌 4. Comparaison FPGA vs CPLD

Critère FPGA CPLD

Nombre de Très grand (10 000 -


Moyen (100 - 10 000)
portes millions)

Programmatio
VHDL / Verilog VHDL / Verilog
n

Reprogramma ✅ Oui (EEPROM,


✅ Oui (SRAM, Flash)
ble Flash)

Consommatio
⚠️Moyenne/Élevée ✅ Faible
n

Circuits logiques
Utilisation Circuits très complexes
simples

📌 5. Applications des FPGA

📌 Les FPGA sont utilisés dans :


✔ Traitement d’image (caméras intelligentes, vidéosurveillance).
✔ Intelligence Artificielle (accélération des réseaux de neurones).
✔ Télécommunications (réseaux 5G, Wi-Fi, traitement du signal).
✔ Aérospatial & Défense (systèmes radar, drones autonomes).
✔ Automobile (ADAS, capteurs intelligents pour voitures autonomes).

📌 Exemple concret :
Un FPGA peut être utilisé dans une voiture autonome pour analyser
en temps réel les images des caméras et détecter les obstacles.

🎯 Conclusion

🔹 Un FPGA est un circuit programmable ultra-puissant et flexible.


🔹 Il est composé de blocs logiques (CLB), d’une matrice
d’interconnexion et de blocs d’Entrée/Sortie.
🔹 Il est utilisé dans les applications avancées comme l’IA, le
traitement d’image et les télécommunications.

👉 Tu veux un exemple en VHDL pour programmer un FPGA ? 😊

🔹 Bloc CLB – Étude de Xilinx Série 7

Les CLB (Configurable Logic Blocks) sont les éléments fondamentaux


d'un FPGA Xilinx Série 7. Ils permettent de créer et d’exécuter des
circuits logiques programmables en utilisant VHDL ou Verilog.
📌 1. Rôle du CLB dans un FPGA

📌 Définition :
Un CLB (Configurable Logic Block) est un bloc logique
programmable qui réalise des opérations logiques et arithmétiques
dans un FPGA.

📌 Chaque CLB contient :


✔ LUT (Look-Up Table) → Stocke des fonctions logiques programmables.
✔ Bascule D (Flip-Flop) → Gère les circuits séquentiels synchronisés par
une horloge.
✔ Multiplexeurs et interconnexions → Permettent de connecter les
différentes parties du FPGA.

📌 Avantages des CLB :


✅ Très flexibles → Peuvent être configurés pour exécuter n’importe quelle
fonction logique.
✅ Optimisés pour la vitesse → Permettent le calcul parallèle rapide.
✅ Consommation optimisée → Xilinx Série 7 utilise une technologie
avancée pour réduire la consommation d’énergie.

📌 2. Structure des CLB dans les FPGA Xilinx Série 7

Les CLB des FPGA Xilinx Série 7 sont plus avancés que les
générations précédentes et sont composés de plusieurs SLICE (tranches
logiques).

📌 Un CLB dans un FPGA Xilinx Série 7 contient :

 Deux SLICE (SLICEM et SLICEL)

 Chaque SLICE contient 4 LUT de 6 entrées (LUT6)

 8 bascules D pour la logique séquentielle

 Multiplexeurs pour les interconnexions

📌 Différence entre SLICEM et SLICEL :


✔ SLICEM (Memory Slice) : Peut être utilisé pour stocker des données
(RAM, mémoire FIFO, Shift Register).
✔ SLICEL (Logic Slice) : Utilisé uniquement pour la logique
combinatoire et séquentielle.

📌 Avantages de la structure en SLICE :


✅ Optimisation des ressources → Permet d’utiliser le FPGA de manière
plus efficace.
✅ Combinaison de mémoire et de logique → Améliore les
performances.
✅ Plus grande densité de calcul → Permet d’implémenter des circuits
plus complexes dans un FPGA de même taille.

📌 3. Fonctionnement des LUT dans les CLB

📌 Qu’est-ce qu’une LUT (Look-Up Table) ?


Une LUT (Look-Up Table) est une mémoire qui stocke une table de
vérité pour réaliser une fonction logique.

📌 Dans Xilinx Série 7 :

 Chaque LUT peut avoir jusqu’à 6 entrées (LUT6).

 Une LUT6 peut implémenter n’importe quelle fonction


logique à 6 variables.

 Les LUT sont regroupées dans des SLICE pour former des CLB.

📌 Exemple : LUT réalisant la fonction XOR


Si nous avons une LUT configurée pour :

Y=A⊕BY = A \oplus B

Elle peut directement stocker la table de vérité correspondante et


fournir le résultat en un seul cycle.

📌 4. Schéma d’un CLB dans un FPGA Xilinx Série 7

+--------------------------------------------------+

| CLB (Xilinx 7) |

|--------------------------------------------------|

| +------------+ +------------+ +------------+ |

| | LUT6 (A) | | LUT6 (B) | | LUT6 (C) | |

| +------------+ +------------+ +------------+ |

| +------------+ +------------+ +------------+ |

| | LUT6 (D) | | Flip-Flop | | MUX | |

| +------------+ +------------+ +------------+ |

| |

| Interconnexion et configuration dynamique |


+--------------------------------------------------+

📌 Explication du schéma :
✔ LUT6 (A, B, C, D) : Stockent des fonctions logiques programmables.
✔ Flip-Flop : Permettent la synchronisation des signaux avec l’horloge.
✔ MUX : Sélectionnent les chemins logiques à suivre selon les besoins du
circuit.
✔ Interconnexion : Connecte les CLB entre eux selon la programmation
en VHDL.

📌 5. Comparaison avec les CLB des générations précédentes

Nombre de LUT Nombre de


Génération Utilisation mémoire
par CLB Flip-Flop

Xilinx Pas de mémoire dans


4 LUT (LUT4) 8 FF
Spartan-3 le CLB

Xilinx Pas de mémoire dans


4 LUT (LUT6) 8 FF
Spartan-6 le CLB

Xilinx Série Mémoire et registres


8 LUT (LUT6) 16 FF
7 intégrés

📌 Avantages de Xilinx Série 7 :


✅ Plus de LUT par CLB → Permet de stocker plus de fonctions logiques.
✅ Plus de Flip-Flop → Meilleure gestion des circuits séquentiels.
✅ Utilisation de la mémoire dans les SLICE → Permet d’intégrer
directement de la RAM et des FIFO.

📌 6. Applications des CLB dans un FPGA

📌 Les CLB sont utilisés pour :


✔ Circuits logiques complexes (additionneurs, multiplexeurs,
compteurs).
✔ Automates séquentiels (machines à états, registres à décalage).
✔ Circuits de traitement du signal (filtres numériques, FFT).
✔ Unités de calcul pour l’IA et le deep learning.

📌 Exemple concret :
Dans un FPGA utilisé pour le traitement d’image, les CLB peuvent
être programmés pour appliquer un filtre (comme une convolution)
en temps réel.
🎯 Conclusion

🔹 Le CLB est l’élément fondamental du FPGA et permet


d’implémenter des fonctions logiques programmables.
🔹 Dans Xilinx Série 7, les CLB sont composés de SLICE contenant
des LUT6 et des bascules.
🔹 Ils permettent d’optimiser la gestion de la logique combinatoire
et séquentielle pour des applications avancées.

👉 Tu veux un exemple en VHDL pour programmer un CLB dans un


FPGA Xilinx Série 7 ? 😊

Déclaration de bibliothèques en VHDL

En VHDL, les bibliothèques contiennent des définitions de types, des


fonctions et des composants réutilisables. Avant d'utiliser certaines
fonctionnalités, il est nécessaire d'inclure les bibliothèques appropriées en
les déclarant en début de code.

1. Syntaxe générale de déclaration de bibliothèque

library nom_de_la_bibliothèque;

use nom_de_la_bibliothèque.nom_du_package.all;

 library : Permet d’inclure une bibliothèque.

 use : Permet d’utiliser un package spécifique de cette bibliothèque.

2. Les bibliothèques IEEE standardisées

L'IEEE (Institute of Electrical and Electronics Engineers) a défini


plusieurs bibliothèques importantes en VHDL :

a) IEEE.STD_LOGIC_1164 (types de signaux logiques)

Cette bibliothèque est essentielle pour manipuler des signaux logiques


multi-valeurs (std_logic, std_logic_vector).

library ieee;

use ieee.std_logic_1164.all;

Elle définit :

 std_logic : Un signal logique pouvant prendre plusieurs valeurs ('0',


'1', 'Z', 'X', etc.).
 std_logic_vector : Un tableau de plusieurs std_logic (utile pour les
bus de données).

📌 Exemple d'utilisation :

signal a : std_logic;

signal b : std_logic_vector(7 downto 0);

b) IEEE.NUMERIC_STD (opérations arithmétiques)

Cette bibliothèque est utilisée pour effectuer des opérations


mathématiques sur des signaux binaires.

use ieee.numeric_std.all;

Elle définit les types :

 signed : Pour représenter des nombres entiers signés


(positifs/négatifs).

 unsigned : Pour des nombres entiers non signés (positifs


uniquement).

📌 Exemple : Addition de nombres binaires

signal x, y : unsigned(3 downto 0);

signal sum : unsigned(4 downto 0); -- 4 bits + 1 bit de retenue

begin

sum <= x + y;

c) IEEE.STD_LOGIC_ARITH et IEEE.STD_LOGIC_UNSIGNED
(Anciennes versions)

⚠️Obsolètes, remplacées par numeric_std, mais parfois utilisées dans


d’anciens projets.

use ieee.std_logic_arith.all;

use ieee.std_logic_unsigned.all;

3. Autres bibliothèques utiles

 standard : Contient les types de base (integer, boolean, etc.).


 work : Utilisée pour stocker les modules et composants créés par
l’utilisateur.

 library work;

 use work.all;

Permet d’utiliser un module défini dans le même projet.

4. Exemple complet d’un programme VHDL avec bibliothèques

library ieee;

use ieee.std_logic_1164.all;

use ieee.numeric_std.all;

entity Exemple is

port (

A, B : in unsigned(3 downto 0);

S : out unsigned(4 downto 0)

);

end Exemple;

architecture Comportement of Exemple is

begin

S <= A + B; -- Addition des deux entrées

end Comportement;

➡️Ici, on ajoute deux signaux de 4 bits (unsigned) et le résultat est


stocké sur 5 bits.

Conclusion

La déclaration de bibliothèques est essentielle en VHDL car elle permet : ✅


De manipuler des types avancés (std_logic, unsigned, etc.).
✅ De réaliser des opérations logiques et arithmétiques.
✅ De réutiliser du code modulaire et structuré.

Avez-vous besoin d'un exemple plus spécifique ? 😊


Types des signaux en VHDL

En VHDL, les signaux utilisés dans la description matérielle doivent avoir


un type défini. Ces types permettent de manipuler les données et de
garantir une bonne simulation et synthèse du circuit.

1. Types de base en VHDL

VHDL propose des types prédéfinis pour représenter des valeurs


numériques, booléennes et logiques.

a) Types numériques

Type Description Exemple

Entiers entre -231−12^{31}-1 et


intege signal x : integer
231−12^{31}-1 (peut être restreint avec
r range 0 to 255;
range)

natura
Entiers positifs (0, 1, 2, ...) signal y : natural;
l

positiv
Entiers strictement positifs (1, 2, 3, ...) signal z : positive;
e

⚠️Remarque : Les nombres en binaire ne sont pas directement


manipulables avec ces types. Il faut utiliser numeric_std (signed et
unsigned).

b) Types booléens

Valeurs
Type Exemple
possibles

boolea signal flag : boolean :=


true, false
n false;

c) Types binaires et logiques

Type Description Exemple

Peut être '0' ou '1'


bit signal a : bit := '0';
uniquement
Type Description Exemple

bit_vector(n downto signal b : bit_vector(7


Vecteur de bit
0) downto 0) := "11001100";

Signal logique multi-


std_logic valeurs (voir tableau ci- signal c : std_logic := '1';
dessous)

signal d :
std_logic_vector(n
Vecteur de std_logic std_logic_vector(3 downto
downto 0)
0) := "1010";

d) Le type std_logic (plus utilisé que bit)

Le type std_logic (défini dans IEEE.STD_LOGIC_1164) est plus avancé que


bit. Il permet plusieurs états logiques :

Vale
Signification
ur

'0' Niveau bas (logique 0)

'1' Niveau haut (logique 1)

Haute impédance (sortie en mode


'Z'
tri-state)

'X' Indéterminé (collision ou erreur)

'-' Indifférent (valeur quelconque)

'U' Non initialisé (état inconnu)

🔹 Pourquoi utiliser std_logic au lieu de bit ?

 Compatible avec les FPGA et ASIC.

 Gère les états flottants (Z), indéterminés (X) et non initialisés


(U).

 Recommandé pour les entrées/sorties (I/O).

2. Types avancés : Vecteurs et nombres binaires

VHDL permet d'utiliser des vecteurs pour manipuler plusieurs bits


simultanément.

a) std_logic_vector (tableaux de std_logic)


Utilisé pour stocker des nombres binaires et gérer des bus de données.

signal data : std_logic_vector(7 downto 0) := "11001100";

➡️Définit un bus 8 bits, avec data(7) comme MSB (bit de poids fort) et
data(0) comme LSB (bit de poids faible).

b) Types signed et unsigned

Ces types, définis dans IEEE.NUMERIC_STD, permettent d'interpréter des


vecteurs binaires comme des nombres entiers.

Type Description

signed(n downto Représente un nombre signé (complément


0) à deux).

unsigned(n
Représente un entier positif (sans signe).
downto 0)

🔹 Exemple : Addition de nombres binaires

library ieee;

use ieee.std_logic_1164.all;

use ieee.numeric_std.all;

signal a, b : unsigned(3 downto 0);

signal sum : unsigned(4 downto 0);

begin

sum <= a + b;

➡️Ici, sum doit être sur 5 bits pour éviter les dépassements (overflow).

3. Conversion entre types

a) std_logic_vector ⇄ signed/unsigned

Il est souvent nécessaire de convertir les types :

signal a : std_logic_vector(3 downto 0);

signal b : unsigned(3 downto 0);


b <= unsigned(a); -- Conversion std_logic_vector → unsigned

b) integer ⇄ std_logic_vector

signal x : integer := 10;

signal y : std_logic_vector(3 downto 0);

y <= std_logic_vector(to_unsigned(x, 4)); -- Conversion integer →


std_logic_vector

4. Exemple complet d’un programme VHDL avec différents types

library ieee;

use ieee.std_logic_1164.all;

use ieee.numeric_std.all;

entity Exemple is

port (

clk : in std_logic; -- Signal d'horloge

A, B : in unsigned(3 downto 0); -- Entrées 4 bits

S : out unsigned(4 downto 0) -- Somme sur 5 bits

);

end Exemple;

architecture Comportement of Exemple is

begin

process(clk)

begin

if rising_edge(clk) then

S <= A + B; -- Addition des deux nombres binaires

end if;

end process;
end Comportement;

➡️Ici, on additionne deux nombres binaires de 4 bits et on stocke le


résultat sur 5 bits.

Conclusion

En VHDL, bien choisir le type des signaux est essentiel pour garantir une
conception optimale et synthétisable.

✔ std_logic et std_logic_vector sont les plus utilisés pour les circuits


numériques.
✔ signed et unsigned permettent des opérations arithmétiques sur
des valeurs binaires.
✔ Les conversions entre types sont souvent nécessaires pour assurer
la compatibilité entre signaux.

💡 Besoin d’un exemple plus spécifique ? 😊

Corps de l’architecture en VHDL

Le corps de l'architecture en VHDL contient la description


fonctionnelle du système à concevoir. Il est placé après la partie
déclarative et commence par le mot-clé begin.

1. Structure générale d’une architecture en VHDL

architecture Nom_Architecture of Nom_Entite is

-- Partie déclarative (Signaux, constantes, composants)

begin

-- Corps de l'architecture (Instructions concurrentes)

end Nom_Architecture;

💡 Le corps de l’architecture contient les instructions qui décrivent le


comportement du circuit.

2. Types de description dans le corps de l’architecture

On peut utiliser trois approches principales pour écrire le corps de


l’architecture :

a) Description comportementale
 Approche haut niveau qui décrit le fonctionnement logique sans
se soucier du matériel sous-jacent.

 Utilise des instructions concurrentes et des processus


séquentiels.

📌 Exemple : Comparateur d’égalité (A = B)

architecture Comportementale of Comparateur is

begin

S <= '1' when A = B else '0';

end Comportementale;

➡️Explication :

 Si A est égal à B, alors S est '1', sinon il est '0'.

b) Description structurelle

 Approche bas niveau qui décrit l’interconnexion de composants


pour construire un circuit.

 Utilise l’instanciation de composants.

📌 Exemple : Comparateur d’égalité en utilisant des portes XOR et


NOT

architecture Structurelle of Comparateur is

component XOR2

port (X, Y: in std_logic; Z: out std_logic);

end component;

component NOT1

port (X: in std_logic; Y: out std_logic);

end component;

signal XOR_Result: std_logic;

begin

-- Instanciation des composants


Porte_XOR : XOR2 port map (A, B, XOR_Result);

Porte_NOT : NOT1 port map (XOR_Result, S);

end Structurelle;

➡️Explication :

 Utilisation de portes XOR et NOT pour comparer A et B.

c) Description mixte

 Combine description comportementale et structurelle dans le


même code.

📌 Exemple : Additionneur 1 bit avec retenue

architecture Mixte of Additionneur is

component XOR2

port (A, B: in std_logic; S: out std_logic);

end component;

signal Sum_Interne: std_logic;

begin

-- Partie structurelle : Utilisation de XOR2

Porte_XOR : XOR2 port map (A, B, Sum_Interne);

-- Partie comportementale : Ajout de la retenue

S <= Sum_Interne xor Cin;

end Mixte;

➡️Explication :

 Utilisation d’un composant XOR pour faire la somme partielle.

 Ajout de la retenue Cin de manière comportementale.

3. Exemple complet : Additionneur 4 bits

library ieee;
use ieee.std_logic_1164.all;

use ieee.numeric_std.all;

entity Additionneur is

port (

A, B: in unsigned(3 downto 0);

S: out unsigned(4 downto 0)

);

end Additionneur;

architecture Comportement of Additionneur is

begin

S <= A + B; -- Corps de l’architecture

end Comportement;

➡️Explication :

 S prend la valeur de A + B de manière directe et concurrente.

Conclusion

Le corps de l’architecture est la partie principale où le comportement


du circuit est décrit.
✅ Description comportementale : Facile à écrire et comprendre.
✅ Description structurelle : Permet de réutiliser des composants.
✅ Description mixte : Combine les avantages des deux méthodes.

💡 Besoin d’un exemple plus détaillé ? 😊

Vous aimerez peut-être aussi