Initiation à la logique programmable

225
Initiation à la logique programmable - D.Genet - Janvier 2006 1 Initiation à la logique programmable

description

Initiation à la logique programmable. Typologie des circuits logiques. 1 fonction par circuit. PAL, CPLD FPGA. Microprocesseurs Microcontrôleurs DSP. Mixtes : FPGA + MICRO + RAM. RAM, ROM. Périphériques standards, ASICs. SOC. - PowerPoint PPT Presentation

Transcript of Initiation à la logique programmable

Page 1: Initiation à la logique programmable

Initiation à la logique programmable - D.Genet - Janvier 2006 1

Initiationà la logique programmable

Initiationà la logique programmable

Page 2: 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

Page 3: Initiation à la logique programmable

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

Page 4: Initiation à la logique programmable

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

Page 5: Initiation à la logique programmable

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

Page 6: Initiation à la logique programmable

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

Page 7: Initiation à la logique programmable

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

Page 8: Initiation à la logique programmable

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

Page 9: Initiation à la logique programmable

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é

Page 10: Initiation à la logique programmable

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

Page 11: Initiation à la logique programmable

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

Page 12: Initiation à la logique programmable

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é

Page 13: Initiation à la logique programmable

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 ?

Page 14: Initiation à la logique programmable

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

Page 15: Initiation à la logique programmable

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

Page 16: Initiation à la logique programmable

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)

Page 17: Initiation à la logique programmable

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

Page 18: Initiation à la logique programmable

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

Page 19: Initiation à la logique programmable

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

Page 20: Initiation à la logique programmable

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

Page 21: Initiation à la logique programmable

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

Page 22: Initiation à la logique programmable

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

Page 23: Initiation à la logique programmable

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

Page 24: Initiation à la logique programmable

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

Page 25: Initiation à la logique programmable

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

Page 26: Initiation à la logique programmable

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

Page 27: Initiation à la logique programmable

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

Page 28: Initiation à la logique programmable

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

Page 29: Initiation à la logique programmable

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

Page 30: Initiation à la logique programmable

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

Page 31: Initiation à la logique programmable

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

Page 32: Initiation à la logique programmable

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

Page 33: Initiation à la logique programmable

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

Page 34: Initiation à la logique programmable

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

Page 35: Initiation à la logique programmable

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

Page 36: Initiation à la logique programmable

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

Page 37: Initiation à la logique programmable

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

Page 38: Initiation à la logique programmable

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

Page 39: Initiation à la logique programmable

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

Page 40: Initiation à la logique programmable

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

Page 41: Initiation à la logique programmable

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

Page 42: Initiation à la logique programmable

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

Page 43: Initiation à la logique programmable

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

Page 44: Initiation à la logique programmable

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

Page 45: Initiation à la logique programmable

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

Page 46: Initiation à la logique programmable

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

Page 47: Initiation à la logique programmable

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

Page 48: Initiation à la logique programmable

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

Page 49: Initiation à la logique programmable

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

Page 50: Initiation à la logique programmable

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)

Page 51: Initiation à la logique programmable

Initiation à la logique programmable - D.Genet - Janvier 2006 51

Famille EPM7000 (Altera) : organisation

LAB : logic Array BlockPIA : Programmable Interconnection Array

Les CPLDs

Page 52: Initiation à la logique programmable

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

Page 53: Initiation à la logique programmable

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

Page 54: Initiation à la logique programmable

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

Page 55: Initiation à la logique programmable

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

Page 56: Initiation à la logique programmable

Initiation à la logique programmable - D.Genet - Janvier 2006 56

Famille EPM7000 (Altera) : les puces

EPM7xxxS : programmable in situ

Les CPLDs

Page 57: Initiation à la logique programmable

Initiation à la logique programmable - D.Genet - Janvier 2006 57

Famille EPM7000 (Altera) : rapidité

-5 correspond à un temps de propagation tpd = 5ns

Les CPLDs

Page 58: Initiation à la logique programmable

Initiation à la logique programmable - D.Genet - Janvier 2006 58

Famille EPM7000 (Altera) : les boîtiersLes CPLDs

Page 59: Initiation à la logique programmable

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)

Page 60: Initiation à la logique programmable

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

Page 61: Initiation à la logique programmable

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

Page 62: Initiation à la logique programmable

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

Page 63: Initiation à la logique programmable

Initiation à la logique programmable - D.Genet - Janvier 2006 63

FPGAs : structure détaillée Les FPGAs

Page 64: Initiation à la logique programmable

Initiation à la logique programmable - D.Genet - Janvier 2006 64

FPGAs : RAM embarquée

Positioncentrale:

minimisationdesTpd

Les FPGAs

Page 65: Initiation à la logique programmable

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.

Page 66: Initiation à la logique programmable

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

Page 67: Initiation à la logique programmable

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

Page 68: Initiation à la logique programmable

Initiation à la logique programmable - D.Genet - Janvier 2006 68

XC4000 : la mémoire répartie

(version mémoire : organisation 16x2 bits)

Les FPGAs

Page 69: Initiation à la logique programmable

Initiation à la logique programmable - D.Genet - Janvier 2006 69

XC4000 : les interconnexions

PSM : Programmable Switches Matrice

Les FPGAs

Page 70: Initiation à la logique programmable

Initiation à la logique programmable - D.Genet - Janvier 2006 70

XC4000 : les interconnexions, détail Les FPGAs

Page 71: Initiation à la logique programmable

Initiation à la logique programmable - D.Genet - Janvier 2006 71

XC4000 : Bloc E/S Les FPGAs

Page 72: Initiation à la logique programmable

Initiation à la logique programmable - D.Genet - Janvier 2006 72

XC4000 : exemple de routage Les FPGAs

Page 73: Initiation à la logique programmable

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

Page 74: Initiation à la logique programmable

Initiation à la logique programmable - D.Genet - Janvier 2006 74

FPGA Exemple 2 : ACEX (Altera)

organisa

tion

Les FPGAs

Page 75: Initiation à la logique programmable

Initiation à la logique programmable - D.Genet - Janvier 2006 75

FPGA Exemple 2 : ACEX (Altera)

La ce

llule

logique

Les FPGAs

Page 76: Initiation à la logique programmable

Initiation à la logique programmable - D.Genet - Janvier 2006 76

FPGA Exemple 2 : ACEX (Altera)

L’élément

Logique

Les FPGAs

Page 77: Initiation à la logique programmable

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

Page 78: Initiation à la logique programmable

Initiation à la logique programmable - D.Genet - Janvier 2006 78

FPGA Exemple 3 : Virtex 2 pro (Xilinx) Les FPGAs

Page 79: Initiation à la logique programmable

Initiation à la logique programmable - D.Genet - Janvier 2006 79

Virtex 2 pro : organisation

générale

organisa

tion

Les FPGAs

Page 80: Initiation à la logique programmable

Initiation à la logique programmable - D.Genet - Janvier 2006 80

Virtex 2 pro : la cellule logique

La ce

llule

logique

Les FPGAs

Page 81: Initiation à la logique programmable

Initiation à la logique programmable - D.Genet - Janvier 2006 81

Virtex 2 pro : les slices

La ce

llule

logique

(slice

s)

Les FPGAs

Page 82: Initiation à la logique programmable

Initiation à la logique programmable - D.Genet - Janvier 2006 82

Virtex 2 pro : détail du slice

Le sl

ice

Les FPGAs

Page 83: Initiation à la logique programmable

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

Page 84: Initiation à la logique programmable

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

Page 85: Initiation à la logique programmable

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

Page 86: Initiation à la logique programmable

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

Page 87: Initiation à la logique programmable

Initiation à la logique programmable - D.Genet - Janvier 2006 87

Petit projet : SPLD ou CPLD

CPLD ou FPGA : taille projet

Gros projet : FPGA

CPLDvs

FPFGA

Page 88: Initiation à la logique programmable

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

Page 89: Initiation à la logique programmable

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

Page 90: Initiation à la logique programmable

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)

Page 91: Initiation à la logique programmable

Initiation à la logique programmable - D.Genet - Janvier 2006 91

SPLD DIP sur programmateurProgrammationdes

PLDs

Page 92: Initiation à la logique programmable

Initiation à la logique programmable - D.Genet - Janvier 2006 92

SPLD CMS sur programmateurProgrammation

desPLDs

Page 93: Initiation à la logique programmable

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

Page 94: Initiation à la logique programmable

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

Page 95: Initiation à la logique programmable

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

Page 96: Initiation à la logique programmable

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

Page 97: Initiation à la logique programmable

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

Page 98: Initiation à la logique programmable

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

Page 99: Initiation à la logique programmable

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

Page 100: Initiation à la logique programmable

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

Page 101: Initiation à la logique programmable

Initiation à la logique programmable - D.Genet - Janvier 2006 101

Exemple matériel : photo 1

Câble deconfiguration

Programmationdes

PLDs

Page 102: Initiation à la logique programmable

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

Page 103: Initiation à la logique programmable

Initiation à la logique programmable - D.Genet - Janvier 2006 103

Exemple matériel : photo 3

Boîtier PQFP

Programmationdes

PLDs

Page 104: Initiation à la logique programmable

Initiation à la logique programmable - D.Genet - Janvier 2006 104

Exemple matériel : photo 4

Boîtier TQFP

Boîtier PLCC

DIP switch

Programmationdes

PLDs

Page 105: Initiation à la logique programmable

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

Page 106: Initiation à la logique programmable

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.

Page 107: Initiation à la logique programmable

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.

Page 108: Initiation à la logique programmable

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

Page 109: Initiation à la logique programmable

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

Page 110: Initiation à la logique programmable

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

Page 111: Initiation à la logique programmable

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

Page 112: Initiation à la logique programmable

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

Page 113: Initiation à la logique programmable

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

Page 114: Initiation à la logique programmable

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

Page 115: Initiation à la logique programmable

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

Page 116: Initiation à la logique programmable

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

Page 117: Initiation à la logique programmable

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

Page 118: Initiation à la logique programmable

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.

Page 119: Initiation à la logique programmable

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

Page 120: Initiation à la logique programmable

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

Page 121: Initiation à la logique programmable

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

Page 122: Initiation à la logique programmable

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

Page 123: Initiation à la logique programmable

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

Page 124: Initiation à la logique programmable

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

Page 125: Initiation à la logique programmable

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

Page 126: Initiation à la logique programmable

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.

Page 127: Initiation à la logique programmable

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.

Page 128: Initiation à la logique programmable

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

Page 129: Initiation à la logique programmable

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

Page 130: Initiation à la logique programmable

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

Page 131: Initiation à la logique programmable

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

Page 132: Initiation à la logique programmable

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

Page 133: Initiation à la logique programmable

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

Page 134: Initiation à la logique programmable

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

Page 135: Initiation à la logique programmable

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.

Page 136: Initiation à la logique programmable

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;

Page 137: Initiation à la logique programmable

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

Page 138: Initiation à la logique programmable

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.

Page 139: Initiation à la logique programmable

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

Page 140: Initiation à la logique programmable

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

Page 141: Initiation à la logique programmable

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

Page 142: Initiation à la logique programmable

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

Page 143: Initiation à la logique programmable

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

Page 144: Initiation à la logique programmable

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

Page 145: Initiation à la logique programmable

Initiation à la logique programmable - D.Genet - Janvier 2006 145

Grafcet : chronogrammes d’une transition

c1

E1

E2

C1

E1

E2

Horloge

GRAFCET

Page 146: Initiation à la logique programmable

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

Page 147: Initiation à la logique programmable

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

Page 148: Initiation à la logique programmable

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

Page 149: Initiation à la logique programmable

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

Page 150: Initiation à la logique programmable

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

Page 151: Initiation à la logique programmable

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

Page 152: Initiation à la logique programmable

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

Page 153: Initiation à la logique programmable

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

Page 154: Initiation à la logique programmable

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

Page 155: Initiation à la logique programmable

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.

Page 156: Initiation à la logique programmable

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

Page 157: Initiation à la logique programmable

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

Page 158: Initiation à la logique programmable

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

Page 159: Initiation à la logique programmable

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 :

Page 160: Initiation à la logique programmable

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

Page 161: Initiation à la logique programmable

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

Page 162: Initiation à la logique programmable

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

Page 163: Initiation à la logique programmable

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

Page 164: Initiation à la logique programmable

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

Page 165: Initiation à la logique programmable

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

Page 166: Initiation à la logique programmable

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

Page 167: Initiation à la logique programmable

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

Page 168: Initiation à la logique programmable

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

Page 169: Initiation à la logique programmable

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

Page 170: Initiation à la logique programmable

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

Page 171: Initiation à la logique programmable

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

Page 172: Initiation à la logique programmable

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

Page 173: Initiation à la logique programmable

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

Page 174: Initiation à la logique programmable

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

Page 175: Initiation à la logique programmable

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

Page 176: Initiation à la logique programmable

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

Page 177: Initiation à la logique programmable

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

Page 178: Initiation à la logique programmable

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

Page 179: Initiation à la logique programmable

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

Page 180: Initiation à la logique programmable

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

Page 181: Initiation à la logique programmable

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

Page 182: Initiation à la logique programmable

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

Page 183: Initiation à la logique programmable

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

Page 184: Initiation à la logique programmable

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

Page 185: Initiation à la logique programmable

Initiation à la logique programmable - D.Genet - Janvier 2006 185

Aiguillage : chronogrammes

V1

V2

V3

Bouteille

ImplémentationOHE

Page 186: Initiation à la logique programmable

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

Page 187: Initiation à la logique programmable

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

Page 188: Initiation à la logique programmable

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

Page 189: Initiation à la logique programmable

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

Page 190: Initiation à la logique programmable

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

Page 191: Initiation à la logique programmable

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

Page 192: Initiation à la logique programmable

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

Page 193: Initiation à la logique programmable

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.

Page 194: Initiation à la logique programmable

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

Page 195: Initiation à la logique programmable

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

Page 196: Initiation à la logique programmable

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.

Page 197: Initiation à la logique programmable

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

Page 198: Initiation à la logique programmable

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

Page 199: Initiation à la logique programmable

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

Page 200: Initiation à la logique programmable

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.

Page 201: Initiation à la logique programmable

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

Page 202: Initiation à la logique programmable

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

Page 203: Initiation à la logique programmable

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

Page 204: Initiation à la logique programmable

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

Page 205: Initiation à la logique programmable

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

Page 206: Initiation à la logique programmable

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

Page 207: Initiation à la logique programmable

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

Page 208: Initiation à la logique programmable

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

Page 209: Initiation à la logique programmable

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

Page 210: Initiation à la logique programmable

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

Page 211: Initiation à la logique programmable

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

Page 212: Initiation à la logique programmable

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

Page 213: Initiation à la logique programmable

Initiation à la logique programmable - D.Genet - Janvier 2006 213

Un outil de développement :

MAX+II

Un outil de développement :

MAX+II

Page 214: Initiation à la logique programmable

Initiation à la logique programmable - D.Genet - Janvier 2006 214

Max+II : Structure et entrées

Page 215: Initiation à la logique programmable

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

Page 216: Initiation à la logique programmable

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

Page 217: Initiation à la logique programmable

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;

Page 218: Initiation à la logique programmable

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[ ].

Page 219: Initiation à la logique programmable

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.

Page 220: Initiation à la logique programmable

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;

Page 221: Initiation à la logique programmable

Initiation à la logique programmable - D.Genet - Janvier 2006 221

Page 222: Initiation à la logique programmable

Initiation à la logique programmable - D.Genet - Janvier 2006 222

Page 223: Initiation à la logique programmable

Initiation à la logique programmable - D.Genet - Janvier 2006 223

Page 224: Initiation à la logique programmable

Initiation à la logique programmable - D.Genet - Janvier 2006 224

Page 225: Initiation à la logique programmable

Initiation à la logique programmable - D.Genet - Janvier 2006 225