Vous êtes sur la page 1sur 17

Université de Carthage

Institut National des Sciences Appliquées et de Technologie

Module
Circuits logiques programmables
& électronique numérique

Chapitre 4:
Circuits Logiques Programmables
(PLD: Programmable Logic Devices

Par Emir Damergi

Filière: RT 3 Année universitaire: 2012/13

1/61
Chapitre 2: Programmable Logic Devices - Emir DAMERGI

Plan de l’exposé:

 Introduction.

 Circuits programmables pour systèmes combinatoires.


 Circuits programmables pour systèmes séquentiels.
 FPGA: Architecture & Flot de conception.

2/61
Chapitre 2: Programmable Logic Devices - Emir DAMERGI
Circuits programmables Circuits programmables FPGA: Architecture et
Introduction
pour systèmes combinatoire pour systèmes séquentiels Flot de conception
Système numérique

Un système numérique ou logique peut être

• Combinatoire

• Séquentiel

N’importe quel système logique, quelque soit sa complexité,


peut être construit par une association de fonctions logiques
combinatoires et des bascules.

3/61
Chapitre 2: Programmable Logic Devices - Emir DAMERGI

Circuits programmables Circuits programmables FPGA: Architecture et


Introduction
pour systèmes combinatoire pour systèmes séquentiels Flot de conception
Table de vérité pour fonction combinatoire
Une fonction logique combinatoire est une fonction à N entrées binaires Ei et M
sorties binaires Sj.
Chacune des sorties étant fonction des N entrées Sj = f (E0,E1,…EN-1) et peut
être présentée sous forme d’une table de vérité:

Entrées Sorties
EN-1 EN-2 … Ei ..…E1 E0 SM-1 SM-2 … Sj .….S1 S0
0 0 …………. 0 0 bJ,0
2N combinaisons

0 0 …………. 0 1 bJ,1
. ..
....
.
1 1 ……...……1 1 bJ,2N-1

Sj = f(Ei) pour j: 0 .. M-1

Quel circuit ayant un fonctionnement identique à cette table ??

4/61
Chapitre 2: Programmable Logic Devices - Emir DAMERGI
Circuits programmables Circuits programmables FPGA: Architecture et
Introduction
pour systèmes combinatoire pour systèmes séquentiels Flot de conception
Les Mémoires : structure

Le circuit correspondant à une table de vérité  est une mémoire ayant:


• N lignes d’adresses.
• M lignes de données.

Exemple: Mémoire à 3 lignes d’adresses & 4 lignes de données

Adresses Données
(entrées) (sorties) Ceci correspond exactement à une table
A2 A1 A0 D3 D2 D1 D0
de vérité:
(0) 0 0 0 …………..
A2
(1) 0 0 1 …………
A1 • Les sorties sont les données contenues
(2) 0 1 0
A0 dans la case mémoire correspondant à
(3) 0 1 1
l’adresse (entrées)
(4) 1 0 0
(5) 1 0 1
(6) 1 1 0
(7) 1 1 1

D3 D2 D1 D0 = fct (A2 A1 A0)


5/61
Chapitre 2: Programmable Logic Devices - Emir DAMERGI

Circuits programmables Circuits programmables FPGA: Architecture et


Introduction
pour systèmes combinatoire pour systèmes séquentiels Flot de conception
Les Mémoires: utilisation pour système combinatoire (1/2)

Exemple : réaliser une décodeur BCD/ 7 segments en utilisant une mémoire

S0 DP
S1 G
E3 S2 F
Décodeur S3 Entrées BCD Sorties décodeur BCD/7 segments
E2 E Aff.
E1 BCD/7 Seg S4 D D C B A a b c d e f g DP
E0 S5 C
0 0 0 0 1 1 1 1 1 1 0 0
S6 B
S7 A 0 0 0 1 0 1 1 0 0 0 0 0
0 0 1 0 1 1 0 1 1 0 1 0
0 0 1 1 1 1 1 1 0 0 1 0
0 1 0 0 0 1 1 0 0 1 1 0
0 1 0 1 1 0 1 1 0 1 1 0
0 1 1 0 0 0 1 1 1 1 1 0
0 1 1 1 1 1 1 0 0 0 0 0
1 0 0 0 1 1 1 1 1 1 1 0
1 0 0 1 1 1 1 0 0 1 1 0

6/61
Chapitre 2: Programmable Logic Devices - Emir DAMERGI
Circuits programmables Circuits programmables FPGA: Architecture et
Introduction
pour systèmes combinatoire pour systèmes séquentiels Flot de conception
Les Mémoires: utilisation pour système combinatoire (2/2)
On a un circuit à 4 entrées et 8 sorties (7 segments + point virgule)

Adresses Données
9 A3 A2 A1 A0 D7 D6 D5 D4 D3 D2 D1 D0
(0) 0 0 0 0 1 1 1 1 1 1 0 0 On a besoin d’une mémoire
(1) 0 0 0 1 0 1 1 0 0 0 0 0
1 A3 • 4 lignes d’adresses
(2) 0 0 1 0
0 A2 (3) 0 0 1 1
• et 8 lignes de données
0 A1 (4) 0 1 0 0
1 A0 (5) 0 1 0 1
(6) 0 1 1 0
(7) 0 1 1 1
(8) 1 0 0 0
(9) 1 0 0 1 1 1 1 0 0 1 1 0
………………… X X …………………..
D7 D6 D5 D4 D3 D2 D1 D0

DP 0
G 1
F 1
E 0
D 0
C 1
B 1
A 1
7/61
Chapitre 2: Programmable Logic Devices - Emir DAMERGI

Circuits programmables Circuits programmables FPGA: Architecture et


Introduction
pour systèmes combinatoire pour systèmes séquentiels Flot de conception
Les Mémoires: conclusion
Tout système combinatoire à N entrées et M sorties peut être développé avec
une mémoire avec :
• N lignes d’entrées (soit 2N cases mémoires)
• M lignes de données

 PROM (Programmable Read Only Memory):


programmable une seule fois.
contenu conservé même sans alimentation.
 EPROM (Erasable PROM):
Peut être effacé et reprogrammé plusieurs fois mais hors circuit
contenu conservé sans alimentation
 EEPROM (Electrically EROM) & FlashPROM:
Peut être effacé et reprogrammé plusieurs fois en circuit.
contenu conservé sans alimentation
 RAM (Random Access Memory):
Peut être lue et réécrite.
contenu perdu en cas d’absence d’alimentation.

Plusieurs contraintes difficiles à satisfaire


(taille, coût, perte de contenu (ram),..)
8/61
Chapitre 2: Programmable Logic Devices - Emir DAMERGI
Circuits programmables Circuits programmables FPGA: Architecture et
Introduction
pour systèmes combinatoire pour systèmes séquentiels Flot de conception
PLA: Programmable Logic Array Matrice OR :
M = 4 portes OR
Initialement, tous
N = 5 Entrées
Les Fusibles sont  4*5 = 20 STerms
Ce sont des circuits logiques intacts
programmables flexibles possédant :
• I entrées (+ leurs inverses).

• N portes logiques AND: Les entrées


de chaque porte étant connectées aux
I entrées et leurs inverses.
 Ensemble, ils forment une
matrice AND à I*N PTerms (Termes
Produit)
• M portes OR : chacune des portes
ayant comme entrées, les N sorties
des portes AND.
 Une matrice OR à M*N
STerms (Termes Somme).

 PLA I*N*M Matrice AND :


N=5 portes AND
I = 3 Entrées
 3*5 = 15 PTerms
9/61
Chapitre 2: Programmable Logic Devices - Emir DAMERGI

Circuits programmables Circuits programmables FPGA: Architecture et


Introduction
pour systèmes combinatoire pour systèmes séquentiels Flot de conception
Programmation d’un PLA
Initialement, tous Les fusibles sont
intacts

Pour la programmation d’un PLA, il faut


griller les fusibles indispensables de telle A./B.C
sorte à ne laisser que les connexions
nécessaires correspondant à l’équation
à programmer. A.B./C

Exemple: Programmer un PLA 3*5*4


avec les équations: /A.B./C

F0 = (A./B.C) + (A.B./C)
F1 = (/A.B./C) + (A.B.C) A.B.C

F2 = (A.B.C) + (A./B.C) + (/A./B./C)


F3 = (/A.B./C) + (A.B./C) + (/A./B./C) /A./B./C

10/61
Chapitre 2: Programmable Logic Devices - Emir DAMERGI
Circuits programmables Circuits programmables FPGA: Architecture et
Introduction
pour systèmes combinatoire pour systèmes séquentiels Flot de conception
Représentation schématique d’un PLA (1/2)
Pour présenter l’architecture du circuit d’une manière plus simple, on utilise la
représentation schématique suivante (chaque point au niveau des croisements désigne un
Fusible intact et l’absence du point implique un Fusible grillé).

11/61
Chapitre 2: Programmable Logic Devices - Emir DAMERGI

Circuits programmables Circuits programmables FPGA: Architecture et


Introduction
pour systèmes combinatoire pour systèmes séquentiels Flot de conception
Représentation schématique d’un PLA (2/2)

Ainsi, le PLA programmé avec les équations citées précédemment devient:

A./B.C

A.B./C

/A.B./C

A.B.C

/A./B./C

12/61
Chapitre 2: Programmable Logic Devices - Emir DAMERGI
Circuits programmables Circuits programmables FPGA: Architecture et
Introduction
pour systèmes combinatoire pour systèmes séquentiels Flot de conception
PAL: Programmable Array Logic
• On trouve également des circuits PAL (Programmable Array Logic ) qui ont la même
structure interne qu’un PLA, mais avec une matrice OR figée ( Les connexions entre les
sorties de la matrice AND et les entrées des portes OR sont fixes )

Connexions programmables
(fusibles)

Connexions fixes
13/61
Chapitre 2: Programmable Logic Devices - Emir DAMERGI

Circuits programmables Circuits programmables FPGA: Architecture et


Introduction
pour systèmes combinatoire pour systèmes séquentiels Flot de conception
PLA, PAL et Mémoires

• Les mémoires (telles que les PROM) peuvent être considérées comme étant un PLA
avec une matrice AND figée (décodeur 1/N) et une matrice OR programmable.
 On a ainsi, les 3 solutions possibles :

PLA (Programmable Array Logic)

PAL (Programmable Logic Array)

Mémoire PROM (Programmable Read Only memory)

14/61
Chapitre 2: Programmable Logic Devices - Emir DAMERGI
Circuits programmables Circuits programmables FPGA: Architecture et
Introduction
pour systèmes combinatoire pour systèmes séquentiels Flot de conception
SPLD: Sequentiel Programmable Logic Device
Pour l’implémentation de systèmes séquentiels, il suffit d’ajouter aux circuits permettant
d’implémenter la partie combinatoire (PAL, PLA), des bascules (élément de
mémorisation).

Mais, il existe des circuits qui intègrent en plus des matrices AND et OR,
une bascule au niveau de chaque sortie: il s’agit de Sequentiel PLD (SPLD).

SPLD
(PAL (PLA) + Bascules)

chaque sortie de la matrice OR


peut être connectée à une
bascule dont la sortie peut être
réinjectée au niveau de l’entrée

 Effet mémoire: utilisation de


l’état précédent du système.

15/61
Chapitre 2: Programmable Logic Devices - Emir DAMERGI

Circuits programmables Circuits programmables FPGA: Architecture et


Introduction
pour systèmes combinatoire pour systèmes séquentiels Flot de conception
CPLD: Complex Programmable Logic Devices

Même avec les SPLD, le nombre d’équations pouvant être implémenté reste limité
(quelques dizaines)
Ainsi, des circuits CPLD ont été proposées: un circuit qui contient des
dizaines de SPLD et une matrice d’interconnexion programmable.

SPLD SPLD SPLD ………. SPLD

Bloc Bloc
I/O Matrices d’interconnexion
I/O

SPLD SPLD SPLD ………. SPLD

Blocs d’entrées / sorties Matrice permettant de configurer les connexions:


(Input/Output) • entrées/Sorties  SPLD
• SPLD  SPLD
16/61
Chapitre 2: Programmable Logic Devices - Emir DAMERGI
Circuits programmables Circuits programmables FPGA: Architecture et
Introduction
pour systèmes combinatoire pour systèmes séquentiels Flot de conception
FPGA: Field Programmable Gate Array

Vu la tendance à implémenter des systèmes numériques de plus en plus complexes


(plusieurs processeurs), les limites des CPLDs ont été rapidement atteintes.
 Les circuits FPGA ont été proposées.
Il s’agit d’une matrice (N*M) de blocs logiques
configurables (CLB: Configurable Logic Block):

• Chaque CLB ayant un rôle similaire à un


SPLD (logique combinatoire + Bascules),
mais avec une architecture différente.

• Les CLBs peuvent être interconnectés par


des matrices d’interconnexion (Switch
Matrix).

• Des blocs d’entrées/sortie (IOB:


Input/Output Blocks) permettant de connecter
les CLBs aux signaux externes injectées.

Remarque: les termes (CLB, IOB, Switch matrix) différent d’un


constructeur à un autre. Ici, on se réfère aux termes utilisés par Xilinx.
17/61
Chapitre 2: Programmable Logic Devices - Emir DAMERGI

Circuits programmables Circuits programmables FPGA: Architecture et


Introduction
pour systèmes combinatoire pour systèmes séquentiels Flot de conception
FPGA: structure

Un CLB contient :
 De la logique combinatoire configurable sous forme d’un certain nombre de LUTs
(Look Up Tables) à N entrées .
Une LUT étant une mémoire à N lignes d’adresses et 1 ligne de données

Exemple: On peut réaliser n’importe quelle


1 LUT à 3 entrées Fonction logique à 3 entrées

23 données de 1 bit (1 ligne)

 Des Bascules D (Flip Flop) comme éléments de mémorisation

Remarque:
• Le nombre des LUTs et leur taille , le nombre de bascules ainsi que l’architecture interne dans un CLB
changent d’un FPGA à un autre.
• Mais le principe reste le même
18/61
Chapitre 2: Programmable Logic Devices - Emir DAMERGI
Circuits programmables Circuits programmables FPGA: Architecture et
Introduction
pour systèmes combinatoire pour systèmes séquentiels Flot de conception
FPGA: structure
Structure d’un CLB d’un FPGA de la famille XC4000 de Xilinx

19/61
Chapitre 2: Programmable Logic Devices - Emir DAMERGI

Circuits programmables Circuits programmables FPGA: Architecture et


Introduction
pour systèmes combinatoire pour systèmes séquentiels Flot de conception
FPGA: Tailles des FPGAs Xilinx

Famille Nbre max de Nbre de LUTs par CLB Nbre de FF


CLBs & Nbre d’entrées par LUT par CLB
XC4000 56 * 56 = 3136 3 LUTs à 4 entrées 2

Spartan II 28 * 42 = 1176 4 LUTs à 4 entrées 4


(XC2S…)
Spartan 104 * 80 = 8320 8 LUTs à 4 entrées 8
III
( XC3S.. )
Viretx 64 * 96 = 6144 4 LUTs à 4 entrées 4
( XCV… )
Virtex 5 240 * 108 = 22032 8 LUTs à 6 entrées 8
( XC5V…)

20/61
Chapitre 2: Programmable Logic Devices - Emir DAMERGI
Circuits programmables Circuits programmables FPGA: Architecture et
Introduction
pour systèmes combinatoire pour systèmes séquentiels Flot de conception
Étude de l’architecture simplifiée et fonctionnement d’un FPGA (1/4 )
Considérons cette architecture d’un FPGA (2*2) contenant:
• 4 CLBs
• 4 Matrices de connexion permettant de router:
- Les entrées externes du FPGA vers les entrées des CLBs
- Les sorties des CLBs vers les entrées des autres CLBs
- Les sorties des CLBs vers les sorties externes du FPGA.

21/61
Chapitre 2: Programmable Logic Devices - Emir DAMERGI

Circuits programmables Circuits programmables FPGA: Architecture et


Introduction
pour systèmes combinatoire pour systèmes séquentiels Flot de conception
Étude de l’architecture simplifiée et fonctionnement d’un FPGA (2/4)
Pour les CLB, on propose cette architecture simplifiée (inspiré du CLB de la famille XC4000 de Xilinx)

2 Dmux qui permettent de router


2 Luts à 3 les sorties des Luts soit
entrées: • vers la sortie du CLB
Chacune • Ou vers les entrées du LUT3
permettant
d’implémen
tant une
fonction à 1 Mux permettant de router la sortie du
sortie et à 3 LUT ou de la bascule D vers l’extérieur.
entrées

1 Bascule à 2 entrées qui peut être


connectée à la sortie de l’une des 2 LUTs
pour un fonctionnement séquentiel.
22/61
Chapitre 2: Programmable Logic Devices - Emir DAMERGI
Circuits programmables Circuits programmables FPGA: Architecture et
Introduction
pour systèmes combinatoire pour systèmes séquentiels Flot de conception
Étude de l’architecture simplifiée et fonctionnement d’un FPGA (3/4)

Le fonctionnement désiré du CLB est assuré en fixant les valeurs des bits :
• Les contenus des LUTs
• Les bits de contrôle des MUX et DMUX.

Ce sont des bits de configuration


(Ils sont générés par des outils développés
par les fabricants des FPGAs (Xilinx,
Altera, Actel,..)

La suite de bits de configuration générés


par l’outil pour configurer la totalité d’un
FPGA (les CLBs ainsi que les matrices
d’interconnexion) est appelée:
BITSTREAM

Ce Bitstream est sauvegardé au niveau du FPGA dans une mémoire de type


RAM (volatile) ou EEPROM qui permet au circuit de garder son fonctionnement
même après mise hors tension.
23/61
Chapitre 2: Programmable Logic Devices - Emir DAMERGI

Circuits programmables Circuits programmables FPGA: Architecture et


Introduction
pour systèmes combinatoire pour systèmes séquentiels Flot de conception
Étude de l’architecture simplifiée et fonctionnement d’un FPGA (4/4)

L’ IM 1 permet de connecter les entrées externes aux entrées des Luts en fonction des
valeurs des bits de configuration ( )

L’IM2 permet de router la sortie du CLB


• Vers l’extérieur
• Vers l’entrée d’un CLB.

Remarque: IM1 1 est similaire à IM3 . IM2 2 est identique à IM4.


* IM : Interconnexion Matrix (Matrice d’interconnexion).
24/61
Chapitre 2: Programmable Logic Devices - Emir DAMERGI
Circuits programmables Circuits programmables FPGA: Architecture et
Introduction
pour systèmes combinatoire pour systèmes séquentiels Flot de conception
L’architecture complète du FPGA

25/61
Chapitre 2: Programmable Logic Devices - Emir DAMERGI

Circuits programmables Circuits programmables FPGA: Architecture et


Introduction
pour systèmes combinatoire pour systèmes séquentiels Flot de conception
Flot de conception: introduction
Supposons qu’on a un système numérique représentée par un schéma en portes
logiques (Netlist).

Comment l’outil génère t-il, à partir d’un NETLIST, le


Bitstream nécessaire pour configurer le FPGA ?

BITSTREAM

On essaiera par la suite de faire manuellement le travail réalisé par les outils.
26/61
Chapitre 2: Programmable Logic Devices - Emir DAMERGI
Circuits programmables Circuits programmables FPGA: Architecture et
Introduction
pour systèmes combinatoire pour systèmes séquentiels Flot de conception
Flot de conception : exemple à traiter
Considérons ce schéma en portes logiques (système combinatoire) , et essayons de faire
manuellement les tâches réalisées par les outils afin d’implémenter l’architecture sur le
FPGA (2*2) étudié précédemment.

Sorties

Entrées

27/61
Chapitre 2: Programmable Logic Devices - Emir DAMERGI

Circuits programmables Circuits programmables FPGA: Architecture et


Introduction
pour systèmes combinatoire pour systèmes séquentiels Flot de conception
Flot de conception: Fitting

La première étape est le « fitting » ou partitionnement : il consiste à décomposer le


circuit en sous-circuit, chaque sous-circuit pouvant être implémenté sur une unité
élémentaire du FPGA (le LUT).
Étant donné que chaque LUT est capable de modéliser une fonction logique
à 3 entrées:
 On décompose le circuit en parties, chacune ayant au plus 3 entrées

F = fct (A,B,C)

S1 = fct (F,D)

S2 = fct (C,D,E)

28/61
Chapitre 2: Programmable Logic Devices - Emir DAMERGI
Circuits programmables Circuits programmables FPGA: Architecture et
Introduction
pour systèmes combinatoire pour systèmes séquentiels Flot de conception
Flot de conception: placement & routage

La deuxième étape est:


Le placement et routage:

Il s’agit de choisir pour


chaque sous-circuit le LUT
sur lequel il va être
implémenté tout en
optimisant le routage.

Les outils professionnels


intègrent des algorithmes
complexes pour obtenir la
solution placement la moins F S1
coûteuse en terme de
ressources de routage.

A
S2
B
C
 Dans notre cas, D
la décision est E

assez simple !!!


29/61
Chapitre 2: Programmable Logic Devices - Emir DAMERGI

Circuits programmables Circuits programmables FPGA: Architecture et


Introduction
pour systèmes combinatoire pour systèmes séquentiels Flot de conception
Flot de conception: Génération du Bitstream (1/2)

On va déterminer les bits de configuration relatifs au 1er Sous-circuit F = fct (A, B, C).

Commençons par dresser la


table de vérité correspondant
au fonctionnement du sous-
circuit1
A B C F
0 0 0 0 Remarque: On a choisi A
F = (/A&B) or (B xor C) 0 0 1 1 comme Poids fort
0 1 0 1  Il faut respecter ce choix au
0 1 1 1 niveau de l’implémentation sur
1 0 0 0 le LUT (mémoire).
1 0 1 1
1 1 0 1
1 1 1 0

30/61
Chapitre 2: Programmable Logic Devices - Emir DAMERGI
Circuits programmables Circuits programmables FPGA: Architecture et
Introduction
pour systèmes combinatoire pour systèmes séquentiels Flot de conception
Flot de conception: Génération du Bitstream (2/2)

A B C F
11
0 0 0 0
• On commence par les bits A
0 0 1 1 10
0 1 0 1
de configuration du LUT: 0
1
1
0 1 1 1  il s’agit de reproduire les B 1
01 1 1
1 0 0 0 valeurs de la sortie de la 0
1
1 0 1 1 table de vérité. 1
1 1 0 1
C 0

1 1 1 0

• Pour la connexion des entrées A, B et C


aux entrée du LUT, il faut respecter l’ordre:
- A connectée au bit poids fort du LUT.
- B connecté au suivant. A
- C connectée au bit poids faible. B
C
 Ainsi, on retrouve les bits de configuration D
E
de la matrice d’interconnexion 1.
• Router le résultat (sortie du LUT) vers la sortie du
CLB (et non pas vers la bascule).

Et de même pour les autres sous-circuits jusqu’à générer la totalité du Bitstream

Remarque: Les Bitstreams générés par les outils ont un format bien défini par le constructeur du FPGA.
31/61
Chapitre 2: Programmable Logic Devices - Emir DAMERGI

Circuits programmables Circuits programmables FPGA: Architecture et


Introduction
pour systèmes combinatoire pour systèmes séquentiels Flot de conception
Flot de conception: partie ‘Backend’
Flot de conception

VHDL
(voir chap 3)
‘Front end’

Netlist
(schéma en portes Logiques)

Le circuit est découpé en Sous-circuits Fitting


ayant une taille adaptée aux LUTs du
(Partitionnement)
Flot de conception ‘Back-end’

circuit FPGA cible

Il s’agit de décider quels LUTs et CLBs


utiliser et par conséquent le routage
Place & route
établir le routage correspondant. (Placement & routage)

Génération du BITSTREAM
 configuration du FPGA

Test
In circuit

OK 32/61
Chapitre 2: Programmable Logic Devices - Emir DAMERGI
Autre chose !!

 Les tailles des FPGAs sont devenus assez importantes et permettent ainsi
d’implémenter des systèmes complexes (MPSOC).
 Un processeur implémenté sur un FPGA (donc sous forme d’un ensemble de CLBs)
est appelé Soft Processor ou Soft-Core Processor .
 Une mémoire construite avec des CLBs est appelée Distributed RAM.

 En plus des CLBs, on peut trouver dans les familles actuelles des FPGAs, des circuits
hard-coded (implémentés directement sur le FPGA sans utilisation de CLBs):
- Des Blocs mémoires BRAM (Jusqu’à 16 Mbits pour un Virtex5).
- Des multiplieurs (Jusqu’à 104 pour un spartan III).
- Et même des Processeurs. Dans ce cas, on parle de Hard
Processor ou Hard-coded Processor (La famille Virtex5F comporte 4 Hard-coded 200
MHZ PowerPC processors, en plus des CLBs évidément)

33/61
Chapitre 2: Programmable Logic Devices - Emir DAMERGI