les composants programmables et vhdl - … · fichier source vhdl ... machine d’état avec...

40
CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 1-1 LES COMPOSANTS PROGRAMMABLES ET VHDL

Upload: phamngoc

Post on 12-Sep-2018

229 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: LES COMPOSANTS PROGRAMMABLES ET VHDL - … · Fichier source VHDL ... Machine d’état avec variables d’entrées asynchrones

CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 1-1

LES

COMPOSANTS

PROGRAMMABLES

ET

VHDL

Page 2: LES COMPOSANTS PROGRAMMABLES ET VHDL - … · Fichier source VHDL ... Machine d’état avec variables d’entrées asynchrones

CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 1-2

HISTORIQUE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-4INTRODUCTION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-1Principe de base et notation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-1Réalisation d’une fonction logique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-2LES PALS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-1Principe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-122v10. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-1

Architecture du circuit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-1Cellule de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-2Schéma interne partiel du 22v10. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-2

29MA16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3Cellule de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3

LES COMPOSANTS ALTERA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-1Les différentes familles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-1Flexible Logic Element matriX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-1MAX 7000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-2Composants de la famille Max 7000. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-2Architecture des circuits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-3Cellule de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-4Elément d’entrée-sortie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-4Prédiction des délais et analyse temporelle. . . . . . . . . . . . . . . . . . . . . . . . . . . 4-5COMPOSANTS DE LA FAMILLE FLEX 8000. . . . . . . . . . . . . . . . . . . . . . 4-6FLEX 8000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-6Composants de la famille Flex 8000. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-6Architecture. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-7Cellule de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-8Elément d’entrée-sortie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-8FLEX10KE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-9Les composants de la famille 10ke. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-9Cellule de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-11LOGIQUE COMBINATOIRE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-2Porte ET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-2Fonction booléenne. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-2Fichier source VHDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-3Multiplexeur 2 Bits vers 1 Bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-5Multiplexeur de 8 bits vers 1 bit avec signal de validation. . . . . . . . . . . . . . . 5-6LOGIQUE SEQUENCIELLE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-1Implémentation de registres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-1Bascule d. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-2Compteur. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-4Compteur avec instanciation lpm_counter . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-5Description de machines d’états . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-6Machine d’état avec variables d’entrées asynchrones. . . . . . . . . . . . . . . . . . . 6-7Machine de Moore ou de Mealy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-8

Page 3: LES COMPOSANTS PROGRAMMABLES ET VHDL - … · Fichier source VHDL ... Machine d’état avec variables d’entrées asynchrones

CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 1-3

Page 4: LES COMPOSANTS PROGRAMMABLES ET VHDL - … · Fichier source VHDL ... Machine d’état avec variables d’entrées asynchrones

CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 1-4

HISTORIQUE

Dans les années 1970, la grande majorité des systèmes électronique étaient construit à partir des circuits standard de la logique TTL. (Transistor Transistor Logic). Les circuits les plus complexes sont alors:

• 7490 Compteur décimal asynchrone

• 7491 Registre à décalage (Entrée Série - Sortie Série)

• 7492 Diviseur par 12

• 7493 Compteur binaire 4 Bits

• 7494 Registre à décalage (ES-EP/SS)

• 7495 Registre à décalage 4 Bits

• 7496 Registre à décalage 5 bits (ESP/SP)

Avec le développement de la technologie MOS (Metal Oxyde Semiconductor), sont ap-parus les premiers réseaux de logique programmable appelés PLA (Programmables Logic Aray).

Dans les années 1980, les PLD étaient utilisés pour le remplacement de boîtiers logi-ques TTL. En 1993, les composants Altera comprennent de 300 à 24 000 portes en techno-logie CMOS 0,8 micron; Trois ans plus tard, la densité des composants varie de 300 à 100 000 portes. En 1999, la famille APEX comprend des composants dont la densité va de 100 000 à 1 million de portes; la technologie est à 0,25 micron. Le boitier des composants com-porte jusqu’à 600 pattes. (Ball Grid Array). Le pas des pattes est de 1 mm. Le diamètre de la bille est de 0,45 mm.

De nos jours, les PLD sont utilisés pour l’intégration de systèmes et sont une alterna-tive au ASIC (Application Specific Integrated Circuit).

Page 5: LES COMPOSANTS PROGRAMMABLES ET VHDL - … · Fichier source VHDL ... Machine d’état avec variables d’entrées asynchrones

CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 2-1

Les composants de logique programmable, plus connu sous le nom de PAL ont été in-ventés par la société MONOLITHIC MEMORIES INC.

En général, un circuit programmable est un circuit pouvant être programmé par l’utili-sateur pour réaliser une fonction logique.

La plupart des PLD (Programmable Logic Device) consiste en un réseau de ET suivi par un réseau de OU; l’un des réseaux ou les deux sont programmables.

Principe de base et notation

&>1

a b

s

&

F1

F4

F5

F8

s = (a+/F1)(/a+/F2)(b+/F3)(/b+/F4)

+ (a+/F5)(/a+/F6)(b+/F7)(/b+/F8)

Fusible intact : F = 0Fusible grillé : F =1

Une PAL non-programmée a tous les fusibles intacts

Pour simplifier la représentation du réseau de ET programmable, on laisse un seul fil connecté à l’entrée de chaque ET. Il faut bien comprendre qu’il y a autant de fils, qu’il y a de variables.

&

>1

&

a b

s

Réseau de ET programmable Réseau de OUcablé

Page 6: LES COMPOSANTS PROGRAMMABLES ET VHDL - … · Fichier source VHDL ... Machine d’état avec variables d’entrées asynchrones

CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 2-2

s= /a.b + a./b/a indique a barre

L’équation devra toujours s’écrire sous la forme de somme de produit.

Les termes produits sont des ET. Exemple : a.b (On parle de somme de "minterms" ou terme-produit).

Ensuite on fait un OU logique des termes-produits.

s est fonction de deux termes-produits

&

>1

&

a b

s

a.b

a.b

Page 7: LES COMPOSANTS PROGRAMMABLES ET VHDL - … · Fichier source VHDL ... Machine d’état avec variables d’entrées asynchrones

CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 3-1

LES PALS

Réseau de logique programmable. (Programmable Array Logic)

Principe

Toutes les pattes d’entrés du circuit sont reliées à une matrice de ET Programmable. C’est le principe de la matrice à diode. A chaque intersection de lignes et de colonnes, on peut établir une connection qui va créer un ET logique.

22v10C’était l’ un des circuits les plus utilisé, à l’instar du 7400 dans la série TTL.

• 11 pattes pour les entrées. (I1 à I11)

• 1 entrée d’horloge globale (CLK/I0) pouvant servir aussi d’entrée

• 10 pattes d’entrée-sortie. (I/O0 à I/O9)

• Chaque patte d’entrée-sortie est connecté à un buffer trois états.

Architecture du circuit8

RE

SE

AU

DE

ET

PR

OG

RA

MM

AB

LES

CLK-I/O

I1-I11

I/O0

I/O1

I/O2

i/O3

I/O4

I/O5

I/O6

I/O7

i/O8

I/O9

10

12

14

16

16

14

12

10

8

RESET

1CELLULE

LOGIQUE

1CELLULE

LOGIQUE

1CELLULE

LOGIQUE

1CELLULE

LOGIQUE

1

CELLULE

LOGIQUE

1CELLULE

LOGIQUE

1CELLULE

LOGIQUE

1CELLULE

LOGIQUE

1

CELLULE

LOGIQUE

1CELLULE

LOGIQUE

Page 8: LES COMPOSANTS PROGRAMMABLES ET VHDL - … · Fichier source VHDL ... Machine d’état avec variables d’entrées asynchrones

CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 3-2

Cellule de base

D Q

Q

1

1

0

0

1

1

0

0

0

1

S1 S0

1

&

SP

AR

Asynchronous Reset

Synchronous Preset&

&

I/O

Schéma interne partiel du 22v10

0 3

&

&

&

&

&

&

&

&

&

OU

CABLE

AR SP

&

&

CLK/I0

I1

VERS AUTRES CELLULES

VERS AUTRES LIGNES DU

RESEAU PROGRAMMABLE DE ET

I/O

1

9

Page 9: LES COMPOSANTS PROGRAMMABLES ET VHDL - … · Fichier source VHDL ... Machine d’état avec variables d’entrées asynchrones

CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 3-3

29MA16

La PAL 29MA16 est optimisée pour les applications asynchrones.• 4 pattes d’entrées dédicacées• 16 pattes d’entrée-sortie• 1 patte d’entrée d’horloge• 1 patte d’entrée à double usage: patte d’entrée ou patte de contrôle global des amplicateurs de sortie (état trois-états ou non)• 16 Cellules

La matrice de ET comprend 56 colonnes et 178 lignes. 4 x 2 colonnes provenant des entrées dédicacées16 x 2 colonnes provenant des macrocellules avec 2 retours8 x 2 colonnes provenant des macrocellules a 1 retour1 x 2 colonnes provenant de l’entrée I/OELes 178 lignes sont composés de 112 lignes de termes-produits disponibles pour la logique, 66 lignes sont utilisées pour les signaux de contrôle.

Cellule de base

Les signaux PRESET, RESET et CLK/LE sont programmables individuellement pour cha-que MC .

La sortie de chaque MC passe par un buffeur trois-états avant d’être accessible sur la patte du composant. Chaque buffeur peut être contrôlé individuellement ou globalement ou être enable ou disable en permanence.

D Q

Q

1

1

0

0

1

1

0

0

0

S1 S0

1

ARAsynchronous Reset

&

I/O

VCC

0

1

1

&1

1

0

0

1

1

0

0

&

&RESET

ASYNCHRONE INDIVIDUEL

CLOCK COMMUNE Patte CLK/LE

CLOCK INDIVIDUELLE

PRESET

RESET

VERS LE RESEAUDE ET

&OE INDIVIDUEL

OE COMMUN Patte I/OE

P0

P7 A P11

&Preset Asynchrone

Page 10: LES COMPOSANTS PROGRAMMABLES ET VHDL - … · Fichier source VHDL ... Machine d’état avec variables d’entrées asynchrones

CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 4-1

LES COMPOSANTS ALTERALes composants Altera se classent dans la catégorie des CPLD (Complexe PLD). Con-trairement au FPGA qui utilisent des lignes de routage segmentées par l’étape de rou-tage, les CPLD utilisent des lignes de connections continues. L’étape de routage inter-connecte les structures internes avec ces lignes.

Composants de technologie CMOS.

Les différentes familles

• ClassicTP EPROM

• MAX 5000 TP EPROM

• MAX 7000 T-P EEPROM

• MAX 9000 T-P EEPROM

• FLEX 6000 LUT SRAM

• FLEX 8000 LUT SRAM

• FLEX 10K LUT SRAM

Multiple Array matriX

Flexible Logic Element matriX

EPLD Eraseable Programmable Logic Devices

Composant de logique reprogrammable C’est grace à la technologie CMOS EPROM que ces composants ont vu le jour[Altera Application Handbook July 1988]

Page 11: LES COMPOSANTS PROGRAMMABLES ET VHDL - … · Fichier source VHDL ... Machine d’état avec variables d’entrées asynchrones

CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 4-2

MAX 7000

Programmable sur cartes avec la série S, les composants de la famille MAX7000 comprennent de 32 à 256 Cellules de Base. Le temps de transfert entre le signal d’entrée et le signal de sortie sans registre varie de 5 ns à 7,5 ns suivant les circuits.

Les circuits sont reprogrammables une centaine de fois

Composants de la famille Max 7000

7032 7064 7096 7128 7160 7192 7256

MC 32 64 96 128 160 192 256

BLOCS 2 4 6 8 10 12 16

E/S 36 68 76 100 104 124 164

tPD 6 5 7.5 6 6 7.5 7.5

GCLRn

GCLK1

OE2/GCLK2

TMS

TDI

TCK

I/O

MAX7xxxS

TDO

5 Termes-produits par macrocellule (MC)16 Termes-produits supplémentaires disponibles

1 terme-produit partageable disponible par MC

Page 12: LES COMPOSANTS PROGRAMMABLES ET VHDL - … · Fichier source VHDL ... Machine d’état avec variables d’entrées asynchrones

CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 4-3

Architecture des circuits

GCLK1

GCLK2

OE1

GCLR

LABI/OPIA

36

6-16

6-16

6-16

RE

SE

AU

D’IN

TE

RC

ON

NE

XIO

NS

PR

OG

RA

MM

AB

LES LAB B

LAB C LAB D

E/S

BU

FF

ER

3 E

tats

E/S E/S

E/S16 MC

Page 13: LES COMPOSANTS PROGRAMMABLES ET VHDL - … · Fichier source VHDL ... Machine d’état avec variables d’entrées asynchrones

CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 4-4

Cellule de base

MA

TR

ICE

DE

SE

LEC

TIO

N

DE

S T

ER

ME

S-P

RO

DU

ITS

SELECTION

CLEAR

SELECTION

ENABLE/CLOCK

CLEAR GLOBAL

CLOCKS GLOBALS

PRND

ENA

CLRN

Q

=1

VCC

Vers PIA

1

Vient de la patte E/S

Vers E/S

2

Elément d’entrée-sortie

VCC

GND

Vers Autres Pattes E/S

Drain-ouvert

Slew-rate

Vient Cellule

Entrée rapidede la cellule

Vers PIA

PIA

Page 14: LES COMPOSANTS PROGRAMMABLES ET VHDL - … · Fichier source VHDL ... Machine d’état avec variables d’entrées asynchrones

CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 4-5

Prédiction des délais et analyse temporelle.

L’analyse des temps après placement-routage est réalisée soit avec le simulateur maxplus2, soit avec un simulateur du commerce, soit avec le modéle de temps suivant:

Delai

Entree

t IN Delai

PIA

tPIA

Délai

Reseau

Porte

tLAD

Délai

Signaux

Contrôles

Bascule

Terme-Produits

d’expansion

Bascule

tSU

tH

tPRE

tCLR

tRD

tCOMB

tFSU

tFH

tOD1

tOD2

tOD3

tXZ

tZX1

tZX2

tZX3

Sortie

Délai

Délai

Entrée

Rapide E/StIO

Délai

Délai

tFIN

tGLOB

tLAC

tIC

tEN

tSEXP

Délai

Groupe

Termes-Produits

Parallele

Délai

Délai

Délai

Interne

Output-enable

Buffeur 3 etats

tIOE

tPEXP

Tous les délais peuvent être calculés avec ce modèle.

Page 15: LES COMPOSANTS PROGRAMMABLES ET VHDL - … · Fichier source VHDL ... Machine d’état avec variables d’entrées asynchrones

CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 4-6

COMPOSANTS DE LA FAMILLE FLEX 8000

FLEX 8000

Les composants de la famille Flex8k comprennent de 208 Cellules de base à 1296. Ces com-posants sont configurables, c’est à dire qu’il est nécessaire de les configurer après la mise sous tension. On configure ces composants avec une EPROM série. On peut le configurer avec un controleur.

Composants de la famille Flex 8000

8282 8452 8636 8820 81188 81500

BASCULES 282 452 636 820 1188 1500

LABS 26 42 63 84 126 162

E/S 78 120 136 152 184 208

IN1

IN2

IN3

IN4

I/O

FLEX8K

CONFIGURATION

Page 16: LES COMPOSANTS PROGRAMMABLES ET VHDL - … · Fichier source VHDL ... Machine d’état avec variables d’entrées asynchrones

CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 4-7

Architecture

IOE

IOE

IOE

IOE

168 Interconnections Rapides (168 Pistes métalliques de connections)Lignes

Co

lon

ne

s!6

Pis

tes

d’in

terc

onne

ctio

ns R

apid

es

LAB

Bloc

Reseau

Logique

(8 LE)

248

8 16

8x2

Mat

rice

d’in

terc

onne

xion

loca

le

IOEIOE

IOE IOE

1

8

Page 17: LES COMPOSANTS PROGRAMMABLES ET VHDL - … · Fichier source VHDL ... Machine d’état avec variables d’entrées asynchrones

CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 4-8

Cellule de base

TABLE

LOOK-UP

CHAINE

DE

CASCADE

Logic

Clear/Preset

PRN

CLRN

CARRY-IN

CARRY-OUT

CASCADE-IN

CASCADE-OUT

DATA1

DATA2

DATA3

DATA4

LABCTRL1

LABCTRL2

LABCTRL3

LABCTRL4

CLOCK

SELECT

LE-OUT

QD

CLKCH

AIN

EC

AR

RY

Elément d’entrée-sortie

CL

R0

CLR

1/O

E0

CLK

0

CL

K1

/OE

1

OE

2

OE

3

OE

[9..4

]

6

D

ControldeSlew-rate

8150

0 S

eule

men

t

VersLigneset Colonnes

Vientdes Lignesetcolonnes

}

L’élément d’entrée-sortie contient un buffer bidirectionel et un registre qui peut-être utilisé soit comme registre d’entrée ou comme registre de sortie.

Page 18: LES COMPOSANTS PROGRAMMABLES ET VHDL - … · Fichier source VHDL ... Machine d’état avec variables d’entrées asynchrones

CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 4-9

FLEX10KE

La famille 10K a la particularité de contenir de la RAM. Cela permet la mise en oeuvre de ram, de fifo dans votre circuit. La cellule de base et l’élément d’entrée-sortie ont été amé-liorés. On dispose de deux entrées globales d’horloge et de quatre entrées dédicacées. Ces entrées utilisent des pistes de routage spéciales avec des délais et un "skew" plus faibles que les pistes d’interconnections rapides.

Les composants de la famille 10ke

10K30 10K50 10K100 10K130 10k200

BASCULES 1728 2880 4992 6656

LABS 216 360 624 832

E/S 246 310 406 470

EAB 6 10 12 16

BIT RAM 12288 20480 24576 32768

DEV_CLRN

DEV_OE

CLK1

CLK2

IN1

IN2

IN3

IN4

I/O

CONFIGURATION

Page 19: LES COMPOSANTS PROGRAMMABLES ET VHDL - … · Fichier source VHDL ... Machine d’état avec variables d’entrées asynchrones

CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 4-10

168 Interconnections Rapides

(168 Pistes métalliques de connections)

Lignes

Co

lon

ne

s!6

Pis

tes

d’in

terc

onne

ctio

ns R

apid

es

LAB

Bloc

Reseau

Logique

(8 LE)

Ma

tric

ed’

inte

rcon

nexi

onlo

cale

IOE

IOE

IOE

IOE

IOE

IOE

IOE

IOE

IOE

IOE

IOE

IOE

IOE

IOE

IOE

IOE

IOE

IOE

IOE

IOE

EAB

RAM avecRegistred’E/S

LAB

Bloc

Reseau

Logique

(8 LE)

Mat

rice

d’in

terc

onne

xion

loca

le

LAB

BlocReseau

Logique

(8 LE)

Ma

tric

ed’

inte

rcon

nexi

onlo

cale

LAB

BlocReseau

Logique

(8 LE)

Ma

tric

ed’

inte

rcon

nexi

onlo

cale

EAB

RAM avecRegistred’E/S

Page 20: LES COMPOSANTS PROGRAMMABLES ET VHDL - … · Fichier source VHDL ... Machine d’état avec variables d’entrées asynchrones

CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 4-11

Cellule de base

TABLE

LOOK-UP

CHAINE

DE

CASCADE

Logic

Clear/Preset

PRN

CLRN

CARRY-IN

CARRY-OUT

CASCADE-IN

CASCADE-OUT

DATA1

DATA2

DATA3

DATA4

LABCTRL1

LABCTRL2

LABCTRL3

LABCTRL4

CLOCKSELECT

QD

CLKCH

AIN

EC

AR

RY

Chip-WideReset

ENA

Vers Pistesrapidesd’interconnections

Vers interconnectionslocales au LAB

1

Elément d’entrée-sortie

8

D

ControldeSlew-rate

VersLigneset Colonnes

Vientdes Lignesetcolonnes

Patte Reset duComposant

CLRn[1..0]

ENA[5..0]Vientdes Lignesetcolonnes

CLK[1..0]

CLK[3..0]

Open-DrainOutput

PatteOE[DEV_OE]Vient

des Lignesetcolonnes

OE[7..0]

2 Entréesd’horlogedédicacées

Bus de contrôle

ENA

Page 21: LES COMPOSANTS PROGRAMMABLES ET VHDL - … · Fichier source VHDL ... Machine d’état avec variables d’entrées asynchrones

CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 4-12

Mémoire double port

DATA_IN

ADRESSES

WE

D Q

QINTER

CONN

ECTIO

NS LO

CALE

S A L’

EAB

LIGNES D’INTERCONNECTIONS

COLO

NNES

D’IN

TERC

ONN

ECTI

ONS

D QDATA_OUT

256X16512X81024X42048X2

EPF10K50 10 EABEPF10K30 6 EAB

D Q

D Q

D Q

READ

WRITEADRESSES

ENA

ENA

ENA

READ

GENERATEURIMPULSIONECRITURE

ENA

ENA

D wren

inclken

inclk

outclk

inclken

outclken

inclken

inclken

ENABLE

rden

wren

outclk

inclk

inclken

outclken

outclk

Entrees DédicacéesClocks Dédicacées

Page 22: LES COMPOSANTS PROGRAMMABLES ET VHDL - … · Fichier source VHDL ... Machine d’état avec variables d’entrées asynchrones

CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 5-1

Page 23: LES COMPOSANTS PROGRAMMABLES ET VHDL - … · Fichier source VHDL ... Machine d’état avec variables d’entrées asynchrones

CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 5-2

Porte ET

sa

bc &

Fonction booléenne

s = a . !b . cs égal a et b barre et c

Fichier source VHDLLIBRARY ieee ;USE ieee.std_logic_1164.all ;

ENTITY combinatoire ISPORT(

a : IN STD_LOGIC ;b : IN STD_LOGIC ;c : IN STD_LOGIC ;s : OUT STD_LOGIC

) ;END combinatoire ;

ARCHITECTURE simple OF combinatoire IS

BEGIN

s <= a AND NOT b AND c ;

END simple ;

Résultat de la simulation

Page 24: LES COMPOSANTS PROGRAMMABLES ET VHDL - … · Fichier source VHDL ... Machine d’état avec variables d’entrées asynchrones

CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 5-3

Et - Exemple 2

Traduction littérale de l’instruction VHDLs est égal à 1 quand a égal 1 et b égal 0 et c égal 1 autrement s est égal à 0

Fichier source VHDL

LIBRARY ieee ;USE ieee.std_logic_1164.all ;

ENTITY combinatoire ISPORT(

a : IN STD_LOGIC ;b : IN STD_LOGIC ;c : IN STD_LOGIC ;s : OUT STD_LOGIC

) ;END combinatoire ;

ARCHITECTURE simple OF combinatoire IS

BEGIN

s <= ’1’ WHEN a=’1’ AND b=’0’ AND c=’1’ ELSE ’0’ ;

END simple ;

Fichier rapport

s = LCELL( _EQ001 $ GND); _EQ001 = a & !b & c;

Page 25: LES COMPOSANTS PROGRAMMABLES ET VHDL - … · Fichier source VHDL ... Machine d’état avec variables d’entrées asynchrones

CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 5-4

Porte ET- Exemple 3

Traduction littérale de l’instruction VHDL

Chaque fois qu’il y a un changement d’état d’une des variables a, b et csi a égal 1 et b égal 0 et c égal 1 alors

s égal (reçoit) 1autrement s égal 0

Fichier source VHDL

LIBRARY ieee ;USE ieee.std_logic_1164.all ;

ENTITY combinatoire ISPORT(

a : IN STD_LOGIC ;b : IN STD_LOGIC ;c : IN STD_LOGIC ;s : OUT STD_LOGIC

) ;END combinatoire ;

ARCHITECTURE simple OF combinatoire IS

BEGIN

PROCESS (a,b,c)BEGIN

IF a = ’1’ AND b = ’0’ AND c = ’1’ THENs <= ’1’ ;

ELSEs <= ’0’ ;

END IF ;END PROCESS ;

END simple ;

Résultat de la synthèse Altera

s = LCELL( _EQ001 $ GND);_EQ001 = a & !b & c;

Page 26: LES COMPOSANTS PROGRAMMABLES ET VHDL - … · Fichier source VHDL ... Machine d’état avec variables d’entrées asynchrones

a

b

y

s

1

CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 5-5

Multiplexeur 2 Bits vers 1 Bit

Chaque fois qu’il y a un changement d’état d’une des variables a, b et ssi s égal 1 alors

y égal aautrement y égal b

LIBRARY ieee ;USE ieee.std_logic_1164.all ;

ENTITY multiplexeur2x1 ISPORT(

a : IN STD_LOGIC ;b : IN STD_LOGIC ;s : IN STD_LOGIC ;y : OUT STD_LOGIC

) ;END multiplexeur2x1 ;

ARCHITECTURE if_then_else OF multiplexeur2x1 IS

BEGIN

PROCESS (a,b,s)BEGIN

IF s = ’1’ THENy <= a ;

ELSEy <= b ;

END IF ;END PROCESS ;

END if_then_else ;

Résultat de la synthèse Altera

y = LCELL( _EQ001 $ GND); _EQ001 = a & s # b & !s;

Page 27: LES COMPOSANTS PROGRAMMABLES ET VHDL - … · Fichier source VHDL ... Machine d’état avec variables d’entrées asynchrones

LIBRARY ieee ;USE ieee.std_logic_1164.all ;

ENTITY multiplexeur8vers1en ISPORT(

a : IN STD_LOGIC ;b : IN STD_LOGIC ;c : IN STD_LOGIC ;d : IN STD_LOGIC ;e : IN STD_LOGIC ;f : IN STD_LOGIC ;g : IN STD_LOGIC ;h : IN STD_LOGIC ;s : IN STD_LOGIC_VECTOR(2 DOWNTO 0) ;ena : IN STD_LOGIC ;y : OUT STD_LOGIC ) ;

END multiplexeur8vers1en ;

ARCHITECTURE instruction_case OF multiplexeur8vers1en IS

BEGIN

PROCESS (a,b,c,d,e,f,g,h,s,ena)BEGIN

IF ena = ’1’ THENCASE s IS

WHEN "000" =>y <= a ;

WHEN "001" =>y <= b ;

WHEN "010" =>y <= c ;

WHEN "011" =>y <= d ;

WHEN "100" =>y <= e ;

WHEN "101" =>y <= f ;

WHEN "110" =>y <= g ;

WHEN "111" =>y <= h ;

WHEN OTHERS =>y <= ’0’ ;

END CASE ;ELSE

y <= ’Z’ ;END IF ;

END PROCESS ;

END

LIBRARY ieee ;USE ieee.std_logic_1164.all ;

ENTITY multiplexeur8vers1en ISPORT(

a : IN STD_LOGIC ;b : IN STD_LOGIC ;c : IN STD_LOGIC ;d : IN STD_LOGIC ;e : IN STD_LOGIC ;f : IN STD_LOGIC ;g : IN STD_LOGIC ;h : IN STD_LOGIC ;s : IN STD_LOGIC_VECTOR(2 DOWNTO 0) ;ena : IN STD_LOGIC ;y : OUT STD_LOGIC

) ;END multiplexeur8vers1en ;

ARCHITECTURE instruction_select OF multiplexeur8vers1en IS

SIGNAL n1 : STD_LOGIC ;

BEGIN

WITH s SELECTn1 <= a WHEN "000",

b WHEN "001",c WHEN "010",d WHEN "011",e WHEN "100",f WHEN "101",g WHEN "110",h WHEN "111", ’0’ WHEN OTHERS ;

y <= n1 WHEN ena=’1’ ELSE ’Z’ ;END instruction_select ;

Résultat de la synthèse Altera

y = TRI(_LC049, ena);_LC049 = LCELL( _EQ001 $ VCC); _EQ001 = _X001 & _X002 & _X003 & _X004 & _X005 & _X006 & _X007 & _X008; _X001 = EXP( d & ena & s0 & s1 & !s2); _X002 = EXP( ena & h & s0 & s1 & s2); _X003 = EXP( ena & f & s0 & !s1 & s2); _X004 = EXP( ena & g & !s0 & s1 & s2); _X005 = EXP( b & ena & s0 & !s1 & !s2); _X006 = EXP( c & ena & !s0 & s1 & !s2); _X007 = EXP( e & ena & !s0 & !s1 & s2); _X008 = EXP( a & ena & !s0 & !s1 & !s2);

CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 5-6

Multiplexeur de 8 bits vers 1 bit avec signal de validation

Page 28: LES COMPOSANTS PROGRAMMABLES ET VHDL - … · Fichier source VHDL ... Machine d’état avec variables d’entrées asynchrones

CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 5-7

Simulation

Page 29: LES COMPOSANTS PROGRAMMABLES ET VHDL - … · Fichier source VHDL ... Machine d’état avec variables d’entrées asynchrones

CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 5-8

Utilisation de la logique trois états

LIBRARY IEEE;USE ieee.std_logic_1164.ALL;

ENTITY bus3etats IS PORT( my_in : IN STD_LOGIC_VECTOR(7 DOWNTO 0); sel : IN STD_LOGIC ; my_out : OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END bus3etats ;

ARCHITECTURE simple OF bus3etats IS

BEGIN

my_out <= "ZZZZZZZZ" WHEN (sel = ’1’) ELSE my_in;

END simple ;

Extrait du fichier rapport de maxplus2 .rpt~my_out0 = TRI(_LC126, !sel);_LC126 = LCELL( my_in0 $ GND);

Simulation

Page 30: LES COMPOSANTS PROGRAMMABLES ET VHDL - … · Fichier source VHDL ... Machine d’état avec variables d’entrées asynchrones

CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 6-1

LOGIQUE SEQUENCIELLE

Tous les circuits de logiques séquencielles utilisent un ou plusieurs regis-tres.

Les machines d’états sont un moyen très puissant de décrire de la logique séquencielle.

Les compteurs, les registres à décalage font aussi partie de la famille "logi-que séquencielle"

Implémentation de registres

Les instructions VHDL suivantes inférent des registres, lorsqu’elles sont dans le corps d’un pro-cessus

Instruction IF signal_d’horloge’EVENT AND signal_d’horloge=’1’ THENInstruction WAIT UNTIL signal_d’horloge’EVENT AND signal_d’horloge=’1’

Page 31: LES COMPOSANTS PROGRAMMABLES ET VHDL - … · Fichier source VHDL ... Machine d’état avec variables d’entrées asynchrones

d

clk

clrn

prnq

a

clk

reset

s

DFF

Fichier source

LIBRARY ieee ;USE ieee.std_logic_1164.all ;

ENTITY registre ISPORT(

a : IN STD_LOGIC ;clk : IN STD_LOGIC ;reset : IN STD_LOGIC ;s : OUT STD_LOGIC

) ;END registre ;

ARCHITECTURE processus OF registre IS

BEGIN

PROCESS (reset,clk)BEGIN

IF reset = ’0’ THENs <= ’0’ ;

ELSIF clk’EVENT AND clk = ’1’ THENs <= a ;

END IF ;END PROCESS ;

END processus ;

La liste de sensibilité du processus comprend les signaux reset et clk. A chaque changement d’état sur un de ces deux signaux, le processus va être activé. L’instruction IF [ou ELSIF] clk’EVENT AND clk = ’1’ est utilisée pour décrire de la logique synchrone.

CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 6-2

Bascule d

Résultat de la synthèse

s = DFFE( a $ GND, GLOBAL( clk), GLOBAL( reset), VCC, VCC);

Simulation

Page 32: LES COMPOSANTS PROGRAMMABLES ET VHDL - … · Fichier source VHDL ... Machine d’état avec variables d’entrées asynchrones

CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 6-3

un composant de la librairie en précisant pour chaque port du composant les signaux connectés.

Instanciation d’une bascule dffe

LIBRARY ieee ;USE ieee.std_logic_1164.all ;

LIBRARY altera ;USE altera.maxplus2.all ;

ENTITY registre ISPORT(

a : IN STD_LOGIC ;clk : IN STD_LOGIC ;ena : IN STD_LOGIC ;preset : IN STD_LOGIC ;reset : IN STD_LOGIC ;s : OUT STD_LOGIC

) ;END registre ;

ARCHITECTURE instanciation OF registre IS

BEGIN

instance1 : dffePORT MAP (d => a ,

clk => clk ,ena => ena ,prn => preset ,clrn => reset ,q => s ) ;

END instanciation ;

Résultat de la synthèse

s = DFFE( a $ GND, GLOBAL( clk), GLOBAL( reset), preset, ena);

Page 33: LES COMPOSANTS PROGRAMMABLES ET VHDL - … · Fichier source VHDL ... Machine d’état avec variables d’entrées asynchrones

CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 6-4

Compteur

LIBRARY ieee;USE ieee.std_logic_signed.all;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;

ENTITY decompteur IS PORT(

clear : IN STD_LOGIC ;load : IN STD_LOGIC ;clk : IN STD_LOGIC ;din : IN STD_LOGIC_VECTOR (7 DOWNTO 0) ;zero : OUT STD_LOGIC

);END decompteur ;

ARCHITECTURE fonctionnelle OF decompteur IS

SIGNAL cpt : STD_LOGIC_VECTOR (7 DOWNTO 0) ;

BEGIN

-- Process PROCESS (clk,clear)BEGIN

IF clear = ’1’ THENcpt <= (OTHERS => ’0’) ;

ELSIF clk’event and clk = ’1’ THENIF (load = ’1’) THEN

cpt <= din ;ELSE

cpt <= cpt - 1 ;END IF ;

END IF ;END PROCESS ;

zero <= ’1’ WHEN cpt = 0 ELSE ’0’ ;

END fonctionnelle ;

Résultat de la synthèse

Version 9.01 07/30/98

EPM7128ELC84-7 11 1 0 16 0 12 %

INFO: Signal ’clk’ chosen for auto global Clock

** FILE HIERARCHY **

|LPM_ADD_SUB:99||LPM_ADD_SUB:99|addcore:adder||LPM_ADD_SUB:99|altshift:result_ext_latency_ffs||LPM_ADD_SUB:99|altshift:carry_ext_latency_ffs||LPM_ADD_SUB:99|altshift:oflow_ext_latency_ffs|

Page 34: LES COMPOSANTS PROGRAMMABLES ET VHDL - … · Fichier source VHDL ... Machine d’état avec variables d’entrées asynchrones

CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 6-5

Compteur avec instanciation lpm_counter

LIBRARY ieee;USE ieee.std_logic_1164.all;

LIBRARY lpm ;USE lpm.lpm_components.all ;

ENTITY decompteur IS PORT(

clear : IN STD_LOGIC ;load : IN STD_LOGIC ;clk : IN STD_LOGIC ;din : IN STD_LOGIC_VECTOR (3 DOWNTO 0) ;zero : OUT STD_LOGIC

);END decompteur ;

ARCHITECTURE fonctionnelle OF decompteur IS

SIGNAL egal : STD_LOGIC_VECTOR (15 DOWNTO 0) ;

BEGIN

instance1 : lpm_counterGENERIC MAP (

LPM_WIDTH => 8,LPM_DIRECTION => "DOWN"

)PORT MAP (

clock => clk,aclr => clear,sload => load,data => din,eq => egal

) ;

zero <= egal(0) ;

END fonctionnelle ;

Page 35: LES COMPOSANTS PROGRAMMABLES ET VHDL - … · Fichier source VHDL ... Machine d’état avec variables d’entrées asynchrones

arret

marche

LIBRARY ieee;USE ieee.std_logic_1164.all;

ENTITY machine IS PORT (clk : IN BIT ;

rst : IN BIT ;sortie : OUT BIT) ;

END machine ;

ARCHITECTURE fonctionnelle OF machine IS

TYPE type_etat IS (arret,marche) ;SIGNAL etat : type_etat ;

BEGIN

PROCESS (clk,rst)begin

IF rst = ’1’ THENetat <= arret ;

ELSIF (clk’event and clk = ’1’) THENCASE etat IS

WHEN arret =>etat <= marche ;

WHEN marche =>etat <= arret ;

WHEN others =>etat <= arret ;

END CASE ;END IF ;

END PROCESS ;

sortie <= ’1’ WHEN etat=marche ELSE ’0’ ;

END fonctionnelle ;

Résultat de la synthèse

CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 6-6

Description de machines d’états

** STATE MACHINE ASSIGNMENTS **

etat: MACHINE OF BITS ( etat~1 ) WITH STATES ( arret = B"0", marche = B"1");

sortie = TFFE( VCC, GLOBAL( clk), !rst, VCC, VCC);

Page 36: LES COMPOSANTS PROGRAMMABLES ET VHDL - … · Fichier source VHDL ... Machine d’état avec variables d’entrées asynchrones

LIBRARY ieee;USE ieee.std_logic_1164.all;

ENTITY machine IS

PORT (clk : IN BIT ;rst : IN BIT ;ma : IN BIT ;at : IN BIT ;sortie : OUT BIT) ;

END machine ;

ARCHITECTURE fonctionnelle OF machine IS

TYPE type_etat IS (arret,marche) ;SIGNAL etat : type_etat ;

BEGIN

PROCESS (clk,rst)begin

IF rst = ’1’ THENetat <= arret ;

ELSIF (clk’event and clk = ’1’) THENCASE etat IS

WHEN arret =>IF ma=’1’ THEN

etat <= marche ;END IF ;

WHEN marche =>IF at=’1’ THEN

etat <= arret ;END IF ;

WHEN others =>etat <= arret ;

END CASE ;END IF ;

END PROCESS ;

sortie <= ’1’ WHEN etat=marche ELSE ’0’ ;

end fonctionnelle ;

at

arret

marche

ma

Résultat de la synthèse

CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 6-7

Machine d’état avec variables d’entrées asynchrones

sortie = DFFE( _EQ001 $ VCC, GLOBAL( clk), !rst, VCC, VCC); _EQ001 = at & sortie # !ma & !sortie;

Simulation

Page 37: LES COMPOSANTS PROGRAMMABLES ET VHDL - … · Fichier source VHDL ... Machine d’état avec variables d’entrées asynchrones

reset_m1

etat1_m1

etat2_m1

etat3_m1

etat4_m1

signal1

!signal1

arret

depart

signal1

CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 6-8

Machine de Moore ou de Mealy

Fichier source vhdl

LIBRARY ieee;USE ieee.std_logic_1164.all;

ENTITY machine IS

PORT (clk : IN BIT ;rst : IN BIT ;ma : IN BIT ;at : IN BIT ;e1 : IN BIT ;sortie : OUT BIT) ;

END machine ;

ARCHITECTURE fonctionnelle OF machine IS

TYPE type_etat IS (reset_m1,etat1_m1,etat2_m1,etat3_m1,etat4_m1) ;SIGNAL etat : type_etat ;

BEGIN

PROCESS (clk,rst)begin

IF rst = ’1’ THENetat <= reset_m1 ;

ELSIF (clk’event and clk = ’1’) THENCASE etat IS

WHEN reset_m1 =>IF ma=’1’ THEN

etat <= etat1_m1 ;END IF ;

WHEN etat1_m1 =>IF e1=’1’ THEN

etat <= etat2_m1 ;END IF ;

WHEN etat2_m1 =>IF e1=’0’ THEN

etat <= etat3_m1 ;END IF ;

WHEN etat3_m1 =>IF e1=’1’ THEN

etat <= etat4_m1 ;END IF ;

WHEN etat4_m1 =>IF at=’1’ THEN

etat <= reset_m1 ;END IF ;

WHEN others =>etat <= reset_m1 ;

END CASE ;END IF ;

END PROCESS ;

sortie <= ’1’ WHEN etat=etat1_m1 OR etat=etat4_m1 ELSE ’0’ ;

end fonctionnelle ;

Page 38: LES COMPOSANTS PROGRAMMABLES ET VHDL - … · Fichier source VHDL ... Machine d’état avec variables d’entrées asynchrones

CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 6-9

Résultat de la synthèse

etat: MACHINE OF BITS ( etat~3, etat~2, etat~1 ) WITH STATES ( reset_m1 = B"000", etat1_m1 = B"110", etat2_m1 = B"010", etat3_m1 = B"011", etat4_m1 = B"001");

sortie = LCELL( _EQ004 $ GND); _EQ004 = !etat~1 & etat~2 & etat~3 # etat~1 & !etat~2 & !etat~3;

On peut remarquer que l’équation booléenne de commande1 est seulement fonction des états de la machine machine1.

Simulation

tr

Page 39: LES COMPOSANTS PROGRAMMABLES ET VHDL - … · Fichier source VHDL ... Machine d’état avec variables d’entrées asynchrones

CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 6-10

l’état de la machine et d’une variable d’entrée asynchrone.Le signal commande1 étant synchrone de l’horloge, il pourra avoir un retard d’une période d’horloge dans le pire cas. Si on veut éliminer ce délai, on peut tenir compte à la fois de l’état de la machine et de l’état du signal d’entrée (respectivement depart et signal1 dans cet exemple) pour générer le signal commande1.

Les sorties de la machine sont alors asynchrones. On dit que l’on a une machine de mealy.

Souvent on a une machine de mealy sans même le savoir.

Modification de l’équation booléenne de commande1 dans le fichier VHDL.

sortie <= ’1’ WHEN (etat=reset_m1 AND ma=’1’) OR etat=etat1_m1 OR (etat=etat3_m1 AND e1=’1’) OR etat=etat4_m1 ELSE ’0’ ;

L’ équation de sortie est maintenant fonction des états de la machine d’état et de l’état des variables d’entrées

sortie = LCELL( _EQ004 $ !etat~3); _EQ004 = etat~1 & etat~2 & !etat~3 & !e1 # !etat~1 & !etat~3 & !ma # !etat~1 & etat~2;

Résultat de la simulation

Page 40: LES COMPOSANTS PROGRAMMABLES ET VHDL - … · Fichier source VHDL ... Machine d’état avec variables d’entrées asynchrones

CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 6-11