10
01/09/2011 Les circuits logiques programmables - Synthèse de TP et approfondissement MLK - ECST

Les circuits logiques programmables - STIDDSIN MLK …stiddsin.free.fr/explorer/Cours-TD-TP/06b-PLD-Synthese-de-TP... · Création d’un projet Proteus et saisie du schéma de simulation

Embed Size (px)

Citation preview

01/09/2011

Les circuits logiques programmables

- Synthèse de TP et approfondissement

MLK - ECST

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

Les circuits logiques programmables - Synthèse de TP et approfondissement

Cours / Synthèse de TP 9