Telechargé par ABDERRAZAK CHAHOUB

µProcessors & µControlers-2022

publicité
‫بسم اهلل الرحمن الرحيم‬
µprocesseurs
& µContrôleurs
Pr Abdelmajid HAJAMI
IBIM 2022
Plan

Electronique numérique
 Rappels
des bases de l’électronique numérique
 Langage

VHDL et conception de circuits
Microprocesseur
 Notions
de base sur les microprocesseurs
 Système à microprocesseur
 Etude d’un microprocesseur 16 bits
 Techniques de programmation

Microcontrôleurs
 Architecture
d’un microcontrôleur
 Microcontrôleur 68HC11.
Pr. Abdelmajid HAJAMI
2
Evaluation

Contrôles Continus
 Devoirs
 Travaux
de recherche
 Exposés
 assiduité
Pr. Abdelmajid HAJAMI

Travaux pratiques

Absence :
3
Règles de travail
Pr. Abdelmajid HAJAMI

Désigner un représentant de classe

Durée de la séance : De 9h00 à 12h00. Pause de 10 min.

Moyens de communication (décisions):

Contact direct en classe (pas dans les couloires)

Email du groupe

Email du représentant

Pas de téléphone

Retard tolérable de 10min

Respect des RDV (changement, remise des travaux, …)
4
Electronique numérique
Rappels
Pr. Abdelmajid HAJAMI
5
Électronique
Partie de la physique appliquée,
traitant de la mise en forme et de
la gestion des signaux électriques,
permettant de transmettre/recevoir
mais aussi traiter et mémoriser
des informations
Pr. Abdelmajid HAJAMI
6
Électronique
Analogique

La discipline s’intéresse au
traitement
continu
des
signaux analogiques, c’est-à-dire
ceux évoluant d’une façon
continue dans le temps et
considérés comme tels
Pr. Abdelmajid HAJAMI
Numérique

s’intéresse au traitement des
signaux dont l’espace de valeurs
est discret. Ainsi, le nombre de
valeurs que peuvent prendre ces
signaux est limité. Celles-ci sont
codées
par
des nombres binaires.
7
Électronique numérique

En numérique, les composants électroniques
actifs (Diodes et transistors) fonctionnent en
régime de commutation (bloqué ; saturé = fermé ;
ouvert)
Pr. Abdelmajid HAJAMI
8
Électronique numérique

Portes logiques
Les portes logiques sont réalisées à partir de composants électroniques
élémentaires (Diodes, Résistances, Transistors),
Pr. Abdelmajid HAJAMI
9
Électronique numérique

Technologies des portes logiques
Pr. Abdelmajid HAJAMI
TTL
CMOS
Conception
- Bipolaire
+ FET
temps propagation
+ (10 ns)
- (40 ns)
consommation
- (2 mw)
+ (10 nw)
Alimentation
- (0-5v)
+ (3-18v)
Sortance
- (10)
+ (50)
10
Électronique numérique

Portes logiques trois états
En plus des états Haut (1 logique) et Bas (0 logique) , ces portes peuvent être
dans un troisième état appelé Haute Impédance où elles sont considérée comme
un circuit ouvert.
Entrées
Porte logique
Commande
Pr. Abdelmajid HAJAMI
Sortie
‘0’ : Normale
 ‘1’ : Haute impédance
11
Électronique numérique

Portes logiques trois états
En plus des états Haut (1 logique) et
Bas (0 logique) , ces portes peuvent
être dans un troisième état appelé
Haute Impédance où elles sont
considérée comme un circuit ouvert.
Pr. Abdelmajid HAJAMI
12
Électronique numérique

Circuits logiques
Ils réalisent des fonctions logiques en faisant appel à des portes logiques
X
Y
z
Circuit
logique
S
X
Y
S
z
Circuit logique
S=f(X,Y,Z)
Pr. Abdelmajid HAJAMI
13
Électronique numérique
Circuits logiques
Circuits combinatoires

Les états des sorties des circuits
dépendent linéairement des états
des entrées,
Circuits séquentiels

L’état actuel des sorties dépend de
leurs anciens états et des états actuel
des entrées

Additionneur, soustracteur

Bascules : D, RS, T, JK

Codeurs, décodeurs

Compteurs : synchrones, asynchrones

Multiplexeurs, démultiplexeurs

Registres à décalages

UAL

Mémoires

…
Pr. Abdelmajid HAJAMI
14
Électronique numérique

Circuits combinatoires : Additionneur complet
Ai
Bi
Ci-1
Table de vérité
AiBi
Σi
Σ
Ci
retenue
A
B
Ci-1 Σ
C
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
0
0
1
0
1
1
1
0
1
1
0
1
0
0
1
00 01 11
10
0
0
1
0
1
1
1
0
1
0
Ci-1
logigramme
Pr. Abdelmajid HAJAMI
15
Électronique numérique

Circuits combinatoires : Additionneur complet 5 bits
A4
Pr. Abdelmajid HAJAMI
S2
S3
S4
Add
complet
n° 2
Add
complet
n° 3
Add
complet
n° 4
C
C3
C4
C
B2
B3
B4
A3
C1
C2
Add
complet
n° 0
Add
complet
n° 1
C0
S0
S1
A2
B0
B1
A1
A0
16
Électronique numérique

Circuits combinatoires : Multiplexage

Le multiplexage est un procédé qui permet de transmettre sur une seule ligne des
informations en provenance de plusieurs sources ou à destination de plusieurs cibles.
X0
X1
X2
Y
X3
B
A
Le démultiplexeur réalise le travail inverse - 
Pr. Abdelmajid HAJAMI
17
Électronique numérique

Circuits combinatoires : Multiplexage

Considérons un multiplexeur à quatre entrées, donc deux lignes d'adressage, et une ligne
de validation.
E
X0
X1
X2
Y
X3
B
Pr. Abdelmajid HAJAMI
A
18
Électronique numérique

Circuits combinatoires : Multiplexage
Pr. Abdelmajid HAJAMI
19
Électronique numérique. TDs

Systèmes de numération :

Faites les changements de bases suivants:
N=100111/2= ? /10
N=41/8= ? /10
33
N=1F/16= ? /10
31
N=19/10 = ? /2
10011
N=125/10 = ? /8
N=475/10 = ? /16
N=765/8= ? /2
N=7BF/16= ? /2
Pr. Abdelmajid HAJAMI
39
175
1DB
111110101
11110111111
20
Électronique numérique. TDs

Systèmes de numération :

Calculer les résultats des opérations arithmétiques suivantes:

1 0 0 10 1 + 1 1 1 1 1 1 = ?

1011101-101110=?

1001 x 101=?

11011 ÷ 111=?
11011 111
-1111
11
01101
111
0110
Pr. Abdelmajid HAJAMI
1 0 0 11 0 1
+111111
1100100
1001
x
101
1001
0000.
1001.
101101
1011101
- 1 11 01 11 1 1 0
0101111
21
Électronique numérique

Circuits séquentiels: Bascule R.S.T ou R.S.Clock
La bascule R.S.T. est une bascule pour laquelle les entrées S et R ne sont prises en
compte qu'en coïncidence avec un signal de commande. Ce signal peut être fourni
par une horloge,
Les valeurs de S et R ne prennent effet que pendant les états actifs de Clk.
Pr. Abdelmajid HAJAMI
22
Électronique numérique

Circuits séquentiels:
Bascule JK
La bascule JK permet de lever l'ambiguïté qui existe dans la table de la bascule SR.
Les entrées asynchrones Pr (Preset) et Cr (Clear) permettent d'assigner l'état initial de
la bascule, par exemple juste après la mise sous tension pour éviter tout aléa.
Pr. Abdelmajid HAJAMI
23
Électronique numérique

Circuits séquentiels: Compteur asynchrone

Un compteur asynchrone est constitué de n bascules J-K fonctionnant en mode T.
Le signal d'horloge n'est reçu que par le premier étage .

Pour chacune des autres bascules le signal d'horloge est fourni par une sortie de la
bascule de rang immédiatement inférieur.
Pr. Abdelmajid HAJAMI
24
Électronique numérique

Circuits séquentiels: Compteur asynchrone
Pr. Abdelmajid HAJAMI
25
Électronique numérique

Circuits séquentiels: Compteur asynchrone à cycle incomplet
On peut souhaiter compter jusqu'à un nombre N qui ne soit pas une puissance de 2, par
exemple 10 (système décimal).
Pour cela on utilise un compteur de n bascules, tel que 2n > N. On lui ajoute un
asservissement de l'entrée Clear pour remettre le compteur à zéro tous les N coups.
Pr. Abdelmajid HAJAMI
26
Électronique numérique

Circuits séquentiels: Registre de mémorisation
Un registre permet la mémorisation de n bits. Il est donc constitué de n bascules,
mémorisant chacune un bit.
La figure suivante donne un exemple de registre 4 bits réalisé avec quatre bascules D.
Pr. Abdelmajid HAJAMI
27
Électronique numérique

Circuits séquentiels:
Registre à décalage
Dans un registre à décalage les bascules sont interconnectées de façon à ce que l'état logique de
la bascule de rang i puisse être transmis à la bascule de rang i+1 (ou i-1) quand un signal
d'horloge est appliqué à l'ensemble des bascules.
L'information peut être chargée de deux manières dans ce type de registre: Entrée parallèle ou
Entrée série
De même l'information peut être lue en série ou en parallèle.
Pr. Abdelmajid HAJAMI
28
Électronique numérique

Circuits séquentiels:
Registre à décalage Entrée série - Sortie parallèle
La figure suivante donne un exemple de registre de 4 bits à entrée série et sortie parallèle réalisé
avec des bascules D
Pr. Abdelmajid HAJAMI
29
Électronique numérique
Registre à décalage Entrée parallèle - sortie série

Circuits séquentiels:

La figure suivante présente un exemple de registre à décalage à entrée parallèle ou série et
sortie série.

Si X = 1 l'entrée parallèle est inhibée et l'entrée série est validée.

Si X = 0 l'entrée série est bloquée par contre le chargement par l'entrée parallèle est autorisé.
Pr. Abdelmajid HAJAMI
30
Électronique numérique

Circuits séquentiels:
Registre à décalage universel
La figure suivante présente un exemple de registre à décalage universel de 4 bits.
Les diverses possibilités sont sélectionnées par les lignes commande S0 et S1.
Pr. Abdelmajid HAJAMI
31
Électronique numérique. TDs

Circuits combinatoires:

Faire l’étude et la conception d’un compteur/décodeur BCD pour afficheur 7 segments,

Le comptage se fait de 0 jusqu’à 9 (utiliser un compteur asynchrone).
Q0
Q1
Compteur Q2
Q3
a
A
b
c
B
d
Décodeur e
C
f
g
D
a
b
f
g
e
c
d
Horloge
Pr. Abdelmajid HAJAMI
32
Les Mémoires
Pr. Abdelmajid HAJAMI
33
Les mémoires

Dans un calculateur toutes les informations sont manipulées
sous une forme binaire.

Ces informations doivent en général être conservées pendant
un certain temps pour permettre leur exploitation.


Ce rôle est dévolu aux mémoires.
Nous avons déjà rencontré les registres de mémorisation,
mais ceux-ci ne sont pas adaptés aux grandes capacités de
stockage
Pr. Abdelmajid HAJAMI
34
Les mémoires
– Définitions et terminologie
Pr. Abdelmajid HAJAMI

Mémoire : On appelle mémoire, tout système permettant de conserver
une information et d'en disposer par la suite : par exemple un bit, un
octet (huit bits) ou plus généralement un mot de n bits ou Byte.

Capacité : On appelle capacité d'une mémoire le nombre de bits qu'elle
peut conserver : on l'exprime généralement en octets ou en kilooctet
(1024 octets) ou encore en mégaoctet (1024 kilooctets) ou en
gigaoctet (1024 Megaoctets).
35
Les mémoires
– Définitions et terminologie



Pr. Abdelmajid HAJAMI
Le format des données :
C’est le nombre de bits que l’on peut mémoriser par case mémoire. On
dit aussi que c’est la largeur du mot mémorisable.
Le débit :
C’est le nombre maximum d'informations lues ou écrites par seconde.
Volatilité :
Elle caractérise la permanence des informations dans la mémoire.
L'information stockée est volatile si elle risque d'être altérée par un
défaut d'alimentation électrique et non volatile dans le cas contraire.
36
Les mémoires
Cycles de fonctionnement des mémoires
Deux paramètres caractérisent la vitesse d'une mémoire.

Le temps d'accès (ta): représente le temps qui sépare une demande
de lecture de l'obtention de l'information. Pour une opération
d’écriture, c’est le temps nécessaire pour écrire l’information.

Le temps de cycle (tc): correspond à l'intervalle de temps minimum
qui sépare deux demandes successives en lecture ou écriture.
Pr. Abdelmajid HAJAMI
37
Les mémoires
Cycle de lecture
C'est le plus simple des cycles. La procédure consiste à :
1. Établir l'adresse;
2. Afficher la fonction de lecture;
3. Sélectionner le ou les boîtiers nécessaires;
Après un certain délai, l'information apparaît sur la sortie qui passe en
basse impédance. L'information reste présente jusqu'à la fin du cycle.
Pr. Abdelmajid HAJAMI
38
Les mémoires
Cycle de lecture
Pr. Abdelmajid HAJAMI
39
Les mémoires
Cycle d'écriture
La procédure d'écriture consiste à :
1. Établir l'adresse;
2. Sélectionner le ou les boîtiers nécessaires;
3. Établir la donnée sur l'entrée;
4. Établir une impulsion d'écriture.
Pr. Abdelmajid HAJAMI
40
Les mémoires
Pr. Abdelmajid HAJAMI
Cycle d'écriture
41
Les mémoires
Principe :
Entrée
R/ W
Cellule mémoire
1 bit
Sélection
‘0’ : active
‘1’ : inactive
Sortie
Cellule mémoire 1bit
Pr. Abdelmajid HAJAMI
42
Les mémoires
Principe :
Entrées
R/ W
Cellule mémoire Cellule mémoire Cellule mémoire Cellule mémoire
1 bit
1 bit
1 bit
1 bit
Sélection
Sortie
Mot mémoire de 4 bits
Pr. Abdelmajid HAJAMI
43
Les mémoires
Principe :
n entrées
mot mémoire n bits
mot mémoire n bits
Sélections
mot mémoire n bits
mot mémoire n bits
mot mémoire n bits
mot mémoire n bits
R/ W
n sorties
Mémoire de 6 mots de n bits  taille = 6*n bits
Pr. Abdelmajid HAJAMI
44
Les mémoires
Adressage / Décodage :
n E/S
k lignes de
sélection
Décodeur
1/m
m mots de n bits
m = 2k
R/ W
Pr. Abdelmajid HAJAMI
45
Les mémoires
Boîtier final :
n E/S
k lignes de
sélection
2k * n bits
R/ W
𝑪𝑺
Pr. Abdelmajid HAJAMI
46
Les mémoires
Adressage par un µProcesseur (Décodage d’adresses):
Clk
RAM
ROM
EPROM
Data Bus
Central
Unit
@ Bus
Control Bus
Parallel
I/O
Serial
I/O
CAN
Timer
• Data Bus: bus de données, pour véhiculer les données entre les éléments du système,
• @ Bus: utilisé par la Central Unit pour adresser (sélectionner) le reste des éléments du système,
• Control Bus: utilisé par la Central Unit pour controler le reste des éléments du système,
Pr. Abdelmajid HAJAMI
47
Les mémoires
Adressage par un µProcesseur (Décodage d’adresses):
Clk
RAM
ROM
EPROM
central
Unit
@ Bus
Parallel
I/O
Serial
I/O
CAN
Timer
Le but du décodeur d’adresses est de permettre la sélection des différents boîtier électroniques, en
fonction des adresses disponibles sur le bus d’adresse entre les différents composants du système
Pr. Abdelmajid HAJAMI
48
Les mémoires
Adressage par un µProcesseur (Décodage d’adresses):
Considérons un microprocesseur ayant un bus d’adresses de 16 bits et travaillant sur des données de
8 bits. Ce microprocesseur peut donc adresser 64 ko (65536= 216= 26. 210).
Notons A le bus d’adresses (16 bits) A15 à A0.
A0
Notons D le bus de données (8 bits) D7 à D0.
μP
A12
A13
A14
A15
D0
D7
R/W
Pr. Abdelmajid HAJAMI
49
Les mémoires
Adressage par un µProcesseur (Décodage d’adresses):
• Le schéma représentant les connexions d’un microprocesseur à une mémoire de capacité 8 ko
(213) et pouvant donc être adressée par un bus à 13 bits.
• Les bits qui restent permettront de sélectionner (activer) le boitier de la mémoire adressée.
A0
A12
μP
A0
A12
8KO Memory
A13
A14
A15
CS
D0
D7
D0
D7
R/W
Pr. Abdelmajid HAJAMI
50
Les mémoires
Adressage par un µProcesseur (Décodage d’adresses):
• Et si l’on veut augmenter la taille de la mémoire ?
A0
A12
μP
A0
A12
8KO Memory
A0
A12
8KO Memory 2
A0
A12
8KO Memory 3
A13
A14
A15
CS
CS
CS
D0
D7
D0
D7
D0
D7
D0
D7
R/W
Pr. Abdelmajid HAJAMI
51
Les mémoires
Adressage par un µProcesseur (Décodage d’adresses):
En fait avec les bits A15, A14 et A13 nous pouvons adresser 8 (23 ) mémoires de 8 ko en
effectuant un décodage d’adresses. Ceci est le maximum théorique permis avec 16 bits.
En effet : 8 * 8ko = 64 ko.
Pour cela on utilise un circuit décodeur avec
3 entrées : A13, A14 et A15
8 sorties : une des 8 sorties est activée selon la valeur de A15 A14 A13.
Adresses des 8 mémoires :
Mém 0 : 0 à 1FFFH
Mém 4 : 8000H et 9FFFH
Mém 1 : 2000H et 3FFFH
Mém 5 : A000H et BFFFH
Mém 2 : 4000H et 5FFFH
Mém 6 : C000H et DFFFH
Mém 3 : 6000H et 7FFFH
Mém 7 : E000H et FFFFH
Pr. Abdelmajid HAJAMI
A0
A12
μP
A13
A14
A15
D0
D7
A0
A12
8KO Memory
CS
D0
D7
A0
A12
8KO Memory 2
A0
A12
8KO Memory 3
CS
CS
D0
D7
D0
D7
R/W
52
Les mémoires
Extension de la taille mémoire :
Extension de la longueur des mots
La figure suivante montre qu'il est aisé d'associer deux boîtiers de 2k
mots de n bits pour obtenir un bloc de 2k mots de 2*n bits.
L'adressage doit être appliqué simultanément aux deux circuits, l'un
fournissant les n bits de poids faible
et l'autre les n bits de poids fort.
Les Mémoires
Pr. Abdelmajid HAJAMI
53
Les mémoires
Extension de la taille mémoire :
Extension du nombre de mots
la figure suivante montre la réalisation d'un bloc de 4 x 2k mots de n bits à l'aide de 4 boîtiers de
2k x n bits. Il nous faut k+2 lignes d'adresse. Les k bits de poids faible de l'adresse sont
appliqués simultanément sur les 4 boîtiers. Les deux bits de poids fort attaquent un décodeur à
quatre sorties. Chacune de ces quatre lignes permet de sélectionner un boîtier (entrée de
validation du boîtier : CS). Un seul boîtier
alors connecté aux lignes de sortie.
Lesest
Mémoires
Pr. Abdelmajid HAJAMI
54
Les mémoires Extension de la taille mémoire
TD 1
Soit un boîtier mémoire de 3 lignes d’adressage et 8 lignes de données.
1. Calculer la taille en octet de ce boîtier.
2. En utilisant plusieurs boîtiers, réaliser une mémoire de 16 Octet.
3. En utilisant plusieurs boîtiers, réaliser une mémoire de 32 Octet où
les mots font 16 bits de taille . Les Mémoires
PS :penser à utiliser des circuits annexes.
Pr. Abdelmajid HAJAMI
55
Les mémoires Extension de la taille mémoire
TD 1
2. En utilisant plusieurs boîtiers, réaliser une mémoire de 16 Octet.
@bus : A0,A1,A2
R/W
A3
CS
R/W
RAM1
CS
RAM 2
Les Mémoires
Data bus : D0….D7
Pr. Abdelmajid HAJAMI
Data bus : D0….D7
56
Les mémoires Extension de la taille mémoire
TD 1
3. En utilisant plusieurs boîtiers, réaliser une mémoire de 32 Octet où les mots font 16
bits de taille
@bus : A0,A1,A2
R/W
A3
CS
R/W
R/W
RAM11
CS
Les Mémoires
Data bus : D0….D7
Pr. Abdelmajid HAJAMI
@bus : A0,A1,A2
RAM 21
CS
R/W
RAM12
CS
RAM 22
Les Mémoires
Data bus : D8….D15
Data bus :
D0….D15
57
TD 2
Les mémoires Extension de la taille mémoire
On dispose d’un boitier mémoire de 16 lignes d’adresses et des mots de 8bits.
1- Calculer la taille de ce boitier.
2- Combien de boitiers mémoires sont nécessaires pour avoir une taille de 256KO?
3- Quel est le nombre de bits d’adresses requis?
4- Donner le schéma détaillé de câblage de cette mémoires de 256KO,
Pr. Abdelmajid HAJAMI
58
Les mémoires Extension de la taille mémoire
TD 3
Un système à microprocesseur comprend :


Une RAM de 8KO (2 boitiers de 4KO ).
Une EPROM2 de 4KO

Une EPROM1 de 8KO

Les Mémoires
Les CSi des boitiers RAM et les OEi des
boitiers EPROM sont valides sur un niveau bas.

On donne :


L’@i de la RAM1 est $0000

L’@i de la RAM2 Just après l’@f de la RAM1

L’@i de l’EPROM1 Just après l’@f de la RAM2

L’@i de l’EPROM2 Just après l’@f de l’EPROM1.
Compléter le tableau ci-dessous
Pr. Abdelmajid HAJAMI
59
Les mémoires Extension de la taille mémoire
@i
@f
@i
EPROM1
@f
@i
EPROM2
RAM2
RAM1
A15 A14 A13 A12 A11 A10 A9 A8 A7
@i
@f
@f
Pr. Abdelmajid HAJAMI
A6
A5
A4
A3
A2
A1
A0
@Hex
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0000
1
Les Mémoires
0
1
0
1
0
1
60
Les mémoires Extension de la taille mémoire
TD 4
On considère le schéma partiel d’un système à µC,
1- Quelle est la condition de sélection des mémoires RAM et ROM?
2- Quelles sont les plages mémoires de chacune de ces mémoires?
@bus : A0….A11
R/W
A12
A13
A14
A15
CS
R/W
RAM
CS
ROM
Data bus : D0….D7
Pr. Abdelmajid HAJAMI
61
Les mémoires Extension de la taille mémoire
TD 5
On considère le schéma partiel d’un système à µC,
@bus
µP
A13
A14
A15
S0
S1
S2
Decoder S3
S4
S5
S6
S7
CS (RAM)
CS (Serial)
CS (ROM)
Data bus
1- Donner la condition de sélection de chaque boitier,
2- En déduire les différents espaces mémoires ainsi réservés.
Pr. Abdelmajid HAJAMI
62
Les mémoires
Types de mémoire :
Mémoire
Volatile
RAM
Statique
Type
cellule
Non volatile
ROM
ROM
PROM
Dynamique
EPROM
EEPROM
Pr. Abdelmajid HAJAMI
63
Les mémoires
Mémoires vives RAM : Random Access memory
Une mémoire vive sert au stockage temporaire de données. Elle doit avoir un temps de
cycle très court pour ne pas ralentir le microprocesseur. Les mémoires vives sont en
général volatiles
: elles perdent leurs informations en cas de coupure d'alimentation.
Certaines d'entre elles, ayant une faible consommation, peuvent être rendues non
volatiles par l'adjonction d'une batterie. Il existe deux grandes familles de mémoires RAM
(Random Acces Memory : mémoire à accès aléatoire) :
Les RAM statiques
Les RAM dynamiques
Pr. Abdelmajid HAJAMI
64
Les mémoires
Mémoires RAM : RAM statique
Le bit mémoire d'une RAM statique (SRAM) est composé d'une bascule.
Chaque bascule contient entre 4 et 6 transistors.
Pr. Abdelmajid HAJAMI
65
Les mémoires
Mémoires RAM : RAM dynamique
Dans les RAM dynamiques (DRAM), l'information est mémorisée sous la
forme d'une charge électrique stockée dans un condensateur (capacité
grille substrat d'un transistor MOS).
Pr. Abdelmajid HAJAMI
66
Les mémoires
Mémoires RAM : RAM dynamique
Avantages
Cette technique permet une plus grande densité
d'intégration, car un point mémoire nécessite
environ quatre fois moins de transistors que dans
une mémoire statique. Sa consommation s’en
retrouve donc aussi très réduite.
Pr. Abdelmajid HAJAMI
67
Les mémoires
Mémoires RAM : RAM dynamique
Inconvénients
La présence de courants de fuite dans le condensateur contribue à sa décharge.
Ainsi, l’information est perdue si on ne la régénère pas périodiquement (charge du
condensateur). Les RAM dynamiques doivent donc être rafraîchies régulièrement
pour entretenir la mémorisation : il s'agit de lire l'information et de la recharger.
Ce rafraîchissement indispensable a plusieurs conséquences :
- il complique la gestion des mémoires dynamiques car il faut tenir compte des
actions de rafraîchissement qui sont prioritaires.
- la durée de ces actions augmente le temps d'accès aux informations.
- la lecture de l’information est destructive. Elle se fait par décharge de la
capacité du point mémoire lorsque celle-ci est chargée. Donc toute lecture
doit être suivie d’une réécriture.
Pr. Abdelmajid HAJAMI
68
Les mémoires
Mémoires RAM : dynamique Vs statique
• En général les mémoires dynamiques, qui offrent une
plus grande densité d'information et un coût par bit
plus faible, sont utilisées pour la mémoire centrale,
• Alors que les mémoires statiques, plus rapides, sont
utilisées lorsque le facteur vitesse est critique,
notamment pour des mémoires de petite taille comme
les caches et les registres.
Pr. Abdelmajid HAJAMI
69
Les mémoires
Mémoires Mortes ROM : Read Only Memory
Pour certaines applications, il est nécessaire de pouvoir conserver des informations de façon
permanente même lorsque l'alimentation électrique est interrompue. On utilise alors des mémoires
mortes ou mémoires à lecture seule (ROM : Read Only Memory). Ces mémoires sont non volatiles.
Ces mémoires, contrairement aux RAM, ne peuvent être que lue. L’inscription en mémoire des
données restent possible mais est appelée programmation. Suivant le type de ROM, la méthode de
programmation changera. Il existe donc plusieurs types de ROM :
Pr. Abdelmajid HAJAMI

ROM

PROM

EPROM

EEPROM
70
Les mémoires
Mémoires Mortes ROM : Read Only Memory

Elle est programmée par le fabricant et son contenu
ne peut plus être ni modifié, ni effacé par l'utilisateur.
Pr. Abdelmajid HAJAMI
71
Les mémoires
Mémoires Mortes ROM : Read Only Memory
Structure :

Composée d'une matrice dont la programmation
s’effectue en reliant les lignes aux colonnes par des
diodes. L'adresse permet de sélectionner une ligne
de la matrice et les données sont alors reçues sur les
colonnes (le nombre de colonnes fixant la taille des
mots mémoire).
Programmation :

L'utilisateur doit fournir au constructeur un masque
indiquant les emplacements des diodes dans matrice.
Avantages :
- Densité élevée - Non volatile - Mémoire rapide
Pr. Abdelmajid HAJAMI
72
Les mémoires
Mémoires Mortes ROM : Read Only Memory
Inconvénients :

Écriture impossible

Modification impossible (toute erreur est fatale).

Délai de fabrication (3 à 6 semaines)

Obligation de grandes quantités en raison du coût
élevé qu'entraîne la production du masque et le
processus de fabrication.
Pr. Abdelmajid HAJAMI
73
Les mémoires
PROM : Programmable ROM
C’est une ROM qui peut être programmée une seule fois par
l'utilisateur (Programmable ROM). La programmation est réalisée à
partir d’un programmateur spécifique.
Structure :

Les liaisons à diodes de la ROM sont remplacées par des fusibles
pouvant être détruits ou des jonctions pouvant être court-circuitées
Pr. Abdelmajid HAJAMI
74
Les mémoires
PROM : Programmable ROM
Programmation :

Les PROM sont livrées avec toutes les lignes connectées aux
colonnes (0 en chaque point mémoire).

Le processus de programmation consiste donc à programmer
les emplacements des ‘’1’’ en générant des impulsions de
courants par l’intermédiaire du programmateur ; les fusibles
situés aux points mémoires sélectionnés se retrouvant donc
détruits.
Pr. Abdelmajid HAJAMI
75
Les mémoires
PROM : Programmable ROM
Avantages :

idem ROM

Claquage en quelques minutes

Coût relativement faible
Inconvénients :

Pr. Abdelmajid HAJAMI
Modification impossible (toute erreur est fatale).
76
Les mémoires
EPROM : Erasable Programmable ROM
EPROM
principe
Effacement
Pr. Abdelmajid HAJAMI
EEPROM
MOS à grille flottante
UV
Tension
+
+ RAM non volatile
Programmable non volatile
+ Effacement par mot
-
- efface toute la mémoire.
- effacé hors circuit
- écriture lente
-Lente
/ RAM
- coût de réalisation
77
Les mémoires
hiérarchie mémoire
Pr. Abdelmajid HAJAMI
78
Langage VHDL et conception de circuits
Pr. Abdelmajid HAJAMI

LES CIRCUITS LOGIQUES PROGRAMMABLES (PAL, GAL, CPLD, FPGA)

Le langage VHDL
79
Les circuits logiques programmables
Soit la fonction logique suivante :
F= 𝑎𝑏𝑐𝑑 + 𝑎bcd
ത
+ ab𝑐ҧ
Sa réalisation en portes logique est la suivante : assurez-vous !!
a
b
C
d
Et si jamais
le circuit est
déjà réalisé
?
Pr. Abdelmajid HAJAMI
F
X
X
!
80
Les circuits logiques programmables
Solutions :
ROM
Read Only Memory
Pr. Abdelmajid HAJAMI
PLA
Programmable Logic Array
81
Les circuits logiques programmables
Solutions : ROM
Read Only Memory
Pr. Abdelmajid HAJAMI
PLA
Programmable Logic Array
82
Les circuits logiques programmables
Solutions : ROM
Read Only Memory

ത + 𝑎bcd
Soit la fonction logique : F= a𝑏𝑐𝑑
ത
+ ab𝑐d
ҧ
Pensez à réaliser cette fonction par une mémoire ROM.
 Peut on la réaliser en utilisant un autre circuit?
Pr. Abdelmajid HAJAMI
83
Les circuits logiques programmables
Solutions :
On utilise une représentation compact
des portes logiques avec plusieurs entrées
Pr. Abdelmajid HAJAMI
PLA
Programmable Logic Array
84
Les circuits logiques programmables

L’implémentation de circuits logiques avec des circuits SSI, MSI et LSI nécessite
beaucoup de travail pour choisir, disposer et relier les composantes discrètes.

Certaines fonctions logiques complexes peuvent être remplacées par des PROM,
mais une mémoire est en général trop grande et pas assez flexible pour bien
convenir à la tâche.

Les PLA (1970), et PAL (1978) étaient plus efficaces que les PROM; ils pouvaient
être programmés chez le manufacturier ou une fois par l’utilisateur.

Les GAL sont la version améliorée des PLA et PAL et sont programmés par
l’utilisateur.
Pr. Abdelmajid HAJAMI
85
Les circuits logiques programmables
Pr. Abdelmajid HAJAMI
Basis for comparison
PLA
PAL
Stands for
Programmable Logic
Array
Programmable Array Logic
Construction
Programmable array of
AND and OR gates.
Programmable array of AND
gates and fixed array of OR
gates.
Availability
Less prolific
More readily available
Flexibility
Provides more
programming flexibility.
Offers less flexibility, but more
likely used.
Cost
Expensive
Intermediate cost
Number of functions
Large number of
functions can be
implemented.
Provides the limited number of
functions.
86
Les circuits logiques programmables

Un PLA (Programmable Logic Array) est similaire à une
ROM, mais il ne réalise pas tous les produits de termes
comme une ROM.

Un PLA à n entrées et m sorties peut réaliser m
fonctions de n variables, en autant que chacune
requiert un nombre limité de produits des variables en
entrée.

Un PLA est composé de deux réseaux programmables,
ET et OU. Le réseau ET programmable est
effectivement un décodeur programmable incomplet.
• Chaque intersection d’une ligne horizontale et d’une ligne verticale est programmable.
• Seuls 6 termes (produits – ET logique) peuvent être réalisés à partir des quatre entrées et de leurs compléments.
• Seules trois fonctions de sortie peuvent être réalisées.
• Chaque
fonction peut utiliser n’importe lequel des six termes programmables
Pr.
Abdelmajid HAJAMI
87
Les circuits logiques programmables

Le développement des mémoires utilisées en informatique fut à l’origine
des premiers circuits logiques programmables (PLD : Programmable
Logic Device). Ce type de produit peut intégrer dans un seul circuit
plusieurs fonctions logiques programmables par l’utilisateur. Sa mise en
œuvre se fait très facilement à l’aide d’un programmateur, d’un micro-
ordinateur et d’un logiciel adapté.
Pr. Abdelmajid HAJAMI
88
Les circuits logiques programmables
Structure de base d’un PLD

Entrées
La plupart des PLDs suivent la structure suivante :

Un ensemble d’opérateurs « ET » sur lesquels viennent se
connecter les variables d’entrée et leurs compléments.

Un ensemble d’opérateurs « OU » sur lesquels les sorties
des opérateurs « ET » sont connectées.

Une éventuelle structure de sortie (Portes inverseuses,
logique 3 états, registres...).
Pr. Abdelmajid HAJAMI
Sorties
89
Les circuits logiques programmables
Structure de base d’un PLD

Les deux premiers ensembles forment chacun ce
qu’on appelle une matrice. Les interconnexions de
ces matrices doivent être programmables. C’est la
raison pour laquelle elles sont assurées par des
fusibles
qui
sont
«
grillés
»
lors
de
la
programmation. Lorsqu’un PLD est vierge toutes les
connexions sont assurées.
Interconnexion programmable
Pr. Abdelmajid HAJAMI
90
Les circuits logiques programmables
PLD : Symbolisation et Représentation

La programmation s’effectue par destruction de fusible (un fusible détruit équivaut à un circuit
ouvert), voir schéma ci-dessous.
Structure simplifiée d’un PAL 2 entrées 1 sortie

I1 et I2 sont des entrées (Input), O c’est une sortie (output).
Pr. Abdelmajid HAJAMI
91
Les circuits logiques programmables
PLD : Symbolisation et Représentation
Une autre représentation adoptée.

a : porte ET à trois entrées.

b : porte ET à trois entrées : représentation PAL. Les croix représentent les fusibles intacts.

c : représentation de la structure interne d’un PAL.
Pr. Abdelmajid HAJAMI
92
Les circuits logiques programmables
PLD : Exemple1

Si on veut obtenir les fonctions
Q0  a.b  a.b
et
Q1  a. b  a. b
On « grillera » des fusibles de façon à obtenir le schéma suivant :
Pr. Abdelmajid HAJAMI
93
Les circuits logiques programmables
Exemple2

Un comité composé de quatre personnes a besoin d’un système de
vote secret pour les amendements sur la constitution du comité.

Un amendement est approuvé si au moins 3 personnes votent pour.

Concevoir un circuit logique qui accepte 4 entrées représentant les
votes. La sortie du circuit doit indiquer si l’amendement est
accepté.
Pr. Abdelmajid HAJAMI
94
A
B
C
D
F
0
0
0
0
0
0
ҧ
ҧ
ത
ഥ
F
=
𝐴𝐵𝐶𝐷
+
𝐴
𝐵CD
+
AB
𝐶D
+
ABC
𝐷
+ ABCD
0
0
1
0
0F = ABC
1 + ABD
0 + ACD
0 + BCD
0
0
1
1
0
0
1
0
0
0
0
1
0
1
0
0
1
1
0
0
0
1
1
1
1
1
0
0
0
0
1
0
0
1
0
1
0
1
0
0
1
0
1
1
1
1
1
0
0
0
1
1
0
1
1
1
1
1
0
1
1
1
1
1
1
0
Pr. Abdelmajid HAJAMI
A B C D
F
95
ҧ
ҧ + ABC𝐷
ത
ഥ + ABCD
F = 𝐴𝐵𝐶𝐷
+ 𝐴𝐵CD
+ AB𝐶D
F = ABC + ABD + ACD + BCD

Programmer le circuit PLD 4-3-6 pour implémenter la fonction F
A
B
C
D
F = ABC + ABD + ACD + BCD
Étapes:
1. Choisir les ports d’entrée et de sotie.
2. Écrire les équations de sortie en somme de
produits
3. Indiquer quelles connexions établir.
Observations:
• La minimisation des équations n’est pas toujours utile.
• L’ordre dans lequel sont placées les entrées est crucial.
Pr. Abdelmajid HAJAMI
F
96
Les circuits logiques programmables
Familles de PLD
Il existe plusieurs familles de PLD qui sont différenciées
structure interne.
par leur
TYPE
Nombre de portes intégrées
Matrice ET
Matrice OU
Effaçable
PROM
2 000 à 500 000
Fixe
Programmable
Non
PAL
10 à 100
Programmable
Fixe
Non
GAL
10 à 100
Programmable
Fixe
Electriquement
EPLD
100 à 3000
Programmable
Fixe
Aux U-V
FPLA
2000 à 3000
Programmable Programmable Electriquement
Pr. Abdelmajid HAJAMI
97
Les circuits logiques programmables
REMARQUE :
Certaines de ces familles possèdent en plus des matrices « ET » et
« OU », de la logique séquentielle (Bascules « D », « JK »...) placée
après les entrées ou avant les sorties du PLD.
Pr. Abdelmajid HAJAMI
98
Les circuits logiques programmables
PAL (Programmable Array Logic)

• Dans un circuit PAL, le réseau ET est programmable et le
réseau OU est fixe.

• Chaque intersection d’une ligne horizontale et d’une ligne
verticale est programmable.

• Les portes ET ont une sortie de 0 par défaut.

• Chaque patte de sortie est menée par un tampon inverseur
contrôlé par une fonction logique.

• Un PAL16L8 a:
– 10 entrées dédiées ;
– 2 sorties dédiées ;
– 6 pattes pouvant être utilisées comme entrée ou sortie
Pr. Abdelmajid HAJAMI
99
Les circuits logiques programmables
PAL (Programmable Array Logic)

Tout P.A.L. est constitué :

D'entrées (Input): I1 à In avec 8 < n < 20.

De sorties (Output) Ou d’entrées / sorties (I/O) de type Trois Etats :
O1 à On ou IO1 à IOn (2<n<15).

On peut trouver aussi:

Une entrée d'horloge (Clock): Clk ou Clock.

Une entrée de validation des sorties trois états: OE (Output Enable)
ou Enable.

Pr. Abdelmajid HAJAMI
Une entrée de remise à zéro des registres: RESET.
100
Les circuits logiques programmables
PAL (Programmable Array Logic)

les premiers circuits programmables à être utilisés pour réaliser des fonctions
logiques étaient développés par le constructeur AMD

Ils possèdent des matrices « ET » programmables et des matrices « OU » fixes.

La fusion des fusibles est obtenue en appliquant à leurs bornes une tension de 11,5
V pendant 10 à 50 µS (leur tension de fonctionnement est environ de 5V).

Cette opération est bien sûr effectuée en utilisant un programmateur adapté. La
structure de base de ce PLD est présentée par le schéma suivant.
Pr. Abdelmajid HAJAMI
101
Les circuits logiques programmables
PAL (Programmable Array Logic)
Structure des PAL
Pr. Abdelmajid HAJAMI
102
Les circuits logiques programmables
PAL (Programmable Array Logic)
Configuration des entrées/sorties
• Chaque patte de sortie est menée par un tampon inverseur contrôlé par une fonction logique.
• La sortie peut donc être:

l’inverse de la porte OU à laquelle elle est relie ; ou

une haute impédance (HZ ).
‘1’
X
Pr. Abdelmajid HAJAMI
‘0’
(HZ)
X
X
103
Les circuits logiques programmables
PAL (Programmable Array Logic)
Configuration des entrées/sorties

Certaines broches de ces circuits peuvent être utilisées aussi bien en entrée qu’en sortie grâce à
un système de logique 3 états. La commande de cette dernière est configurée au moment de la
programmation. La structure de sortie permet aussi de réinjecter les sorties en entrée (Feedback).
Porte trois états permettant
de déc onnec tée la broc he
de la matric e "ET"
I/O

Selon le type de PAL la structure de sortie peut être constituée d’une porte « NON», d’une porte
« OU » Exclusive , d’une bascule « D » ou d’une combinaison des trois. Le nombre d’entrées et
de sorties est lui aussi lié à la référence du PAL
Pr. Abdelmajid HAJAMI
104
Les circuits logiques programmables
PAL (Programmable Array Logic)
RÉFÉRENCE DES PALS (D’APRÈS AMD).

Les diverses possibilités de ces circuits et leur standardisation
ont conduit les
constructeurs à définir une nomenclature permettant de décoder assez facilement la
référence des PALs.
Pr. Abdelmajid HAJAMI
105
Les circuits logiques programmables
PAL (Programmable Array Logic)
RÉFÉRENCE DES PALS (D’APRÈS AMD).
Structure de sortie
Lettre(s) Code(s)
Pr. Abdelmajid HAJAMI
Structure de sortie
L
Combinatoire active bas
H
Combinatoire active haut
C
Combinatoire : L et H combinés
R
Registre synchrone (bascule D)
RA
Registre asynchrone
RP
Registre programmable
X
Registre et OU exclusif
V
Versatile
106
Les circuits logiques programmables
PAL (Programmable Array Logic)
RÉFÉRENCE DES PALS (D’APRÈS AMD).
Structure de sortie : combinatoire
Il existe trois types:
- H -> (High) Porte ET suivit d'une Porte OU. Sortie active à l'état haut.
- L -> (Low) Porte ET suivit d'une Porte NON OU. Sortie active à l'état bas.
- C -> (Combinée) programmable en type H ou L.
Pr. Abdelmajid HAJAMI
107
Les circuits logiques programmables
PAL (Programmable Array Logic)
RÉFÉRENCE DES PALS (D’APRÈS AMD).
Structure de sortie : séquentielle

R -> Register
Pr. Abdelmajid HAJAMI
108
Les circuits logiques programmables
PAL (Programmable Array Logic)
RÉFÉRENCE DES PALS (D’APRÈS AMD).
Structure de sortie : séquentielle

X -> Register- OR Exclusif
Pr. Abdelmajid HAJAMI
109
Les circuits logiques programmables
PAL (Programmable Array Logic)
RÉFÉRENCE DES PALS (D’APRÈS AMD).
Structure de sortie : séquentielle

RA -> Register Asynchron
Elles peuvent prendre quatre configurations suivant les valeurs de AP et AR
Pr. Abdelmajid HAJAMI
110
Les circuits logiques programmables
PAL (Programmable Array Logic)
RÉFÉRENCE DES PALS (D’APRÈS AMD).
Structure de sortie : versatile

Les structures de sorties dite versatile proposent quatre configurations possibles
suivant les valeurs de S0 et S1.
Pr. Abdelmajid HAJAMI
111
Les circuits logiques programmables
PAL (Programmable Array Logic)
RÉFÉRENCE DES PALS (D’APRÈS AMD).
Remarques

Le nombre d’entrées varie entre 10 et 22.

Le nombre de sorties varie entre 1 et 10.

La puissance est indiquée par une lettre code.

La vitesse indique le temps de propagation en ns.

Les versions versatiles ont une cellule de sortie programmable permettant d’obtenir n’importe quel
autre type de structure de sortie (L, H, R ...).

Les versions CMOS (CE) sont effaçables électriquement. Les fusibles sont remplacés par des transistors
de type MOS FET. Ce ne sont ni plus ni moins que des « GALs ».
Pr. Abdelmajid HAJAMI
112
Les circuits logiques programmables
PAL (Programmable Array Logic)
RÉFÉRENCE DES PALS (D’APRÈS AMD).

Exemple
Pr. Abdelmajid HAJAMI
113
Les circuits logiques programmables
PAL (Programmable Array Logic)
RÉFÉRENCE DES PALS (D’APRÈS AMD).


Exemple de PAL : PAL 16L8
Ce type de circuit est uniquement constitué de logique combinatoire. Il possède 20 broches
agencées de la façon suivante :

- 10 broches configurables uniquement en entrée

- 2 broches configurables uniquement en sortie

- 6 broches configurables en entrée et en sortie

- 2 broches d’alimentation.
Pr. Abdelmajid HAJAMI
114
Les circuits logiques programmables
PAL (Programmable Array Logic)
RÉFÉRENCE DES PALS (D’APRÈS AMD).


Exemple de PAL : PAL 16L8
L’ensemble des sorties provient de portes 3 états inverseuses. L’état haute impédance peut être
commandée par l’ensemble des entrées.

Chaque porte de la matrice « OU » possède 7 entrées. Ceci signifie que chaque sortie peut résulter, au
maximum, d’une fonction « OU » entre 7 termes produits. Chaque porte de la matrice « ET » possède
32 entrées. Ceci signifie que chaque terme produit peut résulter, au maximum, d’une fonction « ET »
entre 16 variables et leurs compléments.
Pr. Abdelmajid HAJAMI
115
Les circuits logiques programmables
PAL (Programmable Array Logic)
RÉFÉRENCE DES PALS (D’APRÈS AMD).

Brochage du PAL 16L8
Pr. Abdelmajid HAJAMI
116
Les circuits logiques programmables
PAL (Programmable Array Logic)
RÉFÉRENCE DES PALS (D’APRÈS AMD).


Exemple de PAL : PAL 16R8
Ce type de circuit est constitué de logique combinatoire et séquentielle.

20 broches agencées de la façon suivante :

8 broches (n° 2 à 9) configurables uniquement en entrée

1 broche (n° 1) d’entrée d’horloge de l’ensemble des 8 bascules D

1 broche (n° 11) de validation des 8 sorties (Output Enable)

8 broches (n° 12 à 19) configurables en sortie et pouvant être réinjecter en entrée

2 broches d’alimentation (n° 10 et 20).
Pr. Abdelmajid HAJAMI
117
Les circuits logiques programmables
PAL (Programmable Array Logic)
RÉFÉRENCE DES PALS (D’APRÈS AMD).

Exemple de PAL : PAL 16R8

L’ensemble des sorties provient de portes 3 états inverseuses provenant elles-mêmes de bascules D. L’état
haute impédance est commandée par l’entrée OE (broche n°11).

Chaque porte de la matrice « OU » possède 8 entrées. Ceci signifie que chaque sortie peut résulter, au
maximum, d’une fonction « OU » entre 8 termes produits.

Chaque porte de la matrice « ET » possède 32 entrées. Ceci signifie que chaque terme produit peut résulter, au
maximum, d’une fonction « ET » entre 16 variables et leurs compléments.
En résumé on peut dire que les huit sorties de ce circuit proviennent d’un registre trois états. La
mise en haute impédance de ce dernier est commandée par la broche OE et la mémorisation est
activée par les fronts montants de l’horloge CLK.
Pr. Abdelmajid HAJAMI
118
Les circuits logiques programmables
PAL (Programmable Array Logic)
RÉFÉRENCE DES PALS (D’APRÈS AMD).

Brochage du PAL 16R8
Pr. Abdelmajid HAJAMI
119
Les circuits logiques programmables
PAL (Programmable Array Logic)

TD 1
On désire implémenter, à l'aide de ce circuit, les fonctions
suivantes :
O3 = A.B.C.D,

1- Quels sont les caractéristiques des fonctions que l'on peut
réaliser avec ce PAL (nombre de termes produits) ?

2- Une croix représente un fusible non-claqué. Supprimer les
croix nécessaires afin de réaliser les fonctions souhaitées.
Pr. Abdelmajid HAJAMI
120
D
C
B
A
Réseau de OU fixe
Réseau de ET programmable
Pr. Abdelmajid HAJAMI
O 3 O 2 O1 O0
TD 1
121
Les circuits logiques programmables
PAL (Programmable Array Logic)
TD 2
On désire réaliser un convertisseur code BCD → code Gray à 4
entrées.

1- Donner la table de vérité du système.

2- Simplifier les équations logiques à l’aide des tableaux de
Karnaugh.

3- On souhaite utiliser le PAL de l'exercice 1. Supprimer les
croix nécessaires afin de réaliser les fonctions souhaitées.
Pr. Abdelmajid HAJAMI
122
D
C
B
A
Réseau de OU fixe
Réseau de ET programmable
Pr. Abdelmajid HAJAMI
O 3 O 2 O1 O0
TD 2
123
D
C
B
A
Réseau de OU fixe
Réseau de ET programmable
Pr. Abdelmajid HAJAMI
O 3 O 2 O1 O0
TD 2
124
Les circuits logiques programmables
PAL (Programmable Array Logic)
TD 3
On souhaite réaliser un décodeur hexadécimal pour afficheur 7
segments suivant le schéma (les LED réalisant l’afficheur sont
allumées si la cathode est à 0 V) :

1- Donner la table de vérité du circuit.

2- Simplifier les équations logiques à l’aide des tableaux de
Karnaugh.

3- On souhaite utiliser un PAL 16L8 (voir schéma ci-après).
Quelles sont ses caractéristiques ?

4- Placer les croix nécessaires sur le schéma suivant afin de
réaliser les fonctions souhaitées.
Pr. Abdelmajid HAJAMI
125
Les circuits logiques programmables
PAL (Programmable Array Logic)
Pr. Abdelmajid HAJAMI
TD 3
126
Les circuits logiques programmables
GAL (Generic Array Logic)
Présentation:

L’inconvénient des PALs: ne sont programmables qu’une seule fois.

LATTICE a donc pensé à remplacer les fusibles irréversibles des PALs par des transistors MOS FET pouvant
être régénérés.  Naissance des GALs « Réseau logique Générique ».


Ces circuits peuvent donc être reprogrammés à volonté sans pour autant avoir une durée de vie restreinte.

Les GALs sont constitués de transistor CMOS alors que les PALs classiques sont constitués de transistors
bipolaires.

La consommation des GALs est plus faible.

d’autres constructeurs les appellent « PAL CMOS ».
LATTICE a équipé la plupart de ses GALs de macro-cellules programmables permettant d’émuler n’importe
quel PAL. Ces structures de sortie sont donc du type « Versatile » (V).
Pr. Abdelmajid HAJAMI
127
Les circuits logiques programmables
GAL (Generic Array Logic)
Circuits GAL (Generic Array Logic):
– dispositifs programmables par l’utilisateur;
– mis en marché par Lattice Semiconductors en 1985;
– peuvent émuler différents types de PAL.
• Les circuits GAL ont longtemps remplacé les
composantes SSI-LSI, mais ne sont plus manufacturés.
Pr. Abdelmajid HAJAMI
128
Les circuits logiques programmables
GAL (Generic Array Logic)
Protection contre la duplication
Les GAL sont dotés d’un bit de sécurité qui peut être activé lors de la programmation,

empêcher toute lecture du contenu du circuit. Ce bit est remis à zéro seulement en
effaçant complètement le GAL.

Il est aussi constitué d’un ensemble de huit octets, appelé signature électronique,
pouvant contenir des informations diverses sur le produit.
Pr. Abdelmajid HAJAMI
129
Les circuits logiques programmables
GAL (Generic Array Logic)
Référence
Pr. Abdelmajid HAJAMI
130
Les circuits logiques programmables
GAL (Generic Array Logic)
Types de GALs
Référence
Vitesse (nS)
GAL 16V8
GAL 18V10
GAL 20V8
GAL 20RA10
GAL 22V10
GAL 26V12
GAL 6001
Nombre de
broches
20
20
24
24
24
28
24
10, 15 ou 20
15 ou 20
10, 15 ou 25
15 ou 20
15, 20 ou 25
15 ou 20
30 ou 35
Consommation
(mA)
55 ou 115
115
55 ou 115
115
130
130
150
ispGAL 16Z8
24
20 ou 25
90
Remarque
Macro-cellule (1)
//
//
Registre asynchrone (1)
Macro-cellule (1)
//
Macro-cellule (1) - Type
FPLA (2)
Macro-cellule (1) Programmable en circuit (3)
* (1) : structure de sortie.
* (2) : Matrices « OU » et « ET » programmables.
* (3) : Circuit reprogrammable à tout moment par liaison série.
Pr. Abdelmajid HAJAMI
131
Les circuits logiques programmables
GAL (Generic Array Logic)
Cellule OLMC: (Output Logic Macrocell)
Les Circuits GAL montre une cellule OLMC:
(Output Logic Macrocell)
La sortie de la OLMC peut être:
– En haute impédance;
– sortie combinatoire inversée ou non;
– sortie de bascule inversée ou non;
– renvoyée dans le réseau programmable.
Pr. Abdelmajid HAJAMI
132
Les circuits logiques programmables
GAL (Generic Array Logic)
Cellule OLMC: (Output Logic Macrocell)
GAL 16V8
Ces structures de sortie sont programmables et permettent d’émuler n’importe quelle autre
structure de sortie. Elles possèdent en tout 2 bits de programmation communs à toutes les
cellules (CG1 et CG0) et 2 bits spécifiques à chaque cellule (CL0x et CL1x).
Pr. Abdelmajid HAJAMI
133
Les circuits logiques programmables
GAL (Generic Array Logic)
Cellule OLMC: (Output Logic Macrocell)
GAL 16V8
Configurations possibles de la macro-cellule pour le GAL 16V8 :
Configuration de la structure de sortie
Registre synchrone - sortie 3 états (C1)
Entrée / Sortie combinatoire - sortie 3 états (C2)
Entrée et/ou Sortie combinatoire (C3)
Entrée combinatoire (C4)
Entrée / Sortie combinatoire - sortie 3 états (C2)
Pr. Abdelmajid HAJAMI
Circuit PAL émulé
16R8
16R4 - 16R6
10L8 - 12H6
12L6
16L8 - 16H8
134
Les circuits logiques programmables complexes
CPLD (Complex Prorammable Logic Devices)

Les ROM, PLA, PAL et GAL sont parfois appelés des circuits logique
programmable simples (Simple Programmable Logic Devices – SPLD).

Les Complex Programmable Logic Devices – CPLD – sont une extension naturelle
des circuits PAL.

Un CPLD incorpore plusieurs PAL sur une seule puce avec un réseau
d’interconnexions.

Le réseau permet de relier les pattes de la puce à différents blocs internes et de
relier les blocs entre eux.
Pr. Abdelmajid HAJAMI
135
Les circuits logiques programmables complexes
CPLD (Complex Prorammable Logic Devices)
Macro-cellules composés de :
- Une zone de portes logiques
- Une bascule
Pr. Abdelmajid HAJAMI
136
Les FPGA (Fields Programmable Gate Array).

les FPGAs sont aussi des circuits programmables par l’utilisateur.

La puissance de ces circuits est telle qu’ils peuvent être composés de
plusieurs milliers voire millions de portes logiques et de bascules. Les
dernières générations de FPGA intègrent même de la mémoire vive (RAM).

Les deux plus grands constructeurs de FPGA sont XILINX et ALTERA.

Ils sont composés de blocs logiques élémentaires (plusieurs milliers de portes)
qui peuvent être interconnectés.
Pr. Abdelmajid HAJAMI
137
Les FPGA (Fields Programmable Gate Array).
Structure interne d’un FPGA de type XILINX
I/O Bloc
Pr. Abdelmajid HAJAMI
138
Les FPGA (Fields Programmable Gate Array).
Structure interne d’un FPGA de type XILINX
Pr. Abdelmajid HAJAMI
139
Les FPGA (Fields Programmable Gate Array).
Structure interne d’un FPGA de type XILINX
Fin partie 1
Pr. Abdelmajid HAJAMI
140
Langage VHDL et conception de circuits
VHDL
VHSIC Hardware Description Language
VHSIC :Very High Speed Integrated Circuit
Pr. Abdelmajid HAJAMI
141
Le langage VHDL
Introduction






Écrit dans les années 70 pour réaliser la simulation de circuits électroniques.
On l’a ensuite étendu en lui rajoutant des extensions pour permettre la conception
(synthèse) de circuits logiques programmables (P.L.D. (Programmable Logic Device).
Auparavant on utilisait des langages de bas niveau (ABEL, PALASM, ORCAD/PLD,..)pour
décrire le fonctionnement d’un circuit électronique programmable.
Actuellement il n’est plus possible d’utiliser ces outils car la densité de fonctions logiques
(portes et bascules) intégrée dans les PLDs est grande(plusieurs milliers de portes voire
millions de portes).
Les sociétés de développement et les ingénieurs ont créé des langages dits de haut niveau
(VHDL et VERILOG). Ces deux langages font abstraction des contraintes technologiques des
circuits PLDs.
Ils permettent au code écrit d’être portable, c’est à dire qu’une description écrite pour un
circuit peut être facilement utilisée pour un autre circuit
Pr. Abdelmajid HAJAMI
142
Le langage VHDL
Introduction

Le Verilog et le VHDL ont des capacités techniques équivalentes. Le choix du langage
est souvent dicté par la "culture« de l’équipe de développement ou de l’équipe de
recherche.

En vue de l’implantation des circuits numériques, le choix du langage VHDL semble
incontournable, puisque quelque soit la cible choisie, ce langage est supporté par la
quasi-totalité des logiciels de CAO.
Pr. Abdelmajid HAJAMI
143
Le langage VHDL
Introduction
VHDL est utilisé pour :

concevoir des ASIC (application-specific integrated circuits, circuits spécialisés),

programmer des composants programmables du type PLD, CPLD et FPGA,

concevoir des modèles de simulations numériques ou des bancs de tests.
• Principe de base: Définir un langage de description de matériel qui puisse être
utilisé pour simuler du matériel numérique
• Extension: Utilisation du même langage pour la synthèse automatique de circuits
Pr. Abdelmajid HAJAMI
144
Le langage VHDL
Langage de description VS Langage de programmation

VHDL n’est pas un langage de programmation comme le C, c’est un langage de
description matériel.

un langage de programmation est destiné à être traduit en langage machine puis à
être exécuté par un microprocesseur.

un langage de description matériel comme VHDL décrit une réalité matérielle, c’està-dire le fonctionnement d’un système numérique. Il va être traduit (synthétisé) en un
ensemble de circuits logiques combinatoires et séquentiels qui vont être implémentés
dans un circuit intégré.
Pr. Abdelmajid HAJAMI
145
Le langage VHDL
Langage de description VS Langage de programmation
comparaison des conceptions pour processeur
et pour circuit logique programmable
Pr. Abdelmajid HAJAMI
146
Le langage VHDL
Description VHDL & PLD
Exemple d’implantation de descriptions VHDL ou de blocs
fonctionnels implantés dans un PLD
Pr. Abdelmajid HAJAMI
147
Le langage VHDL
Description VHDL & PLD
Lors de la phase de synthèse chaque bloc sera matérialisé par des portes et/ou des
bascules. La phase suivante sera d’implanter les portes et les bascules à l’intérieur du
circuit logique.
Cette tâche sera réalisée par le logiciel placement/routage («Fitter»), au cours de laquelle
les entrées et sorties seront affectées à des numéros de broches.
On peut remarquer sur le schéma la fonction particulière du bloc VHDL N°5.
En effet dans la description fonctionnelle d’un PLD on a souvent besoin d’une fonction qui
sert à cadencer le fonctionnement de l’ensemble
Pr. Abdelmajid HAJAMI
148
Le langage VHDL
Organisation fonctionnelle de développement d’un PLD.
Entrée schématique
Pr. Abdelmajid HAJAMI
Entrée syntaxique
Langage:
- VHDL
Diagrammes d’états
149
Pr. Abdelmajid HAJAMI
150
Le langage VHDL
Structure d’une description VHDL
Une description VHDL est composée de 2 parties indissociables à savoir :
- L’entité (ENTITY), elle définit les entrées et sorties.
- L’architecture (ARCHITECTURE), elle contient les instructions VHDL
permettant de réaliser le fonctionnement attendu.
Pr. Abdelmajid HAJAMI
151
Pr. Abdelmajid HAJAMI
152
Le langage VHDL
Les bases du VHDL
Comme la majorité des langages, le VHDL :
 fait appel à des bibliothèques (library).
 Il utilise des mots clés.
 Les lignes de commandes se terminent par « ; »
 Les commentaires sont précédés par « -- »
 Il utilise indifféremment les majuscules et minuscules.
 Les modèles peuvent être décrits en comportemental, structurel ou mixte
 Il utilise les concepts de base suivant : l’entité (entity), l’architecture (architecture), la
configuration (configuration) et le boitier(Package).
Pr. Abdelmajid HAJAMI
153
Le langage VHDL
Déclaration des bibliothèques
Toute description VHDL utilisée pour la synthèse a besoin de bibliothèques. L’ IEEE les a
normalisées et plus particulièrement la bibliothèque IEEE1164. Elles contiennent les définitions
des types de signaux électroniques, des fonctions et sous programmes permettant de réaliser
des opérations arithmétiques et logiques,...
Library ieee;
Use ieee.std_logic_1164.all;
Use ieee.numeric_std.all;
Use ieee.std_logic_unsigned.all;
-- cette dernière bibliothèque est souvent utilisée pour l’écriture de compteurs
La directive Use permet de sélectionner les bibliothèques à utiliser.
IEEE (Institut of Electrical and Electronics Engineers)
Pr. Abdelmajid HAJAMI
154
Le langage VHDL
Déclaration de l’entité et des E/S (I/O)
Elle permet de définir le NOM de la description VHDL ainsi que les entrées et sorties
utilisées, l’instruction qui les définit c’est port :
Syntaxe:
entity NOM_DE_L_ENTITE is
port ( Description des signaux d’entrées /sorties …);
end NOM_DE_L_ENTITE;
Exemple :
entity SEQUENCEMENT is
port (
CLOCK : in std_logic;
RESET : in std_logic;
Q
: out std_logic_vector(1 downto
);
end SEQUENCEMENT;
Pr. Abdelmajid HAJAMI
Remarque :
Après la dernière définition de signal de
l’instruction Port il ne faut jamais mettre
de point virgule.
0)
155
Le langage VHDL
Déclaration de l’entité et des E/S (I/O)
L’instruction port :
Syntaxe:
NOM_DU_SIGNAL :
sens type;
Exemple:
CLOCK:
in
std_logic;
BUS :
out std_logic_vector (7 downto 0);
On doit définir pour chaque signal :
Le NOM_DU_SIGNAL, le sens et le type.
Pr. Abdelmajid HAJAMI
156
Le langage VHDL
Déclaration de l’entité et des E/S (I/O)
L’instruction port :
Le nom du signal :
Il est composé de caractères, le premier caractère doit être une
lettre, sa longueur est quelconque, mais elle ne doit pas dépasser une
ligne de code.
VHDL n’est pas sensible à la « casse », c’est à dire qu’il ne fait pas
la distinction entre les majuscules et les minuscules.
Pr. Abdelmajid HAJAMI
157
Le langage VHDL
Déclaration de l’entité et des E/S (I/O)
L’instruction port :
Le sens du signal :
- in : pour un signal en entrée.
- out: pour un signal en sortie.
- inout: pour un signal en entrée sortie
- buffer: pour un signal en sortie mais utilisé comme entrée dans la description.
Pr. Abdelmajid HAJAMI
158
Le langage VHDL
Déclaration de l’entité et des E/S (I/O)
L’instruction port :
Le type du signal :
Le TYPE utilisé pour les signaux d’entrées / sorties est :
- le std_logic pour un signal.
- le std_logic_vector pour un bus composé de plusieurs signaux.
Par exemple un bus bidirectionnel de 5 bits s’écrira :
LATCH : inout std_logic_vector (4 downto 0) ;
Où
LATCH(4) correspond au MSB et LATCH(0) correspond au LSB.
Pr. Abdelmajid HAJAMI
159
Le langage VHDL
Déclaration de l’entité et des E/S (I/O)
L’instruction port :
Les valeurs que peut prendre un signal de type std_logic sont :
- ‘0’ ou ‘L’ : pour un niveau bas.
- ‘1’ ou ‘H’ : pour un niveau haut.
- ‘Z’ : pour état haute impédance.
- ‘-‘ : Quelconque, c’est à dire n’importe quelle valeur.
Pr. Abdelmajid HAJAMI
160
Le langage VHDL
Déclaration de l’entité et des E/S (I/O)
Exemples de description d’entités
entity COUNT is
port(CLK, RST:
CNT
:
);
end COUNT;
in std_logic;
inout std_logic_vector(2 downto 0)
entity COMP4BIT is
port (A,B :in std_logic_vector(3 downto 0);
PLUS,MOINS,EGAL :out std_logic);
end COMP4BIT;
Pr. Abdelmajid HAJAMI
161
Le langage VHDL
Déclaration de l’entité et des E/S (I/O)
Exemples de description d’entités
entity DEC7SEG is
port (
A : in std_logic;
B : in std_logic;
C : in std_logic;
D : in std_logic;
SA : out std_logic;
SB : out std_logic;
SC : out std_logic;
SD : out std_logic;
SE : out std_logic;
SF : out std_logic;
SG : out std_logic
);
end DEC7SEG;
Pr. Abdelmajid HAJAMI
entity DEC7SEG4 is
port (DEC :in std_logic_vector(3 downto 0);
SEG:out std_logic_vector(0 to 6)
);
end DEC7SEG4;
162
Le langage VHDL
Déclaration de l’entité et des E/S (I/O)
Exemples de description d’entités
Exemple:
Soit le signal d’entrée A de 8 bits, on le déclarera en VHDL comme suit :
A : in std_logic_vector ( 7 downto 0 ) ;
Ou bien :
A : in std_logic_vector (0 to 7);
La différence entre les deux expressions est l’indice du MSB et du LSB. Dans la première expression,
l’indice du MSB est A(7), celui du LSB est A(0). Dans la deuxième expression, l’indice du MSB est
A(0), celui du LSB est A(7).
Pr. Abdelmajid HAJAMI
163
Le langage VHDL
Déclaration de l’entité et des E/S (I/O)
Remarque
On peut utiliser le type bit à la place de std_logic, et le type bit_vector à la
place de std_logic_vector,
la différence entre eux est que le type bit ne possède que deux état : ‘0’ et ‘1’
ce qui est très limité car il faut prendre en considération les autres états, c’est
pourquoi on préfère le type std_logic au type bit.
Pr. Abdelmajid HAJAMI
164
Le langage VHDL
Déclaration de l’architecture correspondante à l’entité
description du fonctionnement
L’architecture décrit le fonctionnement souhaité pour un circuit ou une partie du circuit.
En effet le fonctionnement d’un circuit est généralement décrit par plusieurs modules VHDL.
Un module représente le couple ENTITE/ARCHITECTURE.
Dans le cas de simples PLDs on trouve souvent un seul module.
À travers les instructions, l’architecture établit les relations entre les entrées et les sorties.
On peut avoir un fonctionnement purement combinatoire, séquentiel voire les deux séquentiel
et combinatoire.
Pr. Abdelmajid HAJAMI
165
Le langage VHDL
Déclaration de l’architecture correspondante à l’entité
Exemple 1 : Opérateurs logiques de base
-- Opérateurs logiques de base
entity PORTES is
port (A,B :in std_logic;
Y1,Y2,Y3,Y4,Y5,Y6,Y7:out std_logic);
end PORTES;
architecture DESCRIPTION of PORTES is
begin
Y1 <= A and B;
Y2 <= A or B;
Y3 <= A xor B;
Y4 <= not A;
Y5 <= A nand B;
Y6 <= A nor B;
Y7 <= not(A xor B);
end DESCRIPTION;
Pr. Abdelmajid HAJAMI
166
Exemple 2 : Décodeurs 7 segments
-- Décodeurs 7 segments
entity DEC7SEG4 is
port (DEC :in std_logic_vector(3 downto 0);
SEG:out std_logic_vector(0 to 6));
end DEC7SEG4;
architecture DESCRIPTION of DEC7SEG4 is
begin
SEG <= "1111110" when DEC = 0
a
else "0110000" when DEC = 1
else "1101101" when DEC = 2
else "1111001" when DEC = 3
f
else "0110011" when DEC = 4
g
else "1011011" when DEC = 5
else "1011111" when DEC = 6
else "1110000" when DEC = 7
e
else "1111111" when DEC = 8
else "1111011" when DEC = 9
d
else "-------";
end DESCRIPTION;
Pr. Abdelmajid HAJAMI
b
c
167
Exemple 3/1 : Décodage d’adresses
-- Décodage d’adresses
Library ieee;
Use ieee.std_logic_1164.all;
Use ieee.numeric_std.all;
entity DECODAGE is
port (
A15, A14, A13, A12, A11, A10 : in std_logic;
RAM0
: out std_logic;
RAM1
: out std_logic;
RAM2
: out std_logic;
RAM3
: out std_logic;
ROM
: out std_logic;
INTER1 : out std_logic;
INTER2 : out std_logic;
INTER3 : out std_logic );
end DECODAGE;
Pr. Abdelmajid HAJAMI
168
Exemple 3/2 :Décodage d’adresses
-- Décodage d’adresses
architecture DESCRIPTION of DECODAGE is
signal ADRESSE: std_logic_vector(15 downto 0);
begin
ADRESSE <= A15 & A14 & A13 & A12 & A11 & A10 & "----------";
-- définition du bus d’adresses
ROM
<= '0' when (ADRESSE >= x"E000") and (ADRESSE <=
RAM0
<= '0' when (ADRESSE >= x"0000") and (ADRESSE <=
RAM1
<= '0' when (ADRESSE >= x"0400") and (ADRESSE <=
RAM2
<= '0' when (ADRESSE >= x"0800") and (ADRESSE <=
RAM3
<= '0' when (ADRESSE >= x"0C00") and (ADRESSE <=
INTER1 <= '0' when (ADRESSE >= x"8000") and (ADRESSE <=
INTER2 <= '0' when (ADRESSE >= x"A000") and (ADRESSE <=
INTER3 <= '0' when (ADRESSE >= x"C000") and (ADRESSE <=
end DESCRIPTION;
Pr. Abdelmajid HAJAMI
x"FFFF")
x"03FF")
x"07FF")
x"0BFF")
x"0FFF")
x"8001")
x"A001")
x"C00F")
else
else
else
else
else
else
else
else
'1';
'1';
'1';
'1';
'1';
'1';
'1';
'1';
169
Le langage VHDL
Les types de base

Le VHDL est un langage fortement typé. Chaque objet doit être déclaré et appartenir
à un type connu (ensemble de valeurs possibles). Parmi ces types :
Pr. Abdelmajid HAJAMI

Bit, Boolean, Integer,

Std_logic (dans la bibliothèque std_logic_1164),

Bit_vector, Std_logic_vector,

Signed et Unsigned,(dans la bibliothèque numeric_std),

Natural (sous type de integer limité aux nombres ≥0),

Positif ( sous type de integer limité aux nombres >0),

Character, string
170
Le langage VHDL
Les valeurs explicites

Entier : codé en binaire sur 23bits

Entier basé : base#valeur# : 2#11# , 16#1F#

Valeurs physiques : toujours laisser un espace entre la valeur et l’unité 100 ps 2 ns 5 V

Caractère : entre apostrophe ‘a’, ‘@’

Bit : entre apostrophe ‘0’, ‘1’, ‘Z’

Chaîne de caractères : entre guillemets (attention ici les minuscules et majuscules sont
significatives) "Bonjour "

Pr. Abdelmajid HAJAMI
Bus : entre guillemets "01111001 "
171
Le langage VHDL
Les instructions de base («mode concurrent »)
Logique combinatoire
le mode « concurrent »

Pour une description VHDL toutes les instructions sont évaluées et
affectent les signaux de sortie en même temps.

L’ordre dans lequel elles sont écrites les instructions n’a aucune
importance.

La description VHDL génère des structures électroniques, c’est la
grande différence entre une description VHDL et un langage
informatique classique.

Dans un système à microprocesseur, les instructions sont exécutées
les unes à la suite des autres
Pr. Abdelmajid HAJAMI
172
Le langage VHDL
Les instructions de base («mode concurrent »)
Logique combinatoire
Exemple
architecture DESCRIPTION of DECOD1_4 is
begin
D0 <= (not(IN1) and not(IN0)); -- première instruction
D1 <= (not(IN1) and IN0); -- deuxième instruction
D2 <= (IN1 and not(IN0)); -- troisième instruction
D3 <= (IN1 and IN0); -- quatrième instruction
end DESCRIPTION;
architecture DESCRIPTION of DECOD1_4 is
begin
D1 <= (not(IN1) and IN0); -- deuxième instruction
D2 <= (IN1 and not(IN0)); -- troisième instruction
D0 <= (not(IN1) AND not(IN0)); -- première instruction
D3 <= (IN1 AND IN0); -- quatrième instruction
end DESCRIPTION;
Pr. Abdelmajid HAJAMI
173
Le langage VHDL
Les instructions de base («mode concurrent »)
Logique combinatoire
Les opérateurs : l’affectation simple <=
Il permet de modifier l’état d’un signal en fonction d’autres signaux et/ou d’autres
opérateurs.
S1 <= E2 and E1 ;
Les valeurs numériques que l’on peut affecter à un signal sont les suivantes :
- ‘1’ ou ‘H’ pour un niveau haut avec un signal de 1bit.
- ‘0’ ou ‘L’ pour un niveau bas avec un signal de 1bit.
- ‘Z’ pour un état haute impédance avec un signal de 1bit.
- ‘-’ pour un état quelconque, c’est-à-dire ‘0’ ou ‘1’.
- Pour les signaux composés de plusieurs bits on utilise les guillemets " … ",
Pr. Abdelmajid HAJAMI
Les bases numériques utilisées pour les bus peuvent être :
BINAIRE , exemple : BUS <= "1001" ; -- BUS = 9 en décimal
HEXA
, exemple : BUS <= X"9" ; -- BUS = 9 en décimal
OCTAL , exemple : BUS <= O"11" ; -- BUS = 9 en décimal
174
Le langage VHDL
Les opérateurs : l’affectation simple <=
Library ieee;
Les opérateurs d’affectation :
Use ieee.std_logic_1164.all;
<=
affectation à un signal
entity AFFEC is
:=
affectation à une variable
port (
E1,E2
: in std_logic;
BUS1,BUS2,BUS3 : out std_logic_vector(3 downto 0);
S1,S2,S3,S4 : out std_logic);
end AFFEC;
architecture DESCRIPTION of AFFEC is
begin
S1 <= '1'; -- S1 = 1
S2 <= '0'; -- S2 = 0
S3 <= E1; -- S3 = E1
S4 <= '1' when (E2 ='1') else 'Z'; -- S4 = 1 si E1=1 sinon S4
-- prend la valeur haute impédance
BUS1 <= "1000";
-- BUS1 = "1000"
BUS2 <= E1 & E2 & "10";
-- BUS2 = E1 & E2 & 10
BUS3 <= x"A";
-- valeur en HEXA -> BUS3 = 10(déc)
end DESCRIPTION;
Pr. Abdelmajid HAJAMI
175
Le langage VHDL
Les instructions de base («mode concurrent »)
Logique combinatoire
L’opérateur de concaténation : &
Cet opérateur permet de joindre des signaux entre eux .
--S1
---
Soit A et B de type 3 bits et S1 de type 8 bits
A = "001" et B ="110"
<= A & B & "01" ;
S1 prendra la valeur suivante après cette affectation
S1 = "00111001"
Valeur de A
"001"
Pr. Abdelmajid HAJAMI
Valeur de B
« 110"
176
Le langage VHDL
Les instructions de base («mode concurrent »)
Les opérateurs logiques
Opérateur
ET
NON ET
OU
NON OU
OU EXCLUSIF
N OU EXCLUSIF
NON
VHDL
and
nand
or
S1 <= A sll 2 ; -- S1 = A décalé de 2 bits à gauche.
nor
S2 <= A rol 3 ; -- S2 = A avec rotation de 3 bits à gauche
xor
S3 <= not (R); -- S3 = R
xnor
not
DECALAGE A GAUCHE
DECALAGE A DROITE
ROTATION A GAUCHE
ROTATION A DROITE
Pr. Abdelmajid HAJAMI
Logique combinatoire
sll
srl
rol
ror
177
Le langage VHDL
Les instructions de base («mode concurrent »)
Les opérateurs logiques
Logique combinatoire
Pour réaliser des décalages logiques en synthèse logique,
il est préférable d’utiliser les instructions suivantes
Décalage à droite :
-- Si A est de type std_logic_vector(7 downto 0)
S1 <= ‘0’ & A(7 downto 1); -- décalage d’un bit à droite
S1 <= "000" & A(7 downto 3); -- décalage de trois bits à droite
Décalage à gauche :
-- Si A est de type std_logic_vector(7 downto 0)
S1 <= A(6 downto 0) & ‘0’; -- décalage d’un bit à gauche
S1 <= A(4 downto 0) & "000"; -- décalage de trois bits à gauche
Pr. Abdelmajid HAJAMI
178
Le langage VHDL
Les instructions de base («mode concurrent »)
Les opérateurs arithmétiques
Logique combinatoire
Pour pouvoir utiliser les opérateurs ci-dessus il faut rajouter les bibliothèques
suivantes au début du fichier VHDL:
Use ieee.numeric_std.all ;
Use ieee.std_logic_arith.all ;
Pr. Abdelmajid HAJAMI
179
Le langage VHDL
Les instructions de base («mode concurrent »)
Les opérateurs relationnels
Logique combinatoire
Ils permettent de modifier l’état d’un signal ou de signaux suivant le résultat d’un
test ou d’une condition. En logique combinatoire ils sont souvent utilisés avec les
instructions :
- when … else …
- with …. Select ….
Pr. Abdelmajid HAJAMI
180
Le langage VHDL
Les instructions de base («mode concurrent »)
L’affectation conditionnelle
Logique combinatoire
Cette instruction modifie l’état d’un signal suivant le résultat d’une condition logique
entre un ou des signaux, valeurs, constantes.
SIGNAL <= expression when condition
[else expression when condition]
[else expression];
-- S1 prend la valeur de E2 quand E1=’1’ sinon S1 prend la valeur ‘0’
S1 <= E2 when ( E1= ‘1’) else ‘0’;
Pr. Abdelmajid HAJAMI
181
Le langage VHDL
Les instructions de base («mode concurrent »)
L’affectation conditionnelle
-- Structure évoluée d’un
S2 <= E1 when (SEL="00" )
E2 when (SEL="01" )
E3 when (SEL="10" )
E4 when (SEL="11" )
else ‘0’;
Pr. Abdelmajid HAJAMI
Logique combinatoire
multiplexeur 4 vers 1
else
else
else
182
Le langage VHDL
Les instructions de base («mode concurrent »)
L’affectation sélective
Logique combinatoire
Cette instruction permet d’affecter différentes valeurs à un signal, selon les valeurs
prises par un signal dit de sélection.
with SIGNAL_DE_SELECTION select
SIGNAL <= expression when valeur_de_selection_1,
[expression when valeur_de_selection_2,]
[expression when others];
l’instruction [expression when others] n’est pas obligatoire mais fortement
conseillée, elle permet de définir la valeur du SIGNAL dans le cas où la condition n’est
pas remplie.
Pr. Abdelmajid HAJAMI
183
Le langage VHDL
Les instructions de base («mode concurrent »)
L’affectation sélective
Logique combinatoire
-- Multiplexeur 4 vers 1
with SEL select
S2 <= E1 when "00",
E2 when "01",
E3 when "10",
E4 when "11",
'0' when others;
Pr. Abdelmajid HAJAMI
184
Le langage VHDL
Les instructions du mode séquentiel
Logique séquentielle
Process

Un process est une partie de la description d’un circuit dans laquelle les
instructions sont exécutées séquentiellement c’est à dire les unes à la suite
des autres.

Il permet d’effectuer des opérations sur les signaux en utilisant les instructions
standard de la programmation structurée comme dans les systèmes à
microprocesseurs.

L’exécution d’un process est déclenchée par un ou des changements d’états
de signaux logiques. Le nom de ces signaux est défini dans la liste de
sensibilité lors de la déclaration du process.
Pr. Abdelmajid HAJAMI
185
Le langage VHDL
Les instructions du mode séquentiel
Logique séquentielle
Process
[Nom_du_process :] process(Liste_de_sensibilité_nom_des_signaux)
Begin
-- instructions du process
end process [Nom_du_process] ;
Remarque:
Le nom du process entre crochet est facultatif, mais il peut être très utile pour
repérer un process parmi d’autres lors de phases de mise au point ou de simulations.
Pr. Abdelmajid HAJAMI
186
Le langage VHDL
Les instructions du mode séquentiel
Logique séquentielle
Process
Règles de fonctionnement d’un process.
1) L’exécution d’un process a lieu à chaque changement d’état d’un signal de la liste
de sensibilité.
2) Les instructions du process s’exécutent séquentiellement.
3) Les changements d’état des signaux par les instructions du process sont pris en
compte à la fin du process.
Pr. Abdelmajid HAJAMI
187
Le langage VHDL
Les instructions du mode séquentiel
Logique séquentielle
Les structures utilisées dans un Process
L’assignation conditionnelle
if condition then
instructions
[elsif condition then instructions]
[else instructions]
end if ;
--Exemple:
if (RESET=’1’) then SORTIE <= ”0000”;
end if ;
Pr. Abdelmajid HAJAMI
188
Le langage VHDL
Les instructions du mode séquentiel
Logique séquentielle
Les structures utilisées dans un Process
L’assignation sélective
case signal_de_slection is
when valeur_de_sélection => instructions
[when others => instructions]
end case;
Pr. Abdelmajid HAJAMI
189
Le langage VHDL
Les instructions du mode séquentiel
Logique séquentielle
Les structures utilisées dans un Process
--Exemple
L’assignation sélective
case SEL is
when “000” => S1 <= E1;
when “001” => S1 <= ‘0’;
when “010” | “011” => S1 <=’1’;
-- La barre | permet de réaliser un ou logique entre les deux
-- valeurs “010” et “011”
when others => S1 <= ‘0’;
end case;
Pr. Abdelmajid HAJAMI
190
Le langage VHDL
Exemple de Process : Déclaration d’une bascule D
Library ieee;
Use ieee.std_logic_1164.all;
Use ieee.numeric_std.all;
Use ieee.std_logic_unsigned.all;
entity BASCULED is
port (
D,CLK : in std_logic;
S
: out std_logic);
end BASCULED;
architecture DESCRIPTION of BASCULED is
begin
PRO_BASCULED : process (CLK)
begin
if (CLK'event and CLK ='1') then
S <= D;
end if;
end process PRO_BASCULED;
end DESCRIPTION;
Pr. Abdelmajid HAJAMI
191
Le langage VHDL
Exemple de Process : Déclaration d’une bascule D
Library ieee;
Use ieee.std_logic_1164.all;
Use ieee.numeric_std.all;
Use ieee.std_logic_unsigned.all;
entity BASCULED is
port (
D,CLK : in std_logic;
S
: out std_logic);
end BASCULED;
architecture DESCRIPTION of BASCULED is
begin
PRO_BASCULED : process (CLK)
begin
if (CLK'event and CLK ='1') then
S <= D;
end if;
end process PRO_BASCULED;
end DESCRIPTION;
Pr. Abdelmajid HAJAMI
- Seul le signal CLK fait partie de la liste de
sensibilité. D’après les règles de fonctionnement
énoncées précédemment, seul un changement
d’état du signal CLK va déclencher le process et
par conséquent évaluer les instructions de celui-ci.
192
Le langage VHDL
Exemple de Process : Déclaration d’une bascule D
Library ieee;
Use ieee.std_logic_1164.all;
Use ieee.numeric_std.all;
- L’instruction if (CLK'event and CLK='1') then
Use ieee.std_logic_unsigned.all;
permet de détecter un front montant du signal CLK
entity BASCULED is
. La détection de front est réalisée par l’attribut Event
port (
appliqué à l’horloge CLK
D,CLK : in std_logic;
. Si on veut un déclenchement sur un front descendant, il
S
: out std_logic);
faut écrire l’instruction suivante :
end BASCULED;
if (CLK'event and CLK='0').
architecture DESCRIPTION of BASCULED is
begin
PRO_BASCULED : process (CLK)
begin
if (CLK'event and CLK ='1') then
S <= D;
end if;
end process PRO_BASCULED;
end DESCRIPTION;
193
Pr. Abdelmajid HAJAMI
Le langage VHDL
Exemple de Process : Déclaration d’une bascule D + RESET + SET
Même exemple que précédemment mais avec des entrées de présélections
de mise à zéro RESET prioritaire sur l’entrée de mise à un SET, toutes les
deux sont synchrones de l’horloge CLK.
Pr. Abdelmajid HAJAMI
194
Library ieee;
Use ieee.std_logic_1164.all;
Use ieee.numeric_std.all;
Use ieee.std_logic_unsigned.all;
entity BASCULEDSRS is
port (
D,CLK,SET,RESET : in std_logic;
S
: out std_logic);
end BASCULEDSRS;
architecture DESCRIPTION of BASCULEDSRS is
begin
PRO_BASCULEDSRS : process (CLK)
Begin
if (CLK'event and CLK ='1') then
if (RESET =’1’) then
S <= ‘0’;
elsif (SET =’1’)then
S <= ‘1’;
else
S <= D;
end if;
end if;
end process PRO_BASCULEDSRS;
end DESCRIPTION;
Pr. Abdelmajid HAJAMI
195
Le langage VHDL
Simulation : utilisation de composant
 Pour tester un projet, il faut utiliser un programme de test écrit en langage
VHDL.
 Ce programme contient une déclaration des bibliothèques, la déclaration
de l’entité du module de test à proprement dit et le code correspondant.
Exemple : simulation de la porte ET en VHDL
Pr. Abdelmajid HAJAMI
196
Le langage VHDL
Simulation : Porte ET
Step 1
 Déclaration des bibliothèques
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
Pr. Abdelmajid HAJAMI
197
Le langage VHDL
Simulation : Porte ET
Step 2
 Déclaration de l’entité test
Aucune entrée – Aucune sortie
ENTITY TestPorteET IS
END TestPorteET ;
TestPorteET
Pr. Abdelmajid HAJAMI
198
Le langage VHDL
Simulation : Porte ET
 Déclaration de l’architecture de test
Déclaration des signaux internes
TestPorteET
s_entree1
s_entree2
Pr. Abdelmajid HAJAMI
Step 3
ARCHITECTURE Test OF TestPorteET IS
SIGNAL s_entree1 : Std_Logic := '0';
SIGNAL s_entree2 : Std_Logic := '0';
SIGNAL s_sortie : Std_Logic := 'Z';
s_sortie
s_entree1, s_entree2 et s_sortie
sont des signaux internes au
programme de test,
199
Le langage VHDL
Simulation : Porte ET
 Déclaration d’un composant
Référence à un composant !!
TestPorteET
Step 4
COMPONENT PorteET
PORT (
entree1 : IN Std_Logic ;
entree2 : IN Std_Logic ;
sortie : OUT Std_Logic
) ;
END COMPONENT;
s_entree1
s_entree2
Pr. Abdelmajid HAJAMI
s_sortie
Il s’agit d’une déclaration d’un
composant de type PorteET
PorteET
entree1
entree2
sortie
200
Le langage VHDL
Simulation : Porte ET
Step 5
 Instanciation d’un composant
Instance d’un composant
porte : PorteET
√
TestPorteET
s_entree1
PorteET
entree1
entree2
s_entree2
Pr. Abdelmajid HAJAMI
Porte
s_sortie
Il s’agit d’une instanciation d’un
composant de type PorteET
sortie
PorteET
entree1
entree2
sortie
201
Le langage VHDL
Simulation : Porte ET
Step 6
 Câblage du composant (maping)
Instance d’un composant
√
porte : PorteET
PORT MAP (s_entree1,
s_entree2,
s_sortie);
TestPorteET
s_entree1
PorteET
entree1
entree2
s_entree2
Pr. Abdelmajid HAJAMI
Porte
s_sortie
Le maping s’effectue en prenant
en compte l’ordre des signaux
dans PorteET
sortie
PorteET
entree1
entree2
sortie
202
Le langage VHDL
PROCESS
BEGIN
WAIT FOR 10 ns;
s_entree1 <= '0';
s_entree2 <= '0';
Simulation : Porte ET
Step 7
WAIT FOR 10 ns;
s_entree1 <= '0';
s_entree2 <= '1';
 Génération des signaux
WAIT FOR 10 ns;
Le mapping s’effectue en
s_entree1 <= '1';
prenant en compte l’ordre des
signaux dans PorteET
s_entree2 <= '1';
WAIT FOR 10 ns;
TestPorteET
s_entree1 <= '1';
s_entree2 <= '0';
s_entree1
WAIT FOR 10 ns;
PorteET
s_sortie
entree1
s_entree1 <= '0';
sortie
entree2
s_entree2 <= '0';
PorteET
WAIT FOR 10 ns;
Porte
s_entree2
entree1
WAIT ;
sortie
entree2
END PROCESS
END Test;
Pr. Abdelmajid HAJAMI
203
Le langage VHDL
ToDo
Pr. Abdelmajid HAJAMI
204
Le langage VHDL
TD 1
 Donner la description VHDL du circuit combinatoire suivant
A
inter1
B
S
C
D
Pr. Abdelmajid HAJAMI
inter2
205
Le langage VHDL
TD 1
 Donner la description VHDL du circuit combinatoire suivant
inter1
A
S
B
C
D
Pr. Abdelmajid HAJAMI
inter2
206
Le langage VHDL
TD 2
Pr. Abdelmajid HAJAMI
207
Le langage VHDL
TD 2
Pr. Abdelmajid HAJAMI
208
Le langage VHDL
TD 2
Pr. Abdelmajid HAJAMI
209
Le langage VHDL
TD 2
Fin partie 2
Pr. Abdelmajid HAJAMI
210
Le langage VHDL
TP : ModelSim
Pr. Abdelmajid HAJAMI
211
Le langage VHDL
TP : ModelSim
Fin partie 2
Pr. Abdelmajid HAJAMI
212
Microcontrôleurs
Etudes et programmation
Pr. Abdelmajid HAJAMI
213
Architecture d’un µcontroleur
Définitions : Microprocesseur

un microprocesseur consiste en une unité centrale de traitement (UAL + registres +
unité de contrôle) entièrement contenue dans un seul circuit intégré.
Data Bus
Accumulateur 1
Register 2
Accumulateur 2
Multiplexeur
µprocesseur
Pr. Abdelmajid HAJAMI
Register 1
Flag
Register d’Indexe
ALU
Pointeur de pile
Compteur ordinaire
Control unit
@
Unité de traitement
ctrl
cmd
Unité de commande
214
Architecture d’un µcontroleur
Définitions : Calculateur

Construit autour d’un microprocesseur il contient :
3
2
1
Pr. Abdelmajid HAJAMI
215
Architecture d’un µcontroleur
Définitions : microcontrôleur

Construit autour d’un microprocesseur il contient :
Clk
RAM
ROM
EPROM
Data Bus
central
Unit
@ Bus
Control Bus
Parallel
I/O
Pr. Abdelmajid HAJAMI
Serial
I/O
CAN
Timer
216
Le µcontrôleur 68HC11
Structure du 68HC11
Développé par MOTOROLA (devenue Feescale) construit autour d’une UCT 8 bits, il possède :

un espace adressable de 64 Ko (bus d'adresses de 16 bits).

Un convertisseur analogique/numérique 8 bits multiplexé sur 8 canaux (8 entrées multiplexées).

Une interface de communication série asynchrone (RS232) (SCI)

Une interface de communication série synchrone (SPI)

Un timer 16 bits avec 3 entrées de capture et 4 sorties de comparaison plus 1 E/S programmable (Port A)

22 sources d'interruptions (internes et externes)

38 broches d'E/S polyvalentes réparties sur 5 ports (A, B, C, D).
Pr. Abdelmajid HAJAMI
217
Le µcontrôleur 68HC11
Structure interne du 68HC11
Pr. Abdelmajid HAJAMI
218
Le µcontrôleur 68HC11
Structure du 68HC11

Ports d’entrées sorties
Pr. Abdelmajid HAJAMI
219
Le µcontrôleur 68HC11
Structure du 68HC11 : Ports d’entrées sorties





Les échanges des informations entre le µC et l’environnement
extérieure se fait au moyen des ports d ’E/S.
Le 68HC11 comporte 5 port s d’E/S :

4 ports de 8 bits (8 lignes E/S) : A, B, C, E

1 ports de 6 bits (6 lignes E/S) : D
Certaines lignes sont des Entrées,
Certaines lignes sont des Sorties,
A
E
B
D
C
Certaines lignes peuvent être programmées soit en Entrée ou en
Sortie,
Pr. Abdelmajid HAJAMI
220
Le µcontrôleur 68HC11
Structure du 68HC11 : Configuration des entrées sorties

Le port B (adresse : $1004) : ne se configure pas; toujours ses lignes sont des
sorties
Port B
PB7

PB6
PB5
PB4
PB3
PB2
PB1
PB0
Le port E (adresse : $100A) : ne se configure pas; toujours ses lignes sont des
entrées
Port E
PE7
Pr. Abdelmajid HAJAMI
PE6
PE5
PE4
PE3
PE2
PE1
PE0
221
Le µcontrôleur 68HC11
Structure du 68HC11 : Configuration des entrées sorties

Le port A (adresse : $1000) : possède 3 lignes d’entrée; 3 lignes de sorties et 2
lignes d’E/S
Port A
PB7

PB6
PB5
PB4
PB3
PB2
PB1
PB0
La programmation des lignes PB3 et PB7 se fait en positionnant les bits DDRA
3 et DDRA7 du registre PACTL (adresse : $1026)
 Un
bit à 1  ligne configurée en sortie
 Un
bit à 0  ligne configurée en entrée
PACTL
DDRA7
1
1
0
Pr. Abdelmajid HAJAMI
DDRA3
0
222
Le µcontrôleur 68HC11
Structure du 68HC11 : Configuration des entrées sorties

Le port C (adresse : $1003) : est entièrement configurable en E/S
Port C
PC7

PC6
PC5
PC4
PC3
PC2
PC1
PC0
La programmation des lignes se fait en positionnant les bits du registre DDRC
(adresse : $1007)
 Un
bit à 1  ligne configurée en sortie
 Un
bit à 0  ligne configurée en entrée
Pr. Abdelmajid HAJAMI
DDRC
1
1
0
1
0
1
0
1
0
1
0
1
0
1
0
0
223
Le µcontrôleur 68HC11
Structure du 68HC11 : Configuration des entrées sorties

Le port D (adresse : $1008) : contient 6 lignes configurable en E/S
Port D
PD5

PD4
PD3
PD2
PD1
PD0
La programmation des lignes se fait en positionnant les bits du registre DDRD
(adresse : $1009)
 Un
bit à 1  ligne configurée en sortie
 Un
bit à 0  ligne configurée en entrée
Pr. Abdelmajid HAJAMI
DDRD
1
1
0
1
0
1
0
1
0
1
0
0
224
Le µcontrôleur 68HC11
Brochage du 68HC11
Le 68HC11E2 est inclus dans un boitier à 52 broches. En plus des 38 E/S des ports, il possède 14 broches:

VSS et VDD: alimentation VDD=5V, VSS=0.

XTAL et EXTAL: connections d'un quartz ou d'une horloge externe.

E et 4XOUT: sorties d'horloge.

IRQ et XIRQ: entrées d'interruptions externes.

VRH et VRL: tension de référence pour la conversion A/N. VRH<VDD.

MODA et MODB: mode de fonctionnement.

RESET: signal d'initialisation.

STRA et STRB: en mode normal (monopuce), signaux de communication avec une interface parallèle
Pr. Abdelmajid HAJAMI
225
Le µcontrôleur 68HC11
Mode de fonctionnement du 68HC11
Le 68 HC 11 est prévu pour fonctionner sous 4 modes qui sont :

1) Mode circuit seul (Single Chip). (MODA = 0; MODB = 1)
Démarrage en ROM ou EEPROM.

2) Mode étendu (ou multiplexé). (MODA = 1; MODB = 1)
Adressage sur 16 bits (64ko),possibilité d'ajouter des circuits d'interface.

4) Mode Spécial Bootstrap. (MODA = 0; MODB = 0)
Le programme est téléchargé en RAM via l'interface série (SCI) puis exécuté.

3) Mode Spécial Test. (MODA = 1; MODB = 0)
C'est un mode de fonctionnement réservé aux tests en usine, lors de la fabrication.
Pr. Abdelmajid HAJAMI
226
Le µcontrôleur 68HC11
Registres internes du 68HC11
7
A
0
7
0
15
D
0
15
IX
0
15
IY
0
15
SP
0
15
PC
0
7
Pr. Abdelmajid HAJAMI
B
CCR
0
227
Le µcontrôleur 68HC11
Registres internes du 68HC11
Les registres 8 bits :
Accumulateurs A et B deux registres 8 bits chacun, pour manipuler des
données sur 1 Octet,
La concaténation des registre A et B constitue un registre 16 bits appelé B
7
15
A
0
7
B
0
D
0
NB : D ce n’est pas un registre indépendant; c’est la concaténation de A et B.
Pr. Abdelmajid HAJAMI
228
Le µcontrôleur 68HC11
Registres internes du 68HC11
Les registres 8 bits : Le registre d’état CCR

Il s’agit d’un registre qui est susceptible d’être modifié à chaque fois
qu’une instruction est exécutée,
7
S
X
CCR
H
I
N
0
Z
V
C
C; Carry : Mis à 1 en cas de retenue lors d'une opération
arithmétique. Indique un débordement en contexte non-signé.
V; Overfow: Débordement en contexte signé.
Z; Zero: Mis à 1 si le résultat d'une opération vaut zéro.
Pr. Abdelmajid HAJAMI
229
Le µcontrôleur 68HC11
Registres internes du 68HC11
Les registres 8 bits : Le registre d’état CCR

Il s’agit d’un registre qui est susceptible d’être modifié à chaque fois
qu’une instruction est exécutée,
7
S
X
CCR
H
I
N
0
Z
V
C
N; Negative: Mis à 1 pour un résultat négatif (contexte signé).
I; Interrupt mask: Mis à 1 pour interdire les interruptions
masquables.
Pr. Abdelmajid HAJAMI
H; Half-Carry: Demi-retenue. Utilisée pour les opérations
en DCB.
230
Le µcontrôleur 68HC11
Registres internes du 68HC11
Les registres 8 bits : Le registre d’état CCR

Il s’agit d’un registre qui est susceptible d’être modifié à chaque fois
qu’une instruction est exécutée,
7
S
X
CCR
H
I
N
0
Z
V
C
X; X interrupt mask : Interruption non-masquable (entrée
XIRQ). Une fois mis à 0, ne peut plus être mis à 1.
S; Stop disable: mis à 1 pour inactiver l'instruction stop (valeur
par défaut au RESET)
Pr. Abdelmajid HAJAMI
231
Le µcontrôleur 68HC11
Registres internes du 68HC11
Les registres 16 bits
15
D
0
15
IX
0
A + B : concaténation de A et B
Registres indexes
15
IY
0
15
SP
0
Stack pointer : pointeur de pile
15
PC
0
Program pointer : pointeur de programme
Pr. Abdelmajid HAJAMI
232
Le µcontrôleur 68HC11
Registres internes du 68HC11
Les registres 16 bits
15
D
0
A + B : concaténation de A et B
Pour manipuler des données sur 16 bits
Pr. Abdelmajid HAJAMI
233
Le µcontrôleur 68HC11
Registres internes du 68HC11
Les registres 16 bits
15
IX
0
Registres indexes
15
IY
0
Ils peuvent être utilisés pour manipuler des données sur 16 bits; mais ils sont
très utilisés pour l’adressage indexé comme des registre d’indexe pour
manipuler des adresses.
Pr. Abdelmajid HAJAMI
234
Le µcontrôleur 68HC11
Registres internes du 68HC11
Les registres 16 bits
15
SP
0
Stack pointer : pointeur de pile
15
PC
0
Program pointer : pointeur de programme
SP est le pointeur de pile : il indique en permanence la prochaine adresse libre
de la pile.
PC est le compteur ordinal: il contient l’adresse de la prochaine instruction du
programme qui sera exécutée.
Pr. Abdelmajid HAJAMI
235
Le µcontrôleur 68HC11
Plan mémoires du 68HC11
Pr. Abdelmajid HAJAMI
236
Le µcontrôleur 68HC11
Ecriture d’un programme
Start
Etablissement du cahier de charge
Décomposition en Sous Problèmes
Concevoir la solution (Organigramme)
Ecrire le programme source (PS)
Assembler en programme objet (CO)
Tester le programme
Non
Test
OK ?
Chargement dans EPROM
Pr. Abdelmajid HAJAMI
End
237
Le µcontrôleur 68HC11
Jeux d’instructions du 68HC11 : Familles d’instruction
Classement en 5 grandes familles:

Instructions de traitement: regroupent les opérations arithmétiques et logiques sur les
données. exécutées entre registres ou entre registre et mémoire, le résultat étant stocké
dans un registre.

Instructions de chargement/rangement: Pour être traitées, les données doivent être
chargées dans les registres et les résultats stockés en mémoire.


chargement (load): registre  mémoire.

rangement (store): mémoire  registre
Instructions de branchement : Par défaut les instructions s'exécutent séquentiellement
dans l'ordre de rangement en mémoire. Les branchements permettent de dérouter un
programme de manière conditionnelle.
Pr. Abdelmajid HAJAMI
238
Le µcontrôleur 68HC11
Jeux d’instructions du 68HC11 : Familles d’instruction
Classement en 5 grandes familles:


Sous-programmes, pile et interruptions: Les instructions de cette catégorie
permettent

de gérer des sous-programmes (instructions d'appel et de retour)

de gérer des interruptions (sous-programmes particuliers).

de gérer explicitement une structure de données de type pile (utilisée de manière implicite
par les sous-programmes).
Instructions diverses : On range dans cette catégorie les instructions systèmes ou des
instructions inclassables par ailleurs (Exemple: l'instruction nop qui ne fait rien!)
Pr. Abdelmajid HAJAMI
239
Le µcontrôleur 68HC11
Jeux d’instructions du 68HC11 : Structure d’une instruction
Une instruction est composée de deux parties distincts et consécutives
Opérateur
(Obligatoire)
Opérande (s)
(Facultatifs selon le cas)
LDAA
# $20
Certains opérateurs ne nécessitent pas d’opérandes. Ce sont des opérations
sur registres
CLRA
Pr. Abdelmajid HAJAMI
240
Téléchargement