ΜProcessors & ΜControlers-2022
ΜProcessors & ΜControlers-2022
ΜProcessors & ΜControlers-2022
µ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.
2
Pr. Abdelmajid HAJAMI
Evaluation
Contrôles Continus
Devoirs
Travaux de recherche
Exposés
assiduité
Travaux pratiques
Absence :
3
Pr. Abdelmajid HAJAMI
Règles de travail
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
Pr. Abdelmajid HAJAMI
Electronique numérique
Rappels
5
Pr. Abdelmajid HAJAMI
Électronique
6
Pr. Abdelmajid HAJAMI
Électronique
Analogique Numérique
La discipline s’intéresse au s’intéresse au traitement des
traitement continu des signaux dont l’espace de valeurs
signaux analogiques, c’est-à-dire est discret. Ainsi, le nombre de
ceux évoluant d’une façon valeurs que peuvent prendre ces
continue dans le temps et signaux est limité. Celles-ci sont
considérés comme tels codées par
des nombres binaires.
7
Pr. Abdelmajid HAJAMI
Électronique numérique
En numérique, les composants électroniques
actifs (Diodes et transistors) fonctionnent en
régime de commutation (bloqué ; saturé = fermé ;
ouvert)
8
Pr. Abdelmajid HAJAMI
Électronique numérique
Portes logiques
Les portes logiques sont réalisées à partir de composants électroniques
élémentaires (Diodes, Résistances, Transistors),
9
Pr. Abdelmajid HAJAMI
Électronique numérique
Technologies des portes logiques
TTL CMOS
10
Pr. Abdelmajid HAJAMI
É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.
‘0’ : Normale
Commande
‘1’ : Haute impédance
11
Pr. Abdelmajid HAJAMI
É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.
12
Pr. Abdelmajid HAJAMI
Électronique numérique
Circuits logiques
Ils réalisent des fonctions logiques en faisant appel à des portes logiques
X
Y X
Circuit S Y
z S
logique z
Circuit logique
S=f(X,Y,Z)
13
Pr. Abdelmajid HAJAMI
Électronique numérique
Circuits logiques
14
Pr. Abdelmajid HAJAMI
Électronique numérique
Circuits combinatoires : Additionneur complet
Ai Σi AiBi
Bi Σ
Ci-1 Ci Ci-1
00 01 11 10
retenue
0 0 1 0 1
A B Ci-1 Σ C
1 1 0 1 0
0 0 0 0 0
Table de vérité 0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1
logigramme 15
Pr. Abdelmajid HAJAMI
Électronique numérique
Circuits combinatoires : Additionneur complet 5 bits
B4 B3 B2 B1 B0
C C4 C3 C2 C1 C0
Add Add Add Add Add
complet complet complet complet complet
n° 4 n° 3 n° 2 n° 1 n° 0
C S4 S3 S2 S1 S0
A4 A3 A2 A1 A0
16
Pr. Abdelmajid HAJAMI
É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
X0
X1
X2 Y
X3
B A
18
Pr. Abdelmajid HAJAMI
Électronique numérique
Circuits combinatoires : Multiplexage
19
Pr. Abdelmajid HAJAMI
Électronique numérique. TDs
Systèmes de numération :
Faites les changements de bases suivants:
N=100111/2= ? /10 39
N=41/8= ? /10 33
N=1F/16= ? /10 31
N=19/10 = ? /2 10011
N=125/10 = ? /8 175
N=475/10 = ? /16 1DB
N=765/8= ? /2 111110101
N=7BF/16= ? /2 11110111111
20
Pr. Abdelmajid HAJAMI
É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 = ? 1 0 0 11 0 1
+111111
1011101-101110=?
1100100
1001 x 101=?
1011101
11011 ÷ 111=?
- 1 11 01 11 1 1 0
1001 0101111
11011 111 x 101
-1111 11 1001
01101 0000.
111 1001.
0110 101101
21
Pr. Abdelmajid HAJAMI
É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.
22
Pr. Abdelmajid HAJAMI
É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.
23
Pr. Abdelmajid HAJAMI
Électronique numérique
Circuits séquentiels: Compteur asynchrone
24
Pr. Abdelmajid HAJAMI
Électronique numérique
Circuits séquentiels: Compteur asynchrone
25
Pr. Abdelmajid HAJAMI
É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.
26
Pr. Abdelmajid HAJAMI
É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.
27
Pr. Abdelmajid HAJAMI
É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.
28
Pr. Abdelmajid HAJAMI
É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
29
Pr. Abdelmajid HAJAMI
Électronique numérique
Circuits séquentiels: Registre à décalage Entrée parallèle - sortie série
30
Pr. Abdelmajid HAJAMI
Électronique numérique
Circuits séquentiels: Registre à décalage universel
31
Pr. Abdelmajid HAJAMI
É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).
a a
Q0 A
b
Q1 c f b
B
d g
Compteur Q2 Décodeur e
C
f
Q3 g
D e c
Horloge
32
Pr. Abdelmajid HAJAMI
Les Mémoires
33
Pr. Abdelmajid HAJAMI
Les mémoires
34
Pr. Abdelmajid HAJAMI
Les mémoires
– Définitions et terminologie
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.
35
Pr. Abdelmajid HAJAMI
Les mémoires
– Définitions et terminologie
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
Pr. Abdelmajid HAJAMI
Les mémoires
Cycles de fonctionnement des mémoires
Deux paramètres caractérisent la vitesse d'une mémoire.
37
Pr. Abdelmajid HAJAMI
Les mémoires Cycle de lecture
38
Pr. Abdelmajid HAJAMI
Les mémoires
Cycle de lecture
39
Pr. Abdelmajid HAJAMI
Les mémoires
Cycle d'écriture
40
Pr. Abdelmajid HAJAMI
Les mémoires Cycle d'écriture
41
Pr. Abdelmajid HAJAMI
Les mémoires
Principe :
Entrée
R/ W
Cellule mémoire
Sélection 1 bit
‘0’ : active
‘1’ : inactive
Sortie
42
Pr. Abdelmajid HAJAMI
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
43
Pr. Abdelmajid HAJAMI
Les mémoires
Principe : n entrées
n sorties
Mémoire de 6 mots de n bits taille = 6*n bits 44
Pr. Abdelmajid HAJAMI
Les mémoires
Adressage / Décodage :
n E/S
k lignes de Décodeur m mots de n bits
sélection 1/m
m = 2k
R/ W
45
Pr. Abdelmajid HAJAMI
Les mémoires
Boîtier final :
k lignes de n E/S
sélection
2k * n bits
R/ W
𝑪𝑺
46
Pr. Abdelmajid HAJAMI
Les mémoires
Adressage par un µProcesseur (Décodage d’adresses):
Data Bus
Central @ Bus
Unit
Control Bus
Parallel Serial
CAN Timer
I/O I/O
• 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,
47
Pr. Abdelmajid HAJAMI
Les mémoires
Adressage par un µProcesseur (Décodage d’adresses):
central @ Bus
Unit
Parallel Serial
CAN Timer
I/O I/O
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
48
Pr. Abdelmajid HAJAMI
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.
Notons D le bus de données (8 bits) D7 à D0. A0
A12
μP A13
A14
A15
D0
D7
R/W
49
Pr. Abdelmajid HAJAMI
Les mémoires
Adressage par un µProcesseur (Décodage d’adresses):
A0 A0
A12 A12
A13 8KO Memory
μP A14 CS
A15
D0 D0
D7 D7
R/W
50
Pr. Abdelmajid HAJAMI
Les mémoires
Adressage par un µProcesseur (Décodage d’adresses):
A0 A0 A0 A0
A12 A12 A12 A12
A13 8KO Memory 8KO Memory 2 8KO Memory 3
μP A14 CS CS CS
A15
D0 D0 D0 D0
D7 D7 D7 D7
R/W
51
Pr. Abdelmajid HAJAMI
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 : A0 A0 A0 A0
A12 A12 A12 A12
Mém 0 : 0 à 1FFFH Mém 4 : 8000H et 9FFFH A13 8KO Memory 8KO Memory 2 8KO Memory 3
A14
μP A15
CS
D0
D7
R/W
Mém 3 : 6000H et 7FFFH Mém 7 : E000H et FFFFH
52
Pr. Abdelmajid HAJAMI
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
53
Pr. Abdelmajid HAJAMI
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
Lesest alors connecté aux lignes de sortie.
Mémoires
54
Pr. Abdelmajid HAJAMI
Les mémoires Extension de la taille mémoire
TD 1
55
Pr. Abdelmajid HAJAMI
Les mémoires Extension de la taille mémoire
TD 1
@bus : A0,A1,A2
R/W R/W
RAM1 RAM 2
A3 CS CS
Les Mémoires
56
Pr. Abdelmajid HAJAMI
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
57
Pr. Abdelmajid HAJAMI
Les mémoires Extension de la taille mémoire
TD 2
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,
58
Pr. Abdelmajid HAJAMI
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 CSi des boitiers RAM et les OEi des boitiers EPROM sont valides sur un niveau bas.
Les Mémoires
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
59
Pr. Abdelmajid HAJAMI
Les mémoires Extension de la taille mémoire
A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 @Hex
@i
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0000
RAM1
@f
1
@i Les Mémoires
0
RAM2
@f
1
@i
0
EPROM1
@f
1
@i
0
EPROM2
@f
Pr. Abdelmajid HAJAMI
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 R/W
A12
A13 RAM ROM
CS CS
A14
A15
61
Pr. Abdelmajid HAJAMI
Les mémoires Extension de la taille mémoire
TD 5
On considère le schéma partiel d’un système à µC,
@bus
A13
A14 S0
A15 S1 CS (RAM)
µP S2
Decoder S3 CS (Serial)
S4
S5
S6 CS (ROM)
S7
Data bus
62
Pr. Abdelmajid HAJAMI
Les mémoires
Types de mémoire :
Mémoire
ROM
Statique
PROM
Dynamique
EPROM
EEPROM
63
Pr. Abdelmajid HAJAMI
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
64
Pr. Abdelmajid HAJAMI
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.
65
Pr. Abdelmajid HAJAMI
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).
66
Pr. Abdelmajid HAJAMI
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.
67
Pr. Abdelmajid HAJAMI
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. 68
Pr. Abdelmajid HAJAMI
Les mémoires
Mémoires RAM : dynamique Vs statique
69
Pr. Abdelmajid HAJAMI
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 :
ROM
PROM
EPROM
EEPROM
70
Pr. Abdelmajid HAJAMI
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.
71
Pr. Abdelmajid HAJAMI
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
72
Pr. Abdelmajid HAJAMI
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.
73
Pr. Abdelmajid HAJAMI
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
74
Pr. Abdelmajid HAJAMI
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.
75
Pr. Abdelmajid HAJAMI
Les mémoires
PROM : Programmable ROM
Avantages :
idem ROM
Claquage en quelques minutes
Coût relativement faible
Inconvénients :
Modification impossible (toute erreur est fatale).
76
Pr. Abdelmajid HAJAMI
Les mémoires
EPROM : Erasable Programmable ROM
EPROM EEPROM
Effacement UV Tension
78
Pr. Abdelmajid HAJAMI
Langage VHDL et conception de circuits
LES CIRCUITS LOGIQUES PROGRAMMABLES (PAL, GAL, CPLD, FPGA)
Le langage VHDL
79
Pr. Abdelmajid HAJAMI
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
F
Et si jamais
le circuit est
!
déjà réalisé
? X
X
80
Pr. Abdelmajid HAJAMI
Les circuits logiques programmables
Solutions :
ROM PLA
Read Only Memory Programmable Logic Array
81
Pr. Abdelmajid HAJAMI
Les circuits logiques programmables
82
Pr. Abdelmajid HAJAMI
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.
83
Pr. Abdelmajid HAJAMI
Les circuits logiques programmables
Solutions :
On utilise une représentation compact PLA
Programmable Logic Array
des portes logiques avec plusieurs entrées
84
Pr. Abdelmajid HAJAMI
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.
85
Pr. Abdelmajid HAJAMI
Les circuits logiques programmables
• 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 87
Pr. Abdelmajid HAJAMI
Les circuits logiques programmables
88
Pr. Abdelmajid HAJAMI
Les circuits logiques programmables
Interconnexion programmable
90
Pr. Abdelmajid HAJAMI
Les circuits logiques programmables
91
Pr. Abdelmajid HAJAMI
Les circuits logiques programmables
92
Pr. Abdelmajid HAJAMI
Les circuits logiques programmables
PLD : Exemple1
Si on veut obtenir les fonctions
Q0 a.b a.b et Q1 a. b a. b
93
Pr. Abdelmajid HAJAMI
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é.
94
Pr. Abdelmajid HAJAMI
A B C D F
0 0 0 0 0
0 0F = ҧ
𝐴𝐵𝐶𝐷
0 + 𝐴
1
ത
𝐵CD +
0 AB ҧ
𝐶D + ABC𝐷ഥ + ABCD
0 0F = ABC1 + ABD
0 + ACD
0 + BCD
0 0 1 1 0 A B C D
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 F
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
Pr. Abdelmajid HAJAMI 1 1 1 1 95
ҧ
F = 𝐴𝐵𝐶𝐷 ത
+ 𝐴𝐵CD ҧ + ABC𝐷
+ AB𝐶D ഥ + ABCD
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.
F
96
Pr. Abdelmajid HAJAMI
Les circuits logiques programmables
Familles de PLD
Il existe plusieurs familles de PLD qui sont différenciées par leur
structure interne.
TYPE Nombre de portes intégrées Matrice ET Matrice OU Effaçable
PROM 2 000 à 500 000 Fixe Programmable Non
97
Pr. Abdelmajid HAJAMI
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.
98
Pr. Abdelmajid HAJAMI
Les circuits logiques programmables
PAL (Programmable Array Logic)
99
Pr. Abdelmajid HAJAMI
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
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).
101
Pr. Abdelmajid HAJAMI
Les circuits logiques programmables
PAL (Programmable Array Logic)
Structure des PAL
102
Pr. Abdelmajid HAJAMI
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’ ‘0’
X (HZ) X X
103
Pr. Abdelmajid HAJAMI
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 (Feed-
back).
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 104
Pr. Abdelmajid HAJAMI
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.
105
Pr. Abdelmajid HAJAMI
Les circuits logiques programmables
PAL (Programmable Array Logic)
RÉFÉRENCE DES PALS (D’APRÈS AMD).
Structure de sortie
Lettre(s) Code(s) Structure de sortie
107
Pr. Abdelmajid HAJAMI
Les circuits logiques programmables
PAL (Programmable Array Logic)
RÉFÉRENCE DES PALS (D’APRÈS AMD).
108
Pr. Abdelmajid HAJAMI
Les circuits logiques programmables
PAL (Programmable Array Logic)
RÉFÉRENCE DES PALS (D’APRÈS AMD).
109
Pr. Abdelmajid HAJAMI
Les circuits logiques programmables
PAL (Programmable Array Logic)
RÉFÉRENCE DES PALS (D’APRÈS AMD).
110
Pr. Abdelmajid HAJAMI
Les circuits logiques programmables
PAL (Programmable Array Logic)
RÉFÉRENCE DES PALS (D’APRÈS AMD).
111
Pr. Abdelmajid HAJAMI
Les circuits logiques programmables
PAL (Programmable Array Logic)
RÉFÉRENCE DES PALS (D’APRÈS AMD).
Remarques
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 ».
112
Pr. Abdelmajid HAJAMI
Les circuits logiques programmables
PAL (Programmable Array Logic)
RÉFÉRENCE DES PALS (D’APRÈS AMD).
Exemple
113
Pr. Abdelmajid HAJAMI
Les circuits logiques programmables
PAL (Programmable Array Logic)
RÉFÉRENCE DES PALS (D’APRÈS AMD).
- 2 broches d’alimentation.
114
Pr. Abdelmajid HAJAMI
Les circuits logiques programmables
PAL (Programmable Array Logic)
RÉFÉRENCE DES PALS (D’APRÈS AMD).
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.
115
Pr. Abdelmajid HAJAMI
Les circuits logiques programmables
PAL (Programmable Array Logic)
RÉFÉRENCE DES PALS (D’APRÈS AMD).
116
Pr. Abdelmajid HAJAMI
Les circuits logiques programmables
PAL (Programmable Array Logic)
RÉFÉRENCE DES PALS (D’APRÈS AMD).
117
Pr. Abdelmajid HAJAMI
Les circuits logiques programmables
PAL (Programmable Array Logic)
RÉFÉRENCE DES PALS (D’APRÈS AMD).
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.
118
Pr. Abdelmajid HAJAMI
Les circuits logiques programmables
PAL (Programmable Array Logic)
RÉFÉRENCE DES PALS (D’APRÈS AMD).
119
Pr. Abdelmajid HAJAMI
Les circuits logiques programmables
TD 1
PAL (Programmable Array Logic)
O3 = A.B.C.D,
120
Pr. Abdelmajid HAJAMI
D C B A
Réseau de OU fixe TD 1
Réseau de ET programmable O 3 O 2 O1 O0
121
Pr. Abdelmajid HAJAMI
Les circuits logiques programmables
TD 2
PAL (Programmable Array Logic)
122
Pr. Abdelmajid HAJAMI
D C B A
Réseau de OU fixe TD 2
Réseau de ET programmable O 3 O 2 O1 O0
123
Pr. Abdelmajid HAJAMI
D C B A
Réseau de OU fixe TD 2
Réseau de ET programmable O 3 O 2 O1 O0
124
Pr. Abdelmajid HAJAMI
Les circuits logiques programmables
TD 3
PAL (Programmable Array Logic)
125
Pr. Abdelmajid HAJAMI
Les circuits logiques programmables TD 3
PAL (Programmable Array Logic)
126
Pr. Abdelmajid HAJAMI
Les circuits logiques programmables
GAL (Generic Array Logic)
Présentation:
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). 127
Pr. Abdelmajid HAJAMI
Les circuits logiques programmables
GAL (Generic Array Logic)
128
Pr. Abdelmajid HAJAMI
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.
129
Pr. Abdelmajid HAJAMI
Les circuits logiques programmables
GAL (Generic Array Logic)
Référence
130
Pr. Abdelmajid HAJAMI
Les circuits logiques programmables
GAL (Generic Array Logic)
Types de GALs
Référence Nombre de Vitesse (nS) Consommation Remarque
broches (mA)
GAL 16V8 20 10, 15 ou 20 55 ou 115 Macro-cellule (1)
GAL 18V10 20 15 ou 20 115 //
GAL 20V8 24 10, 15 ou 25 55 ou 115 //
GAL 20RA10 24 15 ou 20 115 Registre asynchrone (1)
GAL 22V10 24 15, 20 ou 25 130 Macro-cellule (1)
GAL 26V12 28 15 ou 20 130 //
GAL 6001 24 30 ou 35 150 Macro-cellule (1) - Type
FPLA (2)
ispGAL 16Z8 24 20 ou 25 90 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.
131
Pr. Abdelmajid HAJAMI
Les circuits logiques programmables
GAL (Generic Array Logic)
Cellule OLMC: (Output Logic Macrocell)
132
Pr. Abdelmajid HAJAMI
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).
133
Pr. Abdelmajid HAJAMI
Les circuits logiques programmables
GAL (Generic Array Logic)
Cellule OLMC: (Output Logic Macrocell)
GAL 16V8
134
Pr. Abdelmajid HAJAMI
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.
135
Pr. Abdelmajid HAJAMI
Les circuits logiques programmables complexes
CPLD (Complex Prorammable Logic Devices)
Macro-cellules composés de :
- Une zone de portes logiques
- Une bascule
136
Pr. Abdelmajid HAJAMI
Les FPGA (Fields Programmable Gate Array).
137
Pr. Abdelmajid HAJAMI
Les FPGA (Fields Programmable Gate Array).
I/O Bloc
138
Pr. Abdelmajid HAJAMI
Les FPGA (Fields Programmable Gate Array).
139
Pr. Abdelmajid HAJAMI
Les FPGA (Fields Programmable Gate Array).
141
Pr. Abdelmajid HAJAMI
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
142
Pr. Abdelmajid HAJAMI
Le langage VHDL
Introduction
143
Pr. Abdelmajid HAJAMI
Le langage VHDL
Introduction
VHDL est utilisé pour :
144
Pr. Abdelmajid HAJAMI
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 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é.
145
Pr. Abdelmajid HAJAMI
Le langage VHDL
Langage de description VS Langage de programmation
comparaison des conceptions pour processeur
et pour circuit logique programmable
146
Pr. Abdelmajid HAJAMI
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
148
Pr. Abdelmajid HAJAMI
Le langage VHDL
Organisation fonctionnelle de développement d’un PLD.
Entrée syntaxique
Entrée schématique Langage: Diagrammes d’états
- VHDL
149
Pr. Abdelmajid HAJAMI
150
Pr. Abdelmajid HAJAMI
Le langage VHDL
Structure d’une description VHDL
151
Pr. Abdelmajid HAJAMI
152
Pr. Abdelmajid HAJAMI
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).
153
Pr. Abdelmajid HAJAMI
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;
Exemple : Remarque :
entity SEQUENCEMENT is Après la dernière définition de signal de
port ( l’instruction Port il ne faut jamais mettre
CLOCK : in std_logic; de point virgule.
RESET : in std_logic;
Q : out std_logic_vector(1 downto 0)
);
end SEQUENCEMENT;
155
Pr. Abdelmajid HAJAMI
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);
156
Pr. Abdelmajid HAJAMI
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.
157
Pr. Abdelmajid HAJAMI
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.
158
Pr. Abdelmajid HAJAMI
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.
159
Pr. Abdelmajid HAJAMI
Le langage VHDL
Déclaration de l’entité et des E/S (I/O)
L’instruction port :
160
Pr. Abdelmajid HAJAMI
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: in std_logic;
CNT : inout std_logic_vector(2 downto 0)
);
end COUNT;
entity COMP4BIT is
port (A,B :in std_logic_vector(3 downto 0);
PLUS,MOINS,EGAL :out std_logic);
end COMP4BIT;
161
Pr. Abdelmajid HAJAMI
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; entity DEC7SEG4 is
C : in std_logic; port (DEC :in std_logic_vector(3 downto 0);
D : in std_logic; SEG:out std_logic_vector(0 to 6)
SA : out std_logic; );
SB : out std_logic; end DEC7SEG4;
SC : out std_logic;
SD : out std_logic;
SE : out std_logic;
SF : out std_logic;
SG : out std_logic
);
end DEC7SEG;
162
Pr. Abdelmajid HAJAMI
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).
163
Pr. Abdelmajid HAJAMI
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.
164
Pr. Abdelmajid HAJAMI
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.
165
Pr. Abdelmajid HAJAMI
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; 166
Pr. Abdelmajid HAJAMI
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 b
else "0110011" when DEC = 4 g
else "1011011" when DEC = 5
else "1011111" when DEC = 6
else "1110000" when DEC = 7 e c
else "1111111" when DEC = 8
else "1111011" when DEC = 9
else "-------"; d
end DESCRIPTION;
167
Pr. Abdelmajid HAJAMI
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;
168
Pr. Abdelmajid HAJAMI
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 <= x"FFFF") else '1';
RAM0 <= '0' when (ADRESSE >= x"0000") and (ADRESSE <= x"03FF") else '1';
RAM1 <= '0' when (ADRESSE >= x"0400") and (ADRESSE <= x"07FF") else '1';
RAM2 <= '0' when (ADRESSE >= x"0800") and (ADRESSE <= x"0BFF") else '1';
RAM3 <= '0' when (ADRESSE >= x"0C00") and (ADRESSE <= x"0FFF") else '1';
INTER1 <= '0' when (ADRESSE >= x"8000") and (ADRESSE <= x"8001") else '1';
INTER2 <= '0' when (ADRESSE >= x"A000") and (ADRESSE <= x"A001") else '1';
INTER3 <= '0' when (ADRESSE >= x"C000") and (ADRESSE <= x"C00F") else '1';
end DESCRIPTION;
169
Pr. Abdelmajid HAJAMI
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 :
Bit_vector, Std_logic_vector,
Chaîne de caractères : entre guillemets (attention ici les minuscules et majuscules sont
significatives) "Bonjour "
171
Pr. Abdelmajid HAJAMI
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
172
Pr. Abdelmajid HAJAMI
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;
173
Pr. Abdelmajid HAJAMI
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 " … ",
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
Pr. Abdelmajid HAJAMI
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;
175
Pr. Abdelmajid HAJAMI
Le langage VHDL
Les instructions de base («mode concurrent ») Logique combinatoire
L’opérateur de concaténation : &
Valeur de A Valeur de B
"001" « 110"
176
Pr. Abdelmajid HAJAMI
Le langage VHDL
Les instructions de base («mode concurrent ») Logique combinatoire
Les opérateurs logiques
Opérateur VHDL
ET and
NON ET nand
OU or
S1 <= A sll 2 ; -- S1 = A décalé de 2 bits à gauche.
NON OU nor
S2 <= A rol 3 ; -- S2 = A avec rotation de 3 bits à gauche
OU EXCLUSIF xor
S3 <= not (R); -- S3 = R
N OU EXCLUSIF xnor
NON not
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
178
Pr. Abdelmajid HAJAMI
Le langage VHDL
Les instructions de base («mode concurrent ») Logique combinatoire
Les opérateurs arithmétiques
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 ;
179
Pr. Abdelmajid HAJAMI
Le langage VHDL
Les instructions de base («mode concurrent ») Logique combinatoire
Les opérateurs relationnels
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 ….
180
Pr. Abdelmajid HAJAMI
Le langage VHDL
Les instructions de base («mode concurrent ») Logique combinatoire
L’affectation conditionnelle
Cette instruction modifie l’état d’un signal suivant le résultat d’une condition logique
entre un ou des signaux, valeurs, constantes.
181
Pr. Abdelmajid HAJAMI
Le langage VHDL
Les instructions de base («mode concurrent ») Logique combinatoire
L’affectation conditionnelle
-- Structure évoluée d’un multiplexeur 4 vers 1
S2 <= E1 when (SEL="00" ) else
E2 when (SEL="01" ) else
E3 when (SEL="10" ) else
E4 when (SEL="11" )
else ‘0’;
182
Pr. Abdelmajid HAJAMI
Le langage VHDL
Les instructions de base («mode concurrent ») Logique combinatoire
L’affectation sélective
Cette instruction permet d’affecter différentes valeurs à un signal, selon les valeurs
prises par un signal dit de sélection.
183
Pr. Abdelmajid HAJAMI
Le langage VHDL
Les instructions de base («mode concurrent ») Logique combinatoire
L’affectation sélective
-- Multiplexeur 4 vers 1
with SEL select
S2 <= E1 when "00",
E2 when "01",
E3 when "10",
E4 when "11",
'0' when others;
184
Pr. Abdelmajid HAJAMI
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.
185
Pr. Abdelmajid HAJAMI
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.
186
Pr. Abdelmajid HAJAMI
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.
187
Pr. Abdelmajid HAJAMI
Le langage VHDL
Les instructions du mode séquentiel Logique séquentielle
189
Pr. Abdelmajid HAJAMI
Le langage VHDL
Les instructions du mode séquentiel Logique séquentielle
194
Pr. Abdelmajid HAJAMI
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; 195
Pr. Abdelmajid HAJAMI
Le langage VHDL
196
Pr. Abdelmajid HAJAMI
Le langage VHDL
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
197
Pr. Abdelmajid HAJAMI
Le langage VHDL
TestPorteET
198
Pr. Abdelmajid HAJAMI
Le langage VHDL
s_entree1
s_sortie
s_entree1, s_entree2 et s_sortie
sont des signaux internes au
programme de test,
s_entree2
199
Pr. Abdelmajid HAJAMI
Le langage VHDL
PorteET
s_entree2 entree1
sortie
entree2
200
Pr. Abdelmajid HAJAMI
Le langage VHDL
TestPorteET
Il s’agit d’une instanciation d’un
s_entree1 PorteET composant de type PorteET
s_sortie
entree1
sortie
entree2
PorteET
s_entree2 Porte
entree1
sortie
entree2
201
Pr. Abdelmajid HAJAMI
Le langage VHDL
202
Pr. Abdelmajid HAJAMI
Le langage VHDL PROCESS
BEGIN
WAIT FOR 10 ns;
s_entree1 <= '0';
Simulation : Porte ET Step 7 s_entree2 <= '0';
WAIT FOR 10 ns;
s_entree1 <= '0';
Génération des signaux s_entree2 <= '1';
Le mapping s’effectue en WAIT FOR 10 ns;
prenant en compte l’ordre des s_entree1 <= '1';
signaux dans PorteET s_entree2 <= '1';
TestPorteET WAIT FOR 10 ns;
s_entree1 <= '1';
s_entree2 <= '0';
s_entree1 PorteET WAIT FOR 10 ns;
s_sortie
entree1 s_entree1 <= '0';
sortie
entree2 s_entree2 <= '0';
PorteET WAIT FOR 10 ns;
s_entree2 Porte
entree1
sortie WAIT ;
entree2
END PROCESS
Pr. Abdelmajid HAJAMI
END Test; 203
Le langage VHDL
ToDo
204
Pr. Abdelmajid HAJAMI
Le langage VHDL
TD 1
A
inter1
B
S
C
D
inter2
205
Pr. Abdelmajid HAJAMI
Le langage VHDL
TD 1
D inter2
206
Pr. Abdelmajid HAJAMI
Le langage VHDL
TD 2
207
Pr. Abdelmajid HAJAMI
Le langage VHDL
TD 2
208
Pr. Abdelmajid HAJAMI
Le langage VHDL
TD 2
209
Pr. Abdelmajid HAJAMI
Le langage VHDL
TD 2
TP : ModelSim
211
Pr. Abdelmajid HAJAMI
Le langage VHDL
TP : ModelSim
Fin partie 2
212
Pr. Abdelmajid HAJAMI
Microcontrôleurs
Etudes et programmation
213
Pr. Abdelmajid HAJAMI
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
Flag Register 1
Accumulateur 1 Register 2
Accumulateur 2 Register d’Indexe
ALU
Pointeur de pile
Multiplexeur
Compteur ordinaire
Control unit @
Unité de traitement
ctrl cmd Unité de commande
µprocesseur
214
Pr. Abdelmajid HAJAMI
Architecture d’un µcontroleur
Définitions : Calculateur
Construit autour d’un microprocesseur il contient :
2
1
215
Pr. Abdelmajid HAJAMI
Architecture d’un µcontroleur
Définitions : microcontrôleur
Construit autour d’un microprocesseur il contient :
Data Bus
central @ Bus
Unit
Control Bus
Parallel Serial
CAN Timer
I/O I/O
216
Pr. Abdelmajid HAJAMI
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).
217
Pr. Abdelmajid HAJAMI
Le µcontrôleur 68HC11
Structure interne du 68HC11
218
Pr. Abdelmajid HAJAMI
Le µcontrôleur 68HC11
Structure du 68HC11
Ports d’entrées sorties
219
Pr. Abdelmajid HAJAMI
Le µcontrôleur 68HC11
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 PE6 PE5 PE4 PE3 PE2 PE1 PE0
221
Pr. Abdelmajid HAJAMI
Le µcontrôleur 68HC11
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 PACTL
Un bit à 0 ligne configurée en entrée DDRA7
1
DDRA3
1
0 0
222
Pr. Abdelmajid HAJAMI
Le µcontrôleur 68HC11
223
Pr. Abdelmajid HAJAMI
Le µcontrôleur 68HC11
224
Pr. Abdelmajid HAJAMI
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
225
Pr. Abdelmajid HAJAMI
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.
226
Pr. Abdelmajid HAJAMI
Le µcontrôleur 68HC11
Registres internes du 68HC11
7 A 0 7 B 0
15 D 0
15 IX 0
15 IY 0
15 SP 0
15 PC 0
7 CCR 0
227
Pr. Abdelmajid HAJAMI
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 A 0 7 B 0
15 D 0
228
Pr. Abdelmajid HAJAMI
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 CCR 0
S X H I N Z V C
S X H I N Z V C
S X H I N Z V C
231
Pr. Abdelmajid HAJAMI
Le µcontrôleur 68HC11
Registres internes du 68HC11
Les registres 16 bits
15 D 0 A + B : concaténation de A et B
15 IX 0
Registres indexes
15 IY 0
232
Pr. Abdelmajid HAJAMI
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
233
Pr. Abdelmajid HAJAMI
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.
234
Pr. Abdelmajid HAJAMI
Le µcontrôleur 68HC11
Registres internes du 68HC11
Les registres 16 bits
235
Pr. Abdelmajid HAJAMI
Le µcontrôleur 68HC11
Plan mémoires du 68HC11
236
Pr. Abdelmajid HAJAMI
Le µcontrôleur 68HC11
Start
Ecriture d’un programme Etablissement du cahier de charge
Tester le programme
Non Test
OK ?
239
Pr. Abdelmajid HAJAMI
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
LDAA # $20
240
Pr. Abdelmajid HAJAMI