Académique Documents
Professionnel Documents
Culture Documents
Version du
\ThesisDate
Cours
d'Informatique
Industrielle
Responsable Pédagogique :
Eric Magarotto
☎ : 02 31 45 27 09,
email : eric.magarotto@greyc.ensicaen.fr
www.greyc.ensicaen.fr/˜emagarot/COURS.html
Chapitre 1
Architecture - Principes Généraux
1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.1 Un peu d'histoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.2 Modèles d'architectures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Structure : composants principaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2.1 Le microprocesseur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2.2 Mémoire Principale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.2.3 Mémoires Secondaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.3 Echanges de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.3.1 Généralités sur les communications . . . . . . . . . . . . . . . . . . . . . . . . 16
1.3.2 Bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.3.3 Techniques d'échange de données . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.4 Système d'exploitation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.4.1 Généralités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.4.2 Les critères de choix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.4.3 BIOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.4.4 DOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Chapitre 2
Les Bus
2.1 Caractéristiques générales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.2 Bus processeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.2.1 Bus de données interne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.2.2 Bus frontal, de données externes . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.2.3 Bus d'adresses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.2.4 Bus de mémoire cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.3 Bus d'extension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.3.1 Bus parallèles : ISA-EISA, MCA-VLB, PCI, IDE-EIDE, AGP, SCSI . . . . . 36
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 3
Interruptions
3.1 Notion d'interruption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.1.1 Interruption matérielle et logicielle . . . . . . . . . . . . . . . . . . . . . . . . 44
3.2 Système d'interruptions hiérarchisées . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.3 Causes d'interruption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.4 Mécanisme d'interruption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.4.1 Identication de la source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.4.2 Vecteur d'interruption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.4.3 Actions à entreprendre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.4.4 Reprise du programme interrompu . . . . . . . . . . . . . . . . . . . . . . . . 49
3.4.5 Le partage des interruptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.5 Le PIC 8259 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.5.1 Architecture du PIC 8259 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.5.2 Programmer le PIC 8259 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.6 Gestion des Entrées-Sorties par interruption . . . . . . . . . . . . . . . . . . . . . . . 54
3.7 Interruptions Logicielles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.7.1 Interruptions BIOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.7.2 Interruptions DOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.8 La programmation des interruptions . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
3.8.1 Fonctions liées aux interruptions . . . . . . . . . . . . . . . . . . . . . . . . . 57
Chapitre 4
Port Parallèle
4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.1.1 Principales Caractéristiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.1.2 Norme IEEE 1284 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
i
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Table des matières
4.1.3 Signaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.1.4 Protocole . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.2 Modes de fonctionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.2.1 Mode standard SPP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.2.2 Mode étendu EPP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
4.2.3 Mode étendu ECP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
4.3 Programmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
4.3.1 Interruption logicielle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
4.3.2 Tableau des registres pour tous les modes . . . . . . . . . . . . . . . . . . . . 67
Chapitre 5
Port Série
5.1 Généralités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
5.1.1 Format et Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
5.1.2 Norme RS 232 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
5.1.3 Brochage du port série standard . . . . . . . . . . . . . . . . . . . . . . . . . 71
5.1.4 Description des signaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
5.1.5 Modalités de transmission (simplex-duplex) . . . . . . . . . . . . . . . . . . . 73
5.2 Protocoles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5.2.1 Liaison DTE-DCE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5.2.2 Liaison DTE-DTE sans contrôle de ux . . . . . . . . . . . . . . . . . . . . . 75
5.2.3 Liaison DTE-DTE avec contrôle de ux matériel . . . . . . . . . . . . . . . . 76
5.2.4 Liaison DTE-DTE avec contrôle de ux logiciel . . . . . . . . . . . . . . . . . 79
5.3 Annexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
5.3.1 Algorithme Xon-Xo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
5.3.2 Procédure de test : rebouclage entrées / sorties . . . . . . . . . . . . . . . . . 80
5.3.3 Comment reconnaître un DTE d'un DCE ? . . . . . . . . . . . . . . . . . . . 80
5.3.4 Protocole d'échange sur PC . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
5.3.5 Algorithmes émission - réception d'un caractère . . . . . . . . . . . . . . . . . 81
Chapitre 6
UART
6.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
6.1.1 Généralités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
6.1.2 Avantages de l'UART . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
6.2 Conguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
6.3 Les Registres de l'UART . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
ii
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 7
I2C
7.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
7.1.1 Présentation et domaine d'application . . . . . . . . . . . . . . . . . . . . . . 96
7.1.2 Caractéristiques générales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
7.1.3 Nouvelle caractéristiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
7.2 Le protocole I2C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
7.2.1 Les 2 modes de fonctionnement . . . . . . . . . . . . . . . . . . . . . . . . . . 98
7.2.2 La validité des données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
7.2.3 Les conditions de début / n . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
7.2.4 La transmission de données d'un octet . . . . . . . . . . . . . . . . . . . . . . 100
7.3 La gestion des conits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
7.3.1 La synchronisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
7.3.2 L'arbitrage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
7.4 L'adressage des composants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
7.4.1 Généralités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
7.4.2 Adressage standard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
7.4.3 Adresses réservées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
7.5 Mode de transfert en adressage standard . . . . . . . . . . . . . . . . . . . . . . . . . 104
7.5.1 Ecriture du maître . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
7.5.2 Lecture du maître . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
7.5.3 Format combiné . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
iii
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Table des matières
Chapitre 8
USB
8.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
8.1.1 USB 1.1 et 2.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
8.1.2 Câbles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
8.1.3 Topologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
8.2 Transactions et Transferts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
8.2.1 Modes de transmissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
8.2.2 PIPE : Préliminaire à la communication . . . . . . . . . . . . . . . . . . . . 113
8.2.3 Phases de transactions (protocole) . . . . . . . . . . . . . . . . . . . . . . . . 113
8.2.4 Modes de transferts des paquets (terminaisons) . . . . . . . . . . . . . . . . . 113
8.2.5 Séquencement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
8.3 Protocole USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
8.3.1 PIPE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
8.3.2 Trame de communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
8.3.3 Format des paquets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
8.3.4 Types de paquets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
8.3.5 Champs des paquets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
8.3.6 Détection d'erreurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
8.4 Types de transferts (terminaisons) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
8.4.1 Control Transfers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
8.4.2 Bulk Data Transfers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
8.4.3 Interrupts Transfers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
8.4.4 Isochronous Transfers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
8.5 Enumération et Descripteurs USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
8.5.1 Enumération . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
8.5.2 Descripteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
8.6 Sur votre PC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
iv
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 9
IEEE-1394
9.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
9.1.1 FireWire ? IEEE 1394 ? i-Link ? . . . . . . . . . . . . . . . . . . . . . . . . . . 128
9.1.2 Avantages de L'IEEE 1394 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
9.1.3 Utilisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
9.2 Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
9.2.1 Chipset VIA Fire xx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
9.2.2 Un bus standard ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
9.2.3 Câbles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
9.2.4 Norme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
9.3 Fonctionnement du bus FireWire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
9.3.1 Caractéristiques principales . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
9.4 Un protocole, trois couches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
9.5 Une couche physique optimisée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
9.6 Un arbitrage ecace et juste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
9.7 Plug and Play et Hot Plugging ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
9.8 IEEE 1394 b, des améliorations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
9.9 Annexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
Chapitre 10
Acquisition de Données - Temps Réel
10.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
10.2 Structure générale d'un système de mesure . . . . . . . . . . . . . . . . . . . . . . . . 139
10.2.1 Les Capteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
10.2.2 Le conditionnement du signal . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
10.2.3 Le multiplexage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
10.2.4 La Conversion (CNA et CAN) . . . . . . . . . . . . . . . . . . . . . . . . . 140
10.2.5 Le Logiciel d'Acquisition et de Traitement . . . . . . . . . . . . . . . . . . . . 140
10.2.6 Les Timer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
10.3 Généralités sur les cartes E/S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
10.4 Etude sommaire d'une carte d'acquisition . . . . . . . . . . . . . . . . . . . . . . . . 141
10.4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
10.4.2 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
10.4.3 Etude du Timer 8254 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
10.5 Annexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
10.5.1 Les Fonctions du Langage C . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
v
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Table des matières
Chapitre 11
Conclusion
Bibliographie 157
vi
Chapitre 1
Sommaire
1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Structure : composants principaux . . . . . . . . . . . . . . . . . . . . . . 4
1.3 Echanges de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.4 Système d'exploitation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.1 Introduction
Un ordinateur est une machine de traitement de l'information. Il est capable d'acquérir de
l'information, de la stocker, de la transformer en eectuant des traitements quelconques puis de la
restituer sous une autre forme. La suite des instructions décrivant la façon dont l'ordinateur doit
eectuer un certain travail est appelé programme. L'ensemble des instructions exécutables est appelé
langage. Un ordinateur peut alors être considéré comme une hiérarchie de niveaux. A chaque niveau
correspond une machine virtuelle et un langage associé.
1
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 1. Architecture - Principes Généraux
2
Chapitre 1
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
1.1. Introduction
Système
Micro-machine micro-instructions
langage binaire
Machine physique
3
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 1. Architecture - Principes Généraux
4
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
1.2. Structure : composants principaux
1.2.1 Le microprocesseur
Un microprocesseur est un circuit intégré complexe caractérisé par une très grande intégration
et doté des facultés d'interprétation et d'exécution des instructions d'un programme. Il est chargé
d'organiser les tâches précisées par le programme et d'assurer leur traitement. C'est le cerveau du
système. Il est parfois appelé CPU (Central Processing Unit ) et est caractérisé par sa fréquence
d'horloge (en MHz), sa largeur des bus de données et d'adresse, sa mémoire adressable, le nombre
de transistors 1 et la taille de la gravure (en microns). Ses performances sont caractérisées par
le CPI (Cycle Par Instruction) et le MIPS (Millions d'Instructions Par Secondes) qui dépendent
directement de la fréquence d'Horloge et son jeu d'instructions.
Un microprocesseur est construit autour de deux éléments principaux :
Ces éléments sont associés à des registres chargés de stocker les diérentes informations à traiter 2 .
L'ensemble sont reliés entre eux par des bus internes (de données et d'adresses) permettant l'échange
d'informations (voir gure 1.4).
1
Loi de Moore : pour le moment, cette loi (le nombre de transistors intégrés sur les circuits double tous les 18
mois) est toujours respectée.
2
Il existe deux types de registres : registre d'usage général (BP) connecté au bus de données et les registres
d'adresses (PP : registre pointeur et SP : pointeur de pile LIFO) connectés au bus d'adresses.
5
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 1. Architecture - Principes Généraux
Remarque 1.1 (jeu d'instructions et langage). La première étape de conception d'un micro-
processeur consiste à dénir son jeu d'instructions élémentaires, notamment le type d'instruc-
tions, leur codage, les modes d'adressage et le temps d'exécution relatif aux diverses instructions.
Le seul langage compris par le microprocesseur est le langage machine. Pour faciliter la tâche
du programmeur, on utilisera le langage assembleur (propre à chaque microprocesseur) composé
de mnémoniques (opérations de transfert, arithmétiques et logiques). Pour éviter la diculté de
mise en ÷uvre de l'assembleur, on utilise un langage de haut niveau (C, Pascal, Java, etc . . . )
plus adapté aux applications. Pour que ce dernier soit compris par le microprocesseur, il faut le
compiler (compilateur : traduction en assembleur) puis l'assembler (assembleur : conversion en code
machine). ■
6
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
1.2. Structure : composants principaux
des accumulateurs qui sont des registres servant à stocker une opérande au début et le
résultat à la n d'une opération.
7
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 1. Architecture - Principes Généraux
8
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
1.2. Structure : composants principaux
9
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 1. Architecture - Principes Généraux
10
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
1.2. Structure : composants principaux
11
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 1. Architecture - Principes Généraux
EPROM : c'est une ROM reprogrammable (mais entièrement à chaque reprogrammation) et sou-
vent (un millier de fois). L'écriture est toutefois plus lente (environ 1000 ×) que sur une
RAM.
EEPROM : c'est une EPROM améliorée car elle est eaçable électriquement mot par mot. L'uti-
lisation en RAM est très lente et son coût de réalisation est relativement élevé.
FLASH EPROM : communément appelée mémoire ash (clé USB, lecteur MP3, PDA, appareil
photo numérique), c'est une EEPROM particulière basée sur 2 technologies (NOR : cellules
en parallèle, bus d'adresse et de données dédiés ou NAND : cellules en série, interface d'E/S
indirecte, implantation plus dense).
1.2.2.5 Hiérarchie
Une mémoire idéale serait une mémoire de grande capacité, capable de stocker un maximum
d'informations et possédant un temps d'accès très faible an de pouvoir travailler rapidement sur
ces informations. Toutefois, les mémoires à grande capacité sont lentes et les rapides sont chères !
C'est pourtant la vitesse d'accès de la mémoire qui conditionne grandement les performances
globales d'un système. En eet, malgré un processeur à 3 GHz, une mémoire travaille environ à
400 MHz. On n'a jamais besoin de toute les informations en même temps, on utilisera donc les
spécicités de chaque type de mémoire de manière à optimiser les performances. On peut donc ainsi
La hiérarchie
dénir une figure suivante schématiseselon
des mémoires cettelahiérarchie des mémoires
gure suivante : :
coût
registres
cache
mémoire centrale
mémoire d'appui
gure 1.9:Figure
Hiérarchie
9 mémoire
On utilise les mémoires de faible capacité (très rapides) pour stocker des informations fréquem-
I.3.eutiles
ment Bus : au
le squelette des ordinateurs
microprocesseur tandis qu'on utilisera des mémoire à grande capacité (plus lentes)
pour les informations moins utilisées par le microprocesseur. Ainsi, plus on s'éloigne du micropro-
cesseur, plus la capacité
Un bus et le temps
est un moyen d'accès des mémoires
de communication entre lesvadifférents
augmenter.
éléments constituant une
machine. Il s'agit en général d'un ensemble de fils électriques. Les différents éléments sont reliés
1.2.3
au bus Mémoires Secondaires
par des connecteurs, dont l'ensemble constitue un fond de panier. Chaque emplacement
(slot) du fond de panier (backplane) peut recevoir une carte électronique (board). Sur un bus
Les besoins en capacité des mémoires augmentent considérablement (avec la taille des chiers
circulent différents types de signaux : adresses, données, contrôle, alimentations, etc…
par exemple). On utilise alors des mémoires secondaires souvent appelées mémoire de masse en
rapport avec la taille élevée de leur capacité. il s'agit principalement des disques.
I.3.f Entrées/Sorties
12
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
1.2. Structure : composants principaux
D'un point de vue physique, les disques durs possèdent une constitution particulière. Les plateaux
tournent sous la tête à vitesse constante. Une piste est une zone circulaire délimitée correspondant
à une rotation complète du plateau et sur laquelle sont enregistrés des séquences de bits. Cette piste
est divisée en secteurs de taille xe (généralement 512 octets). Plusieurs paramètres caractérisent
les disques durs :
capacité (en Go),
temps de positionnement de la tête,
temps de latence : il dépend de la vitesse de rotation du plateau (3 à 4 ms pour des vitesses
de 10800 à 7200 tr/mn),
débit de pointe,
rapidité du contrôleur de disque (interface IDE, SCSI ou ATA) et adaptation du protocole
ainsi que la taille des caches (ou buers).
La structure logique est aussi spécique. L'organisation en piste et secteurs est appelée le for-
matage. Il s'eectue en 3 étapes :
1. le formatage de bas niveau permet d'organiser la surface du disque en éléments simples (pistes
et secteurs). Il est eectué en usine lors de la fabrication du disque ;
2. le partitionnement (fait par l'utilisateur), il permet, entre autre, à plusieurs types de systèmes
d'exploitation d'utiliser le même disque dur ou bien à un seul système d'exploitation d'utiliser
13
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 1. Architecture - Principes Généraux
Dénition 1.4 (Cluster et FAT). Un cluster correspond à la zone minimale que peut occuper un
chier sur le disque dur et représente un ensemble de secteurs (de 1 à 16). La taille des clusters
dépend du volume du disque dur et du choix de la FAT ( File Allocation Table). Le choix de la fat
se fait par le système d'exploitation choisi (win98 = fat32). ■
14
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
1.2. Structure : composants principaux
15
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 1. Architecture - Principes Généraux
Il existe aussi les codes biphases (Manchester) : le signal d'horloge et les données sont convolués.
Il est important de vérier que les fréquences se trouvent dans la bande passante (aaiblissement
important lors du transport). Les codes NRZ et RZ possèdent un inconvénient majeur : ils possèdent
un harmonique non négligeable en 0 (composante qui passe mal au travers des équipements réseaux).
Les signaux numériques ont aussi l'inconvénient de se déformer à grande distance : on a alors un
eet capacitif comme le montre la gure ci-dessous :
16
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
1.3. Echanges de données
Pour les longues distances, on utilisera la modulation (voir électronique). D'un point de vue
électronique, on distingue 2 modes principaux :
asymétrique : les états logiques sont transmis sur la ligne par 2 niveaux de tension. Le plus utilisé
travaille en logique négative pour le 1 logique (exemple : RS 232). Les systèmes basés sur ce
mode sont sensibles aux bruits (à 20Kbit/s, 15 mètres maximum).
symétrique (diérentiel) : il s'agit d'un ampli-diérentiel. Il n'est concerné que par la diérence
de tension (insensible aux bruits). Il autorise de grandes distances (1200 mètres) à des vitesses
élevées (10 Mbit/s).
Ces considération dépendent aussi du support (physique) de communication choisi. Les données
circulent sous forme d'ondes (acoustiques, électromagnétiques, électriques ou lumineuses). Les sup-
ports peuvent être laires (câbles), aériens (ondes hertziennes) ou optiques (bre optique, laser).
Ces support subissent évidemment des perturbations qui peuvent être de diérentes natures :
parasites (bruit),
aaiblissement (perte en énergie dissipée dans la ligne) proportionnel à la longueur et la
fréquence. Une caractéristique essentielle est la bande passante (voir gure 1.15) qui repré-
sente l'intervalle de fréquence sur lequel le signal ne subit pas un aaiblissement trop grand
(supérieur à 3dB en général).
distorsion (déphasage).
etc . . .
17
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 1. Architecture - Principes Généraux
Lors d'une communication, les bits peuvent être véhiculés (par un bus ou sur un port) de deux
manières diérentes :
série : les bits sont transmis les uns à la suite des autres, sur une seule et même ligne,
parallèle : les bits sont véhiculés sur plusieurs lignes disposées en parallèle.
A première vue, le bus parallèle peut sembler plus performant que le bus série. Cependant un bus
parallèle peine plus dicilement qu'un bus série à supporter de hautes fréquences de fonctionnement.
Les fréquences de fonctionnement des bus étant de plus en plus élevées, la transmission série est en
ce moment très en vogue, comme l'attestent l'USB, le serial ATA ou le Firewire.
Dans une communication série , un seul l transporte l'information. Il y a donc un problème de
synchronisation entre émetteur et récepteur (il faut pouvoir distinguer et reconnaître les séquences
de bits utiles). Deux types de transmission remédient à ce problème :
synchrone : l'émetteur et le récepteur sont cadencés à la même fréquence d'horloge (incorporé au
bus ou bien aux données). Les horloges de réception et d'émission doivent émettre le même
signal d'horloge (pour la synchronisation). Le matériel le plus lent impose donc le rythme
des communications. On parle alors de transmission orientée message. Le temps qui sépare
l'envoi de 2 messages doit être un multiple de la durée d'un bit. Le message commence par un
ou plusieurs caractères de synchronisation puis la totalité des données. Il n'y a pas de contrôle
d'erreurs (overrun ou underrun). Pour exemples, les modes BSC ou HDLC (High level Data
18
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
1.3. Echanges de données
Link Control). Le mode synchrone est adapté aux données volumineuses et aux nécessités de
transmission rapide (le ot de bits est réparti en trames précédées d'un motif particulier, la
synchronisation).
asynchrone : la transmission a lieu caractère par caractère, le temps entre deux caractères (2
blocs de bits) n'étant pas déni. Chaque caractère est précédé d'un STARTbit et suivi d'un
ou deux STOPbits, ce qui signie que, en ASCII (étendu), il faudra 10 à 11 bits par caractère.
L'avantage des transmissions asynchrones réside dans la simplicité de la méthode (le caractère
est envoyé dès que la touche est appuyée). La synchronisation est donc imposée par le protocole.
On parle de transmission orientée caractère.
19
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 1. Architecture - Principes Généraux
1.3.2 Bus
1.3.2.1 Généralités
Un ordinateur comprend 3 composants fondamentaux :
le processeur,
la mémoire (principale et secondaire),
les unité d'entrées/sorties auxquelles sont raccordés divers périphériques.
Les bus permettent de raccorder entre eux ces divers éléments et de réguler les communications.
Dénition 1.5 (BUS). On désigne par BUS un conducteur servant de canal de transmission com-
mun entre plusieurs circuits qui peuvent s'y connecter à la demande, soit en tant qu'émetteurs, soit
en tant que récepteur ou les deux. ■
Dénition 1.6 (PORT). Dans le cas où la ligne sert uniquement à la communication entre deux
composants matériels, on parle de PORT. ■
1.3.2.2 Caractéristiques
Les caractéristiques détaillées des divers bus seront décrites dans le prochain chapitre.
20
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
1.3. Echanges de données
consommer la donnée
signaler (donnée acquise),
La consommation de la donnée se réduit le plus souvent à sa lecture dans le port de donnée et à
son rangement en mémoire.
Scrutation ( polling ) : le microprocesseur interroge l'interface pour savoir si des données
sont parvenues et doivent être traitées. Dans le cas contraire, il attend. Ce mode ralentit énor-
mément les communications. En eet, le microprocesseur est monopolisé en permanence par
l'interface et se retrouve souvent en phase d'attente. Cette technique n'est utilisable que si
l'attente est courte (l'attente étant active, elle empêche le processeur de faire autre chose). Elle
convient donc pour les périphériques rapides qui transférent les informations par blocs (écran
ou disques). Elle est à exclure dans le cas des périphériques lents (clavier, imprimante,. . . )
car le taux d'utilisation eectif du processeur serait très faible. En eet, dans le programme
d'acquisition du bloc, l'essentiel du temps serait passé dans fonction attendre (donnée dispo-
nible).
Interruption ( interrupt ) : une interruption est un signal, généralement asynchrone au pro-
gramme en cours. Le microprocesseur possède une ou plusieurs entrées réservées à cet eet.
Le processeur n'attend pas la disponibilité de la donnée, il peut mettre à prot cette période
pour exécuter un autre programme. Deux tâches (ou processus) s'exécutent en parallèle :
la tâche d'échange chaque fois que l'unité périphérique est prête à fournir ou recevoir une
donnée,
la tâche principale le reste du temps.
Le processeur exécute sa tâche principale. Dès que l'unité périphérique est prête pour un
transfert, elle envoie un signal qui engendre une demande d'interruption, en agissant sur
la ligne interruption du processeur. Par un mécanisme de commutation de tâche, la tâche
principale est interrompue et le contrôle passe à la procédure d'interruption. Celleci eectue le
transfert de la donnée et redonne le contrôle à la tâche principale. Ce transfert par interruption
se répète chaque fois que l'unité périphérique est prête. Cette technique convient au transfert
de données avec des périphériques lents (imprimantes lentes, . . . ) car les intervalles de temps
entre deux transferts consécutifs sont mis à prot pour faire avancer la tâche principale, non
prioritaire. Cette technique est évidemment la seule utilisable dans le cas où le processeur doit
réagir à des événements imprévisibles, ce qui est le cas des transferts de données par caractères
(clavier, souris, . . . ).
Les E/S gérées par interruption, bien que plus ecaces que les simples E/S programmées, de-
mandent une intervention active du processeur pour transférer des données entre la mémoire et les
modules d'E/S. En fait, tout transfert de données doit passer par le processeur. Par conséquent, ces
deux formes d'E/S sourent de deux inconvénients :
1. le débit de transfert d'E/S est limité par la vitesse à laquelle le processeur teste et sert le
périphérique,
2. le processeur est occupé à gérer chaque transfert d'E/S, ce qui demande l'exécution d'un cer-
tain nombre d'instructions. Pour transférer d'importants volumes de données, il faut employer
une technique plus ecace : le DMA (Direct Memory Access).
21
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 1. Architecture - Principes Généraux
Le principe du DMA consiste à décharger le processeur des opérations d'E/S et à les coner à
un contrôleur qui se charge d'accéder à la mémoire à la demande des périphériques. En eet, un
contrôleur de périphérique n'est généralement pas assez sophistiqué pour être capable de devenir
maître du bus système. Le DMA implique donc la présence d'un module supplémentaire sur le bus
système : le contrôleur DMA. Il est capable d'imiter le processeur et de s'octroyer le contrôle
du bus. Un contrôleur de DMA est constitué d'un registre d'adresse, d'un registre de donnée, d'un
compteur et d'une logique de commande. Il se charge du transfert de données mais le microprocesseur
doit tout de même assurer quelques tâches :
initialiser l'échange en donnant au contrôleur de DMA l'identication du périphérique concerné,
donner le sens du transfert,
fournir l'adresse du premier et du dernier mot concerné par le transfert.
Le principal avantage est que, pendant toute la durée du transfert, le microprocesseur est libre
d'eectuer un traitement quelconque. La seule contrainte est un limitation de ses propres accès
mémoire.
Deux modes sont possibles selon la nature des blocs de données à transférer :
1. Vol de cycle (cycle stealing ) : pour des débits peu élevés (≈ 1Mo/s). Comme son nom l'indique,
le principe consiste à voler un cycle bus au processeur chaque fois qu'une donnée périphérique
est prête à être transférée. Le contrôleur DMA relâche le bus entre deux transferts consécutifs,
cet intervalle permettant au processeur de faire plusieurs accès en mémoire (entrelacement des
cycles bus pilotés par le contrôleur DMA et par le processeur).
2. Rafale (burst ) pour les débits élevés, comparables aux débits entre mémoire et processeur.
Le contrôleur DMA devient maître du bus mais ne le libère que lorsque tout le bloc a été
transféré. Cette technique est beaucoup plus rapide que le transfert en mode programmé,
toutes les opérations étant faites par matériel. Le transfert du bloc de données se fait par une
rafale de cycles bus contrôlés par le contrôleur DMA, sans entrelacement avec des cycles bus
pilotés par le processeur. Les débits peuvent être très élevés car il n'y a pas de surcoût de prise
et de libération de bus entre deux transferts consécutifs.
Voici une liste de certains des dispositifs qui utilisent le contrôleur DMA :
Lecteur de disquettes,
Disque dur,
Lecteur et graveur CDROM,
Contrôleurs SCSI et PCI,
Carte son,
Carte graphique.
Plus il y a de dispositifs utilisant le contrôleur DMA, moins le processeur sera sollicité, libérant
donc sa puissance en lui permettant de se concentrer sur d'autres tâches importantes.
22
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
1.4. Système d'exploitation
23
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 1. Architecture - Principes Généraux
1.4.3 BIOS
1.4.3.1 Généralités
Dénition 1.7 (BIOS). Le BIOS (Basic Input Output System) constitue la couche basse de tous
les systèmes d'exploitations sur PC. Il s'agit d'un programme stocké sur la carte mère dont une partie
est dans une ROM, et une autre dans une EEPROM (on peut asher cette partie du BIOS). ■
Lorsque le système est mis sous tension (ou réamorcé), le BIOS fait l'inventaire du matériel
présent dans l'ordinateur et eectue un test nommé POST (Power On Self Test) an de vérier
son bon fonctionnement.
Le BIOS eectue (entre autres) :
un test du CPU,
une vérication de la RAM et de la mémoire cache,
une initialisation du timer (l'horloge interne),
une initialisation du contrôleur DMA,
une installation de toutes les fonctions du BIOS.
24
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
1.4. Système d'exploitation
Chaque modèle de PC est vendu avec une version du BIOS adapté à sa conguration matérielle
(le plus fréquent est l'AMI BIOS).
La plupart des BIOS ont un SETUP (programme de conguration) qui permet de modier la
conguration basique du système. Ce type d'information est stocké dans une RAM auto-alimentée
an que l'information soit conservée même lorsque le système est hors-tension.
Il existe de nombreux BIOS dans votre machine :
Le BIOS de la carte-mère qui va être détaillé,
Le BIOS qui contrôle le clavier,
Le BIOS de la carte vidéo,
(facultatif) Le BIOS de contrôleurs SCSI qui permettent de booter sur un périphérique SCSI,
Le BIOS de cartes réseau qui permettent de booter sur le réseau,
etc . . .
Du point de vue de l'utilisation, on peut considérer le BIOS comme une librairie de fonctions.
Chaque fonction eectue une tâche bien précise, comme par exemple, acher un caractère sur
l'écran. L'appel de l'une de ces fonctions constitue un appel système.
On pourrait envisager que les fonctions du BIOS soient simplement des procédures, que l'on
appellerait classiquement en passant les paramètres nécessaires. Ce n'est pas le cas car le mécanisme
d'appel est diérent.
En eet, il a été prévu de pouvoir modier le comportement du BIOS en cours d'utilisation, par
exemple pour gérer un nouveau périphérique ou pour modier la gestion d'un périphérique existant.
Or le code du BIOS étant en mémoire morte, il n'est pas modiable. De plus, le BIOS étant
diérent d'un ordinateur à l'autre, les adresses des fonctions changent.
Le problème est résolu par l'utilisation d'une table d'indirection, la table des vecteurs d'inter-
ruptions (IVT : Interrupt Vector Table).
Cette table est placée en mémoire principale (RAM), et contient les adresses des fonctions du
BIOS. Elle est implantée à partir de l'adresse 0000 0000 H (première case mémoire) et est initialisée
par le BIOS au moment du démarrage du PC (boot). Chaque élément de la table occupe 4 octets
(adresse sur 32 bits). La deuxième fonction du BIOS se situe donc en 0000 0004. La table possède
256 éléments (vecteurs) et occupe donc 1 Ko.
Dans l'exemple précédent, si l'on sait que la fonction d'achage du BIOS est la 33ème fonction, on
va l'appeler en appelant le 33ème vecteur qui contient l'adresse de la 1ère instruction du programme
gérant l'achage.
25
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 1. Architecture - Principes Généraux
adresse contenu
... ...
0084 F123 4560
... ...
Une adresse contient 4 octets. La 33ème interruption est accessible à l'adresse 4x33=132D soit
84H.
La table des vecteurs d'interruptions contient des valeurs diérentes pour chaque version de
BIOS, et peut être modiée pour pointer sur du code en mémoire principale, modiant alors le
BIOS existant.
En langage C, l'instruction INT n permet d'appeler la n-ième fonction de la table des vecteurs
d'interruptions. n est un entier compris entre 0 et 255 (1 octet) car il y a 256 vecteurs d'interrup-
tions dans la table.
En utilisant l'instruction INT n, l'adresse de destination est donnée par la table des vecteurs
d'interruptions et les indicateurs d'état sont automatiquement sauvegardés dans la pile. L'adresse
de retour au programme principal complète (32 bits) est également empilée.
Un programme interruption est donc un sous-programme appelé par la table des vecteurs d'in-
terruption et accessible par l'instruction INT n. A l'issu de l'exécution du sous-programme d'inter-
ruption, tous les indicateurs sont restaurés à leur anciennes valeurs, sauvegardés initialement sur la
pile par INT n.
Notons que les éventuels paramètres du sous-programme d'interruption sont toujours passés par
registre.
26
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
1.4. Système d'exploitation
1.4.4 DOS
Le système DOS (Disk Operating System), est un système d'exploitation et (donc), contrôle les
activités de l'ordinateur.
Le rôle du DOS est d'interpréter les commandes saisies au clavier par l'utilisateur. Ces com-
mandes permettent d'eectuer les tâches suivantes :
Gestion des chiers et des répertoires,
Mise à jour des disques,
Conguration du matériel,
Optimisation de la mémoire,
Exécution des programmes.
Ces commandes sont tapées à l'invite, c'est-à-dire dans le cas de MS-DOS (Microsoft DOS, le
plus connu) une lettre d'unité suivi d'une barre oblique inverse (antislash), ce qui donne A : ou C :
par exemple.
Le système DOS repose sur le BIOS dont il appelle les fonctions pour interagir avec le matériel.
27
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 1. Architecture - Principes Généraux
Les fonctions du DOS s'utilisent comme celles du BIOS via des vecteurs d'interruptions. Elles
orent des fonctionnalités de plus haut niveau que le BIOS (entrées/sorties, ouverture de chiers
sur disque, etc.).
Les fonctions du DOS s'appellent toutes à l'aide du vecteur 21H. La valeur du registre AH
permet d'indiquer quelle est la fonction que l'on appelle.
MOV AH, numéro de fonction
INT 21H
Voici à titre d'exemple quelques fonctions du DOS accessibles par int 21H :
28
Chapitre 2
Les Bus
Sommaire
On appelle Chipset l'élément chargé d'aiguiller les informations entre les diérents bus de l'ordi-
nateur an de permettre à tous les éléments constitutifs de l'ordinateur de communiquer entre eux.
Il est très souvent composé de deux éléments principaux :
Le NorthBridge est chargé de contrôler les échanges entre le processeur et la mémoire vive,
c'est la raison pour laquelle il est situé géographiquement proche du processeur. Il est parfois
appelé GMCH (Graphic and Memory Controller Hub).
Le SouthBridge appelé également contrôleur d'entrée/sortie (ou contrôleur d'extension)
gère les communications avec les périphériques d'entrée/sortie. Il est également appelé ICH
(I/O Controller Hub).
On admet généralement l'abus de langage bridge pour désigner un élément d'interconnexion
entre deux bus.
29
– Le SouthBridge (Pont Sud ou Southern Bridge appelé également contrôleur d’entrée-
CM_InfoIndus:version dusortie
mardi ou contrôleur d’extension) gère les communications avec les périphériques
29 novembre 2005 à 2 h 17
d’entrée-sortie. Le pont sud est également appelé ICH (I/O Controller Hub).
Chapitre 2. Les BusOn parle généralement de bridge (en français pont) pour désigner un élément d’inter-
connexion entre deux bus.
Processeur
Cache de
Bus processeur niveau 2
AGP
Bus AGP
North Bridge
RAM
Bus mémoire
Bus PCI
gure classique
Fig. 4.3 – Organisation 2.1: Les
d’unponts
ordinateur moderne
Dans le cas particulier ou plusieurs périphériques communiquent, il faudra gérer (avec des règles)
cette communication.Il En plus d'avoir une architecture et une connectique particulière, il est néces-
est intéressant de noter que, pour communiquer, deux bus ont besoin d’avoir la
saire d'y associer un
même protocole
largeur. Celad'échange. L'ensemble
explique pourquoi demémoire
les barrettes de ces opérations est assuré
vive doivent parfois être par le contrô-
leur d'entrée/sortie.
appariées sur certains systèmes (par exemple sur les premiers Pentium, dont la largeur
bus processeur était de 64 bits, il était nécessaire d’installer des barrettes mémoire d’une
du
30
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
2.1. Caractéristiques générales
bus (lignes) de données : liaison bidirectionnelle qui assure le transfert des informations (lecture
ou écriture) entre un élément et un autre,
bus (lignes) de commandes : liaison pour assurer la synchronisation des ux d'informations
sur les bus de données et d'adresses. Les signaux de commandes que l'on peut rencontrer
sont l'horloge (clock, les signaux de demandes d'interruption et d'accord (acknowledge),
les signaux d'arbitrage des échanges, le contrôle des échanges (read/write, type de transfert,
types des données) etc...
Les caractéristiques physiques principales des bus sont :
largeur bus d'adresse (en bits) : conditionne l'espace mémoire adressable,
largeur 6 bus de données (en bits) : conditionne le nombre d'accès nécessaires pour transporter
une donnée,
vitesse d'horloge : détermine le débit des communications,
multiplexage : les mêmes lignes physiques sont utilisées pour transporter des informations
diérentes (dans le but évident de réduire le nombre de lignes des bus et donc les coûts de
fabrication, des méthodes ont rapidement été mises au point an de faire transiter plusieurs
bits simultanément sur une même ligne. Ces techniques, regroupées sous le terme géné-
rique de multiplexage recourent, à chaque extrémité du bus, à des multiplexeurs. Le plus
utilisé est le multiplexage temporel où le multiplexeur se charge de réceptionner les diérentes
communications à transmettre et d'attribuer à chacune de cellesci des intervalles de temps
de transmission. A l'autre bout du bus, un autre multiplexeur se charge de recomposer les
diérentes communications),
temps de latence : écart de temps entre le début d'une opération sur le bus (lecture ou écriture)
et lorsque les données sont eectivement prêtes à être utilisées.
méthode d'arbitrage : décider qui va prendre le contrôle (la main ) du bus donc devenir le
maître (dans le cas de bus multi-maîtres)et posséder ainsi la possibilité d'accès en DMA,
Hot Swap : raccordement de nouveaux périphériques sans arrêt de la machine,
Plug and Play : reconnaissance des unités d'échange sans reconguration des adresses d'E/S
et d'Interruption.
Un moyen d'évaluer les performances d'un bus est de déterminer, en fonction de sa largeur (en
bits) et de sa fréquence (en cycles/s), son taux de transfert maximal théorique (ou son débit) (en
Mo/s) de la manière suivante :
f rquencebus × largeur
T xT (M o/s) =
8 × 10242
.
Exemple : bus PCI
Considérons le cas d'un bus PCI 32 bits à 66M hz . En appliquant la formule précédente, on
obtient un taux de transfert (maximal) théorique de :
66 × 32
T xT = = 253, 7 (M o/s)
8.1024.1024
Ce débit calculé est en eet très théorique : il faudrait, pour qu'il soit eectif, que le bus fonctionne
en permanence et à plein régime, ce qui s'avère plutôt rare, et même physiquement impossible étant
6
Cette largeur du bus ne mesure en fait que les lignes véhiculant les données utiles. En réalité, des lignes sup-
plémentaires sont nécessaires an de transmettre des signaux de contrôle, d'alimentation ou de synchronisation des
transferts. Par conséquent, un bus parallèle de 8 bits (par exemple) sera bel et bien constitué de 8 lignes dédiées aux
données à transférer, mais auxquelles s'ajoutera un nombre variable de lignes dites administratives. De même, un bus
de type série ne sera pas réduit à une seule ligne.
31
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 2. Les Bus
donné les inévitables temps morts engendrés par la gestion administrative du bus. Bien évidemment,
ce débit quantie a lui seul l'ecacité d'un bus, mais cette valeur dépend de plusieurs paramètres
physiques du bus : sa largeur, sa fréquence de fonctionnement et, de manière moins évidente, son
mode de fonctionnement. On parle également parfois de bande passante pour dénir le débit d'un
bus, mais de manière très impropre.
Les techniques pour augmenter la rapidité d'un bus consistent (principalement) à :
augmenter la largeur de bus, (occupe plus de place physique, plus sensible au bruit, nécessite
plus de courant),
augmenter la vitesse d'horloge (pb : tous les périphériques ne sont pas forcément capables de
supporter),
découper les transactions en paquets de données (split transaction),
modier les amplitudes des signaux électriques.
etc . . .
Il existe plusieurs possibilités pour établir une classication des bus :
selon le type de périphériques connectés :
bus système (system) aussi communément appelé bus local : c'est celui qui se connecte
directement au processeur (il possède maintenant une mémoire cache). Il est multi-processeurs.
Le transfert des données entre un bus système et les autres bus se fait via un pont (bridge)
et est géré par une puce système (system chipset)
périphérique interne (backplane) ou bus d'extension : ce type de bus est situé sur la
carte mère et les périphériques internes y sont connectés via des slots . Il forme un canal
à grande vitesse entre la mémoire et les divers périphériques (généralement parallèle donc
large, court en distance et rapide avec une grande bande passante,
bus de périphérique externe (peripheral) : ce type de bus sert à connecter des périphé-
riques externes avec la mémoire interne. Il ne possède généralement pas une bande passante
aussi rapide que le backplane bus. Il supporte généralement une grande gamme de vitesse,
peut être série ou parallèle, à grande distance et de temps de latence très variés.
par la nature de ses liaisons : parallèle ou série,
par le cadencement de ses échanges : synchrone ou asynchrone.
32
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
2.2. Bus processeur
FPU (Flotting Point Unit) qui s'échangent les données en cours de traitement au fur et à mesure
de leur stade d'exécution via ce bus de données interne. Comme ce bus est destiné à faire transiter
les données reçues depuis l'extérieur, sa largeur correspond généralement à celle du bus de données
externe, c'estàdire du bus système. Plus surprenant, et très important, la fréquence de fonctionne-
ment de ce bus s'avère très supérieure à la fréquence du bus processeur, et ceci grâce à un dispositif
particulier dénommé multiplicateur d'horloge qui permet au processeur de fonctionner en interne à
une fréquence multiple de la fréquence délivrée par la carte mère.
Très souvent lorsque l'on évoque le bus processeur, on fait en réalité référence à ce bus essentiel
que l'on appelle au choix bus de données ou bus frontal FSB (pour Front Side Bus). Son rôle est de
véhiculer les données entre le processeur et le monde extérieur, que ce soit la mémoire vive ou les
diérents périphériques internes de l'ordinateur.
La largeur du bus frontal est relativement immuable puisque depuis l'avènement du processeur
Intel Pentium, celleci stagne à 64 bits. La fréquence de fonctionnement de ce bus frontal n'a pas
la même constance puisque celleci se calque très exactement sur la fréquence de fonctionnement de
la carte mère, celleci ayant régulièrement augmenté au gré de ses diérents modèles (voir tableau
2.1).
Le bus de données est un bus très rapide. Si rapide d'ailleurs que, longtemps durant, aucun des
périphériques de l'ordinateur ne pouvait suivre son rythme infernal. Il en résultait pour le proces-
seurs de longues périodes d'attente entre deux sollicitations à ces derniers (y compris la mémoire
pourtant hypersollicitée). Les progrès technologiques aidant, certains périphériques (notamment la
carte graphique) et la mémoire se sont révélés de plus en plus véloces, au point que le bus processeur
soit sous la menace de l'engorgement. Diérentes solutions furent donc étudiées an de doper un
peu plus ses performances. Pendant très longtemps, la fréquence du FSB a été égale à la fréquence
de la carte mère. A cette époque donc, chacun des cycles du signal d'horloge permettait en théorie
un transfert de données entre le processeur et la carte mère. Avec son processeur Athlon, la so-
ciété AMD inaugura son bus EV6. Côté fréquence brute de fonctionnement, ce bus n'innovait pas
vraiment puisque limité dans un premier temps à 100 MHz, mais cette nouvelle technologie ne per-
mettait plus seulement un transfert de données par cycle d'horloge, mais deux ! D'où le qualicatif
de DDR (Double Data Rate ) donné au procédé qui permet en conséquence de doubler le débit du
bus, alors que sa fréquence réelle de fonctionnement demeure la même. La parade Intel fut baptisée
architecture Netburst et fut intégrée au processeur Pentium 4 : la fréquence est quadruplée grâce à
un bus dit quadpumped (QDR : Quad Data Rate ). Avec son très récent processeur Athlon64, AMD
remplace le traditionnel bus processeur frontal parallèle par un bus de type série tout à la fois :
très rapide : doté d'une fréquence de 200 à 800 MHz voire bientôt 1,4 GHz ;
très souple : les données transitent simultanément dans les deux sens ;
très modulable : d'une largeur pouvant varier entre 2 et 32 bits ;
très polyvalent : permettant non seulement d'interconnecter un processeur à sa carte mère
mais aussi d'interconnecter plusieurs processeurs entre eux.
AMD nomme ce bus hypertransport.
33
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 2. Les Bus
34
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
2.2. Bus processeur
Dans le but de limiter au maximum les requêtes en mémoire du processeur, les constructeurs ont
intercalé entre la puce (chipset ) et la mémoire principale un dispositif intermédiaire nommé mémoire
cache. Les processeurs modernes n'incluent pas un seul bloc de mémoire cache mais deux, voire même
trois. Cellesci sont appelées mémoires cache interne (niveau 1) et externe (niveaux 2 et 3), de rapidité
décroissante mais disposée en quantité croissante. Bien évidemment, qui dit mémoire intermédiaire
dit bus pour la relier au processeur. Celuici est tout naturellement appelé bus de mémoire cache
(Back Side Bus ). La fréquence de fonctionnement de ce bus est extrêmement variable et dépend
directement de l'endroit où est implantée la mémoire cache. Les premiers processeurs à mémoire
cache partageaient leur bus système entre l'accès à la RAM et l'accès à la mémoire cache externe.
Le processeur Intel Pentium II fut la première puce grand public à dédier un bus à la mémoire cache
externe. Dès lors, l'accès simultanée aux deux types de mémoire devenait possible (gain sensible de
rapidité). Ce dispositif, appelé architecture DIB (Double Independant Bus ), se révéla si performant
qu'il fut reconduit sur tous les processeurs ultérieurs.
35
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 2. Les Bus
36
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
2.3. Bus d'extension
Le maître et l'esclave peuvent aussi communiquer en mode DMA (de 2.1 Mo/s à 16.7 Mo/s) ou
Ultra DMA (de 16.7 Mo/s à 133 Mo/s pour l'Ultra DMA 7 ou Ultra ATA-133).
La norme ATA a vu plusieurs évolutions :
ATA 1 aussi appelée IDE : supporte les modes PIO (de 0 à 2)et DMA (de 0 à 2), assurant un débit
de 8.3 Mo/s ;
ATA 2 aussi appelée EIDE : supporte les modes PIO (de 0 à 4)et DMA (de 0 à 2), assurant un
débit de 16.6 Mo/s. L'EIDE permet désormais de supporter des bus de capacité 8.4 Go (au
lieu de 528 Mo pour l'IDE) grâce au LBA (Large Block Adressing ) ;
ATA 3 apporte le SMART (Self Monitoring Analysis and Reporting Technology ) dont le but est
de prévenir une défaillance matérielle du disque ;
ATA 4 modie le mode LBA pour une capacité des disques à 137 Go ;
ATA 5 depuis 1999, deux nouveaux modes de transfert (UltraDMA 3 et 4 aussi appelé Ultra ATA
66) ;
ATA 6 Depuis 2001, support de l'Ultra DMA 5 (Ultra ATA 100) avec un débit de 100 Mo/s. Une
nouvelle fonctionnalité, appelée AAM (Automatic Acoustic Management ) permet d'ajuster
automatiquement la vitesse d'accès aux disques supportant cette fonction an d'en réduire le
bruit de fonctionnement ;
ATA 7 Depuis 2002, support de l'Ultra DMA 6 (Ultra ATA 133) avec un débit de 133 Mo/s.
2.3.1.5 AGP
Le bus AGP (Accelerated Graphics Port ) apparu en 1997, est directement relié au bus processeur
(FSB : Front Side Bus ) et bénécie de la même fréquence, donc d'une bande passante élevée. Le
contrôleur AGP a été mis au point spéciquement pour la connexion de la carte graphique en lui
ouvrant un canal direct d'accès à la mémoire (DMA). Le port AGP 1X est cadencé à 66 MHz, ce
qui lui ore une bande passante de 264 Mo/s. Maintenant la nouvelle norme est en AGP Pro 8X
avec une bande passante d'environ 2Go/s (66,66 MHz x 8(coef.) x 32 bits ⇒ 2,11 Go/s).
2.3.1.6 SCSI
Le standard SCSI (Small Computer System Interface ) permet la connexion de plusieurs périphé-
riques de types diérents sur un ordinateur par l'intermédiaire d'une carte (contrôleur SCSI utilisant
un connecteur PCI). Le nombre de périphériques pouvant être branchés dépend de la largeur du
bus SCSI (7 périphériques avec un bus 8 bits, 15 avec un bus 16 bits). L'adressage des périphériques
se fait grâce à des numéros d'identication. Le premier numéro est l'ID (numéro permettant de
désigner le contrôleur intégré à chaque périphérique). Un périphérique SCSI peut avoir jusqu'à 8
unités logiques qui sont repérées par un identicateur appelé LUN (Logical Unit Number ). Enn,
un ordinateur peut comporter plusieurs cartes SCSI, c'est pourquoi un numéro de carte est assigné
à chacune d'entreelles. De cette façon, pour communiquer avec un périphérique, l'ordinateur doit
donner une adresse de la forme numéro de carte ID LUN.
Deux types de bus SCSI existent :
le bus asymétrique SE (Single Ended ), basé sur une architecture parallèle (narrow : 8 bits ou
wide : 16 bits)dans laquelle chaque canal circule sur un l (sensible aux interférences).
le bus diérentiel permet le transport des signaux sur une paire de ls (information codée par
diérence entre les deux ls) an de compenser les perturbations électromagnétiques (distance
de câblage plus importante, ≈ 25 m).
La première norme SCSI date de 1986 (bus cadencé à 4,77 MHz, largeur 8 bits donc débits de
l'ordre de 5 Mo/s). En 1994, apparition de la norme SCSI2 (Wide SCSI2 : 16 bits, débit de 10Mo/s)
puis Fast SCSI2(synchrone : 20 Mo/s), plus récemment Fast40 (40 Mo/s). La nouvelle norme SCSI3
37
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 2. Les Bus
intègre de nouvelles commandes (largeur 16 bits, 80 MHz DDR, chaînage de 32 périphériques, débit
de 320 Mo/s en mode Ultra320 ou bien 80 MHz QDR, débit de 640 Mo/s en mode Ultra640).
2.3.2.3 S-ATA
Le standard SATA (Serial ATA) est apparu en 2003 an de pallier les limitations de la norme
ATA (ou IDE) qui utilise un mode de transmission en parallèle. En eet le mode de transmission
en parallèle n'est pas prévu pour supporter des fréquences élevées en raison des problèmes liés aux
interférences électromagnétiques entre les diérents ls.
Le Serial ATA est basé sur une communication série où une voie est utilisée pour transmettre
les données et une autre voie sert à la transmission d'accusés de réception. Sur chacune de ces voies
les données sont transmises en utilisant le mode de transmission LVDS (Low Voltage Dierential
Signaling ) consistant à transférer un signal sur un l et son opposé sur un second l an de permettre
au récepteur de reconstituer le signal par diérence. Les données de contrôle sont transmis sur la
même voie que les données en utilisant une séquence de bits particulière pour les distinguer. Ainsi
la communication demande deux voies de transmission, chacune eectuée via deux ls, soit un total
de quatre ls pour la transmission.
Il permet d'obtenir des débits de l'ordre de 187.5 Mo/s (débit utile de 150 Mo/s à cause des bits
de stop et start). Le Serial ATA II avoisine les 375 Mo/s (300 Mo/s utiles), puis à terme 750 Mo/s
(600 Mo/s utiles). Les câbles Serial ATA peuvent mesurer jusqu'à 1 mètre de long (contre 45 cm
pour les nappes IDE). Contrairement à l'IDE, les périphériques Serial ATA sont seuls sur chaque
38
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
2.4. Bus de périphériques
câble et il n'est donc plus nécessaire de dénir des maîtres et des esclaves. D'autre part, elle permet
le Hot Plug.
2.4.1 USB
Le bus USB (Universal Serial Bus, en français Bus série universel) est, comme son nom l'indique,
basé sur une architecture de type série. Il s'agit toutefois d'une interface entréesortie beaucoup plus
rapide que les ports série standards. L'architecture qui a été retenue pour ce type de port est en
série pour deux raisons principales :
l'architecture série permet d'utiliser une cadence d'horloge beaucoup plus élevée qu'une inter-
face parallèle, car celleci ne supporte pas des fréquences trop élevées (dans une architecture
à haut débit, les bits circulant sur chaque l arrivent avec des décalages, provoquant des
erreurs).
les câbles série coûtent beaucoup moins cher que les câbles parallèles.
On peut y connecter tous les périphériques et en grand nombre (127) moyennant l'utilisation
de concentrateurs (HUB), comportant une seule entrée et plusieurs sorties. Certains sont actifs
(fournissant de l'énergie électrique), d'autres passifs. Le bus USB peut même être amené à trans-
mettre les signaux vidéo. Il possède un certain confort d'utilisation (branchement à chaud : hot
Plug & Play). La liaison repose essentiellement sur une paire diérentielle mode série (câble 4 ls).
Deux vitesses permettent de concilier le nombre d'hôtes et la rapidité de transfert pour les seuls
périphériques qui en ont besoin (détection comme lent ou rapide). L'USB 1 est limité (1.5 Mbits/s
en lent, 12 Mbit/s en rapide) tandis que l'USB 2 propose un débit max de 480 Mbits/s. Simple
mécaniquement, il ne l'est pas du point de vue électronique et nécessite une conguration précise.
La communication entre l'hôte (l'ordinateur) et les périphériques se fait selon un protocole basé
sur le principe de l'anneau à jeton (token ring ). Cela signie que la bande passante est partagée
temporellement entre tous les périphériques connectés. L'hôte émet un signal de début de séquence
chaque milliseconde, intervalle de temps pendant lequel il va donner simultanément la parole à
chacun d'entre eux. Lorsque l'hôte désire communiquer avec un périphérique, il émet un jeton (un
paquet de données, contenant l'adresse du périphérique, codé sur 7 bits) désignant un périphérique,
c'est donc l'hôte qui décide du dialogue avec les périphériques. Si le périphérique reconnaît son
adresse dans le jeton, il envoie un paquet de données en réponse, sinon il fait suivre le paquet
aux autres périphériques connectés. Les données ainsi échangées sont codées selon le codage NRZI.
Puisque l'adresse est codée sur 7 bits, 128 périphériques peuvent être connectés simultanément à
39
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 2. Les Bus
un port de ce type. Il convient en réalité de ramener ce chire à 127 car l'adresse 0 est une adresse
réservée. A raison d'une longueur de câble maximale entre deux périphériques de 5 mètres et d'un
nombre maximal de 5 hubs (alimentés), il est possible de créer une chaîne longue de 25 mètres !
Son succès et le fait qu'il est amené à remplacer le port série (RS232) justiera une étude détaillée
dans un prochain chapitre.
2.4.2 IEEE1394
Le bus IEEE 1394 (nom de la norme à laquelle il fait référence) a été mis au point à la n de
l'année 1995 an de fournir un système d'interconnexion permettant de faire circuler des données
à haute vitesse en temps réel. Apple lui a donné le nom commercial FireWire qui est devenu le
plus usité. Sony lui a également donné le nom commercial de i.Link, tandis que Texas Instrument
lui a préféré le nom de Lynx. Il s'agit ainsi d'un port permettant de connecter des périphériques
(caméscope numérique ou disques durs) à très haut débit. Il existe ainsi des cartes d'extension
(généralement au format PCI) permettant de doter un ordinateur de connecteurs FireWire.
Il utilise un câble de 6 ls (2 paires pour les données et l'horloge, et deux ls pour l'alimentation)
lui permettant d'obtenir un débit de 400 Mbit/s ou 800 Mbits/s. La nouvelle norme IEEE 1394b
est également appelée FireWire 2 ou FireWire Gigabit (débit de 3.2 Gbit/s depuis 2003). Grâce à
ses 2 ls d'horloge, le Firewire peut fonctionner selon 2 modes :
asynchrone : ce mode est basé sur une transmission de paquets à intervalles de temps variables.
Cela signie que l'hôte envoie un paquet de données et attend de recevoir un accusé de
réception du périphérique. Si l'hôte reçoit un accusé de réception, il envoie le paquet de
données suivant, sinon le paquet est à nouveau réexpédié au bout d'un temps d'attente.
isochrone : ce mode permet l'envoi de paquets de données de taille xe à intervalle de temps
régulier (cadencé grâce aux deux ls d'horloge). De cette façon aucun accusé de réception n'est
nécessaire, on a donc un débit xe et donc une bande passante garantie. De plus, étant donné
qu'aucun accusé de réception n'est nécessaire, l'adressage des périphériques est simplié et la
bande passante économisée permet de gagner en vitesse de transfert.
Il y a la possibilité d'utiliser des ponts (plusieurs bus entre eux, adressage par identicateur
de n÷ud codé sur 16 bits). Cet identicateur est scindé en deux champs : un champ de 10 bits
permettant de désigner le pont et un champ de 6 bits spéciant le n÷ud. Il est donc possible de
relier 1023 ponts sur chacun desquels il eut y avoir 63 n÷uds. Ceci permet de relier de nombreux
périphériques (65 535 au max !). La bande passante est plus élevée que pour l'USB, ce qui justie
son emploi fréquent pour des applications vidéo. De plus, sa structure et son protocole d'utilisation
est très bien adapté à l'utilisation en réseau (contrairement à l'USB).
L'alternative ou sa complémentarité avec le bus USB justiera une étude détaillée dans un
prochain chapitre
40
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
2.5. Bus embarqués
Le bus PC Card a été mis au point en 1989 par le consortium PCMCIA (Personal Computer
Memory Card International Association ) an d'étendre les capacités d'accueil de périphériques des
ordinateurs portables. Les périphériques PCMCIA sont au format carte de crédit (54 mm × 85
mm). Il existe trois types de facteur de forme correspondant à trois épaisseurs standards :
Les cartes de type I (épaisseur 3,3 mm) sont généralement utilisées pour des cartes d'extension
de mémoire.
Les cartes de type II (5 mm) servent habituellement pour des périphériques de communication
(modem, carte réseau, carte réseau sans l) et de petits disques durs.
Les cartes de type III (10,5 mm) sont en général réservées à des périphériques embarquant
des éléments mécaniques (disques dur de grosse capacité).
Depuis 1995 la norme CardBus (parfois appelée PC Card 32bit) est apparue, permettant des
transferts de données en 32 bits, cadencés à une fréquence de 33 MHz avec une tension de 3V (contre
5.5V pour le PCMCIA).
Initialement VAN (développé par Renault PSA-SAGEM-Valéo) et CAN (développé par Bosch)
ces bus était destiné à l'équipement automobile. Aujourd'hui, le bus CAN (Controller Area Network )
se situe entre bus et réseau de terrain (transmission par câble, infrarouge ou bre optique) et
représente avant tout un protocole de transmission.
Du type multi-maître, orienté messages courts avec correction d'erreurs CRC, le bus CAN est
bien adapté à la scrutation de variables émises par des stations déportées. La norme ISO 11898
spécie un débit maximum de 1Mbit/s. La longueur maximum du bus est déterminée par la charge
capacitive et le débit (1 Mbit/s 40 m, 500 Kbit/s 100 m et 20 Kbit/s 1 km). Le protocole est basé sur
le principe de diusion générale (le contenu de chaque message possède une identication reçu de
façon univoque par tous les abonnés) et l'identicateur indique la priorité du message qui détermine
l'assignation du bus lorsque plusieurs stations émettrices sont en concurrences. En version de base,
c'est un nombre de 11 bits (soit 2048 messages de 8 octets). L'adressage par le contenu assure une
grande exibilité de conguration (possibilité d'ajouter des stations sans modier la conguration
des autres stations).
41
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 2. Les Bus
42
Chapitre 3
Interruptions
Sommaire
Dénition 3.1 (Interruption). Une interruption est un signal déclenché par un événement in-
terne à la machine ou externe (envoyé au microprocesseur par un périphérique ou un programme)
pour l'avertir d'un évènement à traiter. Le microprocesseur suspend alors l'éxécution en cours à la
n de l' opération courante pour réagir à cet évènement et le traiter (le plus souvent, éxécution d'une
routine ). Une fois la tâche eectuée, il reprend le cours normal de ses opérations à l' endroit où il
avait été interrompu. ■
La plupart des fonctionnalités incluses dans un PC sont physiquement supportées par des compo-
sants autres que le microprocesseur. Par exemple, la communication série est assurée par un UART
16550 (situé dans un ASIC sur la carte mère), ou bien le clavier est controlé par un microcontrolleur
de type 8042. Puisque chaque périphérique (ici interne) travaille individuellement, il est nécessaire
de synchroniser toutes leurs opérations, notamment leurs échanges avec le microprocesseur. Une so-
lution pour ce dernier, consiste à interroger relativement fréquemment l'état de chaque composant.
Il s'agit de la scrutation ou polling.
43
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 3. Interruptions
Cette méthode est (évidemment) coûteuse en temps et possède pour inconvénient majeur de
monopoliser le microprocesseur (qui n'a plus de temps à consacrer à ses autres activités). De plus,
lorsque le ot des données est élevé, le microprocesseur peut perdre certaines données.
Une alternative consiste à utiliser des interruptions appelées logicielles. Elle possèdent la par-
ticularité d'être synchrones. En eet, elles sont générées par le microprocesseur lorsqu'il rencontre
une instruction de type INT. Ce type d'interruption est plutôt utilisé par le système d'exploita-
tion. Certaines interruptions logicielles sont appelées exceptions (fault, trap and abort). Elles sont
générées par le microprocesseur en présence d'une erreur critique interne.
En résumé, on distingue :
les interruptions (hardware) internes dites processeur : protection du système et des proces-
sus, appelées par une instruction à l'intérieur d'un programme (overow, erreur d'adressage,
code opération inexistant, problème de parité . . . ) ;
les interruptions (software) dites logicielles : permet à un processus utilisateur de faire un
appel au système. Elles sont produites par l'instruction INT n où "n" est le type de l'inter-
ruption.
les interruptions (hardware) externes dites matérielles déclenchées par une unité électronique
(lecteur, clavier, canal, contrôleur de périphérique, panne de courant, . . . ) ou par l'horloge.
Elles sont produites par l'activation des lignes INTR et NMI du microprocesseur.
44
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
3.2. Système d'interruptions hiérarchisées
45
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 3. Interruptions
Les interruptions externes matérielles sont dues aux périphériques (imprimante, terminal, hor-
loge externe, etc.) ou à des dispositifs extérieurs au système informatique (capteurs, système d'alarme,
etc.). Par exemple un périphérique va générer une interruption pour signaler au système qu'il a ter-
miné de traiter la requête précédente et qu'il est prêt pour recevoir une nouvelle commande. Dans
le contexte de contrôle de processus, des phénomènes physiques doivent être signalés au système,
par exemple le passage d'un objet devant un détecteur. Dans ce cas c'est le dispositif externe au
système qui émet un signal qui est reçu par le système comme une interruption. Le programme cou-
rant lui-même peut déclencher une interruption à l'aide d'une instruction spéciale. Cela permet, par
exemple, d'activer certains services du système qui nécessitent de bénécier de privilèges réservés
au système. C'est une interruption externe et logicielle.
Les interruptions internes produites par le processeur, sur des erreurs par exemple (division par
zéro, dépassement de capacité, erreur d'adressage, accès à une zone de mémoire protégée, etc.). Ces
interruptions sont généralement appelées exceptions. Les interruptions induites par l'horloge per-
mettent la gestion du temps par le système d'exploitation. Par exemple, le système peut programmer
l'horloge pour que celle-ci génère une interruption toutes les 10 ms. A chacune de ces interruptions
le système peut reprendre la main et exécuter un algorithme de choix de tâches (ordonnanceur) de
manière à éviter qu'un programme monopolise le CPU. Ces interruptions peuvent également servir
à la gestion du temps dans les programmes et pour la comptabilité.
46
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
3.4. Mécanisme d'interruption
peut être par exemple un pointeur dans une table contenant le vecteur d'interruption de chaque
routine de service. Un vecteur d'interruption contient l'adresse de début de la procédure
de traitement de l'interruption et le registre d'état du processeur nécessaire au début du
traitement. Celui-ci, qui peut contenir certains niveaux de privilèges nécessaires au traitement
de la requête, remplace le registre d'état courant, après que ce dernier ait été sauvegardé dans
la pile avec le reste du contexte du programme interrompu. Le traitement de l'interruption,
qui débute à la première instruction spécique à l'interruption, est donc plus rapide. Dans
ce schéma une routine de service peut elle-même être interrompue. La technique précédente
nécessite un mécanisme pour empêcher deux périphériques d'écrire leur code simultanément
sur le bus. Il est également possible de chaîner les périphériques. La priorité est alors dénie
par la position du périphérique sur la ligne d'interruption : câblage en daisy-chain.
47
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 3. Interruptions
Lors d'une interruption, le processeur se sert de la table des vecteurs (IVT) décrites à la gure 3.3.
Cette table démarre à l'adresse 0 de la mémoire. Elle contient les adresses des routines d'interruptions
(ISR) sur 4 octets (16 bits pour le segment,16 bits pour le déplacement) et les valeurs de ces quatres
octets sont chargés dans les registres CS :IP. Chaque élément contient l'adresse de début d'un
programme d'interruption sur 4 octets (oset 2 octets, segment 2 octets). La taille de la table est
donc de 4 x 256 = 1 Ko. Elle occupe les adresses 0h à 3FFh en mémoire centrale. Le tableau 3.1
donne le détails des interruptions.
48
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
3.5. Le PIC 8259
nombre de registres. Dans certaines architectures, en particulier celles orientées vers les applications
temps réel, un processeur supplémentaire peut être associé au processeur principal avec pour tâche
de gérer les opérations d'entrées/sorties et de ltrer les interruptions.
Les périphériques PCI peuvent partager les mêmes IRQ parce qu'au démarrage du PC, le BIOS
construit une table appelée PCI IRQ routing table. Cette table contient les entrées de chaque
périphérique PCI qui se verra attribuer un numéro d'IRQ ISA (les numéros de 0 à 15). Ces as-
signations d'IRQ ISA sont aussi liées, par construction matérielle cette fois, aux lignes physiques
d'interruptions PCI associées aux diérents connecteurs PCI d'un PC donné.
L'ensemble des 2 se combine en ce qui s'appelle un Link Value. Ce dernier est utilisé à chaque
fois qu'une communication s'établit avec un périphérique, et bien que des périphériques puissent
partager une même IRQ, ils auront tous un unique Link Value : il n'y a donc pas d'erreur possible !
49
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 3. Interruptions
50
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
3.5. Le PIC 8259
Le premier est implanté aux adresses d'E/S 0x20 à 0x2F tandis que le second est implanté aux
adresses d'E/S OxA0 à 0xAF.
Chaque circuit permet la gestion de 8 interruptions et gère :
la vectorisation avec les processeurs 80x86 ;
le déclenchement d'IT sur niveaux ou fronts ;
les priorités des interruptions ;
les masques d'interruptions.
Le microprocesseur (8086) dispose de trois lignes d'interruptions (matérielles) :
L'interruption NON MASQUABLE (NMI) : cette interruption ne peut pas être masquée, elle
n'est pas prise en charge par le bit "I" du registre de Flags ;
Les interruptions MASQUABLES (INTR : INTerrupt Request) : ces interruptions peuvent
être invalidées par le bit "I" du registre de Flags. On trouve aussi INTA (INTerrupt Acknowledgement)
qui signie que le microprocesseur a bien reçu par le bus de données le numéro d'IT envoyé
par le contrôleur ;
La broche RESET, provoque une réinitialisation du processeur (un reboot de la machine).
51
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 3. Interruptions
La première chose a faire est de programmer le registre OCW1 de chaque PIC (PIC1 : adresse
0x21 et PIC2 : adresse 0xA1) pour signier quelles vont être les IRQ masquables ou non en utilisant
les tableaux ?? et ??.
52
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
3.5. Le PIC 8259
53
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 3. Interruptions
54
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
3.7. Interruptions Logicielles
struct WORDREGS {
unsigned int ax, bx, cx, dx ;
unsigned int si, di, cag, ags ;
};
55
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 3. Interruptions
Un programme est dit résident si, une fois son exécution terminée, il rend le contrôle à l'en-
vironnement appelant mais reste chargé en mémoire. Il pourra alors être réactivé à tout moment,
notamment à l'aide d'une interruption. Lorsqu'il se termine, l'espace mémoire qu'il occupait n'est
pas libéré par le système d'exploitation. Un programme résidant s'écrit comme un autre programme,
il sut que la dernière instruction exécutée soit un appel à la fonction 0x31 (fonction dite TSR :
Terminate and Stay Resident) de l'interruption DOS 0x21.
Remarque 3.3. MS-DOS n'a pas été conçu pour exécuter plusieurs choses à la fois et en particulier
plusieurs appels au système (il n'est pas multi-tâches). Donc, si le programme qui s'exécute en avant-
plan utilise un service de MS-DOS, il ne faut pas que le programme de traitement de l'IT appelle
le même service, sinon c'est généralement le plantage. ■
56
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
3.8. La programmation des interruptions
La fonction biosdisk(int cmd, int face, int piste, int secteur, int nsecteur, void * buer) appele
la fonction cmd de l'IT 0x13.
La fonction bioscom(int cmd, char octet, int port) appele la routine cmd de l'IT 0x14. octet
représente l'octet à écrire si cmd = 1, port désigne le numéro du port.
La fonction bioskey(int cmd) appele la routine cmd de l'IT 0x16.
La fonction biosprint(int cmd, char octet, int port) appele la routine cmd de l'IT 0x18. octet
représente l'octet à écrire si cmd = 0, port donne le numéro du port parallèle.
La fonction biostime(int cmd, long newtime) appele la fonction cmd de l'IT 0x1A. newtime
contient la nouvelle heure en nombre de battements si cmd = 1.
Il existe en C le type interrupt. Lorsqu'une fonction est déclarée de ce type, C va générer du
code pour sauver les registres en début d'exécution et pour terminer la routine avec l'instruction
57
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 3. Interruptions
IRET signalant le retour d'une interruption. La routine de service doit éviter un appel aux routines
système car le DOS n'est pas réentrant.
Pour réaliser un traitant d'interruption (handler), on dispose de 2 fonctions utiles comme
setvect( ) qui modie le contenu d'un vecteur et getvect( ) qui lit la valeur d'un vecteur. On
dispose aussi de 2 macros disable( ) qui met en attente de traitement tous les signaux d'interruption
et enable( ) qui autorise à nouveau le traitement des interruptions.
La fonction setvect(int num, void interrupt (*f) ( )) insère la fonction f en tant que routine de
service de l'IT num. Pour éviter cette opération, il faut éviter d'être interrompu. Il faut donc faire
précéder l'appel à setvect d'un appel à disable( ) qui masquera toutes les IT. Ensuite, un appel à
enable( ) rendra à nouveau possible l'interruption du programme.
58
Chapitre 4
Port Parallèle
Sommaire
4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.2 Modes de fonctionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.3 Programmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
4.1 Introduction
Un port parallèle comprend 8 canaux permettant d'envoyer simultanément les huit bits qui
constituent un octet par l'intermédiaire des 8 ls. C'est une interface relativement rapide (par
rapport au port série) qui est traditionnellement utilisée pour les imprimantes. Le seul problème
posé par le port parallèle est qu'il ne peut guère être utilisé avec des câbles longs sans amplier le
signal, au risque de provoquer des erreurs de données. En eet, la longueur ocielle est limitée à
trois mètres sans perte de données. En fait, il est possible de dépasser cette longueur en veillant à
certains points (le câble doit posséder un bon blindage, la présence de transformateur ou autre source
électromagnétique à proximité du câble peuvent générer toutes sortes de dysfonctionnements). Le
Port parallèle a subi plusieurs évolutions :
Port parallèle standard (SPP) : les premiers PC n'étaient pas équipés de diérents types de
ports parallèles. Le seul port parallèle disponible était celui qui servait à envoyer des infor-
mations de l'ordinateur à un périphérique tel qu'une imprimante. Le caractère unidirectionnel
du port parallèle du PC original était justié par son rôle premier, qui était d'envoyer des
informations à l'imprimante. Il travaillait en mode nibble (envoi de 4 bits à la fois). Par un
procédé astucieux, ce port était cependant capable d'eectuer des connexions de sortie de 8
bits et des connexions d'entrée de 4 bits. Les ports parallèles standard sont capables d'eec-
tuer des connexions à un taux de transfert eectif d'environ 150 Ko/s en sortie et 50 Ko/s en
entrée.
Port parallèle bidirectionnel (BPP) : en 1987, IBM lança le port parallèle complètement 8
bits (en sortie comme en entrée) donc un taux de transfert d'environ 150 Ko/s en entrée et
en sortie.
Port parallèle amélioré (EPP) : le port EPP (Enhanced Parallel Port) correspond à une nou-
velle spécication et est parfois appelé port parallèle mode rapide. Paru en 1991, ce type de
port fonctionne quasiment à la vitesse d'un bus ISA. Ce port permet d'atteindre un débit de
2Mo/s.
59
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 4. Port Parallèle
Port parallèle à capacité améliorées (ECP) : le port ECP (Enhanced Capabilities Port) a
été sorti en 1992. Tout comme le port EPP, ce port constitue une version améliorée du port
parallèle standard et requiert un circuit logique spécial. Le port ECP très performant requiert
cependant un canal DMA ce qui peut provoquer des conits avec d'autres périphériques qui
utiliserait un canal DMA. Les nouveaux ordinateurs sont généralement fournis avec des ports
ECP permettant d'eectuer des communications à haut débit. La plupart du temps, les ports
ECP peuvent être convertis en port EPP ou en port parallèle standards par l'intermédiaire du
BIOS (au setup). Il est seulement préférable de placer ce port en mode EPP pour bénécier
d'un débit maximal.
La diérence principale entre EPP et ECP se situe dans le fait que EPP génère et contrôle tous
les transferts vers et depuis le périphérique tandis que ECP nécessite que le périphérique négocie le
mode reverse et contrôle le protocole (utilisation d'un controlleur dédié à l'utilisation du port ECP).
60
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
4.1. Introduction
4.1.3 Signaux
STROBE : cette ligne active à l'état bas indique à l'imprimante que des données sont présentes
sur les lignes D0 à D7 et qu'il faut les prendre en compte.
ACK : l'imprimante met à 0 cette ligne pour indiquer à l'ordinateur qu'elle a bien reçu le
caractère transmis et que ce dernier peut continuer la transmission.
BUSY : cette ligne est mise à 0 par l'imprimante lorsque son buer de réception est plein.
L'ordinateur est ainsi averti que celle-ci ne peut plus recevoir de données. Il doit attendre que
cette ligne revienne à 1 pour recommencer à émettre.
PAPER OUT : l'imprimante indique par cette ligne à l'ordinateur que l'alimentation en papier
a été interrompue.
SELECT : cette ligne indique à l'ordinateur si l'imprimante est on line ou o line.
AUTOLINEFEED : lorsque ce signal est à 1, l'imprimante doit eectuer un saut de ligne à
chaque caractère return reçu. En eet, certaines imprimantes se contentent d'eectuer un
simple retour du chariot en présence de ce caractère.
ERROR : indique à l'ordinateur que l'imprimante a détecté une erreur. INIT-RESET : l'or-
dinateur peut eectuer une initialisation de l'imprimante par l'intermédiaire de cette ligne.
SELECT IN : l'ordinateur peut mettre l'imprimante hors ligne par l'intermédiaire de ce signal.
GND : c'est la masse du PC.
61
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 4. Port Parallèle
4.1.4 Protocole
Voici un exemple de dialogue entre un PC et une imprimante :
62
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
4.2. Modes de fonctionnement
registre de commande : il garde l'état de quatre bits (C0 à C3) qui sont habituellement utilisés
comme sorties.
L'adresse de base pour le port LPT1 est habituellement 0x378 (0x278 pour LPT2)
Oset Reg. R/W bit fonc. Oset Reg. R/W bit fonc. Oset Reg. R/W bit fonc.
Base+0 Données W 7 D7 Base+1 Etat R 7 busy Base+2 Commande R/W 7 inutilisé
6 D6 6 ack 6 inutilisé
5 D5 5 paper out 5 bidirectionnel
4 D4 4 select in 4 IRQ via Ack
3 D3 3 error 3 selec printer
2 D2 2 IRQ 2 reset printer
1 D1 1 reservé 1 auto linefeed
0 D0 0 reservé 0 strobe
Pour gagner du temps au niveau du protocole, on a ignoré l'accusé de réception ACK. De plus,
dans ce mode, c'est le hardware qui eectue la totalité du Handshaking a votre place. La seule
chose qui incombe au programmeur est d'écrire l'octet de données sur le port. Ce mode permet
des transferts rapides d'octets dans les deux directions. Les signaux de protocole d'accord font la
distinction entre transfert de données et d'adresse. Il possède des registres supplémentaires (voir
tableau ??).
63
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 4. Port Parallèle
Le mode EPP permet des transferts à haute vitesse dans les deux sens. Comme il peut com-
muter rapidement le sens de transfert, le port EPP est utile pour des dispositifs qui échangent des
petits blocs de données avec de fréquents changements de direction, tels que lecteurs de disques
externes ou interfaces de réseaux. Un port EPP fait la distinction entre deux types d'informations,
habituellement dénis comme données et adresses. Le mode EPP permet quatre opérations : écri-
ture d'adresse (gure ??), écriture de données (gure ??), lecture d'adresses (gure ??), lecture de
données (gure ??), chacune ayant un protocole d'accord diérent. Les transferts EPP dièrent du
mode SPP par le fait que les circuits du port génèrent automatiquement des signaux de contrôle et
détectent les réponses venant de l'autre extrémité. Il n'est donc pas nécessaire d'instructions par un
logiciel pour charger l'état du signal de sortie Strobe ou pour lire une entrée occupée. Les opérations
de donnée et d'adresse en mode EPP utilisent diérents signaux de contrôle pour verrouiller les oc-
tets dans le dispositif de réception. Écritures et lectures d'adresse utilisent nAStrobe (C3), lectures
et écritures de données utilisent nDStrobe (C1) : ceci est un moyen simple pour que le récepteur
fasse la distinction entre les deux types d'information. Un port EPP utilise 8 registres (tableau 5),
cinq de plus que le port original SPP.
64
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
4.2. Modes de fonctionnement
Le mode ECP permet également le transfert rapide de données dans les deux sens. Il comporte
un tampon FIFO de 16 octets pour garder les données à envoyer et les données reçues. Pour les
transferts les plus rapides, le port ECP peut compresser les données pour conditionner l'information
en moins d'octets. L'accès direct à la mémoire (DMA) permet à l'unité centrale de faire d'autres
actions pendant que les données sont transmises entre le tampon et la mémoire. En plus d'être
rapide, les transferts en mode ECP sont exibles : ils peuvent s'accommoder à des périphériques
plus lents, parce que le protocole d'accord n'a pas de timeout automatique. Les signaux de protocole
d'accord font la distinction entre données et signaux de contrôle. Un octet de contrôle peut contenir
une adresse ou une information de compression de données. Du côté de l'hôte, le port ECP contient
un tampon FIFO de 16 octets qui stocke les données à envoyer et les données reçues. L'unité centrale
(CPU) peut écrire une série d'octets dans le tampon et les circuits du port veillent à les écrire dans la
même séquence sur les sorties Données du port. Dans le sens opposé, les tampons stockent une série
d'octets reçus et la CPU lit chaque octet avant que le suivant n'arrive. Si le PC envoie des données
vers un périphérique lent, le PC peut écrire jusqu'à 16 octets dans le tampon FIFO et faire d'autres
choses ensuite. Le port ECP transférera les données automatiquement lorsque le périphérique sera
prêt. De même, si un périphérique rapide veut envoyer des données vers un PC, le tampon FIFO
du PC en stocke jusqu'à 16 octets de données reçus, que le PC pourra lire à son gré.
65
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 4. Port Parallèle
4.3 Programmation
Le paramétrage des ports parallèles est beaucoup plus simple que celui des ports sériels. En
standard, le PC est équipé d'un seul port parallèle, mais il serait tout à fait possible d'en rajouter
un second. Dans la plupart des BIOS, une interruption est d'ailleurs réservée d'oce à cet eet,
que le port soit présent ou non. Dans de nombreux cas, le second port est désactivé et l'IRQ 5 est
réutilisée pour un autre composant.
66
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
4.3. Programmation
67
Chapitre 5
Port Série
Sommaire
5.1 Généralités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
5.2 Protocoles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5.3 Annexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
5.1 Généralités
La liaison série asynchrone est couramment utilisé en informatique et en automatique (de manière
plus générale en pilotage de procédés) pour traiter tout problème de transmission. Pour transporter
l'information, on utilise la tension (RS 232-liaison monopoint, RS422-liaison multipoint, RS485-
liaison multipoint bidirectionnelle) ou le courant (boucle de courant 20mA) selon la norme EIA 232
(Electronic Industry Associate) depuis 1969 puis réévaluée en 1991.
La liaison RS232 est simple, universelle, parfaitement connue et supportée par un grand nombre
de périphériques. Contrairement à la liaison parallèle, elle autorise de grandes distances mais possède
des réglages plus compliqués. Ceci justie une étude détaillée.
68
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
5.1. Généralités
Pour que deux ordinateurs puissent communiquer entre eux, un protocole de transmission bien
précis doit être respecté pour que l'émetteur et le récepteur se comprennent. Pour déterminer l'af-
cacité de la ligne, il s'agit avant tout de reconnaître les données utiles (caractère, mot, message)
des données de contrôle (autres bits).
La transmission des caractères ne peut fonctionner correctement qu'à condition que les diérents
paramètres variables de cette trame soient connus aussi bien de l'émetteur que du récepteur. Il est
alors nécessaire d'ajuster les paramètres suivants :
la vitesse de transmission,
le nombre de bits du caractère à transmettre,
la parité,
le nombre de bits de stop,
le protocole (handshaking matériel ou logiciel).
Lorsqu'aucun caractère n'est transmis, le niveau de la ligne de transmission est à l'état haut (1
logique) : ceci permet de dissocier le bruit d'un changement d'état. La synchronisation de l'horloge
d'échantillonnage des bits à la réception est assurée à l'aide du bit de Start. Sur une liaison série au
repos, on doit observer un 1 logique (voir schéma ci dessous) :
69
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 5. Port Série
C'est à partir du Start que le récepteur se synchronise et échantillonne les autres bits du caractère.
Donc si la ligne passe à l'état bas / 0 logique (rôle du Start), le récepteur sait que des bits (utiles :
données caractère) vont être transmis (début de communication).
Le récepteur recevra ensuite les bits de données (codé sur 5,6,7 ou 8 bits) en commençant par le
LSB suivis d'un bit de parité (facultatif) et d'un (ou plusieurs) bit de Stop qui indique au récepteur
la n de transmission de la donnée. La transmission d'un caractère se termine toujours de cette
façon et le niveau logique de la ligne revient à l'état haut. En ce qui concerne le bit de parité, il sert
à détecter un éventuel problème lors de la transmission des données. On distingue la parité paire et
impaire :
parité paire : mettre le bit de parité à 1 ou 0 pour assurer un nombre total (y compris le bit
de parité) pair de bit à 1 ;
parité impaire : mettre le bit de parité à 1 ou 0 pour assurer un nombre total (y compris le
bit de parité) impair de bit à 1.
gure 5.6: Transmission de C, 2 Stop, parité impaire, ASCII non étendu
Les fréquences de transmission autorisées sont précisées par la norme RS232. On utilise habi-
tuellement des liaisons à 300, 1200, 2400, 4800, 9600 et 19200 Bauds. En résumé :
70
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
5.1. Généralités
71
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 5. Port Série
etc . . .
La plupart des périphériques nécessitant une connexion bilatérale pour communiquer avec un
PC utilisent un port série standard RS232.
E et S signient entrée et sortie tandis que E1 précise une entrée active au niveau haut (niveau
logique 1) et S1 une sortie active au niveau haut .
72
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
5.1. Généralités
- RTS est une ligne de demande d'émission. La ligne est positionnée à l'état haut lorsque le
terminal veut envoyer des données. (DTE → DCE)
- CTS est une ligne d'invitation à émettre. Elle passe au niveau haut lorsque le DTE attend des
données du DCE. Il signale qu'il peut recevoir les données du DCE et qu'il peut donc les lui
envoyer.
• CONNECTION de ligne
- DTR est positionné par l'émetteur (terminal) à l'état haut pour signaler au récepteur (ordina-
teur) qu'il est en ligne et qu'il est prêt à émettre des données.
- DSR indique (si niveau haut) que l'ordinateur est prêt à recevoir les données du terminal.
• Fonctions du MODEM
- DCD n'est utilisé en principe que sur les modems. C'est la ligne de détection de la porteuse
qui passe à l'état haut lorsque le modem reçoit une porteuse valide (tonalité). Il permet à un
modem d'avertir le terminal qu'il est en relation avec un autre.
- RI est une ligne utilisée seulement par les modems. C'est l'indication de sonnerie. Par cette ligne,
le modem avertit l'ordinateur que le téléphone sonne (en général, fonction intégrée).
73
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 5. Port Série
5.2 Protocoles
Lorsqu'un DTE émet plus de données que ne peut accepter un DCE ou pour déterminer si le
DTE ou si le DCE est en service, on utilise les signaux de protocole d'accord (" Handshake "). Les
signaux correspondants permettent de surveiller l'état d'un autre et de répondre en conséquence. Ils
indiquent la façon par laquelle le ot des données passant dans l'interface est régulé et commandé.
Selon la nature (DTE ou DCE) des appareils connectés, le type de connexion et le protocole
d'échange pourra être diérent. Il existe 2 grandes familles de protocole d'accord :
Matériel : au niveau physique (ls, tensions). Utilisable seulement si les appareils concernés
peuvent être connectés par câbles. (exemples : DTR-DSR et RTS-CTS).
Logiciel : au niveau du contenu des données. Ces dernières contiennent des caractères spé-
ciaux, aussi appelés caractères de contrôle (Xon-Xo).
1. DTR passe à " 1 ". Le DTE indique qu'il est prêt et demande la connexion de la ligne.
74
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
5.2. Protocoles
2. DSR passe à " 1 ". Le DCE répond qu'il est prêt : la ligne est connectée.
3. RTS passe à " 1 ". Le DCE indique qu'il veut émettre (vers l'extérieur)
4. CTS passe à " 1 ". Le DCE indique qu'il est prêt à émettre des données sur la ligne.
5. Emission des données.
6. RTS passe à " 0 ". Le DTE suspend l'émission. RTS ne peut pas repasser à " 1 " tant que
CTS = 1.
7. CTS passe à " 0 ". Le DCE indique qu'il ne peut plus émettre de données.
8. (phase 8-10) L'émission est de nouveau validée. CTS peut éventuellement repasser à " 0 "
pour demander au DTE une interruption du transfert des données pendant un laps de temps
déni dû à un problème (de ux, de synchronisation,. . .).
9. (phase 11-12) L'émission est suspendue.
10. (phase 13) DTR passe à " 0 ". Le DTE demande la déconnection de la ligne.
11. (phase 14) DSR passe à " 0 ". Le DCE répond et la ligne est déconnectée.
On voit que ces lignes font partiellement double emploi dans une communication full-duplex.
C'est pourquoi fréquemment un DTE pourra ne commander que DTR ou RTS et ne scruter que
l'une ou l'autre des lignes DSR, CTS et/ou CD. Un DCE pourra ne scruter que DTR ou RTS et ne
commander que l'une ou l'autre des lignes DSR, CTS et/ou CD.
C'est une liaison half-duplex. En eet, B doit attendre de recevoir la donnée en 2 avant de
pouvoir émettre sur A en 3.
Si on veut initier une liaison full-duplex, l'émission de l'un doit correspondre à la réception de
l'autre. On doit donc croiser les connexions (soit directement sur l'équipement, soit sur le câble).
Cette liaison à 3 ls est minimale.
75
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 5. Port Série
Attention, personne ne vérie si son correspondant est prêt à émettre, prêt à recevoir ou tout
simplement sous tension !
L'idée est de faire croire que l'ordinateur A parle avec un modem B plutôt qu'avec un ordinateur
B (émulation). La ligne DTR est rebouclée sur DSR et DCD. Ainsi, lorsque DTR est mis à 1, le
DSR et DCD deviennent immédiatement actifs. L'ordinateur A pense alors que le modem (virtuel)
B auquel il est connecté est prêt et a détecté la porteuse d'un autre modem. Comme les ordinateurs
communiquent à la même vitesse (pas de contrôle de ux) RTS et CTS sont bouclées ensemble.
Ainsi, lorsque l'ordinateur veut émettre, il positionne RTS à 1 et reçoit immédiatement 1 sur CTS
(autorisation d'émettre) et commence donc son émission.
Remarque 5.1 (Problème). Il faut éviter que chaque DTE attend une autorisation sur l'une ou
l'autre de ses lignes CTS, DSR et CD car on attendra indéniment que la conversation commence.
Cependant, on remarquera que chacun des correspondants manipule ses lignes RTS et DTR dès
76
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
5.2. Protocoles
qu'il est prêt et conclura que l'on peut servir les CTS, DSR et CD de chacun par des lignes RTS et
DTR de l'autre. ■
Problème de régulation de ux de données : il serait extraordinaire que l'émetteur envoie des
données exactement au rythme optimal pour le récepteur. S'il est plus lent, cela n'est pas grave.
Par contre, s'il est plus rapide que le récepteur, il est possible de perdre des données. Pour éviter ce
problème, il faut :
soit que le récepteur traite les données plus vite qu'elles n'arrivent,
soit qu'il fasse stopper le ux de données lorsqu'il risque d'être momentanément dépassé. pour
ce faire, il faut que le récepteur avertisse l'émetteur.
L'idée la plus naturelle est de câbler la totalité des signaux an de pouvoir contrôler les ux.
Le récepteur indique à l'émetteur qu'il est prêt à recevoir une donnée. L'émetteur met alors la
donnée sur la ligne de transmission. C'est le Handshaking.
Dans le cas où des signaux physiques sont chargés de contrôler le ux des échanges de données,
on parlera de handshaking matériel caractérisé par le terme de protocole RTS/CTS.
Lorsque l'émetteur veut émettre ses données, il doit positionner la ligne RTS à l'état haut pour
demander au récepteur s'il est prêt à accepter ces données. Le récepteur, lorsqu'il est prêt à recevoir
les données, va positionner le signal CTS de l'émetteur à l'état haut pour lui indiquer qu'il est prêt.
L'émetteur n'envoie ses données que si la ligne DTR est mise à l'état haut par le récepteur. Le
récepteur le constate en la surveillant par son entrée DSR.
77
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 5. Port Série
Phase 1 : Connexion de ligne sur les systèmes A et B. Les signaux DTR et DSR peuvent être
validés suite à une procédure de réponse automatique transmise par le circuit RI
(125).
Phase 2 : Validation de l'émission sur A (RTS=0 et CTS=0). L'ETCD A émet une porteuse
surgure
la ligne.
5.19: Exemple de trame en protocole RTS CTS
Phase 3 : Détection de porteuse par l'ETCD B (DCD=0).
Phase 4 : Transmission de données.
Résumé : 5 : Arrêt de l'émission par A (RTS=1 et CTS=1).
Phase
Phase 6 : Déconnexion de la ligne sur A et B (DTR=1 et DSR=1).
E TD
Données
T DTR
D
A RTS
E
DSR
C
D CTS
A
E
DSR
C
D DCD
B
E
RD
Données
T DTR
D
B 1 2 3 4 5 6
Figure
gure 7 :Diérentes
5.20: Etablissement de la liaison
phases d'une entre deux systèmes
communication avec2laDTE
entre norme(A
V24.
et B)
IV.3.Câblages
C'est le plus simple des protocoles logiciels. Les données sont envoyées par blocs de longueur
xe. Après émission d'un bloc, le caractère ASCII ETX (0x03, envoyé) est envoyé. Le récepteur
répond par le caractère ASCII ACK (0x06, reçu) si la transmission s'est correctement déroulée ou
par le caractère NAK (0x015, non reçu) dans le cas contraire.
Ce protocole ne nécessite qu'une liaison sur 3 ls. Le reste de la négociation entre l'émetteur et
le récepteur pour échanger des données se fait par logiciel. Dans le cas où des caractères particuliers
sont chargés de contrôler le ux (la vitesse) des échanges de données, on parlera de handshaking
logiciel , caractérisé par le terme de protocole Xon/Xo.
Ce protocole est basé sur les caractères XON (DC1,code ASCII 0x11) et XOFF (DC3,code
ASCII 0x13) : Le récepteur gère un buer. Les données sont traités par blocs de longueur variable.
Lorsque son buer est plein à 80 %, le récepteur envoie le caractère XOFF. L'émetteur lorsqu'il
reçoit le caractère XOFF doit immédiatement suspendre son émission. Lorsque le récepteur a vidé
son buer à 50%, il envoie un caractère XON à l'émetteur. A la réception de XON l'émetteur peut
reprendre son émission.
Il est possible que l'émetteur ne reçoive pas ou perde les caractères XON - XOFF. Pour pallier à
ces problèmes, lorsque l'émetteur n'a pas reçu de caractères depuis un certain temps, ce dernier peut
reprendre de sa propre initiative le transfert. Si le récepteur n'est pas d'accord, ce dernier pourra
toujours ré-émettre un XOFF.
79
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 5. Port Série
5.3 Annexes
Pour détecter (procédure de LOOPBACK) si une panne dans la transmission est matérielle ou
logicielle, il sut de connecter TxD à RxD, DTR étant rebouclés sur DSR et DCD et RTS est bouclé
sur CTS.
Sur une DB25, un DTE délivre une tension non nulle sur les signaux TD (mesurer 2-7), RTS et
DTR tandis qu'un DCE délivre une tension non nulle sur les signaux RD (mesurer 3-7), CTS, DSR
et DCD. DTE-DCE : connections sur DB25
80
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
5.3. Annexes
gure 5.24: Algorithmes d'émission / réception d'un caractère ASCII avec utilisation des buers
81
Chapitre 6
UART
Sommaire
6.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
6.2 Conguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
6.3 Les Registres de l'UART . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
6.4 Programmer l'UART . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
6.5 Annexe : architecture interne d'un UART 16550 . . . . . . . . . . . . . 95
6.1 Introduction
Après avoir étudié le mode de fonctionnement d'une liaison série RS232, nous allons étudier
comment programmer le contrôleur d'interface (UART) chargé de piloter cette liaison.
6.1.1 Généralités
L'UART 8250-16550 (Universal Asynchronous Receiver Transmitter ) constitue le c÷ur de tout
port série. Il contrôle complètement la conversion et des données (natives) parallèles de l'ordina-
teur (CPU) en format série, puis la conversion des données série en format parallèle ainsi que le
chargement / déchargement des registres internes.
82
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
6.2. Conguration
La RS232 est l'interface standard, le modem réalise la CNA / CAN, et les échanges se font par
une liaison téléphonique moyennant une modulation FSK (Frequency Shift Key) selon le schéma de
principe suivant :
Les PC originaux utilisaient l'UART 8250, qui est toujours utilisée par un grand nombre de
cartes adaptateurs série du marché. L'évolution a conduit à l'UART 16550 (FIFO : tampon 16
octets, débit 115.2 KBps → communications rapides) et très récemment à l'UART 16750 (FIFO 64
octets, supporte une liaison RS485, mode 4 canaux). Son architecture interne est donnée en annexe
(voir section ??). Les diérences se situent principalement dans l'apparition de 2 FIFO au niveau
des registres d'émission / réception pour contrôler les échanges.
6.2 Conguration
L'UART peut être utilisée selon 2 modes :
scrutation ( polling ) : le CPU lit en permanence les lignes pour déterminer l'état de la
transmission (prêt à émettre TxRDY, donnée reçue RxRDY).
interruption ( interrupt ) : à chaque fois qu'un caractère est reçu par un port série, il doit
attirer l'attention de l'ordinateur en activant un canal de requête d'interruption (IRQ).
Les ordinateurs à bus ISA (désuets) comportent de 8 à 16 canaux de ce type. Les ordinateurs
actuels en comportent 256 (mais tous ne concernent pas la gestion des communications). C'est
généralement la puce contrôleur d'interruption (PIC) 8259 qui traite ces requêtes d'attention. Sur
une conguration standard, le port série COM1 utilise l'IRQ 4 et le port série COM2 utilise l'IRQ3.
Lorsqu'un port série est installé sur un PC, il doit être conguré pour utiliser des adresses d'E/S
spéciques et des interruptions. Il est préférable d'utiliser les standards existants COM1 et COM2
qui sont respectivement situés aux adresses de base 0x3F8 et 0x2F8.
83
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 6. UART
Connaissant l'adresse mémoire du port série concerné, comment dialoguer avec l'UART 16550
an de congurer la communication ?
1. en utilisant les fonctions de l'interruption logicielle 0x14(voir chapitre 3,
2. en programmant directement les registres du 16550.
• L'adresse physique de chaque registre est calculée relativement à l'adresse de base. Si l'adresse
de base de l'interface est 3xF8 (COM1), l'adresse du LCR sera 0x3F8 + 0x003 = 0x3FB.
• L'accès aux registres se fait par l'utilisation des fonctions (langage C) spéciques de lecture /
écriture :
84
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
6.3. Les Registres de l'UART
char inp(int AdressePort) lit un caractère (ASCII) sur le port situé à l'adresse AdressePort
et le retourne
outp (int AdressePort, char val) écrit la valeur val sur le port situé à l'adresse AdressePort.
Certains registres possèdent la même adresse physique mais ils ne peuvent être accédés simulta-
nément (lecture ou écriture). Cela ne pose donc pas de problème (économie de registre physique).
Nous allons étudier progressivement (selon leur adresse dans la table) chaque registre.
85
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 6. UART
La donnée provenant de la ligne RS232 est convertie en TTL (exploitable par le registre) puis est
chargée dans le registre à décalage de réception (RSR) où l'on désérialise la donnée. Elle est ensuite
transférée dans le registre de réception (RBR) sous contrôle d'autres registres avant de transiter sur
le bus interne en direction du CPU.
86
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
6.3. Les Registres de l'UART
fréquence horloge
vitesse transmission =
16 × (256 × DLM + DLL)
Ci dessous, le tableau résumé des valeurs à charger pour une vitesse (standard de 1, 8432M Hz )
de transmission :
87
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 6. UART
bit 0 (ERDA : Enable Receive Data Avalaible int) : interruption quand données reçues dans
RBR (0 = non et 1 = oui).
bit 1 (ETD : Enable Transmit holding register Data available interrupt) : interruption produite
lorsque le registre d'attente d'émission THR devient vide (n d'émission d'un caractère)
bit 2 (ERLS) : Enable Receiver Line Status interrupt) : interruption autorisée lors d'un chan-
gement d'état de la ligne de réception.
bit 3 (EMS : Enable Modem Status int) : interruption autorisée lors changement d'état du
modem.
bits 4 à 7 inutilisés et toujours à zéro.
bits 3 à 0 Interruptions
ID3 ID2 ID1 IP Priorité Type Source Arrêt
0 0 0 1 aucune aucune aucune aucune
0 1 1 0 1 modif état erreur réception R-LSR
ligne réception (OE,FE,PE,BI)
0 1 0 0 2 data reçue réception RBR R-RBR
dispo ou seuil FIFO RBR
1 1 0 0 2 temps out char ds FIFO RBR R-RBR
0 0 1 0 3 THR vide RxRDY R-IIR ou W-THR
0 0 0 0 4 modif modem CTS,DSR,RI,DCD changés R-MSR
88
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
6.3. Les Registres de l'UART
bit 3 (DMS : Dma Mode Select) :RxRDY et TxRDY passent de 1 à 0 (deviennent inactifs).
bit 4-5 (TTL-TTM : Transmit Trigger level LSB-MSB) : dénissent le seuil max à atteindre
(en octets)sur FIFO THR (=TFR) avant de déclencher une interruption FIFO.
bit 6-7 (RTL-RTM : Receiver Trigger level LSB-MSB) : mêmes niveaux mais pour FIFO RBR
(RFR)
89
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 6. UART
(gure, bits 4-7). Si le nombre d'octets est susant, le processeur ne sera pas interrompu pendant
ses activités et aura le temps de vider les FIFO entre des écritures (ou des lectures) dans ce buer.
tableau 6.5: Nombre de bits de codage des données (payload) et de bits de STOP
90
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
6.3. Les Registres de l'UART
bit 2 (OUT1) : valide (1) ou invalide (0) la sortie OUT1 (en la forçant à 1).
bit 3 (OUT 2) : idem pour OUT2.
bit 4 (LOOP) : Si 1, simule un LOOP-back, permet de tester l'UART en détectant si la
défaillance est matérielle (rupture,pb de ligne) ou logicielle (pb de conguration).
bit 5 (AFE : AutoFlow control Enable) : si 1, mode diagnostic : la donnée émise est immé-
diatement reçue. Cela permet de vérier le bon fonctionnement du transfert de donnée (bus
interne).
bits 6-7 : tous à 0.
91
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 6. UART
L'accès se fait à l'adresse relative +7. Ce registre n'aecte pas les autres opérations de l'UART.
Il permet de spécier une vitesse particulière de transmission via une horloge externe (connectée
sur Xin) plutôt que d'utiliser la vitesse standard (1.832 Mhz). L'opération dépend de DLAB :
Si DLAB = 1 : les bits P0 à P5 représentent la valeur du diviseur (jusqu'à 31.5). Exemple : Si
Fréquence externe = 22.118 MHz sur XIN et diviseur (bits P0 à P5)= 5.5, alors clock UART
= 4.02 MHz. Avec (DLL+DLM)=1, vitesse = 250 Kbauds.
Si P6=1, sélection des interruptions logiques (ILS : Interrupt Logic Select), sinon sélection de
la sortie de l'UART (OS : uart Output Select).
Si DLAB = 0 : rien.
6.4.1.1 Initialisation
La démarche est la suivante :
Préparer l'accès au registre diviseur (DLAB =1 dans LCR)
Charger le diviseur (2 octets)
Remise à 0 de DLAB dans LCR
Initialiser les paramètres de transmission
Eventuellement reset de l'UART par lecture des registres (LSR, THR, IIR, MSR)
92
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
6.4. Programmer l'UART
Si des traitements doivent être eectués, il faut prendre garde à ne pas perdre les caractères qui
continuent à arriver.
Se limiter à des traitements courts
6.4.2.1 Initialisation
Préparer l'accès au registre diviseur (DLAB=1 dans LCR)
Charger le diviseur ( 2 octets )
Remise a 0 de DLAB dans LCR
Initialiser les paramètres de transmission
Détourner les interruptions (vecteur 0x0C pour COM1 et 0x0B pour COM2)
Préciser les causes des interruptions souhaitées
Autoriser l'UART à émettre des interruptions
Réinitialiser par une lecture les registres de l'UART (LSR, THR, IIR, MSR)
Indiquer au PIC 8259 le bon masque des interruptions (autoriser celles de COM1 et/ou COM2)
93
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 6. UART
Le pointeur en écriture pointe sur un emplacement du tampon qui est libre. On écrit alors la
donnée à sauvegarder à cet emplacement et on incrémente le pointeur de façon à ce qu'il pointe sur
le prochain emplacement libre s'il y en a.
Le pointeur en lecture pointe sur la prochaine donnée à lire. Après la lecture, on incrémente ce
pointeur de façon à ce qu'il pointe sur la prochaine donnée non lue.
On peut programmer un tampon circulaire en utilisant un tableau et deux index incrémenté. Si
on arrive en n de tableau, on repart depuis le début (utiliser pour cela le modulo taille du tableau).
Il faut gérer les pointeurs de manière à ce que le pointeur de lecture ne dépasse pas le pointeur
d'écriture.
94
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
6.5. Annexe : architecture interne d'un UART 16550
TL/C/8652–16
gure
Note: Applicable pinout numbers 6.10:within
are included Structure
parenthesis. interne (registres) d'un UART 16550
95
Chapitre 7
I2C
Sommaire
7.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
7.2 Le protocole I2C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
7.3 La gestion des conits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
7.4 L'adressage des composants . . . . . . . . . . . . . . . . . . . . . . . . . . 103
7.5 Mode de transfert en adressage standard . . . . . . . . . . . . . . . . . . 104
7.6 Mode de transfert en adressage étendu . . . . . . . . . . . . . . . . . . . 106
7.7 La programmation du bus I2C . . . . . . . . . . . . . . . . . . . . . . . . 108
7.1 Introduction
7.1.1 Présentation et domaine d'application
Le bus I2C (Inter Integrated Circuit), externe au PC, a été développé au début des années 80
par Philips semiconductors pour permettre de relier facilement à un microprocesseur les diérents
circuits d'un téléviseur moderne sans augmenter les coûts. Depuis, des fabricants de plus en plus
nombreux ont proposé des circuits intégrés compatibles. D'extension en extension, la vitesse a aug-
menté, les distances entre les appareils connectés se sont allongées. C'est donc devenu une solution
relativement simple de réalisation d'un micro-réseau trilaire de type série, synchrone, multi-
maître à détection de collision avec hot-plugging. Un système utilisant ce bus peut représenter une
alternative à bas prix à une liaison RS232 : ACCESS Bus.
Le bus I2C (malgré son caractère série) n'appartient pas aux bus de terrain. Il n'est pas destiné
à couvrir de longues distances et ne possède pas l'immunité aux parasites nécessaire. Le bus I2C se
charge des communications qui sont (d'ordinaire) assurées par le microprocesseur (plus particulière-
ment le bus parallèle). Il permet ainsi une économie de place, une décharge du microprocesseur dans
la gestion multi-maîtres des périphériques (qui nécessite donc un arbitrage). Ce bus est ainsi devenu
un standard pour les liaisons lentes des périphériques grand public. Il est souvent qualié de petit
bus comparativement aux bus parallèles. toutefois, il possède certaines possibilités inconnues des
autres bus :
il ne nécessite que 2 ls ;
il dispose de ltres d'entrée qui rendent inoensives les impulsions parasites que peuvent
véhiculer les 2 ls (SDA et SCL) ;
96
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
7.1. Introduction
les composants les plus lents peuvent allonger la période d'horloge pour faire attendre le circuit
maître. Beaucoup de microcontrolleurs n'acceptent pas ces cycles d'attente.
il possède un protocole qui permet a plusieurs maîtres de partager le bus physique et de
communiquer entre eux grâce aux système d'arbitrage anti-collision. Le bus I2C est alors bien
adapté aux systèmes multi-processeurs.
Du point de vue électronique, les lignes bidirectionnelles SDA, SCL sont toutes les deux reliées
à l'alimentation positive Vcc (qui dépend de la technologie des composants : TTL ou CMOS) des
circuits par l'intermédiaire de résistances de pull-up (RP ). Ceci permet de maintenir le bus au niveau
haut lorsqu'il est libre. L'interface I2C des circuits est toujours à collecteur (bipolaire) ou a drain
(MOS) ouverts pour permettre au circuit connecté de ramener le niveau de la ligne à la masse. Le
niveau résultant est alors une fonction logique ET de toutes les sorties connectées sur les lignes. RP
limite la charge capacitive et RS les pics de tension par induction.
De nombreux fabricants ayant adopté ce système, la variété des circuits disponibles disposant
d'un port I2C est important : Ports d'E/S bidirectionnels, Convertisseurs A/N et N/A, Mémoires
(RAM, EPROM, EEPROM, etc...), Circuits Audio (Egaliseur, Contrôle de volume, ... ) et autre
LED, LCD... Le nombre important de circuits intégrés comprenant l'interface I2C ore de multiples
avantages aux concepteurs de systèmes électroniques. En eet, l'atout majeur de cette liaison est de
pouvoir facilement connecter en parallèle sur le bus de nouveaux éléments ou d'échanger un élément
contre un autre sans restructurer le système. En eet, chaque point du bus possède une adresse
exclusive (en nombre limité selon la capacité d'adressage).
Le nombre de composants qu'il est ainsi possible de relier est essentiellement limité par la charge
capacitive des lignes SDA et SCL : 400 pF au total.
Les données sont transmises en série à l00 Kbits/s (12.5 ko/s) en mode standard et jusqu'à 400
Kbits/s (50 ko/s) en mode rapide, ce qui ouvre la porte de cette technologie à toutes les applications
où la vitesse n'est pas primordiale.
97
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 7. I2C
An de compenser quelques lacunes des premières spécications du bus I2C, quelques nouvelles
améliorations ont été apportées :
Le mode rapide : le bus à désormais la capacité de transmettre des données jusqu'à une vitesse
de 3.4 Mbits/s (0.425 Mo/s).
Des entrées à Trigger de Schmitt : an de limiter la sensibilité au bruit.
La mise en haute impédance d'un circuit non alimenté : ceci évite de bloquer le bus si un
périphérique n'est pas alimenté.
Extension à 10 bits de l'adressage des circuits : l'adressage d'un circuit se fait maintenant
dans deux octets (attention, dans ce cas, la plage d'adressage commence à 0xF000 ! !).
Pour éviter la prise de communication simultanée de plusieurs composants, on utilise un proto-
cole qui permet de dénir les règles de communication.
Le protocole I2C dénit la succession des états logiques possibles sur SDA et SCL, et la façon
dont doivent réagir les circuits en cas de conits.
Il existe deux modes d'utilisation du bus :
le mode Maître-Esclave : 1 seul circuit dirige la communication : le maître. Dans ce cas,
le maître (ou l'esclave) devient tour à tour émetteur ou récepteur selon l'opération eectuée
(lecture ou écriture).
le mode Multi-Maîtres : plusieurs circuits peuvent prendre la main sur le bus et décider des
opérations. Un seul maître est actif à un moment donné.
La distinction entre maître et esclave est importante et n'a rien à voir avec le fait que le com-
posant émet ou reçoit des données. Le maître est celui qui prend l'initiative du transfert, décide
du sens de ce transfert et règle la communication en émettant les impulsions d'horloge sur la ligne
SCL, les données sur SDA étant générées par le maître ou par l'esclave (suivant le sens de transfert
réclamé par le maître). Un maître peut donc être récepteur ou émetteur. Un composant qui prend
part à la communication après avoir été appelé par le maître s'appelle esclave.
Le protocole I2C gère la liaison et les conits éventuels grâce à la fonction logique ET entre
les lignes et à une procédure d'arbitrage du bus.
Le niveau haut correspond à une valeur supérieure à 3 Volts et le niveau bas inférieure à 1,5
Volts, les niveaux intermédiaires étant indénis. Un seul bit est transféré par coup d'horloge. Pour
être prises en compte, les données (sur SDA) doivent être stables aussi longtemps que SCL est à
l'état haut. Le circuit qui émet les données doit les écrire sur SDA pendant SCL=0, celui qui les lit
le fait pendant SCL=1.
98
• Le changement d'état: QuelCM_InfoIndus: version
que soit le niveau du mardi
(haut 29de
ou bas) novembre
la 2005 à 2 h 17
ligne de données SDA sa valeur ne pourra changer que lorsque 7.2.la Le protocole I2C
Philipsd'horloge
ligne Semiconductors
SCL sera à l'état BAS.
99
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 7. I2C
avec SCL (Horloge), SDAM (SDA maître), SDAE (SDA esclave) SDAR(SDA réel résultant).
Remarque 7.2 (Pause). L'écriture d'un octet dans certains composants (mémoires, microcontrô-
leur,... ) ou peut prendre un certain temps. De même, la lecture peut nécessiter un temps d'attente
100
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
7.3. La gestion des conits
(n de conversion pour CNA-CAN). Il est donc possible que le maître soit obligé d'attendre l'ac-
quittement ACK avant de passer à la suite : puisqu'il est maître de l'horloge, il fait donc une pause
de la manière suivante :
101
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 7. I2C
eectivement au niveau bas et le maître est bloqué. Le résultat est que le bus se synchronise sur la
période la plus basse, donc le circuit le plus lent (qui peut être un maître lent ou bien un esclave
qui a besoin de temps d'attente).
7.3.2 L'arbitrage
7.3.2.1 Contexte
La structure même du bus I2C a été conçue pour pouvoir y accueillir plusieurs maîtres. Se
pose alors le problème commun à tout les réseaux utilisant un canal de communication unique :
le contrôle du bus. En eet, chaque maître pouvant prendre possession du bus dès que celui-ci est
libre, il existe la possibilité que deux maîtres désirent prendre la main en même temps. Si cela ne
pose pas de problème sur le plan électrique grâce à l'utilisation de collecteurs ouverts, il faut pouvoir
détecter cet état pour éviter la corruption des données transmises.
7.3.2.2 Principe
Comme nous l'avons vu précédemment, pour prendre le contrôle du bus, un maître potentiel doit
d'abord vérier que celui-ci soit libre et qu'une condition d'arrêt a bien été envoyée depuis au moins
4, 7µs. Mais il reste la possibilité que plusieurs maîtres prennent le contrôle du bus simultanément.
Le mécanisme est le même que celui de la synchronisation des horloges. un maître qui émet un état
haut et relit un état bas reconnaît qu'un autre maître utilise le bus et perd le contrôle du bus donc
cesse sa transmission.
Chaque circuit vérie en permanence l'état des lignes SDA et SCL y compris lorsqu'ils sont eux
même en train d'envoyer des données. On distingue alors plusieurs cas :
Les diérents maîtres envoient les mêmes données au même moment : les données ne sont pas
corrompues, la transmission s'eectue normalement, comme si un seul maître avait parlé. Ce
cas est très rare, voire impossible.
Un maître impose un 0 sur le bus : il relira forcément 0 et continuera à transmettre. Il ne
peut pas alors détecter un éventuel conit.
Un maître cherche à appliquer un 1 sur le bus : s'il ne relit pas un niveau 1, c'est qu'un
autre maître a pris la main en même temps. Le premier perd alors immédiatement le contrôle
du bus, pour ne pas perturber la transmission du second. Il continue néanmoins à lire les
données au cas où celles-ci lui auraient été destinées.
102
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
7.4. L'adressage des composants
avec SCLR : Horloge résultante, SDA 1 : SDA maître 1, SDA 2 : SDA maître 2, SDA R : SDA
réel résultant (lus par les deux maîtres).
7.3.2.4 Analyse
Le premier octet est transmis normalement car les deux maîtres imposent les même données.
(Cas 1). Le bit ACK est mis à 0 par l'esclave. Lors du deuxième octet, le maître 2 cherche à
imposer un 1 (SDA2), mais relit un 0 (SDAR), il perd alors le contrôle du bus et devient esclave
(Cas 3). Il reprendra le contrôle du bus lorsque celui-ci sera de nouveau libre. Le maître 1 ne voit
pas le conit et continue à transmettre normalement (Cas 2). En conclusion, l'esclave à reçu les
données du maître 1 sans erreurs et le conit est passé inaperçu.
Remarque 7.3 (Arbitrage et collisions). A partir du mécanisme d'arbitrage, on peut déduire
3 conséquences :
1. Les adresses les plus faibles sont prioritaires sur les plus élevées. Dans la construction d'un
système I2C à plusieurs esclaves, les esclaves les plus prioritaires se verront aecter les adresse
les plus basses.
2. En cas d'adresse identiques, l'écriture possède la priorité sur la lecture (car le bit R/W=0).
3. Les collision sont dites non destructives puisque la donnée prioritaire arrive intacte au des-
tinataire.
■
103
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 7. I2C
Certaines adresses ne sont pas utilisées pour l'adressage de composants, ce qui en restreint le
nombre total. Attention : 2 cas possibles selon adressage 7 bits ou bien 10 bits.
Le maître positionne le bit R/W à 0 pour signier l'écriture. Le premier ACK vient de l'esclave
pour la bonne réception de l'adresse et les ACK suivant signient la bonne réception par l'esclave
des données à écrire. Lorsque la dernière donnée est écrite, l'esclave envoie ACK puis le maître
termine par P :
104
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
7.5. Mode de transfert en adressage standard
Philips Semiconductors
S SLAVE ADDRESS R/W A DATA A/A Sr SLAVE ADDRESS R/W A DATA A/A P
(n bytes (n bytes
+ ack.) * + ack.) *
read or write
read or write direction
of transfer
may change
* not shaded because Sr = repeated START condition at this point.
transfer direction of
data and acknowledge bits MBC607
depends on R/W bits.
The addressing procedure for the I2C-bus is such that the 105
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 7. I2C
deux octets ou plus. Le premier représente toujours l'adresse(physique) du circuit et les suivants
l'adresse interne de la mémoire.
gure 7.16: Exemple d'écriture d'une page dans une mémoire (24C02)
Ce mode est entièrement compatible avec le mode standard (il est donc possible de mélanger
des composants standard avec des composants étendus). Le principe repose sur le fait qu'il faut
envoyer 2 octets pour avoir une adresse sur 10 bits. Le premier comporte une combinaison de bits
particulière (de la forme 1111 0xx). Ici xx représentent les 2 bits de poids fort de l'adresse. Les 8
bits de poids faibles constituent le 2ème octet.
106
same master occupies
2C-busthe bus all the time. The transfer such that they all anticipate the sending of a slave
• Combined format. TheA Imaster specification
transmits data to a slave address.
direction is changed after the second R/W bit.
and then reads data from the same slave (Fig.28). The CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
same master occupies the bus all the time. The transfer 7.6. Mode de transfert en adressage étendu
direction is changed after the second R/W bit.
handbook, full pagewidth1 1 1 1 0 X X
handbook, full pagewidth 111 1 00 X X 0
7.6.2 Ecriture du maître SLAVE ADDRESS
SLAVE ADDRESS
S SLAVE ADDRESS
1stS 7 BITS
R/W A SLAVE AADDRESS
DATA A DATA A/A
R/W
2nd A1
BYTE A2 DATA A DATA A/A P
1st 7 BITS 2nd BYTE
handbook, full pagewidth 1 1 1 1 0 X X 0
(write) MBC613
SLAVE ADDRESS (write) SLAVE ADDRESS
11110XX 1
S R/W A1 A2 DATA A DATA A/A P
1st 7 BITS 2nd BYTESLAVE ADDRESS
Sr R/W A DATA A DATA A P
1st 7 BITS
MBC613
(write) MBC615
(read)
Fig.26 A master-transmitter addresses a slave-receiver with a 10-bit address.
gure 7.18: Ecriture en mode étendu
7.6.3 Fig.26
Lecture du maître
A master-transmitter addresses a slave-receiver with a 10-bit address.
Fig.28 Combined format. A master addresses a slave with a 10-bit address,
then transmits data to this slave and reads data from this slave.
handbook, full pagewidth1 1 1 1 0 X X 0 11110XX 1
SLAVE ADDRESS
Philips Semiconductors SLAVE ADDRESS SLAVE ADDRESS
S R/W A1 A2 Sr R/W A3 DATA A DATA A P
1st 7 BITS 2nd BYTE 1st 7 BITS
handbook, full pagewidth1 1 1 1 0 X X 0 1 1 1 1 0 X X 1
SLAVE ADDRESS
2C-bus specification SLAVE ADDRESS SLAVE ADDRESS MBC614
S
The I1st R/W (write)
A1 A2 Sr R/W A3 DATA A DATA A P
7 BITS 2nd BYTE 1st 7 BITS(read)
handbook, full pagewidth 1 1 1 1 0 X X 0 gure 7.19: Lecture en mode étendu
MBC614
(write)
SLAVE ADDRESS SLAVE ADDRESS (read)
S R/W A A DATA A DATA A/A
7.6.4 Formats combinés
1st 7 BITS 2nd BYTE
Fig.27 A master-receiver addresses a slave-transmitter with a 10-bit address.
(write)
handbook, full pagewidth1 1 1 1 0 X X 0
1 1 1 1 0 X Xa slave-transmitter
Fig.27 A master-receiver addresses 0 with a 10-bit address.
SLAVE ADDRESS SLAVE ADDRESS
SLAVE ADDRESS SLAVE ADDRESS
A DATA A A DATA A/A
2nd BYTE1st 7 BITS 28 R/W
S R/W A Sr A DATA A DATA A/A P
1st 7 BITS 2nd BYTE
(write) MBC616
(write) 28 1 1 1 1 0 X X 1
(write)
11110XX 0
1st 7 BITS OF 10-BIT 2nd BYTE OF 10-BIT
Sr R/W A SLAVE ADDRESS A DATA A DATA A/A P
SLAVE ADDRESS
handbook, full pagewidth 1 1 1 1 0 X X
0
(write) MBC617
SLAVE ADDRESS SLAVE ADDRESS
S R/W A A DATA A DATA A/A
1st 7 BITS 2ndEcriture
gure 7.21: BYTE en mode standard puis étendu
(write)
Fig.30 Combined format. A master transmits data to two slaves, one with a 7-bit address, 107
1 1 1 1 0 X X 0
and one with a 10-bit address.
On décide de connecter le bus I2C à la liaison série d’un PC. Le but est de pouvoir utiliser le bus
I2C afin d’y connecter de nombreux périphériques. On doit donc écrire un pilote (« driver ») pour
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
configurer et gérer le protocole I2C. En particulier, on demande d’écrire les fonctions relatives à
Chapitre 7. I2C
l’initialisation du bus I2C (I2C_init), et à la détection des états de début (START), de fin de
communication (STOP) et d’acquittement (ACK). On ne demande pas de réaliser les fonctions
d’écriture et de lecture de ce bus I2C. La connexion se fait selon le principe suivant : R sont les
7.7 Ladeprogrammation
résistances rappel et on relie lesdulignesbusSDA I2Cet SCL à la masse (GRD) pour l’adaptation
électrique. Le sens
Exemple des lignes
de fonctions est driver
pour donnésipar
on le sens desSDA
connecte flèches. Le àschéma
et SCL est série
la liaison : comme suit :
108
Chapitre 8
USB
Sommaire
8.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
8.2 Transactions et Transferts . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
8.3 Protocole USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
8.4 Types de transferts (terminaisons) . . . . . . . . . . . . . . . . . . . . . . 121
8.5 Enumération et Descripteurs USB . . . . . . . . . . . . . . . . . . . . . . 125
8.6 Sur votre PC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
8.1 Introduction
La démocratisation d'appareils numériques grand public nécessitant des taux de transfert sou-
tenus (caméscope, scanner, appareils photos numériques, etc. . .), a obligé les constructeurs à déve-
lopper des interfaces plus rapides, plus universelles tout en pouvant y raccorder un maximum de
ces périphériques hétéroclites. Les ports série / parallèle, avec leurs caractéristiques désuètes, voient
leur utilité décroître au prot de récentes interfaces comme l'USB (Universal Serial Bus), le Fire-
Wire (domaine grand public) ou d'autres plus anciennes mais qui ne cessent d'être améliorée comme
le SCSI (domaine professionnel). Nous allons étudier l'interface USB qui représente une nouvelle
liaison série synchrone.
109
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 8. USB
Parmi les périphériques pouvant être raccordés au micro-ordinateur, nous pouvons citer cla-
viers, souris, joysticks, scanners, imprimantes, téléphones, assistants personnels, baladeurs mp3, lec-
teurs/graveurs de cd-rom, disques optiques et magnétiques, webcams, modems, etc. . .. Autant dire
que cette interface est vouée à remplacer à court terme toutes les autres interfaces dentrées/sorties
de nos micro-ordinateurs (au moins celles du domaine grand public).
Les principaux critères du développement de ce bus ont été les suivants :
3 débits (maximum théorique) cohabitent : faible, pleine et haute vitesse (Low Speed 1.5
Mbit/s, Full (Medium) Speed 12 Mbit/s et High Speed 480 Mbit/s pour USB 2.0). Les débits
réels sont en fait plus faibles. En eet, le bus doit faire passer, outre les données, les bits
d'états, de contrôles et les bits d'erreurs. De plus, plusieurs périphériques peuvent se partager
le bus et diminuer (dans certains modes où la bande passante n'est pas garantie) le débit réel.
Facilité d'emploi et d'utilisation : hot plug and play (détection du changement de la tension
entre D+ et D-), hot swapping.
Une seule IRQ pour tous les périphériques connectés au port (n aux pb de conits).
Energie (faible : 100 mA) distribuée par le câble (moins de prises).
Bas-prix pour les débits faibles (12 Mbit/s = 1.5Mo/s).
Transmission en temp réel (voix, audio, vidéo comprimée).
Protocole souple pour diérents modes :
Transmission de paquets.
Mode isochrone.
Messages courts.
Séparation des commandes et des données.
Adaptation à diérentes conguration sur le terrain
Adaptation aisée à de nouveaux types de périphériques (adressage dynamique).
Support de larchitecture CTI (Computer Telephony Integration)
Topologie en étoile (via des Hubs) ou en bus (chaînés les uns aux autres).
Nombre maximum de périphériques élevé (127). Récemment, carte multi-ports gérée par 2 ou
+ contrôleurs.
Principalement half-duplex
8.1.2 Câbles
Le bus USB nécessite une connectivité propre composée de connecteurs de deux types, les connec-
teurs de type A disposés aux entrées du contrôleur maître et des HUB (upstream), et des connec-
teurs de type B sur les périphériques (downstream), ainsi un seul type de câble est nécessaire pour
relier tous périphériques au micro-ordinateur :
110
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
8.1. Introduction
Ce câble se compose de 4 ls, une paire torsadée pour le transfert des données, un l au potentiel
de +5V qui permet dalimenter les périphériques USB si nécessaire et enn la masse (téléalimenta-
tion) :
ce câble peut être blindé ou non, le mode basse vitesse de 1.5 Mbits/s ayant une tolérance
supérieure aux perturbations électromagnétiques. Un blindage est fortement recommandé pour une
utilisation pleine vitesse à 12 Mbits/s (longueur max de 5 mètres de câble entre 2 éléments). Enn,
un autre atout de ce bus est quil peut transporter lalimentation des périphériques sy raccordant,
dans la limite de 500 mA pour un appareil relié à un port le permettant.
8.1.3 Topologie
LUSB propose une topologie physique peer-to-peer, il établit donc des connexions point à point
entre le contrôleur maître (host) et chaque périphérique branché supposé esclave (device).
Même si théoriquement, la topologie du bus USB permet de connecter dans nimporte quel ordre
des périphériques, certaines règles doivent être respectées. Ainsi, une architecture USB se construit
à base de 3 éléments :
1. Un contrôleur maître USB(Host) + Root Hub.
2. Des périphériques USB (Devices) nommés de manière plus générale fonctions.
3. Des concentrateurs : Hubs qui sont des périphériques particuliers disposant de plusieurs
ports de connexion au bus USB. Port unique côté upstream et multiple côté downstream.
La structure de connexion des périphériques USB au contrôleur maître se fait sous forme détoile
à étage (tiered star) , où le centre est le contrôleur maître et les extrémités de celle-ci les périphé-
riques :
111
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 8. USB
La topologie physique du bus USB devient ainsi un arbre, où les n÷uds sont alors les HUB et
les feuilles les périphériques.
Remarque 8.1. En étudiant la topologie logique de l'USB, on met en évidence la nature
partagée du bus. Chaque logiciel client (côté host) qui va manipuler une fonction (côté
device) la verra comme si elle était la seule sur le bus. Les concepteurs de logiciel n'ont plus
à se préoccuper des problèmes liés au partage du bus.
Pas d'interconnexion possible entre 2 PC (ou de manière équivalente pas de partage de péri-
112
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
8.2. Transactions et Transferts
phériques par 2 PC). Il ne peut y avoir qu'un host par bus (pas d'arrangement multi-maître).
La nouvelle spécication USB 2.0 (2002) on-the-go introduit une possibilité d'arbitrage (né-
gociation) pour le choix du rôle de host (reservé à une connexion simple p2p entre 2 hosts)).
2 types de HUB USB : ceux possédant un circuit dalimentation individuel pour chaque port
(hub classique) et dautres dépourvus de cette caractéristique (hub interne au clavier).
3 contrôleurs d'hôte :
contrôleur UHCI (Intel) : aspect logiciel > matériel.
contrôleur OHCI (Compaq, Microsoft, NSC) : aspect matériel > logiciel.
contrôleur EHCI (Standard USB 2.0) : 1 seul driver.
■
8.2.5 Séquencement
Bus synchrone : 1 ms par trame (donc bus cadencé à 1 KHz)
113
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 8. USB
La communication se fait entre le Host (ordinateur) et les Device (périphériques) selon le prin-
cipe de l'anneau à jeton (Token Ring) : la bande passante est partagée temporellement entre tous
les périphériques connectés et l'hôte émet un signal de début de séquence (Frame) chaque millise-
conde, intervalle de temps pendant lequel il va donner simultanément la parole à chacun d'entre-eux
(sensation de connexion privilégiée).
Le protocole de communication est qualié de host scheduled token based protocol : le host
initie toutes les transactions. Le premier paquet (le jeton) est produit par le host pour décrire ce
qui va suivre, si la transaction de données sera en lecture ou en écriture, ce que sera l'adresse de
l'appareil et la terminaison (mode de transfert) désignée. Le jeton contient donc une grande partie
de l'information sur la nature de la communication.
Lors de la connection d'un nouveau périphérique, le host procède à la phase d'énumération. Le
jeton contient l'adresse du périphérique (codée sur 7 bits = 27 =128 périphériques-1 car adresse
114
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
8.3. Protocole USB
'0' est réservée, adresse par défaut avant aectation) qui désigne le périphérique concerné. Si ce
dernier reconnaît son adresse dans le jeton, il envoie un paquet de données en réponse, sinon, il fait
suivre aux autres périphériques qui lui sont chaînés. En détail, un client envoie au système USB une
requête transformée en IRP (Input-output Request Packet) par le driver USB. Le host gère la liste
des IRP (énumération). Chacune se concrétise par la succession d'une ou de plusieurs transactions
(s'il faut fragmenter les données) sur le bus.
Chaque transaction se décompose alors en la succession d'au plus 3 paquets dont les rôles sont
bien dénis (Token, Data, Handshake) dans les protocoles.
8.3.1 PIPE
Dénit au niveau de la couche fonction, un Pipe est un préliminaire à la communication :
réservation d'un canal entre logiciel du Host et la terminaison (End-Point) du périphérique. A
chaque canal est associé :
la bande passante requise
les caractéristiques du End-Point (direction, taille max données, etc. . .)
le type de transfert de données
2 type de PIPE :
1. STREAM : les ux de données brutes n'ont pas de format USB prédéni. Prise en charge des
transferts en Bloc, Isochrone et Interruption.
2. MESSAGE : les canaux ont un format USB déni. Prise en charge uniquement des transferts
de commande.
Un bit isolé ne signie rien. On trouvera toujours un paquet. Dans le cas où il n'y a aucun travail
a eectuer, on envoie SOF toutes les ms :
Un périphérique doit d'abord isoler une trame à l'intérieur de laquelle on retrouve des ensembles
de paquets (Token, Data, Handshake) :
C'est toujours l'hôte qui initie la transaction et c'est le périphérique qui a été sélectionné par le
host qui peut alors utiliser le bus. Il reçoit la permission de parler au moment où il reçoit le jeton
116
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
8.3. Protocole USB
initiateur (SOF). La manière de distribuer le jeton et l'ordre dans lequel les paquets vont circuler
sur le bus sont dénis dans le protocole régissant le fonctionnement du bus.
Il faut noter que le LSB est envoyé en premier et que chaque paquet est précédé d'un champ de
synchronisation utilisant le codage NRZI (un 1 logique est un non changement d'état au contraire
du 0 logique) et le bit stung (on met un 0 après six 1 logique consécutifs pour forcer une
transition NRZI et ainsi éviter les pertes de données) :
117
La norme USB en quelques mots v1.0 - 21/09/02
8 version
CM_InfoIndus: 7 bits 2005 PID
bits du mardi 29 novembre à 2 h 17 4 bits 3 bits
Chapitre 8. USB
PID ADDR ACK ENDP CRC
NACK
STALL
IN OUT informe l'appareil que le host veut envoyer des informations.
Jeton
Les paquets Token OUTSETUP
Jeton
doivent se est utilisé pourau
conformer commencer
formatlessuivant,
transferts de commande (généralement pour
SETUPFigure
la conguration d'un12 : Format du paquet Handshake
dispositif).
IN
b. OUT
Lesd'une
Le paquet SOF composé paquets
trameData
de 11 bits est envoyé par l'hôte toutes les 1ms ±
SETUP
500ns sur un bus Full Speed vitesse ou bien toutes les 125µs ± 0,0625µs sur un bus
y High Speed.de paquets de données pour la norme 1.1 ( Data0 et Data1)
a 2 sortes
gure 8.13: Champ du paquet Token (Jeton)
e mode High Speed définit 2 autres PIDs de données, DATA2 et MDATA.
Les paquets SOF ont le format
Figuresuivant :
10 : Format du paquet Token
SOF : paquet de début de trame : il est envoyé par le host toutes les 1ms (en Full speed) ou bien
toutes les 125ms (en High speed). Il est composé de 3 champs : PID-Frame-CRC 5 :
o La taille maximale de données " données utiles " pour les périphériques
8 bits
b. Les paquets 11 bits 5 bits
Low Speed vitesse est de 8 Data
octets.
PID Frame Number CRC5
o Lade
Il y a 2 sortes taille maximale
paquets de données
de données pour la"norme
données
1.1 utiles
( Data0" pour les périphériques
et Data1)
Le mode High Full Speed
Speed est de
définit 64 octets.
2 autres PIDs de données, DATA2 et MDATA.
SOF
o La taille maximale de données " données utiles " pour les périphériques
High Speed est de 1024 octets.
o La taille maximale de données " données utiles " pour les périphériques
gure 8.14: Champ du paquet SOF
o Les Low Speed doivent
données vitesse estêtrede 8 octets.en multiple d'octets.
envoyées
Figure
DATA : paquet de données. Il y13 : Format
a 3 sortes du paquet
de paquets SOF
de données :
o La taille
DATA 0maximale despeed)
: 8 octets (Low données " données utiles " pour les périphériques
USB 1.1.
Full Speed
DATA 1 : est de 64
64 octets octets.
(Full speed) USB 1.1.
es paquets de Data ont leet format
DATA2 MDATA suivant :
Le standard IlUSB assure une grande (High
: 1024 octets speed) USB 2.
fiabilité
est composé de 3 champs : PID-DATA-CRC 16.
des transferts par la détection de
o La taille maximale
nombreuses erreurs au niveau hardware. : de données " données utiles " pour les périphériques
High Speed 8 bitsest de 1024 octets.0-1023 bytes 16 bits
Erreur de paquets
Les données doivent être envoyées
o DATAen multiple d'octets.
CRC16
PID o Paquet ID
o Bit Stuff
DATA0o CRC
DATA1 Data suivant
Les paquets de Data ont leoformat Toggle :
Time-out ( absence de réponse )
‘Babling’
8 bits 0-1023
gure 8.15: Champ bytesDATA
du paquet 16 bits
LOA (Loss of Activity)
Figure 11 : Format du paquet Data
118 PID DATA CRC16
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
8.3. Protocole USB
119
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 8. USB
120
La spécification du Bus Série Universel définit 4 types
rts
de ou
transfe
de terminaisons,
o OUT (Sortie):Si l'hôte envoie un (ou des) jeton(s) OUT pendant l'étape
données pour transme ttre des données, la fonction validera la bonne récep
données en envoyant un paquet de longueur nul en réponse à un jeton IN.
Toutefois si une erreur intervenait, cela déboucherait sur un STALL ou s
fonction était encore occupé à traiter nnées,
les do cela déboucherait sur un NAK
gure 8.18: Transfert de commande : transaction dde données (facultatif)
o demandant
OUT (Sortie):à l'hôte
Quand de retenter
l'hôte l'étape
a besoin d'état ultérieurement.
d'envoyer à l'appareil un paquet
de commande, il emet un jeton OUTivi su par un paquet de données contenan
l'étape de
données d'état :
commande comme "charge utile" (payload). Si une partie du j
OUT ou du paquet de données est altéré alors la fonction ignore le pac
buffer de terminaison de la fonction était vide a cadencé
et qu'illes données da
le buffer de terminaison, il produit un ACK avisant l'hôte qu'il a bie
données. Si le buffer de terminaison n'est pas vide à cause du traitem
paquet précédent, alors la fonction retourne un NAK. Toutefois erminaison
si la t
comporte une erreur et que son bit "halt" ai été positionné, elle reto
(Bloqué).
• L'étape d'état rend compte des états de l'ensemble de demandes et cette fois
change selon la direction du transfert. Le rapport d'état ours est
réalisé
touj par la
fonction.
Les Transferts en Bloc sont seulement supportés par des appareils pleine et haute vitesse.
des terminaisons pleine vitesse, la longueur maximale du paquet en Bloc est soit 8, 16, 32
8.4.2desBulk
octets. Pour Data
ons Transfers
terminais haute vitesse, la longueur maximale du paquet peut aller jusqu'à
512 octets. Si la charge utile des données est inférieure à la taille maximale du paquet,
pas besoin d'être remplie avec des zéros. Un transfert en Bloc est considéré et comme compl
quand il a transféré la quantité exacte de données demandées, ou un paquet inférieur à la
maximale de la terminaison, ou un paquet de longueur zéro.
Caractéristiques :
Pipe Stream.
CHAP
QUIER Bernard Paquets en4 rafale de données
Page(ex : Scanners, imprimantes).
7/8 14/06/02
Taille des paquets : 8, 16, 32, 64 octets (uniquement Full Speed).
Utilise la bande passante quand elle est libre (débit variable) !
Protocole overhead : 13 octets, data 1023 octets max.
123
"initié" la communication ont besoin de temps de retard limité.
IN DATAx
ACQUIER Bernard CHAP 4 Page 5/8 14/06/02
OUT DATAx
Caractéristiques :
Pipe Stream.
Transmission isochrone (intervalles de temps réguliers).
Taille des paquets : < 1023 octets par frame : applications temps réel (exemple : Phonie, voix,
vidéo, ISDN ...).
Bande passante garantie.
124
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
8.5. Enumération et Descripteurs USB
8.5.2 Descripteurs
Dénition 8.2 (descripteur). On peut dénir les descripteurs comme étant des blocs d'infor-
mations pré-formatés. Tous composants USB doit obligatoirement posséder les descripteurs stan-
dards. Tous les transferts d'informations durant cette phase d'énumération se font suivant le type
commande (Control transfert). Il va de soi que tout composant USB doit pouvoir être capable de
supporter ce type de transfert. ■
Il existe sur le marché de nombreux périphériques USB. Il a fallu, lors de la création de la
norme USB , trouver un dispositif pour reconnaître chaque composant USB. Cela était indispensable
puisque l'USB devait être un dispositif plug & play. Lors du branchement du périphérique, le host
125
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 8. USB
doit reconnaître tous les périphériques qui lui sont branché. Le processus d'énumération se fait
grâce aux descripteurs qui sont rassemblés dans un chier texte qui est ensuite programmé dans le
système USB. Lorsque l'on connecte ou déconnecte un périphérique, celui ci fournit à l'hôte toutes
les informations nécessaires à son identication, c'est à dire ses descripteurs. Ils sont très utiles pour
l'hôte puisqu'il peut, de ce fait, connaître les caractéristiques complètes du périphérique comme par
exemple la puissance utile, le type de périphérique, le dispositif de transfert des données, le module
de gestion, . . . etc.
Généralement, dans la plupart des périphériques, toutes ces informations sont stockées dans la
ROM des composants, et lors de l'énumération, le périphérique envoie simplement ce chier pour
se faire connaître.
127
Chapitre 9
IEEE-1394
Sommaire
9.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
9.2 Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
9.3 Fonctionnement du bus FireWire . . . . . . . . . . . . . . . . . . . . . . . 131
9.4 Un protocole, trois couches . . . . . . . . . . . . . . . . . . . . . . . . . . 133
9.5 Une couche physique optimisée . . . . . . . . . . . . . . . . . . . . . . . . 135
9.6 Un arbitrage ecace et juste . . . . . . . . . . . . . . . . . . . . . . . . . 135
9.7 Plug and Play et Hot Plugging ? . . . . . . . . . . . . . . . . . . . . . . . 136
9.8 IEEE 1394 b, des améliorations . . . . . . . . . . . . . . . . . . . . . . . . 136
9.9 Annexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
9.1 Introduction
Le FireWire (IEEE 1394-1995) est une partie intégrante de la norme SCSI-3. Il utilise un bus
série et facilite la connexion de périphériques externes. On s'oriente de plus en plus vers une gestion
bus réseaux
128
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
9.2. Architecture
gure 9.1:Interconnections
Figure 11. Possible Topologie physique de l'IEEE
Using 1394as Interface
1394
Dune topologie très proche de celle de lUSB, le FireWire se démarque par sa bande passante
bien supérieure. Il ne nécessite pas de HUBs FireWire (en plus de lutilisation dune transmission
isochrone, le FireWire supporte le transport de deux ux vidéo temps réel avec une qualité broadcast
en simultanée) et possède également des ports pour une utilisation interne.
9.2 Architecture
9.2.1 Chipset VIA Fire xx
VIA propose des chipsets intégrant le FireWire (sans passer par le bus PCI). Prévu pour concur-
rencer le FireWire, lUSB2 propose des caractéristiques attrayantes mais est destiné à un marché
un peu diérent. Dans sa nouvelle déclinaison, lIEEE 1394b propose des caractéristiques et fonc-
tionnalités encore plus avancées que son concurrent et son prédécesseur :
Bande-passante améliorée, passant ainsi de 400 Mbits/s à 800 Mbits/s puis à 1.6 Gbits/s
(et même 3.2 Gbits/s grâce à lutilisation de bre optique plastique multimodes). Dans cette
conguration, les câbles reliant deux appareils pourront dépasser les 100 mètres ! (câbles UTP-
5 en 100 Mbits/s).
Nouveau protocole visant à améliorer la disponibilité de la bande passante grâce à une implé-
mentation BIOS du protocole dadressage.
Compatibilité avec les périphériques IEEE 1394-1995 par un mode bilingue.
20 Comparing Bus Solutions
129
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 9. IEEE-1394
Nouvelles applications (automobile, acquisition audio - vidéo), intégration IEEE 488 (GPIB)
et cartes d'E/S pour l'instrumentation industrielle.
gestion du bus comparable à celle d'un réseau.
9.2.3 Câbles
Deux paires de câbles (TPA et TPB) servent pour le transport des informations (données +
horloge) et une paire (VPVG) est utilisée pour la téléalimentation (1,5 A sous 8 à 40V).
Cette alimentation permet d'alimenter les cartes réseau an que l'arrêt d'un équipement ne
provoque pas de coupure sur le réseau. Le support (moins rapide que la bre optique) ore des
gammes de vitesse amplement susantes pour les applications du multimedia : 100 Mbit/s (12.5
Mo/s) en half-duplex, 200 Mbit/s (25 Mo/s) et 400 Mbit/s (50 Mo/s) en full-duplex (×2, ×4 :
possibilité due aux câbles) et 800 Mbit/s (100 Mo/s). Pour IEEE 1394-b les vitesses sont de 1.6
(200 Mo/s) et 3.2 Gbits/s (400 Mo/s).
9.2.4 Norme
La norme dénit deux environnements distincts :
châssis (backplane) : il permet d'interconnecter les cartes d'un microordinateur, et vient en
quelque sorte suppléer les bus de fond de panier.
câble (cable). il est déni pour l'interconnexion d'équipements externes. Ses caractéristiques
principales sont :
63 équipements au plus sur un réseau, reliés point à point,
27 ports au plus sur chaque équipement,
topologie acyclique (pas d'anneau) daisy chain en arbre (voir gure 1),
distances maximales autorisées : 4,5 m entre deux n÷uds voisins, 72 m entre deux n÷uds
quelconques (c'est à dire 16 sauts),
adressage sur 16 bits (norme IEEE 1212, systèmes multibus),
spécication des registres mémoires de chaque n÷ud et des commandes (transactions read,
write et lock) qui permettent d'y accéder.
130
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
9.3. Fonctionnement du bus FireWire
Contrairement au SCSI classique qui possède un câblage supervisé (daisy chain, adresse en
manuel ou xée, terminaison obligatoirement en bout de chaîne), avec IEEE 1394, on se retrouve en
non - supervisé (daisy chain hiérarchisé, réseau acyclique, selection des adresse automatiques, pas
de terminaison, situation physique des périphériques quelconque au plug).
Le réseau est exible et simple d'utilisation. Il est facile d'ajouter ou de retirer à tout moment
(Hot Plug and Play) un équipement à n'importe quel endroit du réseau : le bus se (re)congure en
lançant automatiquement des phases d'initialisation.
131
Philips Semiconductors
Cycle Start
Cycle Start
Packet
Packet
Isochronous Asynchronous
Packets Packets
0 Time
PS - XXX.XX.XX-11
Arbitration
Gaps
la trame standard est un cycle dont chaque paquet (isochrone ou asynchrone) est séparé par
un intervalle de temps (gap) dépendant de la nature du paquet :
émission / réception par paquets de données de 280 octets maximum (Header = 20 octets
+Payload = 256 octets + CRC = 4 octets),
132
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
9.4. Un protocole, trois couches
La norme IEEE 1394 s'appuie sur le modèle OSI et spécie trois couches :
Packets
Link Layer
Cycle Control Packet Transmitter Packet Receiver
Symbols
Physical Layer
Encode/Decode Arbitration Media Interface
La couche physique doit gérer le signal de mise sous tension à distance, la reconnaissance du
signal de sélection de l'appareil, le signal d'initialisation du bus et la réception / émission des
données. La couche liaison formate les données en paquets pour la transmission via le câble.
La couche liaison supporte 2 modes de communications (possible car 2 ls d'horloge) :
1. Mode asynchrone : Le mode de transfert asynchrone est basé sur une transmission de paquets
à intervalles de temps variables. Cela signie que l'hôte envoie un paquet de données et attend
de recevoir un accusé de réception du périphérique. Si l'hôte reçoit un accusé de réception,
il envoie le paquet de données suivant, sinon le paquet est à nouveau réexpédié au bout
d'un temps d'attente. Ce temps de latence ne peut pas être quantié car il dépend de taux
dutilisation du bus par dautres transmissions pour dautres appareils communicants entre
eux.
133
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 9. IEEE-1394
La co-existence de ces modes est assurée par une méthode déterministe d'accès au support.
La racine du réseau est particularisée au cours des phases d'initialisation et distribue le droit de
parole au cours de la phase d'arbitrage qui précède systématiquement tout échange de données en
cadençant les échanges isochrones (rôle de cycle master ).
La gestion de réseau est distribuée dans les n÷uds qui se répartissent en six prols, selon leurs
performances. Les n÷uds peuvent être :
134
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
9.5. Une couche physique optimisée
La couche physique doit gérer le signal de mise sous tension à distance, la reconnaissance du signal
de selection de lappareil, le signal dinitialisation du bus et la réception/émission des données. Les
signaux sont mesurés en mode diérentiel et les niveaux de tension sont de faibles amplitudes
(quelques centaines de millivolts). Une particularité du bus IEEE 1394 réside dans l'utilisation
de deux paires pour transporter les données. En eet, en plus d'un signal data classique (RxD en
réception ou TxD en émission), les n÷uds émettent aussi un signal appelé strobe (RxStrb ou TxStrb)
qui change d'état lorsque deux bits égaux consécutifs sont émis sur la paire data. Une transition a
donc systématiquement lieu à chaque top d'horloge, soit sur la paire data, soit sur la paire strobe.
Cette technique optimise ainsi la bande passante et explique en partie la valeur élevée des vitesses
atteintes.
La phase d'arbitrage permet de gérer l'accès au support. Chaque n÷ud qui souhaite envoyer
des données demande obligatoirement l'autorisation d'émettre à la racine. La topologie crée donc
une priorité naturelle entre les n÷uds : plus un n÷ud est loin de la racine, moins il est prioritaire
(arbitrage des câbles).
Pour pallier cette inégalité le protocole introduit 2 notions :
1. fairness interval (mode asynchrone) : les n÷uds ne peuvent émettre qu'un seul paquet asyn-
chrone pendant un intervalle d'équité. Celuici se termine quand tous les n÷uds asynchrones
qui ont demandé la parole l'ont prise une fois. Chaque n÷ud a donc une possibilité d'accès
pendant cet intervalle.
2. cycle master : (mode isochrone) : la racine déclenche le début de cycle isochrone à l'aide d'un
paquet asynchrone particulier (le cycle start) qui est le plus prioritaire puisque généré par la
racine.Chaque n÷ud isochrone qui prend alors la parole a pris soin au préalable de se réserver
une bande passante auprès du n÷ud isochronous ressource manager. Le cycle isochrone prend
n lorsque tous les n÷uds isochrones qui ont demandé la parole l'ont prise une fois.
Les moyens mis en oeuvre pour implémenter ces principes reposent sur les notions de signaux
de signalisation et d'intervalles d'attente. A chaque type de données (asynchrone, acquittement,
isochrone) est associée une classe d'arbitrage (fair, immediate, isochronous) qui est caractérisée par
un intervalle de temps d'attente (subaction gap, acknowledge gap, isochronous gap) pendant lequel
le bus doit être libre. Avant d'envoyer sa demande d'autorisation de prise de parole à la racine, un
n÷ud doit détecter un de ces intervalles. Le subaction gap est plus large que l'acknowledge gap ou
l'isochronous gap. Ceci garantit que le transfert asynchrone ne vient jamais perturber le transfert
isochrone et qu'une nouvelle requête ne précède pas l'émission d'un acquittement attendu. La de-
mande d'autorisation et sa réponse sont véhiculées point à point à l'aide de signaux de signalisation.
Pendant cette phase, les n÷uds tentent (au temps t) de forcer l'état des lignes dans un état logique
précis. Un n÷ud qui souhaite par exemple prendre la parole force ses lignes TPA et TPB dans les
états Z et 0. Ensuite, au temps t + dt (dt vaut une dizaine de nanosecondes), les n÷uds observent
l'état résultant des lignes et en déduisent le leur (par exemple : je peux parler ou je ne peux pas
parler).
135
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 9. IEEE-1394
136
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
9.9. Annexes
9.9 Annexes
137
Chapitre 10
Sommaire
10.1 Introduction
Dans le domaine des sciences pour l'ingénieur, le système de mesure le plus simple et le plus
répandu consiste à utiliser un micro ordinateur interfacé avec le système sur lequel on travaille.
Etablir un dialogue entre un micro ordinateur et un système extérieur au PC est possible par
l'intermédiaire de cartes d'interface. Ces cartes dites d'Entrées/Sorties sont directement implantées
à l'intérieur du PC et connectées sur le bus PC via des Slots. Elles sont généralement équipées
de compteurs (timers), de circuits convertisseurs orant des entrées et des sorties analogiques et
des circuits à base de portes logiques orant des entrées et des sorties logiques à l'utilisateur.
Cet ensemble PC et carte d'interface est complété par un logiciel (généralement appelé driver)
permettant la gestion de l'ensemble des fonctions de la carte Entrées/Sorties par l'intermédiaire
d'un programme.
138
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
10.2. Structure générale d'un système de mesure
139
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 10. Acquisition de Données - Temps Réel
Nous engloberons aussi sous ce terme les techniques nécessaires pour isoler électriquement et
amplier les tensions disponibles cette fois en sortie, de manière à les rendre aptes à commander
les actionneurs des processus externes comme le déclenchement d'un chauage, le lancement d'un
moteur ou l'ouverture d'une électrovanne.
10.2.3 Le multiplexage
Le multiplexage des voies est une méthode permettant de scruter successivement plusieurs voies
d'entrée dans un système d'acquisition. Bien entendu, cela allonge d'autant l'intervalle de temps qui
s'écoule entre deux mesures sur un même canal.
Le multiplexage peut consister simplement en une commutation sur l'une ou l'autre voie par
l'intermédiaire de relais électromagnétiques pilotés par le PC lui-même, mais beaucoup de dispositifs
de mesure comportent en entrée un système de multiplexage réalisé entièrement en semi-conducteurs,
et aussi programmable.
Lorsque l'on désire une acquisition plus rapide, ou bien une mesure quasi-simultanée sur plusieurs
voies, on préfère consacrer un convertisseur analogique-numérique à chaque voie.
140
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
10.3. Généralités sur les cartes E/S
Ces 2 méthodes présentent des inconvénients puisqu'elles ne permettent pas de mesures précises, de
plus elles mobilisent l'utilisation du processeur. C'est pourquoi les cartes d'acquisition sont munies
d'une horloge indépendante et de compteurs/décompteurs programmables appelés communément
timer.
Les timers possèdent en général 4 registres :
1. le registre d'entrée (précompte) : chargement de la donnée en 2 fois (LSB+MSB) → unique-
ment en écriture.
2. le registre de décomptage : chargement à partir du registre d'entrée, décomptage à chaque
front descendant de l'horloge du quartz et autorisation du décompte par la gâchette gate. La
durée de décomptage maximale avec un compteur 16 bits et un quartz de 4 MHz (Fréquence
16
de travail) vaut : durée= 42106 ≈ 16.4ms. Avec 2 timers en cascade → durée de décompte plus
importante.
3. le registre de contrôle (généralement 8 bits) : dénit le mode de fonctionnement.
4. le registre d'état du timer (généralement 8 bits) : indication sur l'état du décompteur →
opération de lecture.
141
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 10. Acquisition de Données - Temps Réel
10.4.2 Description
La carte étudié (Impulsion) possède 2 groupes d'adresses sélectionnables par l'utilisateur :
groupe 1 adresse 0x330 : CAN, CNA, Timer.
groupe 2 adresse 0x340 : E/S logiques.
Le circuit intégré de cette carte qui réalise cette fonction se nomme AD7537 et contient deux
convertisseurs dans son boîtier (voir gure 10.4). Par conséquent, l'utilisateur dispose de deux sorties
analogiques totalement indépendantes. En étudiant le diagramme de fonctionnement de ce circuit,
on remarque qu'il est prévu pour se connecter sur un bus de données 8 bits. Le registre interne d'un
CNA est scindé en deux parties (structure 8+4) : 8 bits de LSB et 4 bits de MSB, ce qui oblige à
charger une donnée en deux fois dans deux registres d'entrée temporaires (DAC A ou B LS et DAC
142
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
10.4. Etude sommaire d'une carte d'acquisition
A ou B MS) placés à deux adresses diérentes. En fait, la donnée ne sera présente dans le registre
12 bits (DAC A ou DAC B register) que si on agit sur la broche (19) U P D du convertisseur. Un
signal logique 0 sur cette broche transfère simultanément les données des registres d'entrée vers les
registres des deux CNA.
Nb
Vsortie = Vref
2N −1
1
Vmin = 10 = 2, 44mV
212 − 1
DA1L=ADR1+4 D7 D6 D5 D4 D3 D2 D1 D0 W
8 LSb (DAC A LS Input)
DA1H=ADR1+5 • • • • D11 D10 D9 D8 W
4 MSb (DAC A MS Input)
CONVDA=ADR1+7 Lancement de la Conversion R
143
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 10. Acquisition de Données - Temps Réel
Le circuit intégré réalisant cette fonction est l'AD574 et contient un seul convertisseur dans son
boîtier. AD574A
adh adl
maximum rating conditions for extended periods may affect device reliability.
adresses et .
REF OUT . . . . . . . . . . . . . . . . . . Indefinite Short to Common
Momentary Short to VCC
144
ORDERING GUIDE
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
10.4. Etude sommaire d'une carte d'acquisition
La conversion : la technique se fait par approximations successives, la conversion n'est pas im-
médiate et nécessite un temps de conversion d'environ 25µs pour l'AD574. Pendant que la conversion
est en cours, le boîtier le signale par le bit d'état busy à l'état haut. L'attente de n de conversion
peut être réalisée soit par une boucle d'attente de longueur supérieure ou égale au temps de conver-
sion soit par une lecture dans le registre situé à l'adresse adh . busy passe à l'état bas lorsque la
conversion est terminée et que le résultat peut être lu.
Le multiplexage : le convertisseur analogique numérique est en général le circuit le plus coû-
teux. Par conséquent, lorsque l'on souhaite plusieurs voies d'entrées analogiques, on préfère adjoindre
au CAN un multiplexeur analogique plutôt que de multiplier ce circuit. Ce multiplexeur permet de
choisir par programmation entre x voies d'entrées celle qui sera connectée au CAN. Un tel circuit
8 voies est utilisé sur la carte étudiée. La voie est choisie par écriture de son numéro dans un registre
8 bits situé à l'adresse mux.
La polarité : ce circuit a aussi la possibilité de traiter les signaux bipolaires (valeurs négatives).
Un bit (nommé pol ) non utilisé dans ce registre mux a été utilisé pour commander le mode
de polarité du CAN, ce qui évite un registre supplémentaire. Le choix du mode de conversion
V Vref
(unipolaire : 0 à Vref Volts ou bipolaire : de − ref
2 à + 2 ) se fait par une simple action d'un signal
logique, ce qui consiste en une écriture dans le registre situé à l'adresse mux . Si pol = 0, alors le
mode choisit est bipolaire sinon il est unipolaire.
ADL = ADR1+5 D7 D6 D5 D4 D3 D2 D1 D0 R
8 LSb (CAN)
ADH = ADR1+4 BUSY • • • D11 D10 D9 D8 R
busy+4 MSb (CAN)
ADCONV = ADR1+6 Lancement de la Conversion R
MUX = ADR2+1 • • • • NX2 NX1 NX0 POL W
pol = 1 : unipolaire (0/10V)
pol = 0 : bipolaire (-5/+5V ou -10/+10V)
Pour la carte utilisée, Vref = 10, 24 Volts, ce qui assure un LSB à exactement 25mV .
Le timer 8254 est inséré sur une carte d'acquisition avec un bus de donnée de 8 bits. Le registre
d'entrée est un registre 16 bits ce qui oblige à écrire la donnée en 2 fois (poids faible d'abord).
Le registre de comptage est aussi un registre 16 bits. Les registres de contrôle et d'état sont des
registres 8 bits.
145
Six programmable timer modes allow the 82C54 to be used as an event counter, elapsed time indicator,
programmable one-shot, and in many other applications.
CM_InfoIndus:version du mardi 29 The
novembre
82C54 is2005 à 2 hon17
fabricated Intel’s advanced CHMOS III technology which provides low power consumption
with performance equal to or greater than the equivalent HMOS product. The 82C54 is available in 24-pin DIP
Chapitre 10. Acquisition de Données - Temps Réel
and 28-pin plastic leaded chip carrier (PLCC) packages.
231244–3
PLASTIC LEADED CHIP CARRIER
gure 10.7: Architecture du timer 8254 Diagrams are for pin reference only.
Package sizes are not to scale.
décrémenté à chaque front descendant de l'horloge. Lorsque le compte est arrivé à 0, soit le compteur
attend une nouvelle initialisation (mode dit monocoup ), soit il se réinitialise avec le nombre toujours
présent dans le registre d'entrée et on recommence le décomptage (mode cyclique ou périodique ). On
peut aussi demander un signal de sortie symétrique (signaux carrés ) ou impulsionnel. Une tension
d'entrée logique activant gate autorise ou non le décompte. L'ensemble des caractéristiques de
fonctionnement (monocoup, périodique, forme du signal de sortie et rôle de gate ) dénit le mode
de fonctionnement.
Remarque 10.1 (Latch). Il vaut mieux éviter de lire le compteur à l'instant où sa valeur change.
On opère donc en 2 temps. La valeur instantanée est d'abord transférée dans un registre tampon et
c'est celui-ci que l'on interroge alors que le (dé)compteur continue de décrémenter. ■
146
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
10.4. Etude sommaire d'une carte d'acquisition
147
thus starting the one-shot pulse. An initial count of N
counting. If GATE goes low during an output pulse,
will result in a one-shot pulse N CLK cycles in dura- of OUT. OUT w
OUT is set high immediately. A trigger reloads the
tion. The one-shot is retriggerable, hence OUT will tial count has e
82C54 Counter with the initial count on the next CLK pulse;
remain low for N CLK pulses after any trigger. The der of the coun
OUT goes low N CLK pulses after the trigger. Thus
CM_InfoIndus:version du mardi 29 novembre
one-shot pulse 2005 à 2repeated
can be h 17 without rewriting thethe GATE input can be used to synchronize the above is repea
same count into the counter. GATE has no effect on results in a sq
Counter.
If anChapitre
initial count 10. Acquisition de0, it will MODE 1: HARDWARE RETRIGGERABLE
Données - Temps Réel
OUT. cycles.
is written while GATE e
still be loaded on the next CLK pulse. When GATE If a newONE-SHOT
count is written to the Counter during a one- After writing a Control Word and initial count, the
goes high, OUT will go high N CLK pulses later; no GATE e 1 ena
shot pulse, the current one-shot is not affected un- Counter will be loaded on the next CLK pulse. OUT
CLK pulse is needed to load the Counter as this has OUT will be initially high. OUT will go low on thelow
CLK counting. If GAT
less the Counter is retriggered. In that case, the goes N CLK Pulses after the initial count is writ-
already been done. Counterpulse following
is loaded with athe
trigger to begin
new count andthe
theone-shot
one- pulse, set high immed
ten. This allows the Counter to be synchronized by
and continues
shot pulse will remain low
until theuntil
newthe Counter
count reaches
expires. zero. trigger reloads
software also.
OUT will then go high and remain high until the CLK the next CLK p
pulse after the next trigger. used to synchro
After writing the Control Word and initial count, the After writing a
Counter is armed. A trigger results in loading the Counter will be
Counter and setting OUT low on the next CLK pulse, allows the Cou
thus starting the one-shot pulse. An initial count of N also.
will result in a one-shot pulse N CLK cycles in dura-
tion. The one-shot is retriggerable, hence OUT will Writing a new c
remain low for N CLK pulses after any trigger. The the current cou
one-shot pulse can be repeated without rewriting the ceived after wri
231244–8
same count into the counter. GATE has no effect on of the current
NOTE: OUT. Counter will be
The Following Conventions Apply To All Mode Timing next CLK pulse
Diagrams: new count. Oth
1. Counters are programmed for binary (not BCD) If a new count is written to the Counter during a one-
counting and for Reading/Writing least significant byte shot pulse, the current one-shot is not affected un- at the end of th
(LSB) only. less the Counter is retriggered. In that case, the
2. The counter is always selected (CS always low). Counter is loaded with the new count and the one- Mode 3 is imple
3. CW stands for ‘‘Control Word’’; CW e 10 means a
control word of 10, hex is written to the counter. shot pulse continues until the new count expires.
Even counts: O
4. LSB stands for ‘‘Least Significant Byte’’ of count.
5. Numbers below diagrams are count values. loaded on one
The lower number is the least significant byte. by two on succ
The upper number is the most significant byte. Since expires OUT ch
the counter is programmed to Read/Write LSB only, After writing the Control Word and initial count, the loaded withLow
the
the most significant byte cannot be read. Signal
N stands for an undefined count.
counter will not be loaded until the CLK pulse after a repeated Or
Status indefin
Goin
Vertical lines show transitions between count values. trigger. This CLK pulse does not decrement the Modes Low
count, so for an initial count of N, OUT does not Odd counts: O
0
Figure 15. Mode 0 strobe low until N a 1 CLK pulses after a trigger. minus oneDisable
(an
pulse andcountin
then
A trigger results in the Counter being loaded with the 1 CLK pulses
ing Ð
82C54 initial count on the next CLK pulse. The counting pires, OUT goe
231244–8 231244–9
sequence is retriggerable. OUT will not 231244–10
strobe low with the initial
NOTE: Figure 16. Mode 1 for N a 1 CLK pulses after any trigger. GATE has
NOTE: pulses decreme
The Following Conventions Apply To All Mode Timing gure 10.9: 8254 : modes 0,1 et 2A noGATE
effecttransition
on OUT.should not occur one clock prior to expires, OUT g
be high for (N a 1)/2 counts and low for
OUT will Diagrams: 1) Writing the first byte has no effect on counting. terminal count.
reloaded
2 1) with th
Disable
(N b10
1)/21.82C54
counts.
Counters are programmed for binary (not BCD)2) Writing the second byte allows the new count toIf a new count is written during counting, the current
Figure 17. Mode 2 process iscountin
repe
counting and for Reading/Writing least significant byte be loaded on the next CLK pulse. counting sequence will not be affected. If a trigger 2) Sets ou
(LSB) only. occurs after the new count is written but before the
2. The counter is always selected (CS always low). This allows the sequence to be ‘‘retriggered’’ bycurrent count expires, the Counter will be loaded immed
OUT
3. CWwill be high
stands for (N aWord’’;
for ‘‘Control 1)/2 counts
CW e and low forasoftware.
10 means 1) Writing the first byte has no effect on counting.
OUT strobes low N a 1 CLK pulses afterwith the new count on the next CLK pulse and
high
control wordcounts.
(N b1)/2 of 10, hex is written to the counter. 3 1) Disable
4. LSB stands for ‘‘Least Significant Byte’’ of count. the new 2) Writing
count the
of Nsecond byte allows the new count counting
is written. to will continue from there.
countin
5. Numbers below diagrams are count values. be loaded on the next CLK pulse. 2) Sets ou
The lower number is the least significant byte.
The upper number is the most significant byte. Since immed
the counter is programmed to Read/Write LSB only, This allows the sequence to be ‘‘retriggered’’ by high
the most significant byte cannot be read. software. OUT strobes low N a 1 CLK pulses after 4 Disable
N stands for an undefined count. the new count of N is written. countin
Vertical lines show transitions between count values.
5 Ð
Figure 15. Mode 0
Figure 21. Gat
231244–9
0
10
1
2
3
4
231244–11
NOTE:
NOTE: 0 is equivalent to 2
A GATE transition should not occur one clock prior to BCD counting
terminal count.
Figure 22. Minimu
Figure 18. Mode 3
10.5 Annexes
10.5.1 Les Fonctions du Langage C
La communication avec les registres de la carte s'eectue avec les fonctions inp et outp :
char inp(int AdressePort) lit un caractère (ASCII) sur le port situé à l'adresse AdressePort
et le retourne
outp (int AdressePort, char val) écrit la valeur val sur le port situé à l'adresse AdressePort.
10.5.2 Programmation
On veut envoyer la tension Vout sur le DAC A.
149
82C54
82C54
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre
gramming10. Acquisition
OPERATIONAL DESCRIPTION
operations de Counters
ofProgramming
other Données
the 82C54 - Temps
may be in-Réel
serted between them. Counters are programmed by writing a Control Word
COUNTER LATCH COMMAND gramming operat
General and then an initial count. The control word format is
shown in Figure 7. serted between t
Latch Com- After power-up, the state of the 82C54 is undefined. The second method uses the ‘‘Counter Latch Com-
The Mode, count value, and output of all Counters All Control Words are written into the Control Word
and is written Another feature of theRegister,
are undefined. 82C54 is when
which is selected thatA1, A0 ereads
11. The and mand’’. Like a Control Word, this command is written Another feature
Conclusion
Les anciennes entrées/sorties de nos micro-ordinateurs ont largement proté des développements
rapide de ces dernières années. Les ports série et parallèle déjà présent sur les premiers PC com-
mencent à être à bout de soue et ne répondent plus vraiment aux besoins des utilisateurs.
Deux principaux bus se disputent désormais le marché, lUSB et lIEEE-1394. Dans leur der-
nière déclinaison, ces deux interfaces proposent toutes les deux des caractéristiques très intéressante
(gestion de type réseau).
Dans sa première version, lUSB était jusqualors limité à des périphériques lents (claviers,
imprimantes, souris, webcam). Avec sa version 2.0, il investit des domaines qui étaient jusqualors
réservés à lIEEE 1394 ou au SCSI (périphériques de stockage externe ou caméscopes DV).
Reste que lIEEE 1394 restera certainement linterface privilégiée des périphériques très gour-
mand, notamment en ce qui concerne laudio vidéo (caméscopes, TV numériques, DVD). En eet,
il ore dune part une bande passante plus importante dans sa dernière évolution, et est plus apte
à gérer plusieurs périphériques à haut débit.
151
Liste des gures
3.1 Scrutation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.2 Interruption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.3 Table des vecteurs d'interruptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.4 Exemple de partage d'IRQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.5 Architecture d'un PIC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.6 Liaison entre les 2 PIC et le microprocesseur . . . . . . . . . . . . . . . . . . . . . . . 51
3.7 Liaisons matérielles d'un PIC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.8 Sous programme d'interruption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
152
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
153
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Liste des gures
154
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
155
Liste des tableaux
156
Bibliographie
157