Vous êtes sur la page 1sur 165

année L3

Université de Caen Fillière EEA-IE-EIA

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

Avertissement : Ce document constitue le support du cours et ne prétend donc ni à l'originalité, ni à l'exhaustivité.


Ces notes doivent beaucoup aux emprunts fait à de nombreux ouvrages et à diérents travaux de collègues. Ce
document est une version provisoire qui s'adresse (en priorité) aux étudiants de l'Université de Caen en L3
(14 heures de Cours).

Année Universitaire 2005-2006


Table des matières

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

2.3.2 Bus séries : XPCI, SSA-FC-IEEE1394, SATA, SPI-Microwire, I2C . . . . . . 38


2.4 Bus de périphériques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.4.1 USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.4.2 IEEE1394 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.4.3 IEEE488 (GPIB et HPIB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.5 Bus embarqués . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.5.1 PCCard (ancien PCMCIA) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.5.2 Bus CAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.6 Récapitulatif des principales caractéristiques des divers Bus . . . . . . . . . . . . . . 42

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

6.3.1 RBR/THR émission/réception . . . . . . . . . . . . . . . . . . . . . . . . . 85


6.3.2 DLL / DLM vitesse de transmission . . . . . . . . . . . . . . . . . . . . . . 87
6.3.3 IER autorisation d'interruption . . . . . . . . . . . . . . . . . . . . . . . . . . 87
6.3.4 IIR nature des interruptions . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
6.3.5 FCR réglages des buer FIFO . . . . . . . . . . . . . . . . . . . . . . . . . . 88
6.3.6 LCR réglages de la transmission . . . . . . . . . . . . . . . . . . . . . . . . . 90
6.3.7 MCR réglages du modem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
6.3.8 LSR état de la transmission . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
6.3.9 MSR état du modem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
6.3.10 SCR réglages pour une horloge externe . . . . . . . . . . . . . . . . . . . . . 92
6.4 Programmer l'UART . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
6.4.1 Par scrutation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
6.4.2 Par interruption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
6.5 Annexe : architecture interne d'un UART 16550 . . . . . . . . . . . . . . . . . . . . . 95

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

7.5.4 Cas particuliers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105


7.6 Mode de transfert en adressage étendu . . . . . . . . . . . . . . . . . . . . . . . . . . 106
7.6.1 Adressage étendu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
7.6.2 Ecriture du maître . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
7.6.3 Lecture du maître . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
7.6.4 Formats combinés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
7.7 La programmation du bus I2C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108

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

10.5.2 Programmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149


10.6 Tableau récapitulatif des adresses de la carte Impulsion . . . . . . . . . . . . . . . 149
10.7 Registres du Timer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150

Chapitre 11
Conclusion

Liste des gures 152

Liste des tableaux 156

Bibliographie 157

vi
Chapitre 1

Architecture - Principes Généraux

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.1.1 Un peu d'histoire . . .


On peut résumer le développement en quelques grandes périodes :
génération 0 - les calculateurs mécaniques (1642-1945) : La première machine est attribué
à Pascal (addition et soustraction) améliorée ensuite par Leibniz (multiplication et division).
Au 19ème siècle, Babbage inventa la machine à diérences puis la machine analytique deve-
nue programmable par Ada Augusta Lovelace et avec une structure très proche des machines
actuelles. Atanassof inventa une machine qui utilisait l'arithmétique binaire et des conden-
sateurs en guise de RAM. Toutefois, cette machine ne put être réalisée faute d'adéquation
technologique. La première véritable machine fut donc celle d'Aiken (en 1944) à base de relais
et de rubans perforés.
génération 1 - les tubes à vides (1945-1955) : Avec l'avènement de l'électronique et l'appari-
tion de la guerre mondiale, on se consacra au chirage (cryptage et codage) et on aboutira à
la construction du premier ordinateur électronique (COLOSSUS) auquel Turing a fortement
participé. Mauchley et Eckert achevèrent une machine (ENIAC) utilisant des tubes à vides
et des relais (30 tonnes, 20 registres de 10 chires) en 1946. Un des participants au projet
ENIAC, Von Neumann construisit l'IAS (1952) qui constitue encore aujourd'hui, l'architecture

1
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 1. Architecture - Principes Généraux

de base de la plupart de nos ordinateurs. Pendant ce temps, l'entreprise Eckert-Mauchley fut


la première à commercialiser un ordinateur, l'UNIVAC. Plusieurs entreprises telles que IBM
ou Bull s'intéressèrent alors à la construction et à la commercialisation d'ordinateurs.
génération 2 - les transistors (1955-1965) : Le prix Nobel de Physique de Bardeen, Brattain
et Shockley fut délivré en 1956 pour l'invention en 1948 chez Bell Labs du transistor. Ceci
révolutionna dénitivement les ordinateurs. DEC (en 1961), commercialisa le premier mini-
ordinateur, le PDP-1 et continua avec le PDP-8 qui possède une caractéristique nouvelle :
l'omnibus, réalisant l'interconnection de tous les composants. IBM réagit avec la construction
de diverses machines (1401, 7094).En 1964, CDC construit une machine avec une architecture
parallèle, le 6600 dont Cray est l'architecte. La course à la puissance était lancée, symbolisée
par le Gamma60 de Bull. La prise de conscience de l'importance du logiciel se fait à cette
époque (Algol, ancêtre du Pascal) mais n'inue pas encore sur la construction de matériel
dédié.
génération 3 - les circuits intégrés (1965-1980) : Noyce inventa le circuit intégré en 1958.
IBM créa la première gamme uniée (calcul et gestion) d'ordinateur avec le System/360 qui
dota toute la gamme avec le même langage d'assemblage et instaura la multiprogrammation
qui permet à plusieurs programmes de résider simultanément en mémoire. Le PDP-11, suc-
cesseur du PDP-8 et d'un rapport coût/performance acceptable, allait assoir la suprématie de
DEC dans le secteur de la mini-informatique.
génération 4 - les VLSI (1980- ?) : Les VLSI (Very Large Scale Integration ) permettent, dans
les années 80, l'intégration de milliers, puis de millions de transistors sur une puce, favorisant
la miniaturisation et l'augmentation de la rapidité de traitement. Les prix chutant, l'ère de
l'informatique personnelle commence. Kildall conçoit le CP/M, un logiciel d'exploitation dé-
dié au 8080 d'Intel.Apple fut propulsé au rang de leader mondial avec l'Apple puis l'Apple
II conçues par Jobs et Wozniak. IBM répliqua avec le PC (qui utilisa le 8088) en 1981 et
battit tous les records de vente, le système d'exploitation étant le MS-DOS. IBM et Micro-
soft développèrent (respectivement) OS/2 (interface graphique concurrente du MacIntosh) et
Windows (utilisant la couche DOS). Au milieu des années 80, l'architecture RISC commença
a remplacer CISC, jugée trop complexe. Le superscalaire débuta en 1990 . . .

1.1.2 Modèles d'architectures


1.1.2.1 Architecture en couches
La gure 1.1 représente une hiérarchie qui caractérise l'architecture d'une machine standard. Au
fur et à mesure que l'on monte dans la hiérarchie, l'abstraction est plus importante (à un niveau
donné la machine utilise les services de niveaux inférieurs). Deux parties peuvent êtres distinguées :
la partie système et la partie applications. La décomposition est la suivante :
 couche application
langages d'application : ces langages sont le plus souvent l'aaire de spécialistes. Ce sont
des langages spécialisés de très haut niveau, très synthétiques et abstraits. Ils ont été
conçus pour rendre l'utilisation des machines plus simple.
langages évolués : ce sont des langages universels très utilisés par les scientiques. D'in-
nombrables langages ont été conçus mais les plus populaires sont Pascal, C, Fortran,
Ada. Proches de l'algorithme, ils permettent de coder assez aisément et rapidement les
problèmes scientiques.
langage d'assemblage : c'est l'expression symbolique du langage propre à la machine. Ce
langage est constitué de mnémoniques qui décrivent le jeu d'instruction du processeur.
Il est en eet très dicile (voire impossible) de programmer la machine en binaire di-

2
Chapitre 1
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
1.1. Introduction

Fonctionnement d’un processeur


rectement, c'est pourquoi l'utilisateur qui veut travailler en utilisant les instructions du
processeur, programme en langage d'assemblage. Un compilateur appelé assembleur per-
met de traduire ce langage symbolique en langage binaire (niveau macromachine).
1.1 Introduction
 couche système
système d'exploitation : un ordinateur nu est inexploitable. Le rôle du système d'exploita-
tion est d'orir à l'utilisateur un ensemble de services permettant d'utiliser les ressources
Dans ce chapitre nous rappelons l’architecture générique d’un ordinateur et les diffé-
de la machine (mémoire, clavier ...). Le langage associé est composé de commandes que
rentes
peutunités fonctionnelles
exécuter ce systèmed’un(Unix,
processeur.
Linux,Certaines
WindowsNT,de ces WindowsXP
unités ainsi que...).la mémoire
macromachine ouété
des ordinateur ont couche
étudiéesISA
dans: ille s'agit
cours essentiellement
de deuxième année. du processeur de la machine (Pen-
tium, Athlon, PowerPC ...). Le langage associé est composé par le jeu d'instruction du
processeur (langage machine du processeur ou langage binaire).
micromachine ou micro-architecture : l'exécution d'une instruction du langage machine
est une opération qui nécessite également une opération de traduction en une séquence
1.2 Architecture multi-niveaux
de microopérations. Ce niveau est invisible par l'utilisateur mais constitue un niveau
important pour le concepteur du processeur. Le langage associé est composé de micro-
instructions que peut exécuter le processeur.
Un ordinateur peut être considéré comme une hiérarchie de niveaux. A chaque niveau
machine physique ou couche logique : a ce niveau on décrit les composants électroniques
correspond une machine
qui composent virtuelle Le
l'ordinateur. et un langageassocié
langage associéest(voir figure 1.1).
constitué des signaux logiques 0 et 1.

Langages d’application langages spécialisés

Applications Langages évolués Ada, Pascal, C, ...

Langages d’assemblage Assembleur

Système d’exploitation Linux, WindowsNT, ...

Macro-machine instructions machine

Système

Micro-machine micro-instructions

langage binaire
Machine physique

gure 1.1: Architecture en couches


Fig. 1.1 – Hiérarchie de niveaux
1.1.2.2 Architecture de Von Neumann
La proposition de Von Neumann est encore 3aujourd'hui à la base de l'architecture de presque
tous les ordinateurs. La machine de Von Neumann est composée de cinq parties : la mémoire, l'unité
arithmétique et logique, l'unité de contrôle, et les dispositifs d'entrées et de sorties. La gure 1.2
donne le schéma simplié de cette machine.

3
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 1. Architecture - Principes Généraux

gure 1.2: Architecture de Von Neumann

1.2 Structure : composants principaux

Un ordinateur est constitué de processeurs, de mémoires et de dispositifs d'entrée/sortie judi-


cieusement interconnectés. Du point de vue utilisateur, un ordinateur est généralement composé des
éléments suivants :
 d'une unité centrale (le boîtier),
 d'un moniteur (l'écran),
 de périphériques externes (souris, imprimantes, scanner, clavier),
 d'interfaces d'entrée-sortie (cartes USB, SCSI, cartes d'extension diverses),
 de périphériques internes (cartes sons, vidéo, . . . ),
 d'un disque dur, d'un lecteur de disquettes, d'un lecteur de CD-ROM, DVD, . . .
La carte-mère (voir gure 1.3) est l'élément principal de l'ordinateur car c'est sur elle que sont
connectés les éléments constitutifs de l'ordinateur. Celle-ci est composée principalement :
 d'un processeur (cerveau de l'ordinateur),
 d'un ou de plusieurs chipset(s) : à coté du processeur se trouve un jeu de composant soudé
sur la carte mère, appelé chipset. Son rôle est capital, il prend en charge le contrôle de la
circulation des informations : l'horloge du système, la mémoire vive, l'accès direct mémoire
(Direct Memory Access ), le clavier, la souris et les connecteurs d'extension. Il régit tous les
échanges au sein du PC en aiguillant les données sur les diérents bus de la carte mère : le
bus mémoire, PCI, AGP, etc . . .
 de la mémoire : BIOS ROM, RAM et mémoire cache,
 d'un contrôleur de disques permettant le contrôle du(des) disque(s) dur(s), du lecteur CD-
ROM et du lecteur de disquettes,
 des périphériques internes connectés sur les bus ISA, PCI ou AGP . . .
 des circuits gérant les Entrées/Sorties,
 d'une horloge et d'une pile pour le CMOS.

4
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
1.2. Structure : composants principaux

gure 1.3: Carte mère

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 :

1. une unité de commande


2. une unité de traitement

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

gure 1.4: Schéma fonctionnel d'un microprocesseur

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). ■

1.2.1.1 Unité de commande


C'est la partie commande du microprocesseur. Elle permet de séquencer le déroulement des
instructions. elle eectue la recherche en mémoire de l'instruction. Comme chaque instruction est
codée en binaire, l'unité de commande assure le décodage pour réaliser l'exécution puis préparer
l'instruction suivante. Elle est composé par :
 le compteur de programme (PC, Program Counter ) : registre qui contient l'adresse de l'ins-
truction à exécuter ;
 le registre et le décodeur d'instruction (IR, Instruction Register ) : stockage et décodage des
instructions à exécuter ;
 le séquenceur : bloc logique de commande qui organise l'exécution des instructions au rythme
d'une horloge. Il élabore tous les signaux de synchronisation internes ou externes (bus de
commande).

gure 1.5: Unité de commande

6
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
1.2. Structure : composants principaux

1.2.1.2 Unité de traitement

C'est la partie opérative du microprocesseur. Il s'agit du c÷ur du microprocesseur. Cette unité


regroupe les circuits qui assurent les traitements nécessaires à l'exécution des instructions. Elle est
composée de :
 une Unité Arithmétique et Logique (ALU : Arithmetic and Logical Unit ) : ce circuit assure
les fonctions logiques (comparaison, décalage, ET, OU, etc . . . ) et arithmétiques (addition,
soustraction, etc . . . ) ;
 un registre d'état constitué (généralement) de 8 bits dont chacun représente l'état de la
dernière opération eectuée par l'ALU : Les principaux indicateurs d'état (ou drapeaux :
ag )sont la retenue (Carry), la retenue auxiliaire (AC), le signe (S), le débordement (oVerow),
le zéro (Z) et la parité (P) ;

gure 1.6: Unité Arithmétique et Logique

 des accumulateurs qui sont des registres servant à stocker une opérande au début et le
résultat à la n d'une opération.

gure 1.7: Unité de traitement

7
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 1. Architecture - Principes Généraux

1.2.1.3 Structure Interne du 8086

gure 1.8: structure du 8086

1.2.1.4 Cycle d'exécution d'une instruction


Un microprocesseur ne comprend qu'un nombre limité d'instructions (codées en binaire). Le
traitement d'une instruction peut alors être décomposé en 3 phases principales :
Phase 1 : recherche de l'instruction à traiter
1. l'unité de commande émet un ordre de lecture et place la valeur contenue dans le compteur
de programme (PC) (adresse de l'instruction) sur le bus d'adresses.
2. après un certain temps (d'accès à la mémoire), le contenu de la case mémoire sélectionnée
est disponible sur le bus de données.
3. l'instruction est stockée dans le registre IR.

8
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
1.2. Structure : composants principaux

Phase 2 : décodage de l'instruction


1. l'unité de commande transforme l'instruction (codée sous forme de mots binaires) en une
suite de commandes élémentaires.
2. l'unité de commande récupère (si besoin) sur le bus de données la valeur d'une donnée
en provenance de la mémoire.
3. l'opérande est stockée dans un registre de base.
Phase 3 : exécution de l'instruction
1. le micro-programme réalisant l'instruction est exécuté.
2. les drapeaux sont positionnés.
3. l'unité de commande positionne le compteur de programme (PC) pour l'instruction sui-
vante.

1.2.1.5 Familles d'architecture des microprocesseurs


Il existe actuellement 2 grandes familles :
 architecture CISC (Complex Instruction Set Computer ) : elle est historiquement la plus an-
cienne. Elle consiste à privilégier des instructions plus complexes (elle nécessite un décodeur
complexe, le micro-code) du fait de la lenteur de la mémoire (comparativement au micropro-
cesseur). C'est donc une architecture qui comporte un grand nombre d'instructions. Pour une
tâche donnée, on exécute un petit nombre d'instructions qui nécessitent chacune un grand
nombre de cycles.
 architecture RISC (Reduced Instruction Set Computer ) : elle découle d'une étude statistique
qui a prouvé que 80 % des traitements des langages de haut niveau faisaient appel à seulement
20 % des instructions microprocesseur, d'où l'idée de réduire ce jeu d'instruction. Etant donné
cette réduction, la possibilité d'une réalisation à base de séquenceur câblé libère de la surface et
permet ainsi d'augmenter le nombre de registres ou d'unités de traitement (chaque instruction
s'exécute en un cycle d'horloge). Toutefois, cette architecture impose l'emploi d'un compilateur
très évolué.
Le choix entre ces 2 types d'architectures se fait en fonction des applications visées et en com-
parant le nombre d'instructions et de cycles nécessaires à ces applications.

1.2.1.6 Améliorations : parallélisme et pipelining


L'ensemble des améliorations tendent à diminuer le temps d'exécution du programme. L'idée
naturelle consiste à augmenter la fréquence de l'horloge. Toutefois, cette accélération entraîne une
sur-consommation et une élévation de la température, imposant un refroidissement ou une diminu-
tion de la tension d'alimentation. L'autre possibilité consiste à augmenter la puissance de traitement
du microprocesseur (diminuer le nombre de cycles nécessaire à l'exécution d'une instruction). Cela
se fait par une optimisation du compilateur ou par le choix d'une autre architecture telle que le
pipelining ou la parallélisme :
pipelining : Le pipelining est un principe simple à comprendre. Un programme comporte généra-
lement des portions de code (plus ou moins grandes) qui sont traitées de nombreuses fois par
le processeur. Le pipelining permet, grâce au partitionnement des instructions en plusieurs
étapes, d'avoir une instruction en cours d'exécution dans chacune des étapes, permettant
d'améliorer l'ecacité. Le nombre d'étapes qui caractérise les microprocesseurs pipeline est
appelé étages 3 .
3
L'Athlon d'AMD comporte 11 étages tandis que les Pentium 2, 3 et 4 en comportent 12, 10 et 20

9
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 1. Architecture - Principes Généraux

parallélisme : Le parallélisme, ou architecture superscalaire consiste à exécuter simultanément


sur des processeurs diérents des instructions relatives à un même programme. Le processeur
possède plusieurs unités de traitement travaillant en parallèle. Cela se traduit par le découpage
d'un programme en plusieurs processus qui seront traités par des processeurs diérents dans
le but de gagner en temps d'exécution. Cela nécessite toutefois une communication entre les
diérents processus donc une mémoire cache importante.
Remarque 1.2 (Mémoire cache ou antémémoire). Malgré des progrès technologiques iden-
tiques pour les mémoires et les microprocesseurs, le décodage des adresses et la lecture/écriture
d'une donnée restent des phénomènes incompressibles. Pour éviter les temps de latence qui en
découle, on dispose d'une mémoire (appelée mémoire cache 4 ou antémémoire) très rapide entre le
microprocesseur et la mémoire. Le principe repose sur le fait que la mémoire cache conserve les mots
mémoires les plus fréquemment employés (plutôt que de les stocker dans la mémoire principale).
Cette mémoire cache est séparée en plusieurs niveaux (cache interne : L1 et cache externe : L2 et L3)
et le cache interne (L1) est séparé en 2 (l'un pour les instructions, l'autre pour les données). Il faut
noter que la somme des espaces mémoires nécessaires dépasse presque toujours la taille physique
de la mémoire. Pour pallier cet inconvénient, on utilise de la mémoire virtuelle avec les notions
associées de pagination, segmentation et TLB (tampon de traduction ). ■
Remarque 1.3 (Processeurs spéciaux). Certains processeurs (réduits) moins performants sont
dédiés aux applications, permettant une optimisation des fonctions. Il s'agit des microcontrolleurs
(acquisition temps réel, interfaçage) et des DSP (traitement numérique du signal, application en au-
tomatique, multimédia, électronique embarquée). L'extension du parallélisme mène aux processeurs
matriciels qui sont basés sur l'emploi en parallèle de plusieurs processeurs. ■

1.2.2 Mémoire Principale


1.2.2.1 généralités
Dénition 1.1 (mémoire). Une mémoire est un circuit à semi-conducteur permettant d'enregis-
trer, de conserver et de restituer des informations (appelées données). ■
C'est cette capacité de mémorisation qui explique la polyvalence des systèmes numériques et leur
adaptabilité à de nombreuses situations. Les données peuvent être lues ou écrites. Il y a écriture
lorsqu'on enregistre des informations en mémoire et lecture lorsqu'on récupère des informations
précédemment enregistrées.

1.2.2.2 Organisation et caractéristiques


Une mémoire peut être décrite comme une armoire de rangement dont chaque tiroir constitue
une case mémoire qui peut contenir un seul élément (généralement un octet ou bien un mot de
longueur une puissance de 2, dénit par la largeur du bus de données). Le nombre de case est alors
élevé et il est nécessaire de pouvoir les repérer par un numéro appelé adresse (voir cours de Langage
C : pointeurs). Avec une adresse codée sur n bits, il est possible de référencer 2n cases mémoire
(dénit par la largeur du bus d'adresses). En plus de ces 2 bus, un boitier mémoire comporte une
entrée de commande (pour sélectionner la lecture ou l'écriture) et une entrée de sélection (pour la
mise en hate impédance des entrées/sorties du boitier).
Une opération de lecture(resp. écriture) suit le cycle d'instructions suivant :
1. sélection de l'adresse,
2. choix de l'opération à eectuer (R/W ),
4
les performances de la mémoire cache dépendent du taux de succès, en général 80 à 90%.

10
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
1.2. Structure : composants principaux

3. sélection de la mémoire (CS = 0),


4. lecture (resp. écriture) de la donnée.
Les circuits de mémoire ne sont pas tous identiques. La diérence se fait par leurs caractéristiques
dont les principales sont :
la capacité : c'est le nombre total de bits que contient la mémoire (exprimé en Ko ou Mo),
le format des données : largeur (en bits ou octets) du mot mémorisable,
le temps d'accès : temps qui s'écoule entre l'instant ou l'opération (R/W ) est lancée l'instant où
la donnée est eectivement disponible sur le bus de données. On parle alors d'accès direct et
de temps d'accès constant (indépendant de l'adresse),
le temps de cycle : intervalle minimal qui sépare 2 demands successives de lecture (ou écriture),
le débit : nombre maximum d'informations lues (ou écrites) par secondes,
la volatilité : elle caractérise la permanence des informations dans la mémoire (donnée volatile si
elle disparaît lors d'absence d'alimentation, non volatile dans le cas contraire).
Les critères de choix sont (principalement) la capacité, la vitesse, la consommation et le coût.

1.2.2.3 Mémoire vive : RAM


Dénition 1.2 (RAM). Une mémoire vive (RAM : Random Access Memory) sert au stockage
temporaire des données. Elle doit avoir un temps de cycle très court pour ne pas ralentir le micro-
processeur. ■
Ces mémoires sont en général volatiles et sont divisées en 2 grandes familles : statiques et
dynamiques. La mémoire statique (SRAM) est un composant dont chaque bit est constitué d'une
bascule (contenant entre 4 et 6 transistors). Dans la mémoire dynamique (DRAM), l'information
est mémorisée sous forme d'une charge électrique stockée dans un condensateur (transistor MOS),
augmentant ainsi la capacité d'intégration et réduisant la consommation. Toutefois, l'inconvénient
majeur réside dans l'obligation, pour les DRAM 5 , d'un rafraîchissement périodique (pour compenser
les courants de fuite du condensateur), ce qui impose une gestion plus complexe et un temps d'accès
aux informations plus long. En général les DRAM sont utilisées pour la mémoire centrale alors que
les SRAM sont plus adaptées aux mémoires cache et aux registres.

1.2.2.4 Mémoire morte : ROM


Dénition 1.3 (ROM). Pour certaines applications, il est nécessaire de pouvoir conserver des
informations de façon permanente même lorsque l'alimentation est interrompue. On utilise alors des
mémoires non volatiles appelées mémoires mortes (ROM : Read Only Memory). La seule opération
possible est une opération de lecture. ■
L'opération d'écriture (qui est possible) est appelée programmation. La méthode peut varier
selon le type de ROM :
ROM : elle est programmée par constructeur, son contenu est non modiable. Sa densité d'inté-
gration est élevée et elle est très rapide.
PROM : c'est une ROM programmable une seule fois par l'utilisateur et rapidement dont le coût
est relativement faible.
5
actuellement, on utilise une DDR-SDRAM qui a remplacé la DRAM-EDO. Pour une mémoire DRAM, le temps
d'accès est la somme de délai de cycle et de temps de latence. Sur un ordinateur, le temps de cycle correspond à
l'inverse de la fréquence de l'horloge (3GHz ⇒ 0, 33ns). Les DRAM se connectent par des barrettes DIMM avec un
temps de cycle de 15 ns (EDO), 7 ns (PC133), 5ns (DDR) et 0,66ns (QDR) soit de 2 à 45 cycles microprocesseur !

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

mémoire permanente : disque dur

capacité disque optique bande magnétique

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

1.2.3.1 Disques magnétiques


Un disque magnétique est constitué de plusieurs plateaux circulaires empilés et de plusieurs têtes
de lecture/écriture. On distingue 2 catégories de disques magnétiques :
disque dur : plateau métallique, tête de lecture électromagnétique ottante sur coussin d'air
(disque Winchester),
disque souple, disquette : plateau souple, tête en contact avec la surface.
Il existe deux diérents standards de disque dur : IDE et SCSI qui utilisent les bus et contrô-
leurs d'interface du même nom (voir chapitre 2). On peut aussi rajouter les disques RAID dont la
technologie dière et fait appel au parallélisme.

gure 1.10: Exemple de disque dur

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

ce disque sous forme de plusieurs volumes ou plusieurs lecteurs logiques ;


3. le formatage de haut niveau (fait par l'utilisateur : FAT32, NTFS). Il représente une diérence
de format et de gestion du placement des données donc des chiers.

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). ■

gure 1.11: Notion de cluster

La structure d'un volume est constitué :


 du MBR (Master Boot Record) qui contient la structure de l'unité physique (nombre, taille
et type des partitions) et le nombre d'unités logiques avec leur taille ;
 de la FAT et d'une copie de secours de cette FAT ;
 le répertoire racine avec le nom de volume ;
 la zone de données (chiers et sous répertoires).
Remarque 1.4 (taille maximale et fragmentation). Un disque dur formaté en FAT16 qui pos-
sède des clusters de 32 Ko peut adresser un volume de 2 Go (216 × 32Ko = 2Go) au maximum
tandis qu'un formatage en FAT32 avec des clusters de 4 Ko peut adresser un volume de 17 To.
Un petit chier de 12 Ko occupera la totalité du cluster. Dans ce cas la perte est de 20 Ko qui
deviennent inutilisables. En FAT 32 le cluster ne fait plus que 4 Ko. Ainsi notre chier de 12 Ko
utilise 3 clusters au lieu d'un mais il n'y aura pas de perte de capacité sur le disque dur. Cependant
un chier de plusieurs Mo est inévitablement découpé en petits morceaux. L'ordinateur enregistre
ces segment de données là où il y a de la place libre. Un programme peut ainsi être disséminé
sur tout le disque dur. C'est ce que l'on appelle la fragmentation. Celle-ci entraîne une perte de
vitesse de lecture due aux nombreux mouvements eectués par les têtes. C'est pour cela qu'il faut
régulièrement eectuer une opération de défragmentation qui va recoller côte à côte les diérents
clusters d'un même programme de façon à accélérer sa vitesse d'accès. Il faut noter que la plupart
des disques actuels comporte une mémoire cache pour accélérer les accès. ■
Les disques souples sont tombés en désuétude (même si on utilise encore des disquettes 3 pouces
et demi). A cause du contact entre la tête de lecture et la surface, on doit faire face à une usure
prématurée. Pour limiter cette usure, on rétracte la tête à la n de chaque opération, provoquant
ainsi une lenteur excessive d'accès.

14
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
1.2. Structure : composants principaux

1.2.3.2 Disques optiques


Le disque optique numérique résulte du travail mené par de nombreux constructeurs depuis
1970. La terminologie varie selon la technologie employée (CD, CD-ROM, CDR-CDRW, DVD,
DVD-ROM, DVDRW, etc . . . )Le CD a été inventé en 1981 (Sony, Philips) dans le but de fournir
un support audio et vidéo de haute qualité.
Principe du CD-ROM
Un CR-ROM (Compact Disk ) est disque de 12 cm de diamètre composé de plusieurs couches
superposées (plastique, métallique et vernis). Le principe de lecture / écriture utilise un rayon
infrarouge d'une longueur d'onde de 780 nm qui parcourt la piste organisée en spirale (contrairement
au disque dur qui comporte plusieurs pistes). Lors de la lecture, le faisceau laser traverse la couche de
plastique (polycarbonate) puis rencontre ou non un creux. Lors d'un passage devant un creux (resp.
un plat), la lumière du laser est fortement réfractée (resp. rééchie), de telle sorte que la quantité de
lumière renvoyée est minime, valeur binaire 0 (resp. importante, valeur binaire 1). Pour l'écriture, le
graveur, le laser utilisé est 10 fois plus puissant et brûle localement des plages (creux et bosses sont
remplacées par des plages brûlées et non brûlées). Les caractéristiques principales sont la vitesse
maximale de lecture, de gravage et l'interface associé (IDE, SCSI ou SATA). Il existe dorénavant des
améliorations telles que le Burn Proof ou Just Link (suspension de ravure en l'absence de données
dans le buer) et l'Overburning (dépassement léger de capacité).
Principe du DVD-ROM
Le DVD-ROM (Digital Versatile Disk ) est apparu en 1997 et est principalement dédié à la vidéo.
Il s'agit en fait d'un CD de capacité plus importante. La lecture / écriture est eectuée à partir
d'un laser rouge (650 et 635 nm) qui permet d'obtenir des creux plus petit, donc d'augmenter la
quantité d'information. Les 2 longueurs d'ondes permettent une lecture / écriture double couche.
Un DVD (-RW / +RW) double couche et double face possède une capacité de 17 Go (soit 22 CD !).

1.2.3.3 Conclusion sur les mémoires


On peut s'orienter vers une hiérarchie de l'ensemble des modes de stockage de la manière sui-
vante :

gure 1.12: Hierarchie des mémoires

15
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 1. Architecture - Principes Généraux

1.3 Echanges de données


1.3.1 Généralités sur les communications
1.3.1.1 Aspects physiques : signaux et codages
Dans le cadre d'échange entre plusieurs ordinateurs (réseau) ou bien entre ordinateurs et péri-
phériques externes, il faut tout d'abord choisir le codage de l'information a transmettre. Le type
de données peut être de nature sonore, texte, graphique etc.. La représentation adoptée peut être
analogique (variation d'un grandeur physique) ou numérique (codage binaire, NRZ, etc...).
La transmission est caractérisée par le sens des échanges, le mode et la synchronisation (entre
émetteur et récepteur). Lorsque un composant émetteur désire transférer un bit vers un composant
récepteur, il place celuici sur la ligne de bus, le niveau de tension électrique sur cette ligne traduisant
la valeur du bit véhiculé. Voici quelques exemples de codes NRZ (Non Retour à Zéro & RZ) :

gure 1.13: Exemples de codages

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 :

gure 1.14: Eet capacitif

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

gure 1.15: Qualité de transmission en fonction de la bande passante

1.3.1.2 Rapidité et taux de transfert


Il existe 2 unités pour qualier la rapidité des échanges :
1. Bauds : nombre de bits de données transmis par seconde.
2. Bits/sec : nombres de bits (quelconques) transmis par seconde.
La vitesse de transfert eective (aussi appelé taux d'utilisation eectif) est calculée sur les
données (on ne tient pas compte des bits de start et de stop pour une communication asynchrone,
et des bits de synchronisation pour une communication synchrone).

Exemple : bus PCI


si on utilise 4 niveaux d'amplitude électrique pour un événement (00=-15 V, 01=-5 V, 10=+5
V, 11=+15 V), dans ce cas le transfert en bit/s est double de celui en bauds.

1.3.1.3 Modes de transmission


simplex Les données circulent dans un seul sens : émetteur vers récepteur (ex : ordinateur à
imprimante, souris à ordinateur, radio, télévision).
half-duplex Les données circulent dans les 2 sens mais pas simultanément : la bande passante est
utilisée en intégralité (aussi appelé alternat ou semi-duplex). Exemples : talkie/walkies, êtres
humains (on ne coupe pas la parole).

17
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 1. Architecture - Principes Généraux

full-duplex Les données circulent de manière bidirectionnelle et simultanément : la bande passante


est divisée par 2 pour chaque sens (duplex intégral) sauf en cas de multiplexage fréquentiel
(technique avec 2 bandes passantes de fréquences).

gure 1.16: Modes de transmission : simplex et duplex

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.

gure 1.17: Liaisons série et 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).

gure 1.18: Transmission synchrone

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.

gure 1.19: Transmission asynchrone

1.3.1.4 Erreurs de communication


Il est essentiel de pouvoir détecter et (éventuellement) corriger les erreurs de transmission. Plu-
sieurs techniques existent. Parmi celles-ci, on peut citer :
parité : il s'agit de bit(s) ajouté(s) à l'information pour en vérier l'intégrité. Lorsque l'on parle
de caractères, la parité (horizontale : LRC) peut être paire (le nombre total de bits à 1, bit
de parité inclus, doit être pair) ou impaire (nombre total de bit impair), ou forcée à un,
ou nulle. La vérication de la parité peut être utile lorsque l'on transmet de l'information à
haute vitesse ou sur des lignes de qualité médiocre. Cette méthode simpliste ne permet pas de
détecter la totalité des erreurs (notamment si on a un nombre pair d'erreur avec une parité
paire ou un nombre impair d'erreurs avec une parité impaire). Pour améliorer cette détection
on peut combiner les parités horizontales et verticales (Checksum).
CRC : Code (polynômial) de Redondance Cyclique (Cyclic Redundancy Check ). Il est utilisé pour
se prémunir contre les pertes d'informations ou leur altération en créant une redondance
limitée permettant de garantir la non-altération du message. On vérie la concordance avec
un polynôme générateur de degré 5 ou 16, voire 24 (5, 16 ou 24 bits).

19
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 1. Architecture - Principes Généraux

1.3.1.5 Notion de protocole


Il s'agit de la même notion que la langue dans le language humain. Ce sont des règles strictes,
dénissant les questions et les réponses devant avoir lieu lorsque deux équipements sont en commu-
nication. Ces règles prévoient des procédures de récupération en cas d'erreur de transmission ou de
timeout (réponse non parvenue dans les délais). Le protocole doit être connu tant de l'émetteur
que du récepteur pour permettre une bonne communication.

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.

gure 1.20: Schéma simplié d'un micro-ordinateur

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.

1.3.3 Techniques d'échange de données


1.3.3.1 Echanges programmés
En mode programmé, l'intégralité du protocole de transfert côté processeur est mis en oeuvre par
l'exécution d'un programme dont la structure est la suivante (pour une entrée de donnée provoquée
par l'unité périphérique et utilisant un protocole de poignée de main (handshaking)) :
 attendre (donnée disponible),

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, . . . ).

1.3.3.2 Echange direct avec la mémoire : DMA

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

gure 1.21: Principe du DMA

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

1.4 Système d'exploitation


1.4.1 Généralités
Un système d'exploitation correspond à la première couche logicielle d'un ordinateur (voir gure
1.1.
Il s'agit du programme qui permet d'accéder aux ressources matérielles d'un ordinateur. Le
système d'exploitation doit s'occuper de :
 l 'exécution des commandes d'entrée/ sortie,
 la gestion de la mémoire,
 la gestion des chiers,
 la multi- programmation (multi- tâche) :
 exécuter plusieurs programmes à la fois,
 accès simultanés (exemple : imprimante),
 échanges d'informations,
 exécution d'un seul programme avec plusieurs processeurs.
 la sécurité (gestion des accès, . . . )

gure 1.22: Quelques rôles d'un système d'exploitation

Le SE doit aussi fournir :


 un langage de commande,
 divers utilitaires (compilateurs, éditeurs, outils, . . . ),
 une interface graphique pour l'utilisateur.
Il existe de nombreux systèmes d'exploitation :
 MSDOS (Microsoft Disk Operating System) : ce n'est pas un SE au sens strict. Il s'agit plutôt
d'une interface de gestion de disques et disquettes très sommaire. Il n'est plus présent dans
Windows XP ;
 Windows : Il s'agi d'une interface à base de multifenêtrage bâtie (initialement) sur MSDOS.
Monoutilisateur, monotâche et sans gestion correcte de la mémoire, il est (relativement) peu
performant (architecture monolithique, écrits en assembleur, et étroitement liés au matériel
donc peu ou pas du tout portable). Son succès est surtout dû à sa capacité de lier (vérouiller) le

23
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 1. Architecture - Principes Généraux

fonctionnement des applications Microsoft, de Windows, et l'architecture matérielle (stratégie


du marché captif, marketing) ;
 MacOS : c'est un SE monoutilisateur, multitâche, intégrant une interface à base de multi-
fenêtrage, mais avec une gestion de la mémoire qui commence à être acceptable (presque
natif) ;
 VM, MVS, VMS, Unix, OS/2 : ce sont des SE, multiutilisateurs et multitâches. Unix (donc
Solaris ou Linux) est une grande famille de SE actuellement en pleine évolution (à temps
partagé, multiutilisateur, à architecture modulaire, majoritairement écrit en langage évolué
(langage C) et indépendant de l'architecture matérielle de l'ordinateur donc portable). Les
autres sont des branches mortes.

1.4.2 Les critères de choix


Les critères qui permettent de caractériser l'adéquation du système au mode de fonctionnement
désiré, et donc d'induire les choix lors de la conception du système peuvent s'énoncer de la façon
suivante :
 Le temps de traitement d'une commande ;
 Le temps de réponse (délai qui sépare l'envoi de la commande par le demandeur, de la n
d'exécution de la commande) ;
 Le débit (throughput) est le nombre de commandes qui sont exécutées par unité de temps
(mesure de l'ecacité de l'ensemble du système, matériel et logiciel, qui permet notamment
de calculer la rentabilité du système, tous utilisateurs confondus) ;
 Les moments d'arrivée des commandes déterminent la façon dont les commandes sont deman-
dées au système (caractéristique utilisateur) ;
 Le mode de communication entre le demandeur et l'ordinateur impose des contraintes supplé-
mentaires sur le système, dès que l'on désire introduire une distance entre les deux (protocole) ;
 La nature du partage des ressources entre les demandeurs.
Concernant les PC et Windows, il existe de multiples congurations matérielles. Les instructions
à eectuer par le SE sont donc de natures diérentes. Ainsi, le SE est divisé en plusieurs couches
comme on l'a vu précédemment (voir gure 1.22) :
 la couche basse est responsable du matériel : BIOS ;
 les couches plus hautes sont chargées des fonctions plus évoluées : DOS par exemple.

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

1.4.3.2 Fonctions du BIOS

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.

Exemple : fonction du BIOS


soit la fonction du BIOS achant un caractère (donné par son code ASCII) sur l'écran. Suppo-
sons que sur un PC, la première instruction de cette fonction soit à l'adresse F123 4560 H. Sur
le modèle d'une autre marque, cette même fonction pourrait être implantée à l'adresse F123
4550 H. Comment la fonction d'achage est-elle gérée ?

1.4.3.3 Vecteurs d'interruptions du BIOS

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

tableau 1.1: Exemple : 33ème vecteur d'interruption

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.

1.4.3.4 Appel système : instruction INT n

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.

Le déroulement de INT n se passe comme suit :


 Sauvegarde des indicateurs du registre d'état sur la pile (les indicateurs sont regroupés dans
un mot de 16 bits),
 Sauvegarde des variables,
 Sauvegarde de l'adresse de retour au programme principal.
L'exécution continue donc au début du programme interruption.

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.3.5 Quelques fonction du BIOS

INT Fonction Caractéristiques


0x00 division par 0 appelée automatiquement lors d'une division par 0
0x05 copie d'écran
0x10 écran Gestion des modes vidéo
fonction 0x00 : initialisation mode graphique
fonction 0x01 : eacement curseur texte
fonction 0x02 : positionnement du curseur
0x12 taille mémoire
0x13 gestion disque dur Initialiser, lire et écrire secteurs
fonction 0x02 : lecture de données sur un disque
fonction 0x05 : formatage piste
0x14 interface série
0x16 clavier Lire caractère, état du clavier
fonction 0x00 : lecture carcatère au clavier
0x19 reboot Lancement du système
0x21 gestion DOS fonction 0x05 : imprimer caractère
fonction 0x2A : lire date système
fonction 0x2C : lire heure système
fonction 0x31 : laisser programme en résident
fonction 0x36 : déterminer capacité résiduelle disque
fonction 0x39 : créer sous-répertoire
fonction 0x3D : ouvrir un chier
fonction 0x3F : lire un chier
fonction 0x4C : terminer un programme

tableau 1.2: Quelques fonctions du BIOS

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 :

numéro Fonction Caractéristiques


0x01 lecture caractère met le code ASCII lu dans AL
0x02 ache caractère code ASCII dans registre DL
0x19 ache string DX = adresse début string (pointeur)
0x0A saisie string
0x0B lecture état clavier AL=1 si caractère (0 sinon)
0x25 remplissage vecteur interruption
0x31 fermeture programme résident
0x35 lecture vecteur interruption
0x3C création chier

tableau 1.3: Quelques fonctions du DOS

28
Chapitre 2

Les Bus

Sommaire

2.1 Caractéristiques générales . . . . . . . . . . . . . . . . . . . . . . . . . . . 29


2.2 Bus processeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.3 Bus d'extension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.4 Bus de périphériques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.5 Bus embarqués . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.6 Récapitulatif des principales caractéristiques des divers Bus . . . . . . 42

2.1 Caractéristiques générales

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

South Bridge LAN SCSI

ISA USB IDE

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

Dénition 2.1 (Contrôleur depaire).


largeur de 32 bits par Bus). Il est aussi nommé Interface d'entrée/sortie. Son rôle
est de :
 connecter le périphérique au bus de données,
 gérer les échanges entre le microprocesseur et le(s) périphérique(s) (mise en mémoire tampon
des données, détection d'erreurs, gérer la prise de contrôle et le séquencement du bus, . . . ).
Il assure donc une bonne communication entre le(s) périphérique(s) et le système. ■
Lorsqu'un périphérique (ou un programme) sollicite des données, il transmet sa demande au
contrôleur. Celui-ci reconstruit les données à partir de la trame (ot de bits en série) et du protocole
adopté puis les transmet à la mémoire et au processeur (facultatif dans le cas de DMA).
Le bus sert aussi bien au processeur qu'au contrôleur lorsqu'ils dialoguent avec la mémoire. Si le
processeur et le contrôleur souhaitent utiliser simultanément le bus, il est nécessaire de procéder à
un arbitrage pour décider qui va en prendre le contrôle et devenir ainsi le maître du bus. Chaque
protocole possède une (ou plusieurs) méthode(s) d'arbitrage particulière qui seront vues plus en
détail ultérieurement.
Les contrôleurs possèdent tous une architecture qui se décompose de la manière suivante :
 un registre de commande : le processeur y décrit le travail à eectuer (sens du transfert, mode
du transfert),
 un (ou plusieurs) registre(s) de données : il(s) contien(nen)t les mots à échanger entre le
processeur et la mémoire,
 un registre d'état : il indique si l'unité d'échange est prête, si l'échange s'est bien déroulé.
Les bus possèdent aussi une architecture interne du type :
 bus (lignes) d'adresses : liaison bidirectionnelle qui permet la sélection (adressage) des infor-
mations à traiter dans un emplacement mémoire,

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.

2.2 Bus processeur


Il est aussi appelé bus système. C'est le type de bus le plus rapides. En eet, c'est celui sur
lequel sont directement connectés le processeur et la mémoire.
Ce bus permet au processeur de communiquer avec la mémoire centrale du système (mémoire
vive ou RAM). Il est luimême subdivisé en deux bus :
 le bus d'adresse (ou bus mémoire) : il transporte les adresses mémoire auxquelles le processeur
souhaite accéder pour lire ou écrire une donnée.
 le bus de données (ou bus frontal, FSB pour Front Side Bus) : il véhicule les informations en
provenance ou à destination du processeur.

2.2.1 Bus de données interne


Par bus de données interne, il faut comprendre interne au processeur. Il est vrai que ce bus de
données interne n'en est pas vraiment un puisqu'il ne relie pas le processeur à un autre composant,
mais interconnecte entre elles les diérentes zones actives à l'intérieur même du processeur . En
dépit des apparences, le processeur n'est pas un bloc monolithique de silicium brut. Il se compose
en fait de nombreuses zones fonctionnelles appelées registres, décodeurséquenceur, UAL ou autre

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.

2.2.2 Bus frontal, de données externes

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.

2.2.2.1 Caractéristiques du bus frontal

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

Processeur (Année) Largeur FSB Fréquence (MHz)


Intel 8088 (1979) 8 bits 4,77 puis 8
Intel 8088 (1979) 8 bits 4,77 puis 8
Intel 8086 (1978) 16 bits 4,77 puis 10
Intel 286 (1981) " 6, 12 puis 20
Intel 386SX (1988) " 16 à 33
Intel 386DX (1985) 32 bits 16, 33 puis 40
Intel 486 (1989) " 16 à 50
Intel Pentium (1992) 64 bits 5060 puis 66
AMD K5 (1996) " 5060 puis 66
Cyrix 6x86 (1996) " 40 à 66 puis 75
Intel Pentium II (1997) " 66 puis 100
AMD K6 (1997) " 6695 puis 100
Intel Celeron (1999) " 66 puis 100
Intel Pentium III (1999) " 100 puis 133
AMD Athlon (1999) " 2x100 puis 2x133
AMD Duron (2000) " 2x100
Intel Pentium 4 (2000) " 4x100-4x133 puis 4x200
AMD Athlon XP (2001) " 2x133 puis 2x166
Intel Itanium (2001) " 2x133
AMD Athlon 64 (2003) " Hypertransport

tableau 2.1: Caractéristiques FSB

2.2.3 Bus d'adresses


Dans le cas d'un échange entre le processeur et la mémoire, deux cas de gure peuvent se
présenter :
1. Soit le processeur réclame une valeur en mémoire : il place alors l'adresse de l'emplacement
mémoire demandé sur le bus d'adresses et envoie sa requête à la mémoire. Celleci y répond
en recherchant la donnée à l'adresse demandée puis place celleci sur le bus de données à
destination de la puce 2.
2. Soit le processeur désire sauvegarder une donnée en mémoire. Il place alors la valeur sur le
bus de données et l'adresse où il désire l'écrire en mémoire sur le bus d'adresses. La mémoire
reçoit la requête et copie la donnée.
La fréquence de fonctionnement du bus d'adresse est la même que la cadence de travail du bus de
données, mais sa largeur, elle, dière totalement. Bien évidemment, la tendance des processeurs est
de toujours augmenter la taille de ce bus d'adresses ce qui donne lieu à une mémoire adressable
permise par les derniers modèles de puces très importante comme l'indique le tableau suivant :

34
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
2.2. Bus processeur

Processeur Largeur Bus adresses Mémoire adressable


Intel 8088 20 bits 1 Mo
Intel 8086 " "
Intel 286 24 bits 16 Mo
Intel 386SX " "
Intel 386DX 32 bits 4 Go
Intel 486 " "
Intel Pentium " "
AMD K5 " "
Cyrix 6x86 " "
AMD K6 " "
AMD Athlon " "
AMD Duron " "
AMD Athlon XP " "
Intel Pentium II 36 bits 64 Go
Intel Celeron " "
Intel Pentium III " "
Intel Pentium 4 " "
Intel Itanium 44 bits 16 To
AMD Athlon 64 64 bits 256 To

tableau 2.2: Caractéristiques bus d'adresses

2.2.4 Bus de mémoire cache

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

2.3 Bus d'extension


Il s'agit des bus chargés de relier les périphériques internes.

2.3.1 Bus parallèles : ISA-EISA, MCA-VLB, PCI, IDE-EIDE, AGP, SCSI


2.3.1.1 ISA/EISA ((Extended) Industry Standard Architecture )
Le bus ISA est tombé en désuétude (présent jusqu'au P3). De fréquence relativement basse (8,33
MHz) et de caractéristiques peu puissantes (80286 : 16 bits, 16 Mo de mémoire adressable, fréquence
8 MHz, taux de transfert à 8 Mo/s, 15 IRQ sans partage, mono-maître, bus-mastering : DMA), il
était utilisé pour connecter des cartes  lentes  (modems, carte sons).
Le bus EISA date de 1988 et représente une amélioration du bus ISA (80486 : 32 bits, 4 Go
adressable, fréquence 8 MHz, taux de transfert à 33Mo/s, partage des IRQ, multi-maîtres).

2.3.1.2 MCA, VLB


Les bus MCA et VLB était sensé pallier certains défauts des bus ISA. Ils sont toutefois vite
tombés en désuétude et remplacés par le bus PCI.

2.3.1.3 PCI (Peripheral Component Interconnect )


Il a été mis au point 1992. Il est généralement situé entre le bus processeur (NorthBridge) et
le bus d'entréessorties (SouthBridge). Il possède une largeur de 32 bits (nouvelle version à 64 bits)
et est cadencé à 33 MHz (nouvelle version à 66 MHz), ce qui lui permet d'orir un débit de 132
Mo/s (nouvelle version 264 Mo/s). C'est un bus synchrone supportant un multiplexage des signaux
d'adressages et de données. Les connecteurs PCI sont souvent présents sur les cartesmères au nombre
de 3 ou 4 au minimum et sont en général reconnaissables par leur couleur blanche (normalisée).

2.3.1.4 ATA ou IDE/EIDE


Le standard ATA (Advanced Technology Attachment ) est une interface standard permettant la
connexion de périphériques de stockage sur les ordinateurs de type PC. Le standard ATA a été mis
au point en 1994. Malgré l'appellation ocielle ATA, ce standard est plus connue sous le terme
commercial IDE (Interface Drive Electronics ) ou EIDE (Enhanced IDE ). Il est originalement prévu
pour connecter des disques durs, toutefois une extension nommée ATAPI (ATA Packet Interface ) a
été développée an de pouvoir interfacer d'autres périphériques de stockage (lecteurs de CDROM,
DVDROM, etc) sur une interface ATA.
La norme ATA permet de relier des périphériques de stockage directement à la cartemère grâce
à une nappe IDE (ribbon cable ) généralement composée de 40 ls parallèles et de trois connecteurs
(un connecteur pour la carte mère, généralement bleu, et les connecteurs restants pour deux pé-
riphériques de stockage, respectivement noir et gris). Sur la nappe un des périphériques doit être
déclaré comme maître (master ), l'autre en esclave (slave ). Par convention le connecteur à l'extré-
mité (noir) est réservé maître et le connecteur du milieu (gris) à l'esclave. Un mode appelé cable
select (CS) permet de dénir automatiquement le périphérique maître et l'esclave pour peu que le
BIOS de l'ordinateur supporte cette fonctionnalité.
Le protocole PIO (Programmed Input/Output ) permet aux périphériques d'échanger des données
avec la mémoire vive à l'aide de commandes gérées directement par le processeur. Toutefois, de gros
transferts de données peuvent rapidement imposer une grosse charge de travail au processeur et
ralentir l'ensemble du système. Il existe 5 modes PIO (Mode 0 : 3.3 Mo/s à Mode 4 : 16.7 Mo/s).

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 Bus séries : XPCI, SSA-FC-IEEE1394, SATA, SPI-Microwire, I2C


2.3.2.1 XPCI
Le bus (PCI eXpress ou 3GIO (Third Generation I/O ) a été mis au point en 2002. Contrairement
au bus PCI, il fonctionne en interface série, ce qui lui permet d'obtenir une bande passante beaucoup
plus élevée que ce dernier. Le bus PCI Express se décline en plusieurs versions (1X : usage d'entrées-
sorties à haut débit, 4X-8X : usage sur serveurs, 16X-32X : usage port graphique), permettant
d'obtenir des débits compris entre 250 Mo/s et 8 Go/s !
Ainsi, avec un coût de fabrication similaire à celui du port AGP, le bus PCI Express est amené
à le remplacer progressivement. Les connecteurs PCI Express sont incompatibles avec les anciens
connecteurs PCI et possèdent des tailles variables et une plus faible consommation électrique. Il
possède le Hot Plug and Play. Les connecteurs sont reconnaissables grâce à leur petite taille et leur
couleur anthracite. Le standard PCI Express a également vocation à supplanter la technologie PC
Card sous la forme de connecteurs PCI Express Mini Card. De plus, contrairement au PCI à usage
interne, le PCI Express permet la connection des périphériques externes à l'aide de câbles. Pour
autant, il ne se positionne pas en concurrence des ports USB ou FireWire.

2.3.2.2 SCSI série : SSA, FC et IEEE1394


Il existe aussi des interfaces SCSI séries SSA (Serial Storage Architecture ), FC (Fiber Chan-
nel ) et IEEE1394 qui font aussi oce de bus de périphériques externes. En eet, la transmission
parallèle entraîne des restrictions en termes de longueur de câble. Les signaux de commandes, d'états
et de données sont encapsulés en paquets pour la transmission. Elles possèdent plusieurs avantages
(interconnexions peer-to-peer, augmentation de la abilité et réduction de la complexité du câblage,
double accès, connectivité accrue et terminaisons simpliées, possibilités de topologies en Bus, An-
neaux et Arbres, connexions réseau et liaisons WAN). Le bus IEEE1394 (aussi Firewire et I-Link)
sera étudié en détail dans un chapitre ultérieur.

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.3.2.4 SPI, I2C


Les bus séries sont plus utilisés dans les systèmes industriels pour lesquels le temps de traitement
n'est pas critique et pour leur protocole simplié. Le bus SPI (comme le bus microwire ) est un bus
série synchrone qui permet la connection de 8 périphériques au maximum en tolérant un débit
maximum de 2 Mbits/s. Le bus I2C est aussi un bus série synchrone qui permet la connection de
40 périphériques (selon leur charge capacitive) avec un débit de 400 kBits/s. Il sera détaillé dans un
chapitre ultérieur.

2.4 Bus de périphériques


Les bus de périphériques (externes) conversent habituellement à des vitesses plus lentes (compa-
rativement aux autres bus), parce qu'ils doivent communiquer avec l'extérieur sur de plus grandes
distances. Ils sont aussi appelés ports.

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

2.4.3 IEEE488 (GPIB et HPIB)


Ces bus sont aussi nommés bus d'instrumentation car ils ont été développés principalement pour
assurer une communication entre un instrument (de mesure) avec plusieurs procédés. Ce bus permet
la liaison d'équipements de mesure.
Le GPIB (General Purpose Interface Bus ) ou HPIB (Hewlet Packard Interface Bus ) est formé
de lignes de transmission de données en parallèle et de lignes de contrôle des échanges (transmissions
sur des distances réduites : une pièce). En utilisant le protocole de norme IEEE488, ces bus devait
équiper tous les appareils connectable sur réseau d'instrumentation. Aujourd'hui, on leur préférera
une interface standard série, voire une carte réseau.

40
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
2.5. Bus embarqués

2.5 Bus embarqués

2.5.1 PCCard (ancien PCMCIA)

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).

2.5.2 Bus CAN

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

2.6 Récapitulatif des principales caractéristiques des divers Bus

type débit (Mo/s)


Port série RS232 0.015
Port Parallèle Standard (SPP) 0.115
Bus CAN 0.125
I2C 0.425
IEEE488 (selon distance) <1
USB 1 1.5
Port Parallèle ECP/EPP 3
SCSI 1 5
IDE 8.3
SCSI 2 (Wide) 10
EIDE 16.6
SCSI 2 (Fast Wide 40) 40
IEEE-1394a 50
USB 2 60
CardBus 127
Ultra DMA 6 133
SATA 150
PCI 264
IEEE 1394b (bre optique) 100 (400)
SATA II 600
SCSI 3 (Ultra 640 QDR) 640
AGP Pro 8x 2110
XPCI 8000

tableau 2.3: Récapitulatif des performances des principaux Bus

42
Chapitre 3

Interruptions

Sommaire

3.1 Notion d'interruption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43


3.2 Système d'interruptions hiérarchisées . . . . . . . . . . . . . . . . . . . . 45
3.3 Causes d'interruption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.4 Mécanisme d'interruption . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.5 Le PIC 8259 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.6 Gestion des Entrées-Sorties par interruption . . . . . . . . . . . . . . . . 54
3.7 Interruptions Logicielles . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.8 La programmation des interruptions . . . . . . . . . . . . . . . . . . . . . 56

3.1 Notion d'interruption

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

gure 3.1: Scrutation

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.

3.1.1 Interruption matérielle et logicielle


L'attitude préférable consiste à donner la responsabilité à chaque composant d'avertir (on dit
notier ) le microprocesseur en attirant son attention sur la tâche à eectuer en priorité. Il s'agit du
mécanisme (asynchrone) d'interruption. Le périphérique envoie un signal électrique via une patte
spécique du PIC (Program Interrupt Controller : 8259) qui agit ici comme un intermédiaire entre
le périphérique et le microprocesseur. Dans le cas où le PIC alerte le microprocesseur, ce dernier
stoppe son activité courante et saute (on dit qu'il se déroute ) vers une fonction spécique à executer
(Interrupt Handler : traitant d'interruption) qui a été associée au préalable au périphérique (plus
précisément, associée au vecteur d'interruption du périphérique). Ce type d'interruption est appelée
Interruption Matérielle.

gure 3.2: Interruption

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

3.2 Système d'interruptions hiérarchisées


A chaque interruption, est associée une priorité (système d'interruptions hiérarchisées) qui per-
met de regrouper les interruptions en classes. Chaque classe est caractérisée par un degré d'urgence
d'exécution de son programme d'interruption.
Règle : Une interruption de priorité j est plus prioritaire qu'une interruption de niveau i si j >
i. L'intérêt de ce système est la solution de problèmes tels que :
 arrivée de plusieurs signaux d'interruption pendant l'exécution d'une instruction,
 arrivée d'un signal d'interruption pendant l'exécution du signal de traitement d'une interrup-
tion précédente. On peut utiliser un contrôleur d'interruptions pour regrouper les ls d'inter-
ruptions, gérer les priorités entre les interruptions et donner les éléments de calcul d'adresse
au processeur.
Remarque 3.1 (NMI). Certaines interruptions présentent tellement d'importance qu'il ne doit
pas être possible d'interrompre leur traitement. On masquera alors les autres interruptions pour
empêcher leur prise en compte. Certaines interruptions sont nonmasquables (Non Maskable IRQ) :
on les prend obligatoirement en compte. Une interruption masquée n'est pas ignorée : elle est prise
en compte dès qu'elle est démasquée. Au contraire, une interruption peutêtre désarmée : elle sera
ignorée. Par défaut, les interruptions sont évidemment armées. ■
c'est dans les applications temps réel (conduite de processus industriels ou d'acquisition de
données) que l'on trouve les systèmes d'interruptions les plus élaborés. Dans certains cas chaque
niveau est découpé en sous-niveaux de priorités diérentes. Un bon système doit permettre au
programmeur de pouvoir :
 activer/invalider le système d'interruption dans son ensemble ;
 armer/désarmer chacune des interruptions individuellement : une interruption désarmée est
ignorée ;
 masquer/démasquer individuellement chaque interruption : une interruption masquée n'est
pas ignorée, elle est mémorisée, mais elle n'est prise en compte que lorsqu'elle est démasquée ;
 établir une hiérarchie entre les sources d'interruption avec plusieurs niveaux de priorité, si
possible de façon dynamique ;
 associer un programme spécique à chaque interruption.

Exemple : Priorités et NMI


Imaginons que vous soyez en train d'étudier votre cours. Un camarade arrive pour vous de-
mander un renseignement. Vous terminez la lecture de la phrase en cours, vous mémorisez
mentalement où reprendre votre lecture, puis vous vous interrompez pour lui répondre. Vous
auriez pu continuer en faisant semblant de n'avoir rien entendu : vous auriez masqué l'interrup-
tion. Pendant votre discussion avec votre camarade, un troisième personnage vient vous poser
une autre question. S'il s'agit d'un autre camarade vous le laisserez patienter quelques minutes
le temps de terminer avec la première demande de renseignement. S'il s'agit de votre professeur
vous allez vous interrompre immédiatement pour pouvoir lui répondre. La demande d'inter-
ruption du professeur a un niveau de priorité supérieur, elle peut interrompre l'interruption
précédente.

3.3 Causes d'interruption


Il y a deux grandes catégories d'interruptions : les interruptions externes et les interruptions
internes.

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é.

3.4 Mécanisme d'interruption


3.4.1 Identication de la source
L'unité centrale dispose d'une entrée spéciale, généralement appelée IRQ (Interrupt ReQuest),
associée à un bit dit bit d'interruption. Avant de passer à l'instruction suivante, le CPU teste l'état
de ce bit. S'il est à 1 le CPU est informé d'une demande d'interruption. Pour pouvoir la traiter il
doit en déterminer l'origine.
Il existe deux méthodes principales pour identier la source d'une interruption : la scrutation
(polling) et l'identication directe. Le choix entre ces deux méthodes est généralement le résultat
d'un compromis coût/performance selon en particulier le nombre potentiel de périphériques qui
peuvent être connectés.
Etudions quelques mécanismes d'identication de la source d'une interruption. De très nom-
breuses architectures sont possibles :
 Un exemple, basé sur le principe de la scrutation, montre que toutes les lignes d'interruption
sont réunies par une porte OU et chacune des lignes correspond à un périphérique. Lorsque
le bit d'interruption est trouvé à 1 par le CPU, une routine de service est activée. Celle-ci
va tester l'état de la ligne de chacun des périphériques pour identier le demandeur, puis
exécuter la tâche correspondante. A la réception d'un signal sur l'entrée IRQ le processeur
émet un signal d'acquittement IACK qui charge l'état des lignes de demande dans un registre.
Le processeur lit ensuite ce registre pour identier l'origine de la demande.
 Il peut aussi n'exister qu'une seule ligne d'interruption que chaque périphérique demandeur
maintient dans un état haut. L'unité centrale (le microprocesseur) est alors obligée d'interroger
chacun des périphériques présents sur le bus pour lui demander s'il requiert un service. La
priorité est ici dénie par l'ordre dans lequel les lignes sont testées. En général dans ce mode
de fonctionnement une interruption n'est elle-même pas interruptible car le mécanisme de
scrutation est assez long.
 Une autre méthode (IRQ : Interrupt ReQuest) consiste en un code envoyé par le périphérique.
Ce code est utilisé pour exécuter une routine de service spécique au périphérique. Ce code

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.

3.4.2 Vecteur d'interruption


Lorsqu'une interruption survient,le microprocesseur a besoin de connaître l'adresse du sous-
programme de service de cette interruption. Pour cela, la source d'interruption place sur le bus de
données un code numérique indiquant la nature de l'interruption. Le microprocesseur utilise ce code
pour rechercher dans une table en mémoire centrale l'adresse du sous-programme d'interruption à
exécuter. Chaque élément de cette table s'appelle un vecteur d'interruption. Lorsque les adresses
des sous-programmes d'interruptions sont gérés de cette manière, on dit que les interruptions sont
vectorisées. Avantage de la vectorisation des interruptions : l'emplacement d'une routine (ISR) peut
être n'importe où dans la mémoire, il sut de spécier le vecteur d'interruption correspondant.
Les interruptions de la famille X86 sont vectorisées. La table des vecteurs d'interruptions (IVT :
Interrupt Vector Table) doit obligatoirement commencer à l'adresse physique 0x00000 dans la
mémoire centrale. Chaque vecteur d'interruption est constitué de 4 octets représentant une adresse
logique du type CS : IP :

gure 3.3: Table des vecteurs d'interruptions

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.

INT (numéro) Nature de l'IT Utilisation usuelle


00 - 01 Exception
02 NMI Erreur de parité en mémoire
03 - 07 Exception
08 IRQ 0 Horloge interne (System Timer)
09 IRQ 1 Gestion Clavier
0A IRQ 2 Redirection PIC 2
0B IRQ 3 Port série COM2 / COM4
0C IRQ 4 Port série COM1 / COM3
0D IRQ 5 Carte Son
0E IRQ 6 Lecteur Disquettes
0F IRQ 7 Port Parallèle
10 - 6F IT Logicielles
70 IRQ 8 Horloge Temps Réel (CMOS)
71 IRQ 9 Redirection IRQ2
72 IRQ 10 Disponible
73 IRQ 11 Disponible
74 IRQ 12 Souris PS/2
75 IRQ 13 Co-processeur Arithmétique
76 IRQ 14 IDE 1
77 IRQ 15 IDE 2
78 - FF IT Logicielles

tableau 3.1: Table des Vecteurs d'Interruptions de la famille Intel X86

3.4.3 Actions à entreprendre


Lorsqu'une interruption est détectée il faut que le système réagisse le plus rapidement possible.
Pour cela le matériel déclenche un branchement automatique vers une routine système préparée
à l'avance (Interrupt Service Routine). Cette routine se trouve à une adresse xe qui peut être
câblée. L'état de la machine doit être sauvegardé. Le contexte (en particulier, la table des pages,
horloge, etc.) du programme interrompu est sauvé, en général dans une pile. Cette sauvegarde du
contexte peut être réalisée par la routine de service elle-même ou prise en charge automatiquement
par l'unité centrale de traitement. En fonction du code identiant le périphérique responsable de
l'interruption, l'adresse de la routine de service associée est chargée dans le compteur ordinal, ce
qui provoque un branchement automatique. Le registre d'état peut également être modié pour
éventuellement bénécier de certains privilèges particuliers. Les interruptions de niveau inférieur ou
égal doivent être masquées. Ce mécanisme est rapide car c'est le matériel (hardware) qui se charge
du branchement vers la routine d'interruption, de la sauvegarde du contexte et la modication du
compteur ordinal. Il ore une grande souplesse car il est possible d'écrire une grande variété de
routines de service. Il peut cependant être pénalisant pour un processeur avec pipe-line et un grand

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.

3.4.4 Reprise du programme interrompu


Le programme en cours est suspendu pendant le temps de traitement de l'interruption. Le
contexte doit ensuite être restauré avant la reprise de son exécution. Au retour de la routine de service
il faut également démasquer les niveaux masqués à son appel. L'interruption est ainsi totalement
transparente. La remise à jour du compteur ordinal provoque le retour au programme à l'instruction
suspendue.

3.4.5 Le partage des interruptions


Comme le montre l'IVT, les IRQ sont en nombre limitées. Ceci a longtemps été la cause de
conits matériels. Ce problème est désormais résolu par le partage des interruptions.
Tout composant dit  legacy  ne peut en aucun cas accepter le partage des interruptions. La raison
est très simple. Ces composants sont physiquement connectés aux entrées du contrôleur, alors que
pour pouvoir partager une interruption, il faut bien sûr pouvoir gérer une connexion de plusieurs
lignes d'interruption intermédiaires avant d'en brancher physiquement une sur le contrôleur.
Avec l'avènement du bus PCI, il est possible pour deux cartes d'extension PCI d'utiliser la même
interruption si elles acceptent le partage d'IRQ. Seule la exibilité qu'ore le bus PCI le permet.
De fait, dans le tableau des IRQ, seules les IRQ 9, 10 et 11 peuvent encore être considérées comme
partageables.
En eet, toutes les autres IRQ sont utilisées par des composants legacy, et ce en considérant
que le PC est équipé d'une carte son connectée sur le bus ISA du PC.
Les BIOS des PCs modernes autorisent maintenant aussi le partage d'interruption sur les IRQs
de 3 à 7, à partir du moment où aucun composant legacy n'est connecté dessus. Par exemple, si
vous n'utilisez aucun de vos ports série, vous pouvez alors, depuis le SETUP de certains BIOS, les
déclarer comme inactifs. Ceci correspondra à une réelle déconnexion physique des ports qui seront
alors rendus invisibles et le bénéce direct sera la libération des IRQ 3 et 4 dans cet exemple précis.

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 !

3.5 Le PIC 8259


Le circuit 8259 est un circuit programmable. Il dispose de plusieurs registres d'E/S. Ce composant
intercepte toutes les demandes d'interruption des périphériques et les communique au microproces-
seur selon leurs priorités.

49
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 3. Interruptions

gure 3.4: Exemple de partage d'IRQ

3.5.1 Architecture du PIC 8259

gure 3.5: Architecture d'un PIC

A partir de PC avec un 80286, la machine dispose de deux 8259 mis en cascade :

50
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
3.5. Le PIC 8259

gure 3.6: Liaison entre les 2 PIC et le microprocesseur

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).

gure 3.7: Liaisons matérielles d'un PIC

Lors d'une interruption :


 S'il s'agit d'une interruption matérielle, le processeur nit le traitement de l'instruction en

51
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 3. Interruptions

cours et passe en mode non interruptible (Flag I) ;


 Le processeur empile le contenu des registres CS et IP (adresse de la prochaine instruction a
exécuter) ;
 Le processeur lit le numéro d'interruption sur le bus de données envoyée par le 8259 si l'inter-
ruption est matérielle ;
 Il le multiplie par 4 pour obtenir l'adresse du vecteur d'interruption ;
 Il charge CS et IP avec les contenus de cette adresse ;
 Il exécute la routine d'interruption jusqu'à l'instruction IRET ;
 Il dépile alors CS et IP ;
 Il reprend le programme en cours d'exécution.
Donc, la routine d'interruption doit acquitter l'interruption pour le 8259 et ré-autoriser le cas
échéant les interruptions (Flag I).
Pour programmer un traitement d'interruption matériel, il faut :
 Autoriser l'interruption par son démasquage (8259) ;
 Ecrire la routine de traitement d'interruptions ;
 Ecrire l'adresse de cette routine dans la table des vecteurs au bon emplacement.
La routine doit contenir les éléments suivants :
 Lecture des E/S liés au périphérique ayant généré l'interruption ;
 Traitement a eectuer ;
 Acquitter l'interruption pour le 8259 (outp 0x20, 0x20) ;
Pour l'installation du traitement d'interruption, il faut masquer toutes les interruptions au niveau
du processeur.

3.5.2 Programmer le PIC 8259

Chaque circuit 8259 dispose :


 d'1 registre de masquage des IT (IMR : Interrupt Mask Register)
 d'1 registre de signalisation des IT (IRR : Interrupt Request Register)
 d'1 registre de traitement des IT (ISR : In Service Register)
 de 4 registres d'initialisation (ICW : Initialization Control Word). Ces registres sont initialisés
au démarrage par le BIOS.
 de 3 registres de contrôle (OCW : Operation Command Word) utilisés pour activer, acquitter
les IT :
 OCW1 permet de positionner les bits dans IMR. Si bit = 1 → interruption masquée, si bit
= 0 → interruption autorisée ;
 OCW2 permet d'acquitter les interruptions suivant 3 modes :

1. Non spécique : annule le bit de l'ISR de plus forte priorité,


2. Spécique : annule un bit de l'ISR, ce bit devra être spécique,
3. Automatique : annule le bit de l'ISR après que le microprocesseur ait accusé réception
de l'interruption.

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

Bit Disable IRQ Fonction Bit Disable IRQ Fonction


0 IRQ 0 Horloge interne 0 IRQ 8 Horloge Temps Réel (CMOS)
1 IRQ 1 Gestion Clavier 1 IRQ 9 Redirection IRQ2
2 IRQ 2 PIC 2 2 IRQ 10 Disponible
3 IRQ 3 Port série COM2 3 IRQ 11 disponible
4 IRQ 4 Port série COM1 4 IRQ 12 Souris PS/2
5 IRQ 5 Carte Son 5 IRQ 13 Co-processeur Arithmétique
6 IRQ 6 Lecteur Disquettes 6 IRQ 14 IDE 1
7 IRQ 7 Port Parallèle 7 IRQ 15 IDE 2

tableau 3.2: Registre OCW1 du PIC 1 (0x21) et du PIC 2 (0xA1)

Remarque 3.2. Si on masque l'IRQ2 du PIC 1, on masque automatiquement les IRQ 8 à 15 du


PIC 2 (du fait de la redirection). ■
Pour masquer une IRQ, il faut la mettre à la valeur 1. Exemple : écrire 0xF7 dans OCW1 autorise
l'IRQ 3 et masque toutes les autres. En pratique, il faut préalablement lire le contenu du registre
de masquage, puis forcer le bit associé au périphérique à contrôler sans modier les autres bits.
Ceci est réalisé par la fonction outp(0x21,(inp(0x21) & 0xF7) ; . Une fois la routine terminée il faut
rétablir l'état préalable des IRQ. Ceci est assuré par la fonction outp(0x21,(inp(0x21) | 0x08) ; . A
la n de la routine (ISR), il ne faut pas oublier l'instruction EOI (End Of Interrupt) par le biais
de la fonction outp(0x20,0x20) ; pour le PIC 1 ou outp(0xA0,0x20) ; pour le PIC 2.

Pour initialiser complètement les PIC, on pourra s'inspirer du code suivant :

void initPIC (void)


{
/* MASTER PIC */
outp(0x20,0x11) ; /* Init ICW1 */
outp(0x21,0x20) ; /* Init ICW2 */
outp(0x21,0x04) ; /* Init ICW3 */
outp(0x21,0x01) ; /* Init ICW4 */
outp(0x20,0xFF) ; /* Masquage des IT */
/* SLAVE PIC */
outp(0xA0,0x11) ; /* Init ICW1 */
outp(0xA1,0x70) ; /* Init ICW2 */
outp(0xA1,0x02) ; /* Init ICW3 */
outp(0xA1,0x01) ; /* Init ICW4 */
outp(0xA1,0xFF) ; /* Masquage des IT */
/* Démasquage des IRQ */
outp(0x21,0x0) ;
outp(0xA1,0x0) ;
}

53
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 3. Interruptions

3.6 Gestion des Entrées-Sorties par interruption


Chaque dispositif d'entrée sortie comprend en général deux parties : un appareil et un contrôleur
de périphérique. Ce dernier sert d'interface entre l'appareil et le microprocesseur. Il reçoit les requêtes
du microprocesseur et les transforme en commandes spéciques au périphérique, et réciproquement.
Ce mécanisme permet une grande souplesse et ne nécessite pas d'instructions spécialisées à chaque
type possible de périphérique. L'unité centrale de traitement communique avec un périphérique
uniquement en mode lecture ou écriture comme pour la mémoire. Les données proprement dites
sont accompagnées de commandes (actions à réaliser) et d'informations (état du périphérique). Le
contrôleur de périphérique est chargé d'interpréter les requêtes ainsi transmises par le processeur et
il met également en forme les informations à renvoyer au processeur. Un contrôleur peut être équipé
d'un processeur, de registres et d'une mémoire tampon. C'est lui qui déclenche l'envoi d'un signal
d'interruption. Par rapport au dialogue on classe souvent les périphériques en deux catégories (par
caractères : communication par l'intermédiaire de registres et par blocs : information accessible par
blocs disposant chacun d'une adresse). Selon les architectures les adresses des registres ou des blocs
peuvent faire partie de la mémoire principale ou correspondre à des zones distinctes à cette mémoire
centrale. Ces adresses peuvent être attribuées lors de la mise en place du matériel ou congurées
dynamiquement.
Lorsque les quantités de données à échanger sont importantes, il est pénalisant de charger le
processeur de gérer ces échanges. Il est alors préférable de permettre une communication directe
entre le périphérique et la mémoire, ou même entre deux périphériques (DMA). La gestion des
échanges sur le bus de données est alors déléguée à un contrôleur DMA.
Sur le plan logiciel on trouve une couche supplémentaire sous le système d'exploitation pour
lequel, nous avons dit, le contrôle-commande d'un périphérique peut se limiter à des accès mémoire.
Cette couche, appelée pilote ou driver, traduit les commandes générales d'échanges par caractères
ou par blocs en commandes spéciques au périphérique, avec par exemple la gestion des signaux
de contrôle de la liaison, des contraintes de temps à respecter, etc. Ces pilotes sont fournis avec le
matériel.

3.7 Interruptions Logicielles


3.7.1 Interruptions BIOS
Citons les principales interruptions du ROM BIOS :
 IT 0x08 : tic horloge (timer) appelé toutes les 55 ms ( 8,2 fois/s). Elle sert par exemple à
arrêter le moteur de l'unité de disquette lorsque aucun accès à la disquette n'est exécuté. Cette
interruption (après avoir lancé le programme correspondant), appele l'interruption 0x1C. Cette
dernière ne contient qu'un retour IRET an de permettre aux programmeurs d'implanter leurs
propres programmes d'interruption (objectifs : programmation concurrente, multitâche, . . . )
 IT 0x10 à 0x12 : variable selon le matériel connecté. Souvent, IT 10 désigne l'IT vidéo, IT 11
fournit la liste du matériel disponible et IT 12 le calcul de l'espace mémoire disponible
 IT 0x13 : gestion des disques durs
 IT 0x14 : gestion du port série
 IT 0x15 : gestion d'un lecteur de cassettes
 IT 0x16 : gestion du clavier
 IT 0x17 : imprimante
 IT 0x18 : activation du ROM BIOS
 IT 0x19 : reset du système

54
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
3.7. Interruptions Logicielles

 IT 0x1A : gestion de la date et de l'heure


Les IT de 0 à 7 sont appelées directement par l'U.C. du microprocesseur. Il s'agit de :
 IT 0x0 : division par 0
 IT 0x1 : pas à pas
 IT 0x2 : circuit RAM défectueux
 IT 0x3 : point d'arrêt
 IT 0x4 : débordement
 IT 0x5 : copie d'écran
 IT 0x6 et 0x7 : inutilisées
L'appel d'une interruption logicielle au niveau BIOS se fait par l'intermédiaire de la fonction
int86 et en indiquant le numéro de l'interruption concernée.
Par exemple, la gestion des ports série COM1 et COM2 du PC peut s'eectuer en appelant
l'interruption numéro 0x14. On peut ainsi utiliser les fonctions de base résidentes correspondantes
du BIOS.
On utilise alors la fonction int int86 (int nb, union REGS *inregs, union REGS *outregs) ; où
int86 exécute l'interruption 80x86 logicielle dont le numéro est spécié par "nb". Au retour de
l'interruption, cette fonction recopie les valeurs courantes des registres du 80x86 dans outregs.
inregs peut pointer sur la même structure que outregs.
Cette fonction fait appel à des types particuliers de variables (relatifs au fonctionnement propre
du microprocesseur). On utilise union REGS qui est déclarée de la manière suivante :
union REGS {
struct WORDREGS x ;
struct BYTEREGS h ;
};
La structure union REGS, dénie dans dos.h sert à échanger des informations avec la fonction
int86 en utilisant 2 structures dénies ainsi :
struct BYTEREGS {
unsigned char al, ah, bl, bh ;
unsigned char cl, ch, dl, dh ;
};

struct WORDREGS {
unsigned int ax, bx, cx, dx ;
unsigned int si, di, cag, ags ;
};

3.7.2 Interruptions DOS


Les routines associées au DOS travaillent à un niveau supérieur. Elles peuvent parfois faire appel
à des routines du ROM BIOS. Les principales interruptions associées au DOS sont :
 IT 0x20 : n normale d'un programme ;
 IT 0x21 : appel de sous-routines système ;
 IT 0x22 : gestion de l'adresse de saut après l'exécution d'un programme. Elle ne peut être
activée directement. Elle précise la routine qui reprend le contrôle après la n du programme ;
 IT 0x23 : gestion de l'adresse de saut après un control-break. Idem à ci-dessus ;
 IT 0x24 : gestion de l'adresse de saut en cas d'erreur ;

55
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 3. Interruptions

 IT 0x25 : lecture directe sur disque ;


 IT 0x26 : écriture directe sur disque ;
 IT 0x27 : programme résident (terminer un programme en le laissant résident).

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. ■

3.8 La programmation des interruptions

Rappelons brièvement le mécanisme d'interruptions :


 Au moment de l'interruption, le processeur reçoit sur une patte un signal électrique, il passe
automatiquement en mode non interruptible.
 A la réception de ce signal, il termine l'instruction en cours d'exécution puis il sauvegarde les
informations nécessaires à la reprise du programme en cours d'exécution.
 Il lit ensuite l'identité de l'interruption par un dialogue sommaire avec le composant contrôlant
le mécanisme d'interruption.
 Il calcule l'adresse du vecteur d'interruption lié à cette identité d'interruption.
 Il charge depuis cette adresse une adresse pointant sur une routine appelée routine d'inter-
ruption (ISR).
 Il eectue un saut à cette adresse pour exécuter cette routine, souvent la première instruction
de cette routine est de réautoriser les interruptions.
 Il exécute ce code jusqu'à la n de la routine où il trouve une instruction spéciale de n
d'interruption.
 Il restaure l'état précédent l'interruption.
 Il reprend le cours du programme qui était en cours d'exécution.
Ceci est encore illustré par la gure 3.8 :

56
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
3.8. La programmation des interruptions

gure 3.8: Sous programme d'interruption

Pour faciliter la programmation, on peut utiliser un certain nombre de fonction du langage C


qui sont particulièrement destiné à cet usage.

3.8.1 Fonctions liées aux interruptions


La fonction void keep (int retour, in taille) , prototypée dans dos.h, suspend le programme en
cours d'exécution, le rend résident. taille désigne sa taille et code désigne le code retourné à
l'environnement par ce programme.
La fonction geninterrupt(int num) : déclenche l'IT num sans eectuer de copie de registres,
mais en initialisant les registres à l'aide de pseudo-variables dénies dans dos.h : ah,al,ch,etc . . .
La fonction intdos(union REGS * rin, union REGS * rout) et la fonction
intdosx(union REGS * rin, union REGS * rout, union REGS rseg) permettent d'appeler directe-
ment une routine de traitement de l'IT 0x21.
La fonction biosequip détermine la liste des équipements disponibles (IT 0x11).
La fonction biosmemory calcule l'espace mémoire disponible (IT 0x12).

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.

4.1.1 Principales Caractéristiques


En résumé

SPP EPP ECP


unidirectionnel bidirectionnel bidirectionnel
simplex half-duplex half-duplex
No control Software control Hardware control
très lent lent rapide
pas de protocole protocole (hanshake) simple protocole (handshake) compliqué

tableau 4.1: Diérentes caractéristiques des ports parallèles

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).

4.1.2 Norme IEEE 1284


Le standard IEEE de signaux d'interface bidirectionnelle de périphériques de port parallèle
pour PC, adopté dans sa version nale en mars 1994, dénit les caractéristiques physiques du port
parallèle, ses modes de transfert de données et ses caractéristiques physiques et électriques.
Ainsi dénit-il le comportement des signaux électriques externes au PC applicable à un port
parallèle multi-mode fonctionnant en mode 4 bits, 8 bits, EPP et ECP. Tous les types de modes ne
sont pas requis dans le cadre du standard 1284, qui prévoit la possibilité d'en ajouter d'autres.
Le standard IEEE 1284 vise à dénir le comportement des signaux entre un PC et un périphé-
rique connecté, et plus particulièrement une imprimante, mais il intéresse également particulière-
ment les fabricants de périphériques utilisant le port parallèle (disques durs, adaptateurs de réseaux
locaux, etc.).
C'est un standard de niveau matériel exclusivement et il ne précise donc pas comment le logiciel
doit communiquer avec le port, mais il a donné lieu à un standard supplémentaire destiné à dénir
une interface de niveau logiciel. Ainsi la commission IEEE 1284.3 a-t-elle été formée pour élaborer un
standard d'interface de niveau logiciel à utiliser avec le matériel conforme au standard IEEE 1284.
Ce standard, qui vise à éliminer les disparités existant entre les puces de port parallèle des diérents
fabricants, comporte une spécication destinée à faire contrôler le fonctionnement du mode EPP
par le BIOS du PC.

60
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
4.1. Introduction

4.1.3 Signaux

gure 4.1: Connecteur DB25 pour SPP

SPP EPP ECP


1 STRB R/W Host CLK
2-9 D0-D7 D0-D7 D0-d7
10 ACK INT Periph CLK
11 BUSY WAIT Periph ACK
12 PAPER OUT Reverse ACK
13 SELECT X FLAG
14 AUTO FEED DATA STRB Host ACK
15 ERROR Periph Request
16 INIT/RESET RESET Reverse Request
17 SEL IN ADR STRB 1284 Active
18-25 GND GND GND

tableau 4.2: Signaux des ports parallèles SPP, EPP et ECP

 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 :

gure 4.2: Dialogue avec une imprimante

gure 4.3: Handshake : timing

4.2 Modes de fonctionnement


4.2.1 Mode standard SPP
Initialement, le port parallèle standard (SPP) se décompose en 3 registres :
 registre de données : le port conserve l'octet à écrire sur les sorties de données (D0 à D7). Dans
les ports bidirectionnels, lorsque le port est conguré comme entrée, le registre de données
conserve l'octet à lire sur les contacts de données du connecteur.
 registre d'état : il maintient les états logiques de cinq entrées (S3 à S7). Il fonctionne en lecture
seule, sauf pour le signal S0 qui est un repère de n de séquence ( timeout ag) pour les ports
acceptant des transferts en mode EPP et qui peut être annulé par logiciel.

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

tableau 4.3: Registres du 8255

Son protocole simplié est décrit par la gure 4.4 suivante :

gure 4.4: Protocole Centronics

 les données sont appliquées sur le port (D0-D7) ;


 imprimante occupée ? (busy ?)
 le programme manipule la ligne nStrobe, attend 1 µs puis re-manipule la ligne ;
 les données sont lues sur front montant de nStrobe ;
 l'imprimante indique son état par la ligne Busy ;
 Une fois les données acceptées par l'imprimante, elle envoie un ACK (impulsion négative de
5 µs sur nAck).

4.2.2 Mode étendu EPP

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

gure 4.5: Signaux et DB25 en mode étendu (EPP)

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.

gure 4.6: Lecture et écriture d'une donnée en mode EPP

64
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
4.2. Modes de fonctionnement

gure 4.7: Lecture et écriture d'une adresse en mode EPP

4.2.3 Mode étendu ECP


Ce port possède aussi des registres supplémentaires (voir tableau ??).

gure 4.8: Signaux et DB25 en mode étendu (ECP)

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

gure 4.9: Commande et Data forward

gure 4.10: Commande et Data reverse

4.3 Programmation

4.3.1 Interruption logicielle

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

4.3.2 Tableau des registres pour tous les modes


Adresse Type de Port Fonction
base SPP (W), EPP (W), ECP (mode 0 et 1) données
ECP (mode 3) Adresse FIFO
base+1 SPP, EPP, ECP état
base+2 SPP, EPP, ECP commande
base+3 EPP adresse
base+4 EPP (R/W) données
base+5 EPP autre fonction
base+6 EPP autre fonction
base+7 EPP autre fonction
base+0x400 ECP (mode2 et 3) données FIFO
ECP (mode 6) test FIFO
ECP (mode 7) Cong reg. A
base+0x401 ECP (mode 7) Cong reg. B
base+0x402 ECP (tous modes) ECR (Extended Control Register)

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.

gure 5.1: Liaisons multipoint et directe point à point (utilisant la tension)

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.

5.1.1 Format et Principe


Schéma de principe :

68
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
5.1. Généralités

gure 5.2: Principe d'une communication série RS232

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).

gure 5.3: Ecacité d'une communication série RS232

Le format d'une trame est le suivant :

attente START DONNEES PARITE (facultatif) STOP


1 bit 5,6,7 ou 8 bits 1 bit 1,1.5 ou 2 bits

tableau 5.1: Protocole : format d'une trame

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

gure 5.4: Niveau logique en communication série RS232

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.5: Parité

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

gure 5.7: Trame de communication RS232 : résumé

5.1.2 Norme RS 232


La norme RS232 dénit des caractéristiques électriques (niveaux des signaux), mécaniques
(connecteurs) et fonctionnelles (nature des signaux). Les valeurs des tensions que les interfaces
séries doivent fournir (et reconnaître) aux matériels connectés sont les suivantes (logique négative) :
 0 logique : pour une tension allant de +3 à +25V ;
 1 logique : pour une tension allant de -3 à -25V.
Généralement, les signaux envoyés sont compris entre -15 et + 15 V (tensions d'alimentation des
A-Op).

gure 5.8: Relation entre niveau logique et tension

5.1.3 Brochage du port série standard


Le port série permet de connecter un grand nombre de périphériques tels que :
 un modem,
 une imprimante,
 un autre ordinateur,
 un lecteur de codes barres,

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.

DB9 DB25 Signal Fonction Sens


1 8 DCD détection de porteuse (Data Carrier Detect ) ⇐ E1
2 3 RxD réception des données (Received Data ) ⇐E
3 2 TxD émission des données (Transmitted Data ) ⇒S
4 20 DTR terminal prêt (Data Terminal Ready ) ⇒ S1
5 7 SG masse (Signal Ground )
6 6 DSR données prêtes (Data Set Ready ) ⇐ E1
7 4 RTS demande d'émission (Request To Send ) ⇒ S1
8 5 CTS prêt pour l'émission (Clear To Send ) ⇐ E1
9 22 RI indicateur de sonnerie (modem) (Ring Indicator ) ⇒ E1

tableau 5.2: Brochage du port série

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 .

gure 5.9: Signaux sur les connecteurs DB25 et DB9

5.1.4 Description des signaux


Les équipements qui peuvent être connectés à la liaison série RS232 sont de 2 types :
1. DTE (Data Terminal Equipment) : les équipements de terminaux de données génèrent les
données à transmettre (exemple : ordinateur),
2. DCE (Data Communication Equipment) : les équipements de communication de données
transmettent les données sur la ligne de communication (exemple : modem).
Les diérents signaux utilisés pour la communication sont répartis de la manière suivante :
• PHYSIQUE
- SG est la liaison de masse électrique qui peut être confondue avec la masse mécanique.
• LIGNE de données
- TxD est la ligne d'envoi des données.
- RxD est la ligne de réception des données.
• VALIDATION d'émission-réception

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).

5.1.5 Modalités de transmission (simplex-duplex)

La transmission entre le DTE et le DCE peut se faire de plusieurs manières :


 dans un seul sens (DTE vers DCE ou DCE vers DTE). On parle de liaison simplex (voir
gure ci-dessous). Dans ce cas, 2 ls susent : l'un pour transporter les données, l'autre
comme référence (la masse en général),
 dans les deux sens (bidirectionnel) : les dispositifs DCE et DTE doivent pouvoir émettre et
recevoir des données. On parle de liaison duplex (voir gure ci-dessous). Si la communication
est alternée : half-duplex, simultanée : full-duplex.

gure 5.11: Connections pour liaisons simplex et duplex

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).

5.2.1 Liaison DTE-DCE


Aux extrémités du câble on trouve un connecteur DB25 femelle (coté ordinateur) et un connec-
teur DB25 ou DB9 mâle (coté modem). Les connections sont directes (" câbles droits ").

gure 5.12: Connections DTE-DCE

La communication se déroule en plusieurs phases (attention : niveau haut = 0 logique) :

gure 5.13: diérentes phases d'une communication DTE vers DCE

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.

5.2.2 Liaison DTE-DTE sans contrôle de ux


Pour connecter 2 DTE entre eux par une liaison série RS232, il faut au minimum 3 ls : un pour
les données qui circulent dans un sens, un pour les données qui circulent dans l'autre sens et un
pour la masse électrique des signaux. On réalise donc le câblage suivant (DB25) :

gure 5.14: DTE-DTE half-duplex sans contrôle

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.

gure 5.15: DTE-DTE full-duplex sans contrôle

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 !

5.2.2.1 Null modem


Ici, le but est de s'aranchir d'un grand nombre de ls (économie, place, simplicité, etc. . .).

gure 5.16: Câblage Null Modem

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.

5.2.3 Liaison DTE-DTE avec contrôle de ux matériel


5.2.3.1 Liaison complète
D'autres signaux ont été ajoutés à ces trois lignes de base an de permettre un contrôle du
déroulement de la liaison par l'un ou l'autre des équipements et éviter par exemple qu'un équipement
envoie des informations à un autre qui n'est pas prêt à les recevoir parce qu'il n'est pas connecté,
pas sous tension ou parce qu'il est trop lent.

gure 5.17: DTE-DTE avec contrôle de ux

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.

gure 5.18: DTE-DTE avec contrôle de ux complet

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.

5.2.3.2 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

1. Connexion de ligne sur les systèmes A etde


Emission B.données
Les signaux DTR et DSR peuvent être validés
103de
suite à une procédure réponse automatique transmise103
: TD par: le
TDcircuit RI.
2. Validation de l'émission Réception de données
sur A (RTS = 1 et CTS = 1). Le
104 : RD 104DCE
: RD A émet une porteuse sur la
ligne. Demande d'émission
E 105par: RTS 105 : RTS E
3. Détection de porteuse le DCE B à(DCD
Prêt émettre= 1).
T 106 : CTS
4. Transmission de données 106 : CTS T
T ETCD prêt C
5. Arrêt de l'émission 107
par :ADSR
(RTS = 0 et CTS = 0) 107 : DSR D
D ETTD prêt = 0 et DSR 108
6. Déconnections de la108
ligne sur A et
: DTR B (DTR = 0): DTR
Détection porteuse
109 : DCD 109 : DCD
78 Masse signal
102 : SG 102 : SG
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
5.2. Protocoles

5.2.4 Liaison DTE-DTE avec contrôle de ux logiciel

5.2.4.1 Protocole ETX / ACK

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.

5.2.4.2 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.

gure 5.21: Exemple de trame en protocole Xon - Xo

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

5.3.1 Algorithme Xon-Xo

gure 5.22: Algorithme Xon-Xo

5.3.2 Procédure de test : rebouclage entrées / sorties

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.

5.3.3 Comment reconnaître un DTE d'un DCE ?

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

5.3.4 Protocole d'échange sur PC

gure 5.23: Propriétés du port COM 1 sur PC

5.3.5 Algorithmes émission - réception d'un caractère

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.

gure 6.1: UART : architecture interne

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 :

gure 6.2: Transmission avec modem

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.1.2 Avantages de l'UART


 simplicité (2 ls),
 produit universel
 produit éprouvé et able,
 prix attractif

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

gure 6.3: IRQ pour UART sur PC

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.

6.3 Les Registres de l'UART


Le 16550 comporte 12 registres de 8 bits classés en trois catégories :
1. les registres de contrôle : DLL, DLM, IER, LCR, MCR, FCR, SCR.
2. les registres d'état : LSR, MSR et IIR.
3. les registres de données : RBR et THR.

table des registres UART


oset 0 1 2 3 4 5 6 7
DLAB 0 0 1 1 0 x x x x x x 0 1
R/W R W R/W R/W R/W R W R/W R/W R R R/W
NOM RBR THR DLL DLM IER IIR FCR LCR MCR LSR MSR SCR
bit 0 D0 D0 B0 B8 ERDA IP FE WLS0 DTR DR DCTS x P0
bit 1 D1 D1 B1 B9 ETD ID1 RFR WLS1 RTS OE DDSR x P1
bit 2 D2 D2 B2 B10 ERLS ID2 TFR STB OUT1 PE TERI x P2
bit 3 D3 D3 B3 B11 EMS 0 DMS PEN OUT2 FE DDCD x P3
bit 4 D4 D4 B4 B12 0 0 TTL EPS LOOP BI CTS x P4
bit 5 D5 D5 B5 B13 0 0 TTM SP AFE THRE DSR x P5
bit 6 D6 D6 B6 B14 0 FE1 RTL BC 0 TSRE RI x ILS/OS
bit 7 D7 D7 B7 B15 0 FE2 RTM DLAB 0 RFE DCD x 0

tableau 6.1: Tables des registres UART

• 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.

6.3.1 RBR/THR émission/réception


• RBR (Receiver Buer Register) : registre tampon de réception, couplé au RSR (Receiver
Shift Register) qui est un registre à décalage des données reçues ;
• THR (Transmitter Holding Register) : registre d'attente d'émission, couplé au TSR (Transmit
Shift Register) qui est un registre à décalage des données émises.
Le chargement et la lecture s'eectuent par le CPU au travers des registres d'émission THR et
de réception RBR situés tous deux à l'adresse relative +0 et possédant 8 bits de données (D0 à D7).
Le bit D0 est le LSB. Il est le premier à être émis ou bien reçu. On écrit ( W ) la donnée dans THR
tandis qu'on la lit ( R ) dans RBR.

gure 6.4: Principe d'émission - réception

6.3.1.1 Mécanisme d'émission (sans FIFO)


La donnée à transmettre transite sur le bus interne et arrive dans le registre THR contrôlé par
d'autres registres. La donnée est ensuite transférée dans le registre à décalage d'émission (TSR) an
de sérialiser la donnée sur la ligne d'émission TxD. Lorsque le registre d'émission est vide , l'état
est communiqué au système via THRE.

85
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 6. UART

gure 6.5: Mécanisme d'émission sans FIFO

Exemple de séquence temporelle en émission :

gure 6.6: Exemple de séquence temporelle en émission

6.3.1.2 Mécanisme de réception (sans FIFO)

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

gure 6.7: Mécanisme de réception sans FIFO

6.3.2 DLL / DLM vitesse de transmission


• DLL (Divisor Latch Less Signicant Byte) : registre LSB de division d'horloge ;
• DLM (Divisor Latch Most signicant Byte) : registre MSB de division d'horloge.
L'accès se fait aux adresses relatives +0 (DLL) et +1 (DLM) mais nécessite que le bit DLAB
soit positionné à 1 (pour ne pas accéder par défaut aux RBR-THR en +0 et à IER en +1). Le
chargement se fait sur 2 registres car on a besoin de coder les valeurs sur 2 octets. Ces registres
permettent de diviser la fréquence d'entrée (déjà pré-divisée par 16) par la valeur chargée. Sur les
PC, les fréquences d'horloges sont de 1.8432 et 3.072 MHz. Le mode de calcul est le suivant :

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 :

Vitesse (bauds) 50 300 1200 2400 4800 9600 19200 56200


valeur (D) 2304 384 96 48 24 12 6 2
valeur (H) 0x900 0x180 0x60 0x30 0x18 0x0C 0x06 0x02

tableau 6.2: Nombres à charger pour les vitesses de transmission

6.3.3 IER autorisation d'interruption


• IER (Interrupt Enable Register) : registre d'autorisation des interruptions.
L'accès se fait à l'adresse relative +1 avec DLAB à 0. Il permet de spécier les conditions de
génération des interruptions (autorise les interruptions en réception ou en transmission et l'accès à
LSR). Lorsqu'un bit est à zéro, cela signie qu'il n'y aura pas de signal d'interruption émis pour
l'événement désigné. Si tous les bits sont à 0, cela signie qu'il n'y aura aucun cas d'interruption
produite par le circuit vers le gestionnaire d'interruption du PC (8259).

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.

6.3.4 IIR nature des interruptions


• IIR (Interrupt Identication Register) : registre d'identication des interruptions.
L'accès se fait à l'adresse relative +2 en lecture seule. Il permet de traiter une interruption selon
4 niveaux de priorité (interface avec un microprocesseur).
 bit 0 (IP : Interrupt Pending) : 0 signie interruption demandée et 1 dans le cas contraire,
 bits 1 à 3 (ID1-ID2-ID3 : IDenticator interrupt bit 1, 2 et 3) indiquent la nature, la source
et la conséquence de l'interruption selon le tableau ??,
 bit 4-5 : 0 (réservés),
 bit 6-7 : FE1 et FE2 (FIFO Enable bit 1 et 2) : Validation des FIFO. FE2 mis à 1 si bit 0 de
FCR (FE)= 1. FE2 = 0 → FIFOs inactivées. FE2 = 1 → FIFOs activées. FE1 = 0 → FIFOs
activées mais inutilisables.

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

tableau 6.3: Priorité des interruptions

6.3.5 FCR réglages des buer FIFO


• FCR (FIFO Control Register) : registre de réglage des FIFO : buer d'émission / réception.
L'accès se fait à l'adresse relative +2 en écriture seule. Ce registre valide, eace les FIFO, règle
le niveau du trigger (en octets) des tampons et sélectionne le valeur du signal en DMA.
 bit 0 (FE : Fifo Enable) : 1 pour valider les FIFO RBR et THR. 0 eace la totalité des FIFO
et empêche l'écriture des autres bits du registre.
 bit 1 (RFR : Receiver Fifo Reset) : eace contenu FIFO RBR (et pas le RSR lui-même).
bistable (revient à 0 automatiquement après usage).
 bit 2 (TFR : Transmit Fifo Reset) : eace contenu FIFO THR (et pas le TSR lui-même).
bistable (revient à 0 automatiquement après usage).

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)

TTM TTL seuil


(resp. RTM) (resp. RTL)
0 0 1 octet
0 1 4 octets
1 0 8 octets
1 1 16 octets

tableau 6.4: Seuils des FIFO (pour un FIFO 16 octets)

Exemple de réglage des seuils sur PC :

gure 6.8: Réglages des FIFO sur PC

6.3.5.1 Fonctionnement des FIFO


En réception, lorsqu'un UART reçoit un octet par son entrée série, elle le "désérialise" et le stocke
dans un registre interne (RBR) et prévient (par interruption), qu'il est à disposition du programme
de traitement. Les données successives peuvent continuer à arriver et sont stockées dans le FIFO.
Le processeur doit lire le RBR (et ainsi le vider) avant que le FIFO RBR soit plein. Ceci exige un
traitement des interruptions rapide.
En émission, lorsqu'un UART veut émettre, il reçoit en parallèle les données destinées au registre
d'émission (THR). Il doit attendre que la ligne soit libre (handshaking d'autorisation d'émettre),
puis il sérialise et prévient par une interruption que le registre de sortie (THR) est libre. Avantage
de FIFO THR : pas besoin d'attendre que le registre à décalage ait ni avant d'envoyer les autres
données vers THR puis FIFO THR. Attente seulement lorsque FIFO THR plein.
Dans un sens comme dans l'autre,on voit que les registres RBR et THR ont gagné à être remplacé
par des FIFO pouvant emmagasiner plusieurs octets et dont les mécanismes d'enregistrement (push)
et de récupération (pop) sont nettement plus rapides que les accès classiques (aléatoires).
Les piles du type FIFO font partie de ces mécanismes. En contrepartie de leur rapidité, elles ne
peuvent récupérer qu'un seul octet à la fois (le dernier entré). On comprendra que l'eet tampon est
d'autant plus ecace que le nombre d'octets pouvant être stocké est grand. Ce nombre est réglable

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.

6.3.6 LCR réglages de la transmission


• LCR (Line Control Register) : registre de commande de la ligne de communication.
L'accès se fait à l'adresse relative +3. Ce registre permet de spécier le format de la trame de la
liaison série (vitesse de transmission, nombre de bit de données pour le codage du caractère, nombre
de bits stop et type de parité). Il permet l'accès aux registres de réception (RBR) et d'émission
(THR).
 bits 0 et 1 (WLS0 et 1 : World Length Select bit 0 et 1) : nombre de bits du caractère (codage
sur 5, 6, 7 ou 8 bits)
 bit 2 (STB : STop Bits) : nombre de bits Stop
 bit 3 (PEN : Parity ENable) : validation de parité.
 bit 4 (EPS : Even Parity Select) : parité paire ou impaire.
 bit 5 (SP : Sticky Parity) : forçage de parité (inverse de EPS).
 bit 6 (BC : Break Control) : contrôle de break (0 = hors service, 1 = mise à zéro de la sortie
TXD tant que BC=1).
 bit 7 (DLAB : Divisor Latch Access Bit) : DLAB=1, autorise l'accès aux registres de division
DLL et DLM. DLAB = 0, permet l'accès aux registres RBR, THR et IER.

STB WLS1 WLS0 Codage (payload) STOP bits


0 x x 5,6,7 ou 8 1
1 0 0 5 1,5
1 0 1 6 2
1 1 0 7 2
1 1 1 8 2

tableau 6.5: Nombre de bits de codage des données (payload) et de bits de STOP

SP EPS PEN type de parité signication


x x 0 NP : No Parity aucune
0 0 1 OP : Odd Parity impaire
0 1 1 EP : Even Parity paire
1 0 1 HP : High Parity haute : 1
1 1 1 LP : Low Parity basse : 0

tableau 6.6: Diérents types de parités

6.3.7 MCR réglages du modem


• MCR (Modem Control Register) : registre de commande du modem.
L'accès se fait à l'adresse relative +4.
 bit 0 (DTR : Data Terminal Ready) : force la ligne DTR dans l'état indiqué.
 bit 1 (RTS : Request To Send) : force la ligne RTS dans l'état indiqué.

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.

6.3.8 LSR état de la transmission


• LSR (Line Status Register) : registre d'état de la ligne de communication.
L'accès se fait à l'adresse relative +5 en lecture seule. Ce registre rend compte de l'état de la
transmission. Il permet de connaître l'état des buers de réception (bit 0 à 4) et de transmission (5
et 6) et de détecter une éventuelle erreur de transmission. Un lecture du LSR remet à 0 les bits 1 à
4.
 bit 0 (DR : Data Ready) : 1 si donnée entièrement reçue et transférée dans le RBR (ou FIFO
RBR). Remis à 0 par opération de lecture du RBR (ou FIFO RBR).
 bit 1 (OE : Overrun Error) : 1 si sur-vitesse, un caractère nouveau vient d'arriver alors que le
précédent n'a pas encore été lu ou bien remplissage de FIFO au delà du seuil préconisé.
 bit 2 (PE : Parity Error) : 1 si une erreur de parité est détectée. Avec les FIFO, l'erreur
s'applique au dernier caractère sortant (rst out).
 bit 3 (FE : Framing Error) :1 si une erreur de format (nombre de bit de stop incorrect) est
détectée. Avec les FIFO, l'erreur s'applique au dernier caractère sortant (rst out). Après une
erreur, l'UART prend 2 bits pour " resynchroniser ".
 bit 4 (BI : Break Indicator) : 1 si une erreur de break est détectée (idle time trop long, vitesses
de transmission diérentes entre ordinateurs). Avec les FIFO, l'erreur s'applique au dernier
caractère sortant (rst out). Après une erreur, l'UART attend 2 instants d'horloge au niveau
sur SIN pour autoriser le prochain caractère à traiter.
 bit 5 (THRE : Transmit Holding Register Empty) :1 si THR est vide, prêt à attendre un
prochaine donnée (mis à 1 lorsque le transfert de THR vers TSR est eectué). Il est remis à
zéro par le rechargement de THR. Avec les FIFO, mis à 1 lorsque FIFO THR est vide.
 bit 6 (TSRE : Transmit Shift Register Empty) : 1 si THR et TSR sont vides. Il est remis à
zéro par le chargement de THR. Avec les FIFO, 1 lorsque FIFO et TSR vides.
 bit 7 (RFE : RBR FIFO Error) : 1 si une erreur (PE, FE, BI) est survenue dans le FIFO
RBR.

6.3.9 MSR état du modem


• MSR (Modem Status Register) : registre d'état du modem.
L'accès se fait à l'adresse relative +6 en lecture seule. Ce registre donne l'état des lignes de
contrôle du modem. En mode Diagnostic (MCR4=LOOP=1).
 bit 0 (DCTS : Delta Clear To Send) : 1 si CTS a changé d'état depuis la dernière lecture.
 bit 1 (DDSR : Delta Data Set Ready) : 1 si DSR a changé d'état depuis la dernière lecture.
 bit 2 (TERI : Trailing Edge Indicator Ring) : 1 si RI est passée de l'état haut à bas depuis la
dernière lecture.
 bit 3 (DDCD : Delta Data Carrier Detect) : 1 si DCD a changé d'état depuis la dernière
lecture.

91
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 6. UART

 bit 4 (CTS : Clear To Send) :1 si CTS=0. En mode Diagnostic égal à RTS.


 bit 5 (DTR : Data Terminal Ready) : 1 si DTR=0. En Diagnostic égal à DTR.
 bit 6 (RI : Ring Indicator) : 1 si RI=0. En mode Diagnostic égal à OUT1.
 bit 7 : (DCD : Data Carrier Detect) 1 si DCD=0. En Diagnostic égal à OUT2.

6.3.10 SCR réglages pour une horloge externe


• SCR (SCratch Register) : registre de réglage pour l'utilisation d'une horloge externe et pour
le débuggage logiciel.

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 Programmer l'UART


6.4.1 Par scrutation
C'est le contenu du registre d'état de la ligne (LSR) qui est important.

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)

6.4.1.2 Emission (d'un caractère)


La démarche est la suivante :
 Lire le registre d'état LSR
 Vérier si le registre d'émission est vide (Bit 5 de LSR)
 Envoyer le caractère dans le registre THR

6.4.1.3 Réception (d'un caractère)


La démarche est la suivante :
 Lire le registre d'état (LSR)
 Vérier si un caractère est présent dans le registre (RHR)
 Lire le registre de réception RHR

92
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
6.4. Programmer l'UART

6.4.1.4 Utilisation courante


Pendant l'attente d'un caractère, on ne peut rien faire d'autre.

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

Utiliser un protocole bloquant l'émetteur pendant les traitements longs.

6.4.2 Par interruption


Il faut mettre à 1 les bits dénissant les interruptions désirées dans IER. Dans le mode en
interruption, c'est le registre IIR qui permet de distinguer l'origine de l'interruption.

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)

6.4.2.2 Dans la routine d'interruption


 Lire toutes les interruptions
 Analyser la cause de l'interruption (Erreur, Réception, Emission,modem)
 Acquitter l'interruption pour le 8259 (outp(0x20, 0x20))

6.4.2.3 Tampon (Buer) circulaire


Quelque soit le type d'UART utilisé, la vitesse d'envoi ou de réception des données étant beau-
coup plus lente que le temps d'exécution du CPU, il faut utiliser un mécanisme permettant de ne
pas monopoliser le CPU lors de la transmision. Pour cela, on a recours aux interruptions et à l'uti-
lisation d'une FIFO (ou buer) circulaire de taille appropriée pour les 2 sens de la communication.
Certains UART possèdent même une FIFO hardware.
Si l'on programme le 8250 en mode interruptible, l'interruption doit être générée sur la n
d'émission et sur la réception.

Se pose alors le problème de savoir où mettre les caractère reçus.

Pour résoudre ce problème, on utilise le concept de tampon (buer) circulaire :

93
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 6. UART

gure 6.9: Tampon Circulaire (FIFO)

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

6.5 Annexe : architecture interne d'un UART 16550


5.0 Block Diagram

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.

7.1.2 Caractéristiques générales


Le bus I2C permet de faire communiquer entre eux des composants électroniques très divers
grâce à seulement trois ls :
 2 signaux synchrones : un signal de donnée (SDA : Serial DAta Line), un signal d'horloge
(SCL : Serial Clock Line).
 un signal de référence électrique (Masse).

gure 7.1: Raccordement sur le bus I2C

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

7.1.3 Nouvelle caractéristiques

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.

7.2 Le protocole I2C

7.2.1 Les 2 modes de fonctionnement

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.

7.2.2 La validité des données

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.

The I2C-bus and how to use it


(including specifications)

5.0 BIT TRANSFER


Due to the variety of different technology devic
SDA bipolar) which can be connected to the I2C-bus
gure 7.2: Validité des données logical ‘0’ (LOW) and ‘1’ (HIGH) are not fixed a
associated level of VDD (see Section 15.0 for E
Conditions de départ start et d'arrêt stop.
2 Specifications). One clock pulse is generated fo
7.2.3 Les conditions de
À l'intérieurSCL début /den
du protocole définition de l'I C les situations qui régissent
transferred.
ces conditions sont uniques. Il est à noter que ce sont des conditions de
DATA LINE CHANGE
Pour prendre ledépart
contrôle
et dedu bus,
stop il faut
et non des tout
bits de
STABLE: d'abord
OF départ
DATA
DATA VALID ALLOWED
que
et de celui-ci
stop. soit au repos (SDA=1
5.1 Dataetvalidity
SCL=1)
pendant un intervalle susant. Pour transmettre des données sur le bus, il faut donc surveiller
The data on the SDAdeux
line must be stable during
conditions particulières : SU00361 the clock. The HIGH or LOW state of the data l
 La condition de départ (notée S) 5.
Figure : SDA passe on
Bit transfer à '0'
the (front
I2C-bus descendant) alors que
when theSCL=1.
clock signal on the SCL line is LOW (
 La condition d'arrêt (notée P) : SDA passe à '1' (front montant) alors que5.2 SCL=1.
START and STOP conditions
Within the procedure of the I2C-bus, unique situ
are defined as START and STOP conditions (s
SDA SDA
A HIGH to LOW transition on the SDA line whil
such unique case. This situation indicates a ST
SCL SCL A LOW to HIGH transition on the SDA line whil
Condition de start
S : Cette situation a lieu et uniquementP lieu lorsque defines
la a STOP condition.
ligne de données SDA passe de l'état haut à l'état bas tandis que la ligne
d'horloge resteSTART
à l'état haut. STOP START and STOP conditions are always gener
CONDITION CONDITION
Condition de stop : Cette situation a lieu et uniquement lieu lorsque la bus is considered to be busy after the STA
The
SU00362
gure
ligne7.3:
de Conditions
données SDAdepassedépart et d'arrêt
de l'état de transmission
bas à l'état haut tandis que dulabus bus
ligne I2C
is considered to be free again a certain tim
Philips Semiconductors Figurehaut.
d'horloge reste à l'état 6. START and STOP conditions condition. This bus free situation is specified in
Lorsqu'un circuit, après avoir vérié que le bus est libre, prend le contrôle de celui-ci,
Detection of STARTilandenSTOP conditions by d
À tout cela il faut ajouter les compléments suivants :
devient le maître. C'est lui qui génère le signal d'horloge. Les autres composantsthedoivent bus is easycontinuer
if they incorporate the necessa
• les conditions de start et de stop sont toujours créées par le maître,hardware. However, microcontrollers with no su
de scruter le 2bus en attendant la condition de Stop.
The I C-bus specification
• le bus est dit occupé après la condition de départ, sample the SDA line at least twice per clock pe
Remarque 7.1 (Re-Départ).
• le bus seraAconsidéré
la n d'une
commetrame
libreon trouve
après une condition
un certain de
the stop
temps (bien (P). Le bus
transition.
(re)devient libre au bout d'un
défini) temps
après d'environ
la condition 4,7 µs. Pour éviter le risque de perdre la main entre
de stop.
chaque trame, un maître peut utiliser un bit particulier appelé Re Départ (SR : Repeated Start).
Comme il n'est pas possible de lire et d'écrire en même temps, le bit SR évite 2 opérations qui néces-
2.7. Les formats de transmission.
siteraient une séquence de Start (S) + Stop (P) et lui permet ainsi d'accélérer ses communications
puisqu'il n'a pas besoin de renvoyer
2.7.1. Format l'adresse du composant à chaque trame !
des mots.
handbook, full pagewidth
Examinons maintenant les formats des mots et des transferts des
SLAVE ADDRESS R/W A DATA A/A Sr SLAVE ADDRESS R/W A DATA A/A P
S données.
Chaque mot transmis sur la ligne de donnée SDA doit avoir une
(n bytes (n bytes
longueur de 8 bits. Jusque
+ ack.) là rien de particulier et ceci+ ack.)
permettra de
read or write * *
Le BUS I2C.doc / FJ 6 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.

gure 7.4: Re départ (bit SR)


Fig.13 Combined format.

99
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 7. I2C

7.2.4 La transmission de données d'un octet


Les conditions de Start et Stop sont imposées par le maître (quel que soit le sens du transfert).
Un nombre indéni d'octets peut être transmis entre un Start et un Stop.

7.2.4.1 Accusé de réception


Chaque octet est transmis sur 9 bits, le 9ème bit servant d'accusé de réception (ACKnowledge).
C'est l'esclave récepteur qui génère le bit ACK après chaque octet reçu du maître émetteur ou bien
c'est le maître récepteur qui le génère après chaque octet de l'esclave émetteur.
Après avoir imposé la condition de départ, le maître applique sur SDA le bit de poids fort D7
(c'est lui qui est transmis en premier). Il valide ensuite la donnée en appliquant pendant un instant
un niveau 1 sur la ligne SCL. Lorsque SCL revient à 0, il recommence l'opération jusqu'à ce
que l'octet complet soit transmis. Il envoie alors un bit ACK à 1 tout en scrutant l'état réel de
SDA. L'esclave doit alors imposer un niveau 0 pour signaler au maître que la transmission s'est
eectuée correctement. Les sorties de chacun étant à collecteur ouvert, le maître voit le 0 et peut
alors passer à la suite.

gure 7.5: Validation de transmission : ACKnowledge

avec SCL (Horloge), SDAM (SDA maître), SDAE (SDA esclave) SDAR(SDA réel résultant).

7.2.4.2 Ecriture d'une donnée


L'écriture d'une donnée par le maître ne pose pas de problème particulier. Tous les circuits
connectés sur le bus détectent la condition Start (par interruption). Seul le circuit reconnaissant son
adresse communique ensuite avec le maître.

gure 7.6: Ecriture simple (1 octet)

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 :

gure 7.7: Pause

7.2.4.3 Lecture d'une donnée


La lecture d'une donnée par le maître se caractérise par l'utilisation spéciale qui est faite du bit
ACK. Après la lecture d'un octet, le maître positionne ACK à 0 s'il veut lire la donnée suivante
(cas d'une mémoire par exemple) ou à 1 le cas échéant. Il envoie ensuite la condition d'arrêt.

gure 7.8: Lecture simple (1 octet)

7.3 La gestion des conits


7.3.1 La synchronisation
Tous les maîtres produisent leurs impulsions d'horloge de manière autonome. La conguration
de la ligne SCL en ET câblé permet à des maîtres concurrents de synchroniser leurs impulsions
d'horloge. Un maître qui émet un niveau bas relâche la ligne à un moment donné pour la remettre
au niveau haut.A partir de cet instant, il relit le niveau de la ligne ret attend qu'il soit eectivement
passé à 1. Ainsi, aussi longtemps qu'un autre circuit maintient la ligne au niveau bas, la ligne reste

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.

7.3.2.3 Mise en situation


Soit le chronogramme suivant :

gure 7.9: Exemple de collision (ou conit)

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.

7.4 L'adressage des composants


7.4.1 Généralités
le nombre de composants qu'il est possible de connecter sur un bus I2C étant largement supérieur
à deux, il est nécessaire de dénir pour chacun une adresse unique.
Au cours d'une transmission, le maître commence toujours à sélectionner un esclave à l'aide
d'une adresse et par indiquer à l'esclave le sens de transmission à l'aide du bit R/W.

gure 7.10: Sens du transfert : lecture ou écriture

7.4.2 Adressage standard


L'adresse d'un circuit est codée sur 7 bits complétée par un bit R/W qui permet au maître de
signaler s'il veut lire ou écrire une donnée. Le bit d'acquittement ACK fonctionne comme pour une
donnée, ceci permet au maître de vérier si l'esclave est disponible ou que l'adresse n'est pas celle
d'un composant présent.
Le 1er octet d'une trame de dialogue comprend ainsi une adresse d'esclave sur 7 bit (128 compo-
sants adressables) et un 8ème bit R/W précisant si le maître veut émettre ou recevoir les données.

103
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 7. I2C

gure 7.11: Adressage standard (7 bits)

7.4.3 Adresses réservées

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.

adresse fonction description


0000 0000 Appel général Après l'émission d'un appel général, les circuits ayant la
capacité de traiter ce genre d'appel émettent un acquittement.
Le deuxième octet permet de dénir le contenu de l'appel.
0000 0001 Octet de Start Pour synchroniser les périphériques lents avec les rapides
0000 001x Protocole Cbus Tous les circuits I2C deviennent sourds.
On peut transmettre ce que l'on veut sur le bus. Retour à
la normale dès détection d'une condition d'arrêt.
0000 010x Autres protocoles pour assurer une compatibilité avec des autres protocoles
0000 0110 Reset Remet tout les registres des circuits connectés dans leur état
initial (équivalent à celui lors de la mise sous tension). Les
circuits qui en sont capables rechargent leur adresse d'esclave.
0000 0111 Réservé pour usage futur exemple : débuggage réseau.
0000 1xxx High Speed Passage en mode High Speed (3.4 Mbits/s).
1111 0xxx Adressage étendu utilisées en adressage 10 bits.
1111 1xxx Reservé pour usage futur

tableau 7.1: Adresses réservées pour le bus I2C

7.5 Mode de transfert en adressage standard


7.5.1 Ecriture du maître

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

gure 7.12: Ecriture multiple

7.5.2 Lecture du maître


Le maître positionne le bit R/W à 1 pour signier la lecture. Le premier ACK vient de l'esclave
pour la bonne réception de l'adresse et les ACK suivants viennent du maître après chaque donnée
lue. Lorsque le maître a nir de lire, il envoie NAK puis P :

Philips Semiconductors

The I2C-bus specification


gure 7.13: Lecture multiple

7.5.3 Format combiné


Le format combiné (lecture / écriture ou bien écriture / lecture) nécessite d'inverser le sens du
transfert et donc l'utilisation du bit SR (Repeated Start) :
handbook, full pagewidth

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.

gure 7.14: format combiné

Fig.13 Combined format.


7.5.4 Cas particuliers
7.5.4.1 Les mémoires
Cas particulier des mémoires : L'espace adressable d'un circuit de mémoire étant sensiblement
10 7-BIT ADDRESSING
plus grand que la plupart des autres types de circuits, l'adresse d'une information y est codée sur

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.15: Exemple de lecture d'une mémoire (24C02)

gure 7.16: Exemple d'écriture d'une page dans une mémoire (24C02)

7.6 Mode de transfert en adressage étendu

7.6.1 Adressage étendu

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.

gure 7.17: Adressage étendu (10 bits)

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

Sr SLAVE ADDRESS R/W A DATA A DATA A P


1st 7 BITS
Fig.29 Combined format. A master transmits data to two slaves, both with 10-bit addresses.
MBC615
(read)

gure 7.20: Ecriture puis lecture en mode étendu

dbook, full pagewidth Fig.28 Combined


0 format. A master addresses a slave with a 10-bit address,
7 - BIT then transmits data to this slave and reads data from this slave.
S DATA A
R/W A DATA A/A
SLAVE ADDRESS

(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 :

gure 7.22: Exemple de connection du bus I2C au port série


Il suffit alors de lire l’état du registre MCR (COM1 + 4) de l’UART et de lire ou écrire les valeurs
des bitsIl correspondant auxl'état
sut alors de lire conditions d’initialisation
du registre MCR (COM1 du bus
+ 4)et de
auxl'UART
conditions delire
et de START, STOP
ou écrire les et
ACKnowledge.
valeurs des bits correspondant aux conditions d'initialisation du bus et aux conditions S, P et ACK.
a) #include
Compléter<ansi_c.h>
les instructions manquantes pour réaliser la connexion du bus I2C à la liaison série
#dene COM1 0x3F8 /*adresse base port série COM1*/
#dene MCR /*adresse du registre MCR (utiliser COM1)*/
#include <ansi_c.h>
#define COM1 0x3F8 /*adresse de base du port série COM1 */
void I2Cinit( void) ;
{outp(MCR , 3 ) ; /* Bus au repos : SDA = 1 ; SCL = 1 ; */}
void I2C_init( void);
void Start
{outp( (void)+;4 ) =
COM1 2 ; /* SCL = 1; SDA = 1 */
{outp (MCR , 2 ) ;/* SCL = 1 ; SDA = 0 ; */
outp (MCR , 0 ) ;/* SCL = 0 ; SDA = 0 ; */
}
1
void Stop (void) ;
{outp (MCR , 0 ) ;/* SCL = 0 ; SDA = 0 ; */
outp (MCR , 2 ) ;/* SCL = 1 ; SDA = 0 ; */
outp (MCR , 3 ) ;/* SCL = 1 ; SDA = 1 ; */
}
void ACK (void) ;
{int compt ; /* compteur pour boucle tempo 20 (à ajuster) */
/* dépend de la fréquence processeur */
outp (MCR , 0 ) ;/* SCL = 0 ; SDA = 0 ; */
outp (MCR , 2 ) ;/* SCL = 1 ; SDA = 0 ; */
for (compt = 0 ; compt <= 20 ; compt ++)
{outp (MCR , 0 ) ;/* SCL = 0 ; SDA = 0 ; */
}
}

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.

8.1.1 USB 1.1 et 2.0


La première version de lUniversal Serial Bus, linterface USB 1.1, permet de connecter à un
micro-ordinateur jusquà 127 (adressage sur 7 bits) périphériques pour un débit théorique maximal
de 12 Mbits/s, (soit 1.5 Mo/s), le tout sur un bus série comme son nom lindique. Principale-
ment destiné aux périphériques lents, linterface a été développée par Compaq, HP, Intel, Lucent,
Microsoft, NEC et Philips depuis 1994 pour aboutir sur le marché grand public en 1998.
LUSB 2.0 (12/2000) senrichit dune troisième vitesse de connexion entre le Host (le maître)
et les périphériques USB 2.0 : il est maintenant possible de relier des disques durs externes, impri-
mantes, scanners et autres lecteurs à des vitesses frôlant les 480 Mbits/s (soit 60 Mo/s). Le gain
en vitesse a été notamment possible grâce à la réduction du voltage des signaux transmis dans les
câbles, ceux-ci passant de 3.3V à 0.4V. Les périphériques répondant à la norme 2.0 ne peuvent pas
bénécier de la vitesse haute sils sont raccordés derrière un HUB USB 1.1. Il y a un gros  boum 
des chipsets récents qui intègrent tous la norme USB 2.0 (depuis milieu 2002-2003).

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 :

gure 8.1: Exemple de connecteurs USB (A et B)

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) :

gure 8.2: Composition (signaux) du câble USB

On établit la correspondance des signaux selon les types de connecteurs (A ou B) de la manière


suivante : 1 (rouge) :
1. alimentation (Vbus), rouge
2. D- (Data), blanc
3. D+ (Data), vert
4. masse (GND), noir

gure 8.3: Correspondance des signaux pour les connecteurs A et B

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

gure 8.4: Structure étoile série

Un élément supplémentaire savère indispensable à la connexion dun certain nombre de péri-


phériques USB au contrôleur principal (situé dans le South Bridge du chipset de la carte mère ou
sur une carte additionnelle). En général, on ne dispose pas de plus de 5 connecteurs USB. Il devient
alors nécessaire dintroduire dans larborescence des HUB USB :

gure 8.5: Topologie logique

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 Transactions et Transferts


La possibilité dune telle topologie entraîne des conséquences quant aux protocoles déchanges
de données entre le PC et les périphériques.

8.2.1 Modes de transmissions


1. mode asynchrone : comme un port série classique
2. mode isochrone : permet une communication périodique et continue entre le contrôleur maître
et les périphériques (à chaque milliseconde précisément, le contrôleur maître transmet un
paquet pour maintenir tous les périphériques synchronisés).

8.2.2 PIPE : Préliminaire à la communication


Il s'agit de la réservation d'un canal entre logiciel du Host et le End-Point du périphérique

8.2.3 Phases de transactions (protocole)


1. Paquet Jeton (TOKEN) : Un jeton est émis par le host (obligatoire), puis un PID (Packet
ID) identie le type de transaction.
2. Paquet Données (DATA) : donnée utile (payload), optionnel.
3. Paquet d'Etat : (HANDSHAKE) : (aussi appelé ACK). Validation transactions, erreurs.

8.2.4 Modes de transferts des paquets (terminaisons)


1. Control Transfers : (paquets de contrôle : Message) : conguration, états, initialisation des
périphériques.
2. Bulk Data Transfers : (paquets en bloc, en rafale de données (imprimantes, scanners).
3. Interrupts Transfers : (paquets dinterruption) : message court émis de temps en temps (l'USB
ne supporte pas les interruptions)
4. Isochronous Transfers : (paquets isochrones) : transmission à intervalles de temps réguliers et
à bande passante garantie, sans contrôle d'erreur.

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

8.3 Protocole USB


Le fonctionnement de l'USB est présenté sous forme d'un système séparé en 3 couches (les 3
couches basses du modèle standard OSI). Cette représentation permet à chaque intervenant dans la
réalisation d'un élément USB de bien délimiter son travail en respectant les spécications attendues
par les autres intervenants :

gure 8.6: Couches du protocole 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.

8.3.2 Trame de communication


La communication entre périphériques et hôtes sur le bus physique se présente sous la forme
d'un ot de bits émis en série. C'est le SIE (Serial Interface Engine) qui s'occupe de transformer
le ot de bits arrivant en parallèle dans les buers du contrôleur hôte, en un ux de données série
conforme à la spécication USB. Ce ux est constitué d'un ensemble de bits interprétables dans une
fenêtre de temps déterminée. Cette taille de fenêtre est xée à une milliseconde et l'ensemble des
bits contenus dans cette fenêtre constitue une trame (Frame).
Une trame est divisées en 3 parties :
_______________________________________________________________________________________
 un marqueur de début de trame (SOF : Start Of Frame) qui est un paquet spécial émis par
l'hôte toute les millisecondes.
 un ensemble de transactions de diérents types entre hôte et périphériques.
 un intervalle de n de trame (EOF : End Of Frame) qui est une période comprise entre la
dernière transaction émise dans la trame et le jeton SOF de la trame suivante.

Trame N – 1 (1 ms) Trame N (1 ms) Trame N + 1 (1 ms)

EOF SOF EOF SOF


Temps
SOF Start of Frame : marqueur de début de trame
EOF End of Frame : intervalle de fin de trame Gro
gure 8.7: Frame USB
Figure 24 – Génération de trame sur le bus physique
115
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 8. USB

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 :

gure 8.8: Paquet SOF

Un périphérique doit d'abord isoler une trame à l'intérieur de laquelle on retrouve des ensembles
de paquets (Token, Data, Handshake) :

gure 8.9: Paquets de la trame USB

La composition de ces 3 paquets réalise une transaction :

gure 8.10: Transaction

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.

8.3.3 Format des paquets


Chaque paquet (Token, Data ou Handshake) est structuré de la manière suivante :
 un identicateur (PID)
 une information spécique selon le paquet (ADResse + EndPoint, FrameNumber, Data, Vide)
 un contrôle d'erreur (CRC)

gure 8.11: Structure d'un paquet USB)

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) :

gure 8.12: Codage NRZI)

8.3.4 Types de paquets


Le format d'un paquet et les diérents champs qui le composent varient d'un type de paquet à
un autre. Nous allons décrire sommairement le rôle et les diérents types de paquets possibles :
TOKEN : Les paquets token vont du hub racine (host) vers un périphérique et servent au contrôle
du système. Ce paquet jeton indique le type de la transaction qui va suivre et a pour but de
transporter l'adresse et le sens du transfert. Il contient un champ PID, un champ ADDResse,
un champ terminaison (ENDP) et un champ de contrôle d'erreur CRC 5. Il y a 3 sortes de
jetons possibles :
 Jeton IN informe l'appareil que le host veut lire des informations.

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).

8 bits 7 bits 4 bits 3 bits


d. Les paquets SOF
PIDFigure 10 : Format
ADDR du paquet Token
ENDP CRC

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

HANDSHAKE : paquet de protocole d'accord. Il y a 3 sortes de paquet de protocole d'accord :


 ACK : validation de bonne réception du paquet.
 NAK : indique que l'appareil ne peut (temporairement) pas envoyer ou recevoir des données
ou bien sert à terminer une communication lorsque le host le décide.
 STALL : indique que l'appareil est bloqué.

gure 8.16: Champ du paquet Handshake

8.3.5 Champs des paquets


SYNC : Tous les paquets doivent commencer avec un champ SYNC. SYNChronisation de l'horloge
du récepteur avec celle de l'émetteur. 8 bits (0000 0001) en low et full speed, 32 en high speed.
Les 2 derniers bits indiquent l'endroit où le champ PID commence.
PID : Paquet Identicateur. Un PID consiste en 4 bits suivis des compléments à un de ces 4 bits
an d'eectuer une vérication de ce PID. Le PID indique le type du paquet, son format et
le type d'erreur de détection appliquée au paquet. Si la vérication du PID a échouée ou s'il
n'est pas décodé comme la bonne valeur, le reste du paquet sera ignoré par le récepteur.
ADDR : le champ adresse indique pour quelle appareil est destinée le paquet. Suivant le PID,
la fonction est l'émetteur ou le récepteur. Chaque fonction USB doit répondre à une adresse
unique. Les périphériques répondent à l'adresse 0 lorsqu'ils viennent d'être connectés sur le
bus. Ensuite, c'est l'hôte qui assigne une adresse unique à chacun. Sa longueur de 7 bits lui
permet d'adresser 127 appareils (27=128) puisque l'adresse 0 est réservée lors de l'énumération
(interrogation de tous les périphériques par l'envoi d'un jeton par le host an de connaître
l'ensemble des adresses pour pouvoir attribuer une nouvelle adresse au nouveau périphérique
qui, en retour, s'identie).
FRAME : le champ de trame permet d'identier le numéro de la trame dans laquelle les paquets
sont envoyés. Ce numéro, codé sur 11 bits, est incrémenté à chaque nouvelle création de trame,
c'est à dire toutes les millisecondes. Ce champ, n'existe qu'une fois par trame dans le jeton
SOF.
DATA : Le champ données peut aller de 0 à 1024 bits(128 octets). 8 octets en low speed, 1023 en
full speed, 1024 en high speed.
ENDP : un ajout de 4 bits d'ENDP permet un adressage des fonctions plus exible (dans le cas
où plus d'une sous-voie est utilisée). Les numéros de point d'arrêt sont des fonctions spéci-
ques. Ce champ est déni uniquement pour les PID : IN, SETUP et OUT. Les périphériques
lents supportent au maximum 2 adresses de points d'arrêt (terminaisons) par fonction. Les
périphériques Full Speed acceptent jusqu'à 16 points d'arrêt (codage sur 4 bits).
CRC : Vérication de la redondance des cycles. Ce champ est utilisé pour vérier l'intégrité des
données des paquets. Le PID n'est pas inclus dans la vérication. Tous les CRC sont générés
avant l'insertion des bits de bourrage et sont décodés par les récepteurs après avoir enlevé ces
bits de bourrage. Un CRC défectueux indique que un ou plusieurs des champs protégés est

119
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 8. USB

faux, le récepteur ignore ainsi ce(s) champ(s), voire le paquet entier.


 Pour un PID jeton, le CRC est de 5 bits, il est calculé à partir des champs ADDR et ENDP.
Le polynôme générateur est : G(X) = X 5 + X 2 + 1. Si tous les bits sont reçus sans erreur,
le CRC au niveau du récepteur est : 01100.
 Pour un PID FRAME, le CRC est de 5 bits, calculé à partir des 11 bits du champ FRAME.
 Pour un PID DATA, le CRC est composé de 16 bits, calculé à partir du champ données. Le
polynôme générateur est : G(X) = X 16 + X 15 + X 2 + 1. Si tous les bits de données et de
CRC sont reçus sans erreur, le CRC est 1000000000001101.

groupe valeur PID type de paquet


0001 OUT : informe le device que le host veut émettre
token 1001 IN : informe le device que le host veut recevoir
(jeton) 0101 SOF (Start Of Frame) : début de tableau
1101 SETUP : conguration, début des transferts commande
0011 DATA 0 : low speed, 8 octets
Data 1011 DATA 1 : full speed, 64 octest
(Données) 0111 DATA 2 : high speed,1024 max
1111 MDATA : high speed,1024 max
0010 ACK (ACKnowledge) : validation, accusé réception
Handshake 1010 NAK (No AcKnowledge) : le périphérique ne peut accepter
(envoyer) les données sur Rx (Tx).
(Status) 1110 STALL : bloqué
0110 NYET (No response YET) : pas encore de réponse
Special 0000 PREamble : synchroniseur initial

tableau 8.1: Valeurs des PID (USB)

8.3.6 Détection d'erreurs


Le bus USB étant bien plus évolué que les bus précédemment cités, la détection derreur ne se
fait pas par un système de contrôle de parité mais utilise le CRC (Code de Redondance Cyclique,
qui permet de corriger parfaitement 100% de mots contenant 1 ou 2 erreurs). De plus, le contrôleur
peut réinitialiser jusquà 3 fois de manière hardware la liaison avec un autre élément avant den
avertir le logiciel client. Il y a plusieurs catégories d'erreurs :
 erreurs de paquets :
 erreur de PID
 erreur de bit stu (violation bit de bourrage)
 erreur de CRC
 Data toggle
 Time Out
 babling
 LOA (Loss Of Activity)
Toute détection d'erreur se traduit par une non réponse de la part du périphérique (Time Out).

120
La spécification du Bus Série Universel définit 4 types
rts
de ou
transfe
de terminaisons,

• Transferts de commande CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17


• Transferts d'interruption 8.4. Types de transferts (terminaisons)
• Transferts Isochrone
• Transferts en Bloc (BULK)
• Gestion de la bande
champ passante. type d'erreur action requise
PID vérication du PID erronée, pb de bit stung paquet ignoré
ADDR
nsferts de commande CRC d'adresse incorrect, pb de bit stung jeton ignoré
FRAME Number CRC de frame incorrect, pb de bit stung champ frame ignoré
DATA CRC de données incorrect, pb de bit stung données ignorées
s Transfertse dcommande sont régulièrement utilisés pour les opérations de command
état. Ils sont essentiels pourtableau 8.2: Erreur un
installer des paquets
appareil USB USB avec toutes les fonction
i seront exécutés en utilisant les Transferts de commande. Il surviennent ement général
en
quets directs et par rafales qui sont initiés par l'hôte et utilisent le meilleur
vraison. La longueur du paquet du Transfert de commande pour appareil basse vites
8 octets, les appareils pleine vitesse autorise tailleune de paquet de 8, 16, 32 ou 64 oc
s appareils haute vitesse doivent avoir une taille de paquet de 64 octets.

Transfert de commande peut avoir plus de 3 étapes.


8.4 Types de transferts (terminaisons)
• L'étape d'installation se passe lorsqu'une demande est envoyée. Elle est posée
comde
3 paquets. Le jeton (token) d'installation envoyé le premier est celui qui co
et le 8.4.1
numéroControl
de laTransfers
terminaison. Le paquet de données est envoyé aprés et a to
type PID de Data0 et inclutpaquet un d'installation qui détaille le type de la deman
Nous détaillerons le paquet d'installation plus tard. Le dernier paquet est u
Il est constitué
mains utilisé pourdevalider
plusieurs étapes. Chaque étape
la bonne (ou transaction)
réception ou pourest composée
indiquerde 3 paquets
Si
unelaerreur.
fonction
(TDH : Token, Data, Handshake). Il est utilisé principalement pour les opérations d'initialisations
reçoitetcorrectement
de congurations.
la donnée d'installation ( CRC et PID etc...Ok) elle répo
sinon elle ignore la donnée et n'envoie pas un paquet de poignée de mains. Le
ne peuvent pasd'installation
 l'étape émettre : un paquet STALL ou NAK en réponse paquet à un d'installatio

gure 8.17: Transfert de commande : transaction d'installation

L'étape de donées facultative consiste en un ou plusieurs transferts IN (Entrée) ou O


(sorties). La demande d'installation indique la quantité de données qui doit
dans cette l'étape de données
étape. (facultative)
Si elle :
dépasse la taille maximale du paquet, les données s
envoyées en plusieurs transferts, chacune ayant ngueur
la lo
maximale du paquet à
121
l'exception du dernier paquet.
que le PID ne correspond pas avec les bits inversés du PID, il ignore
paquet. Si le jeton est reçu correctement, l'appareil peut soit répond
paquet de données contenant les données de commande à envoyer, soit un pa
CM_InfoIndus:version
"d'arrêt" du mardi 29 novembre
signalant que la 2005 terminaison
à 2 h 17 a eu une erreur soit un pacquet
Chapitre 8. USB
signalant à l'hôte que la terminaison fonctionne, mais provisoirement
données à envoyer.

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.

IN (Entrée): Si l'hôte envoie un (ou des) jeton(s) IN pendant l'étape de


recevoir des données, alors l'hôte doit valider la bonne réception de ces
Transferts de Commande: Le coeur du problème.
est réalisé par l'hôte qui envoie un jetoniOUT parsuiv
un apquet de données de
longueur nul. La fonction peut maintenant rendre compte de son état dans
poignée de mains. Un ACK indique que la fonction a achevé la commande et
est maintenant prête à accepter une autre commande. Si une r s'est
erreu produite
Maintenant,
pendantvoyons comment tout
l'exécution cela s'accorde?
de cette Supposons
commande, alors par exemple
la fonction que l'hôte
émettra veu
un STALL
demander un descripteur d'appareil pendant l'énumération. Les paquets qui sont envoy
Toutefois si la fonction continue l'exécution, elle retourne un NAK indiq
nécessité de répéter l'étape d'état ultérieurement.
les suivant
s:

L'hôte enverra un jeton gure d'installation


8.19: Transfert dedisant
commandeà : transaction
la fonction d'état que le paquet suivant es
ER o OUT
d'installation.
Bernard CHAP (Sortie):Si
Le4 champ adresse l'hôte
Pagefixeraenvoie
2/8 un (ou des)
l'adresse jeton(s) OUT
de l'appareil pendant
l'hôtel'étape
à14/06/02
qui a deman
Caractéristiques
descripteur.données
Le numéro :
pourdetransme ttre des données,
la terminaison devrait la êtrefonction
uniquant
zéro, validera
une la défectueuse
ind ligne bonne récep
 Message Stream.
L'hôte enverra alorsenunenvoyant
données
 Conguration, paquet
status, DATA0.
set up -ci
undespaquetCeluiaura 8 octetsnul
de longueur
périphériques. de en "charge utile"
réponse à un (payload)
jeton IN.
correspondant à la
ToutefoisDemande
 taille des paquetsde: 8,Descripteur
si une erreur
16, d'Appareil
intervenait,
32, 64 octets (Full comme
Speed) cela
et souligné
déboucherait
8 octets auchapitre
(Low Speed). sur un9 STALL
de la ou s
spécification  Protocole
fonction overhead
USB. Laétait fonction: 45 octets
encore USBoccupé
annoncera alors
à traiter que do
nnées,
les le
cela paquet d'installation
déboucherait sur un aNAK
ét
correctement et sans aucune
demandant
122 à l'hôte erreur. Si le paquet
de retenter l'étapeétait d'état reçu altéré, l'appareil ignor
ultérieurement.
simplement ce paquet. L'hôte renverra alors le après paquetun court délai.
Les Transferts en Bloc peuvent être utilisés pour de grandes quantités de données sporadiq
De tels exemples pourraient inclure un travail d'impression envoyé rimante
à une imp ou une
CM_InfoIndus:
image provenant d'un scanner. Les Transferts en Blocversion du mardi 29 novembrede
se prémunissent 2005correction
à 2 h 17 d'erreu
8.4. Types de transferts (terminaisons)
sous la forme d'un champ CRC16 sur les données " charge utile " et sur les mécanismes de
détection et de retransmission d'erreurs qui assuresmission
la tran et la réception de données de
manière infaillible.

Les Transferts en Bloc


Le caractère utiliseront
Plug une par
and Play est assuré bande passante
une phase de réserve
de reconnaissance et de non attribuée
conguration auto- sur le Bus
que toutes les autres transactions aient été allouées. Si le Bus est occupé avec de l'Isoc
matique des périphériques connectés au bus. En fait, le host détecte tout périphérique nouvellement
et/ou de l'interruption, les données en bloc peuvent alors s'écouler doucement sur le Bus.
branché,
conséquence, lesl'interroge
transfertsà l'aideen
de transferts de contrôle pour
bloc devraient connaîtreêtre
seulement ses caractéristiques
utilisés pour et choisit
desen communicati
conséquence le driver adéquat pour le contrôler. De même,
insensibles au temps du fait de la non garantie du temps d'attente. toute déconnection est automatiquement
détectée (en hard) par le hub concerné qui le signale alors au host an que celuici en tienne compte.
Le s Transferts en Bloc.

• Utilisés pour de grandes quantité de données sporadiques.


• Détection d'erreurs via le CRC, avec la garantie de livraison.
• Pas de garantie de bande passante ou du temps d'attente minimum.
• Des flux de données
- Unidirectionnel.
• Seulemen t des modes pleine et haute vitesse.

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.

gure 8.20: Transfert en vrac


Le diagramme ci
-dessus montre le format d'une transaction en Bloc IN et OUT.

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é.

• La taille maximale de "charge utile" (payload) pour eils des appar


basse vitesse est de 8
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
octets
• Chapitre
La taille 8. maximale
USB de "charge utile" (payload) pour des appareils pleine vitesse est
octets
• La taille maximale de "charge utile" (payload)pour des appareils haute vitesse est de
1024 octets
8.4.3 Interrupts Transfers

gure 8.21: Transfert par interruption


Le diagramme ci-dessus montre le format d'une transaction d'interruption d'entrée IN et
Caractéristiques
d'interruption de
ortie
s :
OUT.
 Pipe Stream.
IN: L'hôte interrogera
Message court (petite quantité de données)
périodiquement émis de temps
la terminaison en temps (pas de réelles
d'interruption. interrup-
Le taux d'interrogatio
spécifié dans descripteur
le plutôt un polling
tions, de terminaison
fréquent). qui sera examiné plus tard. aque
Ch interrogation
obligera l'hôte à envoyer un jeton IN. Si le jeton IN est altéré, la fonction ignore le paq
 Taille des paquets : < 64 octets (Full Speed) et < 8 octets (Low Speed).
continue la surveillance du Bus pour de nouveaux jetons.
 Transmission en Best Eort.
 Protocole overhead : 13 octets.
Si une interruption a été mise en attente par l'appareil, la fonctionpaquet
enverra
Data un
contenant des données ayant rapport à l'interruption quand il recevra le jeton IN. Sur des
8.4.4au Isochronous
réceptions Transfers
niveau de l'hôte,
-ci
celui
retournera un ACK. Toutefois si les données sont altérées
l'hôte ne mentionnera aucun état. Si, d'autre nepart,
condition
u d'interruption n'était pas

IN DATAx
ACQUIER Bernard CHAP 4 Page 5/8 14/06/02

OUT DATAx

Token Packet Data Packet

gure 8.22: Transfert isochrone

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

 Protocole overhead : 9 octets.


Les échanges isochrones sont les plus privilégiées dans le sens où le host leur réserve une bande
passante garantie. Ainsi, celui-ci peut refuser l'accès au bus à un périphérique s'il juge que les
ressources qu'il requiert ne sont pas disponibles.

Type Transfert Control Isochronous Interrupt Bulk


Mode Message Stream Stream Stream
(format data) (prédéni) (pas prédéni) (pas prédéni) (pas prédéni)
Direction bidirectionnelle Unidirectionnelle Unidirectionnelle Unidirectionnelle
Taille max Data 8,16,32,64 o (Full) 1023 o 64 o (Full) 8,16,32,64 o (Full)
(par trame) 8 o (Low) (Full) 8 o (Low)
ACK\ Reprise sur Erreur oui non oui oui
Bande réservée 10% de la trame 90% de la trame non
best eort guaranteed good eort

tableau 8.3: Caractéristiques principales des types de transferts USB

8.5 Enumération et Descripteurs USB


8.5.1 Enumération
Dénition 8.1 (énumération). Le terme  énumération  désigne un processus USB par lequel le
système identie et congure le périphérique en lui donnant une adresse unique. C'est une gestion
dynamique de la connexion et de la déconnexion des périphériques reliés à un bus USB. ■
Lors de la connexion (ou déconnexion) il y a une phase de détection et une phase d'identication
eectuée par l'hôte qu'on appelle énumération. Lors de cette phase, le périphérique fournit à l'hôte
une suite de descripteurs qui permettent son identication complète. Lors de cette phase d'énumé-
ration, on assigne une adresse unique (Unique ID) au périphérique, on charge le driver correspondant
et on positionne le composant dans la conguration qui lui à été donné par les descripteurs.
Lors de l'énumération initiale (à la mise sous tension du PC) les HUBs et périphériques sont
initialisés de proche en proche. Ainsi le HUB racine signale qu'il possède des périphériques non
initialisése sur ses ports A et B. L'hôte initialise alors une liaison occupée et la place dans sa liste
de scrutation, puis passe à la liaison suivante. Puis c'est au tour du deuxième HUB. L'hôte va donc
initialiser successivement les liaisons occupées et va les placer dans sa liste de scrutation. Puis on
passera au HUB suivant s'il y en a un, etc. Jusqu'à ce que tous les périphériques connectés aient
été initialisés.

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.

Les descripteurs standards sont regroupés en plusieurs catégories :

1. Device descriptor (descripteur d'appareils)


2. Conguration descriptor (descripteur de conguration)
3. Interface descriptor (descripteur d'interface)
4. Endpoint descriptor (descripteur de terminaison)

gure 8.23: Hierarchie des descripteurs USB

Par la suite, d'autres descripteurs ont vu le jour :


 String descriptor (VID)
 Device Qualier descriptor (idem Device pour Full & High speed)
 Other Speed Conguration descriptor (Full & High speed)
 Interface Power descriptor (gestion d'énergie, USB 2)
126
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
8.6. Sur votre PC. . .

8.6 Sur votre PC. . .

gure 8.24: Contrôleur et Hub USB sur votre PC

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

9.1.1 FireWire ? IEEE 1394 ? i-Link ?


 IEEE 1394-1995 Standard for a High Performance Serial Bus est le nom de la norme originale
(création 1995).
 FireWire est l'implantation Mac (Apple Computer, Inc.) de l'IEEE 1394. P1394.x désigne un
câble à 4 conducteurs (6 conducteurs composent le câble normalement, les 2 conducteurs de
lalimentation sont supprimés).
 DigitalLink, ou i-Link (Sony Corporation) : produits Digital Handycam

9.1.2 Avantages de L'IEEE 1394


On peut citer :
 Interface numérique : pas de CAN dégradante pour les données.
 Taille réduite : câble n et peu coûteux.
 Utilisation très facile, Hot Plug and Play.
 Taux de transfert importants, bus supportant des périphériques mixtes ayant une vitesse de
transmission de 100, 200 ou 400 Mbits/s.

128
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
9.2. Architecture

 Topologie exible : support du Daisy Chaining (marguerite).


SLLA067  Garantie de bande passante pour tous les périphériques raccordés.

Applicability and Typical Application for IEEE 1394


9.1.3 Utilisation
The transmission of data without burdening the host unit creates a huge market for IEEE1394.
Grâcedoes
Not only à sesthe
performances, lIEEE-1394
computer-based est destinée
equipment particulièrement
in private householdsà require
relier : an interface solution
 Les
for the ordinateurs.
home and home office network, but also the evolving markets of digital broadcasts,
 Les produits
interactive services,manipulant
games, and de laudio, des imagesrequires
home shopping et de la vidéo.
a high speed network. The
 Les imprimantes
introduction et les
of digital set topscanners.
boxes, which enable the reception of these services, enables the
capability
 Les to transmit
disques durs.digital data not only to consumer devices like digital TV, but also to PC and
storage media. Beside the consumer,
 Les caméscopes (connecteurs 1394aPC, and
2000 PC peripheral
appelés mini DV).markets, many industrial
applications can be covered by IEEE1394.

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.2 Un bus standard ?


En 1995, L'IEEE adopte nalement le Serial Bus comme standard (IEEE13941995, Standard
for a High Performance Serial Bus, interface numérique de référence sur les équipements audio-
vidéo grand public). De nombreux produits IEEE 1394 sont disponibles sur le marché (caméras,
câbles et connecteurs Molex, boîtiers TI, cartes d'interface Adaptec, imprimantes, scanners). La
version appelée 1394b bilingual (bilingue) garantit la compatibilité avec lancienne norme IEEE
1394-1995.

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).

gure 9.2: Exemple de connecteur Firewire 6 broches

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

gure 9.3: Topologie logique de l'IEEE 1394

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).

9.3 Fonctionnement du bus FireWire

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.

9.3.1 Caractéristiques principales


 codage NRZ, connexion peer - to - peer (Host non obligatoire) favorisant l'utilisation en réseau,
 adressage : se fait grâce à un identicateur de noeud (c'est-à-dire de périphérique) codé sur
16 bits. Cet identicateur est scindé en deux champs : un champ de 10 bits permettant de
désigner le pont (système permettant de relier plusieurs bus entre eux) et un champ de 6 bits
spéciant le noeud. Il est donc possible de relier 1023 ponts (soit 210 − 1), sur chacun desquels
il peut y avoir 63 noeuds (soit 26 − 1), il est ainsi possible d'adresser 65535 périphériques !
 architecture R/W en mémoire (diérent du classique I/O) : utilisation d'une technologie de
transmission de données par paquets qui est organisée comme si c'était un espace mémoire
interconnecté avec plusieurs appareils,
 la communication (un cycle nominal = 125 µ s, soit 8000 cycles/s) se décompose en une
suite de 3 composition de paquets (1 paquet start, des paquets isochrones et des paquets
asynchrones) séparés par des intervalles de temps (arbitration gap) :

131
Philips Semiconductors

CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17


Chapitre 9. IEEE-1394
1394 Bus Cycles

Cycle Start
Cycle Start

Packet
Packet
Isochronous Asynchronous
Packets Packets

0 Time

PS - XXX.XX.XX-11
Arbitration
Gaps

gure 9.4: Cycle nominal du bus IEEE 1394

 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 :

gure 9.5: Détails de la trame

 émission / réception par paquets de données de 280 octets maximum (Header = 20 octets
+Payload = 256 octets + CRC = 4 octets),

gure 9.6: Contenu des paquets asynchrone et isochrone

 détection automatique de la vitesse des échanges.


 envoi des données avec une vitesse compatible au récepteur.
 n÷uds : réception sur un port, émission sur plusieurs ports possibles,
 pendant la transmission chaque n÷ud (périphérique) peut accéder au bus → communication
half-duplex,
 2 modes :
 diérentiel : pour reset, arbitrage, conguration, transmission paquets.
 commun : pour détection d'attachement/détachement de périphérique, commande du si-
gnal de vitesse, et du signal de suspension / reprise de transmission sur le bus.

132
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
9.4. Un protocole, trois couches

 séquence émission : ARBitrage / Prexe-Data Payload-End / Liberation Bus,


 séquence réception : Data reçue (sur couche physique) puis envoyée à couche liaison.

9.4 Un protocole, trois couches

La norme IEEE 1394 s'appuie sur le modèle OSI et spécie trois couches :

1. couche physique (couche 1 OSI)


2. couche liaison (couche 2 OSI)
3. couche transaction (couche 3 OSI). Cette couche fait oce d'interface entre la couche appli-
cation et la couche liaison pour le mode asynchrone.
IEEE 1394 protocol Stack
Configuration &
Error Control Read, Write, Lock
Isochronous
Channels
Transaction Layer
Serial Bus Management

Packets

Link Layer
Cycle Control Packet Transmitter Packet Receiver

Symbols

Physical Layer
Encode/Decode Arbitration Media Interface

Firmware Electrical Signals


& Mechanical Interface
Hardware

gure 9.7: Architecture en couche


©1998 Zayante, Inc. Michael Johas Teener/1394 Technical Summary Slide 12
Permission to copy gra nte d as lo ng a s this notification is retained, some text and figure s ba sed on 5/96 1394 Technical Summary from Apple Computer

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

gure 9.8: Transaction asynchrone)

2. Mode isochrone : Le mode de transfert isochrone 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. Les communications isochrones sont prioritaires aux asynchrones (de sorte que la
bande passante est assurée). La communication isochrone entre deux appareils ou plus est
assimilable à un canal (PIPE). Une fois un canal établit, lappareil demandeur est garanti
davoir l'espace-temps demandé à chaque cycle (données vidéo ou autres besoins temps
réel).

gure 9.9: Transaction isochrone)

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 :

1. repeater : simples couches physique actives,


2. transaction capable : transfert de données en asynchrone,
3. isochronous capable : supportant le transfert isochrone (obligatoire pour tout type d'échange
isochrone),
4. cycle master capable : chef d'orchestre pour l'arbitrage,
5. isochronous ressource manager capable : capables de gérer les numéros de canaux iso-
chrones et leur taille,
6. bus manager capable : gestion de la téléalimentation, optimisation de la vitesse et de la
topologie (ce n÷ud n'est pas indispensable).

134
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
9.5. Une couche physique optimisée

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.

9.6 Un arbitrage ecace et juste

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

gure 9.10: Intervalles pour l'arbitrage (mode isochrone)

9.7 Plug and Play et Hot Plugging ?


Au démarrage ou à la suite d'un changement de conguration, le réseau se (re)congure de façon
automatique en lançant trois phases successives :
1. la phase de bus initialize (initialisation et reset du bus),
2. la phase de tree identity (identication au sein d'une topologie en arbre),
3. la phase de self identity (identication personnelle du périphérique).
Lors de la première étape, le premier n÷ud qui détecte un changement génère le signal de
signalisation reset qui force tous les n÷uds du réseau à oublier la topologie courante et à identier
leur nature (feuille ou branche).
Lors de la seconde étape, chaque n÷ud se numérote et se positionne dans la hiérarchie arbores-
cente (son unique port parent pointe vers la racine, ses autres ports sont des ports enfants) à l'aide
de signaux de signalisation. A l'issue de cette étape, le n÷ud racine se reconnaît car il est le seul
(par construction) à ne posséder que des ports enfants.
Au cours de la self identity, les n÷uds choisissent leur adresse réseau, diusent les débits qu'ils
supportent, proposent éventuellement leur candidature à tel ou tel rôle de manager. A l'issue de
cette phase, l'isochronous ressource manager (s'il existe) a été identié et le cycle master (la racine)
a été activé. La communication peut alors débuter.

9.8 IEEE 1394 b, des améliorations . . .


 appelé Firewire 2 ou Gigawire,
 Vitesses : 1.6-3.2 Gbit/s, grandes distances : 50-70-100 mètres (UTP5) ou 800 m (Fibre Op-
tique),
 Low Power : possibilité faible puissance (1.5A = maximum) → économies d'énergie,
 Arbitrage amélioré :
 suppression du subaction gap une fois un cycle démarré → transmission plus rapide,
 arbitration Fly-By pour éviter les collisions DATA/ACK suite à la modication précé-
dente,
 Priority arbitration : pipelining → le premier demandeur est le maître.

136
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
9.9. Annexes

9.9 Annexes

gure 9.11: Split transaction

gure 9.12: Concatenation transaction

gure 9.13: Unied transaction

137
Chapitre 10

Acquisition de Données - Temps Réel

Sommaire

10.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138


10.2 Structure générale d'un système de mesure . . . . . . . . . . . . . . . . . 139
10.3 Généralités sur les cartes E/S . . . . . . . . . . . . . . . . . . . . . . . . . 141
10.4 Etude sommaire d'une carte d'acquisition . . . . . . . . . . . . . . . . . . 141
10.5 Annexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
10.6 Tableau récapitulatif des adresses de la carte Impulsion . . . . . . . . 149
10.7 Registres du Timer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150

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

gure 10.1: Exemple de système d'acquisition de données

10.2 Structure générale d'un système de mesure


10.2.1 Les Capteurs
Les capteurs sont un des éléments de n de chaîne d'acquisition de données. Ils sont sensibles
aux phénomènes physiques ou chimiques. Leur rôle consiste à produire un signal électrique, le
plus souvent une tension analogique, mais aussi parfois une intensité, une fréquence ou une série
de pulsations. Ces signaux sont liés au milieu dans lequel ils sont placés ou au phénomène qu'ils
doivent détecter. Leurs caractéristiques importantes sont le domaine d'utilisation, la sélectivité, la
sensibilité, la dérive et la reproductibilité, l'encombrement, la abilité, le coût, etc...
Problèmes d'utilisation : perturbation du phénomène mesuré, niveau de signal, problèmes dus
aux parasites lors de la transmission de leurs signaux, non-linéarité de la réponse...

10.2.2 Le conditionnement du signal


Les signaux issus du capteur ne sont pas toujours directement utilisables par le dispositif de
CNA. Par exemple, les cartes de conversion les plus répandues ont un calibre d'entrée de 0 - 10
volts, avec une résistance de quelques centaines de kW . Souvent, il faudra :
 Amplier les signaux,
 Adapter leur impédance,
 Décaler leur origine de manière à exploiter au mieux l'amplitude acceptée par l'organe de
mesure électrique,
 Transformer des courants ou des fréquences en tensions,
 Filtrer pour éliminer des interférences, peut-être aussi linéariser de manière à obtenir un signal
proportionnel à la grandeur étudiée.
Lorsque la distance entre le capteur et le système convertisseur analogique-numérique est grande,
on a intérêt à transmettre un signal amplié, à relativement basse impédance, et éventuellement
symétrique, pour diminuer l'importance relative des tensions parasites ajoutées le long des câbles
de liaison. C'est un autre rôle du conditionnement du signal.

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.

10.2.4 La Conversion (CNA et CAN)


La conversion analogique-numérique transforme les valeurs de signaux électriques continûment
variables (signaux analogiques) en nombres exploitables par l'ordinateur de manière numérique.
Cette conversion est parfois eectuée dans des appareils externes (l'exemple le plus classique
étant le multimètre). Ces appareils externes envoient à l'ordinateur le résultat numérique obtenu
par divers systèmes de communication, les plus répandus étant la liaison RS 232 ou le système de bus
IEEE 488. On peut aussi dans certains cas utiliser la liaison parallèle prévue pour une imprimante.
Les liaisons RS 232 et les connexions d'imprimante sont très généralement prévues d'origine dans
les PC, mais par contre les liaisons IEEE doivent être eectuées à travers d'une carte d'interface
ajoutée. D'autres systèmes seraient possibles, par exemple au moyen de cartes d'interfaces SCSI,
Ethernet ou USB.
De plus en plus, on incorpore le dispositif de conversion à l'ordinateur lui-même, sous forme d'une
carte d'extension qui comporte un ensemble d'entrées-sorties numériques, de compteurs, etc . . .
On évite cependant d'incorporer dans l'ordinateur des cartes de mesure lorsqu'on cherche une
très grande immunité vis-à-vis du bruit de fond, car le PC est un puissant générateur de parasites . . .

10.2.5 Le Logiciel d'Acquisition et de Traitement


Le logiciel d'acquisition gère le multiplexage éventuel, le protocole de communication avec l'ap-
pareil de mesure, les changements de calibre s'il y a lieu, ou les diverses étapes de la conversion si
l'on a recours à une carte incorporée.
Les données récupérées sous forme de chaîne de caractères ou d'octets sont ensuite mises en forme
et transformées en valeurs numériques, éventuellement traitées de manière élémentaire. Le logiciel
peut contrôler un dispositif expérimental, au moyen de sorties numériques ou même analogiques.

10.2.6 Les Timer


Objectif : Lorsque l'on doit eectuer des mesures selon des intervalles de temps dénis, plusieurs
méthodes existent :
 introduire des boucles d'attente par programmation,
 utiliser l'horloge interne du PC.

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.

10.3 Généralités sur les cartes E/S


Une carte E/S est considérée comme un périphérique externe.
Une carte E/S permet un dialogue entre le PC et l'extérieur. En particulier, elle :
 réalise l'acquisition de signaux analogiques,
 élabore des signaux analogiques à partir du PC,
 assure des échanges bidirectionnels de signaux logiques avec l'extérieur,
 dispose d'une base de temps (compteur) qui lui est propre,
Une carte E/S est constituée de :
 Convertisseur Analogique - Numérique (CAN) : extérieur → PC,
 Convertisseur Numérique - Analogique (CNA) : PC → extérieur,
 Circuits d'Entrée-Sortie logiques,
 Circuits qui gèrent la base de temps (timer).
Les opérations de lecture et d'écriture se font en accédant dans les mémoires des composants
(registres). Chacun de ces registres doit posséder sa propre adresse pour éviter les conits d'adresses.
La détermination de ces adresses se fait à partir de l'adresse de base (adresse de référence) de la
carte E/S.

10.4 Etude sommaire d'une carte d'acquisition


10.4.1 Introduction
La carte d'interface est considérée par le PC comme un périphérique supplémentaire. Cette carte
est dotée de composants électroniques possédant des mémoires appelées dans ce cas registres dans
lesquels on ira lire ou écrire des données. Comme toute mémoire, on accède à un registre en le
sélectionnant par le bus d'adresse et son contenu est modié (écriture) ou lu par l'intermédiaire
du bus de données. La carte proposée occupe deux groupes d'adresses 16 bits sélectionnables par
l'utilisateur au moyen de cavaliers. Le constructeur permet de choisir au préalable deux adresses
dites de base à partir desquelles sont dénies l'ensemble des adresses des diérents registres de la
carte. Ces adresses de base sont xées à des valeurs non encore utilisées par le PC.

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.

gure 10.2: Architecture sommaire d'une carte d'acquisition

10.4.2.1 Le Convertisseur Numérique Analogique AD 7537


Il convertit une valeur (numérique) en une tension analogique (continue).

gure 10.3: Schéma de principe d'un CNA

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.

gure 10.4: Le CNA MX7537

Toute conversion se fait en 2 étapes :


1. chargement dans 2 registres d'entrée A ou B (2 adresses diérentes).
2. lancement de la conversion (ce qui revient à charger le registre du DAC) en agissant sur la
broche 19 (U P D ) qu'il faut forcer à l'état bas.
La formule générale pour le calcul de conversion de la tension analogique délivrée en sortie est
donné par (N = nombre de bits du registre, Nb = valeur numérique à convertir) :

Nb
Vsortie = Vref
2N −1

L'erreur de quantication est donnée par le LSB :

1
Vmin = 10 = 2, 44mV
212 − 1

5 adresses sont susantes pour gérer le CNA 7537 :


 2 adresses pour les registres du DAC A.
 2 adresses pour les registres du DAC B.
 1 adresse pour activer U P D.
Les 2 registres d'entrée ne sont validés qu'en écriture et U P D est activé par l'intermédiaire
d'un décodeur d'adresse. C'est donc l'adresse (et non la donnée) et le mode d'adressage qui
importent !

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

tableau 10.1: registres du CNA (MX 7537)

143
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Chapitre 10. Acquisition de Données - Temps Réel

10.4.2.2 Le Convertisseur Analogique Numérique AD574


Il réalise l'opération inverse du CNA : l'acquisition d'un signal analogique. Il convertit une
tension analogique en un mot (numérique) de N bits.

gure 10.5: Schéma de principe d'un CAN

Le circuit intégré réalisant cette fonction est l'AD574 et contient un seul convertisseur dans son
boîtier. AD574A

+5V SUPPLY STATUS


VLOGIC 1 28
STS
DATA MODE SELECT MSB DB11
2 27
12/8 N MSB
CHIP SELECT 3 CONTROL I 26 DB10
CS B
3 B
BYTE ADDRESS/
SHORT CYCLE 4 L 25 DB9
S E
AO T
READ/CONVERT 5 CLOCK SAR 12 A A 24 DB8
R/C T
CHIP ENABLE 6 E 23 DB7
3k N
CE I
O
+12/+15V SUPPLY 7 U B 22 DB6 DIGITAL
VCC B
COMP 12 T
L DATA
+10V REFERENCE 8 10V P 21 DB5
IDAC U E OUTPUTS
REF OUT REF
IDAC = T B
ANALOG COMMON 9 20 DB4
AC 4 x N x IREF B
REFERENCE INPUT 10 U N
F 19 DB3
REF IN 19.95k IREF 8k I
F B
-12/-15V SUPPLY 11 E B 18 DB2
VEE R
9.95k L
BIPOLAR OFFSET 12 S E 17 DB1
BIP OFF
5k DAC N VEE C
10V SPAN INPUT DB0
10VIN 13 LSB 16 LSB
5k
20V SPAN INPUT 14
AD574A 12 15 DIGITAL COMMON
20VIN DC

AD574A Block Diagram and Pin Configuration

gure 10.6: Le CAN AD574


ABSOLUTE MAXIMUM RATINGS*
(Specifications apply to all grades, except where noted)
La conversion analogique
VCC to Digital Common . . . . . . .numérique
. . . . . . . . . . . 0 V se feraV enChip
to +16.5 trois étapes. . :. . . . . . . . . . . . . . . . . . . . . . . . . . .
Temperature 175°C
V to Digital Common . . . . . . . . . . . . . . . . . . . 0 V to –16.5 V Power Dissipation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 825 mW
1. déclenchement
EE
de la. .conversion
VLOGIC to Digital Common . . . . . . . . . . . . . . par
. . 0 V une
to +7 Vopération
Lead Temperature de lecture(Soldering, d'un10 sec). registre
. . . . . . . . . . .(situé
. +300°C à l'adresse
adconv ).
Analog Common to Digital Common . . . . . . . . . . . . . . . ± 1 V Storage Temperature (Ceramic) . . . . . . . . . . –65°C to +150°C
Control Inputs (CE, CS, AO 12/8, R/C) to
2. attente de la n de conversion ( ≈
Digital Common . . . . . . . . . . . . . . –0.5 V to VLOGIC + 0.5 V
25µs ). L'indicateur de n de conversion est le bit busy du
(Plastic) . . . . . . . . . . . . . . . . . . . . . . . . . . . –25°C to +100°C
*Stresses above those listed under “Absolute Maximum Ratings” may cause
registre situé(REF
Analog Inputs IN, BIP OFF, adh
à l'adresse 10 VIN.) to Tant que la conversion permanent damageen cours,
to busy
the device. This reste
is a stress rating à onlyl'état logique haut.
and functional
operation of the device at these or any other conditions above those indicated in the
3. lecture du résultat en 2 fois. On utilisera
Analog Common . . . . . . . . . . . . . . . . . . . . . . . . .VEE to VCC
20 VIN to Analog Common . . . . . . . . . . . . . . . . . . . . . . ±24 V
2 registres (accessibles
operational sections of this specification is uniquement
not implied. Exposure toen lecture) aux
absolute

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)

tableau 10.2: registres du CAN (AD 574)

Protocole pour le lancement d'une acquisition :

1. choix de la polarité et du numéro de la voie d'acquisition,


2. action sur adconv par une opération de lecture et test de busy ,
3. lecture de la conversion en 2 fois (adh et adl ).

Pour la carte utilisée, Vref = 10, 24 Volts, ce qui assure un LSB à exactement 25mV .

10.4.3 Etude du Timer 8254

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

Figure 1. 82C54 Block Diagram


231244–2

gure 10.7: Architecture du timer 8254 Diagrams are for pin reference only.
Package sizes are not to scale.

Figure 2. 82C54 Pinout


10.4.3.1 Fonctionnement
Pour commencer, il faut charger le registre d'entrée avec un nombre de son choix (0 à 65535). Le
front de l'horloge suivant provoque le transfert de ce nombre dans le registre de comptage où
October 1994
il sera
Order Number: 231244-006

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.

gure 10.8: Etapes du 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

10.4.3.2 Architecture interne


Le 8254 possède une architecture  classique  mais avec 3 compteurs 16 bits indépendants nom-
mée timer0, timer1 et timer2 :
• Registre d'entrée : chaque compteur possède son propre registre d'entrée 16 bits séparé en
deux octets (MSByte-LSByte). Le registre est accessible en écriture adresses count0 (resp.
count1, count2 ) pour le timer0 (resp. timer1, timer2 ). Il y a donc 3 registres d'entrée.
Le bus (interne) de données étant de 8 bits, il faut donc écrire dans ce registre d'entrée en 2
fois : la 1ère écriture se fait dans le LSB et la 2ème dans le MSB (cela est rendu possible par
une logique interne).
• Registre de contrôle : on devrait avoir trois registres de contrôle correspondant à chacun des 3
compteurs. En réalité, les trois registres sont multiplexés à l'intérieur du boîtier et l'aiguillage
est assuré par les deux bits de poids fort de ce registre situé à l'adresse timcw (timer control
word). Avantage : on n'a besoin que d'une seule adresse pour les 3 timers. Les autres bits du
mot de contrôle servent à dénir le mode de fonctionnement du compteur sélectionné. Pour
ce boîtier, il y a six modes disponibles :
Mode 0 : mode monocoup (hard). Interruption en n de comptage (0 représente le compte
terminal). Une action sur la gachette (gate à 1) autorise le décomptage, un zéro pro-
voque une pause.
Mode 1 : monostable réarmable monocoup (ou pulsation de longueur variable hard). Un
front montant sur la gachette provoque le décompte. Une nouvelle action sur la gachette
relance à partir de la valeur du précompte.
Mode 2 : oscillateur diviseur par N (générateur de tops hard). Le décompte est initié par
un front montant sur la gachette. La sortie (initialement à 1) passe à 0 le temps d'une
période d'horloge lorsque le décompte passe de 1 à 0. Ensuite on recommence jusqu'au
prochain → tops à intervalles réguliers.
Mode 3 : générateur de signaux carrés. Identique au mode 2 sauf que la sortie est à 1
pendant le décomptage de N (valeur du précompte) à N/2 puis à 0 de N/2 à 0.
Mode 4 : générateur d'impulsions synchronisé par programme (soft). La gachette est ini-
tialement activée (à 1). Le décompte se déclenche dès chargement du précompte. La sortie
passe à 0 pendant une période d'horloge puis on recommence à partir de la valeur du
précompte. Un changement logiciel de la valeur du précompte relance un nouveau cycle.
La mise à 0 de la gachette permet de geler le décomptage.
Mode 5 : générateur d'impulsions synchronisé par gate (hard). Identique au mode 4 sauf
que c'est l'action sur la gachette qui permet de déclencher le décomptage.
• Registre d'état : outre l'accès aux registres de contrôle des trois compteurs (codes 00, 01 ou
10), il y a une 4ème possibilité : le code 11 (bits D7-D6) qui est la commande de readback. Le
8254 possède trois registres 16 bits supplémentaires appelés latchs, mémoires ou tampons. La
commande readback permet de recevoir des informations du compteur (lecture des comptes
ou lecture d'un mot d'état). Dans cette commande, on peut soit latcher simultanément le
contenu de plusieurs compteurs ce qui donne le temps de lire le contenu en temps diéré, soit
latcher l'état des compteurs (le mot d'état de 8 bits contient en particulier un ag reétant
l'état de sortie du compteur). Il faut dans ce cas tester le bit output du registre d'état. Les
adresses de ces trois latchs sont celles déjà utilisées pour les registres d'entrée mais cette fois
avec un accès en lecture. La détection de n de comptage est réalisée en scrutant le bit D7
(output ) du Status Byte : la sortie est à 1 pendant le décompte et passe à 0 en n de comptage
durant une période d'horloge (lire count0 tant que ([count0]&0x80) = 0x80 puis lire count0
tant que ([count0]&0x80) = 0).

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

Figure 16. Mode 1 MODE

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

MODE 4: SOFTWARE TRIGGERED STROBE


231244–11 231244–12 231244–13
OUT will be initially high. When the initial count ex-
pires, OUTNOTE:
will go low for one CLK pulse and then
go high again. Thetransition
A GATE countingshould
sequence is ‘‘triggered’’
not occur one clock prior to
gure 10.10: 8254
Figure : modes
19. Mode 4 3,4 et 5 Figure 20. Mode 5
by writing the initial
terminal count.
count.
MODE 5: HARDWARE TRIGGERED STROBE
GATE e 1148 enables counting; GATE e 0 disables (RETRIGGERABLE)
Figureon
counting. GATE has no effect 18.OUT.
Mode 3
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
10.5. Annexes

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.

1. convertir la tension Vout en un nombre de bits N b = 4095.V 10


out
,
2. convertir ce résultat (N b) réel en entier,
3. récupérer les 8 bits de poids faible (reste de la division entière du nombre par 256) et les placer
dans DA1L,
4. récupérer les 4 bits de poids fort (le quotient de la division entière du nombre par 256 donne
les 8 bits de poids fort) et les placer dans DA1H,
5. déclencher la conversion par une lecture (action sur U P D),

10.6 Tableau récapitulatif des adresses de la carte Impulsion

FONCTION ADRESSES LECT. ECRIT. DONNEES


DA1L = ADR1+4 W 8 LSb du CNA A
DA1H = ADR1+5 W 4 MSb du CNA A
CNA DA2L = ADR1+6 W 8 LSb du CNA B
DA2H = ADR1+7 W 4 MSb du CNA B
CONVDA = ADR1+7 R Action U P D → Conversion
ADH = ADR1+4 R 4 MSb du CAN + busy
CAN ADL = ADR1+5 R 8 LSb du CAN
ADCONV = ADR1+6 R Conversion
MUX = ADR2+1 W Multiplexage des voies + polarité
COUNT0 = ADR1 R W compteur 0
TIMER COUNT1 = ADR1+1 R W compteur 1
COUNT0 = ADR1+2 R W compteur 2
TIMCW = ADR1+3 W registre de contrôle
LOGIQUE IOIN = ADR2 R entrées logiques
IOOUT = ADR2 W sorties logiques

tableau 10.3: Résumé des registres de la carte  IMPULSION 

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

10.7 Registres du Timerfor two byte


is selected writes
How each Counter ofoperates
theis determined
same whenCounter
it is
Control Word itself specifies which Counter is being
may be interleaved; for to the Control Word Register, which is selected writes of the sam
programmed.
programmed. Each Counter must be programmed when A1, A0 e 11. Also like a Control Word, the example, if the C
ol Word, the example,
before if the
it can be used. Unused countersCounter
need not be Byis programmed
contrast, initial counts are written into the Coun- SC0, SC1 bits select one of the three Counters, but counts, the follow
programmed. ters, not the Control Word Register. The A1, A0 in-
Counters, but counts, the following sequence puts are used to selectis valid.
the Counter to be written two other bits, D5 and D4, distinguish this command
his command into. The format of the initial count is determined by from a Control Word. 1. Read le
the Control Word used.
2. Write ne
1. Read least significant byte. 3. Read m
2. Write new least significant byte.
Control Word Format 82C54 A1, A0 e 11; CS e 0; RD e 1; WR e 0 4. Write ne
3.e Read
A1, A0 e 11 CS 0 RD e 1 most
WR e 0 significant byte.
D7 D6 D5 D4 D3 D2 D1 D0 If a Counter is p
4. WriteD
new
D D
most
D
significant
D D D D
byte. counts, the follow
7 6 5 4 3 2 1 0 SC1 SC0 0 0 X X X X
SC1 SC0 RW1 RW0 M2 M1 M0 BCD must not transfe
D1 D0 IfSC ÐaSelect
Counter is programmed to read/write two-byte count, all but the first are ignored; i.e., the count and second byte
Counter: M Ð MODE: SC1, SC0 - specify counter to be latched from that same
X X counts,
SC1 SC0 the following precaution M2 M1 applies;
M0 A program which will be read is the count at the time the first THIS
count will beACT
read
must 0 not
0 transfer
Select Counter 0 control 0 between
0 0reading
Mode 0 the first
read-back command
SC1 was issued.Counter
SC0 A. Write to
and 0
second1
byte to another
Select Counter 1 0
routine
0
which
1
also reads
Mode 1

hed 1 0 Select Counter 2 X 1 0 Mode 2 0 0 0 READ-BACK wordCOre


from that Read-Back sameCommand Counter.X Otherwise, an incorrect
1 1
1 1 Mode 3 The read-back0 command 1 may also be1 used to latch B. Write
The third metho to
count will be read.
(See Read Operations)
1 0 0 Mode 4 1 0 2
RW Ð Read/Write: 1 0 1 Mode 5 status information
1
of 1selected counter(s) by setting
Read-Back Command
This command
registera
e value, programm
RW1 RW0
BCD:
STATUS bit D4 0. Status must be latched to be OUT pin C. and
NewNu co
READ-BACK
0
Operations)
COMMAND
0 Counter Latch Command (see Read
0 Binary Counter 16-bits read; status
D5,D4of- a00counter is accessed
designates by aCommand
Counter Latch read from ter(s). into CE
0
The
1 Read/Write least significant byte only.
0 third
Read/Write method
most significant byte uses
1 Binary Coded Decimal (BCD) Counter
the(4 Decades)
Read-Back command. that counter.
X - don’t care The[1]command
1 only.
Only the isc
ister and has the
This
1 1 command allows
Read/Write least significant byte first, the user to check the count NOTE: have itsapplie
null c
mand then most significant byte.
The counter
Don’t status
care bitsformat is shown
(X) should be 0 to in Figure
insure 11. Bits
compatibility
command
value, programmed
NOTE: Don’t care bits (X) should be 0 to insure
Mode, and current state of the with future Intel products. ting their corresp
counters are u
OUT pin
compatibility with and
future Intel products.Null Count flag of the selected coun- D5 through D0 contain the counter’s programmed [2] If the coun
Command ter(s). Figure 7. Control Word Format Mode exactly
Figure 9. asCounter
writtenLatching
in the last
Command ModeFormat
Control (least
A0, A1 e significa
11 C
Word. The
OUTPUT bit D7 contains the current state
selected Counter’s output latch (OL) latches the of count goes to
The command is written into the Control Word Reg- the registres
OUT pin. du This8254allows the user to monitor theis
ister and has the format shown gure 10.11:10.
in Figure Détails
The des count at the time the Counter Latch Command D 7 D6 D5
received. This count is held in the latch until it is read 1 1 COUNT
command applies to the counters selected by set- counter’s output
by the CPU (orviauntil
software, possibly
the Counter eliminating
is reprogrammed).
compatibility Figur
ting their corresponding bits D3,D2,D1 e 1.
5
some hardware
The count fromis then a unlatched
system. automatically and the D5: 0 e Latch co
OL returns to ‘‘following’’ the counting element (CE). D4: 0 e Latch sta
This allows reading the contents of the Counters D3: 1 e Select c
‘‘on the fly’’ without affecting counting in progress.
If multiple stat
D2: 1 e Select c
nd Format Multiple Counter Latch Commands may be used to are performed
D1:
D0:
1 e Select c
Reserved for
A0, A1 e 11 CS e 0 RD e 1 WR e 0 D7 moreD6than one
latch D5 Counter.
D4 D3Each D2 latched
D1 D0Coun- first are ignore
L) latches the ter’s OL holds its count until it is read. Counter Latch
D 7 D6 D5 D4 D3 D2 D1 D0 Commands NULL do not affect the programmed Mode of the Figure
status 10.
of Rt
Command is OUTPUT
the Counter RW1
in any way.RW0 M2 M1 M0 BCD
until it is read
COUNT read-back
The read-backcom
co
1 1 COUNT STATUS CNT 2 CNT 1 CNT 0 0 ple counter out
rogrammed). If a Counter is latched and then, some time later, COUNT bit D5 e
e Outagain
D7 1latched Pin isbefore
1 the count is read, the second Both This
ter(s). count an
single
cally and the D5: 0 e Latch count of selected counter(s)
lement (CE). D4: 0 e Latch status of selected counter(s) 0Counter
e Out Latch
Pin is Command is ignored. The count read
0
will be the count at the time the first Counter Latch
lent to several c
may be latch
e Null count each counter latc
he Counters D3: 1 e Select counter 2 D6 1Command was issued. isCOUNT andit Si
held until
in progress. D2: 1 e Select counter 1 0 e Count available for reading grammed). That
tionally the sam
y be used to D1: 1 e Select counter 0 D5-DWith either method, the count must be read accord-
Counter
0 to
ing
Programmed Mode (See Figure 7)
the programmed format; specifically, if the
when read, but o
D0: Reserved for future expansion; must be 0 commands
they are read. at
If m
tched Coun- Counter is programmed for two byte counts, two are issued to the
ounter Latch bytes must be read. The two bytes do not have to be ply here also.
Figure 10. Read-Back Command Format read oneFigure 11.the
right after Status
other;Byte
read or write or pro- status read-ba
med Mode of
counter(s) with
The read-back command may be used to latch multi- NULL COUNT bit D6 indicates when the last count
ple counter output latches gure
(OL)10.12: Détailsthe
by setting des registres du 8254 (suite) first are ignore
e time later, written to the counter register (CR) has been loaded
COUNT bit D5 e 0 and selecting the desired coun-
, the second into the counting element (CE). The exact time this If both count a
ter(s). This single command is functionally equiva-
e count read lent to several counter latch commands, one for happens depends on the Mode of the counter and is first read opera
ounter Latch each counter latched. Each counter’s latched count described in the Mode Definitions, but until the count status, regard
is held until it is read (or the counter is repro- is loaded into the counting element (CE), it can’t be next one or tw
grammed). That counter is automatically unlatched read from the counter. If the count is latched or read counter is prog
read accord- when read, but other counters remain latched until
fically, if the
before this time, the count value will not reflect the return latched
they are read. If multiple count read-back commands new count just written. The operation of Null Count
counts, two are issued to the same counter without reading the latched count.
ot have to be is shown in Figure 12.
write or pro-
150
7
Chapitre 11

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

1.1 Architecture en couches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3


1.2 Architecture de Von Neumann . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3 Carte mère . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.4 Schéma fonctionnel d'un microprocesseur . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.5 Unité de commande . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.6 Unité Arithmétique et Logique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.7 Unité de traitement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.8 structure du 8086 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.9 Hiérarchie mémoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.10 Exemple de disque dur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.11 Notion de cluster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.12 Hierarchie des mémoires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.13 Exemples de codages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.14 Eet capacitif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.15 Qualité de transmission en fonction de la bande passante . . . . . . . . . . . . . . . . 17
1.16 Modes de transmission : simplex et duplex . . . . . . . . . . . . . . . . . . . . . . . . 18
1.17 Liaisons série et parallèle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.18 Transmission synchrone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.19 Transmission asynchrone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.20 Schéma simplié d'un micro-ordinateur . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.21 Principe du DMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.22 Quelques rôles d'un système d'exploitation . . . . . . . . . . . . . . . . . . . . . . . . 23

2.1 Les ponts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

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

4.1 Connecteur DB25 pour SPP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61


4.2 Dialogue avec une imprimante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.3 Handshake : timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.4 Protocole Centronics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

152
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17

4.5 Signaux et DB25 en mode étendu (EPP) . . . . . . . . . . . . . . . . . . . . . . . . . 64


4.6 Lecture et écriture d'une donnée en mode EPP . . . . . . . . . . . . . . . . . . . . . 64
4.7 Lecture et écriture d'une adresse en mode EPP . . . . . . . . . . . . . . . . . . . . . 65
4.8 Signaux et DB25 en mode étendu (ECP) . . . . . . . . . . . . . . . . . . . . . . . . . 65
4.9 Commande et Data forward . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
4.10 Commande et Data reverse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

5.1 Liaisons multipoint et directe point à point (utilisant la tension) . . . . . . . . . . . . 68


5.2 Principe d'une communication série RS232 . . . . . . . . . . . . . . . . . . . . . . . . 69
5.3 Ecacité d'une communication série RS232 . . . . . . . . . . . . . . . . . . . . . . . 69
5.4 Niveau logique en communication série RS232 . . . . . . . . . . . . . . . . . . . . . . 70
5.5 Parité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
5.6 Transmission de C, 2 Stop, parité impaire, ASCII non étendu . . . . . . . . . . . . 70
5.7 Trame de communication RS232 : résumé . . . . . . . . . . . . . . . . . . . . . . . . 71
5.8 Relation entre niveau logique et tension . . . . . . . . . . . . . . . . . . . . . . . . . 71
5.9 Signaux sur les connecteurs DB25 et DB9 . . . . . . . . . . . . . . . . . . . . . . . . 72
5.10 Liaison duplex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
5.11 Connections pour liaisons simplex et duplex . . . . . . . . . . . . . . . . . . . . . . . 73
5.12 Connections DTE-DCE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5.13 diérentes phases d'une communication DTE vers DCE . . . . . . . . . . . . . . . . 74
5.14 DTE-DTE half-duplex sans contrôle . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.15 DTE-DTE full-duplex sans contrôle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.16 Câblage Null Modem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
5.17 DTE-DTE avec contrôle de ux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
5.18 DTE-DTE avec contrôle de ux complet . . . . . . . . . . . . . . . . . . . . . . . . . 77
5.19 Exemple de trame en protocole RTS CTS . . . . . . . . . . . . . . . . . . . . . . . . 78
5.20 Diérentes phases d'une communication entre 2 DTE (A et B) . . . . . . . . . . . . 78
5.21 Exemple de trame en protocole Xon - Xo . . . . . . . . . . . . . . . . . . . . . . . . 79
5.22 Algorithme Xon-Xo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
5.23 Propriétés du port COM 1 sur PC . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
5.24 Algorithmes d'émission / réception d'un caractère ASCII avec utilisation des buers 81

6.1 UART : architecture interne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82


6.2 Transmission avec modem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
6.3 IRQ pour UART sur PC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
6.4 Principe d'émission - réception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
6.5 Mécanisme d'émission sans FIFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
6.6 Exemple de séquence temporelle en émission . . . . . . . . . . . . . . . . . . . . . . . 86
6.7 Mécanisme de réception sans FIFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
6.8 Réglages des FIFO sur PC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.9 Tampon Circulaire (FIFO) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
6.10 Structure interne (registres) d'un UART 16550 . . . . . . . . . . . . . . . . . . . . . 95

7.1 Raccordement sur le bus I2C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97


7.2 Validité des données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
7.3 Conditions de départ et d'arrêt de transmission du bus I2C . . . . . . . . . . . . . . 99
7.4 Re départ (bit SR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
7.5 Validation de transmission : ACKnowledge . . . . . . . . . . . . . . . . . . . . . . . . 100
7.6 Ecriture simple (1 octet) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

153
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17
Liste des gures

7.7 Pause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101


7.8 Lecture simple (1 octet) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
7.9 Exemple de collision (ou conit) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
7.10 Sens du transfert : lecture ou écriture . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
7.11 Adressage standard (7 bits) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
7.12 Ecriture multiple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
7.13 Lecture multiple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
7.14 format combiné . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
7.15 Exemple de lecture d'une mémoire (24C02) . . . . . . . . . . . . . . . . . . . . . . . 106
7.16 Exemple d'écriture d'une page dans une mémoire (24C02) . . . . . . . . . . . . . . . 106
7.17 Adressage étendu (10 bits) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
7.18 Ecriture en mode étendu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
7.19 Lecture en mode étendu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
7.20 Ecriture puis lecture en mode étendu . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
7.21 Ecriture en mode standard puis étendu . . . . . . . . . . . . . . . . . . . . . . . . . . 107
7.22 Exemple de connection du bus I2C au port série . . . . . . . . . . . . . . . . . . . . . 108

8.1 Exemple de connecteurs USB (A et B) . . . . . . . . . . . . . . . . . . . . . . . . . . 110


8.2 Composition (signaux) du câble USB . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
8.3 Correspondance des signaux pour les connecteurs A et B . . . . . . . . . . . . . . . . 111
8.4 Structure étoile série . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
8.5 Topologie logique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
8.6 Couches du protocole USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
8.7 Frame USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
8.8 Paquet SOF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
8.9 Paquets de la trame USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
8.10 Transaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
8.11 Structure d'un paquet USB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
8.12 Codage NRZI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
8.13 Champ du paquet Token (Jeton) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
8.14 Champ du paquet SOF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
8.15 Champ du paquet DATA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
8.16 Champ du paquet Handshake . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
8.17 Transfert de commande : transaction d'installation . . . . . . . . . . . . . . . . . . . 121
8.18 Transfert de commande : transaction dde données (facultatif) . . . . . . . . . . . . . 122
8.19 Transfert de commande : transaction d'état . . . . . . . . . . . . . . . . . . . . . . . 122
8.20 Transfert en vrac . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
8.21 Transfert par interruption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
8.22 Transfert isochrone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
8.23 Hierarchie des descripteurs USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
8.24 Contrôleur et Hub USB sur votre PC . . . . . . . . . . . . . . . . . . . . . . . . . . . 127

9.1 Topologie physique de l'IEEE 1394 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129


9.2 Exemple de connecteur Firewire 6 broches . . . . . . . . . . . . . . . . . . . . . . . . 130
9.3 Topologie logique de l'IEEE 1394 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
9.4 Cycle nominal du bus IEEE 1394 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
9.5 Détails de la trame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
9.6 Contenu des paquets asynchrone et isochrone . . . . . . . . . . . . . . . . . . . . . . 132
9.7 Architecture en couche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133

154
CM_InfoIndus:version du mardi 29 novembre 2005 à 2 h 17

9.8 Transaction asynchrone) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134


9.9 Transaction isochrone) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
9.10 Intervalles pour l'arbitrage (mode isochrone) . . . . . . . . . . . . . . . . . . . . . . . 136
9.11 Split transaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
9.12 Concatenation transaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
9.13 Unied transaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137

10.1 Exemple de système d'acquisition de données . . . . . . . . . . . . . . . . . . . . . . 139


10.2 Architecture sommaire d'une carte d'acquisition . . . . . . . . . . . . . . . . . . . . . 142
10.3 Schéma de principe d'un CNA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
10.4 Le CNA MX7537 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
10.5 Schéma de principe d'un CAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
10.6 Le CAN AD574 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
10.7 Architecture du timer 8254 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
10.8 Etapes du fonctionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
10.9 8254 : modes 0,1 et 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
10.108254 : modes 3,4 et 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
10.11Détails des registres du 8254 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
10.12Détails des registres du 8254 (suite) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150

155
Liste des tableaux

1.1 Exemple : 33ème vecteur d'interruption . . . . . . . . . . . . . . . . . . . . . . . . . . 26


1.2 Quelques fonctions du BIOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.3 Quelques fonctions du DOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

2.1 Caractéristiques FSB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34


2.2 Caractéristiques bus d'adresses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.3 Récapitulatif des performances des principaux Bus . . . . . . . . . . . . . . . . . . . 42

3.1 Table des Vecteurs d'Interruptions de la famille Intel X86 . . . . . . . . . . . . . . . 48


3.2 Registre OCW1 du PIC 1 (0x21) et du PIC 2 (0xA1) . . . . . . . . . . . . . . . . . . 53

4.1 Diérentes caractéristiques des ports parallèles . . . . . . . . . . . . . . . . . . . . . 60


4.2 Signaux des ports parallèles SPP, EPP et ECP . . . . . . . . . . . . . . . . . . . . . 61
4.3 Registres du 8255 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

5.1 Protocole : format d'une trame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69


5.2 Brochage du port série . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

6.1 Tables des registres UART . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84


6.2 Nombres à charger pour les vitesses de transmission . . . . . . . . . . . . . . . . . . . 87
6.3 Priorité des interruptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
6.4 Seuils des FIFO (pour un FIFO 16 octets) . . . . . . . . . . . . . . . . . . . . . . . . 89
6.5 Nombre de bits de codage des données (payload) et de bits de STOP . . . . . . . . . 90
6.6 Diérents types de parités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

7.1 Adresses réservées pour le bus I2C . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

8.1 Valeurs des PID (USB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120


8.2 Erreur des paquets USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
8.3 Caractéristiques principales des types de transferts USB . . . . . . . . . . . . . . . . 125

10.1 registres du CNA (MX 7537) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143


10.2 registres du CAN (AD 574) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
10.3 Résumé des registres de la carte  IMPULSION  . . . . . . . . . . . . . . . . . . . . . 149

156
Bibliographie

[Bey04] Beyondlogic USB in a Nutshell . www.beyondlogic.org, 2004.


[HWe98] Hirsch E., Wendling S. Structure des ordinateurs . Armand Colin, 1998.
[Pea97] Peacock C. Using Interrupts, Interfacing the Serial and Parallel ports .
www.senet.com.au/ cpeacock, 1997.
[Tan03] Tanenbaum A. Architecture de l'ordinateur . 4ème édition. Dunod, 2003.
[TCGG02] Tichon J., Couwenbergh C., Giot R. et Garcia Acevedo S. Communication avec les
périphériques . Techniques de l'Ingénieur, traité Informatique Industrielle, 2002.

157

Vous aimerez peut-être aussi