Download - Initiation à la logique programmable
Initiation à la logique programmable - D.Genet - Janvier 2006 1
Initiationà la logique programmable
Initiationà la logique programmable
Initiation à la logique programmable - D.Genet - Janvier 2006 2
Un système électronique numérique pourra être implémenté avec des circuits logiques de divers types :
standardsstandards configurablesconfigurables
à mémoireà mémoire
séquentiablesséquentiables
spécialisésspécialisés
1 fonctionpar circuit
PAL, CPLDFPGA
MicroprocesseursMicrocontrôleurs
DSP
RAM, ROMPériphériques
standards,ASICs
Mixtes :FPGA + MICRO + RAM
Mixtes :FPGA + MICRO + RAM
SOC (System On Chip)
Typologie des circuits logiques
Initiation à la logique programmable - D.Genet - Janvier 2006 3
à configuration interne
figée(microprocesseurs)
à configuration interne
programmable (PLDs, CPLDs, FPGA,...)
Méthodes &Outils de
conception
Langages deprogrammation :
Assembleur, langage haut niveau
(C, java...)
Langages de description :Abel, AHDL
langage haut niveau (VHDL,Verilog)
Séquence d'instructions
Fichier de configuration
Typologie descircuits
logiques
Les composants programmables
Initiation à la logique programmable - D.Genet - Janvier 2006 4
Intégration
Temps réel
Développement
Confidentialité
PLDs (Programmable Logic Devices) : acronyme génériquede tout ce qui est circuit logique programmable (SPLDs, CPLDs, FPGA).
L’intérêt que présentent les circuits programmables par rapport aux circuits à structure figée tient essentiellement à des impératifs technico-économiques, résumés en quelques mots clés :
Intérêt des PLDs
Initiation à la logique programmable - D.Genet - Janvier 2006 5
CPLD
PAL, GAL, EPLD
FPGA, ASIC
CI (7400, 7474,...)
x 100 portes
x100 α x1000 portes x10 000 α x 100 000 portes
x 10 portes
Moins de boîtiers :
Moins de cartes
Cartes pluspetites
Consommationréduite
x10 portes
x100 portes
1000 à 10000 portes 1000 à x1000 000 portes
Intérêt des PLDs
Intégration de systèmes par les PLDs
Initiation à la logique programmable - D.Genet - Janvier 2006 6
Il est courant d’implémenter avec le mêmecircuit plusieurs fonctions distinctes
ContrôleurI2C
Contrôleurcaméra
Préprocesseurpixels
ContrôleurVGA
Port série
ContrôleurRAM
A la limite on crée un SOC : Système On Chip
Intérêt des PLDs
Intégration fonctionnelle
Initiation à la logique programmable - D.Genet - Janvier 2006 7
Les unités fonctionnelles d’un PLD peuvent réagirsimultanément et sans délai au même signal
Unité1
Unité2
Unité3
Intérêt des PLDs
Temps réel : parallélisme
Initiation à la logique programmable - D.Genet - Janvier 2006 8
Les unités fonctionnelles d’un PLD peuvent travaillersimultanément de façon concurrentes
Unité1
Unité2
Unité3
Unité4
Unité5
Unité6
Unité7
Unité8
Unité9
Intérêt des PLDs
Temps réel : pipeline
Initiation à la logique programmable - D.Genet - Janvier 2006 9
Existence d’outils de développement totalementdédiés à la conception de systèmes sur PLDs.
Possibilité de portage de projets déjà implémentéssur d’autres cibles.
Possibilité d’utiliser des noyaux de propriétéintellectuelle (IP)* pour des fonctions standards.
Le marché offre de plus en plus de PLDs intégrantdes fonctions complexes jusqu’alors implémentéespar des circuits spécialisés (RAM, multiplieurs…)
...
* ou libres…
Intérêt des PLDs
Développement aisé
Initiation à la logique programmable - D.Genet - Janvier 2006 10
Un modification même majeure des spécificationstechniques n’entraîne pas nécessairement une modification de l’environnement externe des PLDs(circuit imprimé en particulier)
...
Les PLDs actuels sont reconfigurables indéfiniment soit in situ soit par leur mémoire (PROM ou FLASH) de configuration.
Intérêt des PLDs
Développement flexible
Initiation à la logique programmable - D.Genet - Janvier 2006 11
Intégration : réduction des coûts d ’industrialisation(surface PCB, manipulations)
Portabilité des projets : les investissements intellectuels sont récupérables pour d’autres projets ou même commercialisables sous forme d ’IP.
Développement : réduction des délais de développement et de coût des avenants de modifications
Tous les arguments cités en faveur des PLDs ont une incidence sur les côuts :
Intérêt des PLDs
Coûts
Initiation à la logique programmable - D.Genet - Janvier 2006 12
Sauf recopie intégrale d’un système intégrant des PLDsil est difficile d’en refaire la synthèse logique au seul examen des circuits et de leur fonctionnement...
Les PLDs directement configurables disposent en généralde la possibilité d’être programmés sans possibilité derelecture de leur configuration (bit de sécurité).
Intérêt des PLDs
Confidentialité
Initiation à la logique programmable - D.Genet - Janvier 2006 13
La réalisation d’un système logique séquentiel peut amenerà faire un choix entre microcontrôleur et PLD. D’où la nécessité d’en connaître quelques différences fondamentales :
Un PLD est capable de réagir en temps réel à un changement d’état de ses entrées.
Un PLD offre beaucoup plus de ports E/S qu’un microcontrôleur.
Un PLD est capable d’implémenter plusieurs processus fonctionnant en parallèle
Intérêt des PLDs
Microcontrôleur ou PLDs ?
Initiation à la logique programmable - D.Genet - Janvier 2006 14
Tout en présentant d’indéniables qualités, les PLDs présentent également des limites :
Rapidité : les fréquences d ’horloge sont limitées au mieux à quelques centaines de MHz en raison des délais de propagation induits par le routage.
Coût : si le coût de développement est en général avantageux, le coût en quantité peut s’avérer plus lourd que celui d’une solution à base d’ASICs.
Quantité
Coût total
Asics
PLDs
Intérêt des PLDs Limites des PLDs
Initiation à la logique programmable - D.Genet - Janvier 2006 15
Circuit programmable : circuit capable de recevoir une configuration programmée de ses ressources intégrées.
La majorité des circuits programmables du marché sont des circuits logiques (peu d’analogiques)
Principaux constructeurs du marché :
ActelAMD
Vantis
AlteraPhilips
Xilinx
DG France : ancien ESEO
DG France : ancien ESEO
Les PLDS : Approche
Initiation à la logique programmable - D.Genet - Janvier 2006 16
e1 e2 e3
e e
P1
P2
P3
S1 S2
+5V +5V
+5V
Fusible
EntrΘes
SortiesProduits
Entrées
82S100 (Signetics) : 16 entrées (e1..e16), 8 sorties (S1..S8), 48 termes produits (P1..P48).
48x16x2 + 48 x 8 = 1920 points de configuration
*
* fusibles titanium-tungstène
Les PLDS : Un ancêtre, le FPLA (1982)
Initiation à la logique programmable - D.Genet - Janvier 2006 17
Compte tenu des points de configuration activés (ou plutôt coupés), par exemple :
+5V
e1
e2
e3
P1
+5V
P1 P2 P3
S1
Le terme produit P1 est issud’un ET câblé tel que :
P1 = e1.e2.e3
La sortie S1 est issued’un OU câblé tel que :
S1 = P1 + P3
Ici P3 = 0 ; il reste :
S1 = e1.e2.e3
Un ancêtre :le FPLA FPLA : analyse de la configuration
Initiation à la logique programmable - D.Genet - Janvier 2006 18
Pour schématiser l’organisation et la configuration d’unPLD, on utilise en général la représentation suivante :
e1 e2 e3
P1
P2
P3
S1 S2
Un ancêtre :le FPLA
FPLA : représentation symbolique
Initiation à la logique programmable - D.Genet - Janvier 2006 19
Au final, l’organisation d’un FPLA s’appuie sur deux matrices programmables :
e1 e2 e3
P1
P2
P3
S1 S2Matrice de ET
Matricede OU
La matrice de ET fournit n termes produits à la matrice de OU.
Un ancêtre :le FPLA FPLA : synthèse
Initiation à la logique programmable - D.Genet - Janvier 2006 20
SPLDs (Simple Programmable Logic devices)
CPLDs (Complex Programmable Logic Devices)
FPGAs (Field Programmable Gates Array)
Les circuits logiques programmables du marché sont classés en gros selon 3 grandes familles :
Les critères de cette classification seront présentéslors de la synthèse finale de cet exposé.
Les PLDS actuels : désignation
Les PLDS actuels : désignation
Initiation à la logique programmable - D.Genet - Janvier 2006 21
Faible volume de ressource : quelques centaines de portes
Pas de chemin d’interconnexion interne programmable (pas de « routage » nécessaire entre les E/S et les ressources du PLD)
Unique réseau programmable de ET commun à uncertain nombre de structures répétitives.
Exemples : PAL, GAL, EPLD
Les SPLDs
Initiation à la logique programmable - D.Genet - Janvier 2006 22
Exemple : PAL16L8(représentation partielle)
Le réseau programmable est ici constitué d’une matrice de 32 colonnes x 64 lignes. Les colonnes donnent accès à toutes les entrées (directes et inverses) .
(Programmable Array Logic)Les SPLDs
Un SPLD : le PAL
Initiation à la logique programmable - D.Genet - Janvier 2006 23
Chaque cellule peut ici :
Les lignes sont regroupées ici par 10 pour former un motifrépétitif, la cellule logique.
Faire la somme de 7 termes produits
Configurer la borne I/O en entrée ou en sortie
Les SPLDs
PAL16L8 : la cellule
Initiation à la logique programmable - D.Genet - Janvier 2006 24
Réseau programmable8x10lignes / 32 colonnes
10 Entrées externes 6 Entrées externesou rétroactions
Pin I/O(10 lignes)Cellule logique
Buffer3 états
8 cellules logiques chevauchent un réseau de 32 colonnes
Les SPLDs
PAL16L8 : l ’organisation
Initiation à la logique programmable - D.Genet - Janvier 2006 25
Exercice : Contrôleur d’interruption
I0I1I2I3I4I5I6I7
/IRQ
3
A[2:0]
Contrôleurd ’IT
Microprocesseur
Le rôle du contrôleur d ’interruption est triple :
Signaler au microprocesseur qu’une IT est demandée (/IRQ = 0)
Indiquer le numéro d’IT à servir (codée sur 3 bits A[2:0])
Gérer la priorité des demandes : IT0 aura la plus grande priorité
8 entrées 4 sorties : a priori un PAL16L8 fera l’affaire
Les SPLDs
Initiation à la logique programmable - D.Genet - Janvier 2006 26
S2 X X X X X X 1 0 0 0 0 1S3 X X X X X 1 0 0 0 0 1 0S4 X X X X 1 0 0 0 0 0 1 1S5 X X X 1 0 0 0 0 0 1 0 0S6 X X 1 0 0 0 0 0 0 1 0 1S7 X 1 0 0 0 0 0 0 0 1 1 0S8 1 0 0 0 0 0 0 0 0 1 1 1
S1 X X X X X X X 1 0 0 0 0
S9 0 0 0 0 0 0 0 0 1 X X X
Contrôleur d’IT : Table des états
I7 I6 I5 I4 I3 I2 I1 I0 /IRQ A2 A1 A0
Chaque état du système est désigné par un label : S1 à S9.Ces labels servent par la suite à établir les équations des sorties sans utiliser directement les termes canoniques.
Les SPLDs
Initiation à la logique programmable - D.Genet - Janvier 2006 27
Contrôleur d’IT : Equations sources
Equations des états : (syntaxe ABEL ou AHDL)
Equations des sorties :
S1 = I0;S2 = I1 & !I0;S3 = I2 & !I1 & !I0;S4 = I3 & !I2 & !I1 & !I0;S5 = I4 & !I3 & !I2 & !I1 & !I0;S6 = I5 & !I4 & !I3 & !I2 & !I1 & !I0;S7 = I6 & !I5 & !I4 & !I3 & !I2 & !I1 & !I0;S8 = I7 & !I6 & !I5 & !I4 & !I3 & !I2 & !I1 & !I0;S9 =!I7 & !I6 & !I5 & !I4 & !I3 & !I2 & !I1 & !I0;
!IRQ = S9;
!A0 = S1 # S3 # S5 # S7;
!A1 = S1 # S2 # S5 # S6;
!A2 = S1 # S2 # S3 # S4;
Attention : les buffers du PAL16L8 sont inverseurs.Il faut alors exprimer les inverses des sorties désirées.
Les SPLDs
Initiation à la logique programmable - D.Genet - Janvier 2006 28
Contrôleur d’IT : configuration du PAL
I7 I6 I5 I4 I3 I2 I1 I0
/IRQ
A0
A1
A2
I7
I6
I5
I4
Les SPLDs
Initiation à la logique programmable - D.Genet - Janvier 2006 29
Exemple : on veut réaliser un décodeur d ’adresses pour 3 plages définies sur 16 bits comme suit :
plage0 : ADR < 04000hplage1 : 04000h <= ADR < 07C00hplage2 : 07C00h >= ADR
décodeur
A[15..0] CS0
CS1
CS2
En première approximation le décodeur se présentera comme suit :
Le PAL16L8 et ses dérivés conviennent à la réalisation de petites fonctions combinatoires : multiplexeurs, décodeurs, encodeurs...
Les SPLDs
Exercice : décodeur d’adresse
Initiation à la logique programmable - D.Genet - Janvier 2006 30
7c00->ffff
plage2
4000->6fff
7000->7bff
plage1
0000->3fffplage0
En fait les 8 bits de poids faible de l’adresse n’interviennent pasdans ce décodage. Une table de vérité permet d’affiner d’analyse.
A15..A12 A11..A8 CS0 CS1 CS2 0000 0000 0 1 1 0011 1111 0100 0000 1 0 1 0110 1111 0111 0000 1 0 1 0111 1011 0111 1100 1 1 0 1111 1111
Les 6 bits de poids fort suffisent pour ce décodeur
Les SPLDs
Décodeur : analyse
Initiation à la logique programmable - D.Genet - Janvier 2006 31
décodeurA[15..10] CS0
CS1CS2
module DECODEUR *Décodeur décrit en langage ABEL (DATAIO)declarations DECODEUR device 'P16L8'; A15,A14,A13,A12,A11, A10 PIN 02,03,04,05,06,07; CS0,CS1,CS2 PIN 19,18,17; ADR = [A15,A14,A13,A12,A11,A10,X,X,X,X,X,X,X,X,X,X];
equations!CS0 = (ADR < ^h4000);!CS1 = (ADR >= ^h4000) & (ADR < ^h7C00);!CS2 = (ADR >= ^h7C00);
end DECODEUR;
Les SPLDs
Décodeur : équations sources
Initiation à la logique programmable - D.Genet - Janvier 2006 32
!CS0 = !A15 & !A14;
!CS1 = !A15 & A14 & !A10 # !A15 & A14 & !A11 # !A15 & A14 & !A12 # !A15 & A14 & !A13);
!CS2 = A14 & A13 & A12 & A11 & A10 # A15;
La compilation du fichier source précédent donne les équations réduites, c’est-à-dire ramenées en sommes de termes canoniques utilisant les seuls signaux nécessaires.
Les SPLDs
Décodeur : équations réduites
Initiation à la logique programmable - D.Genet - Janvier 2006 33
L ’assemblage des équations réduites produit le fichier de configuration(fichier fusibles) du réseau programmable de la cible désignée.
NOTE Table of pin names and numbers*NOTE PINS A15:2 A14:3 A13:4 A12:5 A11:6 A10:7*NOTE PINS CS0:19 CS1:18 CS2:17*L0000 11111111111111111111111111111111*L0032 10111011111111111111111111111111*L0256 11111111111111111111111111111111*L0288 10110111111111111111101111111111*L0320 10110111111111111011111111111111*L0352 10110111111110111111111111111111*L0384 10110111101111111111111111111111*L0512 11111111111111111111111111111111*L0544 11110111011101110111011111111111*L0576 01111111111111111111111111111111*
Ce fichier ne désigne que les lignes de la matrice intervenant dans le projet : les ‘ 1 ’ correspondent aux fusibles à couper.
Les SPLDs
Décodeur : fichier de configuration
Initiation à la logique programmable - D.Genet - Janvier 2006 34
CS0
CS1
CS2
A15 A14 A13 A12 A11 A10
A15
A14
A13
Un programmateur spécialisé fait fondre les fusibles du PAL selon les directives du fichiers de fusibles ( = fusible intact).
Les SPLDs
Décodeur : programmation du PAL
Initiation à la logique programmable - D.Genet - Janvier 2006 35
Cahier des chargesCahier des charges
Analyse du problème
Résolution du problèmepar mise en équations ou algorithmes
Choix du PLD en fonction du nombre d ’E/S
Saisie des équations ou algorithme
Compilation -> équations réduites
Génération d’un fichier de configuration
Les SPLDs
Programmation d ’un SPLD : synthèse
Initiation à la logique programmable - D.Genet - Janvier 2006 36
clock OE
Le réseau programmable est identique à celui du PAL16L8.L’architecture finale de la celluleintègre une bascule D, dont l’horlogeest commune à toutes les cellules.
R comme Register
Les SPLDs
Un PAL pour le séquentiel : PAL16R8
Initiation à la logique programmable - D.Genet - Janvier 2006 37
Un PAL plus flexible : PALCE16V8
Les PALs présentés en introduction aux SPLDs à titre d ’exemple ne sontpratiquement plus disponibles. Ils sont remplacés par un PAL plus flexible,plus performant, le PALCE16V8 (CE : CMOS Erasable ; V : versatile)
Réseau identique à celuides PAL16L8 et PAL16R8
Les SPLDs
Initiation à la logique programmable - D.Genet - Janvier 2006 38
PALCE16V8 : la cellule
Les 8 cellules logiques de ce PAL sont configurables en :- sortie combinatoire- sortie séquentielle(registred)- en entrée
grâce à 4 multiplexeurs programmables.
Les SPLDs
Initiation à la logique programmable - D.Genet - Janvier 2006 39
PALCE16V8 : le XOR programmable
La sortie traverse un XOR programmable.
Ce dispositif permet d’inverser la sommefournie par le OU pour faire face aux casoù le nombre de termes produits en entréeserait supérieur à 8, ceci en utilisant lespropriétés du théorème de Morgan.
Ce système se retrouve pratiquement dans toutes les cellules des PLDs.
Les SPLDs
Initiation à la logique programmable - D.Genet - Janvier 2006 40
Rôle du XOR programmable
Exemple : soit l ’équation réduite :
E8 = !init &pbd &!x &!y &!test & E8# !init &pbc & x & y &!test & E8# !init &pba & x &!y &!test & E8# !init &pba &!x & y &!test & E8 # !init &pbd &!x &!y & X7# !init &pbc & x & y & E7# !init &pba & x &!y & E7# !init &pba &!x & y & E7# !init &pbd &!x &!y & E7# !init &test & E7 ;
Une seule cellule logique d’un PALCE16V8 sera incapable d’implémenter directement cette somme : il y a 9 termes produits et le OU de la cellule ne comporte que 8 entrées.
Les SPLDs
Initiation à la logique programmable - D.Genet - Janvier 2006 41
Rôle du XOR programmable (2)
Solution au problème : si le même terme E8 est exprimé par son inverse, le résultat ne comportera plus ici que 7 termes produits :
Le OU d’une cellule peut implémenter cette somme et le résultat doit par la suite être inversé grâce au XOR programmable.
!E8 = init# !pbd &!x &!y &!test# !pbc & x & y &!test# !pba & x &!y &!test# !pba &!x & y &!test # !E7 &!E8# !E7 &!test;
Cette opération d ’inversion est en général laissée au compilateur qui choisit l’expression directe ou inversée de la somme selon les cas, quand c’est possible.
Les SPLDs
Initiation à la logique programmable - D.Genet - Janvier 2006 42
Saturation de la cellule : problème
La saturation d’une cellule par excès de termes produits de la somme à implémenter, non résolue par l’inversion, est un problème récurrent.
La solution consiste en général à décomposer la somme autant d’expressions que nécessaire pour permettre leur implémentation chacun par une cellule distincte.
Les SPLDs
Initiation à la logique programmable - D.Genet - Janvier 2006 43
/Y
cellule2
/aux
/Y
Saturation de la cellule : exemple
!Y= P1 # P2 # P3 # P4 # P5 # P6 # P7 # P8 # P9 # P10;
!aux = P1 # P2 # P3 # P4 # P5 #P6 # P7 # P8;
!Y = aux # P9# P10;
cellule1
a b c d e
Les SPLDs
Initiation à la logique programmable - D.Genet - Janvier 2006 44
Message d’inadéquation (1)
En général ce message correspond à unecombinatoire trop importante, représentée pardes équations réduites comportant trop determes produits.
Les SPLDs
Initiation à la logique programmable - D.Genet - Janvier 2006 45
Message d’inadéquation (2)
Le projet demande plus de cellules logiquesque la cible choisie n’en possède.
Les SPLDs
Initiation à la logique programmable - D.Genet - Janvier 2006 46
Une variante aux PALs : le GAL
Autre solution au problème précédent : utiliser des circuits dont les celluleslogiques comportent des OU possédant un nombre supérieur d’entrées, telle GAL22V10 de VANTIS (représentation partielle à 50%).
Generic Array Logic
Réseau 130 x 44
Les SPLDs
Initiation à la logique programmable - D.Genet - Janvier 2006 47
GAL22V10 : la cellule
La cellule logique donne à quelques détails près les mêmes possibilités de configuration qu’un PALCE grâce à 2 multiplexeurs programmables.
8 à 16 entrées
Les SPLDs
Initiation à la logique programmable - D.Genet - Janvier 2006 48
Exercice : bascule toggle
DQ
Clk
T
CS
Configurer la matrice de cettecellule pour avoir une basculeT (‘toggle’) avec clear synchrone
Q
Les SPLDs
Initiation à la logique programmable - D.Genet - Janvier 2006 49
Volume moyen de ressources : quelques milliers de portes.
Cellules logiques organisées en plusieurs blocs logiques identiques ayant chacun leur réseau programmable indépendant et non relié directement aux pins E/S.
Chaque bloc logique est équivalent à un SPLD sans pins.
Les CPLDs
Initiation à la logique programmable - D.Genet - Janvier 2006 50
Chemin d’interconnexion interne programmable par une matrice d’interconnexion commune. (« routage » nécessaire entre les E/S et les blocs du CPLD)
Exemple : famille EPM7000 de Altera
Pour une même puce, choix du boîtier en fonction des pins E/S nécessaires.
Les CPLDs
Les CPLDs (2)
Initiation à la logique programmable - D.Genet - Janvier 2006 51
Famille EPM7000 (Altera) : organisation
LAB : logic Array BlockPIA : Programmable Interconnection Array
Les CPLDs
Initiation à la logique programmable - D.Genet - Janvier 2006 52
Famille EPM7000 (Altera) : la cellule
En plus d’une structure finale classique, la cellule possède accède à un réseau local (16 colonnes) et possède deux dispositifs permettant l’implémentation des grosses équations combinatoires, les expanders.
Les CPLDs
Initiation à la logique programmable - D.Genet - Janvier 2006 53
Famille EPM7000 (Altera) : les expanders
Une ligne par cellule peut servir à fournir une colonne supplémentaire au réseau local du bloc logique concerné.
Expansion partagée par le bloc logique
Les CPLDs
Initiation à la logique programmable - D.Genet - Janvier 2006 54
Famille EPM7000 (Altera) : les expanders (2)
Chaque cellule peut fournir un terme supplémentaire au OU dela cellule voisine.
Expansion parallèle
Les CPLDs
Initiation à la logique programmable - D.Genet - Janvier 2006 55
Famille EPM7000S (Altera) : les blocs E/S
I/O Block
Les buffers de sorties sont à triple contrôle.
Compatible5Vet 3.3V
(dépendant deVCCINT et VCCIO)
Les CPLDs
Initiation à la logique programmable - D.Genet - Janvier 2006 56
Famille EPM7000 (Altera) : les puces
EPM7xxxS : programmable in situ
Les CPLDs
Initiation à la logique programmable - D.Genet - Janvier 2006 57
Famille EPM7000 (Altera) : rapidité
-5 correspond à un temps de propagation tpd = 5ns
Les CPLDs
Initiation à la logique programmable - D.Genet - Janvier 2006 58
Famille EPM7000 (Altera) : les boîtiersLes CPLDs
Initiation à la logique programmable - D.Genet - Janvier 2006 59
Les FPGAsLes FPGAs
Volume élevé de ressources : de quelques milliers à à quelques millions de portes
Cellules organisées en une unique matriceOu en matrice de petits blocs de cellules(LAB : logic arrays blocks)
Cellules logiques de petite taille, jusqu’à plusieurs dizaines de milliers.
(pas de réseau logique programmable)
(Field Programmable Gate Array)
Initiation à la logique programmable - D.Genet - Janvier 2006 60
Les FPGAs (2)
Combinatoire implémentable par desL.U.T. (Look Up Table) = mémoire
Lignes et colonnes d’interconnexion programmables entre les cellules et les blocs E/S
LUT
adresse
donnéeEntrées
n 1Sortie
Les FPGAs
Initiation à la logique programmable - D.Genet - Janvier 2006 61
Les FPGAs (3)
Sur certaines familles : - Multiplieurs câblés - noyau microprocesseur
Configuration interne par une SRAM
Contrairement aux CPLDs et SPLDs dont laconfiguration est basée sur une EEPROM, celle d’un FPGA est VOLATILE.
Ressources RAM embarquées
(Field Programmable Gate Array)
Les FPGAs
Initiation à la logique programmable - D.Genet - Janvier 2006 62
FPGAs : structure générale
Cellule logique
Blocs E/S
Lignesd’interconnexions
NB :La matrice va de 10x10 à 100x100 et plus !
Les FPGAs
Initiation à la logique programmable - D.Genet - Janvier 2006 63
FPGAs : structure détaillée Les FPGAs
Initiation à la logique programmable - D.Genet - Janvier 2006 64
FPGAs : RAM embarquée
Positioncentrale:
minimisationdesTpd
Les FPGAs
Initiation à la logique programmable - D.Genet - Janvier 2006 65
FPGAs : structure fonctionnelle
Un FPGA possède en fait 3 couches structurelles :
Ressources(Cellules, RAM)
Interconnexionsconfigurables
SRAM deconfiguration
Les FPGAs
Chaque bit de la SRAM est vu soit par un nœud des interconnexions,soit par un multiplexeur ou une LUT des ressources.
Initiation à la logique programmable - D.Genet - Janvier 2006 66
FPGA Exemple 1 : XC4000 (Xilinx)
Portes : de 1600 à 85000
RAM : de 2 kbits à 100 kbits
Cellules : de 64 (8x8) à 3136 (56x56)
Fréquence système : jusqu’à 80 MHz
Les FPGAs
Initiation à la logique programmable - D.Genet - Janvier 2006 67
XC4000 : la cellule
(version combinatoire : 3 générateurs de fonctions F,G,H)
CLB : Configurable Logic BlockLes FPGAs
Initiation à la logique programmable - D.Genet - Janvier 2006 68
XC4000 : la mémoire répartie
(version mémoire : organisation 16x2 bits)
Les FPGAs
Initiation à la logique programmable - D.Genet - Janvier 2006 69
XC4000 : les interconnexions
PSM : Programmable Switches Matrice
Les FPGAs
Initiation à la logique programmable - D.Genet - Janvier 2006 70
XC4000 : les interconnexions, détail Les FPGAs
Initiation à la logique programmable - D.Genet - Janvier 2006 71
XC4000 : Bloc E/S Les FPGAs
Initiation à la logique programmable - D.Genet - Janvier 2006 72
XC4000 : exemple de routage Les FPGAs
Initiation à la logique programmable - D.Genet - Janvier 2006 73
XC4000 : la famille
* 20 à 30 % de la RAM est utilisée dans un projet.
Les FPGAs
Initiation à la logique programmable - D.Genet - Janvier 2006 74
FPGA Exemple 2 : ACEX (Altera)
organisa
tion
Les FPGAs
Initiation à la logique programmable - D.Genet - Janvier 2006 75
FPGA Exemple 2 : ACEX (Altera)
La ce
llule
logique
Les FPGAs
Initiation à la logique programmable - D.Genet - Janvier 2006 76
FPGA Exemple 2 : ACEX (Altera)
L’élément
Logique
Les FPGAs
Initiation à la logique programmable - D.Genet - Janvier 2006 77
FPGA Exemple 2 : ACEX (Altera)
Les E
AB
3 à 12 EAB (Embedded Array Block)
1 EAB 12 288 bits
Les FPGAs
Initiation à la logique programmable - D.Genet - Janvier 2006 78
FPGA Exemple 3 : Virtex 2 pro (Xilinx) Les FPGAs
Initiation à la logique programmable - D.Genet - Janvier 2006 79
Virtex 2 pro : organisation
générale
organisa
tion
Les FPGAs
Initiation à la logique programmable - D.Genet - Janvier 2006 80
Virtex 2 pro : la cellule logique
La ce
llule
logique
Les FPGAs
Initiation à la logique programmable - D.Genet - Janvier 2006 81
Virtex 2 pro : les slices
La ce
llule
logique
(slice
s)
Les FPGAs
Initiation à la logique programmable - D.Genet - Janvier 2006 82
Virtex 2 pro : détail du slice
Le sl
ice
Les FPGAs
Initiation à la logique programmable - D.Genet - Janvier 2006 83
Les FPGAs ont des cellules logiques de petite taille avec une ou deux bascules et en possèdentplusieurs milliers.
CPLD et FPGA, pareil ?
CPLD ou FPGA ?
NON ! Tous les deux sont des circuits logiquesprogrammables, fabriqués par les mêmes constructeurs.Mais ils sont différents :
Les CPLDs ont des cellules logiques de grande taille avec une bascule et n’en possèdent quequelques centaines.
CPLDvs
FPFGA
Initiation à la logique programmable - D.Genet - Janvier 2006 84
La configuration des FPGAs est basée sur une SRAM, qui a besoin d’être rechargée à chaquemise sous tension.
CPLD ou FPGA : configuration
La configuration des CPLDs est basée sur une EEPROM, dont le contenu enregistré depuisla dernière configuration persiste indéfiniment.
CPLDvs
FPFGA
Initiation à la logique programmable - D.Genet - Janvier 2006 85
Les FPGAs contiennent de larges ressourcesd’interconnexions entre les cellules logiqueset les blocs d ’entrées sorties.
CPLD ou FPGA : routage
La capacité de routage des CPLDs est limitéeà peu de choses, rendant vite difficile l’intégrationde projets complexes.
CPLDvs
FPFGA
Initiation à la logique programmable - D.Genet - Janvier 2006 86
À fonction logique égale un CPLD pourra être plusrapide qu’un FPGA car sa capacité à réaliser unelogique combinatoire en un seul étage est meilleure que celle d’un FPGA.
CPLD ou FPGA : rapidité
Une cellule logique de CPLD peut intégrer une grosseéquation logique grâce à son réseau programmable,ce que possèdent pas les cellules de FPGA.
CPLDvs
FPFGA
Initiation à la logique programmable - D.Genet - Janvier 2006 87
Petit projet : SPLD ou CPLD
CPLD ou FPGA : taille projet
Gros projet : FPGA
CPLDvs
FPFGA
Initiation à la logique programmable - D.Genet - Janvier 2006 88
Synthèse : les SPLDs et sCPLD
rétroactionsentrées
Réseau de ET
Cellule I/O
Cellules associées à un réseau commun de ET
Pins reliées au réseau et aux cellules
SPLD
Pins et cellules à reliervia des réseaux programmables
d’interconnexion
CPLD
Configurationnon volatile
CPLDvs
FPFGA
Initiation à la logique programmable - D.Genet - Janvier 2006 89
Nombreusespetites cellules
organisées matriciellement
sans réseau de ET
FPGA
Synthèse : les SPLDs et sCPLD
Configurationsur SRAM
volatile
CPLDvs
FPFGA
Initiation à la logique programmable - D.Genet - Janvier 2006 90
Modes de programmation des PLDs
sur programmateur
Une fois le fichier de configuration disponible, la programmation du PLD peut correspondre à plusieurs cas de figure :
SPLDs (pal, gal) :
CPLDs :
FPGA :
sur programmateur ou in situ
in situ (SRAM ou FLASH)
Initiation à la logique programmable - D.Genet - Janvier 2006 91
SPLD DIP sur programmateurProgrammationdes
PLDs
Initiation à la logique programmable - D.Genet - Janvier 2006 92
SPLD CMS sur programmateurProgrammation
desPLDs
Initiation à la logique programmable - D.Genet - Janvier 2006 93
Programmation des CPLDs
Utilisation d’un programmateur
In Situ (Boîtiers ISP : In System Programmable)
Démarche pratiquement obsolète
Le circuit possède alors un interface approprié.
L’interface le plus connu est celui du JTAGavec ses 4 signaux : TCK, TMS, TDI et TDO.Cet interface permet d’écrire (et de lire)directement l’EEPROM de configurationinterne du CPLD.
Programmationdes
PLDs
Initiation à la logique programmable - D.Genet - Janvier 2006 94
Programmation in situ (ISP)
Nécessité de prévoir sur le PCB le connecteur destinéau câble de configuration.
Programmationdes
PLDs
Initiation à la logique programmable - D.Genet - Janvier 2006 95
Principe de la programmation EPROM
Principe du point de contact programmable : transistor N-MOS à grille « flottante » à injection de charge.
Programmationdes
PLDs
Initiation à la logique programmable - D.Genet - Janvier 2006 96
Cellule EPROM : structure
Par défaut, cette structure est conductrice : la résistanceentre drain et source du transistor N-MOS est faible.
Largeur du canal : finesse de la gravure (<1µ)
La programmation consistera à rendre non conducteurs (mise « off ») les points appropriés du PLD.
Programmationdes
PLDs
Initiation à la logique programmable - D.Genet - Janvier 2006 97
Cellule EPROM : mise « off »
En portant la grille à un potentiel suffisamment élevé, le champ créé « aspire » des électrons qui se font piéger dans la grille flottante.
Programmationdes
PLDs
Initiation à la logique programmable - D.Genet - Janvier 2006 98
Cellule EPROM : effacement
Il suffit par exemple d’inverser le potentiel Vgs pour « vider » la grille flottante de ses électrons.
Vg = 0
Vss >0
Programmationdes
PLDs
Initiation à la logique programmable - D.Genet - Janvier 2006 99
Programmation des FPGA
In Situ
La SRAM interne du FPGA est écrite (ou lue) via l’interface JTAG du circuit.
Intérêt : opération relativement rapide
Inconvénient : configuration volatile.
Programmationdes
PLDs
Initiation à la logique programmable - D.Genet - Janvier 2006 100
Programmation des FPGAs
Par PROM ou EEPROM de configuration série
La SRAM interne du FPGA reçoit à la misesous tension le contenu d’une mémoire ROMexterne via un interface spécialisé (qui peutêtre distinct du JTAG).
Intérêt : opération très rapide et automatiqueà chaque mise sous tension.
Inconvénient : configuration de la PROM lente.
Programmationdes
PLDs
Initiation à la logique programmable - D.Genet - Janvier 2006 101
Exemple matériel : photo 1
Câble deconfiguration
Programmationdes
PLDs
Initiation à la logique programmable - D.Genet - Janvier 2006 102
Exemple matériel : photo 2
JTAG
FPGA
EEPROM
Oscillateurà quartz
SSRAM
2.5V
3.3V
Programmationdes
PLDs
Initiation à la logique programmable - D.Genet - Janvier 2006 103
Exemple matériel : photo 3
Boîtier PQFP
Programmationdes
PLDs
Initiation à la logique programmable - D.Genet - Janvier 2006 104
Exemple matériel : photo 4
Boîtier TQFP
Boîtier PLCC
DIP switch
Programmationdes
PLDs
Initiation à la logique programmable - D.Genet - Janvier 2006 105
Schéma d’un système de configuration
Les deux dispositifs peuvent être combinés
Connecteur JTAG de
configuration
EEPROM deconfiguration
Choix dumode
Programmationdes
PLDs
Initiation à la logique programmable - D.Genet - Janvier 2006 106
Alimentations des FPGAs
La plupart des FPGAS actuels nécessitent plusieurs alimentations :
VCCINT
VCCIO
de 1,2 V à 2,5 V. Alimente le noyau du FPGA,
de 3,3 V à 5 V. Alimente les cellules d’entrées sorties.
Initiation à la logique programmable - D.Genet - Janvier 2006 107
Représentation d’unsystème logique
Représentation d’unsystème logique
… ou comment représenter une système autrement que par un schéma, en faisant une
description textuelle.
Initiation à la logique programmable - D.Genet - Janvier 2006 108
Système logique : définitions
em
e2
e1
sp
s2
s1
SYTEMELOGIQUE
E = { e1, e2, ... , em } est l'alphabet d'entrée du système
S = { s1, s2, ... , sp } est l'alphabet de sortie du système
Si S(t) = f [E(t)] quelque soit t, le système logique est un circuit combinatoire
Si S(t) = f[E(t), M(t)] le système est alors un circuit séquentiel
Initiation à la logique programmable - D.Genet - Janvier 2006 109
Implémentation d’un système séquentiel
EG M F
Q*
Q S
Entrées (Variables primaires)
Variablesd'excitation
Variables internes(ou secondaires)
Etat futur Etat présent
Commandeécriture
S(t) = f[E(t), M(t)]
M(t) représente l ’état du système à l ’instant t, mémorisé par le bloc mémoire M à n bits, capable de représenter 2n états différents.
G et F sont des circuits combinatoires.
Implémentationd’un
systèmeséquentiel
Initiation à la logique programmable - D.Genet - Janvier 2006 110
Système séquentiel : fonctionnement
EG M F
Q*
Q S
Etat futur Etat présent
Commande d’écriture
Sur commande d’écriture la mémoire M prend l’étatQ* présent à son entrée. Cet état est fonction à la fois desvariables externes (E) et de l’état Q précédant le front.
Les sorties (S) sont fonctions de l’état Q de la mémoireet éventuellement des variables externes (E).
Implémentationd’un
systèmeséquentiel
Initiation à la logique programmable - D.Genet - Janvier 2006 111
Système séquentiel : horloge
La commande d’écriture estgénéralement le front (montantou descendant) d’un signalpériodique appelé horloge.
MQ* Q
Etat futur Etat présent
Horloge
Horloge
Q*
Q
data1
data0
data2
data1
data3
data2
data4
data3
data5
data4
Les changements d’état du bloc M sont dits synchrones de l’horloge.
Implémentationd’un
systèmeséquentiel
Initiation à la logique programmable - D.Genet - Janvier 2006 112
Modèles : Moore ou Mealy
EG M F
Q*
Q S
Etat futur Etat présent
Horloge
Lorsque les sorties (S) sont uniquement fonctions de l’état(Q) du système, cette structure implémente une machine d’état dite de Moore.
Si les entrées (E) interviennent également dans l’état des sorties (S) (liaison pointillée), cette structure correspondau modèle de Mealy.
Cette dernière construction est à déconseiller car les changements d’état des sorties risquent de ne plus être synchrones.
Implémentationd’un
systèmeséquentiel
Initiation à la logique programmable - D.Genet - Janvier 2006 113
Cellule logique : système élémentaire 1 bit
Une cellule logique d’un PLD se prête parfaitement àl’implémentation d’une machine d’état de Moore de 1 bit.
Fonction combinatoire D Strap ou inverseur
Horloge
Bloc G Bloc M Bloc F
Implémentationd’un
systèmeséquentiel
Initiation à la logique programmable - D.Genet - Janvier 2006 114
Implémentation d’un système n bits
Cette construction est idéale pour construire des compteurssynchrones ou des séquenceurs synchrones spécifiques.
L’association de n cellules logiques permetl’implémentation d’une machine d ’état n bits, capable de produire jusqu’à 2n états distincts.
combinatoire 1 D
D
D
Q1
Q2
Qn
Horloge Bloc G Bloc M Bloc F
combinatoire 2
combinatoire n
Réseau du PLD
Implémentationd’un
systèmeséquentiel
Initiation à la logique programmable - D.Genet - Janvier 2006 115
Système n bits et combinatoire
Dans le système précédent, le bloc F est réduit à sa plus simple expression : les sorties sont directement les bits mémoire.
Cet exemple de système n bits possède 2 sorties, chacune étant fonction combinatoire des états du bloc M grâce aux 2 cellules qui implémentent le bloc F par les fonctions combinatoires F1 et F2
combinatoire 1
Horloge
Bloc G
Bloc M
combinatoire 2
combinatoire n
D
D
D
Réseaudu PLD
combinatoire F1
combinatoire F2
S1
S2Bloc F
Implémentationd’un
systèmeséquentiel
Initiation à la logique programmable - D.Genet - Janvier 2006 116
Exercice : compteur synchrone 4 bits
Méthode basique utilisant des bascules D :
Etablir la table des états successifs désirés, avecun label pour chaque état (S1,S2, .. S15)
En déduire les expressions logiques des entrées D des bascules utilisées en fonctions des états du système.
Etablir la table des entrées D nécessaires pour obtenir les états suivants
Cette méthode est universelle et s’applique à tous les systèmes séquentiels.
On la désigne par méthode des tables des transitions
Initiation à la logique programmable - D.Genet - Janvier 2006 117
Compteur 4 bits : séquence d’états
S0 0 0 0 0S1 0 0 0 1S2 0 0 1 0S3 0 0 1 1S4 0 1 0 0S5 0 1 0 1S6 0 1 1 0S7 0 1 1 1S8 1 0 0 0S9 1 0 0 1S10 1 0 1 0S11 1 0 1 1S12 1 1 0 0S13 1 1 0 1S14 1 1 1 0S15 1 1 1 1
Le passage d’un état au suivantsera provoqué par le front
considéré actif de l’horloge.
Cette table présente la successiondésirée des états du compteur et donne la correspondance avec
les labels attribués.
Q3 Q2 Q1 Q0
Exercice:compteursynchrone
4 bits
Initiation à la logique programmable - D.Genet - Janvier 2006 118
Compteur 4 bits : tables des transitionsExercice:compteursynchrone
4 bits
S0S1S2S3S4S5S6S7S8S9S10S11S12S13S14S15
État présent État futur
S1S2S3S4S5S6S7S8S9S10S11S12S13S14S15S0
D3 D2 D1 D0
0 0 0 10 0 1 0
0 0 1 1 0 1 0 00 1 0 10 1 1 00 1 1 11 0 0 01 0 0 11 0 1 01 0 1 11 1 0 01 1 0 11 1 1 01 1 1 10 0 0 0
Très simple ici : les états Di correspondent
aux états futursdésirés
Cette table permet d’établir les équations Di des bascules.
Initiation à la logique programmable - D.Genet - Janvier 2006 119
Compteur 4 bits : équations Di
D0 = S0 # S2 # S4 # S6 # S8 # S10 # S12 # S14
D1 = S1 # S2 # S5 # S6 # S9 # S10 # S13 # S14
D2 = S3 # S4 # S5 # S6 # S11 # S12 # S13 # S14
D3 = S7 # S8 # S9 # S10 # S11 # S12 # S13 # S14
D0 = !Q0;D1 = Q1 $ Q0;D2 = Q2 $ (Q1 & Q0);D3 = Q3 $ (Q2 & Q1 & Q0);
En exprimant les états en fonction des bits Qi et en réduisant un peu le résultat on aurait obtenu les équations suivantes :
Exercice:compteursynchrone
4 bits
Initiation à la logique programmable - D.Genet - Janvier 2006 120
Compteur 4 bits : validation
D1 = (S1 # S2 # S5 # S6 # S9 # S10 # S13 # S14)& VALID # Q1 & !VALID
On ajoute une validation par un signal VALID.
Chaque équation comprendra un terme d’activation conditionnépar VALID et un terme de maintien conditionné par !VALID
D0 = (S0 # S2 # S4 # S6 # S8 # S10 # S12 # S14)& VALID
D2 = (S3 # S4 # S5 # S6 # S11 # S12 # S13 # S14)& VALID # Q2 & !VALID
D3 = (S7 # S8 # S9 # S10 # S11 # S12 # S13 # S14)& VALID # Q3 & !VALID
# Q0 & !VALID
Terme d’activation
Terme de maintien
Exercice:compteursynchrone
4 bits
Initiation à la logique programmable - D.Genet - Janvier 2006 121
Activation et maintien conditionnés
D Q
CLK
Horloge
VALID
Excitation E
maintien
activation
D = (E & VALID) # (Q & !VALID);activation maintien
rétroaction
Exercice:compteursynchrone
4 bits
Initiation à la logique programmable - D.Genet - Janvier 2006 122
Compteur synchrone : initialisation
On ajoute une initialisation à zéro par un signal RAZ.
Chaque équation ainsi obtenue sera conditionnée par !RAZ
D1 = ((S1 # S2 # S5 # S6 # S9 # S10 # S13 # S14)& VALID # Q1 & !VALID )&!RAZ;
D2 = ((S3 # S4 # S5 # S6 # S11 # S12 # S13 # S14)& VALID # Q2 & !VALID )&!RAZ;
D3 = ((S7 # S8 # S9 # S10 # S11 # S12 # S13 # S14)& VALID # Q3 & !VALID )&!RAZ;
D0 = ((S0 # S2 # S4 # S6 # S8 # S10 # S12 # S14)& VALID # Q0 & !VALID)&!RAZ;
Cette initialisation sera du type SYNCHRONE
Exercice:compteursynchrone
4 bits
Initiation à la logique programmable - D.Genet - Janvier 2006 123
Remise à zéro synchrone
D Q
CLK
Horloge
VALID
Excitation E
D =((E & VALID)#(Q & !VALID))&!RAZ;
rétroaction
RAZ
Exercice:compteursynchrone
4 bits
Initiation à la logique programmable - D.Genet - Janvier 2006 124
Compteur synchrone : modulo
On ajoute un modulo 10 programmable par le signal DIX.
Il faut examiner l’incidence de ce modulo
sur la tables de transitions : si DIX est
vrai, le compteur passe de S9 à S0, sinon il
continue normalement.
S0 S1S1 S2S2 S3S3 S4S4 S5S5 S6S6 S7S7 S8S8 S9S9 S10S10 S11S11 S12S12 S13S13 S14S14 S15S15 S0
D3 D2 D1 D0
0 0 1 0 0 0 1 1 0 1 0 00 1 0 10 1 1 00 1 1 11 0 0 01 0 0 11 0 1 01 0 1 11 1 0 01 1 0 11 1 1 01 1 1 10 0 0 0
0 0 0 1
On peut constater que seuls
les bits D3 et D1 sont concernés par cette
modification, ceci quandle compteur est à l ’état
S9.
Exercice:compteursynchrone
4 bits
S9 S0
0 0 0 0
étatprésent
étatfutur
Initiation à la logique programmable - D.Genet - Janvier 2006 125
Compteur modulo 10 : équations
Les équations de D3 et D1 sont modifiées de manière àvaloir 0 lorsque le compteur est à l’état S9. Cela revient à conditionner S9 par le signal !DIX
D1 = ((S1 # S2 # S5 # S6 # S9&!DIX # S10 # S13 # S14)& VALID # Q1 & !VALID )&!RAZ;
D2 = ((S3 # S4 # S5 # S6 # S11 # S12 # S13 # S14)& VALID # Q2 & !VALID )&!RAZ;
D3 = ((S7 # S8 # S9&!DIX # S10 # S11 # S12 # S13 # S14)& VALID # Q3 & !VALID )&!RAZ;
D0 = ((S0 # S2 # S4 # S6 # S8 # S10 # S12 # S14)& VALID # Q0 & !VALID)&!RAZ;
Exercice:compteursynchrone
4 bits
Initiation à la logique programmable - D.Genet - Janvier 2006 126
RAZVALID
DIX
Compteur : schéma structurel niveau PLDExercice:compteursynchrone
4 bits
qd0
qd1
qd2
qd3
Q0
Q1
Q2
Q3
CLK
D0(RAZ,DIX,VALID,Q0,Q1,Q2,Q3)
D1(RAZ,DIX,VALID,Q0,Q1,Q2,Q3)
D2(RAZ,DIX,VALID,Q0,Q1,Q2,Q3)
D3(RAZ,DIX,VALID,Q0,Q1,Q2,Q3)
Il s‘agit là d’une structure a priori. Elle peut être augmentée de cellulessupplémentaires si la combinatoire ne peut absorber les équations.
Initiation à la logique programmable - D.Genet - Janvier 2006 127
Exercice : séquenceur spécifique
On désire concevoir un générateur synchrone de signal dont la sortiedélivrerait le signal périodique suivant :
Adopter d’abord un mode d’implémentation de ce générateur en établissant un schéma structurel (bascules D et combinatoire) et la table des transitions.
Écrire les équations de pilotage des éléments
Etablir la table des entrées D nécessaires pour obtenir les états voulus après le prochain front d ’horloge
Essayer d’autres mode d’implémentation et déterminer pour chacun le nombre de cellules logiques nécessaires.
Initiation à la logique programmable - D.Genet - Janvier 2006 128
Généralisation des tables de transition
MG
Étatprésent
Étatfutur
Variablesexternes
Étatprésent
Variables externes Étatfutur
…….
La méthode des tables des transitions montre ici ses limites : sa taille peutau pire doubler à chaque variable externe introduite !
Exercice : reprendre celui de la bascule toggle
Initiation à la logique programmable - D.Genet - Janvier 2006 129
Langages de description
La nécessité de pouvoir décrire un système logique sousformes d’expressions compilables plus ou moins évoluéesa abouti à l’élaboration de langages de description textuelle :
Langages de très bas niveau : PALASM, ABEL
Langages de très haut niveau : VHDL, VERILOG
Langages propriétaires : AHDL (Altera), MINC (Xilinx)
Non propriétaires, ils servent encore à programmer les SPLDs
Destinés surtout aux CPLDs ou aux petites unités fonctionnelles pour une description performante de niveau moyen.
Non propriétaires et normalisés, donc portables
Initiation à la logique programmable - D.Genet - Janvier 2006 130
Structure générale d’une description Les langages évolués, propriétaires ou non, présentent tousune structure commune pour la description d’un système logique :
Description externe
Description interne
C’est la vue externe du « composant », avec l’énumération dessignaux d’entrée / sortie et leurs dimensions, avec éventuellement les numéros de broches de circuit auxquelles ils sont assignés.
Organisée différemment selon les langages, cette section a pourbut d’énumérer de façon explicite ou implicite les ressourcesinternes du système et d’en décrire le comportement ou la structure.
Langagesde description
Initiation à la logique programmable - D.Genet - Janvier 2006 131
Exemple : Compteur CPT en AHDL
Description externe en AHDL :
subdesign CPT( CLOCK, RAZ, VALID, DIX : input; COMPTEUR[3..0]: output;)
La sortie compteur est formée d’un groupe de 4 bitsdont COMPTEUR3 est le MSB et COMPTEUR0 le LSB.
CLOCKRAZ
COMPTEURCPTVALID
4
DIX
Langagesde description
Initiation à la logique programmable - D.Genet - Janvier 2006 132
Exemple : Compteur en AHDL (2)
Description interne : ressources
...variable
% déclaration de ressources : 4 bascules D (D Flip Flop)
compteur[3..0] : DFF;
Langagesde description
Initiation à la logique programmable - D.Genet - Janvier 2006 133
Exemple : Compteur en AHDL (3)
Description interne : équations logiques
...begin % début de section logique% entrées horloge
compteur[].clk = CLOCK;
% entrées d des bascules compteur[].d =(( (compteur[]+1) & !((compteur[]==9)& DIX) )& VALID #(compteur[] & !VALID) )& !RAZ ;end; % fin de section logique
Langagesde description
Initiation à la logique programmable - D.Genet - Janvier 2006 134
compteur0.q
Primitive DFF de AHDL La déclaration compteur[3..0] : DFF; signifie qu’à chacun des 4 signaux groupés compteur3, compteur2, compteur1, compteur0 se trouve associée une structure (ou primitive) de type DFF (D Flip Flop).
d
clk
q
clrn
prn
compteur0
compteur0.d
compteur0.clk
compteur0.prn
Les éléments de cette structure portent des labels clés.
compteur0.clrn
Langagesde description
Initiation à la logique programmable - D.Genet - Janvier 2006 135
compteur[].q
Usage de la primitive DFF
d
clk
q
clrn
prn
compteur[]
compteur[].d
compteur[].clk
compteur[].prn
compteur[].clk = CLOCK signifie que les 4 basculesrecoivent le signal CLOCK sur leur entrée horloge.
compteur[].clrn
Langagesde description
compteur[].clrn = !RAZ signifie que toutes les basculessont remises à zéro de façon asynchrone si RAZ est haut.
Initiation à la logique programmable - D.Genet - Janvier 2006 136
compteur[]
Usage par défaut
d
clk
q
clrn
prn
compteur[]
compteur[]
compteur[].clk
Langagesde description
Par défaut, l’utilisation d’une structure DFF dans une équationest telle que le membre de gauche désigne l’entrée D tandisque l’élément de droite concerné désigne la sortie Q.
compteur[] = compteur[]+ 1;
est équivalent à
compteur[].d = compteur[].q + 1;
Initiation à la logique programmable - D.Genet - Janvier 2006 137
AHDL : opérateurs arithmétiques
Outre les opérateurs logiques (&, #, !) l’expression de compteur[ ]utilise des opérateurs arithmétiques : addition +, égalité ==.
compteur[] =(((compteur[]+1) & !((compteur[]==9)& DIX) )& VALID #(compteur[] & !VALID) )& !RAZ ;
D’autres opérateurs sont disponibles :
- soustraction : –- inégalité : !=- ordre : >, <, >=, <=
Langagesde description
Initiation à la logique programmable - D.Genet - Janvier 2006 138
AHDL : opérateurs logiques littéraux
AHDL supporte à la fois les opérateurs logiques symboliques(&, #, !,$) et leur correspondants littéraux :
compteur[] =(((compteur[]+1) and not((compteur[]==9)and DIX) )and VALID or(compteur[] and not VALID) )and not RAZ ;
On peut donc écrire dans ce langage :
Langagesde description
& => and# => or! => not$ => xor
L’utilisation de l’une ou l ’autre forme des opérateurs logiques est une question de style personnel, de même que le choix de majuscules ou minuscules.
Initiation à la logique programmable - D.Genet - Janvier 2006 139
Équations structurées : if .. then .. else
Les structures conditionnelles constituent une alternative lisible par rapport aux équations directes :
if not RAZ then if VALID then if not(DIX and compteur[]==9) then compteur[] = compteur[]+1; end if; else compteur[]= compteur[]; end if;end if;
Attention aux alternatives non explicitées, pour lesquelles lessignaux concernés ne sont pas maintenus…
Langagesde description
Initiation à la logique programmable - D.Genet - Janvier 2006 140
Alternative implicite de if
if not RAZ then compteur[] = compteur[]+1;end if;
impliquent que compteur[]prendra la valeur 0 au prochainfront actif d ’horloge si RAZ est vrai...
ou
compteur[]= compteur[]+1)and not RAZ;
Lorsque l’alternative à une expression booléenne n’est pas précisée explicitement, elle produit implicitement une remise à zéro du signal concerné !
Ainsi les équations
Langagesde description
Initiation à la logique programmable - D.Genet - Janvier 2006 141
Alternative implicite : cas des timers
if (E2 or E5) then TEMPO[] = TEMPO[]+1;end if;
ce timer sera automatiquement remis à zéro sur tout autreétat que ceux mentionnés dans la condition (E2 # E5)
Si certains états d’un système doivent être soumis à temporisation,la remise à zéro implicite est très commode !
Ainsi si le timer TEMPO est piloté de la façon suivante :
Langagesde description
Initiation à la logique programmable - D.Genet - Janvier 2006 142
Description de séquencement complexe
En dehors de la méthode des tables des transitions,la mise en équations d’un système séquentiel peut passer par des représentations symboliques :
GRAPHSET
GRAPHE D’ETAT
Le choix de l’une ou l’autre représentation est une question de style personnel. Le réseau de Pétri ne sera pas abordé ici, sonutilisation étant plutôt réservée à la modélisation de systèmes àfort parallélisme.
...
GRAPHCETGRAFCET
RESEAU de PETRI
Initiation à la logique programmable - D.Genet - Janvier 2006 143
Exemple de grafcet
0
1
2
4
6
3 5
7 8
c1
ft1
c2.ft2 c2.c3c2.c3
c4 1 ft3
c1.c5 c5.c2
c6 c7
A1 T=t1
A2 T=t2
A3 A4 A5 T=t3
A4
A3 A1
.
- entrées : c1, ft1, c2, ft2, c3, c4, c5, ft3, c6, c7- sorties : A1, A2, A3, A4, A5- nombre d'étapes : 9
GRAFCET
GRAFCET
de bas niveau
Initiation à la logique programmable - D.Genet - Janvier 2006 144
Grafcet : principes de la formalisation
c1
1
2
étape
transition
réceptivité
1
2
c1
Le système restera sur l’étape 1 tant que le front actif de l’horloge trouve la condition c1 fausse.
c1
1
2
c1
Ne pas représenter l’alternative à C1 : elle est implicitedans le grafcet.
GRAFCET
Initiation à la logique programmable - D.Genet - Janvier 2006 145
Grafcet : chronogrammes d’une transition
c1
E1
E2
C1
E1
E2
Horloge
GRAFCET
Initiation à la logique programmable - D.Genet - Janvier 2006 146
Grafcet : transition synchrone
c1
E1
E2
C1
E1
E2
Horloge
Attention aux implications du synchronisme :
C’est l’état AVANT le front actif de l’horloge quiconditionne l’état suivant !
GRAFCET
Initiation à la logique programmable - D.Genet - Janvier 2006 147
Grafcet : étape fugitive
c1
E1
E2
C1
E1
E2
Horloge
Étape sans maintien
Une étape sans maintien dure une période de l’horloge.
E3
1E3
GRAFCET
Initiation à la logique programmable - D.Genet - Janvier 2006 148
Graphe d’état (ou diagramme d’état)
S0
S1
00,1101,10Alphabet d ’entrée :
e1,e2
Modèle de Moore
Chaque état que peut prendre le système représenté est figuré par une bulle nommée : S0, S1 par exemple.
Alphabet de sortie :z
Chaque bulle mentionne l ’état des sorties.
Les transitions d’un état à l ’autre sont représentées par des flèches accompagnées de l’état des entrées.
Une seule transition peut être effectuée sur chaque front actif de l ’horloge.
0 1XX
GRAPHE
Initiation à la logique programmable - D.Genet - Janvier 2006 149
Graphe d’état : exemple 1
L ’exemple ci-dessus concerne un système à 2 états,2 entrées et 1 sortie.
Le système reste en S0 tant que les eux entrées dontdifférentes.
Il passe en S1 si les deux entrées sont identiques.
Une fois passé en S1, le système y reste maintenujusqu’à initialisation qui le ramène implicitement en S0
S0
S1
00,1101,10Alphabet d ’entrée :
e1,e2
Alphabet de sortie :z
0 1XX
GRAPHE
Initiation à la logique programmable - D.Genet - Janvier 2006 150
Graphe d’état : exemple 2
S0
S1
S2
S3
0
1
2
3
Compteur / décompteur modulo 4 : 4 états
Entrées : up, init; Sorties : compteur[1..0];X1
0X
00
00
00X1
1X 10
1010
X : état indifférent
GRAPHE
Initiation à la logique programmable - D.Genet - Janvier 2006 151
Modes d’implémentation d’un système séquentiel
Pour un système présentant n états,l’alternative est :
Implémentation One Hot Encoding
Implémentation Finite State Machine (FSM)
n bascules D, donc n cellules logiques
Registre de p bascules D, donc p cellules logiquesavec p tel que 2p-1 < n <= 2p
A priori, économie de cellules, car p < n
Initiation à la logique programmable - D.Genet - Janvier 2006 152
Implémentation One Hot Encoding
Chaque étape E du grafcet est matérialisée par une bascule D.
La détermination de l’excitation de l ’entrée D se fait en seposant les questions suivantes :
Après quelle(s) étape(s) et à quelle(s) condition(s) l’étape E doit-elle être activée ?
A quelle(s) conditions l’étape E activée doit-ellemaintenue activée ?
1 ou plusieurs termes d ’activation
0 ou 1 terme de maintien
Prenons le cas d’une représentation par grafcet :
ImplémentationOHE
Initiation à la logique programmable - D.Genet - Janvier 2006 153
Mise en équations : exemple 1
c1
E1
E2
c2
E3
E2 = E1 & C1 # E2 & !C2 ;
L’étape 2 est implémentée par une bascule D
E2 dont l’excitation est régie par l’équation :
Terme d ’activation Terme de maintien
ImplémentationOHE
Initiation à la logique programmable - D.Genet - Janvier 2006 154
Exemple 1 : commentaires
E2 = E1 & C1 # E2 & !C2 ;
Activation : E2 ne peut êtreactivée que si le système setrouve en E1 et que c1 est vrai.
Maintien : le système reste en E2 tantque la condition C2 est fausse.
ImplémentationOHE
Initiation à la logique programmable - D.Genet - Janvier 2006 155
Exemple 1 : variante IF
E2 = E1 & C1 # E2 & !C2 ;
ImplémentationOHE
if C1 then E2 = E1; elsif not C2 then E2 = E2; end if;
Cette équation peut être exprimée par le truchementd’une structure IF :
A noter que l’alternative else E2 = GND est implicite.
Initiation à la logique programmable - D.Genet - Janvier 2006 156
Exemple 1 : Synthèse logique
D Q
CLK
Horloge
Maintien : E2 & !C2
Activation : E1 & C1
C2
C1
E1
E2
ImplémentationOHE
Initiation à la logique programmable - D.Genet - Janvier 2006 157
Mise en équations : exemple 2
E2 = E1 & C1 # E2 & ! (C2 # C3) ;
L’étape 2 est implémentée par une bascule DE2 dont l’excitation est régie par l’équation :
c1
E1
E2
c2
E3 E4
c3
Le terme de maintien est l’état de l’étape considérée conditionné par le complément de la somme des réceptivités
de sortie.
ImplémentationOHE
Initiation à la logique programmable - D.Genet - Janvier 2006 158
Exemple 2 : remarque
E2 = E1 & C1 # E2 & ! (C2 # C3) ;
L’équation associée à l’étape 2 doit s’écrire systématiquement, sans simplifications quicompliqueraient toute modification ultérieure.
c1
E1
E2
c2
E3 E4
c3
5
c4
# E2 & ! (C2 # C3 # C4) ;
On insiste : le terme de maintien est l’état de l’étape conditionné par le complément de la somme des réceptivités
de sortie.
ImplémentationOHE
Initiation à la logique programmable - D.Genet - Janvier 2006 159
Exemple 2 : variante IF
E2 = E1 & C1 # E2 & ! (C2 # C3 # C4) ;
ImplémentationOHE
if C1 then E2 = E1;elsif not (C2 or C3 or C4) then E2 = E2;end if;
Cette équation peut être exprimée par le truchementd’une structure IF :
Initiation à la logique programmable - D.Genet - Janvier 2006 160
Mise en équations : exemple 3
E2 = E0&C0 # E1&C1 # E2 & ! C2;
L’étape 2 est implémentée par une basculeD E2 dont l’excitation est régie par l’équation :
2 termes d’activation1 terme de maintien
c0
E2
c2
E3
c1
E1 E0
ImplémentationOHE
Initiation à la logique programmable - D.Genet - Janvier 2006 161
Mise en équations : exemple 4
E2 = E1 & C1;
L’étape 2 est implémentée par une bascule DE2 dont l ’excitation est régie par l ’équation :
c1
E1
E2
1
E3
A
L’action A aura pour équation :
A = E2;
L ’équation de E2.d n’a pas de terme de maintien : l’étape 2 nerestera donc activée que durant 1 période de l ’horloge.
De même pour l’action A associée à cette étape.
ImplémentationOHE
Initiation à la logique programmable - D.Genet - Janvier 2006 162
Exemple 4 : remarque
L ’équation d ’une action associée à une ou plusieurs étapes doit s’écrireuniquement en fonction de celles-ci !
c1
E1
E2
c2
E3
AL’action A aura pour équation :
A = E2;
En effet, ici cette expression ne sera vraie que durant une période de l’horloge alors que l ’action A doit persister ici tant que la
condition c2 est fausse.
Il ne faut surtout pas écrire :
A = E1&c1;IN
TERDIT !
ImplémentationOHE
Initiation à la logique programmable - D.Genet - Janvier 2006 163
Mise en équations : exemple 5
c1
E1
E2
1
c2
E3
E4
E5
Cas de parallélisme :
E2 = E1&c1 # E2&!E4;
E4 = E3&c2 # E4&!E2;
E5 = E4&E2;
L ’étape 5 ne peut être activée que siles étapes 2 et 4 sont activées parallèlement.
Ce parallélisme, implicite dans le grafcet, doit êtreexplicité dans les équations.
ImplémentationOHE
Initiation à la logique programmable - D.Genet - Janvier 2006 164
Exercice de mise en équation
Poussoir 1
Poussoir 2
Tapis 1
Tapis 2(sortie)
colis
Unité de transbordement entre 2 convoyeurs
Pour cet automatisme, deux opérations peuvent avoir lieu en même temps.
ImplémentationOHE
Initiation à la logique programmable - D.Genet - Janvier 2006 165
Grafcet du transbordeur
1
2
3
4
5
6
7
Avance poussoir 1
Avance poussoir 2
Recul poussoir 2
Recul poussoir 1
pièce devant poussoir1 = dp1
pièce devant poussoir 2 = dp2
pièce évacuée = pe poussoir 1 en arrière = p1a
poussoir 2 en arrière = p2a
.
1
ImplémentationOHE
Initiation à la logique programmable - D.Genet - Janvier 2006 166
Equations du transbordeur
Séquencement :
E2 = (E1&dp1 # E2&!dp2)&!INIT;
E3 = (E2&dp2 # E3&!pe)&!INIT;
E4 = (E3&pe # E4&!p2a)&!INIT;
E5 = (E4&p2a # E5&!E7)&!INIT;
E6 = (E2&dp2 # E6&!p1a)&!INIT;
E7 = (E6&p1a # E7&!E5)&!INIT;
E1 = (E5&E7 # E1&!dp1 # INIT;
Actions :
avp1 = E2; avp2 = E3; rp1 = E6; rp2 = E4;
ImplémentationOHE
Initiation à la logique programmable - D.Genet - Janvier 2006 167
Transbordeur : initialisation
Autre intégration de l’initialisation dans le séquencement :
if INIT thenE1 = VCC;E[2..7] = 0;
elseE1 = E5&E7 # E1&!dp1;E2 = E1&dp1 # E2&!dp2;E3 = E2&dp2 # E3&!pe;E4 = E3&pe # E4&!p2a;E5 = E4&p2a # E5&!E7;E6 = E2&dp2 # E6&!p1a;E7 = E6&p1a # E7&!E5;
end if;
(VCC = niveau 1 pour un bit ; GND = niveau 0 pour 1 bit )
ImplémentationOHE
Initiation à la logique programmable - D.Genet - Janvier 2006 168
Initialisation automatique
En conception, les PLDs sont en général associés à un circuitde remise à zéro globale, actif à la mise sous tension. Cette situation peut être mise à profit pour une initialisation automatique :
if INIT # (E[]==0)thenE1 = VCC;E[2..7] = 0;
elseE1 = E5&E7 # E1&!dp1;E2 = E1&dp1 # E2&!dp2;...
end if;
ImplémentationOHE
Initiation à la logique programmable - D.Genet - Janvier 2006 169
Types d’action
c1
E1
E2
c2E3
A
c3E4 A
Dans ce grafcet de niveau 2 le signal A est vrai lorsque les étapes 2 et 4 sont actives.Il est faux sur les autres étapes.
c1
E1
E2
c2E3
A=1
c3E4 A=0
Dans ce second grafcet, le signal Aest mis à 1 lors de l ’étape 2 .Il est remis à 0 lors de l ’étape 4.
Le signal A est une mémoire qui change d’état aux fronts d’horlogequi suivent ceux qui activent les étapes E2 et E4.
Le signal A est un circuit combinatoiretel que
A = E2 # E4;.
ImplémentationOHE
Initiation à la logique programmable - D.Genet - Janvier 2006 170
Actions à mémoire : équations
c1
E1
E2
c2E3
A=1
c3E4 A=0
A : DFF;
…
A.clk = clock;A = E2 # A&!E4;
Terme d ’activation
Terme de maintien
D’une façon générale le terme de maintien est le signalmémoire conditionné par le complément de la somme des étapes qui doivent remettre à zéro ce signal.
Exemple : A = E2 # A&!(E0 # E4);E0 est par exemple l’étape d ’initialisation du système.
ImplémentationOHE
Initiation à la logique programmable - D.Genet - Janvier 2006 171
Comptage
c1
E0
E1
c2E2
C=C+1
c3E3 C=C+1
C[3..0] : DFF;…
C[].clk = clock;C[] = ?
Attention : si lors de l ’étape E3 le compteur C s’incrémenterad’une unité, il n ’en est pas de même pour l’étape E1 : lecompteur C s’incrémentera tant que la condition c2 est fausse !
C=0
1
C[3..0] : DFF;...
C[].clk = clock;C[] = (C[]+1)&(E1#E3)
# C[]&!E0; # C[]&!(E0#E1#E3);
Le comptage et le maintiendoivent être exclusifs !
ImplémentationOHE
Initiation à la logique programmable - D.Genet - Janvier 2006 172
Comptage : remarque sur le maintien
c1
E0
E1
c2E2
C=C+1
Le pilote C[ ].d sera alors le résultat d’un OU logique entre l ’étatcourant C[ ].q du compteur et ce même état incrémenté de 1... Exemple sur 4 bits :
C=0 C[] = (C[]+1)&E1 # C[]&!E0
L’équation ci-dessus peut paraître a prioricorrecte. Cependant, il s’avère que leterme de maintien reste vrai lorsque leterme d’activation est vrai.
Etat actuel C[] C[]+1 C[].d Etat futur
0 0000 0001 0001 1 1 0001 0010 0011 3 3 0011 0100 0111 7 7 0111 1000 1111 15
ImplémentationOHE
Initiation à la logique programmable - D.Genet - Janvier 2006 173
Comptage : activation et maintien
C[] = (C[]+1)&E1 # C[]&!E0
D Q
CLK
E0=0
E1=1C
n
n
+1
Horloge
C 0 1 3 7 15 31 63
Une telle progression est symptomatique d’une non exclusion entre l’activation et le maintien !
ImplémentationOHE
Initiation à la logique programmable - D.Genet - Janvier 2006 174
Comptage : validation correcte
c1
E0
E1
c2E2
C=C+1
Une variante consiste à énumérer dans le terme de maintienla somme des étapes où ce maintien est implicite :
C=0
C[] = (C[]+1)&E1 # C[]&!(E1#E0);
L ’équation correcte du compteur Csera :
C[] = (C[]+1)&E1 # C[]&(E2#E3);
E3
L’expression E2#E3 est le complément de E0#E1 par rapport au Grafcet considéré…
ImplémentationOHE
Initiation à la logique programmable - D.Genet - Janvier 2006 175
Temporisation
Il n’est pas nécessaire d’expliciter la remise à zéro du compteurde temporisation : on ne met pas de terme de maintien...
L ’étape 2 valide l’incrémentationd’un compteur tempo par lesignal en_tempo.
L ’étape 2 est maintenue tantque le compteur tempo n ’a pasatteint la valeur N.
tempo[15..0] : DFF;…tempo[].clk = clock;tempo[].d = ?
c1
E1
E2
tempo == N
E3
en_tempo
1
tempo[15..0] : DFF;…tempo[].clk = clock;tempo[] = (tempo[]+1)& E2;
ImplémentationOHE
Initiation à la logique programmable - D.Genet - Janvier 2006 176
Puits
Il peut arriver que l’on veuille exceptionnellementbloquer un système : pour on l’aiguille vers un
« puits » c1
1
2
c2
3 4
c3
0
puits
E4 = E2&C3 # E4;
D Q
CLK
E4E2
C3
ImplémentationOHE
Initiation à la logique programmable - D.Genet - Janvier 2006 177
Exercice : chronomètre
Un chronomètre peut être assimilé à un compteur cadencé par une horloge CLOCK, avec :
Validation du comptage par signal START.
Arrêt du comptage par signal STOP.
Remise à zéro par signal RAZ.
Ici, le compteur est BCD et compte de 0 à 99.
ImplémentationOHE
Initiation à la logique programmable - D.Genet - Janvier 2006 178
Chronomètre : grafcet
INIT
START
0
1
START
2
RAZ
STOP
VALID
Actions :
INIT : remise à zéro du compteur.
VALID : validation du comptage
ImplémentationOHE
Initiation à la logique programmable - D.Genet - Janvier 2006 179
Chronomètre : équations
Déclarations de ressources
Equations du séquenceur
E[0..2] : DFF; -- séquenceurUNIT[3..0],DIZ[3..0] : DFF; -- compteur
E[].clk = CLOCK;if E[]==0 then
E0.d = VCC;else
E0.d = E2&RAZ #E0&!START;E1.d = E0&START # E1&!STOP;E2.d = E1&STOP # E2&!(START # RAZ);
end if;
E[].clk = CLOCK;if E[]==0 then
E0.d = VCC;else
E0 = E2&RAZ #E0&!START;E1 = (E0#E2)&START # E1&!STOP;E2 = E1&STOP # E2&!(START # RAZ);
end if;
L’équation de E1.d est fausse, pourquoi ?
ImplémentationOHE
Initiation à la logique programmable - D.Genet - Janvier 2006 180
Chronomètre : équations (2)
Equations du compteur
--unitésUNIT[].clk = CLOCK;UNIT[] = ((UNIT[]+1)&(UNIT[]!=9)&VALID) #(UNIT[]&!VALID))&!INIT;
Equations des actions
INIT = E0;VALID = E1;
--dizainesDIZ[].clk = CLOCK;DIZ[] = ((DIZ[]+1)&(DIZ[]!=9)&(UNIT[]==9)&VALID) #(DIZ[] &!(VALID # UNIT[]==9))&!INIT;
ImplémentationOHE
Initiation à la logique programmable - D.Genet - Janvier 2006 181
Chronomètre : unités
if not INIT thenif VALID then if UNIT[]!=9
UNIT[] = UNIT[]+1; end if;else
UNIT[] = UNIT[];end if;
end if;
Expression structurée de UNIT[ ].d :
ImplémentationOHE
Initiation à la logique programmable - D.Genet - Janvier 2006 182
Chronomètre : dizaines
if not INIT thenif VALID & UNIT[]==9 then if DIZ[]!=9
DIZ[] = DIZ[]+1; end if;else
DIZ[] = DIZ[];end if;
end if;
Expression structurée de DIZ[ ].d :
ImplémentationOHE
Initiation à la logique programmable - D.Genet - Janvier 2006 183
Exercice : Aiguillage
Des bouteilles convoyées sur une file arrivent à un aiguillage à 3 voies V1, V2, V3.
La logique à associer à cet aiguillage et à développer ici doit être telle que les bouteilles seront
dirigées vers les 3 voies successivement par paquets de 5 et ceci de façon cyclique.
ImplémentationOHE
Initiation à la logique programmable - D.Genet - Janvier 2006 184
Aiguillage : vue externe
aiguillage
BV1
V2
V3
Arrêt normal Arrêt urgence
reset
clock
Ports d’entrée / sortie
B : signal délivré par un capteur de passage de bouteille
ImplémentationOHE
Initiation à la logique programmable - D.Genet - Janvier 2006 185
Aiguillage : chronogrammes
V1
V2
V3
Bouteille
ImplémentationOHE
Initiation à la logique programmable - D.Genet - Janvier 2006 186
Compteur de bouteilles (modulo 5)
Un séquenceur général :
Sensibilités : - détection de bouteille B - état du compteur CB - arrêt normal AN
- état de la voie 3
Actions : - validation du compteur (EN_CB) - remise à zéro synchrone (CS_CB) - permutation circulaire des voies (EN_PV) et initialisation sur la voie 1 (INIT_PV))
Permutateur de voies
Aiguillage : ressourcesImplémentation
OHE
Initiation à la logique programmable - D.Genet - Janvier 2006 187
aiguillage
CB
Aiguillage : schéma structurel
SéquenceurSéquenceur
Compteurde
Bouteilles
Compteurde
Bouteilles
Permutateurde
Voies
Permutateurde
Voies
V1
V2
V3
B
AN
AU
clock
reset
ImplémentationOHE
Initiation à la logique programmable - D.Genet - Janvier 2006 188
INIT_PV
CS_CBEN_PV
Aiguillage : grafcet du séquenceur
E0
E1
E2
E3
B
1
!B
(CB!=5)&B
(CB==5)
E4
E5
1
B
EN_CB
CS_CB
&!(AN&V3)
reset
ImplémentationOHE
Initiation à la logique programmable - D.Genet - Janvier 2006 189
Aiguillage : grafcet du permutateur
V1
V2
V3
E4
E4
E4
Le permutateurest initialisé sur
V1 par E0
ImplémentationOHE
E0
# E0
Initiation à la logique programmable - D.Genet - Janvier 2006 190
Implémentation FSM
Chaque état discernable du système est représentépar celui d’un registre (groupement de bascules D).
Ce registre (registre d’état ou séquenceur) aura le nombre p de bits nécessaires pour représenter les N états identifiés, soit donc p tel que
2P-1 < N <= 2P
L’implémentation du séquenceur en mode FSM demandera donc les équations des entrées D des P bascules D, fonctionsà la fois des états du séquenceur et de ceux des signaux externes intervenant dans la succession des états.
ImplémentationFSM
Initiation à la logique programmable - D.Genet - Janvier 2006 191
Implémentation FSM : exemple
Détecteur d’états consécutifs
Détecteure z
Horloge
La sortie z passe à 1 si l ’entrée e est restée à 1sur au moins 3 fronts d ’horloge consécutifs.
ImplémentationFSM
Initiation à la logique programmable - D.Genet - Janvier 2006 192
Détecteur : représentation
Le système a quatre états possibles selon qu’il a détecté l’entrée au niveau 1 sur 0, 1, 2 ou au moins 3 fronts actifs de l ’horloge.
Entrée : e; Sortie : z;
S0
S1
S2
S3 0 0 0 1
111
0
0
00
1
4 états possibles
On choisit une représentation par graphe d’état :
ImplémentationFSM
Initiation à la logique programmable - D.Genet - Janvier 2006 193
Détecteur : implémentation FSM sous AHDL
Le langage AHDL permet de coder un graphe (ou un grafcet) envue d’une implémentation FSM de deux manières :
ImplémentationFSM
Saisie directe de la table des transitions
Utilisation d’une structure CASE
Pour les amateurs de tables ! Leur taille augmente exponentiellement avec le nombre de variables externes…
Structure très pratique, portable généralement dans les autres langages.
De plus, en AHDL, si elle examine les états d’unevariable de type STATE MACHINE, les maintienssont implicites.
Initiation à la logique programmable - D.Genet - Janvier 2006 194
Détecteur : codage sous forme de table
% Déclaration d'une machine d'étatSS : state machine with states (S0, S1, S2, S3);...SS.clk = clock; % Cadencement de la machine d ’état ...table
SS, e => SS; % Enumération des éléments de la tableS0, 0 => S0;S0, 1 => S1;S1, 0 => S0;S1, 1 => S2;S2, 0 => S0;S2, 1 => S3;S3, 0 => S0;S3, 1 => S3;
end table;
ImplémentationFSM
Initiation à la logique programmable - D.Genet - Janvier 2006 195
Détecteur : codage par instruction CASE% Déclaration d'une machine d'étatSS : state machine with states (S0, S1, S2, S3);...SS.clk = clock; % Cadencement de la machine d ’état ...
case SS iswhen S0 =>
if e then SS = S1; end if;when S1 =>
if e then SS = S2; else SS = S0;end if;
when S2 =>if e then SS = S3; else SS = S0;end if;
when S3 =>if !e then SS = S0; end if;
end case;
ImplémentationFSM
Initiation à la logique programmable - D.Genet - Janvier 2006 196
Détecteur : génération des équations
Puisqu ’il présente 4 états possibles, le système peut être implémenté par un compteur à 2 bits (B0,B1) réalisé avec 2 bascules D. A priori les états S0 à S3 correspondront aux états numériques du compteur (0,1,2,3).
Au plus bas niveau il faut exprimer :
L’équation de la sortie
Les équations de chaque entrée D
Cette dernière est très simple : z = S3;
L ’établissement des équations des entrées D passe par celui dela table des transitions, déduite directement du graphe d’état.
Initiation à la logique programmable - D.Genet - Janvier 2006 197
S0 0 S0 0 0 S0 1 S1 0 1 S1 0 S0 0 0 S1 1 S2 1 0 S2 0 S0 0 0 S2 1 S3 1 1 S3 0 S0 0 0 S3 1 S3 1 1
Détecteur : table des transitions
Etat actuel Entrée e Etat futur B1.d B0.d
B0.d = (S0 # S2 # S3) &e;
B1.d = (S1 # S2 # S3) &e;
Les équations de B0.d et B1.d sont déduites de cette table :
ImplémentationFSM
Initiation à la logique programmable - D.Genet - Janvier 2006 198
Détecteur : équations réduites
B0 = (S0 # S2 # S3) &e;
B1 = (S1 # S2 # S3) &e;
Les états S0 à S3 sont les états successifs (0,1,2,3) d’un compteur 2 bits B0 et B1. Les équationsréduites de l’excitation des bascules seront :
B0 = !B1&!B0&e # B1&!B0&e # B1&B0&e ;
B1 = B1&!B0&e # B1&!B0&e # B1&B0&e ;
ImplémentationFSM
Initiation à la logique programmable - D.Genet - Janvier 2006 199
DQ
Clk
e
DQ
Clk
B0
B1
B0 = !B1&!B0&e # B1&!B0&e # B1&B0&e ;
B1 = B1&!B0&e # B1&!B0&e # B1&B0&e ;
ImplémentationFSM
Initiation à la logique programmable - D.Genet - Janvier 2006 200
Exercice de synthèse : feux tricolores
VOIE 2
VOIE 1
P2
P1
V2 O2 R2R1O1V1
Entrées : p1,p2 Sorties : V1,O1,R1 V2,O2,R2
Un détecteur de présence de voiture est placé sur chacune des voies, P1 pour la voie 1, P2 pour la voie 2.
Initiation à la logique programmable - D.Genet - Janvier 2006 201
Feux tricolores : spécifications
S 'il y a présence d'un véhicule sur la voie 1 (P1 = 1)et absence de véhicule sur la voie 2 (P2 = 0),les feux sont vert pour la voie1 et rouge pour la voie2 ; cet état persiste tant que la situation dure.
Pour la situation inverse (P1 = 0 et P2 = 1) , les feux sont bien entendu inversés.
Exercice desynthèse
Initiation à la logique programmable - D.Genet - Janvier 2006 202
Feux tricolores : spécifications
Si lors du passage au vert d'une voie, il y a absence de véhicule sur cette voie, le cycle normal est modifié pour que le feu de la voie sans véhicule passe à l'orange à la prochaine impulsion de l'horloge.
S'il y a présence ou absence de véhicules simultanément sur les deux voies (P1 = P2), les feux changent d'état en respectant la séquence suivante :
feux1
feux2
Exercice desynthèse
Initiation à la logique programmable - D.Genet - Janvier 2006 203
Feux tricolores : graphe d ’état
8 états possibles
2 entrées : P1, P2.
6 sorties : V1,O1,R1,V2,O2,R2
Exercice desynthèse
Initiation à la logique programmable - D.Genet - Janvier 2006 204
Feux tricolores : graphe d ’état
S0V1R2
S1V1R2
S2V1R2
S3O1R2
S4R1V2
S5R1V2
S6R1V2
S7R1O2
00,11
00,11
10
01
01
10
P1P2
Exercice desynthèse
Initiation à la logique programmable - D.Genet - Janvier 2006 205
Feux tricolores : table des transitions
table SS, P1,P2 => SS;
table SS, P1,P2 => SS; S0, 1, 0 => S0;
table SS, P1,P2 => SS; S0, 1, 0 => S0;S0, 0, 0 => S1;
table SS, P1,P2 => SS; S0, 1, 0 => S0;S0, 0, 0 => S1;S0, 1, 1 => S1;
table SS, P1,P2 => SS; S0, 1, 0 => S0;S0, 0, 0 => S1;S0, 1, 1 => S1;S0, 0, 1 => S3;
table SS, P1,P2 => SS; S0, 1, 0 => S0;S0, 0, 0 => S1;S0, 1, 1 => S1;S0, 0, 1 => S3;S1, X, X => S2;
table SS, P1,P2 => SS; S0, 1, 0 => S0;S0, 0, 0 => S1;S0, 1, 1 => S1;S0, 0, 1 => S3;S1, X, X => S2;S2, X, X => S3;
table SS, P1,P2 => SS; S0, 1, 0 => S0;S0, 0, 0 => S1;S0, 1, 1 => S1;S0, 0, 1 => S3;S1, X, X => S2;S2, X, X => S3;S3, X, X => S4;
table SS, P1,P2 => SS; S0, 1, 0 => S0;S0, 0, 0 => S1;S0, 1, 1 => S1;S0, 0, 1 => S3;S1, X, X => S2;S2, X, X => S3;S3, X, X => S4;S4, 0, 1 => S4;
S4, 0, 0 => S5;S4, 1, 1 => S5;S4, 1, 0 => S7;S5, X, X => S6;S6, X, X => S7;S7, X, X => S0;
end table;
Exercice desynthèse
Initiation à la logique programmable - D.Genet - Janvier 2006 206
Feux tricolores : sorties
V1 = S0 # S1 # S2;O1 = S3;R1 = S4 # S5 # S6 # S7;
V2 = S4 # S5 # S6;O2 = S7;R2 = S0 # S1 # S2 # S3;
Exercice desynthèse
Initiation à la logique programmable - D.Genet - Janvier 2006 207
Feux : implémentation FSM
… ou estimation des ressources nécessaires sur un SPLD.
Le système comporte 8 états possibles : en mode FSM il faudra 3 bascules, soit 3 cellules logiques.Ceci à condition que la combinatoire nécessitée par le séquencement n’exige pas des cellulessupplémentaires.
Les 6 sorties sont toutes fonctions combinatoiresdes états Q0, Q1, Q2 des bascules : il faut donc6 cellules logiques supplémentaires.
Au total, le projet nécessite 9 cellules logiques.
Exercice desynthèse
Initiation à la logique programmable - D.Genet - Janvier 2006 208
Feux : ressources en mode FSM
V1 = g0(Q0,Q1,Q2)
O1 = g1(Q0,Q1,Q2)
R1 = g2(Q0,Q1,Q2)
V2 = g3(Q0,Q1,Q2)
O2 = g4(Q0,Q1,Q2)
R2 = g6(Q0,Q1,Q2)
V1
O1
R1
V2
O2
R2
Q0D0 = f0(P1,P2,Q0,Q1,Q2)
Q1D1 = f1(P1,P2,Q0,Q1,Q2)
Q2D2 = f2(P1,P2,Q0,Q1,Q2)
P1 P2Exercice desynthèse
Initiation à la logique programmable - D.Genet - Janvier 2006 209
Feux : implémentation OHE
Chaque état est implémenté par une bascule :il faut donc 8 cellules pour le séquencement.
Les 6 sorties sont fonctions combinatoires desétats selon les équations :
Au total, le projet nécessite 12 cellules logiques.
V1 = S0#S1#S2; V2 = S4#S5#S6;O1 = S3; O2 = S7;R1 = S4#S5#S6#S7; R2 = S0#S1#S2#S3;
Les sorties O1 et O2 ne nécessitent pas de combinatoire : il faut donc 4 cellules.
Exercice desynthèse
Initiation à la logique programmable - D.Genet - Janvier 2006 210
Implémentation : quelle méthode ?
En fait la vraie question est : n machines d’état 1 bitou 1 machine d’état p bits (2p-1 < n <= 2p) ?
A priori la machine d’état p bits réclame intrinsèquement moins de ressources .
Cependant ce bénéfice peut être perdu par lacombinatoire sous-jacente au séquencement et aux sorties : sa taille peut s’avérer plus importante.
Les outils de synthèse donnent en général le choixpar l’option « one hot encoding » . Si nécessaire,il suffit d ’essayer les deux cas pour décider.
OHEvs
FSM
Initiation à la logique programmable - D.Genet - Janvier 2006 211
Grafcet et FSM : restriction
Si le grafcet comporte des étapes activées en parallèle, l’implémentation FSM
n’est pas applicable.
Un registre d’état à p bits, comme un compteur,ne peut présenter qu’un seul état à la fois !
OHEvs
FSM
Initiation à la logique programmable - D.Genet - Janvier 2006 212
CLK
Déc
odeu
rcl
avie
r
CompteurCA
TIMER
Com
mad
ega
cche
prédivGACHE
8
Clavier4x4 Compteur
CE
CODE OK
Com
mad
eal
arm
e
ALARME
DATAAV
RAZ
CA OK CE TIMER ETAT
SEQUENCEURPROG
Les signaux de validations résultent ici implicitement du décodage du signal ETAT géré par le séquenceur
Système séquentiel structuré : exemple
Initiation à la logique programmable - D.Genet - Janvier 2006 213
Un outil de développement :
MAX+II
Un outil de développement :
MAX+II
Initiation à la logique programmable - D.Genet - Janvier 2006 214
Max+II : Structure et entrées
Initiation à la logique programmable - D.Genet - Janvier 2006 215
Max+II : Flot d’un développement
Compilationfonctionnelle
Créer stimuli pour le test
(signaux ou vecteurs)
Simuler
OK?
Créer le PROJET
Créer design(texte ou schéma)
Suite
Modifierle design
Text or schematiceditor
Compiler
Waveformor vector
editor
Simulator
Text orschematiceditor
.acf
.tdf or .gdf
.snf
.scf or .vec
.scf
Initiation à la logique programmable - D.Genet - Janvier 2006 216
Max+II : Flot d’un développement (2)
Choix device
Compilationcomplète
Assignationpins
Recompilation
Choix système de programmation
Programmation
Recette
Test
OK?
OK?
OK?
Modifierdesign
Compiler
Compiler
.acf
.rpt
.pof
.acf
.rpt
.pof
Floor planeditor
Programmer
Suite
Modifier designou changer
device
Initiation à la logique programmable - D.Genet - Janvier 2006 217
Max+II : Structure d’un fichier .tdfUne description en AHDL (langage propriétaire Altera) débouchesur un fichier texte .tdf, dont la structure minimale est la suivante :
title "controleur_video";
Section titre : (optionnel) :
Section subdesign (requis) :
subdesign <nom du projet> (-- déclaration des E/S du projet
)
Section variable (requis en cas de ressources internes)variable
E[7..0] : DFF;CPT[3..0]:DFF;
Section logique (requis : contient toutes les équations)
begin …end;
Initiation à la logique programmable - D.Genet - Janvier 2006 218
Section subdesign
Cette section énumère les variables externes (entrées et sorties) du système en précisant leur nature :
SUBDESIGN synchro (raz, clock, valid, oe : INPUT;alarm : OUTPUT;affich[3..0] : OUTPUT;data[7..0] : BIDIR;
)
Le mot clé SUBDESIGN doit être suivi du nom du projet décrit dans le fichier, qui doit porter le même nom : ici, il s'agira d'un fichier synchro.tdf.
affich[3..0] et data[7..0] sont des vecteurs de bits : affich[ ] est un registre de 4 bits composé de affich3, affich2, affich1, affich0 (notés aussi affich[3], affich[2], affich[1] et affich[0]).Par défaut affich3 est considéré comme le bit de poids fort du groupe affich[ ].
Initiation à la logique programmable - D.Genet - Janvier 2006 219
Section variable
Cette section, bien qu'à caractère optionnel, est en général requise : elle sert à déclarer des variables internes au design, avec leur type. Elle sert aussi à préciser le type des variables de sortie externes, combinatoires par défaut.
VARIABLE
affich[3..0] : DFF ;etape[12..0] : DFF;compteur_zero : NODE;SS : MACHINE WITH STATES (s0, s1, s2, s3);
NODE désigne une variable combinatoire interne.
Initiation à la logique programmable - D.Genet - Janvier 2006 220
Section logique
Cette section est évidemment requise : elle contient leséquations décrivant le système projeté.
Les équations directes ou structurées sont insérées dans cette section selon un ordre indifférent.
On peut cependant pour une meilleurelisibilité regrouper les équations par parties opératives concernées
Elle est encadrée par les délimiteurs BEGIN ..END;
Initiation à la logique programmable - D.Genet - Janvier 2006 221
Initiation à la logique programmable - D.Genet - Janvier 2006 222
Initiation à la logique programmable - D.Genet - Janvier 2006 223
Initiation à la logique programmable - D.Genet - Janvier 2006 224
Initiation à la logique programmable - D.Genet - Janvier 2006 225