Les circuits logiques programmables - STIDDSIN MLK...
Transcript of Les circuits logiques programmables - STIDDSIN MLK...
Les circuits logiques programmables - Synthèse de TP et approfondissement
Cours / Synthèse de TP 1
Les circuits logiques programmables - Synthèse de TP et approfondissement
Centre d’intérêt : CI4 Structures matérielles associées au traitement de l’information
Objectif et Compétence : CO8.sin1 choisir une solution matérielle et logicielle CO9.sin3 choisir une solution dans une démarche de veille technologique
Pré-requis : TP inductif « logique programmable »
Type : Cours / Synthèse de TP
Présentation
Nous avons vu dans le précédent TP qu’il est possible aujourd’hui d’implanté
plusieurs fonctions logiques 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 ont depuis longtemps remplacé les circuits intégrés
(CI) classiques (à fonction figée) car :
Un seul circuit peut remplacer plusieurs CI classiques (gain de place et
réalisation matérielle des cartes électroniques plus aisée).
La fonction réalisée peut être modifiée par une nouvelle programmation sans qu'il soit nécessaire ni de
fabriquer une nouvelle carte ni de remplacer le composant.
Les composants programmables sont dotés de dispositifs de sécurité destinés à empêcher la copie de la
fonction réalisée.
La plupart sont directement programmable sur le système (ISP).
Cependant, l'utilisation de ces circuits entraîne quelques contraintes. Il faut prévoir :
Une phase de programmation du composant.
Des logiciels pour la création du programme, sa compilation et son transfert avec un programmateur
compatible.
Des compétences supplémentaires pour utiliser ces matériels.
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).
Architecture d'un circuit logique programmable
Principe de fonctionnement Toutes équations logiques à n variables peuvent se mettre sous la forme d'une somme de produits ou de
produits de somme. Tout naturellement les composants programmables disposent d'une structure comportant
ces deux ensembles fonctionnels :
Un ensemble d'opérateurs ET (matrice ET) recevant les entrées et leurs compléments.
Un ensemble d'opérateurs OU (matrice OU) qui réalise une somme de produits et fournit les sorties.
Selon la complexité des circuits programmables utilisés une ou l'autre ou chacune des matrices pourra être
programmée.
FPGA de Xilinx (modèle Spartan XC3S400) avec 400 000 portes
Les circuits logiques programmables - Synthèse de TP et approfondissement
2
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é
adoptée pour représenter la structure interne des
circuits logiques programmables :
Présentation du GAL22V10 (Utilisé en TP)
Présentation Le GAL 22V10 est implanté dans un boitier DIP 24 broches ou PLCC 28
broches. Il appartient à la technologie E2CMOS PLD (E2 = Electrically Erasable).
Sa structure interne est donnée en annexe à la dernière page. En plus de la
matrice ET programmable facilement identifiable, on remarque que ce circuit
est doté de 12 entrées dont une à double fonction (entrée logique + horloge) et
de 10 sorties. On remarque aussi que ces 10 sorties sont issues de cellules
nommées OLMC (Output Logic Macro Cell). L'analyse de la structure interne
(paragraphe suivant) montre que ces sorties sont ré-injectables comme entrées.
Structure interne d’une OLMC L'OLMC comporte principalement une bascule D et deux multiplexeurs. C'est une structure programmable.
Les figures données ci-après présentent les principales configurations possibles de l'OLMC.
Structure de base d’un PAL
PAL « vierge » PAL « programmé »
Structure interne d’une OLMC
Boitier PLCC et DIP
Les circuits logiques programmables - Synthèse de TP et approfondissement
Cours / Synthèse de TP 3
1. Combinatorial Mode (Mode Combinatoire)
Dans ce mode, les sorties peuvent être réinjectées dans la matrice ET. Ces broches peuvent aussi être utilisées
directement comme des entrées.
2. Registred Mode (Bascule D utilisée)
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.
Programmateur pour les circuits non ISP
Les circuits logiques programmables - Synthèse de TP et approfondissement
4
Conception à l’aide de circuit logique programmable
Les circuits logiques programmables réalisent la fonction TRAITER de la chaîne d'information :
Le processus de conception est décrit par l'organigramme suivant :
_______________________________________________________
_______________________________________________________
______________________________________________________
_______________________________________________________
_______________________________________________________
_______________________________________________________
_______________________________________________________
_______________________________________________________
_______________________________________________________
_______________________________________________________
_______________________________________________________
_______________________________________________________
_______________________________________________________
_______________________________________________________
_______________________________________________________
_______________________________________________________
_______________________________________________________
_______________________________________________________
_______________________________________________________
_______________________________________________________
_______________________________________________________
- Définitions des entrées et sorties à câbler.
- Description du fonctionnement par : logigrammes, équations logiques,
tables de vérité.
- Critères techniques : nombre d'entrées et de sorties, complexité de la
fonction à implanter
- Critères financiers : coût, approvisionnement, moyens de
programmation nécessaires.
- À l'aide d'un logiciel de développement :
- Par schémas
- Par langage de description HDL
- Traduit les modules de description en un fichier JEDEC compatible
avec la programmation du composant.
Le fichier JEDEC est une suite de '0' et de '1' qui détermine l'état des
fusibles des matrices.
- On utilise un simulateur logique (inclus dans le logiciel de
développement) pour s'assurer que le composant programmé
fonctionnera conformément au cahier des charges.
- Sur un appareil programmateur pour un EPLD, PAL.
- Directement sur le système si le composant dispose d'une interface de
programmation : ISP, FPGA.
Cahier des charges
Choix du composant
Ecriture des modules de description
Création du fichier de
programmation
Simulation logique de vérification
Programmation du composant
Chaîne d’information
Entrées logiques Sorties logiques
Acquérir Traiter Communiquer
Grandeur physique
à acquérir
Consignes
Chaîne d’énergie
Alimenter Moduler Convertir Transmettre Action
Énergie d’entrée
Les circuits logiques programmables - Synthèse de TP et approfondissement
Cours / Synthèse de TP 5
Langage de description HDL
La programmation d'un circuit logique programmable peut s'effectuer soit :
À partir du schéma à implanter.
À partir des équations ou de la table de vérité dans un fichier HDL.
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.
Structure d'un fichier ABEL-HDL Un fichier ABEL-HDL est constitué de cinq parties. Chacune de ces zones débute par un mot clef spécifique du
langage ABEL-HDL.
ATTENTION ! Comme la plupart des langages de programmation, le langage ABEL-HDL est en anglais. Il
ne faut donc pas utiliser de caractère accentué.
On donne ci-dessous l'exemple d'un fichier ABEL-HDL nommé DSPPROG.abl :
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
Sections d'entête et de fin Elles encadrent le document ABEL-HDL. L'entête commence par le mot clef MODULE suivi du nom du
module (en général le même nom que le fichier ABEL-HDL). Elle comporte également le mot TITLE suivi
d'un texte entre apostrophes qui permet de décrire le dispositif réalisé.
La section de fin est annoncée par le mot END et doit être suivie du nom du module.
_______________________________________________
_______________________________________________
_______________________________________________
_______________________________________________
_______________________________________________
Section d’entête
Section des déclarations
Sections de description
Section de test
Section de fin de fichier
Les circuits logiques programmables - Synthèse de TP et approfondissement
6
Section des déclarations Elle commence par le mot clef DECLARATIONS. Dans cette section, on indiquera :
L'indication du composant utilisé,
L’identification des broches utilisées (noms et numéros) ainsi que la spécification du type des sorties.
La directive device indique le composant à
programmer et nomme le futur fichier JEDEC.
La directive pin permet d'affecter un numéro de broche à une
variable (entrée ou sortie).
Le mot istype, suivi d'un argument définit le type de la variable de
sortie :
Istype'com' indique que la sortie est de type combinatoire.
Istype'reg_d' indique que la sortie est de type séquentiel
(utilisation de la bascule D).
On peut aussi trouver dans cette section les déclarations de groupement de variables (bus).
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).
1. Description par équations logiques
Le fonctionnement du dispositif à implanter est décrit sous forme d'équations liant les sorties aux entrées.
Le langage ABEL-HDL permet d'écrire les opérations classiques de la logique combinatoire mais il autorise
aussi l'utilisation des opérations arithmétiques et relationnelles.
Les opérateurs logiques
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.
Exemples :
______________________
______________________
C, L, P pin 2, 3, 4 ;
S1, S2 pin 23, 22 istype'com';
Opérateur logique Symbolisation ABEL
NON !
ET &
OU #
OU-EX $
NON-OU-EX !$
Équations logiques Écriture en ABEL
S = !A ;
S = A&B ;
S = A#B ;
S = !(A&B) ;
S = !(A#B) ;
S = A $ B ;
S = A !$ B ;
Exemples : _____________________________ DSPPROG device 'P22V10' ;
_______________________________________________________
_______________________________________________________
_______________________________________________________
_______________________________________________________
Le mot N est constitué des bits E3, E2, E1 et E0.
E3 constitue le MSB (bit de poids fort) et E0 le LSB (bit de poids faible).
Le mot S est constitué des bits Q7, Q6, Q5, Q4, Q3, Q2, Q1 et Q0.
Q7 constitue le MSB et Q0 le LSB.
N = [E3, E2, E1, E0] ;
S = [Q7 .. Q0] ;
Les circuits logiques programmables - Synthèse de TP et approfondissement
Cours / Synthèse de TP 7
Les opérateurs arithmétiques
Ils permettent la mise en œuvre simple des fonctions de calcul dans les opérations logiques. Le langage ABEL-
HDL utilise leur représentation conventionnelle : + - * /
Les opérateurs relationnels
Ils effectuent une comparaison entre les deux arguments de l'opération.
Le résultat est donc vrai (1) ou faux (0).
La structure conditionnelle : WHEN-THEN-ELSE (QUAND-ALORS-SINON)
Cette structure alternative permet de décrire une
fonction logique dans la description par équation. Le
résultat d'un test conditionne l'équation réalisée. La
syntaxe utilisée présente deux formes (complète ou
réduite) :
WHEN (condition) THEN équation ; ELSE équation ;
WHEN (condition) THEN équation ;
2. Description par table de vérité
La description débute par le mot clef TRUTH_TABLE
3. Description par diagramme d’état
La description débute par le mot clef STATE_DIAGRAM. Cette partie sera développée ultérieurement.
Section de test Elle est annoncée par le mot TEST_VECTORS. Elle va permettre de tester la
validité des modules de description de manière combinatoire (ou séquentielle) en
simulant le fonctionnement du circuit programmé. Cette simulation sera réalisée à
partir du logiciel de programmation des composants.
Dans cet exemple, le test porte sur deux combinaisons des variables d'entrée C, L
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.).
Il est possible de donner directement dans le tableau les états attendus des
variables de sortie. Ceux-ci seront comparés aux résultats fournis par la simulation
du fonctionnement du composant et le logiciel informera de la réussite ou de
l'échec des tests.
Explications : ___________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
_______________________________________________________________
La première ligne identifie les variables d'entrées
(E1, E2) et les variables de sorties (Q1 et Q2). Les lignes suivantes
décrivent les états des variables de sorties en fonction de la
combinaison des variables d'entrées.
Exemples de structure complète :
__________________________________
__________________________________
__________________________________
Test Symbolisation ABEL
Égal ==
Différent !=
Inférieur <
Inférieur ou égal <=
Supérieur >
Supérieur ou égal >=
Expressions Écriture en ABEL
S prend la valeur 1 si A est égal à B S = A == B ;
S prend la valeur 1 si A est inférieur à B S = A < B ;
S prend la valeur 0 si A est supérieur à B S = A <= B ; S = !(A > B) ;
EQUATIONS
WHEN (E1 == 0) THEN S = A $ B ;
ELSE S = A !$ B ;
TRUTH_TABLE
([E1, E2] -> [Q1, Q2]) ;
[0, 0] -> [0, 0] ;
[0, 1] -> [0, 1] ;
[1, 0] -> [0, 1] ;
[1, 1] -> [1, 1] ;
TEST_VECTORS
([C, L, P] -> [S1, S2]) ;
[0, 0, 0] -> [.X.,.X.] ;
[0, 1, 1] -> [.X.,.X.] ;
TEST_VECTORS
([C, L, P] -> [S1, S2]) ;
[0, 0, 0] -> [0, 0] ;
[0, 1, 1] -> [1, 1] ;
Les circuits logiques programmables - Synthèse de TP et approfondissement
8
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),
E (pour l'écran protecteur),
B (pour le bouton poussoir de mise
en marche)
K (pour le contact à verrouillage par
clé).
Le moteur sera activé quand M = 1.
L'analyse du fonctionnement a permis
d'établir l'équation de la sortie :
M = P.B.(E + K)
On donne le schéma structurel du
montage à réaliser. Seules les
connexions nécessaires à l'écriture du
fichier ABEL-HDL sont représentées.
Compléter ci-contre le fichier ABEL (SECURIT.ABL) permettant d'obtenir le fonctionnement souhaité.
Comparateur logique 4 bits On veut implanter dans un EPLD 22V10 un
comparateur logique quatre bits. Il a pour
fonction de comparer deux mots binaires A
et B codés sur 4 bits (A3 à A0) et de (B3 à
B0). Le résultat de la comparaison est
disponible sur 3 sorties :
A_SUP_B à '1' lorsque A est plus grand que B
A_EQU_B à '1' lorsque A est égal que B
A_INF_B à '1' lorsque A est plus petit que B
Compléter le fichier ABEL
(COMPARAT.ABL) ainsi que le schéma
permettant d'obtenir le fonctionnement
présenté.
MODULE ______________________________________________
TITLE ________________________________________________
DECLARATIONS
_____________________________________________________
_____________________________________________________
_____________________________________________________ EQUATIONS
_____________________________________________________ TEST_VECTORS ([P, E, B, K] -> M); @const n=0; @repeat 16 {n -> .X.; @const n = n+1;}
END _________________________________________________ ___________________________________________________
securit
'dispositif de securite pour graveuse 3D'
securit device ‘P22V10’ ; " Choix du composant 22V10
E, P, B, K pin 2, 3, 4, 5 ; " Variables d'entrée
M pin 23 istype'com' ; " Variables de sortie
M = P & B & (E # K) ;
securit
MODULE comparat
TITLE 'comparateur logique 4 bits'
DECLARATIONS
comparat device ‘P22V10’ ; " choix composant 22V10
B3, B2, B1, B0 pin 18, 19, 20, 6 ; " Variables d'entrée
A3, A2, A1, A0 pin 5, 4, 3, 2 ; " Variables d'entrée
A = [A3 .. A0] ; " Définition du bus A
B = [B3, B2, B1, B0] ; " Définition du bus B
" Variables de sortie
A_SUP_B, A_EQU_B, A_INF_B pin 23, 22, 21 istype 'com';
EQUATIONS
when (A > B) then A_SUP_B = 1 ; " ou A_SUP_B = A > B;
when (A == B) then A_EQU_B = 1; " ou A_EQU_B = A == B;
when (A < B) then A_INF_B = 1; " ou A_INF_B = A < B;
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];
END comparat