Académique Documents
Professionnel Documents
Culture Documents
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.
· 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
La figure 3 représente la structure interne d’un PLD ayant ses fusibles intacts.
Les équations logiques
de Q0 et Q1 sont :
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.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
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).
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.
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
- 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.
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.
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.
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
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 :
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 ;
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
*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
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
*/
*L00896 00000000000000000000000000001111
*L00928 11111111111111111111111111111111
*L00960 11111111111111111111111110111111
*L00992 11111111111111111111000000000000
*L05792 00000000000000000000110000000000
*L05824 00000011000000110000001000000000
/*
* Outputs: define outputs as active HI levels
*
*/
Pin 21 = !inva;
/*
* Logic: examples of simple gates expressed in CUPL
*/
*L00896 00000000000000000000000000001111
*L00928 11111111111111111111111111111111
*L00960 11111111111111111111111110111111
*L00992 11111111111111111111000000000000
*L05792 00000000000000000000010000000000
*L05824 00000011000000110000001000000000
/*
* 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
*L05792 00000000000000000000100000000000
*L05824 00000011000000110000001000000000
/*
* 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
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.
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.
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.
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
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
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)