FPGACoursISTA

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 19

See discussions, stats, and author profiles for this publication at: https://www.researchgate.

net/publication/375280361

FPGA Cours ISTA

Presentation · November 2023


DOI: 10.13140/RG.2.2.32122.06082

CITATIONS READS
0 174

1 author:

Elhabib Bensikaddour
Agence Spatiale Algérienne
29 PUBLICATIONS 144 CITATIONS

SEE PROFILE

All content following this page was uploaded by Elhabib Bensikaddour on 03 November 2023.

The user has requested enhancement of the downloaded file.


Support de Cours :
Programmation des circuits FPGA
Partie 01 : Généralités, Architectures & Flot de
Conception.

El habib Bensikaddour
CDS-ASAL

2023-2024
Table des matières
1 Technologies des circuits intégrés ....................................................................3

1.1 Classification des circuits intégrés .............................................................3

1.1.1 ASIC (Application Specific Integrated Circuit) ........................................3

1.1.2 Circuits analogiques ...........................................................................4

1.1.3 Circuits logiques .................................................................................4

1.1.4 Circuits programmables ......................................................................5

2 Field-Programmable Gate Array (FPGA) ............................................................8

2.1 FPGA vs autres Composants.................................................................... 10

2.2 Architecture des FPGA ............................................................................ 11

2.3 Classification des FPGA........................................................................... 13

2.3.1 SRAM-FPGA..................................................................................... 14

2.3.2 Flash-FPGA...................................................................................... 14

2.3.3 Antifuse-FPGA :................................................................................ 14

3 Flux de conception FPGA .............................................................................. 15

4 Hardware Description Language (HDL) ........................................................... 16

4.1 Langage VHDL ....................................................................................... 16

4.2 Langage Verilog ...................................................................................... 17

4.3 VHDL vs VERILOG ................................................................................. 17

5 High Level Synthesis ..................................................................................... 18

2
1 Technologies des circuits intégrés

Les circuits intégrés, ou puces électroniques, sont des composants électroniques qui
intègrent plusieurs composants électroniques individuels tels que les transistors, les
diodes, les résistances, et d'autres éléments sur une seule puce de semiconducteur,
généralement fabriquée en silicium.

L'intégration de composants sur une puce unique réduit la taille, la consommation


d'énergie et améliore les performances, ce qui en fait un élément déterminant de la
technologie électronique moderne.

1.1 Classification des circuits intégrés

Les circuits intégrés sont classés selon leurs caractéristiques et leur domaine d'emploi.
Le classement est montré dans la figure suivante :

Figure 1. Classification des circuits intégrés.

1.1.1 ASIC (Application Specific Integrated Circuit)

Cette catégorie de circuits intégrés est conçue sur mesure pour répondre de manière
précise et efficace aux besoins d'une application particulière. Ces circuits peuvent
intégrer à la fois des structures analogiques et numériques (Mixed-Signal ASIC, Figure
2), ce qui signifie qu'ils sont capables de traiter à la fois des signaux analogiques et
des signaux numériques. Cette capacité à combiner des composants analogiques et
numériques les rend très polyvalents pour une large gamme d'applications, mais elle
peut également contribuer à la complexité de leur conception. Les ASIC sont une
solution adaptée lorsque des composants prêts à l'emploi ne répondent pas aux

3
besoins spécifiques de l'application, même si leur développement peut être coûteux en
raison de leur nature personnalisée. Exemples d’applications :
1. Circuits de traitement d'image : Les caméras numériques et les équipements
de traitement d'image, tels que les appareils photo numériques, les caméras de
vidéosurveillance, les systèmes de vision artificielle, utilisent des ASIC pour
effectuer le traitement d'image en temps réel.
2. Circuits de communication : Les ASIC sont largement utilisés dans les
équipements de communication, tels que les routeurs, les commutateurs, les
modems, les téléphones mobiles, les réseaux sans fil, pour gérer les fonctions
de communication.

Figure 2. Exemple d’une Architecture Mixed-Signal ASIC.

1.1.2 Circuits analogiques


Les circuits analogiques sont spécialisés dans le traitement de signaux continus, tels
que la voix et les signaux vidéo, comme la conversion analogique-numérique (CAN), les
amplificateurs, les filtres… etc.

Figure 3. Conversion analogique-numérique.

1.1.3 Circuits logiques


Cette catégorie regroupe des circuits numériques qui exécutent des opérations
logiques. Ils sont utilisés dans de nombreuses applications, y compris les ordinateurs,

4
les dispositifs de communication et les systèmes de contrôle automatisé. Dans le
système numérique, les circuits logiques se répartissent généralement en deux
catégories (Figure 4).

Figure 4. Catégories des circuits Logiques.

 Circuits combinatoires : - A tout instant, la sortie du circuit logique dépend des


entrées de la combinaison présente quelles que soient ses entrées précédentes.
Il suit un ensemble de fonctions booléennes et est utilisé pour effectuer des
traitements de données spécifiques. Exemples de circuits combinatoires sont :
Additionneurs, soustracteurs, les comparateurs, les décodeurs, les codeurs et
les multiplexeurs.
 Circuits séquentiels : - A tout instant, la sortie du circuit logique dépend des
entrées de la combinaison présente ainsi que des entrées précédentes.
Exemples de circuits séquentiels sont : Compteurs, Registres à décalage, …etc.

1.1.4 Circuits programmables

Les circuits programmés offrent une flexibilité de conception précieuse, car ils peuvent
être reconfigurés pour différentes tâches. Deux ce type de circuits, on peut distinguer
deux sous-catégories (Figure 5).

5
Figure 5. La famille des circuits Programmable.

1- Circuits à fonctionnement Programmable :


a. Microprocesseur : Le microprocesseur, noté CPU (Central Processing
Unit), est un circuit intégré complexe capable d'effectuer
séquentiellement et automatiquement des opérations arithmétiques et
logiques et de contrôler le fonctionnement d’une application(s).
b. Microcontrôleur : Un microcontrôleur est un circuit intégré compact doté
d'un processeur, d'une mémoire et de périphériques, utilisé dans les
systèmes embarqués pour contrôler des tâches spécifiques dans des
appareils tels que les appareils électroménagers, les systèmes
automobiles et les appareils IoT.
2- Circuits à architecture Programmable (ou reconfigurable) : Dans cette catégorie,
on peut citer les circuits
PLD (Prgrammable Logic Devices). Les FPGA (Field-Programmable Gate Arrays)
sont en effet considérés comme une sous-catégorie des circuits PLD
(Programmable Logic Devices).
a. Simple PLD : Les SPLD sont des dispositifs logiques qui offrent une
certaine programmabilité, mais cette programmabilité est limitée par
rapport à des dispositifs plus avancés comme les CPLD (Complex
Programmable Logic Devices) et les FPGA (Field-Programmable Gate
Arrays).

6
Exemple :
 Nom du circuit intégré : 22V10
 Fabricant : Plusieurs fabricants, dont Lattice Semiconductor
 Fonctionnalité : Le 22V10 est un SPLD qui peut être programmé pour réaliser
des fonctions logiques personnalisées. Il contient 10 macrocellules
programmables et 22 entrées/logiques.
 Taille : Il est généralement encapsulé dans un boîtier DIP ( Dual In-Line Package)
à 24 broches.
 Programmabilité : Les utilisateurs peuvent programmer les interconnexions entre
les macrocellules pour créer des fonctions logiques spécifiques. La
programmation se fait à l'aide de logiciels de conception électronique o u d'un
programmateur de dispositif dédié.
 Applications : Le 22V10 SPLD est utilisé dans des applications électroniques
relativement simples nécessitant un traitement logique de base, telles que des
minuteries, des compteurs, des décodeurs, des contrôles de séquences, etc.

Figure 6. 22V10 SPLD.

b. Complex PLD : Les CPLD sont plus complexes que les SPLD, ce qui
signifie qu'ils offrent une plus grande capacité de traitement logique. Ils
contiennent une structure logique composée de plusieurs blocs logiques
programmables, de bascules, de multiplexeurs et d'autres éléments
logiques.

Exemple :
 Nom du circuit intégré : MAX® II family de Altera (Intel)
 Fonctionnalités : Les CPLD de la famille MAX II offrent une capacité de logique
programmable plus importante que les SPLD, avec un grand nombre de
macrocellules logiques, de bascules, de multiplexeurs et d'autres éléments
logiques. Ils peuvent également contenir des mémoires EEPROM pour le stockage
de la configuration.

7
 Applications : Les CPLD MAX II sont utilisés dans une variété d'applications,
notamment le contrôle de périphériques, l'interface de communication, la gestion
d'affichage, les applications embarquées, les automates programmables, etc. Leur
capacité de logique programmable les rend adaptés à des conceptions
électroniques de complexité moyenne.

Figure 7.MAX® II family de Altera.

Le tableau présente une comparaison entre SPLD, CPLD et FPGA.

2 Field-Programmable Gate Array (FPGA)

Que sont les FPGA ?


Un FPGA (Field-Programmable Gate Array, que l'on peut traduire par "matrice de
portes programmables sur site") est un dispositif électronique programmable qui
permet aux concepteurs de circuits de créer des circuits numériques personnalisés.
Les FPGA sont conçus pour être reprogrammés afin de s'adapter aux applications ou
fonctionnalités souhaitées après leur fabrication. Ils ont été introduits sur le marché
en 1984 par la société Xilinx et sont considérés comme des circuits prédiffusés
programmables.

8
Pourquoi le FPGA ?
Les FPGA (Field-Programmable Gate Arrays) sont utilisés pour une variété de raisons
dans la conception électronique en raison de leurs avantages spécifiques :
 Flexibilité : L'un des avantages majeurs des FPGA est leur flexibilité. Les
concepteurs peuvent les programmer pour effectuer une large gamme de
fonctions électroniques en utilisant des descriptions matérielles (HDL) telles que
VHDL ou Verilog. Cela permet de personnaliser le FPGA pour répondre aux
besoins spécifiques d'une application, ce qui est particulièrement utile
lorsqu'une solution matérielle dédiée n'est pas disponible.
 Prototypage Rapide : Les FPGA sont couramment utilisés pour le prototypage
rapide de nouveaux designs électroniques. Les concepteurs peuvent itérer
rapidement et tester différentes configurations matérielles sans avoir à créer un
nouveau circuit imprimé à chaque fois. Cela réduit les coûts de développement
et accélère le cycle de conception.
 Réutilisation : Les FPGA permettent de réutiliser du matériel programmable
pour différentes applications. Une fois programmé, un FPGA peut être
reprogrammé pour une nouvelle tâche sans avoir à créer un nouveau matériel
physique. Cela permet d'économiser du temps et des ressources.
 Traitement Parallèle : Les FPGA sont adaptés au traitement parallèle, ce qui les
rend adaptés à des applications exigeant un traitement intensif, telles que le
traitement de signal, la vision par ordinateur, la cryptographie, etc. Ils peuvent
effectuer de nombreuses opérations en parallèle, ce qui améliore les
performances.
 Réduction de l'énergie : Certains FPGA sont conçus pour être économes en
énergie, ce qui les rend adaptés à des applications alimentées par batterie ou
nécessitant une faible consommation d'énergie.

Ou les FPGA sont utilisés ?


Les FPGA sont utilisés dans un large éventail d'applications, notamment dans les
domaines suivants : Électronique embarquée, Aérospatiale et défense, Électronique
grand public… etc

9
Figure 8. Exemples d’applications FPGA

2.1 FPGA vs autres Composants

Pour comparer les FPGA aux autres circuits (CPU, GPU et ASIC) en termes de
flexibilité, de facilité d'utilisation, de performances et d'efficacité énergétique, la figure
9 est une démonstration représentative.

Figure 9. FPGA vs GPU vs ASIC vs CPU.

Les processeurs, tels que les CPU, offrent une grande flexibilité et une facilité
d'utilisation, car les utilisateurs peuvent choisir des langages de programmation de
haut niveau comme Python ou C++ pour développer leurs applications. Ce pendant,
cette flexibilité accrue a un impact sur les performances et l'efficacité énergétique, car
les processeurs ne sont pas optimisés pour des tâches spécifiques. En revanche, les
dispositifs ASIC et offrent des performances et une efficacité énergétique maximales,
car ils sont conçus pour exécuter une application particulière de la manière la plus
efficace possible. Cependant, leur flexibilité est limitée, et ils nécessitent une
connaissance précise de l'application.

10
Les FPGA se situent entre les deux extrêmes. Ils offrent une flexibilité significative, car
ils peuvent être reconfigurés pour effectuer une variété de tâches, mais cela peut
nécessiter un effort de développement supplémentaire par rapport aux processeurs.
Les performances et l'efficacité énergétique des FPGA dépendent de la qualité de la
conception matérielle.

Le choix entre FPGA, CPU, GPU et ASIC dépend des exigences spécifiques de
l'application. Les FPGA offrent un équilibre entre la flexibilité et les performances,
mais leur efficacité énergétique dépend de la conception. Les CPU sont flexibles mais
moins performants et économes en énergie. Les ASIC offrent des performances élevées
et une efficacité énergétique, mais au prix de la flexibilité.

2.2 Architecture des FPGA

L’architecture de base des FPGA est présentée dans la figure 10.

Figure 10. Architecture de base des FPGA.

Elle est composée des modules suivants :

 Programmable Logic Blocks (PLB) : PLB sont les composants responsables de la


mise en œuvre des fonctions logiques de base. Les blocs logiques des FPGA
basés sur Xilinx sont appelés blocs logiques configurables ou (CLB :

11
Configurable Logic Bloc), tandis que les structures similaires dans les FPGA
basés sur Altera sont appelées blocs de tableau logique ou (LAB : Logic Array
Blocks). La figure 11 présente un exemple d’un CLB. Il contient des tables de
recherche (LUT : Lookup Table), des bascules et parfois des unités
arithmétiques dédiées. Les CLB peuvent être configurés pour exécuter diverses
fonctions logiques combinatoires et séquentielles.

Figure 11. Exemple d'un simple CLB

 Programmable Interconnects or Routing : Les interconnexions ou routages


programmables établissent une connexion entre les blocs logiques et les blocs
d'entrée/sortie pour compléter une unité de conception définie par l'utilisateur.
 Programmable I/O block : Le bloc d'E/S programmable est utilisé pour amener
les signaux sur la puce et les renvoyer. Ceux-ci sont utilisés pour interfacer les
blocs logiques et l’architecture de routage aux composants externes.

 Block RAM (BRAM): Il s'agit de la mémoire sur puce disponible sur un FPGA,
utilisée pour stocker les données et implémenter les fonctions de mémoire.
 Digital Signal Processing (DSP) Blocks: Il s'agit de blocs matériels spécialisés
dédiés à l'exécution d'opérations arithmétiques, telles que la multiplication et
l'accumulation, à grande vitesse.

Dans les FPGA modernes (figure 12), certaines fonctions sont intégrées en tant que
"cœurs matériels HARDCORE" efficaces et non configurables. Cela peut inclure :
 Processeurs ARM Multicœurs : Certaines séries de FPGA, comme la série ZYNQ
de XILINX, intègrent plusieurs cœurs de processeurs pour une puissance de
traitement accrue et une intégration système.
 Transmetteurs Multi-Gigabit : Ces transmetteurs haute vitesse sont intégrés
dans le FPGA pour permettre une communication de données rapide,

12
essentielle pour des applications telles que les transferts de données à grande
vitesse et les réseaux.
 PCIe/Ethernet PHY (couche physique) : Les dispositifs FPGA peuvent inclure
des composants PHY intégrés pour les connexions PCIe et Ethernet, simplifiant
la connectivité pour le transfert de données.
 Contrôleurs de mémoire : Les contrôleurs de mémoire intégrés permettent un
accès efficace à divers types de mémoire, tels que la RAM DDR (Double Data
Rate), facilitant la gestion de la mémoire.

Ces cœurs matériels améliorent les capacités du FPGA en offrant des


fonctionnalités préconçues et optimisées pour faciliter le développement de
systèmes et d'applications complexes.

Figure 12. Architecture interne des FPGA Modernes.

2.3 Classification des FPGA

Les FPGA peuvent être classés de plusieurs manières en fonction de différents critères,
notamment la technologie, la génération, la capacité et l'architecture . Dans ce cours,
on va évoquer seulement la classification par technologie.

La classification par technologie s'appuie sur les techniques utilisées pour contrôler
les commutateurs programmables utilisés. Les dispositifs FPGA peuve nt être classés
dans les trois types suivants : SRAM-FPGA, Antifuse-FPGA, et Flash-FPGA.

13
Figure 13. SRAM wiring program, Center: FLASH wiring program, Right: Antifuse wiring program.

2.3.1 SRAM-FPGA

Le plus largement utilisé dans les applications terrestres est le FPGA basé sur SRAM,
qui présente de nombreux avantages intéressants, tels qu'une capacité élevée, une
reprogrammabilité et une vitesse élevée. La reprogrammabilité représente un avantage
intéressant, ce qui signifie que la conception originale peut être mise à jour/améliorée
au cours de fonctionnement.

2.3.2 Flash-FPGA

Ces FPGA utilisent des mémoires Flash pour stocker la configuration, ce qui permet de
conserver la config1uration même en cas de coupure de courant.

2.3.3 Antifuse-FPGA :

Les Antifuse-FPGA utilisent des antifusibles pour configurer les connexions internes,
offrant une configuration permanente (OTP : One Time Programmable).

14
3 Flux de conception FPGA

Le flux de conception est un processus systématique visant à réaliser l'implémentation


matérielle (hardware) sur une puce FPGA. Ce processus comprend plusieurs étapes,
qui sont représentées dans la figure 15.

Figure 14. Flux de conception FPGA.

1- Design source Files : la création des fichiers source de conception est la


première étape du processus de conception FPGA. Ces fichiers source

15
contiennent la description de la logique et du comportement souhaités pour le
circuit. Ces fichiers source sont écrits en langage de description matérielle
(HDL) : VHDL ou Verilog.
2- Design Synthesis : La synthèse de conception, la deuxième étape de la
conception d'un FPGA, convertit les fichiers sources de haut niveau en une
netlist (description de la connectivité) au niveau de la porte .
3- Design implementation : Au cours de cette étape, la netlist générée à l'étape
précédente est traduite en une conception physique qui peut être programmée
sur le périphérique FPGA.
4- Bitstream File generation : cette étape de génération du fichier Bitstream
produit le fichier nécessaire à la programmation du FPGA. Le fichier Bitstream
contient les informations de configuration qui permettront au FPGA
d'implémenter le design numérique spécifié sur le matériel.
5- Upload on FPGA : La programmation d'un FPGA consiste à charger un fichier
Bitstream, contenant les données de configuration, sur le dispositif FPGA à
l'aide de logiciels spécialisés et d'interfaces matérielles. Cela configure le FPGA
pour un design numérique spécifique.

4 Hardware Description Language (HDL)

Un langage de description de matériel est un langage de programmation spécialisé


utilisé pour décrire et modéliser des circuits et des systèmes électroniques. Il existe
deux HDL principaux couramment utilisés: VHDL (Very High Speed Integrated
Circuits HDL) et Verilog HDL.

4.1 Langage VHDL

Le VHDL (Very high speed integrated circuit HDL) a été développé au début des années
1980, avec des travaux préliminaires qui ont commencé en 1983. Il a été standardisé
en 1987 par l'IEEE (Institute of Electrical and Electronics Engineers). Le VHDL (IEEE
Standard 1076) a été conçu pour décrire les implémentations matérielles, en
particulier dans les circuits programmables comme les FPGA et les ASIC. Pour plus de
détails, voir la partie 02.

16
4.2 Langage Verilog

Le Verilog ("Verification" + "Logic") a été développé au cours des années 1980 pour la
description de circuits électroniques et a été standardisé en 1995 (IEEE Standard
1364). Il a été conçu pour décrire des implémentations matérielles, en mettant l'accent
sur la modélisation et la simulation de circuits électroniques, en particulier dans les
circuits programmables comme les FPGA et les ASIC. Pour plus de détails, voir la partie
03 de ce cours.

4.3 VHDL vs VERILOG

Les deux langages peuvent être utilisés pour créer du code qui s'exécute sur des FPGA
et des ASIC. Globalement, il y a plusieurs points dont vous devez être conscient :
 Typage : VHDL est fortement typé, ce qui signifie que le compilateur impose des
contraintes strictes sur les types de données. Cela peut rendre plus difficile
pour les débutants d'éviter les erreurs, mais cela garantit également une
meilleure robustesse du code. Verilog, en revanche, est faiblement typé, ce qui
permet d'écrire un code potentiellement erroné, mais il est souvent plus concis.

 Ressemblance avec le Logiciel : Verilog a une ressemblance plus marquée avec


les langages de programmation logicielle comme C. Pour ceux qui sont familiers
avec C, il peut être plus facile de lire et de comprendre le code Verilog.
 Longueur du Code : VHDL a tendance à nécessiter plus de saisie, ce qui peut
être fastidieux, en particulier pour les débutants. Verilog, en re vanche,
nécessite généralement moins de code pour accomplir la même tâche, ce qui
peut être plus pratique.
 Déterminisme : VHDL est très déterministe, ce qui signifie que le comportement
du code est généralement prévisible et constant. Verilog peut être non
déterministe dans certaines circonstances, ce qui nécessite une attention
particulière pour éviter des comportements inattendus.

Le choix entre Verilog et VHDL dépend souvent des préférences individuelles, des
exigences du projet et des normes de l'industrie. Les débutants peuvent trouver
Verilog plus accessible en raison de sa ressemblance avec les langages de
programmation logicielle, mais VHDL offre une vérification plus stricte qui peut éviter

17
certaines erreurs. Le choix dépendra des objectifs spécifiques du projet et du confort
personnel avec les langages. La figure représente la popularité des deux langages dans
certains pays. Par ailleurs, la figure 16 représente un exemple de implémentation
hardware réalisée par les deux langages.

Figure 15. La popularité des deux langues dans certains pays.

Figure 16.exemple d'une implémentation rédigée par les deux langages.

5 High Level Synthesis

La synthèse de haut niveau (HLS) est un processus informatique qui simplifie


l’implémentation hardware sur les circuits programmables. Au lieu de concevoir
chaque détail manuellement, HLS permet aux concepteurs de décrire la fonctionnalité
souhaitée en utilisant un langage de programmation, comme le C, C++, Matlab, ....etc.
Ensuite, un logiciel transforme cette description en une puce électronique prête à être
fabriquée. voir partie 4 de ce cours.

18

View publication stats

Vous aimerez peut-être aussi