Vous êtes sur la page 1sur 28

1 MASTER Contrôle et Instrumentation

Mr Bouchareb Faouzi
CHAPITRE 1 : partie 1
LES CIRCUITS LOGIQUES PROGRAMMABLES
1. PRESENTATION.
1.1. INTRODUCTION.
Il y a quelques années la réalisation d’un montage en électronique numérique
impliquait l’utilisation
d’un nombre important de circuits intégrés logiques. Ceci avait pour
conséquences un prix de revient
élevé, une mise en œuvre complexe et un circuit imprimé de taille importante.

Dans les 1980s, on utilisait des puces de la série 7400 à


paquet DIP ensemble pour créer les circuits numériques
• DIP – Dual Inline Package
• f = x1x2 + x2*x3

Le développement des mémoires utilisées en informatique fut à l’origine des


premiers circuits logiques programmables (PLD : programmable logic device). Ce
type de produit peut intégrer dans un seul circuit plusieurs fonctions logiques
programmables par l’utilisateur. Sa mise en œuvre se fait très facilement à l’aide
d’un programmateur, d’un micro-ordinateur et d’un logiciel adapté.
1.2. STRUCTURE DE BASE D’UN PLD.
La plupart des PLDs suivent la structure suivante :

1  Technique D’implémentation sur les Composants F.P.G.A TIC (FPGA)

 
 
· Un ensemble d’opérateurs « ET » sur lesquels viennent se connecter les
variables d’entrée et leurs compléments.
· Un ensemble d’opérateurs « OU » sur lesquels les sorties des opérateurs « ET
» sont connectées.
· Une éventuelle structure de sortie (Portes inverseuses, logique 3 états,
registres...).
Les deux premiers ensembles forment chacun ce qu’on appelle une matrice. Les
interconnexions de ces matrices doivent être programmables. C’est la raison pour
laquelle elles sont assurées par des fusibles qui sont « grillés » lors de la
programmation. Lorsqu’un PLD est vierge toutes les connexions sont assurées.
Un exemple de cette représentation est donné
par la figure 3

2  Technique D’implémentation sur les Composants F.P.G.A TIC (FPGA)

 
 
La figure 3 représente la structure interne d’un PLD ayant ses fusibles intacts.
Les équations logiques
de Q0 et Q1 sont :

Si on veut obtenir les fonctions

, on « grillera » des fusibles de


façon à obtenir le schéma suivant :

1.3. LES DIFFERENTES FAMILLES DE PLD.


Il existe plusieurs familles de PLD qui sont différenciées par leur structure
interne. Le tableau
suivant présente certaines de ces familles.

3  Technique D’implémentation sur les Composants F.P.G.A TIC (FPGA)

 
 
REMARQUES :
· Certaines de ces familles possèdent en plus des matrices « ET » et « OU », de
la logique
séquentielle (Bascules « D », « JK »...) placée après les entrées ou avant les
sorties du PLD.
· Les « PROMs » sont des circuits utilisés en informatique pour mémoriser de
façon définitive des
données : ce sont des « Mémoires mortes ». Il existe des versions effaçables
comme les
UVPROM (aux U-V) et les EEPROM (électriquement).

1.3 Les PROM


Les premiers circuits programmables apparus sur le marché sont les PROM
bipolaires à fusibles. Cette mémoire est l'association d'un réseau de ET fixes,
réalisant le décodage d'adresse, et d'un réseau de OU programmables, réalisant
le plan mémoire proprement dit. On peut facilement comprendre que, outre le
stockage de données qui est sa fonction première, cette mémoire puisse être
utilisée en tant que circuit logique. La figure ci-dessous représente la structure
logique d'une PROM bipolaire à fusibles.
Nous allons voir dans ce paragraphe la PROM sous l’angle de la réalisation d’une
fonction logique. Même si elle n’est plus utilisée pour cela aujourd’hui, elle est à
la base de la famille de PLA, des PAL et des EPLD.

4  Technique D’implémentation sur les Composants F.P.G.A TIC (FPGA)

 
 
1.4. PLA
Le premier PLD était le PLA (programmable logic array)
Utilise le concept qu’un circuit peut être
réalisé en forme SOP
– Une rangée ET pour les termes de produit
– Une rangée OU pour les fonctions SOP
Toutes les entrées sont fournies en forme normale et inversé en utilisant des
tampons
On peut réaliser n’importe quelle fonction SOP des entrées du PLA
PLAs sont efficaces en capacité logique dans un circuit intégré, et pour cela
sont inclus dans des puces plus larges, comme les microprocesseurs

LES « PALs » (PROGRAMMABLE ARRAY LOGIC).


PRESENTATION.
Ce sont les premiers circuits programmables à être utilisés pour réaliser des
fonctions logiques. Le

5  Technique D’implémentation sur les Composants F.P.G.A TIC (FPGA)

 
 
constructeur AMD a développé ce type de circuit il y a près de 20 ans. Ils
possèdent des matrices
« ET » programmables et des matrices « OU » fixes. La fusion des fusibles est
obtenue en appliquant
à leurs bornes une tension de 11,5 V pendant 10 à 50 μS (leur tension de
fonctionnement est environ
de 5V). Cette opération est bien sûr effectuée en utilisant un programmateur
adapté. La structure de
base de ce PLD est présentée par le schéma suivant.

Certaines broches de ces circuits peuvent être utilisées aussi bien en entrée
qu’en sortie grâce à un
système de logique 3 états. La commande de cette dernière est configurée au
moment de la
programmation. La structure de sortie permet aussi de réinjecter les sorties en
entrée (Feed-back).

6  Technique D’implémentation sur les Composants F.P.G.A TIC (FPGA)

 
 
Selon le type de PAL la structure de sortie peut être constituée d’une porte «
NON», d’une porte
« OU » Exclusive , d’une bascule « D » ou d’une combinaison des trois. Le nombre
d’entrées et de
sorties est lui aussi lié à la référence du PAL.

. REFERENCE DES PALS (D’APRES AMD).


Les diverses possibilités de ces circuits et leur standardisation ont conduit les
constructeurs à définir
une nomenclature permettant de décoder assez facilement la référence des
PALs.

7  Technique D’implémentation sur les Composants F.P.G.A TIC (FPGA)

 
 
Remarques :
· Le nombre d’entrées varie entre 10 et 22.
· Le nombre de sorties varie entre 1 et 10.
· La puissance est indiquée par une lettre code.
· La vitesse indique le temps de propagation en nS.
· Les versions versatiles ont une cellule de sortie programmable permettant
d’obtenir n’importe
quel autre type de structure de sortie (L, H, R ...).
· Les versions CMOS (CE) sont effaçables électriquement. Les fusibles sont
remplacés par des
transistors de type MOS FET. Ce ne sont ni plus ni moins que des « GALs ».

. EXEMPLES DE PAL.

. Le PAL 16L8.
Ce type de circuit est uniquement constitué de logique combinatoire. Il possède
20 broches (figure 8)
agencées de la façon suivante :
- 10 broches configurables uniquement en entrée
- 2 broches configurables uniquement en sortie
- 6 broches configurables en entrée et en sortie

8  Technique D’implémentation sur les Composants F.P.G.A TIC (FPGA)

 
 
- 2 broches d’alimentation.
L’ensemble des sorties provient de portes 3 états inverseuses (figure 6). L’état
haute impédance peut
être commandée par l’ensemble des entrées.
Chaque porte de la matrice « OU » possède 7 entrées. Ceci signifie que chaque
sortie peut résulter,
au maximum, d’une fonction « OU » entre 7 termes produits. Chaque porte de la
matrice « ET »
possède 32 entrées. Ceci signifie que chaque terme produit peut résulter, au
maximum, d’une
fonction « ET » entre 16 variables et leurs compléments.

9  Technique D’implémentation sur les Composants F.P.G.A TIC (FPGA)

 
 
10  Technique D’implémentation sur les Composants F.P.G.A TIC (FPGA)

 
 
Architecture PAL16L8

Le PAL 16R8.
Ce type de circuit est constitué de logique combinatoire et séquentielle. Il
possède 20 broches (Doc.
annexe) agencées de la façon suivante :
· 8 broches (n° 2 à 9) configurables uniquement en entrée
· 1 broche (n° 1) d’entrée d’horloge de l’ensemble des 8 bascules D
· 1 broche (n° 11) de validation des 8 sorties (output enable)
· 8 broches (n° 12 à 19) configurables en sortie et pouvant être réinjecter en
entrée
· 2 broches d’alimentation (n° 10 et 20).
L’ensemble des sorties provient de portes 3 états inverseuses provenant elles-
mêmes de bascules D
(figure 9). L’état haute impédance est commandée par l’entrée OE (broche n°11).
Chaque porte de la matrice « OU » possède 7 entrées. Ceci signifie que chaque
sortie peut résulter,
au maximum, d’une fonction « OU » entre 7 termes produits.

11  Technique D’implémentation sur les Composants F.P.G.A TIC (FPGA)

 
 
Chaque porte de la matrice « ET » possède 32 entrées. Ceci signifie que chaque
terme produit peut
résulter, au maximum, d’une fonction « ET » entre 16 variables et leurs
compléments.
En résumé on peut dire que les huit sorties de ce circuit proviennent d’un
registre trois états. La mise
en haute impédance de ce dernier est commandée par la broche OE et la
mémorisation est activée par
les fronts montants de l’horloge CLK.

12  Technique D’implémentation sur les Composants F.P.G.A TIC (FPGA)

 
 
GAL (generic array logic) c’est une innovation du PAL qui peut être effaçable
reprogrammable

Inventé par Lattice Semiconductor en 1985 il est très utilisé en prototypage ou les
bus et les érreurs logique peuvent être corrigés par reprogrammation

Un circuit simulaire PEEL (programmable electrically erasable logic) introduit par


International CMOS Technology (ICT) corporation

13  Technique D’implémentation sur les Composants F.P.G.A TIC (FPGA)

 
 
14  Technique D’implémentation sur les Composants F.P.G.A TIC (FPGA)

 
 
15  Technique D’implémentation sur les Composants F.P.G.A TIC (FPGA)

 
 
16  Technique D’implémentation sur les Composants F.P.G.A TIC (FPGA)

 
 
Pour la programmation des GAL’s il existe plusieurs logiciels qui utilise le format
JDEC qui est un fichier des 1 et de 0 pour griller ou non les fusibles

Exemple1 :

La programmation de 222v10 comme un décodeur BCD VERS 7SEGMENT

La création de fichier JED est faite par le logicièl WINCUPL de Atmel


Corporation qui permet aussi la simulation.

Le programme :
Name 7segName ;
PartNo 00 ;
Date 19/02/2011 ;
Revision 01 ;
Designer Engineer ;
Company bantec ;
Assembly None ;
Location ;
Device g22v10 ;

Name 7segName ;
PartNo 00 ;
Date 19/02/2011 ;
Revision 01 ;
Designer Engineer ;
Company bantec ;
Assembly None ;
Location ;
Device g22v10 ;

/* *************** INPUT PINS **********************/


PIN [2..5] = [I0..I3] ;
/* *************** OUTPUT PINS *********************/
PIN [17..23] = [Q0..Q6] ;
FIELD input = [I3..I0] ;
FIELD output = [Q6..Q0] ;
TABLE input => output {
/* seg abcdefg */
0 => 'b'1111110 ;
1 => 'b'0110000 ;
2 => 'b'1101101 ;
3 => 'b'1111001 ;
4 => 'b'0110011 ;
5 => 'b'1011011 ;
6 => 'b'1011111 ;
7 => 'b'1110000 ;
8 => 'b'1111111 ;
9 => 'b'1111011 ;
A => 'b'1110111 ;
B => 'b'0011111 ;
C => 'b'1001110 ;
D => 'b'0111101 ;
E => 'b'1001111 ;
F => 'b'1000111 ;
}

17  Technique D’implémentation sur les Composants F.P.G.A TIC (FPGA)

 
 
Le fichier jed est
CUPL(WM) 5.0a Serial# 60008009
Device g22v10 Library DLIB-h-40-1
Created Sat Feb 19 08:30:33 2011
Name 7segName
Partno 00
Revision 01
Date 19/02/2011
Designer Engineer
Company bantec
Assembly None
Location
*QP24
*QF5892
*G0
*F0
*L00032 00000000000011111111111111111111
*L00064 11111111111111111111111111111011
*L00096 11111011101111111111111111111111
*L00128 11111111011101110111011111111111
*L00160 11111111111111111111011101111111
*L00192 10111111111111111111111111111111
*L00224 01111011011110111111111111111111
*L00256 11111111111110110111011111111111
*L00288 11111111111111111111111111111011
*L00320 10110111111111111111111111111111
*L00352 11111011011110110111111111111111
*L00384 11111111111111111011101101110111
*L00416 11111111111111111111111111111111
*L00448 11111111111111111111111111111111
*L00480 11111111011110110111011111111111
*L00512 11111111111111111111111111111011
*L00544 10111111111111111111111111111111
*L00576 10111011011110111111111111111111
*L00608 11111111111110110111101101111111
*L00640 11111111111111111111111101110111
*L00672 01111011111111111111111111111111
*L00704 11111111101110110111111111111111
*L00736 11111111111100000000000000000000
*L00896 00000000000000000000000000001111
*L00928 11111111111111111111111111111111
*L00960 11111111111101111011011101111111
*L00992 11111111111111111111111111111111
*L01024 10110111111111111111111111111111
*L01056 11110111011111111011111111111111
*L01088 11111111111111111111101111111011
*L01120 11111111111111111111111111111011
*L01152 01110111101111111111111111111111
*L01184 11110000000000000000000000000000
*L01472 00000000000000000000000011111111
*L01504 11111111111111111111111111111111
*L01536 11111111101111111011101111111111
*L01568 11111111111111111111101110110111
*L01600 01111111111111111111111111111111
*L01632 01110111101111111111111111111111
*L01664 11111111111101111011011111111111
*L01696 11111111111111111111111110110111
*L01728 01111111111111111111111111111111
*L01760 11111111101110110111111111111111
*L01792 11111111111100000000000000000000
*L02144 00000000000011111111111111111111
*L02176 11111111111111111111111111111111
*L02208 10110111011111111111111111111111
*L02240 11111111011101111111011111111111
*L02272 11111111111111111111101101110111
*L02304 11111111111111111111111111111111
*L02336 10111111101111111111111111111111
*L02368 11111111000000000000000000000000

18  Technique D’implémentation sur les Composants F.P.G.A TIC (FPGA)

 
 
*L02880 00000000000000000000000011111111
*L02912 11111111111111111111111111111111
*L02944 11111111101110111111101111111111
*L02976 11111111111111111111011101110111
*L03008 01111111111111111111111111111111
*L03040 01111011011110111111111111111111
*L03072 11111111111110110111011111111111
*L03104 11111111111111111111111110111011
*L03136 01110111111111111111111111111111
*L03168 11111111111110110111111111111111
*L03200 11111111111100000000000000000000
*L03648 00001111111111111111111111111111
*L03680 11111111111111111111011111110111
*L03712 01111111111111111111111111111111
*L03744 11110111101111111111111111111111
*L03776 11111111111111111011011110111111
*L03808 11111111111111111111111110110111
*L03840 01111111111111111111111111111111
*L03872 11111111101110110111111111111111
*L03904 11111111111100000000000000000000
*L05792 00000000000000001111111111111100
*L05824 00000011000000110000001000000000
*CFDBE
*_9024
On peut utiliser le logicièl Proteus pour la simulation de ce circuit avec un
afficheur 7 seg

Exemple 2

Programmation d’une porte not

a- Programmation d’une sortie combinatoire active à l’état haut


Name INV1A12.PLD ;
PartNo 00 ;
Date 19/02/2011 ;
Revision 01 ;
Designer Engineer ;
Company bantec ;

19  Technique D’implémentation sur les Composants F.P.G.A TIC (FPGA)

 
 
Assembly None ;
Location ;
Device g22v10 ;

/*
* Inputs: define inputs to build simple gates from
*/

Pin 5 = a;

/*
* Outputs: define outputs as active HI levels
*
*/

Pin 21 = inva;

/*
* Logic: examples of simple gates expressed in CUPL
*/

inva = !a; /* inverters */

*L00896 00000000000000000000000000001111
*L00928 11111111111111111111111111111111
*L00960 11111111111111111111111110111111
*L00992 11111111111111111111000000000000
*L05792 00000000000000000000110000000000
*L05824 00000011000000110000001000000000

a- Programmation d’une sortie combinatoire active à l’état bas


Pin 5 = a;

/*
* Outputs: define outputs as active HI levels
*
*/

Pin 21 = !inva;

/*
* Logic: examples of simple gates expressed in CUPL
*/

inva = !a; /* inverters */

*L00896 00000000000000000000000000001111
*L00928 11111111111111111111111111111111
*L00960 11111111111111111111111110111111
*L00992 11111111111111111111000000000000
*L05792 00000000000000000000010000000000
*L05824 00000011000000110000001000000000

b- Programmation d’une sortie enregistrée (latchée) active à l’état haut


Pin 5 = a;

/*
* Outputs: define outputs as active HI levels

20  Technique D’implémentation sur les Composants F.P.G.A TIC (FPGA)

 
 
*
*/

Pin 21 = inva;

/*
* Logic: examples of simple gates expressed in CUPL
*/

inva.d = !a;

*L00896 00000000000000000000000000001111
*L00928 11111111111111111111111111111111
*L00960 11111111111111111111111110111111
*L00992 11111111111111111111000000000000
*L05792 00000000000000000000100000000000
*L05824 00000011000000110000001000000000

c- Programmation d’une sortie enregistrée (latchée) active à l’état bas


Pin 5 = a;

/*
* Outputs: define outputs as active HI levels
*
*/

Pin 21 = !inva;

/*
* Logic: examples of simple gates expressed in CUPL
*/

inva.d = !a;

*L00896 00000000000000000000000000001111
*L00928 11111111111111111111111111111111
*L00960 11111111111111111111111110111111
*L00992 11111111111111111111000000000000
*L05824 00000011000000110000001000000000
Absence de la ligne qui contient le n 5812 et 5813 cad S0s1=00

S0 :5812 et le S1 5813

21  Technique D’implémentation sur les Composants F.P.G.A TIC (FPGA)

 
 
CPLD (Complex Programmable Logic Device)
La nécessité de placer de plus en plus de fonctions dans un même circuit a
conduit tout aturellement à intégrer plusieurs PLDs (blocs logiques) sur une
même pastille, reliés entre eux par une matrice centrale.
Sur la figure suivante chaque bloc LAB (Logic Array Block) de 16 macrocellules
est l'équivalent d'un PLD à 16 OLMCs. Ils sont reliés entre eux par une matrice
d'interconnexion (PIA pour Programmable Interconnect Array).
Un seul point de connexion relie entre eux les blocs logiques. Les temps de
propagation d'un bloc à l'autre sont donc constants et prédictibles. La phase de
placement des différentes fonctions au sein des macrocellules n'est donc pas
critique sur un CPLD, l'outil de synthèse regroupant au maximum les entrées
sorties utilisant des ressources communes.

FIGURE BLOC DIAGRAMMEDU CPLD MAX 7000A ALTERA

L'établissement des liaisons (routage) entre les différentes macrocellules


est encore moins critique : un seul point de connexion -cause du retardrelie
les LAB entre eux. Le temps de propagation des signaux est parfaitement

22  Technique D’implémentation sur les Composants F.P.G.A TIC (FPGA)

 
 
prédictible avant que le routage ne soit fait. Ce dernier n'influence
donc pas les performances du circuit programmé.
Dans l'outil de synthèse, la partie s'occupant du placement et du routage
est appelée le "fitter" (to fit : placer, garnir). La technologie de connexion
utilisée est généralement l'EEPROM (proche de celle des PLDs) ou EEPROM
flash.

FIGURE MACROCELL DE MAX700A

FPGA (Field Programmable Gate Array)

Les blocs logiques sont plus nombreux et plus simples que pour les CPLDs, mais
cette fois les interconnexions entre les blocs logiques ne sont pas centralisées.

23  Technique D’implémentation sur les Composants F.P.G.A TIC (FPGA)

 
 
Un FPGA contient trois types de resources
– Blocs I/O
– Blocs logiques
– Fils d’interconnection
Pas de rangée ET et/ou OU
Le plus populaire FPGA est basé sur des tables de
recherches (LUT) composé de cellules de SRAM
Habituellement, on trouve des LUTs à 4-5 entrées

24  Technique D’implémentation sur les Composants F.P.G.A TIC (FPGA)

 
 
Puisque les FPGAs sont volatils, on
utilise un ROM pour programmer le
FPGA au démarrage
– ROM
– PROM
– EPROM
– EEPROM

f = f1 + f2 = x1x2 + x2*x3

25  Technique D’implémentation sur les Composants F.P.G.A TIC (FPGA)

 
 
26  Technique D’implémentation sur les Composants F.P.G.A TIC (FPGA)

 
 
27  Technique D’implémentation sur les Composants F.P.G.A TIC (FPGA)

 
 
28  Technique D’implémentation sur les Composants F.P.G.A TIC (FPGA)

 
 

Vous aimerez peut-être aussi