Vous êtes sur la page 1sur 41

Université Abdelmalek Essaadi

Faculté des Sciences et Techniques – Al Hoceima


Matser SER – S3

Master Systèmes Embarqués & Robotique


Etude des circuits logiques programmables

FPGA

Élaboré par: M. Nabil BENAYA

2020-2021
Introduction – Qu’est ce que FPGA

Field Programmable Gate


Array

Réseau prédiffusé de portes programmables

2
Introduction – Qu’est ce que FPGA

FPGA: Réseau prédiffusé de portes programmables

Circuit intégré dense, composé d’un réseau de portes logiques


configurables par logiciel et reconfigurable à volonté.

Circuit intégré contenant un très grand nombre de portes


logiques organisées en blocs logiques configurables et
interconnectables.

« Programmer » un FPGA = Configurer et interconnecter


des blocs logiques
= « Câblage » sur silicium
3
Introduction – Historique

La logique programmable existe depuis les années 1960;


Au début, c’est un ensemble (quelques) de portes logiques
englobées dans un boitier programmable qu’une seule fois (
cas de la ROM);
PAL
GAL
EPLD-CPLD
Milieu de 1980, apparition de FPGA

4
Introduction – Hiérarchie

Circuits Logiques

Processeurs PLDs ASICs (Application


Specific Integrated Circuit)

PAL GAL EPLD-CPLD FPGA

5
Introduction – ASIC/FPGA

6
Introduction – ASIC/FPGA

7
PLD - PAL

PAL (Programmable Array Logic) : réseaux logiques programmables

Développés au début des années 70 par MMI (ex-AMD)


La programmation se fait par destruction de fusibles
Aucun fusible n’est grillé à l’achat de la PAL

8
PLD - PAL

A partir de cette structure de base il va être possible de réaliser de


nombreuses fonctions logiques. La programmation va constituer à
détruire les fusibles pour obtenir les fonctions désirées.

Exemple: XOR

9
PLD - PAL

A partir de cette structure de base il va être possible de réaliser de


nombreuses fonctions logiques. La programmation va constituer à
détruire les fusibles pour obtenir les fonctions désirées.

10
PLD - PAL

Matrice de programmation
La plupart des P.A.L. sont constitués :

- Un ensemble de portes « ET » sur


lesquelles viennent se connecter les
variables d’entrée et leurs
compléments.

- Un ensemble de portes « OU » sur


lesquelles les sorties des opérateurs
« ET » sont connectées les variables
d’entrée.

11
PLD - GAL

GAL: Generic Array Logic

Réseau Logique Reprogrammable

C’est un PAL effaçable électriquement

12
PLD - GAL

Inconvénient majeur des PALs: programmables qu’une seule fois.


Gaspillage important de ces circuits lors du développement
d’un nouveau produit.
La firme LATTICE a pensé à remplacer les fusibles irréversibles des
PALs par des transistors MOS FET pouvant être régénérés.
Naissance des circuits reprogrammables à volonté sans pour
autant avoir une durée de vie restreinte (GALs: Réseau Logique
Générique ).
La structure interne des GALs est constitué de transistor CMOS
alors que les PALs classiques sont constitués de transistors bipolaires.
Consommation des GALs est beaucoup plus faible.
Autres constructeurs appelant « PAL CMOS ».

13
PLD – EPLD / CPLD
Structure générale d’un CPLD (Complex Programmable Logic Device)

Un CPLD c’est l’équivalent de plusieurs PALs mis dans le même


circuit associé à une zone d’interconnexion. Le nombres de portes
peut varier entre 100 et 100 000 portes logiques et entre 16 et 1000
bascules voir plus.

14
PLD – EPLD/CPLD

Confrontation

15
Introduction – Qu’est ce que FPGA

FPGA: Réseau prédiffusé de portes programmables

Circuit intégré dense, composé d’un réseau de portes logiques


configurables par logiciel et reconfigurable à volonté.

Circuit intégré contenant un très grand nombre de portes


logiques organisées en blocs logiques configurables et
interconnectables.

« Programmer » un FPGA = Configurer et interconnecter


des blocs logiques
= « Câblage » sur silicium
16
PLD - FPGA

Architecture

17
PLD - FPGA

Architecture
L'architecture se présente sous forme de deux couches :
une couche appelée circuit configurable,
une couche réseau mémoire SRAM.

18
PLD - FPGA

Structure interne

Matrice de blocs configurables


Matrice d’interconnexions configurable
Matrice de blocs E/S (IOB)

19
PLD - FPGA

Structure d’un CLB


Les CLBs sont composés d'une Look Up Table à K entrées, d'une bascule
D ainsi que d'un multiplexeur pour basculer entre la logique séquentielle et
combinatoire . Les signaux Data et Strobe représentent les bits de
configurations envoyés aux blocs mémoire.

20
PLD - FPGA

Structure d’un CLB


Les CLBs sont composés d'une Look Up Table à K entrées, d'une bascule
D ainsi que d'un multiplexeur pour basculer entre la logique séquentielle et
combinatoire . Les signaux Data et Strobe représentent les bits de
configurations envoyés aux blocs mémoire.
BLE (Bloc Logic Element)

21
PLD - FPGA

Structure d’un CLB

Un CLB est caractérisé par le nombre de ses entrées I et par le nombre N de


BLE qu'il contient.
Dans les FPGAs modernes le nombre de BLE peut varier de 3 à 12.
Chaque BLE peut être connecté à n'importe quelle entrée I du CLB ou à un
autre BLE
22
PLD - FPGA

Structure d’une LUT


Une LUT à K entrées nécessite 2k bits de configuration.
L'architecture d'une LUT est uniquement composée de multiplexeurs 2 :1 et
de blocs mémoires.

23
PLD - FPGA

Structure d’une LUT


Une LUT à K entrées nécessite 2k bits de configuration.
L'architecture d'une LUT est uniquement composée de multiplexeurs 2 :1 et
de blocs mémoires.

24
PLD - FPGA

Translation du CLB

Pour éviter les défauts, on réserve des ressources dites de secours (à utiliser
pour remplacer les ressources défectueuses) lors de la configuration. Le nombre
de ressources de secours dépendra de la taille de l'application ainsi que de la
taille du FPGA. Il est possible d'éviter l'utilisation de certaines ressources en
effectuant une translation de l'application d'une ligne ou d'une colonne en
modifiant directement le bitstream.

25
PLD - FPGA
Translation du CLB

26
PLD - FPGA

Matrice d’interconnection

L'architecture la plus répandue est l'architecture matricielle (Mesh)


appelée aussi architecture de type îlot (Island style).
Elle est composée d'une matrice de tuiles, chaque tuile étant
composée d'éléments logiques (CLB) et de ressources
d'interconnexions avec des blocs de Connexions (C) et des Switch
boxes (S).

27
PLD - FPGA

Matrice d’interconnection

Blocs de connexions C
sont utilisés pour
connecter les éléments
logiques
au réseau d'interconnexion

Switchs boxes S
permettent de connecter
l'ensemble des blocs de
connexions C.

Le nombre de connexions
(CW) entre les Switch
boxes et les blocs de
connexions représente le
canal de routage (CR) du
FPGA.
28
PLD - FPGA

Matrice d’interconnection

Les blocs d'interconnexions diffèrent par leurs topologies et leurs flexibilité:


Blocs de connexions C
La flexibilité est définie par le nombre de fils de routage du bloc
d'interconnexions auxquels les entrées/sorties d'un bloc logique peuvent être
connectées. Elle peut donc être défénie par deux paramètres Fcin et Fcout (Fcin
représente le nombre de connexions entre le bloc d'interconnexions et les
entrées du bloc logique et Fcout entre le bloc d'interconnexions et les sorties du
bloc logique).

Fcin = Fcout = 2

29
PLD - FPGA

Matrice d’interconnection

Les blocs d'interconnexions diffèrent par leurs topologies et leurs flexibilité:


Switchs Boxes S
Les Switchs boxes utilisées pour interconnecter les blocs de Connexions au
canal de routage (CR) ont plusieurs topologies (disjoint, wilton et universel).

La topologie va définir le nombre de connexions entre le canal de routage et


chaque entrée d'un même bloc de Connexions (C).

30
PLD - FPGA

Matrice d’interconnection

le nombre de connexions entre le canal de routage et chaque entrée d'un même


bloc de Connexions (C) est la flexibilité des Switchs boxes (S).

3 connexions possible Flexibilité Fs = 3


31
PLD - FPGA

Matrice d’interconnection

Canal de routage:
Le canal de routage est formé de fils de routage permettant de connecter
les blocs de Connexions et les Switch boxes. Le nombre de fils du canal
de routage CW est appelé largeur (ou taille) du canal.

Notez bien:
La taille du canal est la même pour toute l'architecture du FPGA.
La taille du canal de routage doit être fixée avant la fabrication du FPGA par le
concepteur car c'est l'un des paramètres architecturaux les plus importants dans
l'architecture d'un FPGA.
Le canal de routage doit permettre de router l'ensemble des signaux de
l'application utilisée par le FPGA sinon on dit que l'application est non routable.

32
PLD - FPGA

Matrice d’interconnection

Canal de routage:
Un canal de routage contient des fils de différentes longueurs. Cette
longueur dépend du nombre de blocs logiques longeant le fil en
question.

33
PLD - FPGA

Architecture Arborescente (Tree based FPGA

Pour réduire l'influence du réseau d'interconnexion et se rapprocher


des performances en terme de surface et de vitesse des ASICs, une
deuxième architecture de FPGA a été développée appelée Tree-based
FPGA.
Dans les mesh, 90% de la surface est occupée par le réseau
d'interconnexions et le nombre important de commutateurs traversés
augmente considérablement le délai de propagation.

34
PLD - FPGA

Architecture Arborescente (Tree based FPGA

Dans l'architecture arborescente (Tree):


Les blocs logiques sont regroupés sous forme de clusters.
Chaque cluster est composé d'un réseau local d'interconnexion sous
forme d'une Switch box.
Une Switch box est composé d'un réseau descendant pour connecter
les entrées du cluster aux blocs logiques appelé Downward Mini
Switch box (DMSB) ainsi que d'un réseau montant pour connecter les
éléments logiques aux sorties du cluster appelé Upward Mini Switch
box (UMSB).
35
PLD - FPGA

Architecture Arborescente (Tree based FPGA

36
PLD - FPGA

Architecture Arborescente (Tree based FPGA

Avantage :
Réduction de l'impact du réseau d'interconnexion par rapport aux
éléments logique (56% de switchs utilisés en moins comparé à une
architecture de type mesh).

Inconvénient :
La taille du chemin critique est augmentée. De plus, plus le nombre de
niveaux dans l'architecture est important, plus il est difficile de générer
le layout correspondant car l'architecture souffre de problèmes de
scalabilité.

37
PLD - FPGA

Flot de conception

38
PLD - FPGA

Flot de configuration

39
40
PLD - FPGA

Matrice de programmation

41

Vous aimerez peut-être aussi