Professional Documents
Culture Documents
MLK - ECST
Les circuits logiques programmables - Synthèse de TP et approfondissement
Présentation
Nous avons vu dans le précédent TP qu’il est possible aujourd’hui d’implanté
plusieurs fonction logique dans un même composant : les circuits logiques
programmables. Les circuits logiques programmables contiennent des
fonctions logiques (combinatoires et séquentielles) dont l'utilisateur peut
programmer le schéma d'après un cahier des charges.
Ces composants se distinguent des microprocesseurs et microcontrôleurs par le
fait que leur programmation concerne leur structure interne et non une suite
d'instructions à réaliser. Ceci leur confère une rapidité d’exécution de tâches
bien supérieures à celle des microprocesseurs.
Les circuits programmables remplacent de plus en plus les circuits intégrés (CI)
classiques (à fonction figée) car : FPGA de Xilinx (modèle Spartan
• Un seul circuit peut remplacer plusieurs CI classiques (gain de place et XC3S400) avec 400 000 portes
Les fabricants de composants logiques programmables font de gros efforts pour réduire ces contraintes, en
proposant :
• Des logiciels simples d'emploi.
• Des composants programmables directement sur système (sans programmateur).
Cours / Synthèse de TP 1
Les circuits logiques programmables - Synthèse de TP et approfondissement
Structure de base
La figure ci-contre présente un exemple simplifié de
la structure interne de base d'un circuit PAL (matrice
ET programmable). Les matrices programmables
utilisent des "fusibles" placés en série entre les
entrées et les opérateurs logiques. Dans les structures
reprogrammables ces "fusibles" sont remplacés par
des transistors MOS.
La représentation donnée dans l'exemple n'est pas
utilisée en pratique, car elle occupe trop de place et
cela conduirait à des schémas illisibles. Une
représentation simplifiée (mais équivalente) a été
Structure de base d’un PAL
adoptée pour représenter la structure interne des
circuits logiques programmables :
Les figures données ci-après présentent les principales configurations possibles de l'OLMC.
2
Les circuits logiques programmables - Synthèse de TP et approfondissement
Programmation du GAL22V10
Pratiquement, on ne programme jamais directement ni les OLMC ni les matrices. On utilise pour cela un
logiciel (ISIS de Proteus avec compilateur de code HDL comme ISPLever) qui connait la structure interne du
composant et qui y réalise l'implantation (fitting) du problème qu'on lui soumet. Néanmoins, la connaissance
du composant permet d'évaluer avec efficacité la faisabilité d'un projet.
L'analyse de la structure interne du GAL22V10 met en évidence certaines contraintes d'utilisation et donc de
programmation de certaines broches (en mode registered) :
• Les bascules ont une horloge commune (synchrone), broche 1.
• Les bascules sont dotées d'un RESET (mise à 0 des sorties Q) asynchrone et d'un PRESET (mise à 1)
synchrone. La programmation du RESET est obligatoire.
La programmation d'un circuit logique peut s'effectuer à partir d’équations ou d’une table de vérité dans un
fichier de description HDL (Hardware Description Language) ou à partir du schéma à implanter.
1. Étapes de la programmation
• Création d’un projet Proteus et saisie du schéma de simulation sous ISIS,
• Saisi du schéma à implanter ou création et compilation du fichier HDL,
• Association du fichier JEDEC obtenu au PLD du schéma,
• Simulation interactive ou avancée (chronogrammes) du système,
• Programmation du PLD GAL22V10 à l’aide d’un programmateur,
• Validation du fonctionnement sur la carte électronique.
Cours / Synthèse de TP 3
Les circuits logiques programmables - Synthèse de TP et approfondissement
Chaîne d’énergie
Énergie
d’entrée
Alimenter Moduler Convertir Transmettre Action
_______________________________________________________
_______________________________________________________
Choix du
_______________________________________________________
composant
_______________________________________________________
_______________________________________________________
Ecriture des
_______________________________________________________
modules de
description _______________________________________________________
_______________________________________________________
Création du _______________________________________________________
fichier de _______________________________________________________
programmation
_______________________________________________________
_______________________________________________________
Simulation _______________________________________________________
logique de _______________________________________________________
vérification
_______________________________________________________
_______________________________________________________
Programmation _______________________________________________________
du composant
_______________________________________________________
4
Les circuits logiques programmables - Synthèse de TP et approfondissement
La représentation schématique directe peut sembler séduisante, mais elle impose d'effectuer préalablement
toutes les opérations d'une étude de logique combinatoire (table de vérité, équations, logigramme). Elle est
donc surtout utilisée pour faire évoluer rapidement un produit existant.
La description par fichier HDL est réalisée à partir d'un simple éditeur de texte mais elle nécessite la
connaissance de ce langage. On trouvera dans ce chapitre les éléments suffisants pour pouvoir écrire un fichier
en langage ABEL-HDL mais il en existe d’autres : VERILOG, VHDL, CUPL, etc.
MODULE DSPPROG
TITLE 'alarme de phares' _______________________________________________
DECLARATIONS
" Circuit utilise
DSPPROG device 'P22V10';
" Variables d'entree _______________________________________________
C, L, P pin 2, 3, 4;
" Variables de sortie
S1, S2 pin 23, 22 istype 'com';
EQUATIONS
S1 = !C & L & P; _______________________________________________
S2 = P;
TEST_VECTORS
([C, L, P] -> [S1, S2]);
_______________________________________________
[0, 0, 0] -> [.X.,.X.];
[0, 1, 1] -> [.X.,.X.];
END DSPPROG _______________________________________________
Cours / Synthèse de TP 5
Les circuits logiques programmables - Synthèse de TP et approfondissement
On peut aussi trouver dans cette section les déclarations de groupement de variables (bus).
_______________________________________________________
N = [E3, E2, E1, E0] ;
_______________________________________________________
S = [Q7 .. Q0] ; _______________________________________________________
_______________________________________________________
Le langage ABEL-HDL permettra de traiter ces variables individuellement ou le nombre résultant de leur
association. Ceci permettra de simplifier considérablement l'écriture de certaines équations.
Section de description
C'est ici qu'est décrite la fonction à réaliser. La description peut se faire en utilisant plusieurs outils de
représentation. Chaque outil est annoncé par un mot clef spécifique :
• EQUATIONS, pour une description par équations logiques,
• TRUTH_TABLE, pour une description par table de vérité,
• STATE_DIAGRAM, pour une description par diagramme d'état (séquentielle).
NON ! �
𝑺=𝑨
𝑺=𝑨∙𝑩
ET &
𝑺= 𝑨+𝑩
OU # 𝑺 = �������
𝑨∙𝑩
𝑺 = ��������
𝑨+𝑩
OU-EX $
𝑺=𝑨⊕𝑩
NON-OU-EX !$
𝑺=𝑨⊕𝑩
Leur notation diffère de celle employée habituellement parce qu'il faut pouvoir représenter différemment les
opérateurs logiques et les opérateurs arithmétiques.
6
Les circuits logiques programmables - Synthèse de TP et approfondissement
TRUTH_TABLE
Explications : ___________________________________________________
([E1, E2] -> [Q1, Q2]) ;
[0, 0] -> [0, 0] ; ________________________________________________________________
[0, 1] -> [0, 1] ; ________________________________________________________________
[1, 0] -> [0, 1] ;
________________________________________________________________
[1, 1] -> [1, 1] ;
_______________________________________________________________
Section de test
Elle est annoncée par le mot TEST_VECTORS. Elle va permettre de tester la TEST_VECTORS
validité des modules de description de manière combinatoire (ou séquentielle) en
([C, L, P] -> [S1, S2]) ;
simulant le fonctionnement du circuit programmé. Cette simulation sera réalisée à
partir du logiciel de programmation des composants. [0, 0, 0] -> [.X.,.X.] ;
Dans cet exemple, le test porte sur deux combinaisons des variables d'entrée C, L [0, 1, 1] -> [.X.,.X.] ;
et P. Pour ces combinaisons, on demande au logiciel d'établir l'état des sorties S1 et
S2 sous forme de chronogrammes (par l'argument .X.). TEST_VECTORS
Il est possible de donner directement dans le tableau les états attendus des ([C, L, P] -> [S1, S2]) ;
variables de sortie. Ceux-ci seront comparés aux résultats fournis par la simulation [0, 0, 0] -> [0, 0] ;
du fonctionnement du composant et le logiciel informera de la réussite ou de
[0, 1, 1] -> [1, 1] ;
l'échec des tests.
Cours / Synthèse de TP 7
Les circuits logiques programmables - Synthèse de TP et approfondissement
Applications
Dispositif de sécurité sur une graveuse 3D
On veut implanter dans un EPLD 22V10 le dispositif de sécurité
d'une machine graveuse 3D (étudié précédemment). Le
dispositif est doté de quatre variables d'entrée :
• P (pour le positionnement de la
pièce), MODULE ______________________________________________
• E (pour l'écran protecteur), TITLE ________________________________________________
• B (pour le bouton poussoir de mise DECLARATIONS
en marche) _____________________________________________________
• K (pour le contact à verrouillage par
clé). _____________________________________________________
_____________________________________________________
Le moteur sera activé quand M = 1.
EQUATIONS
L'analyse du fonctionnement a permis _____________________________________________________
d'établir l'équation de la sortie : TEST_VECTORS
M = P.B.(E + K) ([P, E, B, K] -> M);
On donne le schéma structurel du @const n=0;
montage à réaliser. Seules les @repeat 16 {n -> .X.; @const n = n+1;}
connexions nécessaires à l'écriture du END _________________________________________________
fichier ABEL-HDL sont représentées.
• Compléter ci-contre le fichier ABEL (SECURIT.ABL) permettant d'obtenir le fonctionnement souhaité.
TEST_VECTORS
([A, B ] -> [A_SUP_B, A_EQU_B, A_INF_B]);
[ 5, 5 ] -> [0, 1, 0];
[ 9, 12 ] -> [0, 0, 1];
[ 7, 6 ] -> [1, 0, 0];
8
Les circuits logiques programmables - Synthèse de TP et approfondissement
Cours / Synthèse de TP 9